From: Mohamad Al-Jaf mohamadaljaf@gmail.com
Needed by Lenovo USBRecoveryCreator. --- dlls/cryptxml/cryptxml.c | 16 ++++++++++++++++ dlls/cryptxml/cryptxml.spec | 2 +- include/cryptxml.h | 23 +++++++++++++++++++++++ 3 files changed, 40 insertions(+), 1 deletion(-)
diff --git a/dlls/cryptxml/cryptxml.c b/dlls/cryptxml/cryptxml.c index 7d90cd263e3..ce19d1afba3 100644 --- a/dlls/cryptxml/cryptxml.c +++ b/dlls/cryptxml/cryptxml.c @@ -112,6 +112,22 @@ HRESULT WINAPI CryptXmlGetSignature( HCRYPTXML handle, const CRYPT_XML_SIGNATURE return S_OK; }
+HRESULT WINAPI CryptXmlGetStatus( HCRYPTXML handle, CRYPT_XML_STATUS *status ) +{ + CRYPT_XML_STATUS ret_status; + + FIXME( "handle %p, status %p stub!\n", handle, status ); + + if (!handle || !status) return E_INVALIDARG; + + ret_status.cbSize = sizeof( CRYPT_XML_STATUS ); + ret_status.dwErrorStatus = CRYPT_XML_STATUS_NO_ERROR; + ret_status.dwInfoStatus = CRYPT_XML_STATUS_SIGNATURE_VALID; + + *status = ret_status; + 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 ); diff --git a/dlls/cryptxml/cryptxml.spec b/dlls/cryptxml/cryptxml.spec index a1c37493e7b..4beb91a9c5d 100644 --- a/dlls/cryptxml/cryptxml.spec +++ b/dlls/cryptxml/cryptxml.spec @@ -9,7 +9,7 @@ @ stdcall CryptXmlGetDocContext(ptr ptr) @ stub CryptXmlGetReference @ stdcall CryptXmlGetSignature(ptr ptr) -@ stub CryptXmlGetStatus +@ stdcall CryptXmlGetStatus(ptr ptr) @ stub CryptXmlGetTransforms @ stub CryptXmlImportPublicKey @ stdcall CryptXmlOpenToDecode(ptr long ptr long ptr ptr) diff --git a/include/cryptxml.h b/include/cryptxml.h index 4a72de68626..d5682210331 100644 --- a/include/cryptxml.h +++ b/include/cryptxml.h @@ -294,9 +294,32 @@ typedef struct _CRYPT_XML_DOC_CTXT PCRYPT_XML_SIGNATURE *rgpSignature; } CRYPT_XML_DOC_CTXT, *PCRYPT_XML_DOC_CTXT;
+typedef struct _CRYPT_XML_STATUS +{ + ULONG cbSize; + DWORD dwErrorStatus; + DWORD dwInfoStatus; +} CRYPT_XML_STATUS, *PCRYPT_XML_STATUS; + +#define CRYPT_XML_STATUS_NO_ERROR 0x00000000 +#define CRYPT_XML_STATUS_ERROR_NOT_RESOLVED 0x00000001 +#define CRYPT_XML_STATUS_ERROR_DIGEST_INVALID 0x00000002 +#define CRYPT_XML_STATUS_ERROR_NOT_SUPPORTED_ALGORITHM 0x00000004 +#define CRYPT_XML_STATUS_ERROR_NOT_SUPPORTED_TRANSFORM 0x00000008 +#define CRYPT_XML_STATUS_ERROR_SIGNATURE_INVALID 0x00010000 +#define CRYPT_XML_STATUS_ERROR_KEYINFO_NOT_PARSED 0x00020000 + +#define CRYPT_XML_STATUS_INTERNAL_REFERENCE 0x00000001 +#define CRYPT_XML_STATUS_KEY_AVAILABLE 0x00000002 +#define CRYPT_XML_STATUS_DIGESTING 0x00000004 +#define CRYPT_XML_STATUS_DIGEST_VALID 0x00000008 +#define CRYPT_XML_STATUS_SIGNATURE_VALID 0x00010000 +#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 CryptXmlGetSignature(HCRYPTXML handle, const CRYPT_XML_SIGNATURE **signature); +HRESULT WINAPI CryptXmlGetStatus(HCRYPTXML handle, CRYPT_XML_STATUS *status); 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);