From: Mohamad Al-Jaf mohamadaljaf@gmail.com
--- dlls/cryptxml/cryptxml.c | 19 +++++++++++++++++++ dlls/cryptxml/cryptxml.spec | 2 +- include/cryptxml.h | 1 + 3 files changed, 21 insertions(+), 1 deletion(-)
diff --git a/dlls/cryptxml/cryptxml.c b/dlls/cryptxml/cryptxml.c index ad22e232bac..69ad0b70f53 100644 --- a/dlls/cryptxml/cryptxml.c +++ b/dlls/cryptxml/cryptxml.c @@ -112,3 +112,22 @@ HRESULT WINAPI CryptXmlOpenToDecode( const CRYPT_XML_TRANSFORM_CHAIN_CONFIG *con *handle = (HCRYPTXML)doc; return S_OK; } + +HRESULT WINAPI CryptXmlClose( HCRYPTXML handle ) +{ + struct object *obj = (struct object *)handle; + struct xmldoc *doc; + struct signature *sig; + + TRACE( "handle %p\n", handle ); + + if (!obj) return E_INVALIDARG; + if (obj->magic != DOC_MAGIC) return S_FALSE; + + doc = (struct xmldoc *)obj; + sig = (struct signature *)doc->ctx.rgpSignature[0]; + + free( sig ); + free( obj ); + return S_OK; +} diff --git a/dlls/cryptxml/cryptxml.spec b/dlls/cryptxml/cryptxml.spec index 6e9847770a3..bce70dcf2d3 100644 --- a/dlls/cryptxml/cryptxml.spec +++ b/dlls/cryptxml/cryptxml.spec @@ -1,5 +1,5 @@ @ stub CryptXmlAddObject -@ stub CryptXmlClose +@ stdcall CryptXmlClose(ptr) @ stub CryptXmlCreateReference @ stub CryptXmlDigestReference @ stub CryptXmlEncode diff --git a/include/cryptxml.h b/include/cryptxml.h index b11c33a37c4..388ce73ff07 100644 --- a/include/cryptxml.h +++ b/include/cryptxml.h @@ -295,6 +295,7 @@ typedef struct _CRYPT_XML_STATUS #define CRYPT_XML_STATUS_SIGNATURE_VALID 0x00010000 #define CRYPT_XML_STATUS_OPENED_TO_ENCODE 0x80000000
+HRESULT WINAPI CryptXmlClose(HCRYPTXML handle); 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);