rsaenh: Only reverse the significant bytes of an exported private key.
This commit is contained in:
parent
b1beb212db
commit
2d05074fba
@ -399,43 +399,43 @@ BOOL export_private_key_impl(BYTE *pbDest, const KEY_CONTEXT *pKeyContext, DWORD
|
||||
DWORD *pdwPubExp)
|
||||
{
|
||||
mp_to_unsigned_bin(&pKeyContext->rsa.N, pbDest);
|
||||
reverse_bytes(pbDest, dwKeyLen);
|
||||
reverse_bytes(pbDest, mp_unsigned_bin_size(&pKeyContext->rsa.N));
|
||||
if (mp_unsigned_bin_size(&pKeyContext->rsa.N) < dwKeyLen)
|
||||
memset(pbDest + mp_unsigned_bin_size(&pKeyContext->rsa.N), 0,
|
||||
dwKeyLen - mp_unsigned_bin_size(&pKeyContext->rsa.N));
|
||||
pbDest += dwKeyLen;
|
||||
mp_to_unsigned_bin(&pKeyContext->rsa.p, pbDest);
|
||||
reverse_bytes(pbDest, (dwKeyLen+1)>>1);
|
||||
reverse_bytes(pbDest, mp_unsigned_bin_size(&pKeyContext->rsa.p));
|
||||
if (mp_unsigned_bin_size(&pKeyContext->rsa.p) < (dwKeyLen+1)>>1)
|
||||
memset(pbDest + mp_unsigned_bin_size(&pKeyContext->rsa.p), 0,
|
||||
((dwKeyLen+1)>>1) - mp_unsigned_bin_size(&pKeyContext->rsa.p));
|
||||
pbDest += (dwKeyLen+1)>>1;
|
||||
mp_to_unsigned_bin(&pKeyContext->rsa.q, pbDest);
|
||||
reverse_bytes(pbDest, (dwKeyLen+1)>>1);
|
||||
reverse_bytes(pbDest, mp_unsigned_bin_size(&pKeyContext->rsa.q));
|
||||
if (mp_unsigned_bin_size(&pKeyContext->rsa.q) < (dwKeyLen+1)>>1)
|
||||
memset(pbDest + mp_unsigned_bin_size(&pKeyContext->rsa.q), 0,
|
||||
((dwKeyLen+1)>>1) - mp_unsigned_bin_size(&pKeyContext->rsa.q));
|
||||
pbDest += (dwKeyLen+1)>>1;
|
||||
mp_to_unsigned_bin(&pKeyContext->rsa.dP, pbDest);
|
||||
reverse_bytes(pbDest, (dwKeyLen+1)>>1);
|
||||
reverse_bytes(pbDest, mp_unsigned_bin_size(&pKeyContext->rsa.dP));
|
||||
if (mp_unsigned_bin_size(&pKeyContext->rsa.dP) < (dwKeyLen+1)>>1)
|
||||
memset(pbDest + mp_unsigned_bin_size(&pKeyContext->rsa.dP), 0,
|
||||
((dwKeyLen+1)>>1) - mp_unsigned_bin_size(&pKeyContext->rsa.dP));
|
||||
pbDest += (dwKeyLen+1)>>1;
|
||||
mp_to_unsigned_bin(&pKeyContext->rsa.dQ, pbDest);
|
||||
reverse_bytes(pbDest, (dwKeyLen+1)>>1);
|
||||
reverse_bytes(pbDest, mp_unsigned_bin_size(&pKeyContext->rsa.dQ));
|
||||
if (mp_unsigned_bin_size(&pKeyContext->rsa.dQ) < (dwKeyLen+1)>>1)
|
||||
memset(pbDest + mp_unsigned_bin_size(&pKeyContext->rsa.dQ), 0,
|
||||
((dwKeyLen+1)>>1) - mp_unsigned_bin_size(&pKeyContext->rsa.dQ));
|
||||
pbDest += (dwKeyLen+1)>>1;
|
||||
mp_to_unsigned_bin(&pKeyContext->rsa.qP, pbDest);
|
||||
reverse_bytes(pbDest, (dwKeyLen+1)>>1);
|
||||
reverse_bytes(pbDest, mp_unsigned_bin_size(&pKeyContext->rsa.qP));
|
||||
if (mp_unsigned_bin_size(&pKeyContext->rsa.qP) < (dwKeyLen+1)>>1)
|
||||
memset(pbDest + mp_unsigned_bin_size(&pKeyContext->rsa.qP), 0,
|
||||
((dwKeyLen+1)>>1) - mp_unsigned_bin_size(&pKeyContext->rsa.qP));
|
||||
pbDest += (dwKeyLen+1)>>1;
|
||||
mp_to_unsigned_bin(&pKeyContext->rsa.d, pbDest);
|
||||
reverse_bytes(pbDest, dwKeyLen);
|
||||
reverse_bytes(pbDest, mp_unsigned_bin_size(&pKeyContext->rsa.d));
|
||||
if (mp_unsigned_bin_size(&pKeyContext->rsa.d) < dwKeyLen)
|
||||
memset(pbDest + mp_unsigned_bin_size(&pKeyContext->rsa.d), 0,
|
||||
dwKeyLen - mp_unsigned_bin_size(&pKeyContext->rsa.d));
|
||||
|
@ -1842,7 +1842,6 @@ static void test_import_export(void)
|
||||
|
||||
ok(dwDataLen == sizeof(expected_exported_priv_key), "unexpected size %d\n",
|
||||
dwDataLen);
|
||||
todo_wine
|
||||
ok(!memcmp(exported_key, expected_exported_priv_key, dwDataLen),
|
||||
"unexpected value\n");
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user