crypt32: Use nameless union/structs.
This commit is contained in:
parent
420a7d0604
commit
febb06ce77
9 changed files with 221 additions and 229 deletions
|
@ -20,7 +20,6 @@
|
|||
#include <assert.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
#define NONAMELESSUNION
|
||||
#include "ntstatus.h"
|
||||
#define WIN32_NO_STATUS
|
||||
#include "windef.h"
|
||||
|
@ -1403,9 +1402,9 @@ DWORD WINAPI CertGetPublicKeyLength(DWORD dwCertEncodingType,
|
|||
{
|
||||
HCRYPTKEY key;
|
||||
|
||||
TRACE("public key algid %#x (%s)\n", info->u.Algid, debugstr_a(pPublicKey->Algorithm.pszObjId));
|
||||
TRACE("public key algid %#x (%s)\n", info->Algid, debugstr_a(pPublicKey->Algorithm.pszObjId));
|
||||
|
||||
ret = CryptImportPublicKeyInfo(I_CryptGetDefaultCryptProv(info->u.Algid), dwCertEncodingType, pPublicKey, &key);
|
||||
ret = CryptImportPublicKeyInfo(I_CryptGetDefaultCryptProv(info->Algid), dwCertEncodingType, pPublicKey, &key);
|
||||
if (ret)
|
||||
{
|
||||
size = sizeof(len);
|
||||
|
@ -1538,14 +1537,14 @@ static BOOL compare_cert_by_cert_id(PCCERT_CONTEXT pCertContext, DWORD dwType,
|
|||
{
|
||||
case CERT_ID_ISSUER_SERIAL_NUMBER:
|
||||
ret = CertCompareCertificateName(pCertContext->dwCertEncodingType,
|
||||
&pCertContext->pCertInfo->Issuer, &id->u.IssuerSerialNumber.Issuer);
|
||||
&pCertContext->pCertInfo->Issuer, &id->IssuerSerialNumber.Issuer);
|
||||
if (ret)
|
||||
ret = CertCompareIntegerBlob(&pCertContext->pCertInfo->SerialNumber,
|
||||
&id->u.IssuerSerialNumber.SerialNumber);
|
||||
&id->IssuerSerialNumber.SerialNumber);
|
||||
break;
|
||||
case CERT_ID_SHA1_HASH:
|
||||
ret = compare_cert_by_sha1_hash(pCertContext, dwType, dwFlags,
|
||||
&id->u.HashId);
|
||||
&id->HashId);
|
||||
break;
|
||||
case CERT_ID_KEY_IDENTIFIER:
|
||||
{
|
||||
|
@ -1553,7 +1552,7 @@ static BOOL compare_cert_by_cert_id(PCCERT_CONTEXT pCertContext, DWORD dwType,
|
|||
|
||||
ret = CertGetCertificateContextProperty(pCertContext,
|
||||
CERT_KEY_IDENTIFIER_PROP_ID, NULL, &size);
|
||||
if (ret && size == id->u.KeyId.cbData)
|
||||
if (ret && size == id->KeyId.cbData)
|
||||
{
|
||||
LPBYTE buf = CryptMemAlloc(size);
|
||||
|
||||
|
@ -1561,7 +1560,7 @@ static BOOL compare_cert_by_cert_id(PCCERT_CONTEXT pCertContext, DWORD dwType,
|
|||
{
|
||||
CertGetCertificateContextProperty(pCertContext,
|
||||
CERT_KEY_IDENTIFIER_PROP_ID, buf, &size);
|
||||
ret = !memcmp(buf, id->u.KeyId.pbData, size);
|
||||
ret = !memcmp(buf, id->KeyId.pbData, size);
|
||||
CryptMemFree(buf);
|
||||
}
|
||||
else
|
||||
|
@ -1663,15 +1662,15 @@ static PCCERT_CONTEXT find_cert_by_issuer(HCERTSTORE store, DWORD dwType,
|
|||
if (info->CertIssuer.cbData && info->CertSerialNumber.cbData)
|
||||
{
|
||||
id.dwIdChoice = CERT_ID_ISSUER_SERIAL_NUMBER;
|
||||
memcpy(&id.u.IssuerSerialNumber.Issuer, &info->CertIssuer,
|
||||
memcpy(&id.IssuerSerialNumber.Issuer, &info->CertIssuer,
|
||||
sizeof(CERT_NAME_BLOB));
|
||||
memcpy(&id.u.IssuerSerialNumber.SerialNumber,
|
||||
memcpy(&id.IssuerSerialNumber.SerialNumber,
|
||||
&info->CertSerialNumber, sizeof(CRYPT_INTEGER_BLOB));
|
||||
}
|
||||
else if (info->KeyId.cbData)
|
||||
{
|
||||
id.dwIdChoice = CERT_ID_KEY_IDENTIFIER;
|
||||
memcpy(&id.u.KeyId, &info->KeyId, sizeof(CRYPT_HASH_BLOB));
|
||||
memcpy(&id.KeyId, &info->KeyId, sizeof(CRYPT_HASH_BLOB));
|
||||
}
|
||||
else
|
||||
ret = FALSE;
|
||||
|
@ -1709,9 +1708,9 @@ static PCCERT_CONTEXT find_cert_by_issuer(HCERTSTORE store, DWORD dwType,
|
|||
if (directoryName)
|
||||
{
|
||||
id.dwIdChoice = CERT_ID_ISSUER_SERIAL_NUMBER;
|
||||
memcpy(&id.u.IssuerSerialNumber.Issuer,
|
||||
&directoryName->u.DirectoryName, sizeof(CERT_NAME_BLOB));
|
||||
memcpy(&id.u.IssuerSerialNumber.SerialNumber,
|
||||
memcpy(&id.IssuerSerialNumber.Issuer,
|
||||
&directoryName->DirectoryName, sizeof(CERT_NAME_BLOB));
|
||||
memcpy(&id.IssuerSerialNumber.SerialNumber,
|
||||
&info->AuthorityCertSerialNumber,
|
||||
sizeof(CRYPT_INTEGER_BLOB));
|
||||
}
|
||||
|
@ -1724,7 +1723,7 @@ static PCCERT_CONTEXT find_cert_by_issuer(HCERTSTORE store, DWORD dwType,
|
|||
else if (info->KeyId.cbData)
|
||||
{
|
||||
id.dwIdChoice = CERT_ID_KEY_IDENTIFIER;
|
||||
memcpy(&id.u.KeyId, &info->KeyId, sizeof(CRYPT_HASH_BLOB));
|
||||
memcpy(&id.KeyId, &info->KeyId, sizeof(CRYPT_HASH_BLOB));
|
||||
}
|
||||
else
|
||||
ret = FALSE;
|
||||
|
@ -1863,7 +1862,7 @@ PCCERT_CONTEXT WINAPI CertFindCertificateInStore(HCERTSTORE hCertStore,
|
|||
break;
|
||||
case CERT_COMPARE_KEY_IDENTIFIER:
|
||||
cert_id.dwIdChoice = CERT_ID_KEY_IDENTIFIER;
|
||||
cert_id.u.KeyId = *(const CRYPT_HASH_BLOB *)pvPara;
|
||||
cert_id.KeyId = *(const CRYPT_HASH_BLOB *)pvPara;
|
||||
pvPara = &cert_id;
|
||||
/* fall through */
|
||||
case CERT_COMPARE_CERT_ID:
|
||||
|
@ -2406,7 +2405,7 @@ BOOL WINAPI CryptHashToBeSigned(HCRYPTPROV_LEGACY hCryptProv,
|
|||
}
|
||||
else
|
||||
{
|
||||
ret = CryptCreateHash(hCryptProv, oidInfo->u.Algid, 0, 0, &hHash);
|
||||
ret = CryptCreateHash(hCryptProv, oidInfo->Algid, 0, 0, &hHash);
|
||||
if (ret)
|
||||
{
|
||||
ret = CryptHashData(hHash, info->ToBeSigned.pbData,
|
||||
|
@ -2446,7 +2445,7 @@ BOOL WINAPI CryptSignCertificate(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProv,
|
|||
{
|
||||
if (!hCryptProv)
|
||||
hCryptProv = I_CryptGetDefaultCryptProv(0);
|
||||
ret = CryptCreateHash(hCryptProv, info->u.Algid, 0, 0, &hHash);
|
||||
ret = CryptCreateHash(hCryptProv, info->Algid, 0, 0, &hHash);
|
||||
if (ret)
|
||||
{
|
||||
ret = CryptHashData(hHash, pbEncodedToBeSigned,
|
||||
|
@ -2466,7 +2465,7 @@ BOOL WINAPI CryptSignCertificate(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProv,
|
|||
}
|
||||
else
|
||||
{
|
||||
ret = CryptCreateHash(hCryptProv, info->u.Algid, 0, 0, &hHash);
|
||||
ret = CryptCreateHash(hCryptProv, info->Algid, 0, 0, &hHash);
|
||||
if (ret)
|
||||
{
|
||||
ret = CryptHashData(hHash, pbEncodedToBeSigned,
|
||||
|
@ -2562,7 +2561,7 @@ static BOOL CRYPT_VerifySignature(HCRYPTPROV_LEGACY hCryptProv, DWORD dwCertEnco
|
|||
HCRYPTKEY key;
|
||||
ALG_ID pubKeyID, hashID;
|
||||
|
||||
hashID = info->u.Algid;
|
||||
hashID = info->Algid;
|
||||
if (info->ExtraInfo.cbData >= sizeof(ALG_ID))
|
||||
pubKeyID = *(ALG_ID *)info->ExtraInfo.pbData;
|
||||
else
|
||||
|
@ -2896,7 +2895,7 @@ static BOOL CRYPT_VerifyCertSignatureFromPublicKeyInfo(HCRYPTPROV_LEGACY hCryptP
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
if (info->u.Algid == CALG_OID_INFO_CNG_ONLY)
|
||||
if (info->Algid == CALG_OID_INFO_CNG_ONLY)
|
||||
return CNG_VerifySignature(hCryptProv, dwCertEncodingType, pubKeyInfo, signedCert, info);
|
||||
else
|
||||
return CRYPT_VerifySignature(hCryptProv, dwCertEncodingType, pubKeyInfo, signedCert, info);
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
#include <stdarg.h>
|
||||
#include <wchar.h>
|
||||
#define NONAMELESSUNION
|
||||
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
#include "winnls.h"
|
||||
|
@ -292,7 +292,7 @@ DWORD CRYPT_IsCertificateSelfSigned(const CERT_CONTEXT *cert)
|
|||
&info->AuthorityCertIssuer.rgAltEntry[i];
|
||||
if (directoryName)
|
||||
{
|
||||
if (CertCompareCertificateName(cert->dwCertEncodingType, &directoryName->u.DirectoryName, &cert->pCertInfo->Issuer)
|
||||
if (CertCompareCertificateName(cert->dwCertEncodingType, &directoryName->DirectoryName, &cert->pCertInfo->Issuer)
|
||||
&& CertCompareIntegerBlob(&info->AuthorityCertSerialNumber, &cert->pCertInfo->SerialNumber))
|
||||
status = CERT_TRUST_HAS_NAME_MATCH_ISSUER;
|
||||
}
|
||||
|
@ -891,24 +891,24 @@ static BOOL alt_name_matches(const CERT_ALT_NAME_ENTRY *name,
|
|||
switch (constraint->dwAltNameChoice)
|
||||
{
|
||||
case CERT_ALT_NAME_RFC822_NAME:
|
||||
match = rfc822_name_matches(constraint->u.pwszURL,
|
||||
name->u.pwszURL, trustErrorStatus);
|
||||
match = rfc822_name_matches(constraint->pwszURL,
|
||||
name->pwszURL, trustErrorStatus);
|
||||
break;
|
||||
case CERT_ALT_NAME_DNS_NAME:
|
||||
match = dns_name_matches(constraint->u.pwszURL,
|
||||
name->u.pwszURL, trustErrorStatus);
|
||||
match = dns_name_matches(constraint->pwszURL,
|
||||
name->pwszURL, trustErrorStatus);
|
||||
break;
|
||||
case CERT_ALT_NAME_URL:
|
||||
match = url_matches(constraint->u.pwszURL,
|
||||
name->u.pwszURL, trustErrorStatus);
|
||||
match = url_matches(constraint->pwszURL,
|
||||
name->pwszURL, trustErrorStatus);
|
||||
break;
|
||||
case CERT_ALT_NAME_IP_ADDRESS:
|
||||
match = ip_address_matches(&constraint->u.IPAddress,
|
||||
&name->u.IPAddress, trustErrorStatus);
|
||||
match = ip_address_matches(&constraint->IPAddress,
|
||||
&name->IPAddress, trustErrorStatus);
|
||||
break;
|
||||
case CERT_ALT_NAME_DIRECTORY_NAME:
|
||||
match = directory_name_matches(&constraint->u.DirectoryName,
|
||||
&name->u.DirectoryName);
|
||||
match = directory_name_matches(&constraint->DirectoryName,
|
||||
&name->DirectoryName);
|
||||
break;
|
||||
default:
|
||||
ERR("name choice %ld unsupported in this context\n",
|
||||
|
@ -1022,7 +1022,7 @@ static BOOL rfc822_attr_matches_excluded_name(const CERT_RDN_ATTR *attr,
|
|||
&nameConstraints->rgExcludedSubtree[i].Base;
|
||||
|
||||
if (constraint->dwAltNameChoice == CERT_ALT_NAME_RFC822_NAME)
|
||||
match = rfc822_name_matches(constraint->u.pwszRfc822Name,
|
||||
match = rfc822_name_matches(constraint->pwszRfc822Name,
|
||||
(LPCWSTR)attr->Value.pbData, trustErrorStatus);
|
||||
}
|
||||
return match;
|
||||
|
@ -1043,7 +1043,7 @@ static BOOL rfc822_attr_matches_permitted_name(const CERT_RDN_ATTR *attr,
|
|||
if (constraint->dwAltNameChoice == CERT_ALT_NAME_RFC822_NAME)
|
||||
{
|
||||
*present = TRUE;
|
||||
match = rfc822_name_matches(constraint->u.pwszRfc822Name,
|
||||
match = rfc822_name_matches(constraint->pwszRfc822Name,
|
||||
(LPCWSTR)attr->Value.pbData, trustErrorStatus);
|
||||
}
|
||||
}
|
||||
|
@ -1152,7 +1152,7 @@ static void compare_subject_with_constraints(const CERT_NAME_BLOB *subjectName,
|
|||
&nameConstraints->rgExcludedSubtree[i].Base;
|
||||
|
||||
if (constraint->dwAltNameChoice == CERT_ALT_NAME_DIRECTORY_NAME &&
|
||||
directory_name_matches(&constraint->u.DirectoryName, subjectName))
|
||||
directory_name_matches(&constraint->DirectoryName, subjectName))
|
||||
{
|
||||
TRACE_(chain)("subject name is excluded\n");
|
||||
*trustErrorStatus |=
|
||||
|
@ -1177,7 +1177,7 @@ static void compare_subject_with_constraints(const CERT_NAME_BLOB *subjectName,
|
|||
if (constraint->dwAltNameChoice == CERT_ALT_NAME_DIRECTORY_NAME)
|
||||
{
|
||||
hasDirectoryConstraint = TRUE;
|
||||
match = directory_name_matches(&constraint->u.DirectoryName,
|
||||
match = directory_name_matches(&constraint->DirectoryName,
|
||||
subjectName);
|
||||
}
|
||||
}
|
||||
|
@ -1427,31 +1427,31 @@ static void dump_alt_name_entry(const CERT_ALT_NAME_ENTRY *entry)
|
|||
{
|
||||
case CERT_ALT_NAME_OTHER_NAME:
|
||||
TRACE_(chain)("CERT_ALT_NAME_OTHER_NAME, oid = %s\n",
|
||||
debugstr_a(entry->u.pOtherName->pszObjId));
|
||||
debugstr_a(entry->pOtherName->pszObjId));
|
||||
break;
|
||||
case CERT_ALT_NAME_RFC822_NAME:
|
||||
TRACE_(chain)("CERT_ALT_NAME_RFC822_NAME: %s\n",
|
||||
debugstr_w(entry->u.pwszRfc822Name));
|
||||
debugstr_w(entry->pwszRfc822Name));
|
||||
break;
|
||||
case CERT_ALT_NAME_DNS_NAME:
|
||||
TRACE_(chain)("CERT_ALT_NAME_DNS_NAME: %s\n",
|
||||
debugstr_w(entry->u.pwszDNSName));
|
||||
debugstr_w(entry->pwszDNSName));
|
||||
break;
|
||||
case CERT_ALT_NAME_DIRECTORY_NAME:
|
||||
str = name_value_to_str(&entry->u.DirectoryName);
|
||||
str = name_value_to_str(&entry->DirectoryName);
|
||||
TRACE_(chain)("CERT_ALT_NAME_DIRECTORY_NAME: %s\n", debugstr_w(str));
|
||||
CryptMemFree(str);
|
||||
break;
|
||||
case CERT_ALT_NAME_URL:
|
||||
TRACE_(chain)("CERT_ALT_NAME_URL: %s\n", debugstr_w(entry->u.pwszURL));
|
||||
TRACE_(chain)("CERT_ALT_NAME_URL: %s\n", debugstr_w(entry->pwszURL));
|
||||
break;
|
||||
case CERT_ALT_NAME_IP_ADDRESS:
|
||||
TRACE_(chain)("CERT_ALT_NAME_IP_ADDRESS: %ld bytes\n",
|
||||
entry->u.IPAddress.cbData);
|
||||
entry->IPAddress.cbData);
|
||||
break;
|
||||
case CERT_ALT_NAME_REGISTERED_ID:
|
||||
TRACE_(chain)("CERT_ALT_NAME_REGISTERED_ID: %s\n",
|
||||
debugstr_a(entry->u.pszRegisteredID));
|
||||
debugstr_a(entry->pszRegisteredID));
|
||||
break;
|
||||
default:
|
||||
TRACE_(chain)("dwAltNameChoice = %ld\n", entry->dwAltNameChoice);
|
||||
|
@ -2075,9 +2075,9 @@ static PCCERT_CONTEXT CRYPT_GetIssuer(const CertificateChainEngine *engine,
|
|||
if (info->CertIssuer.cbData && info->CertSerialNumber.cbData)
|
||||
{
|
||||
id.dwIdChoice = CERT_ID_ISSUER_SERIAL_NUMBER;
|
||||
memcpy(&id.u.IssuerSerialNumber.Issuer, &info->CertIssuer,
|
||||
memcpy(&id.IssuerSerialNumber.Issuer, &info->CertIssuer,
|
||||
sizeof(CERT_NAME_BLOB));
|
||||
memcpy(&id.u.IssuerSerialNumber.SerialNumber,
|
||||
memcpy(&id.IssuerSerialNumber.SerialNumber,
|
||||
&info->CertSerialNumber, sizeof(CRYPT_INTEGER_BLOB));
|
||||
|
||||
issuer = CRYPT_FindIssuer(engine, subject, store, CERT_FIND_CERT_ID, &id, flags, prevIssuer);
|
||||
|
@ -2091,7 +2091,7 @@ static PCCERT_CONTEXT CRYPT_GetIssuer(const CertificateChainEngine *engine,
|
|||
{
|
||||
id.dwIdChoice = CERT_ID_KEY_IDENTIFIER;
|
||||
|
||||
memcpy(&id.u.KeyId, &info->KeyId, sizeof(CRYPT_HASH_BLOB));
|
||||
memcpy(&id.KeyId, &info->KeyId, sizeof(CRYPT_HASH_BLOB));
|
||||
issuer = CRYPT_FindIssuer(engine, subject, store, CERT_FIND_CERT_ID, &id, flags, prevIssuer);
|
||||
if (issuer)
|
||||
{
|
||||
|
@ -2131,9 +2131,9 @@ static PCCERT_CONTEXT CRYPT_GetIssuer(const CertificateChainEngine *engine,
|
|||
if (directoryName)
|
||||
{
|
||||
id.dwIdChoice = CERT_ID_ISSUER_SERIAL_NUMBER;
|
||||
memcpy(&id.u.IssuerSerialNumber.Issuer,
|
||||
&directoryName->u.DirectoryName, sizeof(CERT_NAME_BLOB));
|
||||
memcpy(&id.u.IssuerSerialNumber.SerialNumber,
|
||||
memcpy(&id.IssuerSerialNumber.Issuer,
|
||||
&directoryName->DirectoryName, sizeof(CERT_NAME_BLOB));
|
||||
memcpy(&id.IssuerSerialNumber.SerialNumber,
|
||||
&info->AuthorityCertSerialNumber,
|
||||
sizeof(CRYPT_INTEGER_BLOB));
|
||||
|
||||
|
@ -2150,7 +2150,7 @@ static PCCERT_CONTEXT CRYPT_GetIssuer(const CertificateChainEngine *engine,
|
|||
else if (info->KeyId.cbData)
|
||||
{
|
||||
id.dwIdChoice = CERT_ID_KEY_IDENTIFIER;
|
||||
memcpy(&id.u.KeyId, &info->KeyId, sizeof(CRYPT_HASH_BLOB));
|
||||
memcpy(&id.KeyId, &info->KeyId, sizeof(CRYPT_HASH_BLOB));
|
||||
issuer = CRYPT_FindIssuer(engine, subject, store, CERT_FIND_CERT_ID, &id, flags, prevIssuer);
|
||||
if (issuer)
|
||||
{
|
||||
|
@ -3175,8 +3175,8 @@ static BOOL match_dns_to_subject_alt_name(const CERT_EXTENSION *ext,
|
|||
CERT_ALT_NAME_DNS_NAME)
|
||||
{
|
||||
TRACE_(chain)("dNSName: %s\n", debugstr_w(
|
||||
subjectName->rgAltEntry[i].u.pwszDNSName));
|
||||
if (subjectName->rgAltEntry[i].u.pwszDNSName[0] == '*')
|
||||
subjectName->rgAltEntry[i].pwszDNSName));
|
||||
if (subjectName->rgAltEntry[i].pwszDNSName[0] == '*')
|
||||
{
|
||||
LPCWSTR server_name_dot;
|
||||
|
||||
|
@ -3196,12 +3196,12 @@ static BOOL match_dns_to_subject_alt_name(const CERT_EXTENSION *ext,
|
|||
if (server_name_dot)
|
||||
{
|
||||
if (!wcsicmp(server_name_dot,
|
||||
subjectName->rgAltEntry[i].u.pwszDNSName + 1))
|
||||
subjectName->rgAltEntry[i].pwszDNSName + 1))
|
||||
matches = TRUE;
|
||||
}
|
||||
}
|
||||
else if (!wcsicmp(server_name,
|
||||
subjectName->rgAltEntry[i].u.pwszDNSName))
|
||||
subjectName->rgAltEntry[i].pwszDNSName))
|
||||
matches = TRUE;
|
||||
}
|
||||
}
|
||||
|
@ -3439,7 +3439,7 @@ static void dump_ssl_extra_chain_policy_para(HTTPSPolicyCallbackData *sslPara)
|
|||
{
|
||||
if (sslPara)
|
||||
{
|
||||
TRACE_(chain)("cbSize = %ld\n", sslPara->u.cbSize);
|
||||
TRACE_(chain)("cbSize = %ld\n", sslPara->cbSize);
|
||||
TRACE_(chain)("dwAuthType = %ld\n", sslPara->dwAuthType);
|
||||
TRACE_(chain)("fdwChecks = %08lx\n", sslPara->fdwChecks);
|
||||
TRACE_(chain)("pwszServerName = %s\n",
|
||||
|
@ -3461,7 +3461,7 @@ static BOOL WINAPI verify_ssl_policy(LPCSTR szPolicyOID,
|
|||
}
|
||||
if (TRACE_ON(chain))
|
||||
dump_ssl_extra_chain_policy_para(sslPara);
|
||||
if (sslPara && sslPara->u.cbSize >= sizeof(HTTPSPolicyCallbackData))
|
||||
if (sslPara && sslPara->cbSize >= sizeof(HTTPSPolicyCallbackData))
|
||||
checks = sslPara->fdwChecks;
|
||||
pPolicyStatus->lChainIndex = pPolicyStatus->lElementIndex = -1;
|
||||
if (pChainContext->TrustStatus.dwErrorStatus &
|
||||
|
@ -3543,7 +3543,7 @@ static BOOL WINAPI verify_ssl_policy(LPCSTR szPolicyOID,
|
|||
if (!pPolicyStatus->dwError && pPolicyPara &&
|
||||
pPolicyPara->cbSize >= sizeof(CERT_CHAIN_POLICY_PARA))
|
||||
{
|
||||
if (sslPara && sslPara->u.cbSize >= sizeof(HTTPSPolicyCallbackData))
|
||||
if (sslPara && sslPara->cbSize >= sizeof(HTTPSPolicyCallbackData))
|
||||
{
|
||||
if (sslPara->dwAuthType == AUTHTYPE_SERVER &&
|
||||
sslPara->pwszServerName &&
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
#include <assert.h>
|
||||
#include <stdarg.h>
|
||||
#define NONAMELESSUNION
|
||||
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
#include "wincrypt.h"
|
||||
|
@ -299,7 +299,7 @@ static BOOL compare_crl_issued_by(PCCRL_CONTEXT pCrlContext, DWORD dwType,
|
|||
ret = CertCompareCertificateName(
|
||||
issuer->dwCertEncodingType,
|
||||
&issuer->pCertInfo->Subject,
|
||||
&directoryName->u.DirectoryName);
|
||||
&directoryName->DirectoryName);
|
||||
if (ret)
|
||||
ret = CertCompareIntegerBlob(
|
||||
&issuer->pCertInfo->SerialNumber,
|
||||
|
@ -692,31 +692,31 @@ static BOOL compare_dist_point_name(const CRL_DIST_POINT_NAME *name1,
|
|||
match = TRUE;
|
||||
if (name1->dwDistPointNameChoice == CRL_DIST_POINT_FULL_NAME)
|
||||
{
|
||||
if (name1->u.FullName.cAltEntry == name2->u.FullName.cAltEntry)
|
||||
if (name1->FullName.cAltEntry == name2->FullName.cAltEntry)
|
||||
{
|
||||
DWORD i;
|
||||
|
||||
for (i = 0; match && i < name1->u.FullName.cAltEntry; i++)
|
||||
for (i = 0; match && i < name1->FullName.cAltEntry; i++)
|
||||
{
|
||||
const CERT_ALT_NAME_ENTRY *entry1 =
|
||||
&name1->u.FullName.rgAltEntry[i];
|
||||
&name1->FullName.rgAltEntry[i];
|
||||
const CERT_ALT_NAME_ENTRY *entry2 =
|
||||
&name2->u.FullName.rgAltEntry[i];
|
||||
&name2->FullName.rgAltEntry[i];
|
||||
|
||||
if (entry1->dwAltNameChoice == entry2->dwAltNameChoice)
|
||||
{
|
||||
switch (entry1->dwAltNameChoice)
|
||||
{
|
||||
case CERT_ALT_NAME_URL:
|
||||
match = !wcsicmp(entry1->u.pwszURL,
|
||||
entry2->u.pwszURL);
|
||||
match = !wcsicmp(entry1->pwszURL,
|
||||
entry2->pwszURL);
|
||||
break;
|
||||
case CERT_ALT_NAME_DIRECTORY_NAME:
|
||||
match = (entry1->u.DirectoryName.cbData ==
|
||||
entry2->u.DirectoryName.cbData) &&
|
||||
!memcmp(entry1->u.DirectoryName.pbData,
|
||||
entry2->u.DirectoryName.pbData,
|
||||
entry1->u.DirectoryName.cbData);
|
||||
match = (entry1->DirectoryName.cbData ==
|
||||
entry2->DirectoryName.cbData) &&
|
||||
!memcmp(entry1->DirectoryName.pbData,
|
||||
entry2->DirectoryName.pbData,
|
||||
entry1->DirectoryName.cbData);
|
||||
break;
|
||||
default:
|
||||
FIXME("unimplemented for type %ld\n",
|
||||
|
|
|
@ -35,8 +35,6 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#define NONAMELESSUNION
|
||||
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
#include "wincrypt.h"
|
||||
|
@ -3084,11 +3082,10 @@ static BOOL CRYPT_AsnDecodeAltNameEntry(const BYTE *pbEncoded, DWORD cbEncoded,
|
|||
DWORD i;
|
||||
|
||||
for (i = 0; i < dataLen; i++)
|
||||
entry->u.pwszURL[i] =
|
||||
(WCHAR)pbEncoded[1 + lenBytes + i];
|
||||
entry->u.pwszURL[i] = 0;
|
||||
TRACE("URL is %p (%s)\n", entry->u.pwszURL,
|
||||
debugstr_w(entry->u.pwszURL));
|
||||
entry->pwszURL[i] = (WCHAR)pbEncoded[1 + lenBytes + i];
|
||||
entry->pwszURL[i] = 0;
|
||||
TRACE("URL is %p (%s)\n", entry->pwszURL,
|
||||
debugstr_w(entry->pwszURL));
|
||||
break;
|
||||
}
|
||||
case 4: /* directoryName */
|
||||
|
@ -3099,14 +3096,14 @@ static BOOL CRYPT_AsnDecodeAltNameEntry(const BYTE *pbEncoded, DWORD cbEncoded,
|
|||
/* The next data pointer is in the pwszURL spot, that is,
|
||||
* the first 4 bytes. Need to move it to the next spot.
|
||||
*/
|
||||
entry->u.IPAddress.pbData = (LPBYTE)entry->u.pwszURL;
|
||||
entry->u.IPAddress.cbData = dataLen;
|
||||
memcpy(entry->u.IPAddress.pbData, pbEncoded + 1 + lenBytes,
|
||||
entry->IPAddress.pbData = (LPBYTE)entry->pwszURL;
|
||||
entry->IPAddress.cbData = dataLen;
|
||||
memcpy(entry->IPAddress.pbData, pbEncoded + 1 + lenBytes,
|
||||
dataLen);
|
||||
break;
|
||||
case 8: /* registeredID */
|
||||
ret = CRYPT_AsnDecodeOidIgnoreTag(pbEncoded, cbEncoded, 0,
|
||||
&entry->u.pszRegisteredID, &dataLen, NULL);
|
||||
&entry->pszRegisteredID, &dataLen, NULL);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -3125,7 +3122,7 @@ static BOOL CRYPT_AsnDecodeAltNameInternal(const BYTE *pbEncoded,
|
|||
offsetof(CERT_ALT_NAME_INFO, rgAltEntry),
|
||||
sizeof(CERT_ALT_NAME_INFO),
|
||||
CRYPT_AsnDecodeAltNameEntry, sizeof(CERT_ALT_NAME_ENTRY), TRUE,
|
||||
offsetof(CERT_ALT_NAME_ENTRY, u.pwszURL) };
|
||||
offsetof(CERT_ALT_NAME_ENTRY, pwszURL) };
|
||||
|
||||
TRACE("%p, %ld, %08lx, %p, %ld, %p\n", pbEncoded, cbEncoded, dwFlags,
|
||||
pvStructInfo, *pcbStructInfo, pcbDecoded);
|
||||
|
@ -3217,7 +3214,7 @@ static BOOL CRYPT_AsnDecodeAccessDescription(const BYTE *pbEncoded,
|
|||
offsetof(CERT_ACCESS_DESCRIPTION, pszAccessMethod), 0 },
|
||||
{ 0, offsetof(CERT_ACCESS_DESCRIPTION, AccessLocation),
|
||||
CRYPT_AsnDecodeAltNameEntry, sizeof(CERT_ALT_NAME_ENTRY), FALSE,
|
||||
TRUE, offsetof(CERT_ACCESS_DESCRIPTION, AccessLocation.u.pwszURL), 0 },
|
||||
TRUE, offsetof(CERT_ACCESS_DESCRIPTION, AccessLocation.pwszURL), 0 },
|
||||
};
|
||||
CERT_ACCESS_DESCRIPTION *descr = pvStructInfo;
|
||||
|
||||
|
@ -5268,11 +5265,11 @@ static BOOL CRYPT_AsnDecodeDistPointName(const BYTE *pbEncoded,
|
|||
{
|
||||
struct AsnArrayDescriptor arrayDesc = {
|
||||
ASN_CONTEXT | ASN_CONSTRUCTOR | 0,
|
||||
offsetof(CRL_DIST_POINT_NAME, u.FullName.cAltEntry),
|
||||
offsetof(CRL_DIST_POINT_NAME, u.FullName.rgAltEntry),
|
||||
FINALMEMBERSIZE(CRL_DIST_POINT_NAME, u),
|
||||
offsetof(CRL_DIST_POINT_NAME, FullName.cAltEntry),
|
||||
offsetof(CRL_DIST_POINT_NAME, FullName.rgAltEntry),
|
||||
FINALMEMBERSIZE(CRL_DIST_POINT_NAME, FullName),
|
||||
CRYPT_AsnDecodeAltNameEntry, sizeof(CERT_ALT_NAME_ENTRY), TRUE,
|
||||
offsetof(CERT_ALT_NAME_ENTRY, u.pwszURL) };
|
||||
offsetof(CERT_ALT_NAME_ENTRY, pwszURL) };
|
||||
BYTE lenBytes = GET_LEN_BYTES(pbEncoded[1]);
|
||||
DWORD nameLen;
|
||||
|
||||
|
@ -5282,7 +5279,7 @@ static BOOL CRYPT_AsnDecodeDistPointName(const BYTE *pbEncoded,
|
|||
pbEncoded + 1 + lenBytes, cbEncoded - 1 - lenBytes,
|
||||
dwFlags, NULL, NULL, &nameLen, NULL);
|
||||
bytesNeeded = sizeof(CRL_DIST_POINT_NAME) + nameLen -
|
||||
FINALMEMBERSIZE(CRL_DIST_POINT_NAME, u);
|
||||
FINALMEMBERSIZE(CRL_DIST_POINT_NAME, FullName);
|
||||
}
|
||||
else
|
||||
bytesNeeded = sizeof(CRL_DIST_POINT_NAME);
|
||||
|
@ -5306,7 +5303,7 @@ static BOOL CRYPT_AsnDecodeDistPointName(const BYTE *pbEncoded,
|
|||
name->dwDistPointNameChoice = CRL_DIST_POINT_FULL_NAME;
|
||||
ret = CRYPT_AsnDecodeArray(&arrayDesc,
|
||||
pbEncoded + 1 + lenBytes, cbEncoded - 1 - lenBytes,
|
||||
dwFlags, NULL, &name->u.FullName.cAltEntry, &nameLen,
|
||||
dwFlags, NULL, &name->FullName.cAltEntry, &nameLen,
|
||||
NULL);
|
||||
}
|
||||
else
|
||||
|
@ -5329,7 +5326,7 @@ static BOOL CRYPT_AsnDecodeDistPoint(const BYTE *pbEncoded, DWORD cbEncoded,
|
|||
{ ASN_CONTEXT | ASN_CONSTRUCTOR | 0, offsetof(CRL_DIST_POINT,
|
||||
DistPointName), CRYPT_AsnDecodeDistPointName,
|
||||
sizeof(CRL_DIST_POINT_NAME), TRUE, TRUE, offsetof(CRL_DIST_POINT,
|
||||
DistPointName.u.FullName.rgAltEntry), 0 },
|
||||
DistPointName.FullName.rgAltEntry), 0 },
|
||||
{ ASN_CONTEXT | 1, offsetof(CRL_DIST_POINT, ReasonFlags),
|
||||
CRYPT_AsnDecodeBitsInternal, sizeof(CRYPT_BIT_BLOB), TRUE, TRUE,
|
||||
offsetof(CRL_DIST_POINT, ReasonFlags.pbData), 0 },
|
||||
|
@ -5342,7 +5339,7 @@ static BOOL CRYPT_AsnDecodeDistPoint(const BYTE *pbEncoded, DWORD cbEncoded,
|
|||
|
||||
ret = CRYPT_AsnDecodeSequence(items, ARRAY_SIZE(items),
|
||||
pbEncoded, cbEncoded, dwFlags, NULL, pvStructInfo, pcbStructInfo,
|
||||
pcbDecoded, point ? point->DistPointName.u.FullName.rgAltEntry : NULL);
|
||||
pcbDecoded, point ? point->DistPointName.FullName.rgAltEntry : NULL);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -5362,7 +5359,7 @@ static BOOL WINAPI CRYPT_AsnDecodeCRLDistPoints(DWORD dwCertEncodingType,
|
|||
offsetof(CRL_DIST_POINTS_INFO, rgDistPoint),
|
||||
sizeof(CRL_DIST_POINTS_INFO),
|
||||
CRYPT_AsnDecodeDistPoint, sizeof(CRL_DIST_POINT), TRUE,
|
||||
offsetof(CRL_DIST_POINT, DistPointName.u.FullName.rgAltEntry) };
|
||||
offsetof(CRL_DIST_POINT, DistPointName.FullName.rgAltEntry) };
|
||||
CRL_DIST_POINTS_INFO *info = pvStructInfo;
|
||||
|
||||
if (pvStructInfo && !(dwFlags & CRYPT_DECODE_ALLOC_FLAG))
|
||||
|
@ -5427,7 +5424,7 @@ static BOOL WINAPI CRYPT_AsnDecodeIssuingDistPoint(DWORD dwCertEncodingType,
|
|||
DistPointName), CRYPT_AsnDecodeDistPointName,
|
||||
sizeof(CRL_DIST_POINT_NAME), TRUE, TRUE,
|
||||
offsetof(CRL_ISSUING_DIST_POINT,
|
||||
DistPointName.u.FullName.rgAltEntry), 0 },
|
||||
DistPointName.FullName.rgAltEntry), 0 },
|
||||
{ ASN_CONTEXT | 1, offsetof(CRL_ISSUING_DIST_POINT,
|
||||
fOnlyContainsUserCerts), CRYPT_AsnDecodeBool, sizeof(BOOL), TRUE,
|
||||
FALSE, 0 },
|
||||
|
@ -5513,7 +5510,7 @@ static BOOL CRYPT_AsnDecodeSubtree(const BYTE *pbEncoded,
|
|||
struct AsnDecodeSequenceItem items[] = {
|
||||
{ 0, offsetof(CERT_GENERAL_SUBTREE, Base),
|
||||
CRYPT_AsnDecodeAltNameEntry, sizeof(CERT_ALT_NAME_ENTRY), TRUE, TRUE,
|
||||
offsetof(CERT_ALT_NAME_ENTRY, u.pwszURL), 0 },
|
||||
offsetof(CERT_ALT_NAME_ENTRY, pwszURL), 0 },
|
||||
{ ASN_CONTEXT | 0, offsetof(CERT_GENERAL_SUBTREE, dwMinimum),
|
||||
CRYPT_AsnDecodeIntInternal, sizeof(DWORD), TRUE, FALSE, 0, 0 },
|
||||
{ ASN_CONTEXT | 1, offsetof(CERT_GENERAL_SUBTREE, fMaximum),
|
||||
|
@ -5527,7 +5524,7 @@ static BOOL CRYPT_AsnDecodeSubtree(const BYTE *pbEncoded,
|
|||
|
||||
ret = CRYPT_AsnDecodeSequence(items, ARRAY_SIZE(items),
|
||||
pbEncoded, cbEncoded, dwFlags, NULL, pvStructInfo, pcbStructInfo,
|
||||
pcbDecoded, subtree ? subtree->Base.u.pwszURL : NULL);
|
||||
pcbDecoded, subtree ? subtree->Base.pwszURL : NULL);
|
||||
if (pcbDecoded)
|
||||
{
|
||||
TRACE("%ld\n", *pcbDecoded);
|
||||
|
@ -5550,7 +5547,7 @@ static BOOL CRYPT_AsnDecodePermittedSubtree(const BYTE *pbEncoded,
|
|||
MEMBERSIZE(CERT_NAME_CONSTRAINTS_INFO, cPermittedSubtree,
|
||||
cExcludedSubtree),
|
||||
CRYPT_AsnDecodeSubtree, sizeof(CERT_GENERAL_SUBTREE), TRUE,
|
||||
offsetof(CERT_GENERAL_SUBTREE, Base.u.pwszURL) };
|
||||
offsetof(CERT_GENERAL_SUBTREE, Base.pwszURL) };
|
||||
|
||||
TRACE("%p, %ld, %08lx, %p, %ld, %p\n", pbEncoded, cbEncoded, dwFlags,
|
||||
pvStructInfo, *pcbStructInfo, pcbDecoded);
|
||||
|
@ -5570,7 +5567,7 @@ static BOOL CRYPT_AsnDecodeExcludedSubtree(const BYTE *pbEncoded,
|
|||
offsetof(CERT_NAME_CONSTRAINTS_INFO, rgExcludedSubtree),
|
||||
FINALMEMBERSIZE(CERT_NAME_CONSTRAINTS_INFO, cExcludedSubtree),
|
||||
CRYPT_AsnDecodeSubtree, sizeof(CERT_GENERAL_SUBTREE), TRUE,
|
||||
offsetof(CERT_GENERAL_SUBTREE, Base.u.pwszURL) };
|
||||
offsetof(CERT_GENERAL_SUBTREE, Base.pwszURL) };
|
||||
|
||||
TRACE("%p, %ld, %08lx, %p, %ld, %p\n", pbEncoded, cbEncoded, dwFlags,
|
||||
pvStructInfo, *pcbStructInfo, pcbDecoded);
|
||||
|
@ -5801,7 +5798,7 @@ static BOOL CRYPT_AsnDecodeCMSSignerId(const BYTE *pbEncoded,
|
|||
if (*pbEncoded == ASN_SEQUENCEOF)
|
||||
{
|
||||
ret = CRYPT_AsnDecodeIssuerSerialNumber(pbEncoded, cbEncoded, dwFlags,
|
||||
id ? &id->u.IssuerSerialNumber : NULL, pcbStructInfo, pcbDecoded);
|
||||
id ? &id->IssuerSerialNumber : NULL, pcbStructInfo, pcbDecoded);
|
||||
if (ret)
|
||||
{
|
||||
if (id)
|
||||
|
@ -5816,7 +5813,7 @@ static BOOL CRYPT_AsnDecodeCMSSignerId(const BYTE *pbEncoded,
|
|||
else if (*pbEncoded == (ASN_CONTEXT | 0))
|
||||
{
|
||||
ret = CRYPT_AsnDecodeOctets(pbEncoded, cbEncoded, dwFlags,
|
||||
id ? &id->u.KeyId : NULL, pcbStructInfo, pcbDecoded);
|
||||
id ? &id->KeyId : NULL, pcbStructInfo, pcbDecoded);
|
||||
if (ret)
|
||||
{
|
||||
if (id)
|
||||
|
@ -5843,7 +5840,7 @@ static BOOL CRYPT_AsnDecodeCMSSignerInfoInternal(const BYTE *pbEncoded,
|
|||
CRYPT_AsnDecodeIntInternal, sizeof(DWORD), FALSE, FALSE, 0, 0 },
|
||||
{ 0, offsetof(CMSG_CMS_SIGNER_INFO, SignerId),
|
||||
CRYPT_AsnDecodeCMSSignerId, sizeof(CERT_ID), FALSE, TRUE,
|
||||
offsetof(CMSG_CMS_SIGNER_INFO, SignerId.u.KeyId.pbData), 0 },
|
||||
offsetof(CMSG_CMS_SIGNER_INFO, SignerId.KeyId.pbData), 0 },
|
||||
{ ASN_SEQUENCEOF, offsetof(CMSG_CMS_SIGNER_INFO, HashAlgorithm),
|
||||
CRYPT_AsnDecodeAlgorithmId, sizeof(CRYPT_ALGORITHM_IDENTIFIER),
|
||||
FALSE, TRUE, offsetof(CMSG_CMS_SIGNER_INFO, HashAlgorithm.pszObjId), 0 },
|
||||
|
@ -5870,7 +5867,7 @@ static BOOL CRYPT_AsnDecodeCMSSignerInfoInternal(const BYTE *pbEncoded,
|
|||
|
||||
ret = CRYPT_AsnDecodeSequence(items, ARRAY_SIZE(items),
|
||||
pbEncoded, cbEncoded, dwFlags, NULL, pvStructInfo, pcbStructInfo,
|
||||
pcbDecoded, info ? info->SignerId.u.KeyId.pbData : NULL);
|
||||
pcbDecoded, info ? info->SignerId.KeyId.pbData : NULL);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -5898,7 +5895,7 @@ static BOOL WINAPI CRYPT_AsnDecodeCMSSignerInfo(DWORD dwCertEncodingType,
|
|||
if (dwFlags & CRYPT_DECODE_ALLOC_FLAG)
|
||||
pvStructInfo = *(BYTE **)pvStructInfo;
|
||||
info = pvStructInfo;
|
||||
info->SignerId.u.KeyId.pbData = ((BYTE *)info +
|
||||
info->SignerId.KeyId.pbData = ((BYTE *)info +
|
||||
sizeof(CMSG_CMS_SIGNER_INFO));
|
||||
ret = CRYPT_AsnDecodeCMSSignerInfoInternal(pbEncoded,
|
||||
cbEncoded, dwFlags & ~CRYPT_DECODE_ALLOC_FLAG, pvStructInfo,
|
||||
|
@ -5926,7 +5923,7 @@ static BOOL CRYPT_DecodeSignerArray(const BYTE *pbEncoded, DWORD cbEncoded,
|
|||
offsetof(CRYPT_SIGNED_INFO, rgSignerInfo),
|
||||
FINALMEMBERSIZE(CRYPT_SIGNED_INFO, cSignerInfo),
|
||||
CRYPT_AsnDecodeCMSSignerInfoInternal, sizeof(CMSG_CMS_SIGNER_INFO), TRUE,
|
||||
offsetof(CMSG_CMS_SIGNER_INFO, SignerId.u.KeyId.pbData) };
|
||||
offsetof(CMSG_CMS_SIGNER_INFO, SignerId.KeyId.pbData) };
|
||||
|
||||
TRACE("%p, %ld, %08lx, %p, %ld, %p\n", pbEncoded, cbEncoded, dwFlags,
|
||||
pvStructInfo, *pcbStructInfo, pcbDecoded);
|
||||
|
@ -5984,10 +5981,10 @@ static BOOL CRYPT_AsnDecodeRecipientInfo(const BYTE *pbEncoded, DWORD cbEncoded,
|
|||
{ ASN_INTEGER, offsetof(CMSG_KEY_TRANS_RECIPIENT_INFO, dwVersion),
|
||||
CRYPT_AsnDecodeIntInternal, sizeof(DWORD), FALSE, FALSE, 0, 0 },
|
||||
{ ASN_SEQUENCEOF, offsetof(CMSG_KEY_TRANS_RECIPIENT_INFO,
|
||||
RecipientId.u.IssuerSerialNumber), CRYPT_AsnDecodeIssuerSerialNumber,
|
||||
RecipientId.IssuerSerialNumber), CRYPT_AsnDecodeIssuerSerialNumber,
|
||||
sizeof(CERT_ISSUER_SERIAL_NUMBER), FALSE, TRUE,
|
||||
offsetof(CMSG_KEY_TRANS_RECIPIENT_INFO,
|
||||
RecipientId.u.IssuerSerialNumber.Issuer.pbData), 0 },
|
||||
RecipientId.IssuerSerialNumber.Issuer.pbData), 0 },
|
||||
{ ASN_SEQUENCEOF, offsetof(CMSG_KEY_TRANS_RECIPIENT_INFO,
|
||||
KeyEncryptionAlgorithm), CRYPT_AsnDecodeAlgorithmId,
|
||||
sizeof(CRYPT_ALGORITHM_IDENTIFIER), FALSE, TRUE,
|
||||
|
@ -6003,7 +6000,7 @@ static BOOL CRYPT_AsnDecodeRecipientInfo(const BYTE *pbEncoded, DWORD cbEncoded,
|
|||
|
||||
ret = CRYPT_AsnDecodeSequence(items, ARRAY_SIZE(items),
|
||||
pbEncoded, cbEncoded, dwFlags, NULL, pvStructInfo, pcbStructInfo,
|
||||
pcbDecoded, info ? info->RecipientId.u.IssuerSerialNumber.Issuer.pbData :
|
||||
pcbDecoded, info ? info->RecipientId.IssuerSerialNumber.Issuer.pbData :
|
||||
NULL);
|
||||
if (info)
|
||||
info->RecipientId.dwIdChoice = CERT_ID_ISSUER_SERIAL_NUMBER;
|
||||
|
@ -6022,7 +6019,7 @@ static BOOL CRYPT_DecodeRecipientInfoArray(const BYTE *pbEncoded,
|
|||
MEMBERSIZE(CRYPT_ENVELOPED_DATA, cRecipientInfo, encryptedContentInfo),
|
||||
CRYPT_AsnDecodeRecipientInfo, sizeof(CMSG_KEY_TRANS_RECIPIENT_INFO), TRUE,
|
||||
offsetof(CMSG_KEY_TRANS_RECIPIENT_INFO,
|
||||
RecipientId.u.IssuerSerialNumber.Issuer.pbData) };
|
||||
RecipientId.IssuerSerialNumber.Issuer.pbData) };
|
||||
|
||||
TRACE("%p, %ld, %08lx, %p, %ld, %p\n", pbEncoded, cbEncoded, dwFlags,
|
||||
pvStructInfo, *pcbStructInfo, pcbDecoded);
|
||||
|
@ -6407,7 +6404,7 @@ static BOOL CRYPT_AsnDecodeCertStatus(const BYTE *pbEncoded,
|
|||
{
|
||||
*(DWORD *)pvStructInfo = 0;
|
||||
*(OCSP_BASIC_REVOKED_INFO **)((char *)pvStructInfo
|
||||
+ FIELD_OFFSET(OCSP_BASIC_RESPONSE_ENTRY, u.pRevokedInfo)
|
||||
+ FIELD_OFFSET(OCSP_BASIC_RESPONSE_ENTRY, pRevokedInfo)
|
||||
- FIELD_OFFSET(OCSP_BASIC_RESPONSE_ENTRY, dwCertStatus)) = NULL;
|
||||
}
|
||||
*pcbStructInfo = bytesNeeded;
|
||||
|
@ -6452,7 +6449,7 @@ static BOOL CRYPT_AsnDecodeCertStatus(const BYTE *pbEncoded,
|
|||
{
|
||||
*(DWORD *)pvStructInfo = 1;
|
||||
info = *(OCSP_BASIC_REVOKED_INFO **)((char *)pvStructInfo
|
||||
+ FIELD_OFFSET(OCSP_BASIC_RESPONSE_ENTRY, u.pRevokedInfo)
|
||||
+ FIELD_OFFSET(OCSP_BASIC_RESPONSE_ENTRY, pRevokedInfo)
|
||||
- FIELD_OFFSET(OCSP_BASIC_RESPONSE_ENTRY, dwCertStatus));
|
||||
info->RevocationDate = date;
|
||||
}
|
||||
|
@ -6490,7 +6487,7 @@ static BOOL CRYPT_AsnDecodeOCSPBasicResponseEntry(const BYTE *pbEncoded, DWORD c
|
|||
offsetof(OCSP_BASIC_RESPONSE_ENTRY, CertId.SerialNumber.pbData), 0 },
|
||||
{ 0, offsetof(OCSP_BASIC_RESPONSE_ENTRY, dwCertStatus),
|
||||
CRYPT_AsnDecodeCertStatus, sizeof(DWORD), FALSE, TRUE,
|
||||
offsetof(OCSP_BASIC_RESPONSE_ENTRY, u.pRevokedInfo), 0 },
|
||||
offsetof(OCSP_BASIC_RESPONSE_ENTRY, pRevokedInfo), 0 },
|
||||
{ ASN_GENERALTIME, offsetof(OCSP_BASIC_RESPONSE_ENTRY, ThisUpdate),
|
||||
CRYPT_AsnDecodeGeneralizedTime, sizeof(FILETIME), FALSE, FALSE,
|
||||
0, 0 },
|
||||
|
@ -6562,7 +6559,7 @@ static BOOL CRYPT_AsnDecodeResponderIDByName(const BYTE *pbEncoded,
|
|||
{
|
||||
info->dwResponderIdChoice = 1;
|
||||
|
||||
blob = &info->u.ByNameResponderId;
|
||||
blob = &info->ByNameResponderId;
|
||||
blob->cbData = dataLen;
|
||||
if (dwFlags & CRYPT_DECODE_NOCOPY_FLAG)
|
||||
blob->pbData = (BYTE *)pbEncoded;
|
||||
|
@ -6645,7 +6642,7 @@ static BOOL CRYPT_AsnDecodeResponderIDByKey(const BYTE *pbEncoded,
|
|||
if (pvStructInfo && *pcbStructInfo >= bytesNeeded)
|
||||
{
|
||||
info->dwResponderIdChoice = 2;
|
||||
blob = &info->u.ByKeyResponderId;
|
||||
blob = &info->ByKeyResponderId;
|
||||
blob->cbData = len;
|
||||
if (dwFlags & CRYPT_DECODE_NOCOPY_FLAG)
|
||||
blob->pbData = (BYTE *)pbEncoded;
|
||||
|
@ -6705,7 +6702,7 @@ static BOOL WINAPI CRYPT_AsnDecodeOCSPBasicResponse(DWORD dwCertEncodingType,
|
|||
struct AsnDecodeSequenceItem items[] = {
|
||||
{ 0, 0,
|
||||
CRYPT_AsnDecodeResponderID, offsetof(OCSP_BASIC_RESPONSE_INFO, ProducedAt), FALSE, TRUE,
|
||||
offsetof(OCSP_BASIC_RESPONSE_INFO, u.ByNameResponderId.pbData), 0 },
|
||||
offsetof(OCSP_BASIC_RESPONSE_INFO, ByNameResponderId.pbData), 0 },
|
||||
{ ASN_GENERALTIME, offsetof(OCSP_BASIC_RESPONSE_INFO, ProducedAt),
|
||||
CRYPT_AsnDecodeGeneralizedTime, sizeof(FILETIME), FALSE, FALSE,
|
||||
0, 0 },
|
||||
|
|
|
@ -35,8 +35,6 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#define NONAMELESSUNION
|
||||
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
#include "wincrypt.h"
|
||||
|
@ -2407,15 +2405,15 @@ static BOOL WINAPI CRYPT_AsnEncodeAltNameEntry(DWORD dwCertEncodingType,
|
|||
case CERT_ALT_NAME_DNS_NAME:
|
||||
case CERT_ALT_NAME_URL:
|
||||
tag = ASN_CONTEXT | (entry->dwAltNameChoice - 1);
|
||||
if (entry->u.pwszURL)
|
||||
if (entry->pwszURL)
|
||||
{
|
||||
DWORD i;
|
||||
|
||||
/* Not + 1: don't encode the NULL-terminator */
|
||||
dataLen = lstrlenW(entry->u.pwszURL);
|
||||
dataLen = lstrlenW(entry->pwszURL);
|
||||
for (i = 0; ret && i < dataLen; i++)
|
||||
{
|
||||
if (entry->u.pwszURL[i] > 0x7f)
|
||||
if (entry->pwszURL[i] > 0x7f)
|
||||
{
|
||||
SetLastError(CRYPT_E_INVALID_IA5_STRING);
|
||||
ret = FALSE;
|
||||
|
@ -2428,16 +2426,16 @@ static BOOL WINAPI CRYPT_AsnEncodeAltNameEntry(DWORD dwCertEncodingType,
|
|||
break;
|
||||
case CERT_ALT_NAME_DIRECTORY_NAME:
|
||||
tag = ASN_CONTEXT | ASN_CONSTRUCTOR | (entry->dwAltNameChoice - 1);
|
||||
dataLen = entry->u.DirectoryName.cbData;
|
||||
dataLen = entry->DirectoryName.cbData;
|
||||
break;
|
||||
case CERT_ALT_NAME_IP_ADDRESS:
|
||||
tag = ASN_CONTEXT | (entry->dwAltNameChoice - 1);
|
||||
dataLen = entry->u.IPAddress.cbData;
|
||||
dataLen = entry->IPAddress.cbData;
|
||||
break;
|
||||
case CERT_ALT_NAME_REGISTERED_ID:
|
||||
{
|
||||
struct AsnEncodeTagSwappedItem swapped =
|
||||
{ ASN_CONTEXT | (entry->dwAltNameChoice - 1), entry->u.pszRegisteredID,
|
||||
{ ASN_CONTEXT | (entry->dwAltNameChoice - 1), entry->pszRegisteredID,
|
||||
CRYPT_AsnEncodeOid };
|
||||
|
||||
return CRYPT_AsnEncodeSwapTag(0, NULL, &swapped, 0, NULL, pbEncoded,
|
||||
|
@ -2478,14 +2476,14 @@ static BOOL WINAPI CRYPT_AsnEncodeAltNameEntry(DWORD dwCertEncodingType,
|
|||
DWORD i;
|
||||
|
||||
for (i = 0; i < dataLen; i++)
|
||||
*pbEncoded++ = (BYTE)entry->u.pwszURL[i];
|
||||
*pbEncoded++ = (BYTE)entry->pwszURL[i];
|
||||
break;
|
||||
}
|
||||
case CERT_ALT_NAME_DIRECTORY_NAME:
|
||||
memcpy(pbEncoded, entry->u.DirectoryName.pbData, dataLen);
|
||||
memcpy(pbEncoded, entry->DirectoryName.pbData, dataLen);
|
||||
break;
|
||||
case CERT_ALT_NAME_IP_ADDRESS:
|
||||
memcpy(pbEncoded, entry->u.IPAddress.pbData, dataLen);
|
||||
memcpy(pbEncoded, entry->IPAddress.pbData, dataLen);
|
||||
break;
|
||||
}
|
||||
if (ret)
|
||||
|
@ -3757,7 +3755,7 @@ static BOOL CRYPT_AsnEncodeDistPoint(const CRL_DIST_POINT *distPoint,
|
|||
break;
|
||||
case CRL_DIST_POINT_FULL_NAME:
|
||||
swapped[cSwapped].tag = ASN_CONTEXT | ASN_CONSTRUCTOR | 0;
|
||||
swapped[cSwapped].pvStructInfo = &distPoint->DistPointName.u.FullName;
|
||||
swapped[cSwapped].pvStructInfo = &distPoint->DistPointName.FullName;
|
||||
swapped[cSwapped].encodeFunc = CRYPT_AsnEncodeAltName;
|
||||
constructed.tag = 0;
|
||||
constructed.pvStructInfo = &swapped[cSwapped];
|
||||
|
@ -3972,7 +3970,7 @@ static BOOL WINAPI CRYPT_AsnEncodeIssuingDistPoint(DWORD dwCertEncodingType,
|
|||
break;
|
||||
case CRL_DIST_POINT_FULL_NAME:
|
||||
swapped[cSwapped].tag = ASN_CONTEXT | ASN_CONSTRUCTOR | 0;
|
||||
swapped[cSwapped].pvStructInfo = &point->DistPointName.u.FullName;
|
||||
swapped[cSwapped].pvStructInfo = &point->DistPointName.FullName;
|
||||
swapped[cSwapped].encodeFunc = CRYPT_AsnEncodeAltName;
|
||||
constructed.tag = 0;
|
||||
constructed.pvStructInfo = &swapped[cSwapped];
|
||||
|
@ -4275,7 +4273,7 @@ static BOOL WINAPI CRYPT_AsnEncodeCMSSignerInfo(DWORD dwCertEncodingType,
|
|||
info->SignerId.dwIdChoice != CERT_ID_KEY_IDENTIFIER)
|
||||
SetLastError(E_INVALIDARG);
|
||||
else if (info->SignerId.dwIdChoice == CERT_ID_ISSUER_SERIAL_NUMBER &&
|
||||
!info->SignerId.u.IssuerSerialNumber.Issuer.cbData)
|
||||
!info->SignerId.IssuerSerialNumber.Issuer.cbData)
|
||||
SetLastError(E_INVALIDARG);
|
||||
else
|
||||
{
|
||||
|
@ -4288,7 +4286,7 @@ static BOOL WINAPI CRYPT_AsnEncodeCMSSignerInfo(DWORD dwCertEncodingType,
|
|||
if (info->SignerId.dwIdChoice == CERT_ID_ISSUER_SERIAL_NUMBER)
|
||||
{
|
||||
items[cItem].pvStructInfo =
|
||||
&info->SignerId.u.IssuerSerialNumber.Issuer;
|
||||
&info->SignerId.IssuerSerialNumber.Issuer;
|
||||
items[cItem].encodeFunc =
|
||||
CRYPT_AsnEncodeIssuerSerialNumber;
|
||||
cItem++;
|
||||
|
@ -4296,7 +4294,7 @@ static BOOL WINAPI CRYPT_AsnEncodeCMSSignerInfo(DWORD dwCertEncodingType,
|
|||
else
|
||||
{
|
||||
swapped[cSwapped].tag = ASN_CONTEXT | 0;
|
||||
swapped[cSwapped].pvStructInfo = &info->SignerId.u.KeyId;
|
||||
swapped[cSwapped].pvStructInfo = &info->SignerId.KeyId;
|
||||
swapped[cSwapped].encodeFunc = CRYPT_AsnEncodeOctets;
|
||||
items[cItem].pvStructInfo = &swapped[cSwapped];
|
||||
items[cItem].encodeFunc = CRYPT_AsnEncodeSwapTag;
|
||||
|
@ -4426,7 +4424,7 @@ static BOOL WINAPI CRYPT_AsnEncodeRecipientInfo(DWORD dwCertEncodingType,
|
|||
const CMSG_KEY_TRANS_RECIPIENT_INFO *info = pvStructInfo;
|
||||
struct AsnEncodeSequenceItem items[] = {
|
||||
{ &info->dwVersion, CRYPT_AsnEncodeInt, 0 },
|
||||
{ &info->RecipientId.u.IssuerSerialNumber,
|
||||
{ &info->RecipientId.IssuerSerialNumber,
|
||||
CRYPT_AsnEncodeIssuerSerialNumber, 0 },
|
||||
{ &info->KeyEncryptionAlgorithm,
|
||||
CRYPT_AsnEncodeAlgorithmIdWithNullParams, 0 },
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
*/
|
||||
|
||||
#include <stdarg.h>
|
||||
#define NONAMELESSUNION
|
||||
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
#include "wincrypt.h"
|
||||
|
@ -665,19 +665,19 @@ static BOOL CRYPT_IsValidSigner(const CMSG_SIGNER_ENCODE_INFO_WITH_CMS *signer)
|
|||
}
|
||||
break;
|
||||
case CERT_ID_ISSUER_SERIAL_NUMBER:
|
||||
if (!signer->SignerId.u.IssuerSerialNumber.SerialNumber.cbData)
|
||||
if (!signer->SignerId.IssuerSerialNumber.SerialNumber.cbData)
|
||||
{
|
||||
SetLastError(E_INVALIDARG);
|
||||
return FALSE;
|
||||
}
|
||||
if (!signer->SignerId.u.IssuerSerialNumber.Issuer.cbData)
|
||||
if (!signer->SignerId.IssuerSerialNumber.Issuer.cbData)
|
||||
{
|
||||
SetLastError(E_INVALIDARG);
|
||||
return FALSE;
|
||||
}
|
||||
break;
|
||||
case CERT_ID_KEY_IDENTIFIER:
|
||||
if (!signer->SignerId.u.KeyId.cbData)
|
||||
if (!signer->SignerId.KeyId.cbData)
|
||||
{
|
||||
SetLastError(E_INVALIDARG);
|
||||
return FALSE;
|
||||
|
@ -806,11 +806,11 @@ static BOOL CSignerInfo_Construct(CMSG_CMS_SIGNER_INFO *info,
|
|||
if (in->cbSize == sizeof(CMSG_SIGNER_ENCODE_INFO))
|
||||
{
|
||||
info->dwVersion = CMSG_SIGNER_INFO_V1;
|
||||
ret = CRYPT_ConstructBlob(&info->SignerId.u.IssuerSerialNumber.Issuer,
|
||||
ret = CRYPT_ConstructBlob(&info->SignerId.IssuerSerialNumber.Issuer,
|
||||
&in->pCertInfo->Issuer);
|
||||
if (ret)
|
||||
ret = CRYPT_ConstructBlob(
|
||||
&info->SignerId.u.IssuerSerialNumber.SerialNumber,
|
||||
&info->SignerId.IssuerSerialNumber.SerialNumber,
|
||||
&in->pCertInfo->SerialNumber);
|
||||
info->SignerId.dwIdChoice = CERT_ID_ISSUER_SERIAL_NUMBER;
|
||||
info->HashEncryptionAlgorithm.pszObjId =
|
||||
|
@ -829,11 +829,11 @@ static BOOL CSignerInfo_Construct(CMSG_CMS_SIGNER_INFO *info,
|
|||
if (!in->SignerId.dwIdChoice)
|
||||
{
|
||||
info->dwVersion = CMSG_SIGNER_INFO_V1;
|
||||
ret = CRYPT_ConstructBlob(&info->SignerId.u.IssuerSerialNumber.Issuer,
|
||||
ret = CRYPT_ConstructBlob(&info->SignerId.IssuerSerialNumber.Issuer,
|
||||
&in->pCertInfo->Issuer);
|
||||
if (ret)
|
||||
ret = CRYPT_ConstructBlob(
|
||||
&info->SignerId.u.IssuerSerialNumber.SerialNumber,
|
||||
&info->SignerId.IssuerSerialNumber.SerialNumber,
|
||||
&in->pCertInfo->SerialNumber);
|
||||
info->SignerId.dwIdChoice = CERT_ID_ISSUER_SERIAL_NUMBER;
|
||||
}
|
||||
|
@ -841,20 +841,20 @@ static BOOL CSignerInfo_Construct(CMSG_CMS_SIGNER_INFO *info,
|
|||
{
|
||||
info->dwVersion = CMSG_SIGNER_INFO_V1;
|
||||
info->SignerId.dwIdChoice = CERT_ID_ISSUER_SERIAL_NUMBER;
|
||||
ret = CRYPT_ConstructBlob(&info->SignerId.u.IssuerSerialNumber.Issuer,
|
||||
&in->SignerId.u.IssuerSerialNumber.Issuer);
|
||||
ret = CRYPT_ConstructBlob(&info->SignerId.IssuerSerialNumber.Issuer,
|
||||
&in->SignerId.IssuerSerialNumber.Issuer);
|
||||
if (ret)
|
||||
ret = CRYPT_ConstructBlob(
|
||||
&info->SignerId.u.IssuerSerialNumber.SerialNumber,
|
||||
&in->SignerId.u.IssuerSerialNumber.SerialNumber);
|
||||
&info->SignerId.IssuerSerialNumber.SerialNumber,
|
||||
&in->SignerId.IssuerSerialNumber.SerialNumber);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Implicitly dwIdChoice == CERT_ID_KEY_IDENTIFIER */
|
||||
info->dwVersion = CMSG_SIGNER_INFO_V3;
|
||||
info->SignerId.dwIdChoice = CERT_ID_KEY_IDENTIFIER;
|
||||
ret = CRYPT_ConstructBlob(&info->SignerId.u.KeyId,
|
||||
&in->SignerId.u.KeyId);
|
||||
ret = CRYPT_ConstructBlob(&info->SignerId.KeyId,
|
||||
&in->SignerId.KeyId);
|
||||
}
|
||||
pEncrAlg = in->HashEncryptionAlgorithm.pszObjId ?
|
||||
&in->HashEncryptionAlgorithm :
|
||||
|
@ -886,11 +886,11 @@ static void CSignerInfo_Free(CMSG_CMS_SIGNER_INFO *info)
|
|||
|
||||
if (info->SignerId.dwIdChoice == CERT_ID_ISSUER_SERIAL_NUMBER)
|
||||
{
|
||||
CryptMemFree(info->SignerId.u.IssuerSerialNumber.Issuer.pbData);
|
||||
CryptMemFree(info->SignerId.u.IssuerSerialNumber.SerialNumber.pbData);
|
||||
CryptMemFree(info->SignerId.IssuerSerialNumber.Issuer.pbData);
|
||||
CryptMemFree(info->SignerId.IssuerSerialNumber.SerialNumber.pbData);
|
||||
}
|
||||
else
|
||||
CryptMemFree(info->SignerId.u.KeyId.pbData);
|
||||
CryptMemFree(info->SignerId.KeyId.pbData);
|
||||
CryptMemFree(info->HashAlgorithm.Parameters.pbData);
|
||||
CryptMemFree(info->HashEncryptionAlgorithm.Parameters.pbData);
|
||||
CryptMemFree(info->EncryptedHash.pbData);
|
||||
|
@ -1625,7 +1625,7 @@ static BOOL CRYPT_ExportEncryptedKey(CMSG_CONTENT_ENCRYPT_INFO *info, DWORD i,
|
|||
PFN_CMSG_EXPORT_KEY_TRANS exportKeyFunc = NULL;
|
||||
HCRYPTOIDFUNCADDR hFunc = NULL;
|
||||
CMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO *encodeInfo =
|
||||
info->rgCmsRecipients[i].u.pKeyTrans;
|
||||
info->rgCmsRecipients[i].pKeyTrans;
|
||||
CMSG_KEY_TRANS_ENCRYPT_INFO encryptInfo;
|
||||
BOOL ret;
|
||||
|
||||
|
@ -1697,7 +1697,7 @@ static BOOL CContentEncryptInfo_Construct(CMSG_CONTENT_ENCRYPT_INFO *info,
|
|||
info->rgCmsRecipients[i].dwRecipientChoice =
|
||||
CMSG_KEY_TRANS_RECIPIENT;
|
||||
encodeInfo = CryptMemAlloc(sizeof(*encodeInfo));
|
||||
info->rgCmsRecipients[i].u.pKeyTrans = encodeInfo;
|
||||
info->rgCmsRecipients[i].pKeyTrans = encodeInfo;
|
||||
if (encodeInfo)
|
||||
{
|
||||
encodeInfo->cbSize = sizeof(*encodeInfo);
|
||||
|
@ -1712,11 +1712,11 @@ static BOOL CContentEncryptInfo_Construct(CMSG_CONTENT_ENCRYPT_INFO *info,
|
|||
&cert->SubjectPublicKeyInfo.PublicKey);
|
||||
if (ret)
|
||||
ret = CRYPT_ConstructBlob(
|
||||
&encodeInfo->RecipientId.u.IssuerSerialNumber.Issuer,
|
||||
&encodeInfo->RecipientId.IssuerSerialNumber.Issuer,
|
||||
&cert->Issuer);
|
||||
if (ret)
|
||||
ret = CRYPT_ConstructBlob(
|
||||
&encodeInfo->RecipientId.u.IssuerSerialNumber.SerialNumber,
|
||||
&encodeInfo->RecipientId.IssuerSerialNumber.SerialNumber,
|
||||
&cert->SerialNumber);
|
||||
}
|
||||
else
|
||||
|
@ -1742,15 +1742,15 @@ static void CContentEncryptInfo_Free(CMSG_CONTENT_ENCRYPT_INFO *info)
|
|||
for (i = 0; i < info->cRecipients; ++i)
|
||||
{
|
||||
CMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO *encodeInfo =
|
||||
info->rgCmsRecipients[i].u.pKeyTrans;
|
||||
info->rgCmsRecipients[i].pKeyTrans;
|
||||
|
||||
CryptMemFree(encodeInfo->KeyEncryptionAlgorithm.pszObjId);
|
||||
CryptMemFree(encodeInfo->KeyEncryptionAlgorithm.Parameters.pbData);
|
||||
CryptMemFree(encodeInfo->RecipientPublicKey.pbData);
|
||||
CryptMemFree(
|
||||
encodeInfo->RecipientId.u.IssuerSerialNumber.Issuer.pbData);
|
||||
encodeInfo->RecipientId.IssuerSerialNumber.Issuer.pbData);
|
||||
CryptMemFree(
|
||||
encodeInfo->RecipientId.u.IssuerSerialNumber.SerialNumber.pbData);
|
||||
encodeInfo->RecipientId.IssuerSerialNumber.SerialNumber.pbData);
|
||||
CryptMemFree(encodeInfo);
|
||||
}
|
||||
CryptMemFree(info->rgCmsRecipients);
|
||||
|
@ -1764,11 +1764,11 @@ static BOOL CRecipientInfo_Construct(CMSG_KEY_TRANS_RECIPIENT_INFO *info,
|
|||
|
||||
info->dwVersion = CMSG_KEY_TRANS_PKCS_1_5_VERSION;
|
||||
info->RecipientId.dwIdChoice = CERT_ID_ISSUER_SERIAL_NUMBER;
|
||||
ret = CRYPT_ConstructBlob(&info->RecipientId.u.IssuerSerialNumber.Issuer,
|
||||
ret = CRYPT_ConstructBlob(&info->RecipientId.IssuerSerialNumber.Issuer,
|
||||
&cert->Issuer);
|
||||
if (ret)
|
||||
ret = CRYPT_ConstructBlob(
|
||||
&info->RecipientId.u.IssuerSerialNumber.SerialNumber,
|
||||
&info->RecipientId.IssuerSerialNumber.SerialNumber,
|
||||
&cert->SerialNumber);
|
||||
if (ret)
|
||||
ret = CRYPT_ConstructAlgorithmId(&info->KeyEncryptionAlgorithm,
|
||||
|
@ -1780,8 +1780,8 @@ static BOOL CRecipientInfo_Construct(CMSG_KEY_TRANS_RECIPIENT_INFO *info,
|
|||
|
||||
static void CRecipientInfo_Free(CMSG_KEY_TRANS_RECIPIENT_INFO *info)
|
||||
{
|
||||
CryptMemFree(info->RecipientId.u.IssuerSerialNumber.Issuer.pbData);
|
||||
CryptMemFree(info->RecipientId.u.IssuerSerialNumber.SerialNumber.pbData);
|
||||
CryptMemFree(info->RecipientId.IssuerSerialNumber.Issuer.pbData);
|
||||
CryptMemFree(info->RecipientId.IssuerSerialNumber.SerialNumber.pbData);
|
||||
CryptMemFree(info->KeyEncryptionAlgorithm.pszObjId);
|
||||
CryptMemFree(info->KeyEncryptionAlgorithm.Parameters.pbData);
|
||||
CryptMemFree(info->EncryptedKey.pbData);
|
||||
|
@ -2727,12 +2727,12 @@ static BOOL CRYPT_CopySignerInfo(void *pvData, DWORD *pcbData,
|
|||
|
||||
if (in->SignerId.dwIdChoice == CERT_ID_ISSUER_SERIAL_NUMBER)
|
||||
{
|
||||
size += in->SignerId.u.IssuerSerialNumber.Issuer.cbData;
|
||||
size += in->SignerId.u.IssuerSerialNumber.SerialNumber.cbData;
|
||||
size += in->SignerId.IssuerSerialNumber.Issuer.cbData;
|
||||
size += in->SignerId.IssuerSerialNumber.SerialNumber.cbData;
|
||||
}
|
||||
else
|
||||
{
|
||||
rdnSize = CRYPT_SizeOfKeyIdAsIssuerAndSerial(&in->SignerId.u.KeyId);
|
||||
rdnSize = CRYPT_SizeOfKeyIdAsIssuerAndSerial(&in->SignerId.KeyId);
|
||||
size += rdnSize;
|
||||
}
|
||||
if (in->HashAlgorithm.pszObjId)
|
||||
|
@ -2765,13 +2765,13 @@ static BOOL CRYPT_CopySignerInfo(void *pvData, DWORD *pcbData,
|
|||
if (in->SignerId.dwIdChoice == CERT_ID_ISSUER_SERIAL_NUMBER)
|
||||
{
|
||||
CRYPT_CopyBlob(&out->Issuer,
|
||||
&in->SignerId.u.IssuerSerialNumber.Issuer, &nextData);
|
||||
&in->SignerId.IssuerSerialNumber.Issuer, &nextData);
|
||||
CRYPT_CopyBlob(&out->SerialNumber,
|
||||
&in->SignerId.u.IssuerSerialNumber.SerialNumber, &nextData);
|
||||
&in->SignerId.IssuerSerialNumber.SerialNumber, &nextData);
|
||||
}
|
||||
else
|
||||
ret = CRYPT_CopyKeyIdAsIssuerAndSerial(&out->Issuer, &out->SerialNumber,
|
||||
&in->SignerId.u.KeyId, rdnSize, &nextData);
|
||||
&in->SignerId.KeyId, rdnSize, &nextData);
|
||||
if (ret)
|
||||
{
|
||||
CRYPT_CopyAlgorithmId(&out->HashAlgorithm, &in->HashAlgorithm,
|
||||
|
@ -2799,11 +2799,11 @@ static BOOL CRYPT_CopyCMSSignerInfo(void *pvData, DWORD *pcbData,
|
|||
|
||||
if (in->SignerId.dwIdChoice == CERT_ID_ISSUER_SERIAL_NUMBER)
|
||||
{
|
||||
size += in->SignerId.u.IssuerSerialNumber.Issuer.cbData;
|
||||
size += in->SignerId.u.IssuerSerialNumber.SerialNumber.cbData;
|
||||
size += in->SignerId.IssuerSerialNumber.Issuer.cbData;
|
||||
size += in->SignerId.IssuerSerialNumber.SerialNumber.cbData;
|
||||
}
|
||||
else
|
||||
size += in->SignerId.u.KeyId.cbData;
|
||||
size += in->SignerId.KeyId.cbData;
|
||||
if (in->HashAlgorithm.pszObjId)
|
||||
size += strlen(in->HashAlgorithm.pszObjId) + 1;
|
||||
size += in->HashAlgorithm.Parameters.cbData;
|
||||
|
@ -2835,13 +2835,13 @@ static BOOL CRYPT_CopyCMSSignerInfo(void *pvData, DWORD *pcbData,
|
|||
out->SignerId.dwIdChoice = in->SignerId.dwIdChoice;
|
||||
if (in->SignerId.dwIdChoice == CERT_ID_ISSUER_SERIAL_NUMBER)
|
||||
{
|
||||
CRYPT_CopyBlob(&out->SignerId.u.IssuerSerialNumber.Issuer,
|
||||
&in->SignerId.u.IssuerSerialNumber.Issuer, &nextData);
|
||||
CRYPT_CopyBlob(&out->SignerId.u.IssuerSerialNumber.SerialNumber,
|
||||
&in->SignerId.u.IssuerSerialNumber.SerialNumber, &nextData);
|
||||
CRYPT_CopyBlob(&out->SignerId.IssuerSerialNumber.Issuer,
|
||||
&in->SignerId.IssuerSerialNumber.Issuer, &nextData);
|
||||
CRYPT_CopyBlob(&out->SignerId.IssuerSerialNumber.SerialNumber,
|
||||
&in->SignerId.IssuerSerialNumber.SerialNumber, &nextData);
|
||||
}
|
||||
else
|
||||
CRYPT_CopyBlob(&out->SignerId.u.KeyId, &in->SignerId.u.KeyId, &nextData);
|
||||
CRYPT_CopyBlob(&out->SignerId.KeyId, &in->SignerId.KeyId, &nextData);
|
||||
CRYPT_CopyAlgorithmId(&out->HashAlgorithm, &in->HashAlgorithm,
|
||||
&nextData);
|
||||
CRYPT_CopyAlgorithmId(&out->HashEncryptionAlgorithm,
|
||||
|
@ -2866,12 +2866,12 @@ static BOOL CRYPT_CopySignerCertInfo(void *pvData, DWORD *pcbData,
|
|||
|
||||
if (in->SignerId.dwIdChoice == CERT_ID_ISSUER_SERIAL_NUMBER)
|
||||
{
|
||||
size += in->SignerId.u.IssuerSerialNumber.Issuer.cbData;
|
||||
size += in->SignerId.u.IssuerSerialNumber.SerialNumber.cbData;
|
||||
size += in->SignerId.IssuerSerialNumber.Issuer.cbData;
|
||||
size += in->SignerId.IssuerSerialNumber.SerialNumber.cbData;
|
||||
}
|
||||
else
|
||||
{
|
||||
rdnSize = CRYPT_SizeOfKeyIdAsIssuerAndSerial(&in->SignerId.u.KeyId);
|
||||
rdnSize = CRYPT_SizeOfKeyIdAsIssuerAndSerial(&in->SignerId.KeyId);
|
||||
size += rdnSize;
|
||||
}
|
||||
if (!pvData)
|
||||
|
@ -2894,14 +2894,14 @@ static BOOL CRYPT_CopySignerCertInfo(void *pvData, DWORD *pcbData,
|
|||
if (in->SignerId.dwIdChoice == CERT_ID_ISSUER_SERIAL_NUMBER)
|
||||
{
|
||||
CRYPT_CopyBlob(&out->Issuer,
|
||||
&in->SignerId.u.IssuerSerialNumber.Issuer, &nextData);
|
||||
&in->SignerId.IssuerSerialNumber.Issuer, &nextData);
|
||||
CRYPT_CopyBlob(&out->SerialNumber,
|
||||
&in->SignerId.u.IssuerSerialNumber.SerialNumber, &nextData);
|
||||
&in->SignerId.IssuerSerialNumber.SerialNumber, &nextData);
|
||||
ret = TRUE;
|
||||
}
|
||||
else
|
||||
ret = CRYPT_CopyKeyIdAsIssuerAndSerial(&out->Issuer, &out->SerialNumber,
|
||||
&in->SignerId.u.KeyId, rdnSize, &nextData);
|
||||
&in->SignerId.KeyId, rdnSize, &nextData);
|
||||
}
|
||||
TRACE("returning %d\n", ret);
|
||||
return ret;
|
||||
|
@ -2975,7 +2975,7 @@ static BOOL CDecodeEnvelopedMsg_GetParam(CDecodeMsg *msg, DWORD dwParamType,
|
|||
&msg->u.enveloped_data.data->rgRecipientInfo[dwIndex];
|
||||
|
||||
ret = CRYPT_CopyRecipientInfo(pvData, pcbData,
|
||||
&recipientInfo->RecipientId.u.IssuerSerialNumber);
|
||||
&recipientInfo->RecipientId.IssuerSerialNumber);
|
||||
}
|
||||
else
|
||||
SetLastError(CRYPT_E_INVALID_INDEX);
|
||||
|
@ -3398,12 +3398,12 @@ static BOOL CDecodeSignedMsg_VerifySignature(CDecodeMsg *msg, PCERT_INFO info)
|
|||
if (signerInfo->SignerId.dwIdChoice == CERT_ID_ISSUER_SERIAL_NUMBER)
|
||||
{
|
||||
ret = CertCompareCertificateName(X509_ASN_ENCODING,
|
||||
&signerInfo->SignerId.u.IssuerSerialNumber.Issuer,
|
||||
&signerInfo->SignerId.IssuerSerialNumber.Issuer,
|
||||
&info->Issuer);
|
||||
if (ret)
|
||||
{
|
||||
ret = CertCompareIntegerBlob(
|
||||
&signerInfo->SignerId.u.IssuerSerialNumber.SerialNumber,
|
||||
&signerInfo->SignerId.IssuerSerialNumber.SerialNumber,
|
||||
&info->SerialNumber);
|
||||
if (ret)
|
||||
break;
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
#include <stdarg.h>
|
||||
#define NONAMELESSUNION
|
||||
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
#include "wincrypt.h"
|
||||
|
@ -1248,12 +1248,12 @@ static BOOL CRYPT_FormatAltNameEntry(DWORD dwFormatStrType, DWORD indentLevel,
|
|||
{
|
||||
case CERT_ALT_NAME_RFC822_NAME:
|
||||
LoadStringW(hInstance, IDS_ALT_NAME_RFC822_NAME, buf, ARRAY_SIZE(buf));
|
||||
bytesNeeded += lstrlenW(entry->u.pwszRfc822Name) * sizeof(WCHAR);
|
||||
bytesNeeded += lstrlenW(entry->pwszRfc822Name) * sizeof(WCHAR);
|
||||
ret = TRUE;
|
||||
break;
|
||||
case CERT_ALT_NAME_DNS_NAME:
|
||||
LoadStringW(hInstance, IDS_ALT_NAME_DNS_NAME, buf, ARRAY_SIZE(buf));
|
||||
bytesNeeded += lstrlenW(entry->u.pwszDNSName) * sizeof(WCHAR);
|
||||
bytesNeeded += lstrlenW(entry->pwszDNSName) * sizeof(WCHAR);
|
||||
ret = TRUE;
|
||||
break;
|
||||
case CERT_ALT_NAME_DIRECTORY_NAME:
|
||||
|
@ -1263,7 +1263,7 @@ static BOOL CRYPT_FormatAltNameEntry(DWORD dwFormatStrType, DWORD indentLevel,
|
|||
if (dwFormatStrType & CRYPT_FORMAT_STR_MULTI_LINE)
|
||||
strType |= CERT_NAME_STR_CRLF_FLAG;
|
||||
directoryNameLen = cert_name_to_str_with_indent(X509_ASN_ENCODING,
|
||||
indentLevel + 1, &entry->u.DirectoryName, strType, NULL, 0);
|
||||
indentLevel + 1, &entry->DirectoryName, strType, NULL, 0);
|
||||
LoadStringW(hInstance, IDS_ALT_NAME_DIRECTORY_NAME, buf, ARRAY_SIZE(buf));
|
||||
bytesNeeded += (directoryNameLen - 1) * sizeof(WCHAR);
|
||||
if (dwFormatStrType & CRYPT_FORMAT_STR_MULTI_LINE)
|
||||
|
@ -1275,45 +1275,45 @@ static BOOL CRYPT_FormatAltNameEntry(DWORD dwFormatStrType, DWORD indentLevel,
|
|||
}
|
||||
case CERT_ALT_NAME_URL:
|
||||
LoadStringW(hInstance, IDS_ALT_NAME_URL, buf, ARRAY_SIZE(buf));
|
||||
bytesNeeded += lstrlenW(entry->u.pwszURL) * sizeof(WCHAR);
|
||||
bytesNeeded += lstrlenW(entry->pwszURL) * sizeof(WCHAR);
|
||||
ret = TRUE;
|
||||
break;
|
||||
case CERT_ALT_NAME_IP_ADDRESS:
|
||||
{
|
||||
LoadStringW(hInstance, IDS_ALT_NAME_IP_ADDRESS, buf, ARRAY_SIZE(buf));
|
||||
if (entry->u.IPAddress.cbData == 8)
|
||||
if (entry->IPAddress.cbData == 8)
|
||||
{
|
||||
if (dwFormatStrType & CRYPT_FORMAT_STR_MULTI_LINE)
|
||||
{
|
||||
LoadStringW(hInstance, IDS_ALT_NAME_MASK, mask, ARRAY_SIZE(mask));
|
||||
bytesNeeded += lstrlenW(mask) * sizeof(WCHAR);
|
||||
swprintf(ipAddrBuf, ARRAY_SIZE(ipAddrBuf), L"%d.%d.%d.%d",
|
||||
entry->u.IPAddress.pbData[0],
|
||||
entry->u.IPAddress.pbData[1],
|
||||
entry->u.IPAddress.pbData[2],
|
||||
entry->u.IPAddress.pbData[3]);
|
||||
entry->IPAddress.pbData[0],
|
||||
entry->IPAddress.pbData[1],
|
||||
entry->IPAddress.pbData[2],
|
||||
entry->IPAddress.pbData[3]);
|
||||
bytesNeeded += lstrlenW(ipAddrBuf) * sizeof(WCHAR);
|
||||
/* indent again, for the mask line */
|
||||
bytesNeeded += indentLevel * lstrlenW(indent) * sizeof(WCHAR);
|
||||
swprintf(maskBuf, ARRAY_SIZE(maskBuf), L"%d.%d.%d.%d",
|
||||
entry->u.IPAddress.pbData[4],
|
||||
entry->u.IPAddress.pbData[5],
|
||||
entry->u.IPAddress.pbData[6],
|
||||
entry->u.IPAddress.pbData[7]);
|
||||
entry->IPAddress.pbData[4],
|
||||
entry->IPAddress.pbData[5],
|
||||
entry->IPAddress.pbData[6],
|
||||
entry->IPAddress.pbData[7]);
|
||||
bytesNeeded += lstrlenW(maskBuf) * sizeof(WCHAR);
|
||||
bytesNeeded += lstrlenW(crlf) * sizeof(WCHAR);
|
||||
}
|
||||
else
|
||||
{
|
||||
swprintf(ipAddrBuf, ARRAY_SIZE(ipAddrBuf), L"%d.%d.%d.%d/%d.%d.%d.%d",
|
||||
entry->u.IPAddress.pbData[0],
|
||||
entry->u.IPAddress.pbData[1],
|
||||
entry->u.IPAddress.pbData[2],
|
||||
entry->u.IPAddress.pbData[3],
|
||||
entry->u.IPAddress.pbData[4],
|
||||
entry->u.IPAddress.pbData[5],
|
||||
entry->u.IPAddress.pbData[6],
|
||||
entry->u.IPAddress.pbData[7]);
|
||||
entry->IPAddress.pbData[0],
|
||||
entry->IPAddress.pbData[1],
|
||||
entry->IPAddress.pbData[2],
|
||||
entry->IPAddress.pbData[3],
|
||||
entry->IPAddress.pbData[4],
|
||||
entry->IPAddress.pbData[5],
|
||||
entry->IPAddress.pbData[6],
|
||||
entry->IPAddress.pbData[7]);
|
||||
bytesNeeded += (lstrlenW(ipAddrBuf) + 1) * sizeof(WCHAR);
|
||||
}
|
||||
ret = TRUE;
|
||||
|
@ -1321,7 +1321,7 @@ static BOOL CRYPT_FormatAltNameEntry(DWORD dwFormatStrType, DWORD indentLevel,
|
|||
else
|
||||
{
|
||||
FIXME("unknown IP address format (%ld bytes)\n",
|
||||
entry->u.IPAddress.cbData);
|
||||
entry->IPAddress.cbData);
|
||||
ret = FALSE;
|
||||
}
|
||||
break;
|
||||
|
@ -1361,7 +1361,7 @@ static BOOL CRYPT_FormatAltNameEntry(DWORD dwFormatStrType, DWORD indentLevel,
|
|||
case CERT_ALT_NAME_RFC822_NAME:
|
||||
case CERT_ALT_NAME_DNS_NAME:
|
||||
case CERT_ALT_NAME_URL:
|
||||
lstrcpyW(str, entry->u.pwszURL);
|
||||
lstrcpyW(str, entry->pwszURL);
|
||||
break;
|
||||
case CERT_ALT_NAME_DIRECTORY_NAME:
|
||||
if (dwFormatStrType & CRYPT_FORMAT_STR_MULTI_LINE)
|
||||
|
@ -1372,7 +1372,7 @@ static BOOL CRYPT_FormatAltNameEntry(DWORD dwFormatStrType, DWORD indentLevel,
|
|||
else
|
||||
*str++ = '=';
|
||||
cert_name_to_str_with_indent(X509_ASN_ENCODING,
|
||||
indentLevel + 1, &entry->u.DirectoryName, strType, str,
|
||||
indentLevel + 1, &entry->DirectoryName, strType, str,
|
||||
bytesNeeded / sizeof(WCHAR));
|
||||
break;
|
||||
case CERT_ALT_NAME_IP_ADDRESS:
|
||||
|
@ -2039,7 +2039,7 @@ static BOOL WINAPI CRYPT_FormatCRLDistPoints(DWORD dwCertEncodingType,
|
|||
* RDN.)
|
||||
*/
|
||||
ret = CRYPT_FormatAltNameInfo(dwFormatStrType, 3,
|
||||
&distPoint->DistPointName.u.FullName, NULL, &size);
|
||||
&distPoint->DistPointName.FullName, NULL, &size);
|
||||
if (ret)
|
||||
bytesNeeded += size - sizeof(WCHAR);
|
||||
haveAnEntry = TRUE;
|
||||
|
@ -2158,7 +2158,7 @@ static BOOL WINAPI CRYPT_FormatCRLDistPoints(DWORD dwCertEncodingType,
|
|||
lstrcpyW(str, nameSep);
|
||||
str += lstrlenW(nameSep);
|
||||
ret = CRYPT_FormatAltNameInfo(dwFormatStrType, 3,
|
||||
&distPoint->DistPointName.u.FullName, str,
|
||||
&distPoint->DistPointName.FullName, str,
|
||||
&altNameSize);
|
||||
if (ret)
|
||||
str += altNameSize / sizeof(WCHAR) - 1;
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
#include <stdlib.h>
|
||||
#define NONAMELESSUNION
|
||||
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
#define CRYPT_OID_INFO_HAS_EXTRA_FIELDS
|
||||
|
@ -778,9 +778,9 @@ BOOL WINAPI CryptRegisterOIDInfo(PCCRYPT_OID_INFO info, DWORD flags)
|
|||
if (err != ERROR_SUCCESS) goto done;
|
||||
}
|
||||
|
||||
if (info->u.Algid)
|
||||
if (info->Algid)
|
||||
{
|
||||
err = RegSetValueExW(key, L"Algid", 0, REG_DWORD, (const BYTE *)&info->u.Algid, sizeof(info->u.Algid));
|
||||
err = RegSetValueExW(key, L"Algid", 0, REG_DWORD, (const BYTE *)&info->Algid, sizeof(info->Algid));
|
||||
if (err != ERROR_SUCCESS) goto done;
|
||||
}
|
||||
|
||||
|
@ -1532,8 +1532,8 @@ static struct OIDInfo *read_oid_info(HKEY root, char *key_name, DWORD *flags)
|
|||
|
||||
info->info.dwGroupId = group_id;
|
||||
|
||||
len = sizeof(info->info.u.Algid);
|
||||
RegQueryValueExW(key, L"Algid", NULL, NULL, (BYTE *)&info->info.u.Algid, &len);
|
||||
len = sizeof(info->info.Algid);
|
||||
RegQueryValueExW(key, L"Algid", NULL, NULL, (BYTE *)&info->info.Algid, &len);
|
||||
|
||||
if (extra_len)
|
||||
{
|
||||
|
@ -1588,7 +1588,7 @@ static void init_registered_oid_info(void)
|
|||
{
|
||||
TRACE("adding oid %s, name %s, groupid %lu, algid %u, extra %lu, CNG algid %s, CNG extra %s\n",
|
||||
debugstr_a(info->info.pszOID), debugstr_w(info->info.pwszName),
|
||||
info->info.dwGroupId, info->info.u.Algid, info->info.ExtraInfo.cbData,
|
||||
info->info.dwGroupId, info->info.Algid, info->info.ExtraInfo.cbData,
|
||||
debugstr_w(info->info.pwszCNGAlgid), debugstr_w(info->info.pwszCNGExtraAlgid));
|
||||
|
||||
if (flags & CRYPT_INSTALL_OID_INFO_BEFORE_FLAG)
|
||||
|
@ -1622,7 +1622,7 @@ static void init_oid_info(void)
|
|||
info->info.pszOID = oidInfoConstructors[i].pszOID;
|
||||
info->info.pwszName = oidInfoConstructors[i].pwszName;
|
||||
info->info.dwGroupId = oidInfoConstructors[i].dwGroupId;
|
||||
info->info.u.Algid = oidInfoConstructors[i].Algid;
|
||||
info->info.Algid = oidInfoConstructors[i].Algid;
|
||||
if (oidInfoConstructors[i].blob)
|
||||
{
|
||||
info->info.ExtraInfo.cbData =
|
||||
|
@ -1654,7 +1654,7 @@ static void init_oid_info(void)
|
|||
info->info.pszOID = oidInfoConstructors[i].pszOID;
|
||||
info->info.pwszName = (LPWSTR)(info + 1);
|
||||
info->info.dwGroupId = oidInfoConstructors[i].dwGroupId;
|
||||
info->info.u.Algid = oidInfoConstructors[i].Algid;
|
||||
info->info.Algid = oidInfoConstructors[i].Algid;
|
||||
memcpy(info + 1, stringresource, len*sizeof(WCHAR));
|
||||
((LPWSTR)(info + 1))[len] = 0;
|
||||
if (oidInfoConstructors[i].blob)
|
||||
|
@ -1728,7 +1728,7 @@ PCCRYPT_OID_INFO WINAPI CryptFindOIDInfo(DWORD dwKeyType, void *pvKey,
|
|||
EnterCriticalSection(&oidInfoCS);
|
||||
LIST_FOR_EACH_ENTRY(info, &oidInfo, struct OIDInfo, entry)
|
||||
{
|
||||
if (info->info.u.Algid == *(DWORD *)pvKey &&
|
||||
if (info->info.Algid == *(DWORD *)pvKey &&
|
||||
(!dwGroupId || info->info.dwGroupId == dwGroupId))
|
||||
{
|
||||
ret = &info->info;
|
||||
|
@ -1783,7 +1783,7 @@ PCCRYPT_OID_INFO WINAPI CryptFindOIDInfo(DWORD dwKeyType, void *pvKey,
|
|||
EnterCriticalSection(&oidInfoCS);
|
||||
LIST_FOR_EACH_ENTRY(info, &oidInfo, struct OIDInfo, entry)
|
||||
{
|
||||
if (info->info.u.Algid == *(DWORD *)pvKey &&
|
||||
if (info->info.Algid == *(DWORD *)pvKey &&
|
||||
info->info.ExtraInfo.cbData >= sizeof(DWORD) &&
|
||||
*(DWORD *)info->info.ExtraInfo.pbData ==
|
||||
*(DWORD *)((LPBYTE)pvKey + sizeof(DWORD)) &&
|
||||
|
@ -1820,7 +1820,7 @@ DWORD WINAPI CertOIDToAlgId(LPCSTR pszObjId)
|
|||
(void *)pszObjId, 0);
|
||||
|
||||
if (info)
|
||||
ret = info->u.Algid;
|
||||
ret = info->Algid;
|
||||
else
|
||||
ret = 0;
|
||||
return ret;
|
||||
|
|
|
@ -17,8 +17,6 @@
|
|||
*/
|
||||
#include <stdarg.h>
|
||||
|
||||
#define NONAMELESSUNION
|
||||
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
#include "winnls.h"
|
||||
|
@ -1036,7 +1034,7 @@ DWORD WINAPI CertGetNameStringW(PCCERT_CONTEXT cert, DWORD type, DWORD flags, vo
|
|||
|
||||
if (entry)
|
||||
{
|
||||
ret = copy_output_str(name_string, entry->u.pwszRfc822Name, name_len);
|
||||
ret = copy_output_str(name_string, entry->pwszRfc822Name, name_len);
|
||||
break;
|
||||
}
|
||||
ret = cert_get_name_from_rdn_attr(cert->dwCertEncodingType, name, szOID_RSA_emailAddr,
|
||||
|
@ -1056,7 +1054,7 @@ DWORD WINAPI CertGetNameStringW(PCCERT_CONTEXT cert, DWORD type, DWORD flags, vo
|
|||
entry = cert_find_alt_name_entry(cert, alt_name_issuer, CERT_ALT_NAME_DIRECTORY_NAME, &info);
|
||||
|
||||
if (entry)
|
||||
ret = CertNameToStrW(cert->dwCertEncodingType, &entry->u.DirectoryName,
|
||||
ret = CertNameToStrW(cert->dwCertEncodingType, &entry->DirectoryName,
|
||||
param, name_string, name_len);
|
||||
}
|
||||
break;
|
||||
|
@ -1069,7 +1067,7 @@ DWORD WINAPI CertGetNameStringW(PCCERT_CONTEXT cert, DWORD type, DWORD flags, vo
|
|||
entry = cert_find_alt_name_entry(cert, alt_name_issuer, CERT_ALT_NAME_DIRECTORY_NAME, &info);
|
||||
|
||||
if (entry)
|
||||
ret = cert_name_to_str_with_indent(X509_ASN_ENCODING, 0, &entry->u.DirectoryName,
|
||||
ret = cert_name_to_str_with_indent(X509_ASN_ENCODING, 0, &entry->DirectoryName,
|
||||
0, name_string, name_len);
|
||||
break;
|
||||
case CERT_NAME_SIMPLE_DISPLAY_TYPE:
|
||||
|
@ -1097,7 +1095,7 @@ DWORD WINAPI CertGetNameStringW(PCCERT_CONTEXT cert, DWORD type, DWORD flags, vo
|
|||
if (!info) break;
|
||||
if (!entry && info->cAltEntry)
|
||||
entry = &info->rgAltEntry[0];
|
||||
if (entry) ret = copy_output_str(name_string, entry->u.pwszRfc822Name, name_len);
|
||||
if (entry) ret = copy_output_str(name_string, entry->pwszRfc822Name, name_len);
|
||||
break;
|
||||
}
|
||||
case CERT_NAME_FRIENDLY_DISPLAY_TYPE:
|
||||
|
@ -1123,7 +1121,7 @@ DWORD WINAPI CertGetNameStringW(PCCERT_CONTEXT cert, DWORD type, DWORD flags, vo
|
|||
do
|
||||
{
|
||||
if (name_string && name_len == 1) break;
|
||||
ret += len = copy_output_str(name_string, entry->u.pwszDNSName, name_len ? name_len - 1 : 0);
|
||||
ret += len = copy_output_str(name_string, entry->pwszDNSName, name_len ? name_len - 1 : 0);
|
||||
if (name_string && name_len)
|
||||
{
|
||||
name_string += len;
|
||||
|
@ -1132,7 +1130,7 @@ DWORD WINAPI CertGetNameStringW(PCCERT_CONTEXT cert, DWORD type, DWORD flags, vo
|
|||
}
|
||||
while ((entry = cert_find_next_alt_name_entry(info, CERT_ALT_NAME_DNS_NAME, &index)));
|
||||
}
|
||||
else ret = copy_output_str(name_string, entry->u.pwszDNSName, name_len);
|
||||
else ret = copy_output_str(name_string, entry->pwszDNSName, name_len);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1155,7 +1153,7 @@ DWORD WINAPI CertGetNameStringW(PCCERT_CONTEXT cert, DWORD type, DWORD flags, vo
|
|||
case CERT_NAME_URL_TYPE:
|
||||
{
|
||||
if ((entry = cert_find_alt_name_entry(cert, alt_name_issuer, CERT_ALT_NAME_URL, &info)))
|
||||
ret = copy_output_str(name_string, entry->u.pwszURL, name_len);
|
||||
ret = copy_output_str(name_string, entry->pwszURL, name_len);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
|
Loading…
Add table
Reference in a new issue