From: Mohamad Al-Jaf mohamadaljaf@gmail.com
--- dlls/cryptxml/cryptxml.c | 17 +++++++++++++++++ dlls/cryptxml/cryptxml.spec | 2 +- include/cryptxml.h | 22 ++++++++++++++++++++++ 3 files changed, 40 insertions(+), 1 deletion(-)
diff --git a/dlls/cryptxml/cryptxml.c b/dlls/cryptxml/cryptxml.c index bf6bf046083..903a566bcfa 100644 --- a/dlls/cryptxml/cryptxml.c +++ b/dlls/cryptxml/cryptxml.c @@ -140,3 +140,20 @@ HRESULT WINAPI CryptXmlGetDocContext( HCRYPTXML handle, const CRYPT_XML_DOC_CTXT *ctx = &doc->ctx; return S_OK; } + +HRESULT WINAPI CryptXmlGetSignature( HCRYPTXML handle, const CRYPT_XML_SIGNATURE **ret_sig ) +{ + struct signature *sig = (struct signature *)handle; + + TRACE( "handle %p, sig %p\n", handle, ret_sig ); + + if (!sig || !ret_sig) return E_INVALIDARG; + if (sig->hdr.magic != SIG_MAGIC) + { + *ret_sig = NULL; + return CRYPT_XML_E_HANDLE; + } + + *ret_sig = &sig->sig; + return S_OK; +} diff --git a/dlls/cryptxml/cryptxml.spec b/dlls/cryptxml/cryptxml.spec index af3235ae85c..245b46a6bf2 100644 --- a/dlls/cryptxml/cryptxml.spec +++ b/dlls/cryptxml/cryptxml.spec @@ -8,7 +8,7 @@ @ stub CryptXmlGetAlgorithmInfo @ stdcall CryptXmlGetDocContext(ptr ptr) @ stub CryptXmlGetReference -@ stub CryptXmlGetSignature +@ stdcall CryptXmlGetSignature(ptr ptr) @ stub CryptXmlGetStatus @ stub CryptXmlGetTransforms @ stub CryptXmlImportPublicKey diff --git a/include/cryptxml.h b/include/cryptxml.h index 81f8da9010e..a72abcfda5d 100644 --- a/include/cryptxml.h +++ b/include/cryptxml.h @@ -29,6 +29,27 @@ extern "C" {
typedef void *HCRYPTXML;
+#define CRYPT_XML_E_BASE _HRESULT_TYPEDEF_(0x80092100) +#define CRYPT_XML_E_LARGE _HRESULT_TYPEDEF_(0x80092101) +#define CRYPT_XML_E_TOO_MANY_TRANSFORMS _HRESULT_TYPEDEF_(0x80092102) +#define CRYPT_XML_E_ENCODING _HRESULT_TYPEDEF_(0x80092103) +#define CRYPT_XML_E_ALGORITHM _HRESULT_TYPEDEF_(0x80092104) +#define CRYPT_XML_E_TRANSFORM _HRESULT_TYPEDEF_(0x80092105) +#define CRYPT_XML_E_HANDLE _HRESULT_TYPEDEF_(0x80092106) +#define CRYPT_XML_E_OPERATION _HRESULT_TYPEDEF_(0x80092107) +#define CRYPT_XML_E_UNRESOLVED_REFERENCE _HRESULT_TYPEDEF_(0x80092108) +#define CRYPT_XML_E_INVALID_DIGEST _HRESULT_TYPEDEF_(0x80092109) +#define CRYPT_XML_E_INVALID_SIGNATURE _HRESULT_TYPEDEF_(0x8009210A) +#define CRYPT_XML_E_HASH_FAILED _HRESULT_TYPEDEF_(0x8009210B) +#define CRYPT_XML_E_SIGN_FAILED _HRESULT_TYPEDEF_(0x8009210C) +#define CRYPT_XML_E_VERIFY_FAILED _HRESULT_TYPEDEF_(0x8009210D) +#define CRYPT_XML_E_TOO_MANY_SIGNATURES _HRESULT_TYPEDEF_(0x8009210E) +#define CRYPT_XML_E_INVALID_KEYVALUE _HRESULT_TYPEDEF_(0x8009210F) +#define CRYPT_XML_E_UNEXPECTED_XML _HRESULT_TYPEDEF_(0x80092110) +#define CRYPT_XML_E_SIGNER _HRESULT_TYPEDEF_(0x80092111) +#define CRYPT_XML_E_NON_UNIQUE_ID _HRESULT_TYPEDEF_(0x80092112) +#define CRYPT_XML_E_LAST _HRESULT_TYPEDEF_(0x80092112) + #define CRYPT_XML_FLAG_NO_SERIALIZE 0x80000000 #define CRYPT_XML_FLAG_ALWAYS_RETURN_ENCODED_OBJECT 0x40000000 #define CRYPT_XML_FLAG_ENFORCE_ID_NCNAME_FORMAT 0x20000000 @@ -297,6 +318,7 @@ typedef struct _CRYPT_XML_STATUS
HRESULT WINAPI CryptXmlClose(HCRYPTXML handle); HRESULT WINAPI CryptXmlGetDocContext(HCRYPTXML handle, const CRYPT_XML_DOC_CTXT **context); +HRESULT WINAPI CryptXmlGetSignature(HCRYPTXML handle, const CRYPT_XML_SIGNATURE **signature); HRESULT WINAPI CryptXmlOpenToDecode(const CRYPT_XML_TRANSFORM_CHAIN_CONFIG *config, DWORD flags, const CRYPT_XML_PROPERTY *property, ULONG property_count, const CRYPT_XML_BLOB *blob, HCRYPTXML *handle);