Module: wine Branch: master Commit: 8d4d7b267de514c3c72820faa31c3403a4a488cf URL: http://source.winehq.org/git/wine.git/?a=commit;h=8d4d7b267de514c3c72820faa3...
Author: Michael Karcher wine@mkarcher.dialup.fu-berlin.de Date: Sun May 25 19:23:44 2008 +0200
crypt32: CertGetPublicKeyLength should check only cert encoding type.
pktextract calls CertGetPublicKeyLength with dwCertEncodingType of X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, MSDN explicitly allows it.
---
dlls/crypt32/cert.c | 2 +- dlls/crypt32/tests/cert.c | 5 +++++ 2 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/dlls/crypt32/cert.c b/dlls/crypt32/cert.c index 41d3998..b916ce3 100644 --- a/dlls/crypt32/cert.c +++ b/dlls/crypt32/cert.c @@ -809,7 +809,7 @@ DWORD WINAPI CertGetPublicKeyLength(DWORD dwCertEncodingType,
TRACE("(%08x, %p)\n", dwCertEncodingType, pPublicKey);
- if (dwCertEncodingType != X509_ASN_ENCODING) + if (GET_CERT_ENCODING_TYPE(dwCertEncodingType) != X509_ASN_ENCODING) { SetLastError(ERROR_FILE_NOT_FOUND); return 0; diff --git a/dlls/crypt32/tests/cert.c b/dlls/crypt32/tests/cert.c index 3fce85e..64aba83 100644 --- a/dlls/crypt32/tests/cert.c +++ b/dlls/crypt32/tests/cert.c @@ -2958,6 +2958,11 @@ static void testGetPublicKeyLength(void) SetLastError(0xdeadbeef); ret = CertGetPublicKeyLength(X509_ASN_ENCODING, &info); ok(ret == 56, "Expected length 56, got %d\n", ret); + /* With the RSA OID and a message encoding */ + info.Algorithm.pszObjId = oid_rsa_rsa; + SetLastError(0xdeadbeef); + ret = CertGetPublicKeyLength(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, &info); + ok(ret == 56, "Expected length 56, got %d\n", ret); }
START_TEST(cert)