summaryrefslogtreecommitdiffstats
path: root/offapi/com/sun/star/xml/crypto
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 09:06:44 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 09:06:44 +0000
commited5640d8b587fbcfed7dd7967f3de04b37a76f26 (patch)
tree7a5f7c6c9d02226d7471cb3cc8fbbf631b415303 /offapi/com/sun/star/xml/crypto
parentInitial commit. (diff)
downloadlibreoffice-upstream.tar.xz
libreoffice-upstream.zip
Adding upstream version 4:7.4.7.upstream/4%7.4.7upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'offapi/com/sun/star/xml/crypto')
-rw-r--r--offapi/com/sun/star/xml/crypto/CipherID.idl48
-rw-r--r--offapi/com/sun/star/xml/crypto/DigestID.idl71
-rw-r--r--offapi/com/sun/star/xml/crypto/GPGSEInitializer.idl39
-rw-r--r--offapi/com/sun/star/xml/crypto/NSSInitializer.idl45
-rw-r--r--offapi/com/sun/star/xml/crypto/NSSProfile.idl54
-rw-r--r--offapi/com/sun/star/xml/crypto/SEInitializer.idl37
-rw-r--r--offapi/com/sun/star/xml/crypto/SecurityEnvironment.idl36
-rw-r--r--offapi/com/sun/star/xml/crypto/SecurityOperationStatus.idl138
-rw-r--r--offapi/com/sun/star/xml/crypto/XCertificateCreator.idl55
-rw-r--r--offapi/com/sun/star/xml/crypto/XCipherContext.idl69
-rw-r--r--offapi/com/sun/star/xml/crypto/XCipherContextSupplier.idl70
-rw-r--r--offapi/com/sun/star/xml/crypto/XDigestContext.idl57
-rw-r--r--offapi/com/sun/star/xml/crypto/XDigestContextSupplier.idl61
-rw-r--r--offapi/com/sun/star/xml/crypto/XMLEncryptionException.idl35
-rw-r--r--offapi/com/sun/star/xml/crypto/XMLSecurityContext.idl36
-rw-r--r--offapi/com/sun/star/xml/crypto/XMLSignature.idl42
-rw-r--r--offapi/com/sun/star/xml/crypto/XMLSignatureException.idl35
-rw-r--r--offapi/com/sun/star/xml/crypto/XNSSInitializer.idl69
-rw-r--r--offapi/com/sun/star/xml/crypto/XSEInitializer.idl58
-rw-r--r--offapi/com/sun/star/xml/crypto/XSecurityEnvironment.idl115
-rw-r--r--offapi/com/sun/star/xml/crypto/XUriBinding.idl61
-rw-r--r--offapi/com/sun/star/xml/crypto/XXMLEncryption.idl73
-rw-r--r--offapi/com/sun/star/xml/crypto/XXMLEncryptionTemplate.idl83
-rw-r--r--offapi/com/sun/star/xml/crypto/XXMLSecurityContext.idl75
-rw-r--r--offapi/com/sun/star/xml/crypto/XXMLSecurityTemplate.idl76
-rw-r--r--offapi/com/sun/star/xml/crypto/XXMLSignature.idl77
-rw-r--r--offapi/com/sun/star/xml/crypto/XXMLSignatureTemplate.idl70
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/ConstOfSecurityId.idl37
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/ElementMarkPriority.idl53
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/ElementMarkType.idl41
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/ElementStackItem.idl52
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/XBlockerMonitor.idl48
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/XDecryptionResultBroadcaster.idl63
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/XDecryptionResultListener.idl52
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/XElementStackKeeper.idl60
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/XEncryptionResultBroadcaster.idl63
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/XEncryptionResultListener.idl55
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/XKeyCollector.idl49
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/XMissionTaker.idl48
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/XReferenceCollector.idl58
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/XReferenceResolvedBroadcaster.idl70
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/XReferenceResolvedListener.idl49
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/XSAXEventKeeper.idl134
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/XSAXEventKeeperStatusChangeBroadcaster.idl64
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/XSAXEventKeeperStatusChangeListener.idl66
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/XSecuritySAXEventKeeper.idl68
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/XSignatureCreationResultBroadcaster.idl64
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/XSignatureCreationResultListener.idl52
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/XSignatureVerifyResultBroadcaster.idl64
-rw-r--r--offapi/com/sun/star/xml/crypto/sax/XSignatureVerifyResultListener.idl52
50 files changed, 3047 insertions, 0 deletions
diff --git a/offapi/com/sun/star/xml/crypto/CipherID.idl b/offapi/com/sun/star/xml/crypto/CipherID.idl
new file mode 100644
index 000000000..9e34c09f6
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/CipherID.idl
@@ -0,0 +1,48 @@
+/* -*- 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 .
+ */
+#ifndef __com_sun_star_xml_crypto_CipherID_idl__
+#define __com_sun_star_xml_crypto_CipherID_idl__
+
+
+
+module com { module sun { module star { module xml { module crypto {
+
+/** The constant set contains identifiers of supported cipher-creation
+ algorithms.
+
+ @see XCipherContextSupplier
+ @since OOo 3.4
+*/
+constants CipherID
+{
+ /** identifier of AES algorithm in CBC mode with W3C padding
+ */
+ const long AES_CBC_W3C_PADDING = 1;
+
+ /** identifier of the Blowfish algorithm in 8-bit CFB mode
+ */
+ const long BLOWFISH_CFB_8 = 2;
+};
+
+
+}; }; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/DigestID.idl b/offapi/com/sun/star/xml/crypto/DigestID.idl
new file mode 100644
index 000000000..970eb1147
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/DigestID.idl
@@ -0,0 +1,71 @@
+/* -*- 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 .
+ */
+#ifndef __com_sun_star_xml_crypto_DigestID_idl__
+#define __com_sun_star_xml_crypto_DigestID_idl__
+
+
+
+module com { module sun { module star { module xml { module crypto {
+
+/** The constant set contains identifiers of supported digest-creation
+ algorithms.
+
+ @see XDigestContextSupplier
+ @since OOo 3.4
+*/
+constants DigestID
+{
+ /** identifier of SHA-1 algorithm
+ */
+ const long SHA1 = 1;
+
+ /** identifier of SHA-256 algorithm
+ */
+ const long SHA256 = 2;
+
+ /** identifier of SHA-1 algorithm that is applied to the first kilobyte
+ of data.
+ */
+ const long SHA1_1K = 3;
+
+ /** identifier of SHA-256 algorithm that is applied to the first kilobyte
+ of data.
+ */
+ const long SHA256_1K = 4;
+
+ /** identifier of SHA-512 algorithm
+
+ @since LibreOffice 6.0
+ */
+ const long SHA512 = 5;
+
+ /** identifier of SHA-512 algorithm that is applied to the first
+ kilobyte of data.
+
+ @since LibreOffice 6.0
+ */
+ const long SHA512_1K = 6;
+};
+
+
+}; }; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/GPGSEInitializer.idl b/offapi/com/sun/star/xml/crypto/GPGSEInitializer.idl
new file mode 100644
index 000000000..d041eb9fa
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/GPGSEInitializer.idl
@@ -0,0 +1,39 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_GPGSEInitializer_idl_
+#define __com_sun_star_xml_crypto_GPGSEInitializer_idl_
+
+#include <com/sun/star/xml/crypto/XSEInitializer.idl>
+
+module com { module sun { module star { module xml { module crypto {
+
+/**
+ * Service of GPGSEInitializer
+ *
+ * @since LibreOffice 6.0
+ */
+service GPGSEInitializer : XSEInitializer;
+
+} ; } ; } ; } ; } ;
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/NSSInitializer.idl b/offapi/com/sun/star/xml/crypto/NSSInitializer.idl
new file mode 100644
index 000000000..7eb857596
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/NSSInitializer.idl
@@ -0,0 +1,45 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_NSSInitializer_idl_
+#define __com_sun_star_xml_crypto_NSSInitializer_idl_
+
+#include <com/sun/star/xml/crypto/XNSSInitializer.idl>
+
+module com { module sun { module star { module xml { module crypto {
+
+/**
+ This service has a particular lifecycle. If you create an instance,
+ the NSS backend is not initialized, until some of the crypto functions
+ are called. As a result you can effectively change the user setting to
+ the NSS path until NSS is really used.
+
+ After the first usage you have to restart LibreOffice to activate a new
+ NSS path.
+
+ @since LibreOffice 4.0
+ */
+service NSSInitializer : XNSSInitializer;
+
+} ; } ; } ; } ; } ;
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/NSSProfile.idl b/offapi/com/sun/star/xml/crypto/NSSProfile.idl
new file mode 100644
index 000000000..1ce68bfa8
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/NSSProfile.idl
@@ -0,0 +1,54 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_NSSProfile_idl_
+#define __com_sun_star_xml_crypto_NSSProfile_idl_
+
+#include <com/sun/star/mozilla/MozillaProductType.idl>
+
+module com { module sun { module star { module xml { module crypto {
+
+/**
+ @since LibreOffice 7.1
+ */
+struct NSSProfile {
+ /** the name of the NSS profile
+
+ Normally the name will reflect the name of the Mozilla profile. But the
+ profile list also contains the following special entries: MANUAL and
+ MOZILLA_CERTIFICATE_FOLDER.
+ These will have a product type of MozillaProductType::Default and might
+ have an empty path, if that value is not available.
+ */
+ string Name;
+
+ /** the path to the NSS databases
+ */
+ string Path;
+
+ /** the type of the NSS profile
+ */
+ ::com::sun::star::mozilla::MozillaProductType Type;
+};
+
+} ; } ; } ; } ; } ;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/SEInitializer.idl b/offapi/com/sun/star/xml/crypto/SEInitializer.idl
new file mode 100644
index 000000000..cd4c5cd26
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/SEInitializer.idl
@@ -0,0 +1,37 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_SEInitializer_idl_
+#define __com_sun_star_xml_crypto_SEInitializer_idl_
+
+#include <com/sun/star/xml/crypto/XSEInitializer.idl>
+
+module com { module sun { module star { module xml { module crypto {
+
+/**
+ * Service of SEInitializer
+ */
+service SEInitializer : XSEInitializer;
+
+} ; } ; } ; } ; } ;
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/SecurityEnvironment.idl b/offapi/com/sun/star/xml/crypto/SecurityEnvironment.idl
new file mode 100644
index 000000000..1c18e4b0a
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/SecurityEnvironment.idl
@@ -0,0 +1,36 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_SecurityEnvironment_idl_
+#define __com_sun_star_xml_crypto_SecurityEnvironment_idl_
+
+#include <com/sun/star/xml/crypto/XSecurityEnvironment.idl>
+
+module com { module sun { module star { module xml { module crypto {
+
+/**
+ * Service of XSecurityEnvironment
+ */
+service SecurityEnvironment : XSecurityEnvironment;
+
+} ; } ; } ; } ; } ;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/SecurityOperationStatus.idl b/offapi/com/sun/star/xml/crypto/SecurityOperationStatus.idl
new file mode 100644
index 000000000..764886afc
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/SecurityOperationStatus.idl
@@ -0,0 +1,138 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_securityoperationstatus_idl_
+#define __com_sun_star_xml_crypto_securityoperationstatus_idl_
+
+module com { module sun { module star { module xml { module crypto {
+
+/**
+ * Defines results for security operation.
+ */
+enum SecurityOperationStatus
+{
+ UNKNOWN,
+ OPERATION_SUCCEEDED,
+ RUNTIMEERROR_FAILED,
+/**
+ * The following constants are derived from XMLSec error definitions, as following:
+ *
+ * XMLSEC_ERRORS_R_XMLSEC_FAILED
+ * XMLSEC_ERRORS_R_MALLOC_FAILED
+ * XMLSEC_ERRORS_R_STRDUP_FAILED
+ * XMLSEC_ERRORS_R_CRYPTO_FAILED
+ * XMLSEC_ERRORS_R_XML_FAILED
+ * XMLSEC_ERRORS_R_XSLT_FAILED
+ * XMLSEC_ERRORS_R_IO_FAILED
+ * XMLSEC_ERRORS_R_DISABLED
+ * XMLSEC_ERRORS_R_NOT_IMPLEMENTED
+ * XMLSEC_ERRORS_R_INVALID_SIZE
+ * XMLSEC_ERRORS_R_INVALID_DATA
+ * XMLSEC_ERRORS_R_INVALID_RESULT
+ * XMLSEC_ERRORS_R_INVALID_TYPE
+ * XMLSEC_ERRORS_R_INVALID_OPERATION
+ * XMLSEC_ERRORS_R_INVALID_STATUS
+ * XMLSEC_ERRORS_R_INVALID_FORMAT
+ * XMLSEC_ERRORS_R_DATA_NOT_MATCH
+ * XMLSEC_ERRORS_R_INVALID_NODE
+ * XMLSEC_ERRORS_R_INVALID_NODE_CONTENT
+ * XMLSEC_ERRORS_R_INVALID_NODE_ATTRIBUTE
+ * XMLSEC_ERRORS_R_MISSING_NODE_ATTRIBUTE
+ * XMLSEC_ERRORS_R_NODE_ALREADY_PRESENT
+ * XMLSEC_ERRORS_R_UNEXPECTED_NODE
+ * XMLSEC_ERRORS_R_NODE_NOT_FOUND
+ * XMLSEC_ERRORS_R_INVALID_TRANSFORM
+ * XMLSEC_ERRORS_R_INVALID_TRANSFORM_KEY
+ * XMLSEC_ERRORS_R_INVALID_URI_TYPE
+ * XMLSEC_ERRORS_R_TRANSFORM_SAME_DOCUMENT_REQUIRED
+ * XMLSEC_ERRORS_R_TRANSFORM_DISABLED
+ * XMLSEC_ERRORS_R_INVALID_KEY_DATA
+ * XMLSEC_ERRORS_R_KEY_DATA_NOT_FOUND
+ * XMLSEC_ERRORS_R_KEY_DATA_ALREADY_EXIST
+ * XMLSEC_ERRORS_R_INVALID_KEY_DATA_SIZE
+ * XMLSEC_ERRORS_R_KEY_NOT_FOUND
+ * XMLSEC_ERRORS_R_KEYDATA_DISABLED
+ * XMLSEC_ERRORS_R_MAX_RETRIEVALS_LEVEL
+ * XMLSEC_ERRORS_R_MAX_RETRIEVAL_TYPE_MISMATCH
+ * XMLSEC_ERRORS_R_MAX_ENCKEY_LEVEL
+ * XMLSEC_ERRORS_R_CERT_VERIFY_FAILED
+ * XMLSEC_ERRORS_R_CERT_NOT_FOUND
+ * XMLSEC_ERRORS_R_CERT_REVOKED
+ * XMLSEC_ERRORS_R_CERT_ISSUER_FAILED
+ * XMLSEC_ERRORS_R_CERT_NOT_YET_VALID
+ * XMLSEC_ERRORS_R_CERT_HAS_EXPIRED
+ * XMLSEC_ERRORS_R_DSIG_NO_REFERENCES
+ * XMLSEC_ERRORS_R_DSIG_INVALID_REFERENCE
+ * XMLSEC_ERRORS_R_ASSERTION
+ * XMLSEC_ERRORS_MAX_NUMBER
+ */
+ ENGINE_FAILED,
+ MALLOC_FAILED,
+ STRDUP_FAILED,
+ CRYPTO_FAILED,
+ XML_FAILED,
+ XSLT_FAILED,
+ IO_FAILED,
+ DISABLED,
+ NOT_IMPLEMENTED,
+ INVALID_SIZE,
+ INVALID_DATA,
+ INVALID_RESULT,
+ INVALID_TYPE,
+ INVALID_OPERATION,
+ INVALID_STATUS,
+ INVALID_FORMAT,
+ DATA_NOT_MATCH,
+ INVALID_NODE,
+ INVALID_NODE_CONTENT,
+ INVALID_NODE_ATTRIBUTE,
+ MISSING_NODE_ATTRIBUTE,
+ NODE_ALREADY_PRESENT,
+ UNEXPECTED_NODE,
+ NODE_NOT_FOUND,
+ INVALID_TRANSFORM,
+ INVALID_TRANSFORM_KEY,
+ INVALID_URI_TYPE,
+ TRANSFORM_SAME_DOCUMENT_REQUIRED,
+ TRANSFORM_DISABLED,
+ INVALID_KEY_DATA,
+ KEY_DATA_NOT_FOUND,
+ KEY_DATA_ALREADY_EXIST,
+ INVALID_KEY_DATA_SIZE,
+ KEY_NOT_FOUND,
+ KEYDATA_DISABLED,
+ MAX_RETRIEVALS_LEVEL,
+ MAX_RETRIEVAL_TYPE_MISMATCH,
+ MAX_ENCKEY_LEVEL,
+ CERT_VERIFY_FAILED,
+ CERT_NOT_FOUND,
+ CERT_REVOKED,
+ CERT_ISSUER_FAILED,
+ CERT_NOT_YET_VALID,
+ CERT_HAS_EXPIRED,
+ DSIG_NO_REFERENCES,
+ DSIG_INVALID_REFERENCE,
+ ASSERTION
+};
+
+} ; } ; } ; } ; } ;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/XCertificateCreator.idl b/offapi/com/sun/star/xml/crypto/XCertificateCreator.idl
new file mode 100644
index 000000000..3137aa004
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/XCertificateCreator.idl
@@ -0,0 +1,55 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_xsecurityenvironment_idl_
+#define __com_sun_star_xml_crypto_xsecurityenvironment_idl_
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/uno/Exception.idl>
+#include <com/sun/star/security/XCertificate.idl>
+
+module com { module sun { module star { module xml { module crypto {
+
+/**
+ * Interface for creating and adding certificates
+ *
+ * @since LibreOffice 6.2
+ */
+interface XCertificateCreator : com::sun::star::uno::XInterface
+{
+ /**
+ * Adds a certificate to the certificate database with the trust provided by the trust string.
+ */
+ com::sun::star::security::XCertificate addDERCertificateToTheDatabase(
+ [in] sequence<byte> aDerCertificate,
+ [in] string aTrustString);
+
+ /**
+ * Create certificate from raw DER encoded certificate and associate the private key with the certificate
+ */
+ com::sun::star::security::XCertificate createDERCertificateWithPrivateKey(
+ [in] sequence<byte> aDerCertificate,
+ [in] sequence<byte> aPrivateKey) raises (com::sun::star::uno::SecurityException);
+};
+
+} ; } ; } ; } ; } ;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/XCipherContext.idl b/offapi/com/sun/star/xml/crypto/XCipherContext.idl
new file mode 100644
index 000000000..bae91c7b1
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/XCipherContext.idl
@@ -0,0 +1,69 @@
+/* -*- 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 .
+ */
+#ifndef __com_sun_star_xml_crypto_xciphercontext_idl_
+#define __com_sun_star_xml_crypto_xciphercontext_idl_
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/lang/IllegalArgumentException.idl>
+#include <com/sun/star/lang/DisposedException.idl>
+
+
+ module com { module sun { module star { module xml { module crypto {
+
+/** This interface allows to encrypt/decrypt data using the cipher context.
+ <p>
+ The algorithm as well as encryption data are specified on object creation.
+ </p>
+
+ @see XCipherContextSupplier
+ @since OOo 3.4
+ */
+interface XCipherContext : com::sun::star::uno::XInterface
+{
+ /** encrypts/decrypts the data using the cipher.
+ <p>
+ Please have in mind, the cipher object state might depend from the
+ already encrypted/decrypted data ( it depends from the used
+ algorithm ).
+ </p>
+
+ <p>
+ Whether the object does encryption or decryption is specified by
+ creation of the object.
+ </p>
+
+ @param aData
+ data that should be encrypted/decrypted
+ */
+ sequence<byte> convertWithCipherContext( [in] sequence< byte > aData )
+ raises( ::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::lang::DisposedException );
+
+ /** finalizes cipher and disposes context.
+ */
+ sequence<byte> finalizeCipherContextAndDispose()
+ raises( ::com::sun::star::lang::DisposedException );
+};
+
+
+}; }; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/XCipherContextSupplier.idl b/offapi/com/sun/star/xml/crypto/XCipherContextSupplier.idl
new file mode 100644
index 000000000..f447e5889
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/XCipherContextSupplier.idl
@@ -0,0 +1,70 @@
+/* -*- 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 .
+ */
+#ifndef __com_sun_star_xml_crypto_xciphercontextsupplier_idl_
+#define __com_sun_star_xml_crypto_xciphercontextsupplier_idl_
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/beans/NamedValue.idl>
+#include <com/sun/star/xml/crypto/XCipherContext.idl>
+#include <com/sun/star/lang/IllegalArgumentException.idl>
+
+
+ module com { module sun { module star { module xml { module crypto {
+
+/** This interface allows to get an object that allows to encrypt/decrypt data
+ using the specified algorithm.
+
+ @since OOo 3.4
+ */
+interface XCipherContextSupplier : com::sun::star::uno::XInterface
+{
+ /** returns an object that allows to encrypt/decrypt data.
+
+ @param nCipherID
+ the internal ID specifying the algorithm,
+ should take value from CipherID
+
+ @param aKey
+ the key that should be used for the encryption
+
+ @param aInitializationVector
+ the initialization vector that should be used for the encryption
+
+ @param bEncryption
+ whether an encryption or decryption cipher should be created
+ `TRUE` - Encryption
+ `FALSE` - Decryption
+
+ @param aParams
+ optional parameters that could be used to initialize the cipher,
+
+ @throws ::com::sun::star::lang::IllegalArgumentException
+ one of provided arguments is illegal
+ */
+
+ XCipherContext getCipherContext( [in] long nCipherID, [in] sequence< byte > aKey, [in] sequence< byte > aInitializationVector, [in] boolean bEncryption, [in] sequence< ::com::sun::star::beans::NamedValue > aParams )
+ raises( ::com::sun::star::lang::IllegalArgumentException );
+};
+
+
+}; }; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/XDigestContext.idl b/offapi/com/sun/star/xml/crypto/XDigestContext.idl
new file mode 100644
index 000000000..06553a7da
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/XDigestContext.idl
@@ -0,0 +1,57 @@
+/* -*- 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 .
+ */
+#ifndef __com_sun_star_xml_crypto_xdigestcontext_idl_
+#define __com_sun_star_xml_crypto_xdigestcontext_idl_
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/lang/DisposedException.idl>
+
+
+ module com { module sun { module star { module xml { module crypto {
+
+/** This interface allows to generate the digest.
+ <p>
+ The algorithm to generate the digest is specified on object creation.
+ </p>
+
+ @see XDigestContextSupplier
+ @since OOo 3.4
+ */
+interface XDigestContext : com::sun::star::uno::XInterface
+{
+ /** update the digest with the given data.
+
+ @param aData
+ data that should be used to update the digest
+ */
+ void updateDigest( [in] sequence< byte > aData )
+ raises( ::com::sun::star::lang::DisposedException );
+
+ /** finalizes digest and disposes context.
+ */
+ sequence<byte> finalizeDigestAndDispose()
+ raises( ::com::sun::star::lang::DisposedException );
+};
+
+
+}; }; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/XDigestContextSupplier.idl b/offapi/com/sun/star/xml/crypto/XDigestContextSupplier.idl
new file mode 100644
index 000000000..ead3e8ea9
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/XDigestContextSupplier.idl
@@ -0,0 +1,61 @@
+/* -*- 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 .
+ */
+#ifndef __com_sun_star_xml_crypto_xdigestcontextsupplier_idl_
+#define __com_sun_star_xml_crypto_xdigestcontextsupplier_idl_
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/beans/NamedValue.idl>
+#include <com/sun/star/xml/crypto/XDigestContext.idl>
+#include <com/sun/star/lang/IllegalArgumentException.idl>
+
+
+ module com { module sun { module star { module xml { module crypto {
+
+/** This interface allows to get an object to generate a digest of a specified
+ format.
+
+ @since OOo 3.4
+ */
+interface XDigestContextSupplier : com::sun::star::uno::XInterface
+{
+ /** returns an object that allows to generate the specified digest.
+
+ @param nDigestID
+ the internal ID specifying the algorithm,
+ should take value from DigestID
+
+ @param aParams
+ optional parameters that could be used to initialize the digest,
+ for example, it could contain a key and etc.
+
+ @throws ::com::sun::star::lang::IllegalArgumentException
+ one of provided arguments is illegal
+ */
+ XDigestContext getDigestContext(
+ [in] long nDigestID,
+ [in] sequence< ::com::sun::star::beans::NamedValue > aParams )
+ raises( ::com::sun::star::lang::IllegalArgumentException );
+};
+
+
+}; }; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/XMLEncryptionException.idl b/offapi/com/sun/star/xml/crypto/XMLEncryptionException.idl
new file mode 100644
index 000000000..eed651c01
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/XMLEncryptionException.idl
@@ -0,0 +1,35 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_XMLEncryptionException_idl__
+#define __com_sun_star_xml_crypto_XMLEncryptionException_idl__
+
+#include <com/sun/star/security/EncryptionException.idl>
+
+module com { module sun { module star { module xml { module crypto {
+
+exception XMLEncryptionException : com::sun::star::security::EncryptionException
+{
+};
+
+}; }; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/XMLSecurityContext.idl b/offapi/com/sun/star/xml/crypto/XMLSecurityContext.idl
new file mode 100644
index 000000000..46fce6231
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/XMLSecurityContext.idl
@@ -0,0 +1,36 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_XMLSecurityContext_idl_
+#define __com_sun_star_xml_crypto_XMLSecurityContext_idl_
+
+#include <com/sun/star/xml/crypto/XXMLSecurityContext.idl>
+
+module com { module sun { module star { module xml { module crypto {
+
+/**
+ * Service of XMLSecurityContext
+ */
+service XMLSecurityContext : XXMLSecurityContext;
+
+} ; } ; } ; } ; } ;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/XMLSignature.idl b/offapi/com/sun/star/xml/crypto/XMLSignature.idl
new file mode 100644
index 000000000..2596bd351
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/XMLSignature.idl
@@ -0,0 +1,42 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_xmlsignature_idl_
+#define __com_sun_star_xml_crypto_xmlsignature_idl_
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/uno/Exception.idl>
+#include <com/sun/star/xml/crypto/XXMLSignature.idl>
+#include <com/sun/star/lang/XInitialization.idl>
+
+module com { module sun { module star { module xml { module crypto {
+
+/**
+ * Service of XMLSignature
+ */
+service XMLSignature {
+ interface com::sun::star::xml::crypto::XXMLSignature ;
+ interface com::sun::star::lang::XInitialization ;
+} ;
+
+} ; } ; } ; } ; } ;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/XMLSignatureException.idl b/offapi/com/sun/star/xml/crypto/XMLSignatureException.idl
new file mode 100644
index 000000000..70949f68e
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/XMLSignatureException.idl
@@ -0,0 +1,35 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_XMLSignatureException_idl__
+#define __com_sun_star_xml_crypto_XMLSignatureException_idl__
+
+#include <com/sun/star/security/SignatureException.idl>
+
+module com { module sun { module star { module xml { module crypto {
+
+exception XMLSignatureException : com::sun::star::security::SignatureException
+{
+};
+
+}; }; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/XNSSInitializer.idl b/offapi/com/sun/star/xml/crypto/XNSSInitializer.idl
new file mode 100644
index 000000000..a6ff1ab7b
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/XNSSInitializer.idl
@@ -0,0 +1,69 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_XNSSInitializer_idl_
+#define __com_sun_star_xml_crypto_XNSSInitializer_idl_
+
+#include <com/sun/star/xml/crypto/XCipherContextSupplier.idl>
+#include <com/sun/star/xml/crypto/XDigestContextSupplier.idl>
+#include <com/sun/star/xml/crypto/NSSProfile.idl>
+#include <com/sun/star/xml/lang/XInitialization.idl>
+
+module com { module sun { module star { module xml { module crypto {
+
+/**
+ @since LibreOffice 4.0
+ */
+interface XNSSInitializer {
+ interface ::com::sun::star::xml::crypto::XDigestContextSupplier;
+ interface ::com::sun::star::xml::crypto::XCipherContextSupplier;
+
+ /** the current path to the NSS databases
+
+ This attribute returns the current setting, based on the user selection
+ or automatic detection. This value can change until someone uses NSS
+ crypto functions, because just then LibreOffice initializes the NSS
+ library and the value stays fixed until LibreOffice is restarted!
+
+ @since LibreOffice 7.1
+ */
+ [attribute, readonly] string NSSPath;
+
+ /** the state of the NSS initialization
+
+ This attribute returns true, if the NSS library is initialized.
+
+ @see NSSPath
+ @since LibreOffice 7.1
+ */
+ [attribute, readonly] boolean IsNSSinitialized;
+
+ /** get the current profile list
+
+ @since LibreOffice 7.1
+ */
+ sequence<NSSProfile> getNSSProfiles();
+};
+
+} ; } ; } ; } ; } ;
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/XSEInitializer.idl b/offapi/com/sun/star/xml/crypto/XSEInitializer.idl
new file mode 100644
index 000000000..fc8ce622b
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/XSEInitializer.idl
@@ -0,0 +1,58 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_xseinitializer_idl_
+#define __com_sun_star_xml_crypto_xseinitializer_idl_
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/uno/Exception.idl>
+
+module com { module sun { module star { module xml { module crypto {
+
+interface XXMLSecurityContext;
+
+/**
+ * Interface to manipulate Security Environment
+ */
+interface XSEInitializer : com::sun::star::uno::XInterface
+{
+ /**
+ Creates a security context.
+
+ @param aString
+ reserved for internal use.
+
+ @return the security context created
+ */
+ ::com::sun::star::xml::crypto::XXMLSecurityContext createSecurityContext( [in] string aString );
+
+ /**
+ * Frees a security context.
+ *
+ * @param securityContext the security context to be freed
+ */
+ void freeSecurityContext([in] com::sun::star::xml::crypto::XXMLSecurityContext securityContext);
+};
+
+} ; } ; } ; } ; } ;
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/XSecurityEnvironment.idl b/offapi/com/sun/star/xml/crypto/XSecurityEnvironment.idl
new file mode 100644
index 000000000..f3d1ddbf6
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/XSecurityEnvironment.idl
@@ -0,0 +1,115 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_xsecurityenvironment_idl_
+#define __com_sun_star_xml_crypto_xsecurityenvironment_idl_
+
+#include <com/sun/star/uno/SecurityException.idl>
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/uno/Exception.idl>
+#include <com/sun/star/security/XCertificate.idl>
+#include <com/sun/star/security/CertificateCharacters.idl>
+#include <com/sun/star/security/CertificateValidity.idl>
+
+module com { module sun { module star { module xml { module crypto {
+
+/**
+ * Interface of Security Environment
+ */
+interface XSecurityEnvironment : com::sun::star::uno::XInterface
+{
+ /**
+ * Get personal certificates from the environment
+ */
+ sequence< com::sun::star::security::XCertificate > getPersonalCertificates() raises( com::sun::star::uno::SecurityException ) ;
+
+ /**
+ * Get certificate from the environment by issuer name and serial number
+ */
+ com::sun::star::security::XCertificate getCertificate( [in] string issuerName, [in] sequence< byte > serialNumber ) raises( com::sun::star::uno::SecurityException ) ;
+
+ /**
+ * Build certificate path from a certain certificate
+ */
+ sequence< com::sun::star::security::XCertificate > buildCertificatePath( [in] com::sun::star::security::XCertificate beginCert ) raises( com::sun::star::uno::SecurityException ) ;
+
+ /**
+ * Create certificate interface from raw DER encoded certificate
+ */
+ com::sun::star::security::XCertificate createCertificateFromRaw( [in] sequence< byte > rawCertificate ) raises( com::sun::star::uno::SecurityException ) ;
+
+ /**
+ * Create certificate interface from a Base64 encoded certificate.
+ */
+ com::sun::star::security::XCertificate createCertificateFromAscii( [in] string asciiCertificate ) raises( com::sun::star::uno::SecurityException ) ;
+
+ /**
+ Verify a certificate.
+
+ The method provides a way to verify a certificate.
+ @param xEECertificate
+ The certificate which is to be validated.
+
+ @param intermediateCertificates
+ Additional certificates which can be used by the method in constructing
+ the certificate chain. The root certificate may also be contained. However,
+ the implementation must check if the root certificate is indeed trusted by
+ the user.
+ All entries of the sequence must be non-null references.
+
+ @return
+ The validation status will returned as a bit-wise long, please refer to
+ CertificateValidity definition.
+ */
+ long verifyCertificate( [in] com::sun::star::security::XCertificate xEECertificate,
+ [in] sequence< com::sun::star::security::XCertificate > intermediateCertificates)
+ raises( com::sun::star::uno::SecurityException ) ;
+
+ /**
+ * Get a certificate characters.
+ *
+ * The method provides a way to get certificate characters like:
+ * 1. Whether or not the certificate have a private key in the user profile.
+ * 2. Whether or not the certificate is a trusted certificate.
+ * 3. Whether or not the certificate is a self-signed certificate.
+ *
+ * The certificate characters is defined as bit-wise long, please refer to
+ * CertificateCharacters definition.
+ */
+ long getCertificateCharacters( [in] com::sun::star::security::XCertificate xCertificate ) raises( com::sun::star::uno::SecurityException ) ;
+
+ /**
+ * Get the Environment detail information
+ */
+ string getSecurityEnvironmentInformation ( );
+
+ /**
+ * List all certificates, private (as returned by getPersonalCertificates) as well as those of other people/orgas
+ *
+ * @since LibreOffice 6.0
+ */
+ sequence< com::sun::star::security::XCertificate > getAllCertificates() raises( com::sun::star::uno::SecurityException ) ;
+
+} ;
+
+} ; } ; } ; } ; } ;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/XUriBinding.idl b/offapi/com/sun/star/xml/crypto/XUriBinding.idl
new file mode 100644
index 000000000..0bffbca94
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/XUriBinding.idl
@@ -0,0 +1,61 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_xuribinding_idl_
+#define __com_sun_star_xml_crypto_xuribinding_idl_
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/uno/Exception.idl>
+#include <com/sun/star/io/XInputStream.idl>
+
+module com { module sun { module star { module xml { module crypto {
+
+/**
+ * Interface of Uri Binding.
+ * <p>
+ * This interface is used to dynamically bind a uri with a
+ * XInputStream interface.
+ */
+interface XUriBinding : com::sun::star::uno::XInterface
+{
+ /**
+ * Sets the XInputStream interface for a uri.
+ *
+ * @param uri the uri to bind
+ * @param InputStream the XInputStream to be bound
+ */
+ void setUriBinding([in] string uri,
+ [in] com::sun::star::io::XInputStream InputStream)
+ raises( com::sun::star::uno::Exception );
+
+ /**
+ * Gets the XInputStream interface for a uri.
+ *
+ * @param uri the uri whose binding is to get
+ * @return the XInputStream bound with the uri
+ */
+ com::sun::star::io::XInputStream getUriBinding([in] string uri)
+ raises( com::sun::star::uno::Exception );
+};
+
+} ; } ; } ; } ; } ;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/XXMLEncryption.idl b/offapi/com/sun/star/xml/crypto/XXMLEncryption.idl
new file mode 100644
index 000000000..20fd5e74d
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/XXMLEncryption.idl
@@ -0,0 +1,73 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_xxmlencryption_idl_
+#define __com_sun_star_xml_crypto_xxmlencryption_idl_
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/uno/Exception.idl>
+#include <com/sun/star/uno/SecurityException.idl>
+#include <com/sun/star/xml/crypto/XXMLEncryptionTemplate.idl>
+#include <com/sun/star/xml/wrapper/XXMLElementWrapper.idl>
+#include <com/sun/star/xml/crypto/XXMLSecurityContext.idl>
+#include <com/sun/star/xml/crypto/XMLEncryptionException.idl>
+
+module com { module sun { module star { module xml { module crypto {
+
+/**
+ * Interface of XML encryption
+ *
+ * <p>This interface represents a XML encryptor or decryptor.</p>
+ *
+ * <p>The encryptor or decryptor concrete a key by retrieve security context
+ * and encryption template.</p>
+ *
+ * <p>In some cases, the encryptor or decryptor can determine and locate the
+ * EncryptedKey from the encryption template by dereference the RetrievalMethod
+ * inside EncryptedData.</p>
+ *
+ * <p>In some cases, the EncryptedKey need to be clearly pointed out by the
+ * encryption template.</p>
+ */
+interface XXMLEncryption : com::sun::star::uno::XInterface
+{
+ /**
+ * Perform encryption in the environment of encryption template and context.
+ */
+ com::sun::star::xml::crypto::XXMLEncryptionTemplate encrypt(
+ [in] com::sun::star::xml::crypto::XXMLEncryptionTemplate aTemplate ,
+ [in] com::sun::star::xml::crypto::XSecurityEnvironment aEnvironment
+ ) raises( com::sun::star::xml::crypto::XMLEncryptionException ,
+ com::sun::star::uno::SecurityException ) ;
+
+ /**
+ * Perform decryption in the environment of encryption template and context.
+ */
+ com::sun::star::xml::crypto::XXMLEncryptionTemplate decrypt(
+ [in] com::sun::star::xml::crypto::XXMLEncryptionTemplate aTemplate ,
+ [in] com::sun::star::xml::crypto::XXMLSecurityContext aContext
+ ) raises( com::sun::star::xml::crypto::XMLEncryptionException ,
+ com::sun::star::uno::SecurityException ) ;
+} ;
+
+} ; } ; } ; } ; } ;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/XXMLEncryptionTemplate.idl b/offapi/com/sun/star/xml/crypto/XXMLEncryptionTemplate.idl
new file mode 100644
index 000000000..adee7b121
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/XXMLEncryptionTemplate.idl
@@ -0,0 +1,83 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_xxmlencryptiontemplate_idl_
+#define __com_sun_star_xml_crypto_xxmlencryptiontemplate_idl_
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/lang/IllegalArgumentException.idl>
+#include <com/sun/star/xml/wrapper/XXMLElementWrapper.idl>
+#include <com/sun/star/xml/crypto/XXMLSecurityTemplate.idl>
+
+module com { module sun { module star { module xml { module crypto {
+
+/**
+ * Interface of XML encryption template
+ *
+ * <p>This interface represents an encryption template, which is the same as the
+ * desired XML encryption element[ EncryptedType ] but some of the nodes may be
+ * empty. The empty entities include CipherValue, which is a subset of
+ * EncryptedData or EncryptedKey. Empty entities are not allowed in an encryption
+ * template when performing decryption.</p>
+ *
+ * <p>In some cases, the encryptor or decryptor can determine and locate the
+ * EncryptedKey from the encryption template by dereference the RetrievalMethod
+ * inside EncryptedData.</p>
+ *
+ * <p>In some cases, the EncryptedKey need to be clearly pointed out by the
+ * encryption template.</p>
+ *
+ * <p>With the help of encryption context, the encryptor or decryptor specifies
+ * the key from the KeyInfo in the encryption template.</p>
+ *
+ *
+ * <p>It isn't a good method to set the EncryptedKey here. In general, there is
+ * a RetrievalMethod in EncryptedData by which we can get the EncryptedKey.
+ *
+ * And sometimes, in the low level, it is hard to determine what the key is
+ * except that the high level application tell the mechanism and parameters.
+ *
+ * So I think it will be more simple that the application set the encrypted key
+ * information. In this case, the application only need to know the XML schema
+ * or DTD and the encryption device. If so, the high level application takes the
+ * action of build the EncryptedKey template and references it in the element of
+ * EncryptedData. And in this case, the calling to set up EncryptedKey template
+ * and target is not necessary, because the encryptor or decryptor can determine
+ * and locate the EncryptedKey from the encryption template of EncryptedData by
+ * dereference the RetrievalMethod.
+ *
+ * In some situation, the high level applications do not want to know anything
+ * about crypto devices( May be he must, because the lower level do not know
+ * what the key is ). If it gives the key value, it can get EncryptedKey by
+ * setting the key template and key value target.</p>
+ */
+interface XXMLEncryptionTemplate : XXMLSecurityTemplate
+{
+ /**
+ * Get the target XML element, i.e. the element to be encrypted
+ */
+ com::sun::star::xml::wrapper::XXMLElementWrapper getTarget(
+ ) ;
+} ;
+
+} ; } ; } ; } ; } ;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/XXMLSecurityContext.idl b/offapi/com/sun/star/xml/crypto/XXMLSecurityContext.idl
new file mode 100644
index 000000000..742d550af
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/XXMLSecurityContext.idl
@@ -0,0 +1,75 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_xxmlsecuritycontext_idl_
+#define __com_sun_star_xml_crypto_xxmlsecuritycontext_idl_
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/security/SecurityInfrastructureException.idl>
+#include <com/sun/star/xml/crypto/XSecurityEnvironment.idl>
+
+module com { module sun { module star { module xml { module crypto {
+
+/**
+ * Interface of XML security context
+ *
+ * <p>This interface specifies a certain signature context. By signature
+ * context, the signer or verifier retrieves key specification.</p>
+ */
+interface XXMLSecurityContext : com::sun::star::uno::XInterface
+{
+ /**
+ * Add personal security environment , and return the index of the added environment.
+ */
+ long addSecurityEnvironment( [in] XSecurityEnvironment aSecurityEnvironment
+ ) raises( com::sun::star::security::SecurityInfrastructureException ) ;
+
+ /**
+ * Get the number of security environments
+ */
+ long getSecurityEnvironmentNumber( ) ;
+
+ /**
+ * Get personal security environment
+ */
+ com::sun::star::xml::crypto::XSecurityEnvironment getSecurityEnvironmentByIndex([in] long index ) ;
+
+ /**
+ * An handy method to get the first personal security environment.
+ * In XMLSec/NSS, the first personal security environment should be the "internal slot"
+ */
+ com::sun::star::xml::crypto::XSecurityEnvironment getSecurityEnvironment( ) ;
+
+ /**
+ * Get the ID of the internal security environment
+ */
+ long getDefaultSecurityEnvironmentIndex( ) ;
+
+ /**
+ * set the ID of the internal security environment
+ */
+ void setDefaultSecurityEnvironmentIndex([in] long index ) ;
+
+} ;
+
+} ; } ; } ; } ; } ;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/XXMLSecurityTemplate.idl b/offapi/com/sun/star/xml/crypto/XXMLSecurityTemplate.idl
new file mode 100644
index 000000000..c29f2440b
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/XXMLSecurityTemplate.idl
@@ -0,0 +1,76 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_xxmlsecuritytemplate_idl_
+#define __com_sun_star_xml_crypto_xxmlsecuritytemplate_idl_
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/lang/IllegalArgumentException.idl>
+#include <com/sun/star/xml/wrapper/XXMLElementWrapper.idl>
+#include <com/sun/star/xml/crypto/XUriBinding.idl>
+#include <com/sun/star/xml/crypto/SecurityOperationStatus.idl>
+
+module com { module sun { module star { module xml { module crypto {
+
+/**
+ * Interface of the XML security template
+ *
+ * <p>This interface represents a security template, which is the super interface
+ * of the XXMLSignatureTemplate interface and the XXMLEncryptionTemplate interface.
+ */
+interface XXMLSecurityTemplate : com::sun::star::uno::XInterface
+{
+ /**
+ * Load a XML signature template from XML signature element
+ */
+ void setTemplate(
+ [in] com::sun::star::xml::wrapper::XXMLElementWrapper aXmlElement
+ ) raises( com::sun::star::lang::IllegalArgumentException ) ;
+
+ /**
+ * Get the XML signature element that represents the signature template
+ */
+ com::sun::star::xml::wrapper::XXMLElementWrapper getTemplate(
+ ) ;
+
+ /**
+ * Load the target XML element, i.e. the element to be signed
+ */
+ void setTarget(
+ [in] com::sun::star::xml::wrapper::XXMLElementWrapper aXmlElement
+ ) raises( com::sun::star::lang::IllegalArgumentException ) ;
+
+ /**
+ * Set the template status
+ */
+ void setStatus(
+ [in] SecurityOperationStatus status
+ ) raises( com::sun::star::lang::IllegalArgumentException ) ;
+
+ /**
+ * Get the template status
+ */
+ SecurityOperationStatus getStatus( ) ;
+} ;
+
+} ; } ; } ; } ; } ;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/XXMLSignature.idl b/offapi/com/sun/star/xml/crypto/XXMLSignature.idl
new file mode 100644
index 000000000..b0db29018
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/XXMLSignature.idl
@@ -0,0 +1,77 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_xxmlsignature_idl_
+#define __com_sun_star_xml_crypto_xxmlsignature_idl_
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/uno/SecurityException.idl>
+#include <com/sun/star/xml/crypto/XXMLSignatureTemplate.idl>
+#include <com/sun/star/xml/crypto/XXMLSecurityContext.idl>
+#include <com/sun/star/xml/crypto/XMLSignatureException.idl>
+
+module com { module sun { module star { module xml { module crypto {
+
+/**
+ * Interface of XML signature
+ *
+ * <p>This interface represents a XML signer or verifier.</p>
+ *
+ * <p>The signer or verifier concrete a key by retrieve signature context and
+ * signature template.</p>
+ *
+ * <p>In some cases, the signer or verifier can determine and locate the
+ * contents to be signed from the signature template by dereference the URI.</p>
+ *
+ * <p>In some cases, the contents to be signed need to be clearly pointed out by
+ * the signature template.</p>
+ */
+interface XXMLSignature : com::sun::star::uno::XInterface
+{
+ /**
+ * Perform signature in the environment of signature template and context.
+ */
+ com::sun::star::xml::crypto::XXMLSignatureTemplate generate(
+ [in] com::sun::star::xml::crypto::XXMLSignatureTemplate aTemplate ,
+ [in] com::sun::star::xml::crypto::XSecurityEnvironment aEnvironment
+ ) raises( com::sun::star::xml::crypto::XMLSignatureException ,
+ com::sun::star::uno::SecurityException ) ;
+
+ /**
+ * Perform validation in the environment of signature template and context.
+ */
+ com::sun::star::xml::crypto::XXMLSignatureTemplate validate(
+ [in] com::sun::star::xml::crypto::XXMLSignatureTemplate aTemplate ,
+ [in] com::sun::star::xml::crypto::XXMLSecurityContext aContext
+ ) raises( com::sun::star::xml::crypto::XMLSignatureException ,
+ com::sun::star::uno::SecurityException ) ;
+
+ /**
+ * get the time used by the engine, JSR105,
+ * this method is used for evaluation.
+ */
+ /*
+ hyper getEngineTime([in] long id);
+ */
+};
+
+} ; } ; } ; } ; } ;
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/XXMLSignatureTemplate.idl b/offapi/com/sun/star/xml/crypto/XXMLSignatureTemplate.idl
new file mode 100644
index 000000000..32fc3b991
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/XXMLSignatureTemplate.idl
@@ -0,0 +1,70 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_xxmlsignaturetemplate_idl_
+#define __com_sun_star_xml_crypto_xxmlsignaturetemplate_idl_
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/lang/IllegalArgumentException.idl>
+#include <com/sun/star/xml/wrapper/XXMLElementWrapper.idl>
+#include <com/sun/star/xml/crypto/XUriBinding.idl>
+#include <com/sun/star/xml/crypto/XXMLSecurityTemplate.idl>
+
+module com { module sun { module star { module xml { module crypto {
+
+/**
+ * Interface of XML signature template
+ *
+ * <p>This interface represents a signature template, which is the same as the
+ * desired XML signature element but some of the nodes may be empty. The empty
+ * entities include digest value and signature value. Empty entities are not
+ * allowed in a signature template when performing validation.</p>
+ *
+ * <p>In some cases, the signer or verifier can determine and locate the
+ * contents to be signed from the template by dereference the URI.</p>
+ *
+ * <p>With the help of signature context, the signer or verifier specifies the
+ * key from the KeyInfo in the signature template.</p>
+ */
+interface XXMLSignatureTemplate : XXMLSecurityTemplate
+{
+ /**
+ * Get the target XML element, i.e. the element to be signed
+ */
+ sequence< com::sun::star::xml::wrapper::XXMLElementWrapper > getTargets(
+ ) ;
+
+ /**
+ * Set the dynamic URI binding
+ */
+ void setBinding(
+ [in] com::sun::star::xml::crypto::XUriBinding aUriBinding
+ ) raises( com::sun::star::lang::IllegalArgumentException ) ;
+
+ /**
+ * Get the dynamic URI binding
+ */
+ com::sun::star::xml::crypto::XUriBinding getBinding( ) ;
+} ;
+
+} ; } ; } ; } ; } ;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/sax/ConstOfSecurityId.idl b/offapi/com/sun/star/xml/crypto/sax/ConstOfSecurityId.idl
new file mode 100644
index 000000000..d550519ae
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/sax/ConstOfSecurityId.idl
@@ -0,0 +1,37 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_sax_constofsecurityid_idl_
+#define __com_sun_star_xml_crypto_sax_constofsecurityid_idl_
+
+module com { module sun { module star { module xml { module crypto { module sax {
+
+/**
+ * Represents the undefined security id
+ */
+constants ConstOfSecurityId
+{
+ const long UNDEFINEDSECURITYID = -1;
+};
+
+} ; } ; } ; } ; } ; } ;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/sax/ElementMarkPriority.idl b/offapi/com/sun/star/xml/crypto/sax/ElementMarkPriority.idl
new file mode 100644
index 000000000..ead463f3f
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/sax/ElementMarkPriority.idl
@@ -0,0 +1,53 @@
+/* -*- 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 .
+ */
+
+
+#ifndef __com_sun_star_xml_crypto_sax_elementmarkpriority_idl_
+#define __com_sun_star_xml_crypto_sax_elementmarkpriority_idl_
+
+module com { module sun { module star { module xml { module crypto { module sax {
+
+/**
+ * Defines priority for the element mark's notification.
+ * <p>
+ * The PRI_MINIMUM priority is a value less than any practical
+ * priority value, it is used when compare between different
+ * priority values.
+ * <p>
+ * The PRI_AFTERMODIFY priority represents the notification will be
+ * sent after any internal modification has finished.
+ * <p>
+ * The PRI_BEFOREMODIFY priority represents the notification will be
+ * sent before any internal modification happens.
+ * <p>
+ * So an element mark with PRI_BEFOREMODIFY will be handled first,
+ * and one with PRI_AFTERMODIFY will be handled at last.
+ */
+enum ElementMarkPriority
+{
+ MINIMUM = 1,
+ AFTERMODIFY,
+ BEFOREMODIFY
+};
+
+} ; } ; } ; } ; } ; } ;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/sax/ElementMarkType.idl b/offapi/com/sun/star/xml/crypto/sax/ElementMarkType.idl
new file mode 100644
index 000000000..c440019c4
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/sax/ElementMarkType.idl
@@ -0,0 +1,41 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_sax_elementmarktype_idl_
+#define __com_sun_star_xml_crypto_sax_elementmarktype_idl_
+
+module com { module sun { module star { module xml { module crypto { module sax {
+
+/**
+ * Defines types of element mark.
+ * <p>
+ * the TYPEOFELEMENTMARK type represents a blocker, and the TYPEOFELEMENTCOLLECTOR
+ * type represents an element collector.
+ */
+enum ElementMarkType
+{
+ ELEMENTMARK = 1,
+ ELEMENTCOLLECTOR
+};
+
+} ; } ; } ; } ; } ; } ;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/sax/ElementStackItem.idl b/offapi/com/sun/star/xml/crypto/sax/ElementStackItem.idl
new file mode 100644
index 000000000..01715c6b4
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/sax/ElementStackItem.idl
@@ -0,0 +1,52 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_sax_ElementStackItem_idl_
+#define __com_sun_star_xml_crypto_sax_ElementStackItem_idl_
+
+#include <com/sun/star/xml/sax/XAttributeList.idl>
+
+module com { module sun { module star { module xml { module crypto { module sax {
+
+/**
+ * A struct to keep a startElement/endElement SAX event.
+ */
+struct ElementStackItem
+{
+ /**
+ * whether it is a startElement event
+ */
+ boolean isStartElementEvent;
+
+ /**
+ * the name of the element
+ */
+ string elementName;
+
+ /**
+ * attribute list for a startElement event
+ */
+ com::sun::star::xml::sax::XAttributeList xAttributes;
+};
+
+} ; } ; } ; } ; } ; } ;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/sax/XBlockerMonitor.idl b/offapi/com/sun/star/xml/crypto/sax/XBlockerMonitor.idl
new file mode 100644
index 000000000..35eace3f6
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/sax/XBlockerMonitor.idl
@@ -0,0 +1,48 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_sax_xblockermonitor_idl_
+#define __com_sun_star_xml_crypto_sax_xblockermonitor_idl_
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/uno/Exception.idl>
+
+module com { module sun { module star { module xml { module crypto { module sax {
+
+/**
+ * Interface of Blocker Monitor.
+ * <p>
+ * This interface is used to manipulate a blocker.
+ */
+interface XBlockerMonitor : com::sun::star::uno::XInterface
+{
+ /**
+ * Configures the blocker's id.
+ *
+ * @param id the keeper id of the blocker
+ */
+ void setBlockerId([in] long id)
+ raises( com::sun::star::uno::Exception );
+};
+
+} ; } ; } ; } ; } ; } ;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/sax/XDecryptionResultBroadcaster.idl b/offapi/com/sun/star/xml/crypto/sax/XDecryptionResultBroadcaster.idl
new file mode 100644
index 000000000..21bf34a8f
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/sax/XDecryptionResultBroadcaster.idl
@@ -0,0 +1,63 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_sax_xdecryptionresultbroadcaster_idl_
+#define __com_sun_star_xml_crypto_sax_xdecryptionresultbroadcaster_idl_
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/uno/Exception.idl>
+
+module com { module sun { module star { module xml { module crypto { module sax {
+
+interface XDecryptionResultListener;
+
+/**
+ * Interface of Decryption Result Broadcaster.
+ * <p>
+ * This interface is used to manipulate decryption result listener.
+ */
+interface XDecryptionResultBroadcaster : com::sun::star::uno::XInterface
+{
+ /**
+ * Adds a new decryption result listener.
+ * <p>
+ * When the decryption is finished, the result information will be sent to this
+ * listener.
+ *
+ * @param listener the listener to be added
+ */
+ void addDecryptionResultListener(
+ [in] XDecryptionResultListener listener)
+ raises( com::sun::star::uno::Exception );
+
+ /**
+ * Removes a decryption result listener.
+ * <p>
+ * After a listener is removed, no result information will be sent to it.
+ *
+ * @param listener the listener to be removed
+ */
+ void removeDecryptionResultListener([in] XDecryptionResultListener listener);
+};
+
+} ; } ; } ; } ; } ; } ;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/sax/XDecryptionResultListener.idl b/offapi/com/sun/star/xml/crypto/sax/XDecryptionResultListener.idl
new file mode 100644
index 000000000..93bf32913
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/sax/XDecryptionResultListener.idl
@@ -0,0 +1,52 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_sax_xdecryptionresultlistener_idl_
+#define __com_sun_star_xml_crypto_sax_xdecryptionresultlistener_idl_
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/uno/Exception.idl>
+#include <com/sun/star/xml/crypto/SecurityOperationStatus.idl>
+
+module com { module sun { module star { module xml { module crypto { module sax {
+
+/**
+ * Interface of Decryption Result Listener.
+ * <p>
+ * This interface is used to receive the result information of a
+ * decryption operation.
+ */
+interface XDecryptionResultListener : com::sun::star::uno::XInterface
+{
+ /**
+ * Notifies the decryption result.
+ *
+ * @param securityId the security id of the encryption to be decrypted
+ * @param decryptionResult the result information
+ */
+ void decrypted(
+ [in] long securityId,
+ [in] com::sun::star::xml::crypto::SecurityOperationStatus decryptionResult);
+};
+
+} ; } ; } ; } ; } ; } ;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/sax/XElementStackKeeper.idl b/offapi/com/sun/star/xml/crypto/sax/XElementStackKeeper.idl
new file mode 100644
index 000000000..05d0f4903
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/sax/XElementStackKeeper.idl
@@ -0,0 +1,60 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_sax_xelementstackkeeper_idl_
+#define __com_sun_star_xml_crypto_sax_xelementstackkeeper_idl_
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/uno/Exception.idl>
+#include <com/sun/star/xml/sax/XDocumentHandler.idl>
+#include <com/sun/star/xml/crypto/sax/ElementStackItem.idl>
+
+module com { module sun { module star { module xml { module crypto { module sax {
+
+/**
+ * Manipulate the "key SAX events" in a SAX event stream.
+ */
+interface XElementStackKeeper : com::sun::star::uno::XInterface
+{
+ /**
+ * Starts to buffer key SAX events.
+ */
+ void start();
+
+ /**
+ * Stops buffering key SAX events.
+ */
+ void stop();
+
+ /**
+ * Transfers the buffered key SAX events to a document handler.
+ * <p>
+ * All transferred events are removed from the buffer.
+ *
+ * @param handler the document to receive key SAX events
+ * @param includingTheLastEvent whether to transfer the last key SAX event
+ */
+ void retrieve( [in] com::sun::star::xml::sax::XDocumentHandler handler, [in] boolean includingTheLastEvent);
+};
+
+} ; } ; } ; } ; } ; } ;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/sax/XEncryptionResultBroadcaster.idl b/offapi/com/sun/star/xml/crypto/sax/XEncryptionResultBroadcaster.idl
new file mode 100644
index 000000000..ac4390122
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/sax/XEncryptionResultBroadcaster.idl
@@ -0,0 +1,63 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_sax_xencryptionresultbroadcaster_idl_
+#define __com_sun_star_xml_crypto_sax_xencryptionresultbroadcaster_idl_
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/uno/Exception.idl>
+
+module com { module sun { module star { module xml { module crypto { module sax {
+
+interface XEncryptionResultListener;
+
+/**
+ * Interface of Encryption Result Broadcaster.
+ * <p>
+ * This interface is used to manipulate encryption result listener.
+ */
+interface XEncryptionResultBroadcaster : com::sun::star::uno::XInterface
+{
+ /**
+ * Adds a new encryption result listener.
+ * <p>
+ * When the encryption is finished, the result information will be sent to this
+ * listener.
+ *
+ * @param listener the listener to be added
+ */
+ void addEncryptionResultListener(
+ [in] XEncryptionResultListener listener)
+ raises( com::sun::star::uno::Exception );
+
+ /**
+ * Removes an encryption result listener.
+ * <p>
+ * After a listener is removed, no result information will be sent to it.
+ *
+ * @param listener the listener to be removed
+ */
+ void removeEncryptionResultListener([in] XEncryptionResultListener listener);
+};
+
+} ; } ; } ; } ; } ; } ;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/sax/XEncryptionResultListener.idl b/offapi/com/sun/star/xml/crypto/sax/XEncryptionResultListener.idl
new file mode 100644
index 000000000..38aeb9ca4
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/sax/XEncryptionResultListener.idl
@@ -0,0 +1,55 @@
+/* -*- 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 .
+ */
+
+
+
+#ifndef __com_sun_star_xml_crypto_sax_xencryptionresultlistener_idl_
+#define __com_sun_star_xml_crypto_sax_xencryptionresultlistener_idl_
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/uno/Exception.idl>
+#include <com/sun/star/xml/crypto/SecurityOperationStatus.idl>
+
+module com { module sun { module star { module xml { module crypto { module sax {
+
+/**
+ * Interface of Encryption Result Listener.
+ * <p>
+ * This interface is used to receive the result information of an
+ * encryption operation.
+ */
+interface XEncryptionResultListener : com::sun::star::uno::XInterface
+{
+ /**
+ * Notifies the encryption result.
+ *
+ * @param securityId the security id of the encryption
+ * @param encryptionResult the result information
+ */
+ void encrypted(
+ [in] long securityId,
+ [in] com::sun::star::xml::crypto::SecurityOperationStatus encryptionResult);
+};
+
+} ; } ; } ; } ; } ; } ;
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/sax/XKeyCollector.idl b/offapi/com/sun/star/xml/crypto/sax/XKeyCollector.idl
new file mode 100644
index 000000000..02f2dd10b
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/sax/XKeyCollector.idl
@@ -0,0 +1,49 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_sax_xkeycollector_idl_
+#define __com_sun_star_xml_crypto_sax_xkeycollector_idl_
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/uno/Exception.idl>
+
+module com { module sun { module star { module xml { module crypto { module sax {
+
+/**
+ * Interface of Key Collector.
+ * <p>
+ * This interface is used to manipulate key materials.
+ */
+interface XKeyCollector : com::sun::star::uno::XInterface
+{
+ /**
+ * Set the keeper id of the key element.
+ *
+ * @param id the keeper id of the key element. If the id is 0, then it represents
+ * that this security entity has included its key material internally.
+ */
+ void setKeyId([in] long id)
+ raises( com::sun::star::uno::Exception );
+};
+
+} ; } ; } ; } ; } ; } ;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/sax/XMissionTaker.idl b/offapi/com/sun/star/xml/crypto/sax/XMissionTaker.idl
new file mode 100644
index 000000000..60b9ce1aa
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/sax/XMissionTaker.idl
@@ -0,0 +1,48 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_sax_xmissiontaker_idl_
+#define __com_sun_star_xml_crypto_sax_xmissiontaker_idl_
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/uno/Exception.idl>
+
+module com { module sun { module star { module xml { module crypto { module sax {
+
+/**
+ * Interface of Mission Taker.
+ * <p>
+ * This interface is used to control a mission.
+ */
+interface XMissionTaker : com::sun::star::uno::XInterface
+{
+ /**
+ * Forces a mission to make an end.
+ *
+ * @return `TRUE` if the mission is completed successfully, `FALSE`
+ * otherwise.
+ */
+ boolean endMission();
+};
+
+} ; } ; } ; } ; } ; } ;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/sax/XReferenceCollector.idl b/offapi/com/sun/star/xml/crypto/sax/XReferenceCollector.idl
new file mode 100644
index 000000000..48e5a0ba3
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/sax/XReferenceCollector.idl
@@ -0,0 +1,58 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_sax_XReferenceCollector_idl_
+#define __com_sun_star_xml_crypto_sax_XReferenceCollector_idl_
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/uno/Exception.idl>
+
+module com { module sun { module star { module xml { module crypto { module sax {
+
+/**
+ * Interface of Signature Collector.
+ * <p>
+ * This interface is used to control collecting a signature.
+ */
+interface XReferenceCollector : com::sun::star::uno::XInterface
+{
+ /**
+ * Sets the reference count of the signature.
+ *
+ * @param count the reference count of the signature
+ */
+ void setReferenceCount([in] long count)
+ raises( com::sun::star::uno::Exception );
+
+ /**
+ * Set the keeper id of the element collector of the
+ * referenced element.
+ *
+ * @param id the keeper id of the element collector,
+ * which is collecting a referenced element
+ */
+ void setReferenceId([in] long id)
+ raises( com::sun::star::uno::Exception );
+};
+
+} ; } ; } ; } ; } ; } ;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/sax/XReferenceResolvedBroadcaster.idl b/offapi/com/sun/star/xml/crypto/sax/XReferenceResolvedBroadcaster.idl
new file mode 100644
index 000000000..cef647b26
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/sax/XReferenceResolvedBroadcaster.idl
@@ -0,0 +1,70 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_sax_xreferenceresolvedbroadcaster_idl_
+#define __com_sun_star_xml_crypto_sax_xreferenceresolvedbroadcaster_idl_
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/uno/Exception.idl>
+
+module com { module sun { module star { module xml { module crypto { module sax {
+
+interface XReferenceResolvedListener;
+
+/**
+ * Interface of Reference Resolved Broadcaster.
+ * <p>
+ * This interface is used to manipulate reference resolved listener.
+ */
+interface XReferenceResolvedBroadcaster : com::sun::star::uno::XInterface
+{
+ /**
+ * Adds a new reference resolved listener for an element collector.
+ * <p>
+ * When the element collector has completely collected that element,
+ * this listener will receive a notification.
+ *
+ * @param referenceId the id of the element collector for which
+ * the new listener is added
+ * @param listener the listener to be added
+ */
+ void addReferenceResolvedListener(
+ [in] long referenceId,
+ [in] XReferenceResolvedListener listener);
+
+ /**
+ * Removes a listener from an element collector.
+ * <p>
+ * When a listener is removed, it will not receive notification when
+ * collection completes.
+ *
+ * @param referenceId the id of the element collector from which
+ * the listener is removed
+ * @param listener the listener to be removed
+ */
+ void removeReferenceResolvedListener(
+ [in] long referenceId,
+ [in] XReferenceResolvedListener listener);
+};
+
+} ; } ; } ; } ; } ; } ;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/sax/XReferenceResolvedListener.idl b/offapi/com/sun/star/xml/crypto/sax/XReferenceResolvedListener.idl
new file mode 100644
index 000000000..71085587c
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/sax/XReferenceResolvedListener.idl
@@ -0,0 +1,49 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_sax_xreferenceresolvedlistener_idl_
+#define __com_sun_star_xml_crypto_sax_xreferenceresolvedlistener_idl_
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/uno/Exception.idl>
+
+module com { module sun { module star { module xml { module crypto { module sax {
+
+/**
+ * Interface of Reference Resolved Listener.
+ * <p>
+ * This interface is used to receive the collection completion notification for an element
+ * collector.
+ */
+interface XReferenceResolvedListener : com::sun::star::uno::XInterface
+{
+ /**
+ * Notifies an element has been collected by an element collector.
+ *
+ * @param referenceId the id of the element collector
+ */
+ void referenceResolved([in] long referenceId)
+ raises( com::sun::star::uno::Exception );
+};
+
+} ; } ; } ; } ; } ; } ;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/sax/XSAXEventKeeper.idl b/offapi/com/sun/star/xml/crypto/sax/XSAXEventKeeper.idl
new file mode 100644
index 000000000..ef2def3fe
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/sax/XSAXEventKeeper.idl
@@ -0,0 +1,134 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_sax_xsaxeventkeeper_idl_
+#define __com_sun_star_xml_crypto_sax_xsaxeventkeeper_idl_
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/uno/Exception.idl>
+#include <com/sun/star/xml/sax/XDocumentHandler.idl>
+#include <com/sun/star/xml/wrapper/XXMLDocumentWrapper.idl>
+#include <com/sun/star/xml/wrapper/XXMLElementWrapper.idl>
+
+module com { module sun { module star { module xml { module crypto { module sax {
+
+/**
+ * Interface of SAX Event Keeper.
+ * <p>
+ * This interface is used to manipulate element marks in a SAX event stream.
+ * <p>
+ * There are two kinds of element mark, one is element collector, which is
+ * used to collect a particular element from the SAX event stream; the other
+ * is blocker, which is used to block the SAX event stream.
+ */
+interface XSAXEventKeeper : com::sun::star::uno::XInterface
+{
+ /**
+ * Adds a new element collector on the next element in the SAX event
+ * stream.
+ *
+ * @return the keeper id of the new element collector
+ */
+ long addElementCollector();
+
+ /**
+ * Removes an element collector.
+ *
+ * @param id the keeper id of the element collector to be removed
+ */
+ void removeElementCollector([in] long id);
+
+ /**
+ * Adds a new blocker on the next element in the SAX event stream.
+ * <p>
+ * No SAX event starting from the next element will be forwarded until
+ * this blocker is removed.
+ *
+ * @return the keeper id of the new blocker
+ */
+ long addBlocker();
+
+ /**
+ * Removes a blocker
+ *
+ * @param id the keeper id of the blocker to be removed
+ */
+ void removeBlocker([in] long id);
+
+ /**
+ * Checks whether the SAX event stream is blocking.
+ *
+ * @return <code>true</code> if blocking, <code>false</code> otherwise
+ */
+ boolean isBlocking();
+
+ /**
+ * Gets the element of an element mark.
+ *
+ * @param id the keeper id of the element mark, it can be an element
+ * collector or a blocker
+ */
+ com::sun::star::xml::wrapper::XXMLElementWrapper getElement([in] long id);
+
+ /**
+ * Sets the element of an element mark.
+ * <p>
+ * When an element is replaced outside of this interface, then uses this method
+ * can restore the link between an element mark and its working element.
+ *
+ * @param id the keeper id of the element mark to be set
+ * @param aElement the new element for this element mark.
+ */
+ void setElement(
+ [in] long id,
+ [in] com::sun::star::xml::wrapper::XXMLElementWrapper aElement);
+
+ /**
+ * Sets the next document handler in the SAX chain.
+ * <p>
+ * This handler will receive SAX events forwarded by the SAXEventKeeper.
+ *
+ * @param nextHandler the next handler in the SAX chain
+ * @return the old next handler
+ */
+ com::sun::star::xml::sax::XDocumentHandler setNextHandler(
+ [in] com::sun::star::xml::sax::XDocumentHandler nextHandler);
+
+ /**
+ * Prints information about all buffered elements.
+ *
+ * @return a tree-style string including all buffer information
+ */
+ string printBufferNodeTree();
+
+ /**
+ * Gets the element which current blocking happens.
+ * <p>
+ * This element is the working element of the first blocker in tree order.
+ *
+ * @return the current blocking element
+ */
+ com::sun::star::xml::wrapper::XXMLElementWrapper getCurrentBlockingNode();
+};
+
+} ; } ; } ; } ; } ; } ;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/sax/XSAXEventKeeperStatusChangeBroadcaster.idl b/offapi/com/sun/star/xml/crypto/sax/XSAXEventKeeperStatusChangeBroadcaster.idl
new file mode 100644
index 000000000..4a4ca1587
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/sax/XSAXEventKeeperStatusChangeBroadcaster.idl
@@ -0,0 +1,64 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_sax_xsaxeventkeeperstatuschangebroadcaster_idl_
+#define __com_sun_star_xml_crypto_sax_xsaxeventkeeperstatuschangebroadcaster_idl_
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/uno/Exception.idl>
+
+module com { module sun { module star { module xml { module crypto { module sax {
+
+interface XSAXEventKeeperStatusChangeListener;
+
+/**
+ * Interface of SAXEventKeeper Status Change Broadcaster.
+ * <p>
+ * This interface is used to manipulate SAXEventKeeper status change listener.
+ */
+interface XSAXEventKeeperStatusChangeBroadcaster : com::sun::star::uno::XInterface
+{
+ /**
+ * Adds a new status change listener.
+ * <p>
+ * When the SAXEventKeeper's status changes, the listener will receive a
+ * notification.
+ *
+ * @param listener the listener to be added
+ */
+ void addSAXEventKeeperStatusChangeListener(
+ [in] XSAXEventKeeperStatusChangeListener listener);
+
+ /**
+ * Removes a status change listener.
+ * <p>
+ * After a listener is removed, no status change notification will be
+ * sent to it.
+ *
+ * @param listener the listener to be removed
+ */
+ void removeSAXEventKeeperStatusChangeListener(
+ [in] XSAXEventKeeperStatusChangeListener listener);
+};
+
+} ; } ; } ; } ; } ; } ;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/sax/XSAXEventKeeperStatusChangeListener.idl b/offapi/com/sun/star/xml/crypto/sax/XSAXEventKeeperStatusChangeListener.idl
new file mode 100644
index 000000000..d214edc8a
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/sax/XSAXEventKeeperStatusChangeListener.idl
@@ -0,0 +1,66 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_sax_xsaxeventkeeperstatuschangelistener_idl_
+#define __com_sun_star_xml_crypto_sax_xsaxeventkeeperstatuschangelistener_idl_
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/uno/Exception.idl>
+
+module com { module sun { module star { module xml { module crypto { module sax {
+
+/**
+ * Interface of SAXEventKeeper Status Change Listener.
+ * <p>
+ * This interface is used to receive the SAXEventKeeper status change notification.
+ */
+interface XSAXEventKeeperStatusChangeListener : com::sun::star::uno::XInterface
+{
+ /**
+ * Notifies the SAXEventKeeper is entering/leaving blocking state.
+ *
+ * @param isBlocking <code>true</code> if the SAXEventKeeper is
+ * entering blocking state, <code>false</code>
+ * otherwise
+ */
+ void blockingStatusChanged([in] boolean isBlocking);
+
+ /**
+ * Notifies the SAXEventKeeper is entering/leaving collecting state.
+ *
+ * @param isInsideCollectedElement <code>true</code> if the SAXEventKeeper is
+ * collecting some element, <code>false</code>
+ * otherwise
+ */
+ void collectionStatusChanged([in] boolean isInsideCollectedElement);
+
+ /**
+ * Notifies the SAXEventKeeper's buffer is empty/not empty
+ *
+ * @param isBufferEmpty <code>true</code> if the SAXEventKeeper has no buffer
+ * at all; <code>false</code> otherwise.
+ */
+ void bufferStatusChanged([in] boolean isBufferEmpty);
+};
+
+} ; } ; } ; } ; } ; } ;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/sax/XSecuritySAXEventKeeper.idl b/offapi/com/sun/star/xml/crypto/sax/XSecuritySAXEventKeeper.idl
new file mode 100644
index 000000000..94d2e9e71
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/sax/XSecuritySAXEventKeeper.idl
@@ -0,0 +1,68 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_sax_xsecuritysaxeventkeeper_idl_
+#define __com_sun_star_xml_crypto_sax_xsecuritysaxeventkeeper_idl_
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/uno/Exception.idl>
+#include <com/sun/star/xml/crypto/sax/XSAXEventKeeper.idl>
+#include <com/sun/star/xml/crypto/sax/ConstOfSecurityId.idl>
+#include <com/sun/star/xml/crypto/sax/ElementMarkPriority.idl>
+#include <com/sun/star/xml/crypto/sax/ElementMarkType.idl>
+
+module com { module sun { module star { module xml { module crypto { module sax {
+
+/**
+ * Interface of Security SAX Event Keeper.
+ * <p>
+ * This interface is an extension of the XSAXEventKeeper interface,
+ * some security related features are added.
+ */
+interface XSecuritySAXEventKeeper : XSAXEventKeeper
+{
+ /**
+ * Adds a new element collector on the next element in the SAX event
+ * stream.
+ *
+ * @param priority the priority of the element collector. See
+ * ConstOfPriority
+ * @param modifyElement a flag representing whether the element
+ * collector will modify the content of its
+ * element after notification
+ * @return the keeper id of the new element collector
+ */
+ long addSecurityElementCollector(
+ [in] ElementMarkPriority priority,
+ [in] boolean modifyElement);
+
+ /**
+ * Sets security id for an element mark.
+ *
+ * @param id the keeper id of the element collector to be set
+ * @param securityId the security id to be set
+ */
+ void setSecurityId([in] long id, [in] long securityId);
+};
+
+} ; } ; } ; } ; } ; } ;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/sax/XSignatureCreationResultBroadcaster.idl b/offapi/com/sun/star/xml/crypto/sax/XSignatureCreationResultBroadcaster.idl
new file mode 100644
index 000000000..2a1ed9f15
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/sax/XSignatureCreationResultBroadcaster.idl
@@ -0,0 +1,64 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_sax_xsignaturecreationresultbroadcaster_idl_
+#define __com_sun_star_xml_crypto_sax_xsignaturecreationresultbroadcaster_idl_
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/uno/Exception.idl>
+
+module com { module sun { module star { module xml { module crypto { module sax {
+
+interface XSignatureCreationResultListener;
+
+/**
+ * Interface of Signature Creation Result Broadcaster.
+ * <p>
+ * This interface is used to manipulate signature creation result listener.
+ */
+interface XSignatureCreationResultBroadcaster : com::sun::star::uno::XInterface
+{
+ /**
+ * Adds a new signature creation result listener.
+ * <p>
+ * When the signature is created, the result information will be sent to this
+ * listener.
+ *
+ * @param listener the listener to be added
+ */
+ void addSignatureCreationResultListener(
+ [in] XSignatureCreationResultListener listener)
+ raises( com::sun::star::uno::Exception );
+
+ /**
+ * Removes a signature creation result listener.
+ * <p>
+ * After a listener is removed, no result information will be sent to it.
+ *
+ * @param listener the listener to be removed
+ */
+ void removeSignatureCreationResultListener(
+ [in] XSignatureCreationResultListener listener);
+};
+
+} ; } ; } ; } ; } ; } ;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/sax/XSignatureCreationResultListener.idl b/offapi/com/sun/star/xml/crypto/sax/XSignatureCreationResultListener.idl
new file mode 100644
index 000000000..c7f958a51
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/sax/XSignatureCreationResultListener.idl
@@ -0,0 +1,52 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_sax_xsignaturecreationresultlistener_idl_
+#define __com_sun_star_xml_crypto_sax_xsignaturecreationresultlistener_idl_
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/uno/Exception.idl>
+#include <com/sun/star/xml/crypto/SecurityOperationStatus.idl>
+
+module com { module sun { module star { module xml { module crypto { module sax {
+
+/**
+ * Interface of Signature Creation Result Listener.
+ * <p>
+ * This interface is used to receive the result information of a
+ * signature creation.
+ */
+interface XSignatureCreationResultListener : com::sun::star::uno::XInterface
+{
+ /**
+ * Notifies the signature creation result.
+ *
+ * @param securityId the security id of the signature
+ * @param creationResult the result information
+ */
+ void signatureCreated(
+ [in] long securityId,
+ [in] com::sun::star::xml::crypto::SecurityOperationStatus creationResult);
+};
+
+} ; } ; } ; } ; } ; } ;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/sax/XSignatureVerifyResultBroadcaster.idl b/offapi/com/sun/star/xml/crypto/sax/XSignatureVerifyResultBroadcaster.idl
new file mode 100644
index 000000000..20b64966d
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/sax/XSignatureVerifyResultBroadcaster.idl
@@ -0,0 +1,64 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_sax_xsignatureverifyresultbroadcaster_idl_
+#define __com_sun_star_xml_crypto_sax_xsignatureverifyresultbroadcaster_idl_
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/uno/Exception.idl>
+
+module com { module sun { module star { module xml { module crypto { module sax {
+
+interface XSignatureVerifyResultListener;
+
+/**
+ * Interface of Signature Verify Result Broadcaster.
+ * <p>
+ * This interface is used to manipulate signature verify result listener.
+ */
+interface XSignatureVerifyResultBroadcaster : com::sun::star::uno::XInterface
+{
+ /**
+ * Adds a new signature verify result listener.
+ * <p>
+ * When the signature is verified, the result information will be sent to this
+ * listener.
+ *
+ * @param listener the listener to be added
+ */
+ void addSignatureVerifyResultListener(
+ [in] XSignatureVerifyResultListener listener)
+ raises( com::sun::star::uno::Exception );
+
+ /**
+ * Removes a signature verify result listener.
+ * <p>
+ * After a listener is removed, no result information will be sent to it.
+ *
+ * @param listener the listener to be removed
+ */
+ void removeSignatureVerifyResultListener(
+ [in] XSignatureVerifyResultListener listener);
+};
+
+} ; } ; } ; } ; } ; } ;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/crypto/sax/XSignatureVerifyResultListener.idl b/offapi/com/sun/star/xml/crypto/sax/XSignatureVerifyResultListener.idl
new file mode 100644
index 000000000..f1ea34f9f
--- /dev/null
+++ b/offapi/com/sun/star/xml/crypto/sax/XSignatureVerifyResultListener.idl
@@ -0,0 +1,52 @@
+/* -*- 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 .
+ */
+
+#ifndef __com_sun_star_xml_crypto_sax_xsignatureverifyresultlistener_idl_
+#define __com_sun_star_xml_crypto_sax_xsignatureverifyresultlistener_idl_
+
+#include <com/sun/star/uno/XInterface.idl>
+#include <com/sun/star/uno/Exception.idl>
+#include <com/sun/star/xml/crypto/SecurityOperationStatus.idl>
+
+module com { module sun { module star { module xml { module crypto { module sax {
+
+/**
+ * Interface of Signature Verify Result Listener.
+ * <p>
+ * This interface is used to receive the result information of a
+ * signature verification.
+ */
+interface XSignatureVerifyResultListener : com::sun::star::uno::XInterface
+{
+ /**
+ * Notifies the signature verify result.
+ *
+ * @param securityId the security id of the signature
+ * @param verifyResult the result information
+ */
+ void signatureVerified(
+ [in] long securityId,
+ [in] com::sun::star::xml::crypto::SecurityOperationStatus verifyResult);
+};
+
+} ; } ; } ; } ; } ; } ;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */