19#define NONAMELESSUNION
50 case DLL_WINE_PREATTACH:
88 TRACE(
"(%p)\n", pProvData);
102 FIXME(
"(%p, %d, %s, %d)\n", pProvData, idxSigner, fCounterSignerChain ?
"TRUE" :
"FALSE", idxCounterSigner);
111 FIXME(
"(%p)\n", pProvData);
117 static const WCHAR policyFlagsKey[] = {
'S',
'o',
'f',
't',
'w',
'a',
'r',
'e',
118 '\\',
'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
'\\',
'C',
'r',
'y',
'p',
't',
'o',
'g',
119 'r',
'a',
'p',
'h',
'y',
'\\',
'{',
'7',
'8',
'0',
'1',
'e',
'b',
'd',
'0',
'-',
'c',
'f',
120 '4',
'b',
'-',
'1',
'1',
'd',
'0',
'-',
'8',
'5',
'1',
'f',
'-',
'0',
'0',
'6',
'0',
'9',
121 '7',
'9',
'3',
'8',
'7',
'e',
'a',
'}',0 };
122 static const WCHAR policyFlags[] = {
'P',
'o',
'l',
'i',
'c',
'y',
'F',
'l',
'a',
137 if (
flags & 0x00010000)
157 static const WCHAR disallowedW[] =
158 {
'D',
'i',
's',
'a',
'l',
'l',
'o',
'w',
'e',
'd',0 };
180 DWORD confidence = 0;
200 memset(&signer, 0,
sizeof(signer));
228 element->TrustStatus.dwErrorStatus);
229 cert->dwError =
element->TrustStatus.dwErrorStatus;
249 data->pWintrustData->u.pBlob &&
data->pWintrustData->u.pBlob->cbMemObject ==
251 data->pWintrustData->u.pBlob->pbMemObject)
253 data->pWintrustData->u.pBlob->pbMemObject;
263 if (
cert->cRootStores)
269 for (
i = 0;
i <
cert->cRootStores;
i++)
273 if (
cert->cTrustStores)
279 for (
i = 0;
i <
cert->cTrustStores;
i++)
283 if (
cert->cRootStores ||
cert->cStores ||
cert->cTrustStores)
290 config.hRestrictedTrust = trust;
292 config.rghAdditionalStore =
cert->rghstoreCAs;
313 FIXME(
"unimplemented for UI choice %d\n",
314 data->pWintrustData->dwUIChoice);
321 memset(&chainPara, 0,
sizeof(chainPara));
322 chainPara.
cbSize =
sizeof(chainPara);
336 if (
chain->cChain != 1)
338 FIXME(
"unimplemented for more than 1 simple chain\n");
424 memset(&trust, 0,
sizeof(trust));
425 trust.
cbSize =
sizeof(trust);
435 blob.cbMemObject =
sizeof(trust);
437 memset(&wtd, 0,
sizeof(wtd));
449 memset(&uiInfo, 0,
sizeof(uiInfo));
450 uiInfo.
dwSize =
sizeof(uiInfo);
479 charsNeeded = (cbEncoded * 3);
484 *pcchStr = charsNeeded;
487 else if (*pcchStr < charsNeeded)
489 *pcchStr = charsNeeded;
495 static const WCHAR fmt[] = {
'%',
'0',
'2',
'x',
' ',0 };
496 static const WCHAR endFmt[] = {
'%',
'0',
'2',
'x',0 };
500 *pcchStr = charsNeeded;
503 for (
i = 0;
i < cbEncoded;
i++)
505 if (
i < cbEncoded - 1)
548 if (
str && *pcchStr >= charsNeeded)
559 if (
str && *pcchStr >= charsNeeded)
564 charsNeeded += sepLen;
565 if (
str && *pcchStr >= charsNeeded)
572 *pcchStr = charsNeeded;
573 else if (*pcchStr < charsNeeded)
575 *pcchStr = charsNeeded;
580 *pcchStr = charsNeeded;
597 static const WCHAR numFmt[] = {
'%',
'd',0 };
601 DWORD headingSepLen, sepLen;
603 DWORD noticeRefLen, organizationLen, noticeNumLen, noticeTextLen;
604 WCHAR noticeNumStr[11];
609 (
LPWSTR)&organization, 0);
625 headingSepLen =
lstrlenW(headingSep);
635 if (
str && *pcchStr >= charsNeeded)
645 charsNeeded += noticeRefLen;
646 if (
str && *pcchStr >= charsNeeded)
651 charsNeeded += headingSepLen;
652 if (
str && *pcchStr >= charsNeeded)
655 str += headingSepLen;
660 if (
str && *pcchStr >= charsNeeded)
672 charsNeeded += organizationLen;
673 if (
str && *pcchStr >= charsNeeded)
676 str += organizationLen;
679 if (
str && *pcchStr >= charsNeeded)
683 charsNeeded += sepLen;
684 if (
str && *pcchStr >= charsNeeded)
694 if (
str && *pcchStr >= charsNeeded)
706 charsNeeded += noticeNumLen;
707 if (
str && *pcchStr >= charsNeeded)
713 charsNeeded +=
lstrlenW(noticeNumStr);
714 if (
str && *pcchStr >= charsNeeded)
719 charsNeeded += sepLen;
720 if (
str && *pcchStr >= charsNeeded)
727 if (
notice->pszDisplayText)
732 if (
str && *pcchStr >= charsNeeded)
742 charsNeeded += noticeTextLen;
743 if (
str && *pcchStr >= charsNeeded)
746 str += noticeTextLen;
749 if (
str && *pcchStr >= charsNeeded)
754 charsNeeded += sepLen;
755 if (
str && *pcchStr >= charsNeeded)
763 *pcchStr = charsNeeded;
764 else if (*pcchStr < charsNeeded)
766 *pcchStr = charsNeeded;
771 *pcchStr = charsNeeded;
780 DWORD dwFormatType,
DWORD dwFormatStrType,
void *pFormatStruct,
796 static const WCHAR numFmt[] = {
'%',
'd',0 };
797 DWORD charsNeeded = 1;
799 DWORD headingSepLen, sepLen;
800 WCHAR policyNum[11], policyQualifierNum[11];
801 LPWSTR certPolicy, policyId, policyQualifierInfo, policyQualifierId;
803 DWORD certPolicyLen, policyIdLen, policyQualifierInfoLen;
804 DWORD policyQualifierIdLen, cpsLen, userNoticeLen, qualifierLen;
815 (
LPWSTR)&policyQualifierId, 0);
832 headingSepLen =
lstrlenW(headingSep);
841 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
845 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
851 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
853 charsNeeded += certPolicyLen;
854 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
857 str += certPolicyLen;
859 charsNeeded += headingSepLen;
860 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
863 str += headingSepLen;
868 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
874 charsNeeded += policyIdLen;
875 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
881 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
887 charsNeeded += sepLen;
888 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
893 for (
j = 0;
j <
policy->cPolicyQualifier;
j++)
902 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
909 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
912 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
918 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
920 swprintf(policyQualifierNum, numFmt,
j + 1);
921 charsNeeded +=
lstrlenW(policyQualifierNum);
922 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
928 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
930 charsNeeded += policyQualifierInfoLen;
931 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
934 policyQualifierInfoLen *
sizeof(
WCHAR));
935 str += policyQualifierInfoLen;
937 charsNeeded += headingSepLen;
938 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
941 str += headingSepLen;
946 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
954 charsNeeded += policyQualifierIdLen;
955 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
958 policyQualifierIdLen *
sizeof(
WCHAR));
959 str += policyQualifierIdLen;
964 charsNeeded += cpsLen;
965 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
974 charsNeeded += userNoticeLen;
975 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
978 str += userNoticeLen;
984 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
991 charsNeeded += sepLen;
992 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
1000 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
1008 charsNeeded += qualifierLen;
1009 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
1012 str += qualifierLen;
1014 charsNeeded += headingSepLen;
1015 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
1018 str += headingSepLen;
1027 if (!
str || *pcbFormat < charsNeeded *
sizeof(
WCHAR))
1034 charsNeeded +=
size - 1;
1038 sizeRemaining = *pcbFormat /
sizeof(
WCHAR);
1039 sizeRemaining -=
str - (
LPWSTR)pbFormat;
1045 charsNeeded += sizeRemaining - 1;
1046 str += sizeRemaining - 1;
1053 if (!
str || *pcbFormat < charsNeeded *
sizeof(
WCHAR))
1060 charsNeeded +=
size - 1;
1064 sizeRemaining = *pcbFormat /
sizeof(
WCHAR);
1065 sizeRemaining -=
str - (
LPWSTR)pbFormat;
1071 charsNeeded += sizeRemaining - 1;
1072 str += sizeRemaining - 1;
1078 if (!
str || *pcbFormat < charsNeeded *
sizeof(
WCHAR))
1085 charsNeeded +=
size - 1;
1089 sizeRemaining = *pcbFormat /
sizeof(
WCHAR);
1090 sizeRemaining -=
str - (
LPWSTR)pbFormat;
1096 charsNeeded += sizeRemaining - 1;
1097 str += sizeRemaining - 1;
1107 *pcbFormat = charsNeeded *
sizeof(
WCHAR);
1108 else if (*pcbFormat < charsNeeded *
sizeof(
WCHAR))
1110 *pcbFormat = charsNeeded *
sizeof(
WCHAR);
1115 *pcbFormat = charsNeeded *
sizeof(
WCHAR);
1121#define szOID_MICROSOFT_Encryption_Key_Preference "1.3.6.1.4.1.311.16.4"
1128 static WCHAR cryptdlg[] = {
'c',
'r',
'y',
'p',
't',
'd',
'l',
'g',
'.',
1130 static WCHAR wintrust[] = {
'w',
'i',
'n',
't',
'r',
'u',
's',
't',
'.',
1132 static WCHAR certTrustInit[] = {
'C',
'e',
'r',
't',
'T',
'r',
'u',
's',
't',
1133 'I',
'n',
'i',
't',0 };
1134 static WCHAR wintrustCertificateTrust[] = {
'W',
'i',
'n',
't',
'r',
'u',
's',
't',
1135 'C',
'e',
'r',
't',
'i',
'f',
'i',
'c',
'a',
't',
'e',
'T',
'r',
'u',
's',
't',0 };
1136 static WCHAR certTrustCertPolicy[] = {
'C',
'e',
'r',
't',
'T',
'r',
'u',
's',
't',
1137 'C',
'e',
'r',
't',
'P',
'o',
'l',
'i',
'c',
'y',0 };
1138 static WCHAR certTrustFinalPolicy[] = {
'C',
'e',
'r',
't',
'T',
'r',
'u',
's',
't',
1139 'F',
'i',
'n',
'a',
'l',
'P',
'o',
'l',
'i',
'c',
'y',0 };
1140 static WCHAR certTrustCleanup[] = {
'C',
'e',
'r',
't',
'T',
'r',
'u',
's',
't',
1141 'C',
'l',
'e',
'a',
'n',
'u',
'p',0 };
1142 static const WCHAR cryptDlg[] = {
'c',
'r',
'y',
'p',
't',
'd',
'l',
'g',
'.',
1149 reg.cbStruct =
sizeof(
reg);
1151 reg.sInitProvider.pwszDLLName = cryptdlg;
1152 reg.sInitProvider.pwszFunctionName = certTrustInit;
1154 reg.sCertificateProvider.pwszDLLName = wintrust;
1155 reg.sCertificateProvider.pwszFunctionName = wintrustCertificateTrust;
1157 reg.sCertificatePolicyProvider.pwszDLLName = cryptdlg;
1158 reg.sCertificatePolicyProvider.pwszFunctionName = certTrustCertPolicy;
1160 reg.sFinalPolicyProvider.pwszDLLName = cryptdlg;
1161 reg.sFinalPolicyProvider.pwszFunctionName = certTrustFinalPolicy;
1163 reg.sCleanupProvider.pwszDLLName = cryptdlg;
1164 reg.sCleanupProvider.pwszFunctionName = certTrustCleanup;
1168 "1.3.6.1.4.1.311.16.1.1", cryptDlg,
"EncodeAttrSequence");
1172 "1.3.6.1.4.1.311.16.1.1", cryptDlg,
"DecodeAttrSequence");
1191 "1.3.6.1.4.1.311.16.1.1");
1195 "1.3.6.1.4.1.311.16.1.1");
int strcmp(const char *String1, const char *String2)
ACPI_SIZE strlen(const char *String)
static DWORD const fdwReason
WINBASEAPI _Check_return_ _Out_ AppPolicyProcessTerminationMethod * policy
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define RegCloseKey(hKey)
BOOL WINAPI CertAddStoreToCollection(HCERTSTORE hCollectionStore, HCERTSTORE hSiblingStore, DWORD dwUpdateFlags, DWORD dwPriority)
BOOL WINAPI CryptDecodeObjectEx(DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, PCRYPT_DECODE_PARA pDecodePara, void *pvStructInfo, DWORD *pcbStructInfo)
#define IDS_POLICY_QUALIFIER_INFO
#define IDS_POLICY_QUALIFIER_ID
#define CERT_CERTIFICATE_ACTION_VERIFY
#define CRYPTUI_ENABLE_EDITPROPERTIES
#define CRYPTUI_DISABLE_ADDTOSTORE
BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
HRESULT WINAPI DllRegisterServer(void)
HRESULT WINAPI DllUnregisterServer(void)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
BOOL WINAPI CertFreeCertificateContext(PCCERT_CONTEXT pCertContext)
PCCERT_CONTEXT WINAPI CertFindCertificateInStore(HCERTSTORE hCertStore, DWORD dwCertEncodingType, DWORD dwFlags, DWORD dwType, const void *pvPara, PCCERT_CONTEXT pPrevCertContext)
BOOL WINAPI CertGetCertificateContextProperty(PCCERT_CONTEXT pCertContext, DWORD dwPropId, void *pvData, DWORD *pcbData)
LONG WINAPI CertVerifyTimeValidity(LPFILETIME pTimeToVerify, PCERT_INFO pCertInfo)
BOOL WINAPI CertGetCertificateChain(HCERTCHAINENGINE hChainEngine, PCCERT_CONTEXT pCertContext, LPFILETIME pTime, HCERTSTORE hAdditionalStore, PCERT_CHAIN_PARA pChainPara, DWORD dwFlags, LPVOID pvReserved, PCCERT_CHAIN_CONTEXT *ppChainContext)
VOID WINAPI CertFreeCertificateChain(PCCERT_CHAIN_CONTEXT pChainContext)
void WINAPI CertFreeCertificateChainEngine(HCERTCHAINENGINE hChainEngine)
BOOL WINAPI CertCreateCertificateChainEngine(PCERT_CHAIN_ENGINE_CONFIG pConfig, HCERTCHAINENGINE *phChainEngine)
PCCERT_CHAIN_CONTEXT WINAPI CertDuplicateCertificateChain(PCCERT_CHAIN_CONTEXT pChainContext)
BOOL WINAPI CryptRegisterOIDFunction(DWORD dwEncodingType, LPCSTR pszFuncName, LPCSTR pszOID, LPCWSTR pwszDll, LPCSTR pszOverrideFuncName)
BOOL WINAPI CryptUnregisterOIDFunction(DWORD dwEncodingType, LPCSTR pszFuncName, LPCSTR pszOID)
HCERTSTORE WINAPI CertOpenStore(LPCSTR lpszStoreProvider, DWORD dwMsgAndCertEncodingType, HCRYPTPROV_LEGACY hCryptProv, DWORD dwFlags, const void *pvPara)
BOOL WINAPI CertCloseStore(HCERTSTORE hCertStore, DWORD dwFlags)
DWORD WINAPI CertGetNameStringA(PCCERT_CONTEXT pCertContext, DWORD dwType, DWORD dwFlags, void *pvTypePara, LPSTR pszNameString, DWORD cchNameString)
DWORD WINAPI CertGetNameStringW(PCCERT_CONTEXT pCertContext, DWORD dwType, DWORD dwFlags, void *pvTypePara, LPWSTR pszNameString, DWORD cchNameString)
BOOL WINAPI CertViewPropertiesW(CERT_VIEWPROPERTIES_STRUCT_W *info)
static DWORD CRYPTDLG_TrustStatusToConfidence(DWORD errorStatus)
#define szOID_MICROSOFT_Encryption_Key_Preference
static const WCHAR colonSpace[]
static const WCHAR commaSep[]
static BOOL CRYPTDLG_CheckOnlineCRL(void)
BOOL WINAPI CertViewPropertiesA(CERT_VIEWPROPERTIES_STRUCT_A *info)
static BOOL CRYPTDLG_CopyChain(CRYPT_PROVIDER_DATA *data, PCCERT_CHAIN_CONTEXT chain)
static BOOL CRYPT_FormatCPS(DWORD dwCertEncodingType, DWORD dwFormatStrType, const BYTE *pbEncoded, DWORD cbEncoded, WCHAR *str, DWORD *pcchStr)
static const WCHAR colonCrlf[]
DWORD WINAPI GetFriendlyNameOfCertW(PCCERT_CONTEXT pccert, LPWSTR pchBuffer, DWORD cchBuffer)
static CERT_VERIFY_CERTIFICATE_TRUST * CRYPTDLG_GetVerifyData(CRYPT_PROVIDER_DATA *data)
HRESULT WINAPI CertTrustInit(CRYPT_PROVIDER_DATA *pProvData)
BOOL WINAPI CertTrustCertPolicy(CRYPT_PROVIDER_DATA *pProvData, DWORD idxSigner, BOOL fCounterSignerChain, DWORD idxCounterSigner)
static const WCHAR indent[]
static BOOL CRYPT_FormatUserNotice(DWORD dwCertEncodingType, DWORD dwFormatStrType, const BYTE *pbEncoded, DWORD cbEncoded, WCHAR *str, DWORD *pcchStr)
static BOOL CRYPT_FormatHexString(const BYTE *pbEncoded, DWORD cbEncoded, WCHAR *str, DWORD *pcchStr)
static BOOL CRYPTDLG_IsCertAllowed(PCCERT_CONTEXT pCert)
static const WCHAR crlf[]
HRESULT WINAPI CertTrustFinalPolicy(CRYPT_PROVIDER_DATA *data)
BOOL WINAPI FormatVerisignExtension(DWORD dwCertEncodingType, DWORD dwFormatType, DWORD dwFormatStrType, void *pFormatStruct, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, void *pbFormat, DWORD *pcbFormat)
static HCERTCHAINENGINE CRYPTDLG_MakeEngine(CERT_VERIFY_CERTIFICATE_TRUST *cert)
HRESULT WINAPI CertTrustCleanup(CRYPT_PROVIDER_DATA *pProvData)
DWORD WINAPI GetFriendlyNameOfCertA(PCCERT_CONTEXT pccert, LPSTR pchBuffer, DWORD cchBuffer)
BOOL WINAPI CryptUIDlgViewCertificateW(PCCRYPTUI_VIEWCERTIFICATE_STRUCTW pCertViewInfo, BOOL *pfPropertiesChanged)
static const WCHAR disallowed[]
#define DLL_PROCESS_ATTACH
#define HeapFree(x, y, z)
#define MultiByteToWideChar
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
VOID WINAPI GetSystemTimeAsFileTime(OUT PFILETIME lpFileTime)
BOOL WINAPI WintrustAddActionID(GUID *pgActionID, DWORD fdwFlags, CRYPT_REGISTER_ACTIONID *psProvInfo)
BOOL WINAPI WintrustRemoveActionID(GUID *pgActionID)
GLuint GLuint GLsizei GLenum type
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
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
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 GLint GLint j
HLOCAL NTAPI LocalFree(HLOCAL hMem)
static const SecPkgInfoW infoW
static IN DWORD IN LPVOID lpvReserved
#define memcpy(s1, s2, n)
static WCHAR noticeText[]
static LPCSTR DWORD void BYTE * pbEncoded
static APTTYPEQUALIFIER * qualifier
PCCERT_CONTEXT pCertContext
CERT_RDN_VALUE_BLOB Value
CERT_POLICY_INFO * rgPolicyInfo
CRYPT_OBJID_BLOB Qualifier
LPSTR pszPolicyQualifierId
CERT_TRUST_STATUS TrustStatus
PCERT_CHAIN_ELEMENT * rgpElement
HCERTSTORE * rghstoreRoots
HCERTSTORE * rghstoreTrust
DWORD * padwTrustStepErrors
PCCERT_CHAIN_CONTEXT pChainContext
struct WINTRUST_BLOB_INFO_ * pBlob
LPCPROPSHEETPAGEW rgPropSheetPages
BOOL fpCryptProviderDataTrustedUsage
PCCERT_CONTEXT pCertContext
DWORD WINAPI GetLastError(void)
#define X509_UNICODE_ANY_STRING
#define CRYPT_FORMAT_STR_MULTI_LINE
#define CERT_STORE_PROV_COLLECTION
#define szOID_PKIX_POLICY_QUALIFIER_CPS
#define CERT_CHAIN_REVOCATION_CHECK_END_CERT
#define CERT_STORE_CREATE_NEW_FLAG
#define CRYPT_OID_FORMAT_OBJECT_FUNC
#define CRYPT_OID_DECODE_OBJECT_FUNC
#define CERT_TRUST_IS_NOT_TIME_NESTED
#define X509_ASN_ENCODING
_In_ DWORD dwCertEncodingType
#define CRYPT_DECODE_ALLOC_FLAG
#define X509_CERT_POLICIES
#define szOID_CERT_POLICIES
#define szOID_PKIX_KP_EMAIL_PROTECTION
#define CERT_STORE_PROV_SYSTEM_W
#define szOID_PKIX_POLICY_QUALIFIER_USERNOTICE
#define CERT_FIND_SIGNATURE_HASH
#define CERT_SIGNATURE_HASH_PROP_ID
#define CERT_SYSTEM_STORE_CURRENT_USER
#define CERT_TRUST_IS_NOT_SIGNATURE_VALID
#define CRYPT_OID_ENCODE_OBJECT_FUNC
#define X509_PKIX_POLICY_QUALIFIER_USERNOTICE
#define CERT_TRUST_IS_NOT_TIME_VALID
#define CERT_NAME_FRIENDLY_DISPLAY_TYPE
#define TRUST_E_SUBJECT_NOT_TRUSTED
#define TRUST_E_SUBJECT_FORM_UNKNOWN
#define TRUST_E_NOSIGNATURE
#define TRUST_E_SYSTEM_ERROR
#define HKEY_LOCAL_MACHINE
#define WTD_STATEACTION_CLOSE
#define TRUSTERROR_STEP_FINAL_WVTINIT
#define WTD_STATEACTION_VERIFY
#define WT_ADD_ACTION_ID_RET_RESULT_FLAG
#define CERT_CONFIDENCE_TIME
#define CERT_CONFIDENCE_TIMENEST
#define CERT_CONFIDENCE_SIG
struct _CRYPT_TRUST_REG_ENTRY CRYPT_TRUST_REG_ENTRY
CRYPT_PROVIDER_CERT *WINAPI WTHelperGetProvCertFromChain(CRYPT_PROVIDER_SGNR *pSgnr, DWORD idxCert)
CRYPT_PROVIDER_SGNR *WINAPI WTHelperGetProvSignerFromChain(CRYPT_PROVIDER_DATA *pProvData, DWORD idxSigner, BOOL fCounterSigner, DWORD idxCounterSigner)
LONG WINAPI WinVerifyTrust(HWND hwnd, GUID *ActionID, LPVOID ActionData)
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)