Juan Lang : crypt32: Encode public keys with NULL parameters if they' re empty (and make tests more restrictive).

Alexandre Julliard julliard at winehq.org
Wed Oct 21 13:13:59 CDT 2009


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

Author: Juan Lang <juan.lang at gmail.com>
Date:   Tue Oct 20 13:33:15 2009 -0700

crypt32: Encode public keys with NULL parameters if they're empty (and make tests more restrictive).

---

 dlls/crypt32/encode.c       |    2 +-
 dlls/crypt32/tests/encode.c |   13 ++++---------
 2 files changed, 5 insertions(+), 10 deletions(-)

diff --git a/dlls/crypt32/encode.c b/dlls/crypt32/encode.c
index 93c4a29..3cd2b1e 100644
--- a/dlls/crypt32/encode.c
+++ b/dlls/crypt32/encode.c
@@ -415,7 +415,7 @@ static BOOL WINAPI CRYPT_AsnEncodePubKeyInfo(DWORD dwCertEncodingType,
     {
         const CERT_PUBLIC_KEY_INFO *info = pvStructInfo;
         struct AsnEncodeSequenceItem items[] = {
-         { &info->Algorithm, CRYPT_AsnEncodeAlgorithmId, 0 },
+         { &info->Algorithm, CRYPT_AsnEncodeAlgorithmIdWithNullParams, 0 },
          { &info->PublicKey, CRYPT_AsnEncodeBits, 0 },
         };
 
diff --git a/dlls/crypt32/tests/encode.c b/dlls/crypt32/tests/encode.c
index 9babafd..1e93dfc 100644
--- a/dlls/crypt32/tests/encode.c
+++ b/dlls/crypt32/tests/encode.c
@@ -2613,8 +2613,8 @@ static void test_decodeExtensions(DWORD dwEncoding)
 
 /* MS encodes public key info with a NULL if the algorithm identifier's
  * parameters are empty.  However, when encoding an algorithm in a CERT_INFO,
- * it encodes them by omitting the algorithm parameters.  This latter approach
- * seems more correct, so accept either form.
+ * it encodes them by omitting the algorithm parameters.  It accepts either
+ * form for decoding.
  */
 struct encodedPublicKey
 {
@@ -2692,16 +2692,11 @@ static void test_encodePublicKeyInfo(DWORD dwEncoding)
          "CryptEncodeObjectEx failed: %08x\n", GetLastError());
         if (buf)
         {
-            ok(bufSize == pubKeys[i].encoded[1] + 2 ||
-             bufSize == pubKeys[i].encodedNoNull[1] + 2,
-             "Expected %d or %d bytes, got %d\n", pubKeys[i].encoded[1] + 2,
-             pubKeys[i].encodedNoNull[1] + 2, bufSize);
+            ok(bufSize == pubKeys[i].encoded[1] + 2,
+             "Expected %d bytes, got %d\n", pubKeys[i].encoded[1] + 2, bufSize);
             if (bufSize == pubKeys[i].encoded[1] + 2)
                 ok(!memcmp(buf, pubKeys[i].encoded, pubKeys[i].encoded[1] + 2),
                  "Unexpected value\n");
-            else if (bufSize == pubKeys[i].encodedNoNull[1] + 2)
-                ok(!memcmp(buf, pubKeys[i].encodedNoNull,
-                 pubKeys[i].encodedNoNull[1] + 2), "Unexpected value\n");
             LocalFree(buf);
         }
     }




More information about the wine-cvs mailing list