21 #define NONAMELESSUNION 30 #include "wine/unicode.h" 77 if (
ret && contentType)
84 if (
ret && contentType)
91 if (
ret && contentType)
98 DWORD dwExpectedContentTypeFlags,
DWORD dwExpectedFormatTypeFlags,
99 DWORD *pdwMsgAndCertEncodingType,
DWORD *pdwContentType,
DWORD *pdwFormatType,
106 DWORD formatType = 0;
108 switch (dwObjectType)
159 dwExpectedContentTypeFlags, store, pdwContentType,
172 if (pdwMsgAndCertEncodingType)
175 *pdwFormatType = formatType;
180 if (
blob == &fileBlob)
187 const void *pvObject,
DWORD dwExpectedContentTypeFlags,
188 DWORD *pdwMsgAndCertEncodingType,
DWORD *pdwContentType,
198 switch (dwObjectType)
223 DWORD contentType, certStoreOffset;
232 if (!(dwExpectedContentTypeFlags &
244 if (!(dwExpectedContentTypeFlags &
256 if (!(dwExpectedContentTypeFlags &
269 if (pdwMsgAndCertEncodingType)
272 *pdwContentType = contentType;
284 if (contextInterface &&
context)
286 if (
blob == &fileBlob)
293 DWORD *pdwMsgAndCertEncodingType,
DWORD *pdwContentType,
310 if (pdwMsgAndCertEncodingType)
325 DWORD *pdwMsgAndCertEncodingType,
DWORD *pdwContentType,
337 if (pdwMsgAndCertEncodingType)
350 const void *pvObject,
DWORD *pdwMsgAndCertEncodingType,
DWORD *pdwContentType,
353 switch (dwObjectType)
357 pdwMsgAndCertEncodingType, pdwContentType, phCertStore, phMsg);
360 pdwMsgAndCertEncodingType, pdwContentType, phCertStore, phMsg);
362 FIXME(
"unimplemented for type %d\n", dwObjectType);
410 if (pdwMsgAndCertEncodingType)
411 *pdwMsgAndCertEncodingType = encodingType;
462 if (pdwMsgAndCertEncodingType)
463 *pdwMsgAndCertEncodingType = encodingType;
474 DWORD dwExpectedContentTypeFlags,
DWORD dwExpectedFormatTypeFlags,
475 DWORD *pdwMsgAndCertEncodingType,
DWORD *pdwContentType,
DWORD *pdwFormatType,
483 DWORD formatType = 0;
485 TRACE(
"(%d, %p, %08x, %08x, %p, %p, %p, %p, %p)\n", dwObjectType, pvObject,
486 dwExpectedContentTypeFlags, dwExpectedFormatTypeFlags,
487 pdwMsgAndCertEncodingType, pdwContentType, pdwFormatType, phCertStore,
490 switch (dwObjectType)
516 pdwContentType, &
msg);
521 pdwContentType, &
msg);
546 if (dwExpectedContentTypeFlags &
549 pdwMsgAndCertEncodingType, pdwContentType, &
msg);
551 if (!
ret && (dwExpectedContentTypeFlags &
554 pdwMsgAndCertEncodingType, pdwContentType, &
msg);
570 while (strLen && !
str[strLen - 1])
585 if (dwExpectedContentTypeFlags &
588 pdwMsgAndCertEncodingType, pdwContentType, &
msg);
590 if (!
ret && (dwExpectedContentTypeFlags &
593 pdwMsgAndCertEncodingType, pdwContentType, &
msg);
607 *pdwFormatType = formatType;
616 if (
blob == &fileBlob)
623 const void *pvObject,
DWORD dwExpectedContentTypeFlags,
624 DWORD *pdwMsgAndCertEncodingType,
DWORD *pdwContentType,
635 WARN(
"don't know what to do for type %d embedded signed messages\n",
649 memset(&sip, 0,
sizeof(sip));
658 memset(&subjectInfo, 0,
sizeof(subjectInfo));
659 subjectInfo.
cbSize =
sizeof(subjectInfo);
663 ret = sip.
pfGet(&subjectInfo, &encodingType, 0, &
blob.cbData,
670 ret = sip.
pfGet(&subjectInfo, &encodingType, 0,
678 pdwMsgAndCertEncodingType,
NULL,
NULL,
680 if (
ret && pdwContentType)
700 DWORD dwExpectedContentTypeFlags,
DWORD dwExpectedFormatTypeFlags,
705 static const DWORD unimplementedTypes =
710 TRACE(
"(%08x, %p, %08x, %08x, %08x, %p, %p, %p, %p, %p, %p)\n",
711 dwObjectType, pvObject, dwExpectedContentTypeFlags,
712 dwExpectedFormatTypeFlags,
dwFlags, pdwMsgAndCertEncodingType,
713 pdwContentType, pdwFormatType, phCertStore, phMsg,
ppvContext);
718 WARN(
"unsupported type %d\n", dwObjectType);
724 WARN(
"missing required argument\n");
728 if (dwExpectedContentTypeFlags & unimplementedTypes)
729 WARN(
"unimplemented for types %08x\n",
730 dwExpectedContentTypeFlags & unimplementedTypes);
747 dwExpectedContentTypeFlags, dwExpectedFormatTypeFlags,
748 pdwMsgAndCertEncodingType, pdwContentType, pdwFormatType, phCertStore,
755 pdwMsgAndCertEncodingType, pdwContentType, phCertStore, phMsg);
763 dwExpectedContentTypeFlags, pdwMsgAndCertEncodingType, pdwContentType,
771 dwExpectedContentTypeFlags, dwExpectedFormatTypeFlags,
772 pdwMsgAndCertEncodingType, pdwContentType, pdwFormatType,
779 dwExpectedContentTypeFlags, pdwMsgAndCertEncodingType, pdwContentType,
789 DWORD dwFormatType,
DWORD dwFormatStrType,
void *pFormatStruct,
797 bytesNeeded = (cbEncoded * 3) *
sizeof(
WCHAR);
799 bytesNeeded =
sizeof(
WCHAR);
802 *pcbFormat = bytesNeeded;
805 else if (*pcbFormat < bytesNeeded)
807 *pcbFormat = bytesNeeded;
813 static const WCHAR fmt[] = {
'%',
'0',
'2',
'x',
' ',0 };
814 static const WCHAR endFmt[] = {
'%',
'0',
'2',
'x',0 };
818 *pcbFormat = bytesNeeded;
821 for (
i = 0;
i < cbEncoded;
i++)
823 if (
i < cbEncoded - 1)
836 #define MAX_STRING_RESOURCE_LEN 128 854 for (
i = 0;
i < mapEntries;
i++)
865 *pcbFormat = bytesNeeded;
867 else if (*pcbFormat < bytesNeeded)
870 *pcbFormat = bytesNeeded;
879 *pcbFormat = bytesNeeded;
880 for (
i = 0;
i < mapEntries;
i++)
913 DWORD dwFormatType,
DWORD dwFormatStrType,
void *pFormatStruct,
933 if (!
bits->cbData ||
bits->cbData > 2)
935 bytesNeeded +=
strlenW(infoNotAvailable) *
sizeof(
WCHAR);
937 *pcbFormat = bytesNeeded;
938 else if (*pcbFormat < bytesNeeded)
940 *pcbFormat = bytesNeeded;
948 *pcbFormat = bytesNeeded;
965 stringsLoaded =
TRUE;
969 bytesNeeded += bitStringLen;
970 if (
bits->cbData == 2)
974 bytesNeeded += bitStringLen;
976 bytesNeeded += 3 *
sizeof(
WCHAR);
981 *pcbFormat = bytesNeeded;
982 else if (*pcbFormat < bytesNeeded)
984 *pcbFormat = bytesNeeded;
992 bitStringLen = bytesNeeded;
996 str += bitStringLen /
sizeof(
WCHAR) - 1;
997 if (
bits->cbData == 2)
999 bitStringLen = bytesNeeded;
1002 str += bitStringLen /
sizeof(
WCHAR) - 1;
1026 DWORD dwFormatType,
DWORD dwFormatStrType,
void *pFormatStruct,
1042 static const WCHAR pathFmt[] = {
'%',
'd',0 };
1066 stringsLoaded =
TRUE;
1074 bytesNeeded += sepLen;
1076 if (
info->fPathLenConstraint)
1077 sprintfW(pathLength, pathFmt,
info->dwPathLenConstraint);
1082 *pcbFormat = bytesNeeded;
1083 else if (*pcbFormat < bytesNeeded)
1085 *pcbFormat = bytesNeeded;
1093 *pcbFormat = bytesNeeded;
1122 *pcbStr = bytesNeeded;
1125 else if (*pcbStr < bytesNeeded)
1127 *pcbStr = bytesNeeded;
1133 *pcbStr = bytesNeeded;
1165 WCHAR ipAddrBuf[32];
1172 switch (
entry->dwAltNameChoice)
1186 DWORD directoryNameLen;
1191 indentLevel + 1, &
entry->u.DirectoryName, strType,
NULL, 0);
1193 bytesNeeded += (directoryNameLen - 1) *
sizeof(
WCHAR);
1197 bytesNeeded +=
sizeof(
WCHAR);
1208 static const WCHAR ipAddrWithMaskFmt[] = {
'%',
'd',
'.',
'%',
'd',
'.',
1209 '%',
'd',
'.',
'%',
'd',
'/',
'%',
'd',
'.',
'%',
'd',
'.',
'%',
'd',
'.',
'%',
'd',0
1211 static const WCHAR ipAddrFmt[] = {
'%',
'd',
'.',
'%',
'd',
'.',
'%',
'd',
1215 if (
entry->u.IPAddress.cbData == 8)
1222 entry->u.IPAddress.pbData[0],
1223 entry->u.IPAddress.pbData[1],
1224 entry->u.IPAddress.pbData[2],
1225 entry->u.IPAddress.pbData[3]);
1230 entry->u.IPAddress.pbData[4],
1231 entry->u.IPAddress.pbData[5],
1232 entry->u.IPAddress.pbData[6],
1233 entry->u.IPAddress.pbData[7]);
1239 sprintfW(ipAddrBuf, ipAddrWithMaskFmt,
1240 entry->u.IPAddress.pbData[0],
1241 entry->u.IPAddress.pbData[1],
1242 entry->u.IPAddress.pbData[2],
1243 entry->u.IPAddress.pbData[3],
1244 entry->u.IPAddress.pbData[4],
1245 entry->u.IPAddress.pbData[5],
1246 entry->u.IPAddress.pbData[6],
1247 entry->u.IPAddress.pbData[7]);
1248 bytesNeeded += (
strlenW(ipAddrBuf) + 1) *
sizeof(
WCHAR);
1254 FIXME(
"unknown IP address format (%d bytes)\n",
1255 entry->u.IPAddress.cbData);
1261 FIXME(
"unimplemented for %d\n",
entry->dwAltNameChoice);
1268 *pcbStr = bytesNeeded;
1269 else if (*pcbStr < bytesNeeded)
1271 *pcbStr = bytesNeeded;
1279 *pcbStr = bytesNeeded;
1282 for (
i = 0;
i < indentLevel;
i++)
1290 switch (
entry->dwAltNameChoice)
1306 indentLevel + 1, &
entry->u.DirectoryName, strType,
str,
1307 bytesNeeded /
sizeof(
WCHAR));
1318 for (
i = 0;
i < indentLevel;
i++)
1363 if (i < name->cAltEntry - 1)
1364 bytesNeeded += sepLen;
1369 bytesNeeded +=
sizeof(
WCHAR);
1371 *pcbStr = bytesNeeded;
1372 else if (*pcbStr < bytesNeeded)
1374 *pcbStr = bytesNeeded;
1380 *pcbStr = bytesNeeded;
1388 if (i < name->cAltEntry - 1)
1403 DWORD dwFormatType,
DWORD dwFormatStrType,
void *pFormatStruct,
1424 DWORD bytesNeeded, sepLen;
1442 bytesNeeded += sepLen;
1446 *pcbStr = bytesNeeded;
1447 else if (*pcbStr < bytesNeeded)
1449 *pcbStr = bytesNeeded;
1455 *pcbStr = bytesNeeded;
1469 DWORD dwFormatType,
DWORD dwFormatStrType,
void *pFormatStruct,
1501 if (
info->KeyId.cbData)
1503 needSeparator =
TRUE;
1511 if (
info->AuthorityCertIssuer.cAltEntry)
1514 bytesNeeded += sepLen;
1515 needSeparator =
TRUE;
1524 if (
info->AuthorityCertSerialNumber.cbData)
1527 bytesNeeded += sepLen;
1539 *pcbFormat = bytesNeeded;
1540 else if (*pcbFormat < bytesNeeded)
1542 *pcbFormat = bytesNeeded;
1550 *pcbFormat = bytesNeeded;
1551 needSeparator =
FALSE;
1552 if (
info->KeyId.cbData)
1554 needSeparator =
TRUE;
1563 if (
info->AuthorityCertIssuer.cAltEntry)
1570 needSeparator =
TRUE;
1580 if (
info->AuthorityCertSerialNumber.cbData)
1609 DWORD dwFormatType,
DWORD dwFormatStrType,
void *pFormatStruct,
1628 if (!
info->cAccDescr)
1633 bytesNeeded +=
strlenW(infoNotAvailable) *
sizeof(
WCHAR);
1635 *pcbFormat = bytesNeeded;
1636 else if (*pcbFormat < bytesNeeded)
1638 *pcbFormat = bytesNeeded;
1644 *pcbFormat = bytesNeeded;
1645 strcpyW(pbFormat, infoNotAvailable);
1650 static const WCHAR numFmt[] = {
'%',
'd',0 };
1654 LPCWSTR headingSep, accessMethodSep, locationSep;
1655 WCHAR accessDescrNum[11];
1665 stringsLoaded =
TRUE;
1670 accessMethodSep =
crlf;
1677 locationSep =
equal;
1683 bytesNeeded +=
sizeof(
WCHAR);
1684 sprintfW(accessDescrNum, numFmt,
i + 1);
1685 bytesNeeded +=
strlenW(accessDescrNum) *
sizeof(
WCHAR);
1686 bytesNeeded +=
sizeof(
WCHAR);
1696 else if (!
strcmp(
info->rgAccDescr[
i].pszAccessMethod,
1701 bytesNeeded +=
sizeof(
WCHAR);
1702 bytesNeeded +=
sizeof(
WCHAR);
1703 bytesNeeded +=
strlen(
info->rgAccDescr[
i].pszAccessMethod)
1705 bytesNeeded +=
sizeof(
WCHAR);
1707 bytesNeeded +=
strlenW(accessMethodSep) *
sizeof(
WCHAR);
1717 if (i < info->cAccDescr - 1)
1718 bytesNeeded +=
strlenW(accessMethodSep) *
sizeof(
WCHAR);
1723 *pcbFormat = bytesNeeded;
1724 else if (*pcbFormat < bytesNeeded)
1726 *pcbFormat = bytesNeeded;
1733 DWORD altNameEntrySize;
1735 *pcbFormat = bytesNeeded;
1741 sprintfW(accessDescrNum, numFmt,
i + 1);
1762 else if (!
strcmp(
info->rgAccDescr[
i].pszAccessMethod,
1775 for (oidPtr =
info->rgAccDescr[
i].pszAccessMethod;
1776 *oidPtr; oidPtr++,
str++)
1794 altNameEntrySize = bytesNeeded;
1796 &
info->rgAccDescr[
i].AccessLocation,
str,
1799 str += altNameEntrySize /
sizeof(
WCHAR) - 1;
1800 if (i < info->cAccDescr - 1)
1842 static const WCHAR sep[] = {
',',
' ',0 };
1843 static const WCHAR bitsFmt[] = {
' ',
'(',
'%',
'0',
'2',
'x',
')',0 };
1845 unsigned int i, numReasons = 0;
1855 stringsLoaded =
TRUE;
1872 *pcbStr = bytesNeeded;
1873 else if (*pcbStr < bytesNeeded)
1875 *pcbStr = bytesNeeded;
1881 *pcbStr = bytesNeeded;
1908 DWORD dwFormatType,
DWORD dwFormatStrType,
void *pFormatStruct,
1924 static const WCHAR numFmt[] = {
'%',
'd',0 };
1925 static const WCHAR colon[] = {
':',0 };
1930 WCHAR distPointNum[11];
1941 stringsLoaded =
TRUE;
1954 for (
i = 0;
ret &&
i <
info->cDistPoint;
i++)
2002 bytesNeeded +=
sizeof(
WCHAR);
2005 bytesNeeded +=
sizeof(
WCHAR);
2017 bytesNeeded +=
strlenW(infoNotAvailable) *
sizeof(
WCHAR);
2019 *pcbFormat = bytesNeeded;
2020 else if (*pcbFormat < bytesNeeded)
2022 *pcbFormat = bytesNeeded;
2028 *pcbFormat = bytesNeeded;
2029 strcpyW(pbFormat, infoNotAvailable);
2035 *pcbFormat = bytesNeeded;
2036 else if (*pcbFormat < bytesNeeded)
2038 *pcbFormat = bytesNeeded;
2046 *pcbFormat = bytesNeeded;
2047 for (
i = 0;
ret &&
i <
info->cDistPoint;
i++)
2068 DWORD altNameSize = bytesNeeded;
2098 str += altNameSize /
sizeof(
WCHAR) - 1;
2102 DWORD reasonSize = bytesNeeded;
2109 str += reasonSize /
sizeof(
WCHAR) - 1;
2113 DWORD crlIssuerSize = bytesNeeded;
2123 str += crlIssuerSize /
sizeof(
WCHAR) - 1;
2134 DWORD dwFormatType,
DWORD dwFormatStrType,
void *pFormatStruct,
2168 for (
i = 0;
i <
usage->cUsageIdentifier;
i++)
2177 bytesNeeded +=
sizeof(
WCHAR);
2178 bytesNeeded +=
sizeof(
WCHAR);
2179 bytesNeeded +=
strlen(
usage->rgpszUsageIdentifier[
i]) *
2181 bytesNeeded +=
sizeof(
WCHAR);
2182 if (i < usage->cUsageIdentifier - 1)
2183 bytesNeeded += sepLen;
2186 *pcbFormat = bytesNeeded;
2187 else if (*pcbFormat < bytesNeeded)
2189 *pcbFormat = bytesNeeded;
2197 *pcbFormat = bytesNeeded;
2198 for (
i = 0;
i <
usage->cUsageIdentifier;
i++)
2201 usage->rgpszUsageIdentifier[
i],
2217 for (oidPtr =
usage->rgpszUsageIdentifier[
i]; *oidPtr; oidPtr++)
2221 if (i < usage->cUsageIdentifier - 1)
2244 DWORD dwFormatType,
DWORD dwFormatStrType,
void *pFormatStruct,
2264 if (!
bits->cbData ||
bits->cbData > 1)
2266 bytesNeeded +=
strlenW(infoNotAvailable) *
sizeof(
WCHAR);
2268 *pcbFormat = bytesNeeded;
2269 else if (*pcbFormat < bytesNeeded)
2271 *pcbFormat = bytesNeeded;
2279 *pcbFormat = bytesNeeded;
2295 stringsLoaded =
TRUE;
2299 bytesNeeded += bitStringLen;
2300 bytesNeeded += 3 *
sizeof(
WCHAR);
2303 bytesNeeded +=
size;
2305 *pcbFormat = bytesNeeded;
2306 else if (*pcbFormat < bytesNeeded)
2308 *pcbFormat = bytesNeeded;
2316 bitStringLen = bytesNeeded;
2320 str += bitStringLen /
sizeof(
WCHAR) - 1;
2343 DWORD dwFormatType,
DWORD dwFormatStrType,
void *pFormatStruct,
2373 stringsLoaded =
TRUE;
2389 bytesNeeded += sepLen;
2399 *pcbFormat = bytesNeeded;
2400 else if (*pcbFormat < bytesNeeded)
2402 *pcbFormat = bytesNeeded;
2410 *pcbFormat = bytesNeeded;
2436 DWORD dwFormatType,
DWORD dwFormatStrType,
void *pFormatStruct,
2453 *pcbFormat =
value->Value.cbData;
2454 else if (*pcbFormat < value->
Value.cbData)
2456 *pcbFormat =
value->Value.cbData;
2464 *pcbFormat =
value->Value.cbData;
2486 switch (
LOWORD(lpszStructType))
2550 DWORD dwFormatStrType,
void *pFormatStruct,
LPCSTR lpszStructType,
2557 TRACE(
"(%08x, %d, %08x, %p, %s, %p, %d, %p, %p)\n",
dwCertEncodingType,
2558 dwFormatType, dwFormatStrType, pFormatStruct,
debugstr_a(lpszStructType),
2559 pbEncoded, cbEncoded, pbFormat, pcbFormat);
2562 dwFormatStrType, lpszStructType)))
2569 (
void **)&
format, &hFunc);
2576 pFormatStruct, lpszStructType,
pbEncoded, cbEncoded, pbFormat,
#define CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT
#define SPC_FINANCIAL_CRITERIA_OBJID
#define IDS_ALT_NAME_DIRECTORY_NAME
#define CERT_NON_REPUDIATION_KEY_USAGE
#define IDS_NETSCAPE_SMIME_CA
HCRYPTOIDFUNCSET WINAPI CryptInitOIDFunctionSet(LPCSTR pszFuncName, DWORD dwFlags)
const WINE_CONTEXT_INTERFACE * pCRLInterface
static context_t * context_from_ptr(const void *ptr)
#define CERT_X500_NAME_STR
static WCHAR certificateHold[MAX_STRING_RESOURCE_LEN]
CRL_DIST_POINT_NAME DistPointName
static struct reason_map_entry reason_map[]
static BOOL CRYPT_QueryUnsignedMessage(const CRYPT_DATA_BLOB *blob, DWORD *pdwMsgAndCertEncodingType, DWORD *pdwContentType, HCRYPTMSG *phMsg)
static WCHAR accessMethod[MAX_STRING_RESOURCE_LEN]
#define IDS_NON_REPUDIATION
BOOL CRYPT_ReadSerializedStoreFromFile(HANDLE file, HCERTSTORE store) DECLSPEC_HIDDEN
BOOL WINAPI CryptFormatObject(DWORD dwCertEncodingType, DWORD dwFormatType, DWORD dwFormatStrType, void *pFormatStruct, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, void *pbFormat, DWORD *pcbFormat)
WINE_UNICODE_INLINE unsigned int strlenW(const WCHAR *str)
static const WCHAR indent[]
#define X509_ENHANCED_KEY_USAGE
static WCHAR fullName[MAX_STRING_RESOURCE_LEN]
static BOOL WINAPI CRYPT_FormatNetscapeCertType(DWORD dwCertEncodingType, DWORD dwFormatType, DWORD dwFormatStrType, void *pFormatStruct, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, void *pbFormat, DWORD *pcbFormat)
#define IDS_KEY_ENCIPHERMENT
BOOL WINAPI CryptDecodeObjectEx(DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, PCRYPT_DECODE_PARA pDecodePara, void *pvStructInfo, DWORD *pcbStructInfo)
#define CERT_ALT_NAME_DNS_NAME
#define IDS_SUBJECT_TYPE_END_CERT
pCryptSIPGetSignedDataMsg pfGet
static BOOL WINAPI CRYPT_FormatBasicConstraints2(DWORD dwCertEncodingType, DWORD dwFormatType, DWORD dwFormatStrType, void *pFormatStruct, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, void *pbFormat, DWORD *pcbFormat)
static BOOL CRYPT_ReadBlobFromFile(LPCWSTR fileName, PCERT_BLOB blob)
#define CERT_QUERY_CONTENT_FLAG_PFX
static BOOL WINAPI CRYPT_FormatSpcFinancialCriteria(DWORD dwCertEncodingType, DWORD dwFormatType, DWORD dwFormatStrType, void *pFormatStruct, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, void *pbFormat, DWORD *pcbFormat)
ACPI_SIZE strlen(const char *String)
static BOOL WINAPI CRYPT_FormatUnicodeString(DWORD dwCertEncodingType, DWORD dwFormatType, DWORD dwFormatStrType, void *pFormatStruct, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, void *pbFormat, DWORD *pcbFormat)
#define CRL_REASON_KEY_COMPROMISE_FLAG
#define szOID_NETSCAPE_REVOCATION_URL
static BOOL CRYPT_FormatReason(DWORD dwFormatStrType, const CRYPT_BIT_BLOB *reasonFlags, LPWSTR str, DWORD *pcbStr)
#define CERT_ALT_NAME_DIRECTORY_NAME
#define szOID_NETSCAPE_CA_REVOCATION_URL
#define CRYPT_STRING_BASE64_ANY
#define IDS_NETSCAPE_SSL_CLIENT
#define NETSCAPE_SIGN_CERT_TYPE
#define CERT_QUERY_CONTENT_CRL
static BOOL CRYPT_FormatCertSerialNumber(const CRYPT_DATA_BLOB *serialNum, LPWSTR str, DWORD *pcbStr)
#define IDS_SUBJECT_TYPE_CA
#define CERT_QUERY_OBJECT_BLOB
const WINE_CONTEXT_INTERFACE * pCTLInterface
static BOOL CRYPT_QueryContextObject(DWORD dwObjectType, const void *pvObject, DWORD dwExpectedContentTypeFlags, DWORD dwExpectedFormatTypeFlags, DWORD *pdwMsgAndCertEncodingType, DWORD *pdwContentType, DWORD *pdwFormatType, HCERTSTORE *phCertStore, const void **ppvContext)
#define CERT_ALT_NAME_URL
#define CERT_QUERY_CONTENT_CTL
#define IDS_CRL_DIST_POINT_FULL_NAME
#define CERT_STORE_PROV_MSG
static BOOL WINAPI CRYPT_FormatKeyUsage(DWORD dwCertEncodingType, DWORD dwFormatType, DWORD dwFormatStrType, void *pFormatStruct, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, void *pbFormat, DWORD *pcbFormat)
#define CRYPT_OID_FORMAT_OBJECT_FUNC
BOOL WINAPI CryptSIPRetrieveSubjectGuid(LPCWSTR FileName, HANDLE hFileIn, GUID *pgSubject)
#define CERT_QUERY_CONTENT_SERIALIZED_CERT
#define CERT_OFFLINE_CRL_SIGN_KEY_USAGE
#define IDS_CRL_DIST_POINT
#define IDS_NETSCAPE_SIGN_CA
#define INVALID_HANDLE_VALUE
#define IDS_CRL_DIST_POINT_NAME
#define IDS_CRL_DIST_POINT_ISSUER
#define CERT_ENCODING_TYPE_MASK
void Context_AddRef(context_t *context)
#define PKCS_7_ASN_ENCODING
#define CERT_QUERY_OBJECT_FILE
#define IDS_REASON_AFFILIATION_CHANGED
#define CERT_QUERY_CONTENT_PKCS7_SIGNED
#define CERT_KEY_CERT_SIGN_KEY_USAGE
#define szOID_NETSCAPE_CERT_TYPE
static BOOL WINAPI CRYPT_FormatEnhancedKeyUsage(DWORD dwCertEncodingType, DWORD dwFormatType, DWORD dwFormatStrType, void *pFormatStruct, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, void *pbFormat, DWORD *pcbFormat)
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
GLenum GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * bits
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
void Context_Release(context_t *context)
#define szOID_BASIC_CONSTRAINTS2
#define CERT_QUERY_CONTENT_SERIALIZED_CTL
static BOOL CRYPT_QueryEmbeddedMessageObject(DWORD dwObjectType, const void *pvObject, DWORD dwExpectedContentTypeFlags, DWORD *pdwMsgAndCertEncodingType, DWORD *pdwContentType, HCERTSTORE *phCertStore, HCRYPTMSG *phMsg)
#define CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED
BOOL(WINAPI * CryptFormatObjectFunc)(DWORD, DWORD, DWORD, void *, LPCSTR, const BYTE *, DWORD, void *, DWORD *)
static WCHAR superseded[MAX_STRING_RESOURCE_LEN]
CERT_ALT_NAME_INFO FullName
HCRYPTMSG WINAPI CryptMsgOpenToDecode(DWORD dwMsgEncodingType, DWORD dwFlags, DWORD dwMsgType, HCRYPTPROV_LEGACY hCryptProv, PCERT_INFO pRecipientInfo, PCMSG_STREAM_INFO pStreamInfo)
static BOOL WINAPI CRYPT_FormatCRLDistPoints(DWORD dwCertEncodingType, DWORD dwFormatType, DWORD dwFormatStrType, void *pFormatStruct, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, void *pbFormat, DWORD *pcbFormat)
static WCHAR distPointName[MAX_STRING_RESOURCE_LEN]
static BOOL CRYPT_QuerySerializedStoreFromBlob(const CRYPT_DATA_BLOB *blob, DWORD *pdwMsgAndCertEncodingType, DWORD *pdwContentType, HCERTSTORE *phCertStore, HCRYPTMSG *phMsg)
#define IDS_REASON_KEY_COMPROMISE
GLenum GLuint GLenum GLsizei const GLchar * buf
#define X509_ASN_ENCODING
#define CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL
static BOOL WINAPI CRYPT_FormatAuthorityKeyId2(DWORD dwCertEncodingType, DWORD dwFormatType, DWORD dwFormatStrType, void *pFormatStruct, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, void *pbFormat, DWORD *pcbFormat)
#define szOID_NETSCAPE_CA_POLICY_URL
LPVOID WINAPI CryptMemAlloc(ULONG cbSize)
#define IDS_ACCESS_LOCATION
#define CERT_STORE_CREATE_NEW_FLAG
static BOOL WINAPI CRYPT_FormatAuthorityInfoAccess(DWORD dwCertEncodingType, DWORD dwFormatType, DWORD dwFormatStrType, void *pFormatStruct, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, void *pbFormat, DWORD *pcbFormat)
BOOL WINAPI CryptStringToBinaryW(LPCWSTR pszString, DWORD cchString, DWORD dwFlags, BYTE *pbBinary, DWORD *pcbBinary, DWORD *pdwSkip, DWORD *pdwFlags)
static BOOL CRYPT_QuerySerializedContextObject(DWORD dwObjectType, const void *pvObject, DWORD dwExpectedContentTypeFlags, DWORD *pdwMsgAndCertEncodingType, DWORD *pdwContentType, HCERTSTORE *phCertStore, const void **ppvContext)
#define CERT_QUERY_CONTENT_FLAG_CRL
#define IDS_FINANCIAL_CRITERIA_MEETS_CRITERIA
static struct BitToString keyUsageByte0Map[]
AddEncodedContextToStoreFunc addEncodedToStore
#define X509_AUTHORITY_INFO_ACCESS
#define NETSCAPE_SSL_SERVER_AUTH_CERT_TYPE
#define CERT_STORE_PROV_MEMORY
#define X509_UNICODE_ANY_STRING
#define X509_BASIC_CONSTRAINTS2
static WCHAR accessLocation[MAX_STRING_RESOURCE_LEN]
static WCHAR available[MAX_STRING_RESOURCE_LEN]
#define offsetof(TYPE, MEMBER)
#define CRL_REASON_CA_COMPROMISE_FLAG
#define IDS_REASON_CA_COMPROMISE
BOOL WINAPI CertCloseStore(HCERTSTORE hCertStore, DWORD dwFlags)
static struct BitToString netscapeCertTypeMap[]
#define IDS_ALT_NAME_DNS_NAME
#define IDS_DATA_ENCIPHERMENT
static CryptFormatObjectFunc CRYPT_GetBuiltinFormatFunction(DWORD encodingType, DWORD formatStrType, LPCSTR lpszStructType)
#define szOID_SUBJECT_ALT_NAME2
#define IDS_REASON_CESSATION_OF_OPERATION
#define CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE
static WCHAR unknown[MAX_STRING_RESOURCE_LEN]
#define szOID_ISSUER_ALT_NAME
#define CERT_NAME_STR_CRLF_FLAG
#define IDS_CRL_DIST_POINT_RDN_NAME
#define NETSCAPE_SMIME_CERT_TYPE
static WCHAR notAvailable[MAX_STRING_RESOURCE_LEN]
static BOOL CRYPT_QueryMessageObject(DWORD dwObjectType, const void *pvObject, DWORD dwExpectedContentTypeFlags, DWORD dwExpectedFormatTypeFlags, DWORD *pdwMsgAndCertEncodingType, DWORD *pdwContentType, DWORD *pdwFormatType, HCERTSTORE *phCertStore, HCRYPTMSG *phMsg)
#define ERROR_FILE_NOT_FOUND
static WCHAR subjectTypeCA[MAX_STRING_RESOURCE_LEN]
#define szOID_CRL_DIST_POINTS
_In_ DWORD _In_ DWORD _In_ DWORD _In_ DWORD _Out_opt_ DWORD _Outptr_opt_ const void ** ppvContext
#define CERT_QUERY_CONTENT_FLAG_CTL
#define IDS_CERT_SERIAL_NUMBER
#define CERT_QUERY_CONTENT_FLAG_CERT
BOOL WINAPI CryptQueryObject(DWORD dwObjectType, const void *pvObject, DWORD dwExpectedContentTypeFlags, DWORD dwExpectedFormatTypeFlags, DWORD dwFlags, DWORD *pdwMsgAndCertEncodingType, DWORD *pdwContentType, DWORD *pdwFormatType, HCERTSTORE *phCertStore, HCRYPTMSG *phMsg, const void **ppvContext)
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
HCERTSTORE WINAPI CertDuplicateStore(HCERTSTORE hCertStore)
static BOOL(WINAPI *pCryptQueryObject)(DWORD
const void * CRYPT_ReadSerializedElement(const BYTE *pbElement, DWORD cbElement, DWORD dwContextTypeFlags, DWORD *pdwContentType) DECLSPEC_HIDDEN
#define CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL
#define IDS_NETSCAPE_SIGN
static WCHAR operationCeased[MAX_STRING_RESOURCE_LEN]
#define CERT_KEY_ENCIPHERMENT_KEY_USAGE
#define NETSCAPE_SIGN_CA_CERT_TYPE
#define szOID_AUTHORITY_INFO_ACCESS
#define CERT_STORE_CERTIFICATE_CONTEXT
#define CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED
static WCHAR pathLengthHeader[MAX_STRING_RESOURCE_LEN]
DWORD cert_name_to_str_with_indent(DWORD dwCertEncodingType, DWORD indent, const CERT_NAME_BLOB *pName, DWORD dwStrType, LPWSTR psz, DWORD csz) DECLSPEC_HIDDEN
static BOOL CRYPT_FormatCertIssuer(DWORD dwFormatStrType, const CERT_ALT_NAME_INFO *issuer, LPWSTR str, DWORD *pcbStr)
static WCHAR no[MAX_STRING_RESOURCE_LEN]
#define CRL_DIST_POINT_NO_NAME
#define CERT_DECIPHER_ONLY_KEY_USAGE
BOOL WINAPI CryptStringToBinaryA(LPCSTR pszString, DWORD cchString, DWORD dwFlags, BYTE *pbBinary, DWORD *pcbBinary, DWORD *pdwSkip, DWORD *pdwFlags)
#define CRYPT_FORMAT_STR_MULTI_LINE
#define CRL_DIST_POINT_FULL_NAME
#define CRYPT_FORMAT_STR_NO_HEX
#define NETSCAPE_SSL_CA_CERT_TYPE
#define IDS_FINANCIAL_CRITERIA_NOT_AVAILABLE
static BOOL CRYPT_FormatAltNameInfo(DWORD dwFormatStrType, DWORD indentLevel, const CERT_ALT_NAME_INFO *name, LPWSTR str, DWORD *pcbStr)
static BOOL WINAPI CRYPT_FormatAltName(DWORD dwCertEncodingType, DWORD dwFormatType, DWORD dwFormatStrType, void *pFormatStruct, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, void *pbFormat, DWORD *pcbFormat)
static BOOL CRYPT_QueryContextBlob(const CERT_BLOB *blob, DWORD dwExpectedContentTypeFlags, HCERTSTORE store, DWORD *contentType, const void **ppvContext)
static LPCSTR DWORD void BYTE * pbEncoded
#define IDS_NETSCAPE_SMIME
#define IDS_OFFLINE_CRL_SIGN
#define CERT_ALT_NAME_RFC822_NAME
CERT_ALT_NAME_INFO CRLIssuer
static WCHAR affiliationChanged[MAX_STRING_RESOURCE_LEN]
#define CERT_QUERY_CONTENT_SERIALIZED_CRL
#define CERT_QUERY_CONTENT_SERIALIZED_STORE
DWORD WINAPI GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh)
BOOL CRYPT_ReadSerializedStoreFromBlob(const CRYPT_DATA_BLOB *blob, HCERTSTORE store) DECLSPEC_HIDDEN
#define szOID_NETSCAPE_COMMENT
CRYPT_BIT_BLOB ReasonFlags
#define IDS_ACCESS_METHOD_CA_ISSUERS
#define IDS_NETSCAPE_SSL_SERVER
static const WCHAR colonSep[]
_In_opt_ PVOID _In_ ULONG _In_ PVOID context
#define IDS_NETSCAPE_SSL_CA
static WCHAR ocsp[MAX_STRING_RESOURCE_LEN]
static BOOL CRYPT_QuerySerializedStoreObject(DWORD dwObjectType, const void *pvObject, DWORD *pdwMsgAndCertEncodingType, DWORD *pdwContentType, HCERTSTORE *phCertStore, HCRYPTMSG *phMsg)
#define CERT_QUERY_FORMAT_FLAG_BINARY
#define CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED
static WCHAR reason[MAX_STRING_RESOURCE_LEN]
#define FILE_ATTRIBUTE_NORMAL
#define CRYPT_ENHKEY_USAGE_OID_GROUP_ID
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
GLsizeiptr const GLvoid GLenum usage
static const WCHAR commaSpace[]
#define CERT_QUERY_FORMAT_BASE64_ENCODED
GLsizei const GLfloat * value
#define CRYPT_OID_INFO_OID_KEY
#define CERT_ENCIPHER_ONLY_KEY_USAGE
#define szOID_ISSUER_ALT_NAME2
#define CERT_NAME_STR_REVERSE_FLAG
#define CERT_DATA_ENCIPHERMENT_KEY_USAGE
#define IDS_ACCESS_METHOD_OCSP
_In_ DWORD dwCertEncodingType
#define IDS_ENCIPHER_ONLY
#define CERT_STORE_ALL_CONTEXT_FLAG
#define CERT_ALT_NAME_IP_ADDRESS
#define ERROR_INVALID_DATA
#define IDS_KEY_AGREEMENT
#define IDS_ALT_NAME_IP_ADDRESS
#define CRL_REASON_AFFILIATION_CHANGED_FLAG
static struct BitToString keyUsageByte1Map[]
static BOOL CRYPT_FormatAltNameEntry(DWORD dwFormatStrType, DWORD indentLevel, const CERT_ALT_NAME_ENTRY *entry, LPWSTR str, DWORD *pcbStr)
#define IDS_ACCESS_METHOD_UNKNOWN
static WCHAR rdnName[MAX_STRING_RESOURCE_LEN]
static WCHAR subjectTypeHeader[MAX_STRING_RESOURCE_LEN]
static BOOL WINAPI CRYPT_FormatHexString(DWORD dwCertEncodingType, DWORD dwFormatType, DWORD dwFormatStrType, void *pFormatStruct, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, void *pbFormat, DWORD *pcbFormat)
WINE_UNICODE_INLINE WCHAR * strcpyW(WCHAR *dst, const WCHAR *src)
#define CERT_STORE_CTL_CONTEXT
#define szOID_NETSCAPE_BASE_URL
#define IDS_REASON_SUPERSEDED
#define CERT_DIGITAL_SIGNATURE_KEY_USAGE
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
static WCHAR caCompromise[MAX_STRING_RESOURCE_LEN]
HLOCAL NTAPI LocalFree(HLOCAL hMem)
#define NETSCAPE_SSL_CLIENT_AUTH_CERT_TYPE
BOOL WINAPI CryptFreeOIDFunctionAddress(HCRYPTOIDFUNCADDR hFuncAddr, DWORD dwFlags)
#define szOID_SUBJECT_ALT_NAME
#define CERT_QUERY_CONTENT_FLAG_CERT_PAIR
#define CRL_REASON_CESSATION_OF_OPERATION_FLAG
#define NETSCAPE_SMIME_CA_CERT_TYPE
#define ReadFile(a, b, c, d, e)
#define IDS_INFO_NOT_AVAILABLE
#define CRL_REASON_CERTIFICATE_HOLD_FLAG
#define szOID_PKIX_CA_ISSUERS
#define CERT_STORE_CRL_CONTEXT
static const WCHAR colonCrlf[]
#define IDS_PATH_LENGTH_NONE
#define CERT_QUERY_FORMAT_BINARY
BOOL WINAPI CryptSIPLoad(const GUID *pgSubject, DWORD dwFlags, SIP_DISPATCH_INFO *pSipDispatch)
#define szOID_ENHANCED_KEY_USAGE
#define szOID_AUTHORITY_KEY_IDENTIFIER2
static BOOL CRYPT_FormatKeyId(const CRYPT_DATA_BLOB *keyId, LPWSTR str, DWORD *pcbStr)
static WCHAR aia[MAX_STRING_RESOURCE_LEN]
#define X509_AUTHORITY_KEY_ID2
HCERTSTORE WINAPI CertOpenStore(LPCSTR lpszStoreProvider, DWORD dwMsgAndCertEncodingType, HCRYPTPROV_LEGACY hCryptProv, DWORD dwFlags, const void *pvPara)
static WCHAR crlDistPoint[MAX_STRING_RESOURCE_LEN]
VOID WINAPI CryptMemFree(LPVOID pv)
#define CERT_QUERY_CONTENT_CERT
BOOL WINAPI CryptMsgClose(HCRYPTMSG hCryptMsg)
static WCHAR yes[MAX_STRING_RESOURCE_LEN]
static WCHAR keyCompromise[MAX_STRING_RESOURCE_LEN]
BOOL WINAPI CryptMsgUpdate(HCRYPTMSG hCryptMsg, const BYTE *pbData, DWORD cbData, BOOL fFinal)
#define CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED
#define SPC_FINANCIAL_CRITERIA_STRUCT
#define CRYPT_DECODE_ALLOC_FLAG
BOOL WINAPI CryptGetOIDFunctionAddress(HCRYPTOIDFUNCSET hFuncSet, DWORD dwEncodingType, LPCSTR pszOID, DWORD dwFlags, void **ppvFuncAddr, HCRYPTOIDFUNCADDR *phFuncAddr)
int strcmp(const char *String1, const char *String2)
static WCHAR meetsCriteria[MAX_STRING_RESOURCE_LEN]
#define IDS_ALT_NAME_MASK
#define IDS_CRL_DIST_POINT_REASON
BOOL WINAPI CryptMsgGetParam(HCRYPTMSG hCryptMsg, DWORD dwParamType, DWORD dwIndex, void *pvData, DWORD *pcbData)
#define X509_ALTERNATE_NAME
static const WCHAR crlf[]
DWORD dwDistPointNameChoice
#define CRL_REASON_SUPERSEDED_FLAG
static BOOL CRYPT_QuerySerializedStoreFromFile(LPCWSTR fileName, DWORD *pdwMsgAndCertEncodingType, DWORD *pdwContentType, HCERTSTORE *phCertStore, HCRYPTMSG *phMsg)
#define X509_CRL_DIST_POINTS
#define CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED
GLuint GLuint GLsizei GLenum type
#define CERT_KEY_AGREEMENT_KEY_USAGE
PCCRYPT_OID_INFO WINAPI CryptFindOIDInfo(DWORD dwKeyType, void *pvKey, DWORD dwGroupId)
#define MAX_STRING_RESOURCE_LEN
static WCHAR issuer[MAX_STRING_RESOURCE_LEN]
static BOOL CRYPT_QuerySignedMessage(const CRYPT_DATA_BLOB *blob, DWORD *pdwMsgAndCertEncodingType, DWORD *pdwContentType, HCRYPTMSG *phMsg)
const WINE_CONTEXT_INTERFACE * pCertInterface
#define CERT_QUERY_CONTENT_FLAG_PKCS10
#define IDS_FINANCIAL_CRITERIA
#define IDS_DECIPHER_ONLY
#define szOID_NETSCAPE_SSL_SERVER_NAME
static BOOL CRYPT_FormatHexStringWithPrefix(const CRYPT_DATA_BLOB *blob, int id, LPWSTR str, DWORD *pcbStr)
#define IDS_ALT_NAME_RFC822_NAME
#define CERT_STORE_ADD_ALWAYS
#define IDS_USAGE_UNKNOWN
WINE_DEFAULT_DEBUG_CHANNEL(crypt)
static WCHAR financialCriteria[MAX_STRING_RESOURCE_LEN]
#define CERT_CRL_SIGN_KEY_USAGE
static WCHAR caIssuers[MAX_STRING_RESOURCE_LEN]
#define IDS_DIGITAL_SIGNATURE
_CRTIMP int __cdecl read(_In_ int _FileHandle, _Out_writes_bytes_(_MaxCharCount) void *_DstBuf, _In_ unsigned int _MaxCharCount)
BOOL fFinancialInfoAvailable
static WCHAR subjectTypeEndCert[MAX_STRING_RESOURCE_LEN]
#define IDS_ACCESS_METHOD
WCHAR str[MAX_STRING_RESOURCE_LEN]
#define IDS_FINANCIAL_CRITERIA_AVAILABLE
static BOOL CRYPT_FormatBits(BYTE bits, const struct BitToString *map, DWORD mapEntries, void *pbFormat, DWORD *pcbFormat, BOOL *first)
#define IDS_REASON_CERTIFICATE_HOLD
#define szOID_NETSCAPE_CERT_RENEWAL_URL