From: Mohamad Al-Jaf mohamadaljaf@gmail.com
Needed by Lenovo USBRecoveryCreator. --- dlls/cryptxml/cryptxml.c | 22 +++++++++++++++++++--- dlls/cryptxml/cryptxml.spec | 2 +- include/cryptxml.h | 1 + 3 files changed, 21 insertions(+), 4 deletions(-)
diff --git a/dlls/cryptxml/cryptxml.c b/dlls/cryptxml/cryptxml.c index f8e378a8d7a..7d90cd263e3 100644 --- a/dlls/cryptxml/cryptxml.c +++ b/dlls/cryptxml/cryptxml.c @@ -87,6 +87,13 @@ HRESULT WINAPI CryptXmlGetDocContext( HCRYPTXML handle, const CRYPT_XML_DOC_CTXT return S_OK; }
+static BOOL is_handle_signature( HCRYPTXML handle ) +{ + CRYPT_XML_SIGNATURE *sig = (CRYPT_XML_SIGNATURE *)handle; + if (sig->cbSize != sizeof( CRYPT_XML_SIGNATURE )) return FALSE; + return TRUE; +} + HRESULT WINAPI CryptXmlGetSignature( HCRYPTXML handle, const CRYPT_XML_SIGNATURE **signature ) { CRYPT_XML_SIGNATURE *sig; @@ -94,14 +101,23 @@ HRESULT WINAPI CryptXmlGetSignature( HCRYPTXML handle, const CRYPT_XML_SIGNATURE FIXME( "handle %p, signature %p stub!\n", handle, signature );
if (!handle || !signature) return E_INVALIDARG; - - sig = (CRYPT_XML_SIGNATURE *)handle; - if (sig->cbSize != sizeof( CRYPT_XML_SIGNATURE )) + if (!(is_handle_signature( handle ))) { *signature = NULL; return CRYPT_XML_E_HANDLE; }
+ sig = (CRYPT_XML_SIGNATURE *)handle; *signature = sig; return S_OK; } + +HRESULT WINAPI CryptXmlVerifySignature( HCRYPTXML handle, BCRYPT_KEY_HANDLE key, DWORD flags ) +{ + FIXME( "handle %p, key %p, flags %lx, stub!\n", handle, key, flags ); + + if (!handle) return E_INVALIDARG; + if (!(is_handle_signature( handle ))) return CRYPT_XML_E_HANDLE; + + return S_OK; +} diff --git a/dlls/cryptxml/cryptxml.spec b/dlls/cryptxml/cryptxml.spec index 245b46a6bf2..a1c37493e7b 100644 --- a/dlls/cryptxml/cryptxml.spec +++ b/dlls/cryptxml/cryptxml.spec @@ -16,4 +16,4 @@ @ stub CryptXmlOpenToEncode @ stub CryptXmlSetHMACSecret @ stub CryptXmlSign -@ stub CryptXmlVerifySignature +@ stdcall CryptXmlVerifySignature(ptr ptr long) diff --git a/include/cryptxml.h b/include/cryptxml.h index 8faa44f8276..4a72de68626 100644 --- a/include/cryptxml.h +++ b/include/cryptxml.h @@ -299,6 +299,7 @@ HRESULT WINAPI CryptXmlGetDocContext(HCRYPTXML handle, const CRYPT_XML_DOC_CTXT 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); +HRESULT WINAPI CryptXmlVerifySignature(HCRYPTXML handle, BCRYPT_KEY_HANDLE key, DWORD flags);
#ifdef __cplusplus }