[ros-diffs] [cwittich] 44188: sync rsaenh with wine 1.1.33

cwittich at svn.reactos.org cwittich at svn.reactos.org
Mon Nov 16 00:28:15 CET 2009


Author: cwittich
Date: Mon Nov 16 00:28:15 2009
New Revision: 44188

URL: http://svn.reactos.org/svn/reactos?rev=44188&view=rev
Log:
sync rsaenh with wine 1.1.33

Modified:
    trunk/reactos/dll/win32/rsaenh/implglue.c

Modified: trunk/reactos/dll/win32/rsaenh/implglue.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/rsaenh/implglue.c?rev=44188&r1=44187&r2=44188&view=diff
==============================================================================
--- trunk/reactos/dll/win32/rsaenh/implglue.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/rsaenh/implglue.c [iso-8859-1] Mon Nov 16 00:28:15 2009
@@ -361,7 +361,10 @@
 BOOL export_public_key_impl(BYTE *pbDest, const KEY_CONTEXT *pKeyContext, DWORD dwKeyLen,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));
     *pdwPubExp = (DWORD)mp_get_int(&pKeyContext->rsa.e);
     return TRUE;
 }
@@ -396,25 +399,46 @@
                              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));
     *pdwPubExp = (DWORD)mp_get_int(&pKeyContext->rsa.e);
 
     return TRUE;




More information about the Ros-diffs mailing list