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 69ad0b70f53..a1b4b7f1df3 100644 --- a/dlls/cryptxml/cryptxml.c +++ b/dlls/cryptxml/cryptxml.c @@ -131,3 +131,20 @@ HRESULT WINAPI CryptXmlClose( HCRYPTXML handle ) free( obj ); return S_OK; } + +HRESULT WINAPI CryptXmlGetDocContext( HCRYPTXML handle, const CRYPT_XML_DOC_CTXT **ctx ) +{ + struct xmldoc *doc = (struct xmldoc *)handle; + + TRACE( "handle %p, ctx %p\n", handle, ctx ); + + if (!doc || !ctx) return E_INVALIDARG; + if (doc->hdr.magic != DOC_MAGIC) + { + *ctx = NULL; + return CRYPT_XML_E_HANDLE; + } + + *ctx = &doc->ctx; + return S_OK; +} diff --git a/dlls/cryptxml/cryptxml.spec b/dlls/cryptxml/cryptxml.spec index bce70dcf2d3..af3235ae85c 100644 --- a/dlls/cryptxml/cryptxml.spec +++ b/dlls/cryptxml/cryptxml.spec @@ -6,7 +6,7 @@ @ stub CryptXmlEnumAlgorithmInfo @ stub CryptXmlFindAlgorithmInfo @ stub CryptXmlGetAlgorithmInfo -@ stub CryptXmlGetDocContext +@ stdcall CryptXmlGetDocContext(ptr ptr) @ stub CryptXmlGetReference @ stub CryptXmlGetSignature @ stub CryptXmlGetStatus diff --git a/include/cryptxml.h b/include/cryptxml.h index 388ce73ff07..d939935b1bb 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 @@ -296,6 +317,7 @@ typedef struct _CRYPT_XML_STATUS #define CRYPT_XML_STATUS_OPENED_TO_ENCODE 0x80000000
HRESULT WINAPI CryptXmlClose(HCRYPTXML handle); +HRESULT WINAPI CryptXmlGetDocContext(HCRYPTXML handle, const CRYPT_XML_DOC_CTXT **context); 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);