Juan Lang : crypt32:
Implement encoding OID and directory name alt name entries.
Alexandre Julliard
julliard at wine.codeweavers.com
Fri Aug 3 08:04:31 CDT 2007
Module: wine
Branch: master
Commit: 676c6e5a3648e65cb1afe7af7b6136f4b384c114
URL: http://source.winehq.org/git/wine.git/?a=commit;h=676c6e5a3648e65cb1afe7af7b6136f4b384c114
Author: Juan Lang <juan.lang at gmail.com>
Date: Thu Aug 2 09:48:22 2007 -0700
crypt32: Implement encoding OID and directory name alt name entries.
---
dlls/crypt32/encode.c | 22 +++++++++++++++++++---
1 files changed, 19 insertions(+), 3 deletions(-)
diff --git a/dlls/crypt32/encode.c b/dlls/crypt32/encode.c
index f01b322..729e3eb 100644
--- a/dlls/crypt32/encode.c
+++ b/dlls/crypt32/encode.c
@@ -1942,6 +1942,7 @@ static BOOL CRYPT_AsnEncodeAltNameEntry(const CERT_ALT_NAME_ENTRY *entry,
{
BOOL ret;
DWORD dataLen;
+ BYTE tag;
ret = TRUE;
switch (entry->dwAltNameChoice)
@@ -1949,6 +1950,7 @@ static BOOL CRYPT_AsnEncodeAltNameEntry(const CERT_ALT_NAME_ENTRY *entry,
case CERT_ALT_NAME_RFC822_NAME:
case CERT_ALT_NAME_DNS_NAME:
case CERT_ALT_NAME_URL:
+ tag = ASN_CONTEXT | (entry->dwAltNameChoice - 1);
if (entry->u.pwszURL)
{
DWORD i;
@@ -1968,13 +1970,24 @@ static BOOL CRYPT_AsnEncodeAltNameEntry(const CERT_ALT_NAME_ENTRY *entry,
else
dataLen = 0;
break;
+ case CERT_ALT_NAME_DIRECTORY_NAME:
+ tag = ASN_CONTEXT | ASN_CONSTRUCTOR | (entry->dwAltNameChoice - 1);
+ dataLen = entry->u.DirectoryName.cbData;
+ break;
case CERT_ALT_NAME_IP_ADDRESS:
+ tag = ASN_CONTEXT | (entry->dwAltNameChoice - 1);
dataLen = entry->u.IPAddress.cbData;
break;
case CERT_ALT_NAME_REGISTERED_ID:
- /* FIXME: encode OID */
+ {
+ struct AsnEncodeTagSwappedItem swapped =
+ { ASN_CONTEXT | (entry->dwAltNameChoice - 1), entry->u.pszRegisteredID,
+ CRYPT_AsnEncodeOid };
+
+ return CRYPT_AsnEncodeSwapTag(0, NULL, &swapped, 0, NULL, pbEncoded,
+ pcbEncoded);
+ }
case CERT_ALT_NAME_OTHER_NAME:
- case CERT_ALT_NAME_DIRECTORY_NAME:
FIXME("name type %d unimplemented\n", entry->dwAltNameChoice);
return FALSE;
default:
@@ -1997,7 +2010,7 @@ static BOOL CRYPT_AsnEncodeAltNameEntry(const CERT_ALT_NAME_ENTRY *entry,
}
else
{
- *pbEncoded++ = ASN_CONTEXT | (entry->dwAltNameChoice - 1);
+ *pbEncoded++ = tag;
CRYPT_EncodeLen(dataLen, pbEncoded, &lenBytes);
pbEncoded += lenBytes;
switch (entry->dwAltNameChoice)
@@ -2012,6 +2025,9 @@ static BOOL CRYPT_AsnEncodeAltNameEntry(const CERT_ALT_NAME_ENTRY *entry,
*pbEncoded++ = (BYTE)entry->u.pwszURL[i];
break;
}
+ case CERT_ALT_NAME_DIRECTORY_NAME:
+ memcpy(pbEncoded, entry->u.DirectoryName.pbData, dataLen);
+ break;
case CERT_ALT_NAME_IP_ADDRESS:
memcpy(pbEncoded, entry->u.IPAddress.pbData, dataLen);
break;
More information about the wine-cvs
mailing list