19#define NONAMELESSUNION
49 case DLL_WINE_PREATTACH:
86 TRACE(
"(%p)\n", pProvData);
100 FIXME(
"(%p, %d, %s, %d)\n", pProvData, idxSigner, fCounterSignerChain ?
"TRUE" :
"FALSE", idxCounterSigner);
109 FIXME(
"(%p)\n", pProvData);
115 static const WCHAR policyFlagsKey[] = {
'S',
'o',
'f',
't',
'w',
'a',
'r',
'e',
116 '\\',
'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
'\\',
'C',
'r',
'y',
'p',
't',
'o',
'g',
117 'r',
'a',
'p',
'h',
'y',
'\\',
'{',
'7',
'8',
'0',
'1',
'e',
'b',
'd',
'0',
'-',
'c',
'f',
118 '4',
'b',
'-',
'1',
'1',
'd',
'0',
'-',
'8',
'5',
'1',
'f',
'-',
'0',
'0',
'6',
'0',
'9',
119 '7',
'9',
'3',
'8',
'7',
'e',
'a',
'}',0 };
120 static const WCHAR policyFlags[] = {
'P',
'o',
'l',
'i',
'c',
'y',
'F',
'l',
'a',
135 if (
flags & 0x00010000)
155 static const WCHAR disallowedW[] =
156 {
'D',
'i',
's',
'a',
'l',
'l',
'o',
'w',
'e',
'd',0 };
178 DWORD confidence = 0;
198 memset(&signer, 0,
sizeof(signer));
226 element->TrustStatus.dwErrorStatus);
227 cert->dwError =
element->TrustStatus.dwErrorStatus;
247 data->pWintrustData->u.pBlob &&
data->pWintrustData->u.pBlob->cbMemObject ==
249 data->pWintrustData->u.pBlob->pbMemObject)
251 data->pWintrustData->u.pBlob->pbMemObject;
261 if (
cert->cRootStores)
267 for (
i = 0;
i <
cert->cRootStores;
i++)
271 if (
cert->cTrustStores)
277 for (
i = 0;
i <
cert->cTrustStores;
i++)
281 if (
cert->cRootStores ||
cert->cStores ||
cert->cTrustStores)
288 config.hRestrictedTrust = trust;
290 config.rghAdditionalStore =
cert->rghstoreCAs;
311 FIXME(
"unimplemented for UI choice %d\n",
312 data->pWintrustData->dwUIChoice);
319 memset(&chainPara, 0,
sizeof(chainPara));
320 chainPara.
cbSize =
sizeof(chainPara);
334 if (
chain->cChain != 1)
336 FIXME(
"unimplemented for more than 1 simple chain\n");
422 memset(&trust, 0,
sizeof(trust));
423 trust.
cbSize =
sizeof(trust);
433 blob.cbMemObject =
sizeof(trust);
435 memset(&wtd, 0,
sizeof(wtd));
447 memset(&uiInfo, 0,
sizeof(uiInfo));
448 uiInfo.
dwSize =
sizeof(uiInfo);
477 charsNeeded = (cbEncoded * 3);
482 *pcchStr = charsNeeded;
485 else if (*pcchStr < charsNeeded)
487 *pcchStr = charsNeeded;
493 static const WCHAR fmt[] = {
'%',
'0',
'2',
'x',
' ',0 };
494 static const WCHAR endFmt[] = {
'%',
'0',
'2',
'x',0 };
498 *pcchStr = charsNeeded;
501 for (
i = 0;
i < cbEncoded;
i++)
503 if (
i < cbEncoded - 1)
546 if (
str && *pcchStr >= charsNeeded)
557 if (
str && *pcchStr >= charsNeeded)
562 charsNeeded += sepLen;
563 if (
str && *pcchStr >= charsNeeded)
570 *pcchStr = charsNeeded;
571 else if (*pcchStr < charsNeeded)
573 *pcchStr = charsNeeded;
578 *pcchStr = charsNeeded;
595 static const WCHAR numFmt[] = {
'%',
'd',0 };
599 DWORD headingSepLen, sepLen;
601 DWORD noticeRefLen, organizationLen, noticeNumLen, noticeTextLen;
602 WCHAR noticeNumStr[11];
607 (
LPWSTR)&organization, 0);
623 headingSepLen =
lstrlenW(headingSep);
633 if (
str && *pcchStr >= charsNeeded)
643 charsNeeded += noticeRefLen;
644 if (
str && *pcchStr >= charsNeeded)
649 charsNeeded += headingSepLen;
650 if (
str && *pcchStr >= charsNeeded)
653 str += headingSepLen;
658 if (
str && *pcchStr >= charsNeeded)
670 charsNeeded += organizationLen;
671 if (
str && *pcchStr >= charsNeeded)
674 str += organizationLen;
677 if (
str && *pcchStr >= charsNeeded)
681 charsNeeded += sepLen;
682 if (
str && *pcchStr >= charsNeeded)
692 if (
str && *pcchStr >= charsNeeded)
704 charsNeeded += noticeNumLen;
705 if (
str && *pcchStr >= charsNeeded)
711 charsNeeded +=
lstrlenW(noticeNumStr);
712 if (
str && *pcchStr >= charsNeeded)
717 charsNeeded += sepLen;
718 if (
str && *pcchStr >= charsNeeded)
725 if (
notice->pszDisplayText)
730 if (
str && *pcchStr >= charsNeeded)
740 charsNeeded += noticeTextLen;
741 if (
str && *pcchStr >= charsNeeded)
744 str += noticeTextLen;
747 if (
str && *pcchStr >= charsNeeded)
752 charsNeeded += sepLen;
753 if (
str && *pcchStr >= charsNeeded)
761 *pcchStr = charsNeeded;
762 else if (*pcchStr < charsNeeded)
764 *pcchStr = charsNeeded;
769 *pcchStr = charsNeeded;
778 DWORD dwFormatType,
DWORD dwFormatStrType,
void *pFormatStruct,
794 static const WCHAR numFmt[] = {
'%',
'd',0 };
795 DWORD charsNeeded = 1;
797 DWORD headingSepLen, sepLen;
798 WCHAR policyNum[11], policyQualifierNum[11];
799 LPWSTR certPolicy, policyId, policyQualifierInfo, policyQualifierId;
801 DWORD certPolicyLen, policyIdLen, policyQualifierInfoLen;
802 DWORD policyQualifierIdLen, cpsLen, userNoticeLen, qualifierLen;
813 (
LPWSTR)&policyQualifierId, 0);
830 headingSepLen =
lstrlenW(headingSep);
839 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
843 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
849 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
851 charsNeeded += certPolicyLen;
852 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
855 str += certPolicyLen;
857 charsNeeded += headingSepLen;
858 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
861 str += headingSepLen;
866 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
872 charsNeeded += policyIdLen;
873 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
879 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
885 charsNeeded += sepLen;
886 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
891 for (
j = 0;
j <
policy->cPolicyQualifier;
j++)
900 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
907 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
910 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
916 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
918 swprintf(policyQualifierNum, numFmt,
j + 1);
919 charsNeeded +=
lstrlenW(policyQualifierNum);
920 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
926 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
928 charsNeeded += policyQualifierInfoLen;
929 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
932 policyQualifierInfoLen *
sizeof(
WCHAR));
933 str += policyQualifierInfoLen;
935 charsNeeded += headingSepLen;
936 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
939 str += headingSepLen;
944 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
952 charsNeeded += policyQualifierIdLen;
953 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
956 policyQualifierIdLen *
sizeof(
WCHAR));
957 str += policyQualifierIdLen;
962 charsNeeded += cpsLen;
963 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
972 charsNeeded += userNoticeLen;
973 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
976 str += userNoticeLen;
982 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
989 charsNeeded += sepLen;
990 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
998 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
1006 charsNeeded += qualifierLen;
1007 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
1010 str += qualifierLen;
1012 charsNeeded += headingSepLen;
1013 if (
str && *pcbFormat >= charsNeeded *
sizeof(
WCHAR))
1016 str += headingSepLen;
1025 if (!
str || *pcbFormat < charsNeeded *
sizeof(
WCHAR))
1032 charsNeeded +=
size - 1;
1036 sizeRemaining = *pcbFormat /
sizeof(
WCHAR);
1037 sizeRemaining -=
str - (
LPWSTR)pbFormat;
1043 charsNeeded += sizeRemaining - 1;
1044 str += sizeRemaining - 1;
1051 if (!
str || *pcbFormat < charsNeeded *
sizeof(
WCHAR))
1058 charsNeeded +=
size - 1;
1062 sizeRemaining = *pcbFormat /
sizeof(
WCHAR);
1063 sizeRemaining -=
str - (
LPWSTR)pbFormat;
1069 charsNeeded += sizeRemaining - 1;
1070 str += sizeRemaining - 1;
1076 if (!
str || *pcbFormat < charsNeeded *
sizeof(
WCHAR))
1083 charsNeeded +=
size - 1;
1087 sizeRemaining = *pcbFormat /
sizeof(
WCHAR);
1088 sizeRemaining -=
str - (
LPWSTR)pbFormat;
1094 charsNeeded += sizeRemaining - 1;
1095 str += sizeRemaining - 1;
1105 *pcbFormat = charsNeeded *
sizeof(
WCHAR);
1106 else if (*pcbFormat < charsNeeded *
sizeof(
WCHAR))
1108 *pcbFormat = charsNeeded *
sizeof(
WCHAR);
1113 *pcbFormat = charsNeeded *
sizeof(
WCHAR);
1119#define szOID_MICROSOFT_Encryption_Key_Preference "1.3.6.1.4.1.311.16.4"
1126 static WCHAR cryptdlg[] = {
'c',
'r',
'y',
'p',
't',
'd',
'l',
'g',
'.',
1128 static WCHAR wintrust[] = {
'w',
'i',
'n',
't',
'r',
'u',
's',
't',
'.',
1130 static WCHAR certTrustInit[] = {
'C',
'e',
'r',
't',
'T',
'r',
'u',
's',
't',
1131 'I',
'n',
'i',
't',0 };
1132 static WCHAR wintrustCertificateTrust[] = {
'W',
'i',
'n',
't',
'r',
'u',
's',
't',
1133 'C',
'e',
'r',
't',
'i',
'f',
'i',
'c',
'a',
't',
'e',
'T',
'r',
'u',
's',
't',0 };
1134 static WCHAR certTrustCertPolicy[] = {
'C',
'e',
'r',
't',
'T',
'r',
'u',
's',
't',
1135 'C',
'e',
'r',
't',
'P',
'o',
'l',
'i',
'c',
'y',0 };
1136 static WCHAR certTrustFinalPolicy[] = {
'C',
'e',
'r',
't',
'T',
'r',
'u',
's',
't',
1137 'F',
'i',
'n',
'a',
'l',
'P',
'o',
'l',
'i',
'c',
'y',0 };
1138 static WCHAR certTrustCleanup[] = {
'C',
'e',
'r',
't',
'T',
'r',
'u',
's',
't',
1139 'C',
'l',
'e',
'a',
'n',
'u',
'p',0 };
1140 static const WCHAR cryptDlg[] = {
'c',
'r',
'y',
'p',
't',
'd',
'l',
'g',
'.',
1147 reg.cbStruct =
sizeof(
reg);
1149 reg.sInitProvider.pwszDLLName = cryptdlg;
1150 reg.sInitProvider.pwszFunctionName = certTrustInit;
1152 reg.sCertificateProvider.pwszDLLName = wintrust;
1153 reg.sCertificateProvider.pwszFunctionName = wintrustCertificateTrust;
1155 reg.sCertificatePolicyProvider.pwszDLLName = cryptdlg;
1156 reg.sCertificatePolicyProvider.pwszFunctionName = certTrustCertPolicy;
1158 reg.sFinalPolicyProvider.pwszDLLName = cryptdlg;
1159 reg.sFinalPolicyProvider.pwszFunctionName = certTrustFinalPolicy;
1161 reg.sCleanupProvider.pwszDLLName = cryptdlg;
1162 reg.sCleanupProvider.pwszFunctionName = certTrustCleanup;
1166 "1.3.6.1.4.1.311.16.1.1", cryptDlg,
"EncodeAttrSequence");
1170 "1.3.6.1.4.1.311.16.1.1", cryptDlg,
"DecodeAttrSequence");
1189 "1.3.6.1.4.1.311.16.1.1");
1193 "1.3.6.1.4.1.311.16.1.1");
int strcmp(const char *String1, const char *String2)
ACPI_SIZE strlen(const char *String)
#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)
WDF_INTERRUPT_POLICY policy
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)