Juan Lang : rsaenh: Only reverse the significant bytes of an exported private key.

Alexandre Julliard julliard at winehq.org
Mon Nov 9 15:14:13 CST 2009


Module: wine
Branch: master
Commit: 2d05074fbaf8edb4c765ad65aabdcb0929ed60a6
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=2d05074fbaf8edb4c765ad65aabdcb0929ed60a6

Author: Juan Lang <juan.lang at 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");
 




More information about the wine-cvs mailing list