xpmgr/BuildTools/Include/xpsdigitalsignature.idl

430 lines
10 KiB
Plaintext

//+----------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// Abstract:
// Defines the public interfaces for XPS Digital Signature.
//
//-----------------------------------------------------------------------------
cpp_quote("//+-------------------------------------------------------------------------")
cpp_quote("//")
cpp_quote("// Microsoft Windows")
cpp_quote("// Copyright (c) Microsoft Corporation. All rights reserved.")
cpp_quote("//")
cpp_quote("//--------------------------------------------------------------------------")
import "oaidl.idl";
import "wincrypt.idl"; // for CERT_CONTEXT
import "msopc.idl";
cpp_quote("#if (NTDDI_VERSION >= NTDDI_WIN7)")
[
uuid(8223a7eb-c4d5-474d-9bcc-ff67185e64a0)
]
library MSXPSSIG
{
// Forward declarations
interface IXpsSigningOptions;
interface IXpsSignatureCollection;
interface IXpsSignature;
interface IXpsSignatureBlockCollection;
interface IXpsSignatureBlock;
interface IXpsSignatureRequestCollection;
interface IXpsSignatureRequest;
typedef enum {
XPS_SIGNATURE_STATUS_INCOMPLIANT = 1,
XPS_SIGNATURE_STATUS_INCOMPLETE = 2,
XPS_SIGNATURE_STATUS_BROKEN = 3,
XPS_SIGNATURE_STATUS_QUESTIONABLE = 4,
XPS_SIGNATURE_STATUS_VALID = 5
}
XPS_SIGNATURE_STATUS;
typedef [v1_enum] enum {
XPS_SIGN_POLICY_NONE = 0x00,
XPS_SIGN_POLICY_CORE_PROPERTIES = 0x01,
XPS_SIGN_POLICY_SIGNATURE_RELATIONSHIPS = 0x02,
XPS_SIGN_POLICY_PRINT_TICKET = 0x04,
XPS_SIGN_POLICY_DISCARD_CONTROL = 0x08,
XPS_SIGN_POLICY_ALL = 0x0F
}
XPS_SIGN_POLICY;
cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(XPS_SIGN_POLICY)")
typedef [v1_enum] enum {
XPS_SIGN_FLAGS_NONE = 0x00,
XPS_SIGN_FLAGS_IGNORE_MARKUP_COMPATIBILITY = 0x01
}
XPS_SIGN_FLAGS;
cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(XPS_SIGN_FLAGS)")
[
object,
uuid(d3e8d338-fdc4-4afc-80b5-d532a1782ee1),
local // make MIDL accept void*, which is a field in CERT_CONTEXT
]
interface IXpsSignatureManager : IUnknown
{
HRESULT LoadPackageFile(
[in, string] LPCWSTR fileName
);
HRESULT LoadPackageStream(
[in] IStream* stream
);
HRESULT Sign(
[in] IXpsSigningOptions* signOptions,
[in] const CERT_CONTEXT* x509Certificate,
[out, retval] IXpsSignature** signature
);
HRESULT GetSignatureOriginPartName(
[out, retval] IOpcPartUri** signatureOriginPartName
);
HRESULT SetSignatureOriginPartName(
[in] IOpcPartUri* signatureOriginPartName
);
HRESULT GetSignatures(
[out, retval] IXpsSignatureCollection** signatures
);
HRESULT AddSignatureBlock(
[in] IOpcPartUri* partName,
[in] UINT32 fixedDocumentIndex,
[out, retval] IXpsSignatureBlock** signatureBlock
);
HRESULT GetSignatureBlocks(
[out, retval] IXpsSignatureBlockCollection **signatureBlocks
);
HRESULT CreateSigningOptions(
[out, retval] IXpsSigningOptions **signingOptions
);
HRESULT SavePackageToFile(
[in, string] LPCWSTR fileName,
[in, unique] LPSECURITY_ATTRIBUTES securityAttributes,
[in] DWORD flagsAndAttributes
);
HRESULT SavePackageToStream(
[in] IStream* stream
);
}
[
object,
uuid(7718eae4-3215-49be-af5b-594fef7fcfa6)
]
interface IXpsSigningOptions : IUnknown
{
HRESULT GetSignatureId(
[out, string, retval] LPWSTR* signatureId
);
HRESULT SetSignatureId(
[in, string] LPCWSTR signatureId
);
HRESULT GetSignatureMethod(
[out, string, retval] LPWSTR* signatureMethod
);
HRESULT SetSignatureMethod(
[in, string] LPCWSTR signatureMethod
);
HRESULT GetDigestMethod(
[out, string, retval] LPWSTR* digestMethod
);
HRESULT SetDigestMethod(
[in, string] LPCWSTR digestMethod
);
HRESULT GetSignaturePartName(
[out, retval] IOpcPartUri** signaturePartName
);
HRESULT SetSignaturePartName(
[in] IOpcPartUri* signaturePartName
);
HRESULT GetPolicy(
[out, retval] XPS_SIGN_POLICY* policy
);
HRESULT SetPolicy(
[in] XPS_SIGN_POLICY policy
);
HRESULT GetSigningTimeFormat(
[out, retval] OPC_SIGNATURE_TIME_FORMAT* timeFormat
);
HRESULT SetSigningTimeFormat(
[in] OPC_SIGNATURE_TIME_FORMAT timeFormat
);
HRESULT GetCustomObjects(
[out, retval] IOpcSignatureCustomObjectSet** customObjectSet
);
HRESULT GetCustomReferences(
[out, retval] IOpcSignatureReferenceSet** customReferenceSet
);
HRESULT GetCertificateSet(
[out, retval] IOpcCertificateSet** certificateSet
);
HRESULT GetFlags(
[out, retval] XPS_SIGN_FLAGS* flags
);
HRESULT SetFlags(
[in] XPS_SIGN_FLAGS flags
);
}
[
object,
uuid(A2D1D95D-ADD2-4DFF-AB27-6B9C645FF322)
]
interface IXpsSignatureCollection : IUnknown
{
HRESULT GetCount(
[out, retval] UINT32* count
);
HRESULT GetAt(
[in] UINT32 index,
[out, retval] IXpsSignature **signature
);
HRESULT RemoveAt(
UINT32 index
);
}
[
object,
uuid(6AE4C93E-1ADE-42FB-898B-3A5658284857),
local // make MIDL accept void*, which is a field in CERT_CONTEXT
]
interface IXpsSignature : IUnknown
{
HRESULT GetSignatureId(
[out, string, retval] LPWSTR *sigId
);
HRESULT GetSignatureValue(
[out, size_is(, *count)] UINT8** signatureHashValue,
[out] UINT32* count
);
HRESULT GetCertificateEnumerator(
[out, retval] IOpcCertificateEnumerator** certificateEnumerator
);
HRESULT GetSigningTime(
[out, string, retval] LPWSTR *sigDateTimeString
);
HRESULT GetSigningTimeFormat(
[out, retval] OPC_SIGNATURE_TIME_FORMAT* timeFormat
);
HRESULT GetSignaturePartName(
[out, retval] IOpcPartUri** signaturePartName
);
HRESULT Verify(
[in] const CERT_CONTEXT* x509Certificate,
[out, retval] XPS_SIGNATURE_STATUS* sigStatus
);
HRESULT GetPolicy(
[out, retval] XPS_SIGN_POLICY* policy
);
HRESULT GetCustomObjectEnumerator(
[out, retval] IOpcSignatureCustomObjectEnumerator** customObjectEnumerator
);
HRESULT GetCustomReferenceEnumerator(
[out, retval] IOpcSignatureReferenceEnumerator** customReferenceEnumerator
);
HRESULT GetSignatureXml(
[out, size_is(, *count)] UINT8** signatureXml,
[out] UINT32* count
);
HRESULT SetSignatureXml(
[in, size_is(count)] const UINT8* signatureXml,
[in] UINT32 count
);
}
[
object,
uuid(23397050-FE99-467A-8DCE-9237F074FFE4)
]
interface IXpsSignatureBlockCollection : IUnknown
{
HRESULT GetCount(
[out, retval] UINT32* count
);
HRESULT GetAt(
[in] UINT32 index,
[out, retval] IXpsSignatureBlock** signatureBlock
);
HRESULT RemoveAt(
UINT32 index
);
}
[
object,
uuid(151FAC09-0B97-4AC6-A323-5E4297D4322B)
]
interface IXpsSignatureBlock : IUnknown
{
HRESULT GetRequests(
[out, retval] IXpsSignatureRequestCollection** requests
);
HRESULT GetPartName(
[out, retval] IOpcPartUri** partName
);
HRESULT GetDocumentIndex(
[out, retval] UINT32* fixedDocumentIndex
);
HRESULT GetDocumentName(
[out, retval] IOpcPartUri** fixedDocumentName
);
HRESULT CreateRequest(
[in, string] LPCWSTR requestId,
[out, retval] IXpsSignatureRequest **signatureRequest
);
}
[
object,
uuid(F0253E68-9F19-412E-9B4F-54D3B0AC6CD9)
]
interface IXpsSignatureRequestCollection : IUnknown
{
HRESULT GetCount(
[out, retval] UINT32* count
);
HRESULT GetAt(
[in] UINT32 index,
[out, retval] IXpsSignatureRequest** signatureRequest
);
HRESULT RemoveAt(
[in] UINT32 index
);
}
[
object,
uuid(ac58950b-7208-4b2d-b2c4-951083d3b8eb)
]
interface IXpsSignatureRequest : IUnknown
{
HRESULT GetIntent(
[out, string, retval] LPWSTR *intent
);
HRESULT SetIntent(
[in, string] LPCWSTR intent
);
HRESULT GetRequestedSigner(
[out, string, retval] LPWSTR *signerName
);
HRESULT SetRequestedSigner(
[in, string] LPCWSTR signerName
);
HRESULT GetRequestSignByDate(
[out, string, retval] LPWSTR *dateString
);
HRESULT SetRequestSignByDate(
[in, string] LPCWSTR dateString
);
HRESULT GetSigningLocale(
[out, string, retval] LPWSTR *place
);
HRESULT SetSigningLocale(
[in, string] LPCWSTR place
);
HRESULT GetSpotLocation(
[out] INT32* pageIndex,
[out] IOpcPartUri** pagePartName,
[out] float* x,
[out] float* y
);
HRESULT SetSpotLocation(
[in] INT32 pageIndex,
[in] float x,
[in] float y
);
HRESULT GetRequestId(
[out, string, retval] LPWSTR *requestId
);
HRESULT GetSignature(
[out, retval] IXpsSignature** signature
);
}
[
uuid(b0c43320-2315-44a2-b70a-0943a140a8ee)
]
coclass XpsSignatureManager
{
interface IXpsSignatureManager;
};
}; // library MSXPSSIG
cpp_quote("#define XPS_E_SIGREQUESTID_DUP MAKE_HRESULT(1, FACILITY_XPS, 901) ")
cpp_quote("#define XPS_E_PACKAGE_NOT_OPENED MAKE_HRESULT(1, FACILITY_XPS, 902) ")
cpp_quote("#define XPS_E_PACKAGE_ALREADY_OPENED MAKE_HRESULT(1, FACILITY_XPS, 903) ")
cpp_quote("#define XPS_E_SIGNATUREID_DUP MAKE_HRESULT(1, FACILITY_XPS, 904) ")
cpp_quote("#define XPS_E_MARKUP_COMPATIBILITY_ELEMENTS MAKE_HRESULT(1, FACILITY_XPS, 905) ")
cpp_quote("#define XPS_E_OBJECT_DETACHED MAKE_HRESULT(1, FACILITY_XPS, 906) ")
cpp_quote("#define XPS_E_INVALID_SIGNATUREBLOCK_MARKUP MAKE_HRESULT(1, FACILITY_XPS, 907) ")
cpp_quote("#endif // (NTDDI >= NTDDI_WIN7)")