crypt32: Simplify the CertComparePublicKeyInfo implementation.
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
98fad7df79
commit
b81c0c3e47
|
@ -1267,32 +1267,21 @@ BOOL WINAPI CertComparePublicKeyInfo(DWORD dwCertEncodingType,
|
|||
ret = FALSE;
|
||||
if (CryptDecodeObject(dwCertEncodingType, RSA_CSP_PUBLICKEYBLOB,
|
||||
pPublicKey1->PublicKey.pbData, pPublicKey1->PublicKey.cbData,
|
||||
0, NULL, &length))
|
||||
{
|
||||
pblob1 = CryptMemAlloc(length);
|
||||
if (CryptDecodeObject(dwCertEncodingType, RSA_CSP_PUBLICKEYBLOB,
|
||||
pPublicKey1->PublicKey.pbData, pPublicKey1->PublicKey.cbData,
|
||||
0, pblob1, &length))
|
||||
CRYPT_DECODE_ALLOC_FLAG, &pblob1, &length))
|
||||
{
|
||||
if (CryptDecodeObject(dwCertEncodingType, RSA_CSP_PUBLICKEYBLOB,
|
||||
pPublicKey2->PublicKey.pbData, pPublicKey2->PublicKey.cbData,
|
||||
0, NULL, &length))
|
||||
{
|
||||
pblob2 = CryptMemAlloc(length);
|
||||
if (CryptDecodeObject(dwCertEncodingType, RSA_CSP_PUBLICKEYBLOB,
|
||||
pPublicKey2->PublicKey.pbData, pPublicKey2->PublicKey.cbData,
|
||||
0, pblob2, &length))
|
||||
CRYPT_DECODE_ALLOC_FLAG, &pblob2, &length))
|
||||
{
|
||||
/* The RSAPUBKEY structure directly follows the BLOBHEADER */
|
||||
RSAPUBKEY *pk1 = (LPVOID)(pblob1 + 1),
|
||||
*pk2 = (LPVOID)(pblob2 + 1);
|
||||
ret = (pk1->bitlen == pk2->bitlen) && (pk1->pubexp == pk2->pubexp)
|
||||
&& !memcmp(pk1 + 1, pk2 + 1, pk1->bitlen/8);
|
||||
|
||||
LocalFree(pblob2);
|
||||
}
|
||||
CryptMemFree(pblob2);
|
||||
}
|
||||
}
|
||||
CryptMemFree(pblob1);
|
||||
LocalFree(pblob1);
|
||||
}
|
||||
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue