Module: wine Branch: master Commit: 2d05074fbaf8edb4c765ad65aabdcb0929ed60a6 URL: http://source.winehq.org/git/wine.git/?a=commit;h=2d05074fbaf8edb4c765ad65aa...
Author: Juan Lang juan.lang@gmail.com Date: Thu Nov 5 10:02:03 2009 -0800
rsaenh: Only reverse the significant bytes of an exported private key.
---
dlls/rsaenh/implglue.c | 14 +++++++------- dlls/rsaenh/tests/rsaenh.c | 1 - 2 files changed, 7 insertions(+), 8 deletions(-)
diff --git a/dlls/rsaenh/implglue.c b/dlls/rsaenh/implglue.c index 118409f..a36d7e7 100644 --- a/dlls/rsaenh/implglue.c +++ b/dlls/rsaenh/implglue.c @@ -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)); diff --git a/dlls/rsaenh/tests/rsaenh.c b/dlls/rsaenh/tests/rsaenh.c index 31f78ad..8632bbb 100644 --- a/dlls/rsaenh/tests/rsaenh.c +++ b/dlls/rsaenh/tests/rsaenh.c @@ -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");