Juan Lang : wintrust: Implement WVTAsn1CatNameValueEncode.

Alexandre Julliard julliard at winehq.org
Sat Oct 18 13:38:57 CDT 2008


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

Author: Juan Lang <juan.lang at gmail.com>
Date:   Fri Oct 17 15:31:12 2008 -0700

wintrust: Implement WVTAsn1CatNameValueEncode.

---

 dlls/wintrust/asn.c       |   24 ++++++++++++++++++++++--
 dlls/wintrust/tests/asn.c |    4 ----
 2 files changed, 22 insertions(+), 6 deletions(-)

diff --git a/dlls/wintrust/asn.c b/dlls/wintrust/asn.c
index 9a1c1b8..b18539a 100644
--- a/dlls/wintrust/asn.c
+++ b/dlls/wintrust/asn.c
@@ -911,9 +911,29 @@ BOOL WINAPI WVTAsn1CatNameValueEncode(DWORD dwCertEncodingType,
  LPCSTR lpszStructType, const void *pvStructInfo, BYTE *pbEncoded,
  DWORD *pcbEncoded)
 {
-    FIXME("(0x%08x, %s, %p, %p, %p): stub\n", dwCertEncodingType,
+    BOOL ret = FALSE;
+
+    TRACE("(0x%08x, %s, %p, %p, %p)\n", dwCertEncodingType,
      debugstr_a(lpszStructType), pvStructInfo, pbEncoded, pcbEncoded);
-    return FALSE;
+
+    __TRY
+    {
+        const CAT_NAMEVALUE *value = (const CAT_NAMEVALUE *)pvStructInfo;
+        struct AsnEncodeSequenceItem items[] = {
+         { value->pwszTag,   CRYPT_AsnEncodeBMPString, 0 },
+         { &value->fdwFlags, CRYPT_AsnEncodeInt, 0 },
+         { &value->Value,    CRYPT_AsnEncodeOctets, 0 },
+        };
+
+        ret = CRYPT_AsnEncodeSequence(X509_ASN_ENCODING,
+         items, sizeof(items) / sizeof(items[0]), pbEncoded, pcbEncoded);
+    }
+    __EXCEPT_PAGE_FAULT
+    {
+        SetLastError(STATUS_ACCESS_VIOLATION);
+    }
+    __ENDTRY
+    return ret;
 }
 
 /* Gets the number of length bytes from the given (leading) length byte */
diff --git a/dlls/wintrust/tests/asn.c b/dlls/wintrust/tests/asn.c
index 4ef35ee..cb0e2b0 100644
--- a/dlls/wintrust/tests/asn.c
+++ b/dlls/wintrust/tests/asn.c
@@ -607,7 +607,6 @@ static void test_encodeCatNameValue(void)
     memset(&value, 0, sizeof(value));
     ret = pCryptEncodeObjectEx(X509_ASN_ENCODING, CAT_NAMEVALUE_STRUCT,
      (LPBYTE)&value, CRYPT_ENCODE_ALLOC_FLAG, NULL, &buf, &size);
-    todo_wine
     ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError());
     if (ret)
     {
@@ -619,7 +618,6 @@ static void test_encodeCatNameValue(void)
     value.pwszTag = foo;
     ret = pCryptEncodeObjectEx(X509_ASN_ENCODING, CAT_NAMEVALUE_STRUCT,
      (LPBYTE)&value, CRYPT_ENCODE_ALLOC_FLAG, NULL, &buf, &size);
-    todo_wine
     ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError());
     if (ret)
     {
@@ -632,7 +630,6 @@ static void test_encodeCatNameValue(void)
     value.fdwFlags = 0xf00dd00d;
     ret = pCryptEncodeObjectEx(X509_ASN_ENCODING, CAT_NAMEVALUE_STRUCT,
      (LPBYTE)&value, CRYPT_ENCODE_ALLOC_FLAG, NULL, &buf, &size);
-    todo_wine
     ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError());
     if (ret)
     {
@@ -646,7 +643,6 @@ static void test_encodeCatNameValue(void)
     value.Value.pbData = aVal;
     ret = pCryptEncodeObjectEx(X509_ASN_ENCODING, CAT_NAMEVALUE_STRUCT,
      (LPBYTE)&value, CRYPT_ENCODE_ALLOC_FLAG, NULL, &buf, &size);
-    todo_wine
     ok(ret, "CryptEncodeObjectEx failed: %08x\n", GetLastError());
     if (ret)
     {




More information about the wine-cvs mailing list