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