21#define NONAMELESSUNION
22#define CERT_REVOCATION_PARA_HAS_EXTRA_FIELDS
39#define IS_INTOID(x) (((ULONG_PTR)(x) >> 16) == 0)
81#define _x(oid) case LOWORD(oid): return #oid
118 cert->pCertInfo->cExtension,
cert->pCertInfo->rgExtension)))
130 for (
i = 0, cUrl = 0;
i <
aia->cAccDescr;
i++)
131 if (!
strcmp(
aia->rgAccDescr[
i].pszAccessMethod,
134 if (
aia->rgAccDescr[
i].AccessLocation.dwAltNameChoice ==
137 if (
aia->rgAccDescr[
i].AccessLocation.u.pwszURL)
140 bytesNeeded +=
sizeof(
LPWSTR) +
142 pwszURL) + 1) *
sizeof(
WCHAR);
146 FIXME(
"unsupported alt name type %d\n",
147 aia->rgAccDescr[
i].AccessLocation.dwAltNameChoice);
155 *pcbUrlArray = bytesNeeded;
156 else if (*pcbUrlArray < bytesNeeded)
159 *pcbUrlArray = bytesNeeded;
166 *pcbUrlArray = bytesNeeded;
172 for (
i = 0;
i <
aia->cAccDescr;
i++)
173 if (!
strcmp(
aia->rgAccDescr[
i].pszAccessMethod,
176 if (
aia->rgAccDescr[
i].AccessLocation.dwAltNameChoice
179 if (
aia->rgAccDescr[
i].AccessLocation.u.pwszURL)
182 aia->rgAccDescr[
i].AccessLocation.u.pwszURL);
194 FIXME(
"url info: stub\n");
232 for (
i = 0, cUrl = 0;
i <
info->cDistPoint;
i++)
233 if (
info->rgDistPoint[
i].DistPointName.dwDistPointNameChoice
238 &
info->rgDistPoint[
i].DistPointName.u.FullName;
240 for (
j = 0;
j <
name->cAltEntry;
j++)
241 if (
name->rgAltEntry[
j].dwAltNameChoice ==
244 if (
name->rgAltEntry[
j].u.pwszURL)
247 bytesNeeded +=
sizeof(
LPWSTR) +
259 *pcbUrlArray = bytesNeeded;
260 else if (*pcbUrlArray < bytesNeeded)
263 *pcbUrlArray = bytesNeeded;
270 *pcbUrlArray = bytesNeeded;
276 for (
i = 0;
i <
info->cDistPoint;
i++)
277 if (
info->rgDistPoint[
i].DistPointName.dwDistPointNameChoice
282 &
info->rgDistPoint[
i].DistPointName.u.FullName;
284 for (
j = 0;
j <
name->cAltEntry;
j++)
285 if (
name->rgAltEntry[
j].dwAltNameChoice ==
288 if (
name->rgAltEntry[
j].u.pwszURL)
291 name->rgAltEntry[
j].u.pwszURL);
304 FIXME(
"url info: stub\n");
340 cert->pCertInfo->cExtension,
cert->pCertInfo->rgExtension)))
342 pcbUrlArray, pUrlInfo, pcbUrlInfo);
364 switch (
LOWORD(pszUrlOid))
384 (
void **)&
func, &hFunc);
405 TRACE(
"(%s, %s, %08x, %d, %p, %p, %p, %p, %p)\n",
debugstr_a(pszURL),
452 WARN(
"file too big\n");
565 components->dwStructSize =
sizeof(*components);
636 DWORD bytesAvailable;
646 object.cbData + bytesAvailable);
654 buffer.lpvBuffer =
object.pbData +
object.cbData;
670 object.cbData +=
buffer.dwBufferLength;
687 }
while (
ret && bytesAvailable);
699 pObject->rgBlob[0].cbData =
object.cbData;
700 pObject->rgBlob[0].pbData =
object.pbData;
727 ERR(
"out of memory\n");
745 info->ExpireTime = expires;
770 memset(&ft, 0,
sizeof(ft));
843 FIXME(
"(%s, %s, %08x, %d, %p, %p, %p, %p, %p, %p)\n",
debugstr_w(pszURL),
850 *ppvFreeContext =
NULL;
854static const WCHAR x509cacert[] = {
'a',
'p',
'p',
'l',
'i',
'c',
'a',
't',
'i',
'o',
'n',
855 '/',
'x',
'-',
'x',
'5',
'0',
'9',
'-',
'c',
'a',
'-',
'c',
'e',
'r',
't',0 };
856static const WCHAR x509emailcert[] = {
'a',
'p',
'p',
'l',
'i',
'c',
'a',
't',
'i',
'o',
857 'n',
'/',
'x',
'-',
'x',
'5',
'0',
'9',
'-',
'e',
'm',
'a',
'i',
'l',
'-',
'c',
'e',
'r',
't',
859static const WCHAR x509servercert[] = {
'a',
'p',
'p',
'l',
'i',
'c',
'a',
't',
'i',
'o',
860 'n',
'/',
'x',
'-',
'x',
'5',
'0',
'9',
'-',
's',
'e',
'r',
'v',
'e',
'r',
'-',
'c',
'e',
'r',
862static const WCHAR x509usercert[] = {
'a',
'p',
'p',
'l',
'i',
'c',
'a',
't',
'i',
'o',
863 'n',
'/',
'x',
'-',
'x',
'5',
'0',
'9',
'-',
'u',
's',
'e',
'r',
'-',
'c',
'e',
'r',
't',0 };
864static const WCHAR pkcs7cert[] = {
'a',
'p',
'p',
'l',
'i',
'c',
'a',
't',
'i',
'o',
'n',
865 '/',
'x',
'-',
'p',
'k',
'c',
's',
'7',
'-',
'c',
'e',
'r',
't',
'i',
'f',
'c',
'a',
't',
'e',
867static const WCHAR pkixCRL[] = {
'a',
'p',
'p',
'l',
'i',
'c',
'a',
't',
'i',
'o',
'n',
868 '/',
'p',
'k',
'i',
'x',
'-',
'c',
'r',
'l',0 };
869static const WCHAR pkcs7CRL[] = {
'a',
'p',
'p',
'l',
'i',
'c',
'a',
't',
'i',
'o',
'n',
870 '/',
'x',
'-',
'p',
'k',
'c',
's',
'7',
'-',
'c',
'r',
'l',0 };
871static const WCHAR pkcs7sig[] = {
'a',
'p',
'p',
'l',
'i',
'c',
'a',
't',
'i',
'o',
'n',
872 '/',
'x',
'-',
'p',
'k',
'c',
's',
'7',
'-',
's',
'i',
'g',
'n',
'a',
't',
'u',
'r',
'e',0 };
873static const WCHAR pkcs7mime[] = {
'a',
'p',
'p',
'l',
'i',
'c',
'a',
't',
'i',
'o',
'n',
874 '/',
'x',
'-',
'p',
'k',
'c',
's',
'7',
'-',
'm',
'i',
'm',
'e',0 };
884 TRACE(
"(%s, %s, %08x, %d, %p, %p, %p, %p, %p, %p)\n",
debugstr_w(pszURL),
891 *ppvFreeContext =
NULL;
989 TRACE(
"(%s, %s, %08x, %d, %p, %p, %p, %p, %p, %p)\n",
debugstr_w(pszURL),
996 *ppvFreeContext =
NULL;
1131 scheme, 0, (
void **)pFunc, phFunc);
1173 context->rgBlob[
i].pbData = nextData;
1175 nextData +=
pObject->rgBlob[
i].cbData;
1258 &
pObject->rgBlob[
i], dwExpectedContentTypeFlags,
1320 FIXME(
"multiple messages unimplemented\n");
1366 DWORD contentType, expectedContentTypes =
1376 &
pObject->rgBlob[
i], expectedContentTypes,
1380 switch (contentType)
1460 0, (
void **)pFunc, phFunc);
1473 *expiration = ((
const CERT_CONTEXT*)
object)->pCertInfo->NotAfter;
1476 *expiration = ((
const CRL_CONTEXT*)
object)->pCrlInfo->NextUpdate;
1479 *expiration = ((
const CTL_CONTEXT*)
object)->pCtlInfo->NextUpdate;
1499 TRACE(
"(%s, %s, %08x, %d, %p, %p, %p, %p, %p)\n",
debugstr_w(pszURL),
1585 dwUrlRetrievalTimeout) +
sizeof(
DWORD))
1588 endTime =
startTime + pRevPara->dwUrlRetrievalTimeout;
1589 timeout = pRevPara->dwUrlRetrievalTimeout;
1611 if ((
int)(endTime -
time) <= 0)
1655 for (
i = 0;
i <
aia->cAccDescr;
i++)
1656 if (!
strcmp(
aia->rgAccDescr[
i].pszAccessMethod,
1659 if (
aia->rgAccDescr[
i].AccessLocation.dwAltNameChoice ==
1661 FIXME(
"OCSP URL = %s\n",
1664 FIXME(
"unsupported AccessLocation type %d\n",
1665 aia->rgAccDescr[
i].AccessLocation.dwAltNameChoice);
1689 TRACE(
"CRL not old enough\n");
1708 TRACE(
"certificate not found\n");
1723 cert->pCertInfo->cExtension,
cert->pCertInfo->rgExtension)))
1727 cert->pCertInfo->cExtension,
cert->pCertInfo->rgExtension)))
1748 ext->Value.pbData,
ext->Value.cbData,
1750 canSignCRLs =
FALSE;
1751 else if (
usage.cbData > 2)
1756 canSignCRLs =
FALSE;
1773 cert->dwCertEncodingType,
1786 TRACE(
"no CRL found\n");
1794 WARN(
"no CERT_REVOCATION_PARA\n");
1796 WARN(
"no dist points/aia extension and no CRL store\n");
1798 WARN(
"no dist points/aia extension and no issuer\n");
1834 cContext, rgpvContext,
dwFlags, pRevPara, pRevStatus);
1847 if (pRevPara && pRevPara->
cbSize >=
1860 for (
i = 0; !
error &&
i < cContext;
i++)
1862 pRevPara, pRevStatus);
int strcmp(const char *String1, const char *String2)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
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)
static BOOL WINAPI CRYPT_GetUrlFromCertificateCRLDistPoint(LPCSTR pszUrlOid, LPVOID pvPara, DWORD dwFlags, PCRYPT_URL_ARRAY pUrlArray, DWORD *pcbUrlArray, PCRYPT_URL_INFO pUrlInfo, DWORD *pcbUrlInfo, LPVOID pvReserved)
static BOOL WINAPI CRYPT_CreateCert(LPCSTR pszObjectOid, DWORD dwRetrievalFlags, const CRYPT_BLOB_ARRAY *pObject, void **ppvContext)
HRESULT WINAPI DllRegisterServer(void)
static DWORD verify_cert_revocation_from_aia_ext(const CRYPT_DATA_BLOB *value, PCCERT_CONTEXT cert, DWORD index, FILETIME *pTime, DWORD dwFlags, PCERT_REVOCATION_PARA pRevPara, PCERT_REVOCATION_STATUS pRevStatus)
static BOOL decode_base64_blob(const CRYPT_DATA_BLOB *in, CRYPT_DATA_BLOB *out)
static BOOL CRYPT_GetRetrieveFunction(LPCWSTR pszURL, SchemeDllRetrieveEncodedObjectW *pFunc, HCRYPTOIDFUNCADDR *phFunc)
static const WCHAR pkcs7cert[]
static DWORD verify_cert_revocation_with_crl_offline(PCCERT_CONTEXT cert, PCCRL_CONTEXT crl, DWORD index, FILETIME *pTime, PCERT_REVOCATION_STATUS pRevStatus)
static BOOL CRYPT_Connect(const URL_COMPONENTSW *components, struct InetContext *context, PCRYPT_CREDENTIALS pCredentials, HINTERNET *phInt, HINTERNET *phHost)
static const WCHAR pkcs7mime[]
BOOL WINAPI CertDllVerifyRevocation(DWORD dwEncodingType, DWORD dwRevType, DWORD cContext, PVOID rgpvContext[], DWORD dwFlags, PCERT_REVOCATION_PARA pRevPara, PCERT_REVOCATION_STATUS pRevStatus)
static const WCHAR x509emailcert[]
static BOOL CRYPT_GetCreateFunction(LPCSTR pszObjectOid, ContextDllCreateObjectContext *pFunc, HCRYPTOIDFUNCADDR *phFunc)
static struct InetContext * CRYPT_MakeInetContext(DWORD dwTimeout)
static DWORD verify_cert_revocation_from_dist_points_ext(const CRYPT_DATA_BLOB *value, PCCERT_CONTEXT cert, DWORD index, FILETIME *pTime, DWORD dwFlags, const CERT_REVOCATION_PARA *pRevPara, PCERT_REVOCATION_STATUS pRevStatus)
static void CRYPT_CacheURL(LPCWSTR pszURL, const CRYPT_BLOB_ARRAY *pObject, DWORD dwRetrievalFlags, FILETIME expires)
BOOL WINAPI CryptRetrieveObjectByUrlA(LPCSTR pszURL, LPCSTR pszObjectOid, DWORD dwRetrievalFlags, DWORD dwTimeout, LPVOID *ppvObject, HCRYPTASYNC hAsyncRetrieve, PCRYPT_CREDENTIALS pCredentials, LPVOID pvVerify, PCRYPT_RETRIEVE_AUX_INFO pAuxInfo)
static BOOL CRYPT_GetExpiration(const void *object, const char *pszObjectOid, FILETIME *expiration)
static void CALLBACK CRYPT_InetStatusCallback(HINTERNET hInt, DWORD_PTR dwContext, DWORD status, void *statusInfo, DWORD statusInfoLen)
static const WCHAR x509usercert[]
HRESULT WINAPI DllUnregisterServer(void)
static const WCHAR pkixCRL[]
static BOOL CRYPT_DownloadObject(DWORD dwRetrievalFlags, HINTERNET hHttp, struct InetContext *context, PCRYPT_BLOB_ARRAY pObject, PCRYPT_RETRIEVE_AUX_INFO pAuxInfo)
static BOOL WINAPI CRYPT_CreatePKCS7(LPCSTR pszObjectOid, DWORD dwRetrievalFlags, const CRYPT_BLOB_ARRAY *pObject, void **ppvContext)
BOOL WINAPI CryptRetrieveObjectByUrlW(LPCWSTR pszURL, LPCSTR pszObjectOid, DWORD dwRetrievalFlags, DWORD dwTimeout, LPVOID *ppvObject, HCRYPTASYNC hAsyncRetrieve, PCRYPT_CREDENTIALS pCredentials, LPVOID pvVerify, PCRYPT_RETRIEVE_AUX_INFO pAuxInfo)
static DWORD verify_cert_revocation_with_crl_online(PCCERT_CONTEXT cert, PCCRL_CONTEXT crl, DWORD index, FILETIME *pTime, PCERT_REVOCATION_STATUS pRevStatus)
static BOOL WINAPI CRYPT_CreateBlob(LPCSTR pszObjectOid, DWORD dwRetrievalFlags, const CRYPT_BLOB_ARRAY *pObject, void **ppvContext)
struct _CERT_REVOCATION_PARA_NO_EXTRA_FIELDS CERT_REVOCATION_PARA_NO_EXTRA_FIELDS
static BOOL CRYPT_GetObjectFromCache(LPCWSTR pszURL, PCRYPT_BLOB_ARRAY pObject, PCRYPT_RETRIEVE_AUX_INFO pAuxInfo)
static BOOL WINAPI File_RetrieveEncodedObjectW(LPCWSTR pszURL, LPCSTR pszObjectOid, DWORD dwRetrievalFlags, DWORD dwTimeout, PCRYPT_BLOB_ARRAY pObject, PFN_FREE_ENCODED_OBJECT_FUNC *ppfnFreeObject, void **ppvFreeContext, HCRYPTASYNC hAsyncRetrieve, PCRYPT_CREDENTIALS pCredentials, PCRYPT_RETRIEVE_AUX_INFO pAuxInfo)
static const WCHAR x509servercert[]
static BOOL CRYPT_GetObjectFromFile(HANDLE hFile, PCRYPT_BLOB_ARRAY pObject)
static BOOL WINAPI FTP_RetrieveEncodedObjectW(LPCWSTR pszURL, LPCSTR pszObjectOid, DWORD dwRetrievalFlags, DWORD dwTimeout, PCRYPT_BLOB_ARRAY pObject, PFN_FREE_ENCODED_OBJECT_FUNC *ppfnFreeObject, void **ppvFreeContext, HCRYPTASYNC hAsyncRetrieve, PCRYPT_CREDENTIALS pCredentials, PCRYPT_RETRIEVE_AUX_INFO pAuxInfo)
static BOOL WINAPI CRYPT_CreateCTL(LPCSTR pszObjectOid, DWORD dwRetrievalFlags, const CRYPT_BLOB_ARRAY *pObject, void **ppvContext)
static BOOL WINAPI HTTP_RetrieveEncodedObjectW(LPCWSTR pszURL, LPCSTR pszObjectOid, DWORD dwRetrievalFlags, DWORD dwTimeout, PCRYPT_BLOB_ARRAY pObject, PFN_FREE_ENCODED_OBJECT_FUNC *ppfnFreeObject, void **ppvFreeContext, HCRYPTASYNC hAsyncRetrieve, PCRYPT_CREDENTIALS pCredentials, PCRYPT_RETRIEVE_AUX_INFO pAuxInfo)
BOOL(WINAPI * AddContextToStore)(HCERTSTORE hCertStore, const void *pContext, DWORD dwAddDisposition, const void **ppStoreContext)
static const char * url_oid_to_str(LPCSTR oid)
struct _OLD_CERT_REVOCATION_STATUS OLD_CERT_REVOCATION_STATUS
BOOL(WINAPI * ContextDllCreateObjectContext)(LPCSTR pszObjectOid, DWORD dwRetrievalFlags, const CRYPT_BLOB_ARRAY *pObject, void **ppvContext)
static const WCHAR pkcs7sig[]
BOOL(WINAPI * SchemeDllRetrieveEncodedObjectW)(LPCWSTR pwszUrl, LPCSTR pszObjectOid, DWORD dwRetrievalFlags, DWORD dwTimeout, PCRYPT_BLOB_ARRAY pObject, PFN_FREE_ENCODED_OBJECT_FUNC *ppfnFreeObject, void **ppvFreeContext, HCRYPTASYNC hAsyncRetrieve, PCRYPT_CREDENTIALS pCredentials, PCRYPT_RETRIEVE_AUX_INFO pAuxInfo)
BOOL(WINAPI * UrlDllGetObjectUrlFunc)(LPCSTR, LPVOID, DWORD, PCRYPT_URL_ARRAY, DWORD *, PCRYPT_URL_INFO, DWORD *, LPVOID)
static const WCHAR cryptNet[]
BOOL WINAPI CryptGetObjectUrl(LPCSTR pszUrlOid, LPVOID pvPara, DWORD dwFlags, PCRYPT_URL_ARRAY pUrlArray, DWORD *pcbUrlArray, PCRYPT_URL_INFO pUrlInfo, DWORD *pcbUrlInfo, LPVOID pvReserved)
static BOOL CRYPT_GetUrlFromCRLDistPointsExt(const CRYPT_DATA_BLOB *value, PCRYPT_URL_ARRAY pUrlArray, DWORD *pcbUrlArray, PCRYPT_URL_INFO pUrlInfo, DWORD *pcbUrlInfo)
static void WINAPI CRYPT_FreeBlob(LPCSTR pszObjectOid, PCRYPT_BLOB_ARRAY pObject, void *pvFreeContext)
static BOOL WINAPI CRYPT_CreateCRL(LPCSTR pszObjectOid, DWORD dwRetrievalFlags, const CRYPT_BLOB_ARRAY *pObject, void **ppvContext)
static BOOL CRYPT_CreateContext(const CRYPT_BLOB_ARRAY *pObject, DWORD dwExpectedContentTypeFlags, AddContextToStore addFunc, void **ppvContext)
static DWORD verify_cert_revocation(PCCERT_CONTEXT cert, DWORD index, FILETIME *pTime, DWORD dwFlags, PCERT_REVOCATION_PARA pRevPara, PCERT_REVOCATION_STATUS pRevStatus)
static BOOL WINAPI CRYPT_CreateAny(LPCSTR pszObjectOid, DWORD dwRetrievalFlags, const CRYPT_BLOB_ARRAY *pObject, void **ppvContext)
static BOOL CRYPT_CrackUrl(LPCWSTR pszURL, URL_COMPONENTSW *components)
static BOOL WINAPI CRYPT_GetUrlFromCertificateIssuer(LPCSTR pszUrlOid, LPVOID pvPara, DWORD dwFlags, PCRYPT_URL_ARRAY pUrlArray, DWORD *pcbUrlArray, PCRYPT_URL_INFO pUrlInfo, DWORD *pcbUrlInfo, LPVOID pvReserved)
static const WCHAR pkcs7CRL[]
static const WCHAR x509cacert[]
#define ERROR_INSUFFICIENT_BUFFER
BOOL WINAPI CryptStringToBinaryA(LPCSTR pszString, DWORD cchString, DWORD dwFlags, BYTE *pbBinary, DWORD *pcbBinary, DWORD *pdwSkip, DWORD *pdwFlags)
BOOL WINAPI CertAddCertificateContextToStore(HCERTSTORE hCertStore, PCCERT_CONTEXT pCertContext, DWORD dwAddDisposition, PCCERT_CONTEXT *ppStoreContext)
BOOL WINAPI CertFreeCertificateContext(PCCERT_CONTEXT pCertContext)
PCERT_EXTENSION WINAPI CertFindExtension(LPCSTR pszObjId, DWORD cExtensions, CERT_EXTENSION rgExtensions[])
BOOL WINAPI CertFreeCRLContext(PCCRL_CONTEXT pCrlContext)
BOOL WINAPI CertFindCertificateInCRL(PCCERT_CONTEXT pCert, PCCRL_CONTEXT pCrlContext, DWORD dwFlags, void *pvReserved, PCRL_ENTRY *ppCrlEntry)
PCCRL_CONTEXT WINAPI CertFindCRLInStore(HCERTSTORE hCertStore, DWORD dwCertEncodingType, DWORD dwFindFlags, DWORD dwFindType, const void *pvFindPara, PCCRL_CONTEXT pPrevCrlContext)
BOOL WINAPI CertFreeCTLContext(PCCTL_CONTEXT pCTLContext)
BOOL WINAPI CertAddCTLContextToStore(HCERTSTORE hCertStore, PCCTL_CONTEXT pCtlContext, DWORD dwAddDisposition, PCCTL_CONTEXT *ppStoreContext)
LPVOID WINAPI CryptMemAlloc(ULONG cbSize)
LPVOID WINAPI CryptMemRealloc(LPVOID pv, ULONG cbSize)
VOID WINAPI CryptMemFree(LPVOID pv)
static WCHAR aia[MAX_STRING_RESOURCE_LEN]
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)
BOOL WINAPI CryptRegisterDefaultOIDFunction(DWORD dwEncodingType, LPCSTR pszFuncName, DWORD dwIndex, LPCWSTR pwszDll)
BOOL WINAPI CryptUnregisterDefaultOIDFunction(DWORD dwEncodingType, LPCSTR pszFuncName, LPCWSTR pwszDll)
HCRYPTOIDFUNCSET WINAPI CryptInitOIDFunctionSet(LPCSTR pszFuncName, DWORD dwFlags)
BOOL WINAPI CryptGetOIDFunctionAddress(HCRYPTOIDFUNCSET hFuncSet, DWORD dwEncodingType, LPCSTR pszOID, DWORD dwFlags, void **ppvFuncAddr, HCRYPTOIDFUNCADDR *phFuncAddr)
BOOL WINAPI CryptRegisterOIDFunction(DWORD dwEncodingType, LPCSTR pszFuncName, LPCSTR pszOID, LPCWSTR pwszDll, LPCSTR pszOverrideFuncName)
BOOL WINAPI CryptUnregisterOIDFunction(DWORD dwEncodingType, LPCSTR pszFuncName, LPCSTR pszOID)
BOOL WINAPI CryptFreeOIDFunctionAddress(HCRYPTOIDFUNCADDR hFuncAddr, DWORD dwFlags)
BOOL WINAPI CertAddCRLContextToStore(HCERTSTORE hCertStore, PCCRL_CONTEXT pCrlContext, DWORD dwAddDisposition, PCCRL_CONTEXT *ppStoreContext)
HCERTSTORE WINAPI CertOpenStore(LPCSTR lpszStoreProvider, DWORD dwMsgAndCertEncodingType, HCRYPTPROV_LEGACY hCryptProv, DWORD dwFlags, const void *pvPara)
BOOL WINAPI CertCloseStore(HCERTSTORE hCertStore, DWORD dwFlags)
#define ERROR_INVALID_PARAMETER
#define GetCurrentDirectoryW(x, y)
#define ReadFile(a, b, c, d, e)
#define INVALID_HANDLE_VALUE
#define FILE_ATTRIBUTE_NORMAL
#define WideCharToMultiByte
#define MultiByteToWideChar
static const WCHAR *const ext[]
BOOL WINAPI GetFileTime(IN HANDLE hFile, OUT LPFILETIME lpCreationTime OPTIONAL, OUT LPFILETIME lpLastAccessTime OPTIONAL, OUT LPFILETIME lpLastWriteTime OPTIONAL)
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
UINT WINAPI GetWindowsDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
VOID WINAPI GetSystemTimeAsFileTime(OUT PFILETIME lpFileTime)
BOOL WINAPI SystemTimeToFileTime(IN CONST SYSTEMTIME *lpSystemTime, OUT LPFILETIME lpFileTime)
DWORD WINAPI GetTickCount(VOID)
LONG WINAPI CompareFileTime(IN CONST FILETIME *lpFileTime1, IN CONST FILETIME *lpFileTime2)
static ULONGLONG startTime
BOOL WINAPI HttpEndRequestW(HINTERNET hRequest, LPINTERNET_BUFFERSW lpBuffersOut, DWORD dwFlags, DWORD_PTR dwContext)
BOOL WINAPI HttpQueryInfoW(HINTERNET hHttpRequest, DWORD dwInfoLevel, LPVOID lpBuffer, LPDWORD lpdwBufferLength, LPDWORD lpdwIndex)
BOOL WINAPI HttpSendRequestExW(HINTERNET hRequest, LPINTERNET_BUFFERSW lpBuffersIn, LPINTERNET_BUFFERSW lpBuffersOut, DWORD dwFlags, DWORD_PTR dwContext)
HINTERNET WINAPI HttpOpenRequestW(HINTERNET hHttpSession, LPCWSTR lpszVerb, LPCWSTR lpszObjectName, LPCWSTR lpszVersion, LPCWSTR lpszReferrer, LPCWSTR *lpszAcceptTypes, DWORD dwFlags, DWORD_PTR dwContext)
BOOL WINAPI InternetCrackUrlW(const WCHAR *lpszUrl, DWORD dwUrlLength, DWORD dwFlags, URL_COMPONENTSW *lpUC)
BOOL WINAPI InternetReadFileExA(HINTERNET hFile, LPINTERNET_BUFFERSA lpBuffersOut, DWORD dwFlags, DWORD_PTR dwContext)
INTERNET_STATUS_CALLBACK WINAPI InternetSetStatusCallbackW(HINTERNET hInternet, INTERNET_STATUS_CALLBACK lpfnIntCB)
BOOL WINAPI InternetCloseHandle(HINTERNET hInternet)
BOOL WINAPI InternetQueryDataAvailable(HINTERNET hFile, LPDWORD lpdwNumberOfBytesAvailable, DWORD dwFlags, DWORD_PTR dwContext)
HINTERNET WINAPI InternetConnectW(HINTERNET hInternet, LPCWSTR lpszServerName, INTERNET_PORT nServerPort, LPCWSTR lpszUserName, LPCWSTR lpszPassword, DWORD dwService, DWORD dwFlags, DWORD_PTR dwContext)
HINTERNET WINAPI InternetOpenW(LPCWSTR lpszAgent, DWORD dwAccessType, LPCWSTR lpszProxy, LPCWSTR lpszProxyBypass, DWORD dwFlags)
BOOL WINAPI InternetSetOptionW(HINTERNET hInternet, DWORD dwOption, LPVOID lpBuffer, DWORD dwBufferLength)
BOOL WINAPI SetUrlCacheEntryInfoW(LPCWSTR lpszUrl, LPINTERNET_CACHE_ENTRY_INFOW lpCacheEntryInfo, DWORD dwFieldControl)
BOOL WINAPI GetUrlCacheEntryInfoW(LPCWSTR lpszUrl, LPINTERNET_CACHE_ENTRY_INFOW lpCacheEntryInfo, LPDWORD lpdwCacheEntryInfoBufferSize)
BOOL WINAPI UnlockUrlCacheEntryFileW(LPCWSTR lpszUrlName, DWORD dwReserved)
BOOL WINAPI CreateUrlCacheEntryW(LPCWSTR lpszUrlName, DWORD dwExpectedFileSize, LPCWSTR lpszFileExtension, LPWSTR lpszFileName, DWORD dwReserved)
BOOL WINAPI RetrieveUrlCacheEntryFileW(LPCWSTR lpszUrlName, LPINTERNET_CACHE_ENTRY_INFOW lpCacheEntryInfo, LPDWORD lpdwCacheEntryInfoBufferSize, DWORD dwReserved)
BOOL WINAPI CommitUrlCacheEntryW(LPCWSTR lpszUrlName, LPCWSTR lpszLocalFileName, FILETIME ExpireTime, FILETIME LastModifiedTime, DWORD CacheEntryType, LPWSTR lpHeaderInfo, DWORD dwHeaderSize, LPCWSTR lpszFileExtension, LPCWSTR lpszOriginalUrl)
BOOL WINAPI DeleteUrlCacheEntryW(LPCWSTR lpszUrlName)
GLenum GLenum GLuint components
GLenum GLuint GLenum GLsizei const GLchar * buf
GLsizeiptr const GLvoid GLenum 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
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)
#define memcpy(s1, s2, n)
#define ERROR_FILE_NOT_FOUND
static LPCSTR DWORD void * pvReserved
static const struct access_res create[16]
#define offsetof(TYPE, MEMBER)
PCERT_EXTENSION rgExtension
PCCERT_CONTEXT pIssuerCert
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCWSTR lpName OPTIONAL)
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
DWORD WINAPI GetLastError(void)
#define URL_OID_CRL_ISSUER
_In_opt_ LPCSTR _In_ DWORD _In_ DWORD _Outptr_ LPVOID _In_opt_ HCRYPTASYNC _In_opt_ PCRYPT_CREDENTIALS _In_opt_ LPVOID pvVerify
#define CONTEXT_OID_CERTIFICATE
#define CRL_FIND_ISSUED_BY_AKI_FLAG
struct _CRYPT_URL_ARRAY * PCRYPT_URL_ARRAY
#define CRYPT_DECODE_NOCOPY_FLAG
#define CERT_QUERY_CONTENT_FLAG_CTL
#define URL_OID_CERTIFICATE_ISSUER
#define CERT_STORE_PROV_COLLECTION
#define CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG
#define CRYPT_DONT_CACHE_RESULT
#define CERT_STORE_PROV_LDAP_W
#define CONTEXT_OID_CAPI2_ANY
#define CERT_ALT_NAME_URL
#define CRYPT_GET_URL_FROM_EXTENSION
#define szOID_CRL_DIST_POINTS
_In_opt_ LPCSTR _In_ DWORD dwRetrievalFlags
#define CERT_QUERY_CONTENT_FLAG_CRL
#define CERT_QUERY_CONTENT_FLAG_CERT
#define CRL_FIND_ISSUED_BY_SIGNATURE_FLAG
#define CERT_QUERY_CONTENT_CRL
_In_ PCCERT_CONTEXT _In_ DWORD dwAddDisposition
#define CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED
#define X509_AUTHORITY_INFO_ACCESS
#define CERT_STORE_CREATE_NEW_FLAG
_In_ DWORD _In_ DWORD _In_ DWORD _In_ DWORD _Out_opt_ DWORD _Outptr_opt_ const void ** ppvContext
#define CRYPT_OID_VERIFY_REVOCATION_FUNC
void(WINAPI * PFN_FREE_ENCODED_OBJECT_FUNC)(_In_opt_ LPCSTR pszObjectOid, _Inout_ PCRYPT_BLOB_ARRAY pObject, _Inout_opt_ void *pvFreeContext)
#define CERT_QUERY_OBJECT_BLOB
#define URL_OID_CTL_NEXT_UPDATE
#define CRYPT_STRING_BASE64_ANY
_In_ DWORD dwEncodingType
#define CERT_CRL_SIGN_KEY_USAGE
#define CERT_QUERY_FORMAT_FLAG_BINARY
#define CERT_QUERY_CONTENT_CTL
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
struct _CRYPT_URL_ARRAY CRYPT_URL_ARRAY
_In_opt_ LPCSTR pszObjectOid
#define X509_ASN_ENCODING
_In_ PCCERT_CONTEXT _In_opt_ LPFILETIME pTime
#define URL_OID_CROSS_CERT_DIST_POINT
#define CRYPT_DECODE_ALLOC_FLAG
#define CERT_STORE_PROV_MEMORY
#define SCHEME_OID_RETRIEVE_ENCODED_OBJECTW_FUNC
#define CRL_DIST_POINT_FULL_NAME
#define CERT_VERIFY_CACHE_ONLY_BASED_REVOCATION
#define CONTEXT_OID_PKCS7
_In_opt_ LPCSTR _In_ DWORD _In_ DWORD _Outptr_ LPVOID _In_opt_ HCRYPTASYNC hAsyncRetrieve
_In_ HCRYPTHASH _In_ BOOL _In_ DWORD _Inout_updates_bytes_to_ pdwDataLen BYTE * pbData
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD _Outptr_opt_ void ** ppvObject
#define CRYPT_OID_OPEN_STORE_PROV_FUNC
#define URL_OID_GET_OBJECT_URL_FUNC
#define CRYPT_WIRE_ONLY_RETRIEVAL
#define CRYPT_STICKY_CACHE_RETRIEVAL
_In_ PCCERT_CONTEXT _In_ DWORD _Outptr_opt_ PCCERT_CONTEXT * ppStoreContext
#define CERT_VERIFY_REV_ACCUMULATIVE_TIMEOUT_FLAG
#define CERT_CONTEXT_REVOCATION_TYPE
#define URL_OID_CERTIFICATE_CRL_DIST_POINT
#define CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED
#define CERT_STORE_ADD_ALWAYS
#define URL_OID_CERTIFICATE_FRESHEST_CRL
#define szOID_AUTHORITY_INFO_ACCESS
struct _CRYPT_BLOB_ARRAY CRYPT_BLOB_ARRAY
struct _CRYPT_URL_INFO CRYPT_URL_INFO
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD _Outptr_opt_ void _In_opt_ PCRYPT_CREDENTIALS pCredentials
#define URL_OID_CRL_FRESHEST_CRL
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD dwTimeout
_In_opt_ LPCSTR _In_ DWORD _In_ DWORD _Outptr_ LPVOID _In_opt_ HCRYPTASYNC _In_opt_ PCRYPT_CREDENTIALS _In_opt_ LPVOID _Inout_opt_ PCRYPT_RETRIEVE_AUX_INFO pAuxInfo
struct _CRYPT_URL_INFO * PCRYPT_URL_INFO
#define CERT_QUERY_CONTENT_CERT
#define X509_CRL_DIST_POINTS
#define CONTEXT_OID_CREATE_OBJECT_CONTEXT_FUNC
#define CRYPT_CACHE_ONLY_RETRIEVAL
#define URL_OID_CTL_ISSUER
#define szOID_PKIX_CA_ISSUERS
#define CRL_FIND_ISSUED_BY
#define CRYPT_E_NOT_FOUND
#define CRYPT_E_NO_REVOCATION_CHECK
#define CRYPT_E_REVOCATION_OFFLINE
#define ERROR_INVALID_DATA
#define INTERNET_SCHEME_FTP
#define INTERNET_SCHEME_HTTP
#define INTERNET_DEFAULT_HTTP_PORT
#define INTERNET_DEFAULT_FTP_PORT
#define HTTP_QUERY_FLAG_SYSTEMTIME
#define INTERNET_FLAG_ASYNC
#define INTERNET_MAX_HOST_NAME_LENGTH
#define INTERNET_FLAG_NO_COOKIES
#define CACHE_ENTRY_EXPTIME_FC
#define INTERNET_SERVICE_FTP
#define NORMAL_CACHE_ENTRY
#define STICKY_CACHE_ENTRY
#define INTERNET_FLAG_NO_UI
#define INTERNET_STATUS_REQUEST_COMPLETE
#define INTERNET_MAX_PATH_LENGTH
#define INTERNET_OPTION_SEND_TIMEOUT
#define INTERNET_OPEN_TYPE_PRECONFIG
#define INTERNET_OPTION_RECEIVE_TIMEOUT
#define HTTP_QUERY_EXPIRES
#define INTERNET_SERVICE_HTTP