/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed * with this work for additional information regarding copyright * ownership. The ASF licenses this file to you under the Apache * License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ #pragma once #include #include #include #include #include /*-************************************************************************************************************ @short collect information about security features @ATTENTION This class is partially threadsafe. @devstatus ready to use *//*-*************************************************************************************************************/ namespace SvtSecurityOptions { enum class EOption { SecureUrls, DocWarnSaveOrSend, DocWarnSigning, DocWarnPrint, DocWarnCreatePdf, DocWarnRemovePersonalInfo, DocWarnKeepRedlineInfo, DocWarnKeepDocUserInfo, DocWarnKeepNoteAuthorDateInfo, DocWarnKeepDocVersionInfo, DocKeepPrinterSettings, DocWarnRecommendPassword, MacroSecLevel, MacroTrustedAuthors, CtrlClickHyperlink, BlockUntrustedRefererLinks, DisableActiveContent }; struct Certificate { OUString SubjectName; OUString SerialNumber; OUString RawData; bool operator==(const Certificate& other) const { return SubjectName == other.SubjectName && SerialNumber == other.SerialNumber && RawData == other.RawData; } }; /*-**************************************************************************************************** @short returns readonly state @descr It can be called to get information about the readonly state of a provided item. @param "eOption", specify, which item is queried @return if item is readonly; otherwise @onerror No error should occur! *//*-*****************************************************************************************************/ UNOTOOLS_DLLPUBLIC bool IsReadOnly( EOption eOption ); /*-**************************************************************************************************** @short interface methods to get and set value of config key "org.openoffice.Office.Common/Security/Scripting/SecureURL" @descr These value displays the list of all trustworthy URLs. zB.: file:/ => All scripts from the local file system including a LAN; private:explorer => Scripts from the Explorer; private:help => Scripts in the help system; private:newmenu => Scripts that are executed by the commands File-New and AutoPilot; private:schedule => Scripts of the scheduler; private:searchfolder => Scripts of the searchfolder; private:user => Scripts that are entered in the URL field. @param "seqURLList", new values to set it in configuration. @return The values which represent current state of internal variable. @onerror No error should occur! *//*-*****************************************************************************************************/ UNOTOOLS_DLLPUBLIC std::vector< OUString > GetSecureURLs(); UNOTOOLS_DLLPUBLIC void SetSecureURLs( std::vector< OUString >&& seqURLList ); /*-**************************************************************************************************** @short interface methods to get and set value of config key "org.openoffice.Office.Common/Security/Scripting/MacroSecurityLevel" @descr These value determines how StarOffice Basic scripts should be handled. It exist 3 different modes: 0 = never execute 1 = from list 2 = always execute @ATTENTION These methods don't check for valid or invalid values! Our configuration server can do it ... but these implementation don't get any notifications about wrong commits ...! => If you set an invalid value - nothing will be changed. The information will lost. @seealso enum EBasicSecurityMode @param "eMode" to set new mode ... Value must defined as an enum of type EBasicSecurityMode! @return An enum value, which present current mode. @onerror No error should occur! *//*-*****************************************************************************************************/ UNOTOOLS_DLLPUBLIC sal_Int32 GetMacroSecurityLevel(); UNOTOOLS_DLLPUBLIC void SetMacroSecurityLevel( sal_Int32 _nLevel ); UNOTOOLS_DLLPUBLIC bool IsMacroDisabled(); /** Check whether the given uri is either no dangerous macro-execution URI at all or else the given referer is a trusted source. */ UNOTOOLS_DLLPUBLIC bool isSecureMacroUri(OUString const & uri, OUString const & referer); /** Check whether the given referer URI is untrusted, and links originating from it should not be accessed. */ UNOTOOLS_DLLPUBLIC bool isUntrustedReferer(OUString const & referer); /** Check whether the given uri is a trusted location. */ UNOTOOLS_DLLPUBLIC bool isTrustedLocationUri(OUString const & uri); UNOTOOLS_DLLPUBLIC bool isTrustedLocationUriForUpdatingLinks(OUString const & uri); UNOTOOLS_DLLPUBLIC std::vector< Certificate > GetTrustedAuthors(); UNOTOOLS_DLLPUBLIC void SetTrustedAuthors( const std::vector< Certificate >& rAuthors ); // for bool options only! UNOTOOLS_DLLPUBLIC bool IsOptionSet ( EOption eOption ); UNOTOOLS_DLLPUBLIC void SetOption ( EOption eOption, bool bValue ); } // namespace SvtSecurityOptions // map personal info strings, e.g. authors to 1, 2, 3... for removing personal info class UNOTOOLS_DLLPUBLIC SvtSecurityMapPersonalInfo { std::unordered_map< OUString, size_t > aInfoIDs; public: size_t GetInfoID( const OUString sPersonalInfo ); }; /* vim:set shiftwidth=4 softtabstop=4 expandtab: */