/*************************************************************************
 *
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * Copyright 2000, 2010 Oracle and/or its affiliates.
 *
 * OpenOffice.org - a multi-platform office productivity suite
 *
 * This file is part of OpenOffice.org.
 *
 * OpenOffice.org is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License version 3
 * only, as published by the Free Software Foundation.
 *
 * OpenOffice.org is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License version 3 for more details
 * (a copy is included in the LICENSE file that accompanied this code).
 *
 * You should have received a copy of the GNU Lesser General Public License
 * version 3 along with OpenOffice.org.  If not, see
 * <http://www.openoffice.org/license.html>
 * for a copy of the LGPLv3 License.
 *
 ************************************************************************/

//i20156 - new file for xmlsecurity module

/** -- idl definition -- **/

#ifndef __com_sun_star_security_XDocumentDigitalSignatures_idl_
#define __com_sun_star_security_XDocumentDigitalSignatures_idl_

#include <com/sun/star/uno/XInterface.idl>
#include <com/sun/star/io/XInputStream.idl>
#include <com/sun/star/io/XStream.idl>
#include <com/sun/star/embed/XStorage.idl>
#include <com/sun/star/security/DocumentSignatureInformation.idl>
#include <com/sun/star/security/XCertificate.idl>

module com { module sun { module star { module security {

/** interface for signing and verifying digital signatures in office documents

    <p>
    This interface can be used to digitaly sign different content in a office document.
    It can also be used to verify digital signatures.
    </p>
 */

interface XDocumentDigitalSignatures : com::sun::star::uno::XInterface
{
    /** signs the content of the document including text and pictures.

       <p>Macros will not be signed.</p>
     */
    boolean signDocumentContent( [in] ::com::sun::star::embed::XStorage xStorage,
                                 [in] ::com::sun::star::io::XStream xSignStream);

    /** checks for digital signatures and their status.

        <p>Only document content will be checked.</p>
     */
    sequence< com::sun::star::security::DocumentSignatureInformation > verifyDocumentContentSignatures(
                                [in] ::com::sun::star::embed::XStorage xStorage,
                                [in] ::com::sun::star::io::XInputStream xSignInStream );

    /** shows the digital signatures of the document content
     */
    void showDocumentContentSignatures(
                                [in] ::com::sun::star::embed::XStorage xStorage,
                                [in] ::com::sun::star::io::XInputStream xSignInStream );

    /** allows to get the default stream name for storing of the signature of
        the document content.
     */
    string getDocumentContentSignatureDefaultStreamName();

    /** signs the content of the Scripting including macros and basic dialogs

        <p>The rest of document content will not be signed.</p>
     */
    boolean signScriptingContent( [in] ::com::sun::star::embed::XStorage xStorage,
                                  [in] ::com::sun::star::io::XStream xSignStream);

    /** checks for digital signatures and their status.

        <p>Only Scripting content will be checked.</p>
     */
    sequence< com::sun::star::security::DocumentSignatureInformation > verifyScriptingContentSignatures(
                                [in] ::com::sun::star::embed::XStorage xStorage,
                                [in] ::com::sun::star::io::XInputStream xSignInStream );

    /** shows the digital signatures of the scripting content
     */
    void showScriptingContentSignatures(
                                [in] ::com::sun::star::embed::XStorage xStorage,
                                [in] ::com::sun::star::io::XInputStream xSignInStream );

    /** allows to get the default stream name for storing of the signature of
        the scripting content.
     */
    string getScriptingContentSignatureDefaultStreamName();

    /** signs the full Package, which means everything in the storage excecpt the content of META-INF
     */
    boolean signPackage( [in] ::com::sun::star::embed::XStorage Storage,
                         [in] ::com::sun::star::io::XStream xSignStream);

    /** checks for digital signatures and their status.

        <p>Only Package content will be checked.</p>
     */
    sequence< com::sun::star::security::DocumentSignatureInformation > verifyPackageSignatures(
                        [in] ::com::sun::star::embed::XStorage Storage,
                        [in] ::com::sun::star::io::XInputStream xSignInStream );

    /** shows the digital signatures of the package
     */
    void showPackageSignatures(
                        [in] ::com::sun::star::embed::XStorage xStorage,
                        [in] ::com::sun::star::io::XInputStream xSignInStream );

    /** allows to get the default stream name for storing of the signature of
        the package.
     */
    string getPackageSignatureDefaultStreamName();


    void showCertificate( [in] com::sun::star::security::XCertificate Certificate );


       /** manages trusted sources (Authors and pathes )
     */

    void    manageTrustedSources();
    boolean isAuthorTrusted( [in] com::sun::star::security::XCertificate Author );
    boolean isLocationTrusted( [in] string Location );

    // These method should raise confirmation dialog, so it can not used from bad macros...
    void    addAuthorToTrustedSources( [in] com::sun::star::security::XCertificate Author );
    void    addLocationToTrustedSources( [in] string Location );



} ;

} ; } ; } ; } ;

#endif


