23#define NONAMELESSUNION
25#define WIN32_NO_STATUS
28#include "wine/winternl.h"
29#define CRYPT_OID_INFO_HAS_EXTRA_FIELDS
36#include "wine/unicode.h"
162 cert->ctx.hCertStore = store;
178 switch (add_disposition)
204 FIXME(
"Unimplemented add disposition %d\n", add_disposition);
209 switch (add_disposition)
216 TRACE(
"found matching certificate, not adding\n");
225 FIXME(
"CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES: semi-stub for links\n");
227 inherit_props =
TRUE;
231 FIXME(
"CERT_STORE_ADD_USE_EXISTING: semi-stub for links\n");
243 TRACE(
"existing certificate is newer, not adding\n");
253 TRACE(
"existing certificate is newer, not adding\n");
257 inherit_props =
TRUE;
270 (ret_context || inherit_props) ? &new_context :
NULL, use_link);
354 cert->ctx.pCertInfo = certInfo;
388 if (
cert->base.properties)
439 if (
cert->base.properties)
462 cert->ctx.pCertInfo->Subject.pbData,
463 cert->ctx.pCertInfo->Subject.cbData,
468 cert->ctx.pCertInfo->SubjectPublicKeyInfo.PublicKey.pbData,
469 cert->ctx.pCertInfo->SubjectPublicKeyInfo.PublicKey.cbData,
474 cert->ctx.pCertInfo->SerialNumber.pbData,
475 cert->ctx.pCertInfo->SerialNumber.cbData,
493 cert->ctx.pCertInfo->rgExtension);
525 DWORD i, containerLen, provNameLen;
530 data += containerLen;
536 if (
info->cProvParam)
541 for (
i = 0;
i <
info->cProvParam;
i++)
614 if (
from->pwszContainerName)
622 if (
from->pwszProvName)
642 from->rgProvParam[
i].cbData);
643 nextData +=
from->rgProvParam[
i].cbData;
654 if (
info->pwszContainerName)
658 if (
info->pwszProvName)
662 size += containerSize + provNameSize;
663 for (
i = 0;
i <
info->cProvParam;
i++)
685 if (!
cert->base.properties)
748 (
const BYTE *)keyContext, keyContext->
cbSize);
778 keyContext.
cbSize =
sizeof(keyContext);
860 info->pwszProvName,
info->dwProvType, 0);
865 for (
i = 0;
i <
info->cProvParam;
i++)
868 info->rgProvParam[
i].dwParam,
info->rgProvParam[
i].pbData,
869 info->rgProvParam[
i].dwFlags);
871 *pdwKeySpec =
info->dwKeySpec;
883 DWORD *pdwKeySpec,
BOOL *pfCallerFreeProv)
891 phCryptProv, pdwKeySpec, pfCallerFreeProv);
913 size =
sizeof(keyContext);
921 if (pfCallerFreeProv)
922 *pfCallerFreeProv = !
cache;
936 keyContext.
cbSize =
sizeof(keyContext);
940 if (pfCallerFreeProv)
941 *pfCallerFreeProv =
FALSE;
946 if (pfCallerFreeProv)
947 *pfCallerFreeProv =
TRUE;
1006 copy = *keyProvInfo;
1007 copy.pwszContainerName = containerW;
1044 while (
ret && !found)
1049 (
BYTE *)containerA, &
size, enumFlags);
1054 enumFlags &= ~CRYPT_FIRST;
1071 memset(&keyProvInfo, 0,
sizeof(keyProvInfo));
1072 while (
ret && !found)
1080 if (
size <= cbProvName)
1110 keyProvInfo.
dwFlags &= ~CRYPT_USER_KEYSET;
1227 TRACE(
"(%p, %p)\n", pInt1, pInt2);
1290 *pk2 = (
LPVOID)(pblob2 + 1);
1320 FIXME(
"unimplemented for DH public keys\n");
1466 switch (
id->dwIdChoice)
1473 &
id->u.IssuerSerialNumber.SerialNumber);
1580 subject->pCertInfo->cExtension, subject->pCertInfo->rgExtension)))
1592 if (
info->CertIssuer.cbData &&
info->CertSerialNumber.cbData)
1595 memcpy(&
id.
u.IssuerSerialNumber.Issuer, &
info->CertIssuer,
1597 memcpy(&
id.
u.IssuerSerialNumber.SerialNumber,
1600 else if (
info->KeyId.cbData)
1614 subject->pCertInfo->cExtension, subject->pCertInfo->rgExtension)))
1626 if (
info->AuthorityCertIssuer.cAltEntry &&
1627 info->AuthorityCertSerialNumber.cbData)
1632 for (
i = 0; !directoryName &&
1633 i <
info->AuthorityCertIssuer.cAltEntry;
i++)
1634 if (
info->AuthorityCertIssuer.rgAltEntry[
i].dwAltNameChoice
1637 &
info->AuthorityCertIssuer.rgAltEntry[
i];
1641 memcpy(&
id.
u.IssuerSerialNumber.Issuer,
1643 memcpy(&
id.
u.IssuerSerialNumber.SerialNumber,
1644 &
info->AuthorityCertSerialNumber,
1649 FIXME(
"no supported name type in authority key id2\n");
1653 else if (
info->KeyId.cbData)
1669 dwFlags, &subject->pCertInfo->Issuer);
1815 FIXME(
"find type %08x unimplemented\n", dwType);
1851 if (*pdwFlags & ~supportedFlags)
1875 *pdwFlags &= ~CERT_STORE_TIME_VALIDITY_FLAG;
1882 *pdwFlags &= ~CERT_STORE_SIGNATURE_FLAG;
1893 TRACE(
"(%p, %p, %p, %08x)\n", hCertStore, pSubjectContext,
1894 pPrevIssuerContext, *pdwFlags);
1896 if (!pSubjectContext)
1904 pSubjectContext, pPrevIssuerContext);
1941 cContext, rgpvContext,
dwFlags, pRevPara, pRevStatus);
1986 rgpvContext,
dwFlags, pRevPara, pRevStatus);
2022 for (
i = 0; !
ret &&
i < cAttr;
i++)
2023 if (rgAttr[
i].pszObjId && !
strcmp(pszObjId, rgAttr[
i].pszObjId))
2044 for (
i = 0; !
ret &&
i < cExtensions;
i++)
2045 if (rgExtensions[
i].pszObjId && !
strcmp(pszObjId,
2046 rgExtensions[
i].pszObjId))
2047 ret = &rgExtensions[
i];
2066 if (
pName->rgRDN[
i].rgRDNAttr[
j].pszObjId && !
strcmp(pszObjId,
2067 pName->rgRDN[
i].rgRDNAttr[
j].pszObjId))
2080 for (
j = 0;
j <
name->rgRDN[
i].cRDNAttr;
j++)
2084 name->rgRDN[
i].rgRDNAttr[
j].dwValueType ==
2093 if (
attr->Value.cbData !=
2094 name->rgRDN[
i].rgRDNAttr[
j].Value.cbData)
2102 TRACE(
"%s : %s => %d\n",
2113 if (
attr->Value.cbData !=
2114 name->rgRDN[
i].rgRDNAttr[
j].Value.cbData)
2118 attr->Value.cbData);
2121 TRACE(
"%s : %s => %d\n",
2167 pTimeToVerify = &fileTime;
2181 TRACE(
"(%p, %p)\n", pSubjectInfo, pIssuerInfo);
2189 DWORD *pcbComputedHash)
2194 TRACE(
"(%08lx, %d, %08x, %p, %d, %p, %p)\n", hCryptProv, Algid,
dwFlags,
2195 pbEncoded, cbEncoded, pbComputedHash, pcbComputedHash);
2209 pcbComputedHash, 0);
2218 BYTE *pbComputedHash,
DWORD *pcbComputedHash)
2223 TRACE(
"(%08lx, %d, %08x, %d, %p, %p, %p)\n", hCryptProv, Algid,
dwFlags,
2251 pcbComputedHash, 0);
2262 BYTE *pbComputedHash,
DWORD *pcbComputedHash)
2269 pbEncoded, cbEncoded, pbComputedHash, *pcbComputedHash);
2281 info->SignatureAlgorithm.pszObjId, 0);
2293 info->ToBeSigned.cbData, 0);
2296 pcbComputedHash, 0);
2308 const void *pvHashAuxInfo,
BYTE *pbSignature,
DWORD *pcbSignature)
2314 TRACE(
"(%08lx, %d, %d, %p, %d, %p, %p, %p, %p)\n", hCryptProv,
2316 pSignatureAlgorithm, pvHashAuxInfo, pbSignature, pcbSignature);
2333 cbEncodedToBeSigned, 0);
2353 cbEncodedToBeSigned, 0);
2370 DWORD encodedSize, hashSize;
2372 TRACE(
"(%08lx, %d, %d, %s, %p, %p, %p, %p, %p)\n", hCryptProv, dwKeySpec,
2377 NULL, &encodedSize);
2385 pvStructInfo, encoded, &encodedSize);
2390 pvHashAuxInfo,
NULL, &hashSize);
2399 pSignatureAlgorithm, pvHashAuxInfo,
hash, &hashSize);
2404 info.ToBeSigned.cbData = encodedSize;
2405 info.ToBeSigned.pbData = encoded;
2406 info.SignatureAlgorithm = *pSignatureAlgorithm;
2407 info.Signature.cbData = hashSize;
2409 info.Signature.cUnusedBits = 0;
2445 hashID =
info->u.Algid;
2446 if (
info->ExtraInfo.cbData >=
sizeof(
ALG_ID))
2447 pubKeyID = *(
ALG_ID *)
info->ExtraInfo.pbData;
2454 pubKeyInfo, pubKeyID, 0,
NULL, &
key);
2518 const WCHAR *sign_algo;
2551 FIXME(
"Unsupported ecc curve type: %s\n", *ecc_curve);
2668 BYTE *hash_value =
NULL, *sig_value;
2669 DWORD hash_len, sig_len;
2685 FIXME(
"Failed to verify signature: %08x\n",
status);
2724 TRACE(
"(%08lx, %d, %d, %p, %d, %p, %08x, %p)\n", hCryptProv,
2728 switch (dwSubjectType)
2767 &signedCert, &
size);
2770 switch (dwIssuerType)
2784 FIXME(
"CRYPT_VERIFY_CERT_SIGN_ISSUER_CHAIN: stub\n");
2795 FIXME(
"unimplemented for NULL signer\n");
2831 if (cbKeyUsage <
usage.cbData)
2836 if (cbKeyUsage >
usage.cbData)
2838 cbKeyUsage -
usage.cbData);
2915 *pcbUsage = bytesNeeded;
2916 else if (*pcbUsage < bytesNeeded)
2919 *pcbUsage = bytesNeeded;
2924 *pcbUsage = bytesNeeded;
2935 for (
i = 0;
i <
usage->cUsageIdentifier;
i++)
2939 nextOID +=
strlen(nextOID) + 1;
2979 LPCSTR pszUsageIdentifier)
3001 for (
i = 0; !exists &&
i <
usage->cUsageIdentifier;
i++)
3004 pszUsageIdentifier))
3019 + (
usage->cUsageIdentifier + 1) *
sizeof(
LPSTR));
3020 for (
i = 0;
i <
usage->cUsageIdentifier;
i++)
3024 nextOID +=
strlen(nextOID) + 1;
3027 strcpy(nextOID, pszUsageIdentifier);
3048 usage->rgpszUsageIdentifier =
3052 strcpy(
usage->rgpszUsageIdentifier[0], pszUsageIdentifier);
3053 usage->cUsageIdentifier = 1;
3064 LPCSTR pszUsageIdentifier)
3093 pszUsageIdentifier))
3095 if (found && i < pUsage->cUsageIdentifier - 1)
3126#define BITS_PER_DWORD (sizeof(DWORD) * 8)
3132 if (indexIndex + 1 >
field->cIndexes)
3134 if (
field->cIndexes)
3136 (indexIndex + 1) *
sizeof(
DWORD));
3141 field->indexes[indexIndex] = 0;
3142 field->cIndexes = indexIndex + 1;
3167 TRACE(
"(%d, %p, %d, %p, %d)\n", cCerts, rghCerts, *
cNumOIDs,
3170 for (
i = 0;
i < cCerts;
i++)
3181 allUsagesValid =
FALSE;
3246 -
j - 1) *
sizeof(
LPSTR));
3402 blob->pbData,
blob->cbData, sigAlgo,
NULL, sig, &sigSize);
3407 DWORD encodedSignedCertSize = 0;
3417 &encodedSignedCert, &encodedSignedCertSize);
3421 encodedSignedCert, encodedSignedCertSize);
3452 assert(pSubjectIssuerBlob);
3459 info->SerialNumber.cbData = pSerialNumber->
cbData;
3460 info->SerialNumber.pbData = pSerialNumber->
pbData;
3461 if (pSignatureAlgorithm)
3462 info->SignatureAlgorithm = *pSignatureAlgorithm;
3465 info->SignatureAlgorithm.pszObjId = oid;
3466 info->SignatureAlgorithm.Parameters.cbData = 0;
3467 info->SignatureAlgorithm.Parameters.pbData =
NULL;
3469 info->Issuer.cbData = pSubjectIssuerBlob->
cbData;
3470 info->Issuer.pbData = pSubjectIssuerBlob->
pbData;
3487 info->Subject.cbData = pSubjectIssuerBlob->
cbData;
3488 info->Subject.pbData = pSubjectIssuerBlob->
pbData;
3497 info->cExtension = 0;
3518 rpcrt,
"RpcStringFreeA");
3520 if (uuidCreate && uuidToString && rpcStringFree)
3527 unsigned char *uuidStr;
3543 rpcStringFree(&uuidStr);
3561 DWORD pubKeySize = 0, dwKeySpec;
3563 TRACE(
"(%08lx, %p, %08x, %p, %p, %p, %p, %p)\n",
hProv,
3564 pSubjectIssuerBlob,
dwFlags, pKeyProvInfo, pSignatureAlgorithm, pStartTime,
3565 pExtensions, pExtensions);
3567 if(!pSubjectIssuerBlob)
3579 releaseContext =
TRUE;
3620 releaseContext =
TRUE;
3642 pSignatureAlgorithm, pStartTime, pEndTime,
pubKey, pExtensions);
3650 &
info.SignatureAlgorithm);
3673 dwSubjectType, pvSubject, pSubjectUsage,
dwFlags, pVerifyUsagePara,
3674 pVerifyUsageStatus);
3693 FIXME(
"pCreatePara not handled\n");
3697 switch (dwContextType)
3706 WARN(
"unknown context type: 0x%x\n", dwContextType);
int strcmp(const char *String1, const char *String2)
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
ACPI_SIZE strlen(const char *String)
int strncmp(const char *String1, const char *String2, ACPI_SIZE Count)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
INT copy(TCHAR source[MAX_PATH], TCHAR dest[MAX_PATH], INT append, DWORD lpdwFlags, BOOL bTouch)
#define BCRYPT_ECDSA_PUBLIC_P256_MAGIC
NTSTATUS WINAPI BCryptDestroyKey(BCRYPT_KEY_HANDLE)
#define BCRYPT_ECDSA_P384_ALGORITHM
#define BCRYPT_ECCPUBLIC_BLOB
#define BCRYPT_ECDSA_PUBLIC_P384_MAGIC
NTSTATUS WINAPI BCryptVerifySignature(BCRYPT_KEY_HANDLE, void *, UCHAR *, ULONG, UCHAR *, ULONG, ULONG)
struct _BCRYPT_ECCKEY_BLOB BCRYPT_ECCKEY_BLOB
#define BCRYPT_ECDSA_P256_ALGORITHM
#define BCRYPT_HASH_LENGTH
NTSTATUS WINAPI BCryptImportKeyPair(BCRYPT_ALG_HANDLE, BCRYPT_KEY_HANDLE, LPCWSTR, BCRYPT_KEY_HANDLE *, UCHAR *, ULONG, ULONG)
NTSTATUS WINAPI BCryptHashData(BCRYPT_HASH_HANDLE handle, UCHAR *input, ULONG size, ULONG flags)
NTSTATUS WINAPI BCryptGetProperty(BCRYPT_HANDLE handle, LPCWSTR prop, UCHAR *buffer, ULONG count, ULONG *res, ULONG flags)
NTSTATUS WINAPI BCryptDestroyHash(BCRYPT_HASH_HANDLE handle)
NTSTATUS WINAPI BCryptOpenAlgorithmProvider(BCRYPT_ALG_HANDLE *handle, LPCWSTR id, LPCWSTR implementation, DWORD flags)
NTSTATUS WINAPI BCryptCloseAlgorithmProvider(BCRYPT_ALG_HANDLE handle, DWORD flags)
NTSTATUS WINAPI BCryptCreateHash(BCRYPT_ALG_HANDLE algorithm, BCRYPT_HASH_HANDLE *handle, UCHAR *object, ULONG objectlen, UCHAR *secret, ULONG secretlen, ULONG flags)
NTSTATUS WINAPI BCryptFinishHash(BCRYPT_HASH_HANDLE handle, UCHAR *output, ULONG size, ULONG flags)
BOOL WINAPI CryptDecodeObjectEx(DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, PCRYPT_DECODE_PARA pDecodePara, void *pvStructInfo, DWORD *pcbStructInfo)
BOOL WINAPI CryptDecodeObject(DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo, DWORD *pcbStructInfo)
static void * context_ptr(context_t *context)
DWORD ContextPropertyList_EnumPropIDs(CONTEXT_PROPERTY_LIST *list, DWORD id) DECLSPEC_HIDDEN
BOOL ContextPropertyList_FindProperty(CONTEXT_PROPERTY_LIST *list, DWORD id, PCRYPT_DATA_BLOB blob) DECLSPEC_HIDDEN
#define CERT_CERT_PROP_ID
#define WINE_CRYPTCERTSTORE_MAGIC
HCRYPTPROV WINAPI I_CryptGetDefaultCryptProv(ALG_ID)
static context_t * context_from_ptr(const void *ptr)
BOOL ContextPropertyList_SetProperty(CONTEXT_PROPERTY_LIST *list, DWORD id, const BYTE *pbData, size_t cbData) DECLSPEC_HIDDEN
void ContextPropertyList_RemoveProperty(CONTEXT_PROPERTY_LIST *list, DWORD id) DECLSPEC_HIDDEN
static cert_t * cert_from_ptr(const CERT_CONTEXT *ptr)
BOOL WINAPI CRYPT_AsnEncodePubKeyInfoNoNull(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded) DECLSPEC_HIDDEN
BOOL WINAPI CryptCreateHash(HCRYPTPROV hProv, ALG_ID Algid, HCRYPTKEY hKey, DWORD dwFlags, HCRYPTHASH *phHash)
BOOL WINAPI CryptGenRandom(HCRYPTPROV hProv, DWORD dwLen, BYTE *pbBuffer)
BOOL WINAPI CryptSetProvParam(HCRYPTPROV hProv, DWORD dwParam, const BYTE *pbData, DWORD dwFlags)
BOOL WINAPI CryptGetHashParam(HCRYPTHASH hHash, DWORD dwParam, BYTE *pbData, DWORD *pdwDataLen, DWORD dwFlags)
BOOL WINAPI CryptDestroyKey(HCRYPTKEY hKey)
BOOL WINAPI CryptDestroyHash(HCRYPTHASH hHash)
BOOL WINAPI CryptReleaseContext(HCRYPTPROV hProv, DWORD dwFlags)
BOOL WINAPI CryptHashData(HCRYPTHASH hHash, const BYTE *pbData, DWORD dwDataLen, DWORD dwFlags)
BOOL WINAPI CryptAcquireContextA(HCRYPTPROV *phProv, LPCSTR pszContainer, LPCSTR pszProvider, DWORD dwProvType, DWORD dwFlags)
BOOL WINAPI CryptGenKey(HCRYPTPROV hProv, ALG_ID Algid, DWORD dwFlags, HCRYPTKEY *phKey)
BOOL WINAPI CryptEnumProvidersW(DWORD dwIndex, DWORD *pdwReserved, DWORD dwFlags, DWORD *pdwProvType, LPWSTR pszProvName, DWORD *pcbProvName)
BOOL WINAPI CryptVerifySignatureW(HCRYPTHASH hHash, const BYTE *pbSignature, DWORD dwSigLen, HCRYPTKEY hPubKey, LPCWSTR sDescription, DWORD dwFlags)
BOOL WINAPI CryptGetUserKey(HCRYPTPROV hProv, DWORD dwKeySpec, HCRYPTKEY *phUserKey)
BOOL WINAPI CryptGetKeyParam(HCRYPTKEY hKey, DWORD dwParam, BYTE *pbData, DWORD *pdwDataLen, DWORD dwFlags)
BOOL WINAPI CryptSignHashW(HCRYPTHASH hHash, DWORD dwKeySpec, LPCWSTR sDescription, DWORD dwFlags, BYTE *pbSignature, DWORD *pdwSigLen)
BOOL WINAPI CryptAcquireContextW(HCRYPTPROV *phProv, LPCWSTR pszContainer, LPCWSTR pszProvider, DWORD dwProvType, DWORD dwFlags)
BOOL WINAPI CryptGetProvParam(HCRYPTPROV hProv, DWORD dwParam, BYTE *pbData, DWORD *pdwDataLen, DWORD dwFlags)
DWORD WINAPI CertGetPublicKeyLength(DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pPublicKey)
static BOOL compare_existing_cert(PCCERT_CONTEXT pCertContext, DWORD dwType, DWORD dwFlags, const void *pvPara)
static BOOL CRYPT_VerifySignature(HCRYPTPROV_LEGACY hCryptProv, DWORD dwCertEncodingType, CERT_PUBLIC_KEY_INFO *pubKeyInfo, const CERT_SIGNED_CONTENT_INFO *signedCert, const CRYPT_OID_INFO *info)
static PCCERT_CONTEXT find_cert_by_name_str_w(HCERTSTORE store, DWORD dwType, DWORD dwFlags, const void *pvPara, PCCERT_CONTEXT prev)
void CRYPT_FixKeyProvInfoPointers(PCRYPT_KEY_PROV_INFO info)
BOOL WINAPI CertAddCertificateContextToStore(HCERTSTORE hCertStore, PCCERT_CONTEXT pCertContext, DWORD dwAddDisposition, PCCERT_CONTEXT *ppStoreContext)
static BOOL CNG_ImportECCPubKey(CERT_PUBLIC_KEY_INFO *pubKeyInfo, BCRYPT_KEY_HANDLE *key)
static HCRYPTPROV CRYPT_CreateKeyProv(void)
BOOL WINAPI CertFreeCertificateContext(PCCERT_CONTEXT pCertContext)
PCCERT_CONTEXT WINAPI CertCreateCertificateContext(DWORD dwCertEncodingType, const BYTE *pbCertEncoded, DWORD cbCertEncoded)
static const context_vtbl_t cert_vtbl
RPC_STATUS(RPC_ENTRY * UuidCreateFunc)(UUID *)
static BOOL CRYPT_VerifyCertSignatureFromPublicKeyInfo(HCRYPTPROV_LEGACY hCryptProv, DWORD dwCertEncodingType, CERT_PUBLIC_KEY_INFO *pubKeyInfo, const CERT_SIGNED_CONTENT_INFO *signedCert)
BOOL WINAPI CertCompareCertificateName(DWORD dwCertEncodingType, PCERT_NAME_BLOB pCertName1, PCERT_NAME_BLOB pCertName2)
static PCCERT_CONTEXT find_cert_by_name_str_a(HCERTSTORE store, DWORD dwType, DWORD dwFlags, const void *pvPara, PCCERT_CONTEXT prev)
PCCERT_CONTEXT WINAPI CertFindCertificateInStore(HCERTSTORE hCertStore, DWORD dwCertEncodingType, DWORD dwFlags, DWORD dwType, const void *pvPara, PCCERT_CONTEXT pPrevCertContext)
static BOOL compare_cert_by_sha1_hash(PCCERT_CONTEXT pCertContext, DWORD dwType, DWORD dwFlags, const void *pvPara)
static BOOL cert_prov_info_matches_cert(PCCERT_CONTEXT pCert)
BOOL WINAPI CertRemoveEnhancedKeyUsageIdentifier(PCCERT_CONTEXT pCertContext, LPCSTR pszUsageIdentifier)
BOOL WINAPI CertVerifyValidityNesting(PCERT_INFO pSubjectInfo, PCERT_INFO pIssuerInfo)
BOOL WINAPI CertVerifyRevocation(DWORD dwEncodingType, DWORD dwRevType, DWORD cContext, PVOID rgpvContext[], DWORD dwFlags, PCERT_REVOCATION_PARA pRevPara, PCERT_REVOCATION_STATUS pRevStatus)
static BOOL container_matches_cert(PCCERT_CONTEXT pCert, LPCSTR container, CRYPT_KEY_PROV_INFO *keyProvInfo)
static void CertContext_SetKeyProvInfo(PCCERT_CONTEXT context, const CRYPT_KEY_PROV_INFO *pInfo, HCRYPTPROV hProv)
static void Cert_free(context_t *context)
BOOL WINAPI CryptFindCertificateKeyProvInfo(PCCERT_CONTEXT pCert, DWORD dwFlags, void *pvReserved)
static BOOL compare_cert_by_md5_hash(PCCERT_CONTEXT pCertContext, DWORD dwType, DWORD dwFlags, const void *pvPara)
static BOOL CertContext_GetHashProp(cert_t *cert, DWORD dwPropId, ALG_ID algID, const BYTE *toHash, DWORD toHashLen, void *pvData, DWORD *pcbData)
PCRYPT_ATTRIBUTE WINAPI CertFindAttribute(LPCSTR pszObjId, DWORD cAttr, CRYPT_ATTRIBUTE rgAttr[])
PCCERT_CONTEXT WINAPI CertGetSubjectCertificateFromStore(HCERTSTORE hCertStore, DWORD dwCertEncodingType, PCERT_INFO pCertId)
BOOL WINAPI CertAddEncodedCertificateToSystemStoreW(LPCWSTR pszCertStoreName, const BYTE *pbCertEncoded, DWORD cbCertEncoded)
static BOOL CertContext_SetKeyProvInfoProperty(CONTEXT_PROPERTY_LIST *properties, const CRYPT_KEY_PROV_INFO *info)
BOOL WINAPI CertVerifyCTLUsage(DWORD dwEncodingType, DWORD dwSubjectType, void *pvSubject, PCTL_USAGE pSubjectUsage, DWORD dwFlags, PCTL_VERIFY_USAGE_PARA pVerifyUsagePara, PCTL_VERIFY_USAGE_STATUS pVerifyUsageStatus)
static DWORD CRYPT_significantBytes(const CRYPT_INTEGER_BLOB *pInt)
BOOL WINAPI CertGetIntendedKeyUsage(DWORD dwCertEncodingType, PCERT_INFO pCertInfo, BYTE *pbKeyUsage, DWORD cbKeyUsage)
BOOL WINAPI CertSetEnhancedKeyUsage(PCCERT_CONTEXT pCertContext, PCERT_ENHKEY_USAGE pUsage)
static void CRYPT_MakeCertInfo(PCERT_INFO info, const CRYPT_DATA_BLOB *pSerialNumber, const CERT_NAME_BLOB *pSubjectIssuerBlob, const CRYPT_ALGORITHM_IDENTIFIER *pSignatureAlgorithm, const SYSTEMTIME *pStartTime, const SYSTEMTIME *pEndTime, const CERT_PUBLIC_KEY_INFO *pubKey, const CERT_EXTENSIONS *pExtensions)
BOOL WINAPI CryptAcquireCertificatePrivateKey(PCCERT_CONTEXT pCert, DWORD dwFlags, void *pvReserved, HCRYPTPROV_OR_NCRYPT_KEY_HANDLE *phCryptProv, DWORD *pdwKeySpec, BOOL *pfCallerFreeProv)
BOOL WINAPI CertIsRDNAttrsInCertificateName(DWORD dwCertEncodingType, DWORD dwFlags, PCERT_NAME_BLOB pCertName, PCERT_RDN pRDN)
BOOL WINAPI CertAddCertificateLinkToStore(HCERTSTORE hCertStore, PCCERT_CONTEXT pCertContext, DWORD dwAddDisposition, PCCERT_CONTEXT *ppCertContext)
static PCCERT_CONTEXT find_cert_any(HCERTSTORE store, DWORD dwType, DWORD dwFlags, const void *pvPara, PCCERT_CONTEXT prev)
BOOL WINAPI CertAddEnhancedKeyUsageIdentifier(PCCERT_CONTEXT pCertContext, LPCSTR pszUsageIdentifier)
BOOL WINAPI CryptVerifyCertificateSignatureEx(HCRYPTPROV_LEGACY hCryptProv, DWORD dwCertEncodingType, DWORD dwSubjectType, void *pvSubject, DWORD dwIssuerType, void *pvIssuer, DWORD dwFlags, void *pvReserved)
BOOL WINAPI CryptSetKeyIdentifierProperty(const CRYPT_HASH_BLOB *pKeyIdentifier, DWORD dwPropId, DWORD dwFlags, LPCWSTR pwszComputerName, void *pvReserved, const void *pvData)
static BOOL CNG_ImportPubKey(CERT_PUBLIC_KEY_INFO *pubKeyInfo, BCRYPT_KEY_HANDLE *key)
static BOOL CNG_VerifySignature(HCRYPTPROV_LEGACY hCryptProv, DWORD dwCertEncodingType, CERT_PUBLIC_KEY_INFO *pubKeyInfo, const CERT_SIGNED_CONTENT_INFO *signedCert, const CRYPT_OID_INFO *info)
BOOL WINAPI CryptHashPublicKeyInfo(HCRYPTPROV_LEGACY hCryptProv, ALG_ID Algid, DWORD dwFlags, DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo, BYTE *pbComputedHash, DWORD *pcbComputedHash)
static PCCERT_CONTEXT find_cert_by_issuer(HCERTSTORE store, DWORD dwType, DWORD dwFlags, const void *pvPara, PCCERT_CONTEXT prev)
BOOL(WINAPI * CertVerifyRevocationFunc)(DWORD, DWORD, DWORD, void **, DWORD, PCERT_REVOCATION_PARA, PCERT_REVOCATION_STATUS)
static PCCERT_CONTEXT cert_compare_certs_in_store(HCERTSTORE store, PCCERT_CONTEXT prev, CertCompareFunc compare, DWORD dwType, DWORD dwFlags, const void *pvPara)
static BOOL CertContext_CopyParam(void *pvData, DWORD *pcbData, const void *pb, DWORD cb)
BOOL WINAPI CertCompareCertificate(DWORD dwCertEncodingType, PCERT_INFO pCertId1, PCERT_INFO pCertId2)
static BOOL add_cert_to_store(WINECRYPT_CERTSTORE *store, const CERT_CONTEXT *cert, DWORD add_disposition, BOOL use_link, PCCERT_CONTEXT *ret_context)
static BOOL CNG_CalcHash(const WCHAR *algorithm, const CERT_SIGNED_CONTENT_INFO *signedCert, BYTE **hash_value, DWORD *hash_len)
static BOOL compare_cert_by_name(PCCERT_CONTEXT pCertContext, DWORD dwType, DWORD dwFlags, const void *pvPara)
BOOL WINAPI CryptSignAndEncodeCertificate(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProv, DWORD dwKeySpec, DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, const void *pvHashAuxInfo, BYTE *pbEncoded, DWORD *pcbEncoded)
BOOL(* CertCompareFunc)(PCCERT_CONTEXT pCertContext, DWORD dwType, DWORD dwFlags, const void *pvPara)
static BOOL find_key_prov_info_in_provider(PCCERT_CONTEXT pCert, CRYPT_KEY_PROV_INFO *keyProvInfo)
static BOOL CNG_PrepareSignature(CERT_PUBLIC_KEY_INFO *pubKeyInfo, const CERT_SIGNED_CONTENT_INFO *signedCert, BYTE **sig_value, DWORD *sig_len)
static PCCERT_CONTEXT CRYPT_CreateSignedCert(const CRYPT_DER_BLOB *blob, HCRYPTPROV hProv, DWORD dwKeySpec, PCRYPT_ALGORITHM_IDENTIFIER sigAlgo)
PCCERT_CONTEXT WINAPI CertGetIssuerCertificateFromStore(HCERTSTORE hCertStore, PCCERT_CONTEXT pSubjectContext, PCCERT_CONTEXT pPrevIssuerContext, DWORD *pdwFlags)
BOOL WINAPI CertAddEncodedCertificateToStore(HCERTSTORE hCertStore, DWORD dwCertEncodingType, const BYTE *pbCertEncoded, DWORD cbCertEncoded, DWORD dwAddDisposition, PCCERT_CONTEXT *ppCertContext)
RPC_STATUS(RPC_ENTRY * RpcStringFreeFunc)(unsigned char **)
BOOL WINAPI CryptVerifyCertificateSignature(HCRYPTPROV_LEGACY hCryptProv, DWORD dwCertEncodingType, const BYTE *pbEncoded, DWORD cbEncoded, PCERT_PUBLIC_KEY_INFO pPublicKey)
static BOOL CRYPT_IsBitInFieldSet(const struct BitField *field, DWORD bit)
static BOOL CRYPT_AcquirePrivateKeyFromProvInfo(PCCERT_CONTEXT pCert, PCRYPT_KEY_PROV_INFO info, HCRYPTPROV *phCryptProv, DWORD *pdwKeySpec)
static BOOL CertContext_GetProperty(cert_t *cert, DWORD dwPropId, void *pvData, DWORD *pcbData)
BOOL WINAPI CertAddEncodedCertificateToSystemStoreA(LPCSTR pszCertStoreName, const BYTE *pbCertEncoded, DWORD cbCertEncoded)
PCCERT_CONTEXT WINAPI CertCreateSelfSignCertificate(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hProv, PCERT_NAME_BLOB pSubjectIssuerBlob, DWORD dwFlags, PCRYPT_KEY_PROV_INFO pKeyProvInfo, PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, PSYSTEMTIME pStartTime, PSYSTEMTIME pEndTime, PCERT_EXTENSIONS pExtensions)
BOOL WINAPI CryptSignCertificate(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProv, DWORD dwKeySpec, DWORD dwCertEncodingType, const BYTE *pbEncodedToBeSigned, DWORD cbEncodedToBeSigned, PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, const void *pvHashAuxInfo, BYTE *pbSignature, DWORD *pcbSignature)
static BOOL compare_cert_by_name_str(PCCERT_CONTEXT pCertContext, DWORD dwType, DWORD dwFlags, const void *pvPara)
PCERT_EXTENSION WINAPI CertFindExtension(LPCSTR pszObjId, DWORD cExtensions, CERT_EXTENSION rgExtensions[])
RPC_STATUS(RPC_ENTRY * UuidToStringFunc)(UUID *, unsigned char **)
static BOOL compare_cert_by_signature_hash(PCCERT_CONTEXT pCertContext, DWORD dwType, DWORD dwFlags, const void *pvPara)
BOOL WINAPI CertVerifySubjectCertificateContext(PCCERT_CONTEXT pSubject, PCCERT_CONTEXT pIssuer, DWORD *pdwFlags)
BOOL WINAPI CertSetCertificateContextProperty(PCCERT_CONTEXT pCertContext, DWORD dwPropId, DWORD dwFlags, const void *pvData)
BOOL WINAPI CryptHashToBeSigned(HCRYPTPROV_LEGACY hCryptProv, DWORD dwCertEncodingType, const BYTE *pbEncoded, DWORD cbEncoded, BYTE *pbComputedHash, DWORD *pcbComputedHash)
static BOOL find_matching_provider(PCCERT_CONTEXT pCert, DWORD dwFlags)
static BOOL compare_cert_by_cert_id(PCCERT_CONTEXT pCertContext, DWORD dwType, DWORD dwFlags, const void *pvPara)
BOOL WINAPI CertGetCertificateContextProperty(PCCERT_CONTEXT pCertContext, DWORD dwPropId, void *pvData, DWORD *pcbData)
static void CRYPT_SetBitInField(struct BitField *field, DWORD bit)
static BOOL compare_cert_by_subject_cert(PCCERT_CONTEXT pCertContext, DWORD dwType, DWORD dwFlags, const void *pvPara)
static context_t * Cert_clone(context_t *context, WINECRYPT_CERTSTORE *store, BOOL use_link)
BOOL WINAPI CertComparePublicKeyInfo(DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pPublicKey1, PCERT_PUBLIC_KEY_INFO pPublicKey2)
static void CRYPT_CopyKeyProvInfo(PCRYPT_KEY_PROV_INFO to, const CRYPT_KEY_PROV_INFO *from)
PCCERT_CONTEXT WINAPI CertDuplicateCertificateContext(PCCERT_CONTEXT pCertContext)
static BOOL compare_cert_by_public_key(PCCERT_CONTEXT pCertContext, DWORD dwType, DWORD dwFlags, const void *pvPara)
const void *WINAPI CertCreateContext(DWORD dwContextType, DWORD dwEncodingType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, PCERT_CREATE_CONTEXT_PARA pCreatePara)
DWORD WINAPI CertEnumCertificateContextProperties(PCCERT_CONTEXT pCertContext, DWORD dwPropId)
struct _OLD_CERT_REVOCATION_STATUS OLD_CERT_REVOCATION_STATUS
BOOL WINAPI CryptHashCertificate(HCRYPTPROV_LEGACY hCryptProv, ALG_ID Algid, DWORD dwFlags, const BYTE *pbEncoded, DWORD cbEncoded, BYTE *pbComputedHash, DWORD *pcbComputedHash)
BOOL WINAPI CertGetValidUsages(DWORD cCerts, PCCERT_CONTEXT *rghCerts, int *cNumOIDs, LPSTR *rghOIDs, DWORD *pcbOIDs)
static BOOL CertContext_SetProperty(cert_t *cert, DWORD dwPropId, DWORD dwFlags, const void *pvData)
LONG WINAPI CertVerifyTimeValidity(LPFILETIME pTimeToVerify, PCERT_INFO pCertInfo)
static BOOL CNG_PrepareSignatureECC(BYTE *encoded_sig, DWORD encoded_size, BYTE **sig_value, DWORD *sig_len)
static BOOL find_matching_rdn_attr(DWORD dwFlags, const CERT_NAME_INFO *name, const CERT_RDN_ATTR *attr)
BOOL WINAPI CertCompareIntegerBlob(PCRYPT_INTEGER_BLOB pInt1, PCRYPT_INTEGER_BLOB pInt2)
BOOL WINAPI CertGetEnhancedKeyUsage(PCCERT_CONTEXT pCertContext, DWORD dwFlags, PCERT_ENHKEY_USAGE pUsage, DWORD *pcbUsage)
static BOOL key_prov_info_matches_cert(PCCERT_CONTEXT pCert, const CRYPT_KEY_PROV_INFO *keyProvInfo)
PCCERT_CONTEXT(* CertFindFunc)(HCERTSTORE store, DWORD dwType, DWORD dwFlags, const void *pvPara, PCCERT_CONTEXT prev)
PCERT_RDN_ATTR WINAPI CertFindRDNAttr(LPCSTR pszObjId, PCERT_NAME_INFO pName)
DWORD CRYPT_IsCertificateSelfSigned(const CERT_CONTEXT *cert)
void Context_AddRef(context_t *context)
void Context_Release(context_t *context)
context_t * Context_CreateLinkContext(unsigned int contextSize, context_t *linked, WINECRYPT_CERTSTORE *store)
context_t * Context_CreateDataContext(size_t contextSize, const context_vtbl_t *vtbl, WINECRYPT_CERTSTORE *store)
void Context_CopyProperties(const void *to, const void *from)
PCCRL_CONTEXT WINAPI CertGetCRLFromStore(HCERTSTORE hCertStore, PCCERT_CONTEXT pIssuerContext, PCCRL_CONTEXT pPrevCrlContext, DWORD *pdwFlags)
PCCRL_CONTEXT WINAPI CertCreateCRLContext(DWORD dwCertEncodingType, const BYTE *pbCrlEncoded, DWORD cbCrlEncoded)
BOOL WINAPI CertVerifyCRLRevocation(DWORD dwCertEncodingType, PCERT_INFO pCertId, DWORD cCrlInfo, PCRL_INFO rgpCrlInfo[])
PCCTL_CONTEXT WINAPI CertCreateCTLContext(DWORD dwMsgAndCertEncodingType, const BYTE *pbCtlEncoded, DWORD cbCtlEncoded)
BOOL WINAPI CryptEncodeObject(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, BYTE *pbEncoded, DWORD *pcbEncoded)
BOOL WINAPI CryptEncodeObjectEx(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, void *pvEncoded, DWORD *pcbEncoded)
BOOL WINAPI CryptImportPublicKeyInfoEx(HCRYPTPROV hCryptProv, DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo, ALG_ID aiKeyAlg, DWORD dwFlags, void *pvAuxInfo, HCRYPTKEY *phKey)
BOOL WINAPI CryptImportPublicKeyInfo(HCRYPTPROV hCryptProv, DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo, HCRYPTKEY *phKey)
BOOL WINAPI CryptExportPublicKeyInfo(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProv, DWORD dwKeySpec, DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo, DWORD *pcbInfo)
LPVOID WINAPI CryptMemAlloc(ULONG cbSize)
LPVOID WINAPI CryptMemRealloc(LPVOID pv, ULONG cbSize)
VOID WINAPI CryptMemFree(LPVOID pv)
static struct list oidInfo
HCRYPTOIDFUNCSET WINAPI CryptInitOIDFunctionSet(LPCSTR pszFuncName, DWORD dwFlags)
BOOL WINAPI CryptGetDefaultOIDFunctionAddress(HCRYPTOIDFUNCSET hFuncSet, DWORD dwEncodingType, LPCWSTR pwszDll, DWORD dwFlags, void **ppvFuncAddr, HCRYPTOIDFUNCADDR *phFuncAddr)
PCCRYPT_OID_INFO WINAPI CryptFindOIDInfo(DWORD dwKeyType, void *pvKey, DWORD dwGroupId)
BOOL WINAPI CryptGetDefaultOIDDllList(HCRYPTOIDFUNCSET hFuncSet, DWORD dwEncodingType, LPWSTR pwszDllList, DWORD *pcchDllList)
BOOL WINAPI CryptFreeOIDFunctionAddress(HCRYPTOIDFUNCADDR hFuncAddr, DWORD dwFlags)
PCCERT_CONTEXT WINAPI CertEnumCertificatesInStore(HCERTSTORE hCertStore, PCCERT_CONTEXT pPrev)
HCERTSTORE WINAPI CertOpenSystemStoreA(HCRYPTPROV_LEGACY hProv, LPCSTR szSubSystemProtocol)
WINECRYPT_CERTSTORE empty_store
BOOL WINAPI CertCloseStore(HCERTSTORE hCertStore, DWORD dwFlags)
BOOL WINAPI CertGetStoreProperty(HCERTSTORE hCertStore, DWORD dwPropId, void *pvData, DWORD *pcbData)
HCERTSTORE WINAPI CertOpenSystemStoreW(HCRYPTPROV_LEGACY hProv, LPCWSTR szSubSystemProtocol)
DWORD WINAPI CertNameToStrW(DWORD dwCertEncodingType, PCERT_NAME_BLOB pName, DWORD dwStrType, LPWSTR psz, DWORD csz)
#define ERROR_CALL_NOT_IMPLEMENTED
#define ERROR_INVALID_PARAMETER
#define GetProcAddress(x, y)
static __inline const char * debugstr_an(const char *s, int n)
#define HeapFree(x, y, z)
#define MultiByteToWideChar
static const WCHAR *const ext[]
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryA(LPCSTR lpLibFileName)
VOID WINAPI GetSystemTimeAsFileTime(OUT PFILETIME lpFileTime)
BOOL WINAPI FileTimeToSystemTime(IN CONST FILETIME *lpFileTime, OUT LPSYSTEMTIME lpSystemTime)
BOOL WINAPI SystemTimeToFileTime(IN CONST SYSTEMTIME *lpSystemTime, OUT LPFILETIME lpFileTime)
LONG WINAPI CompareFileTime(IN CONST FILETIME *lpFileTime1, IN CONST FILETIME *lpFileTime2)
GLuint GLuint GLsizei GLenum type
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLenum GLuint GLenum GLsizei const GLchar * buf
GLuint GLsizei GLsizei * length
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 * u
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)
NTSYSAPI ULONG WINAPI RtlNtStatusToDosError(NTSTATUS)
LPSTR WINAPI lstrcpyA(LPSTR lpString1, LPCSTR lpString2)
int WINAPI lstrlenA(LPCSTR lpString)
#define memcpy(s1, s2, n)
#define memmove(s1, s2, n)
#define ERROR_FILE_NOT_FOUND
static LPCSTR DWORD void * pvReserved
static LPCSTR DWORD void BYTE * pbEncoded
static LPCSTR DWORD void BYTE DWORD * pcbEncoded
static HMODULE MODULEINFO DWORD cb
static const char szContainer[]
static const char * szProvider
#define strncmpiW(s1, s2, n)
#define strncmpW(s1, s2, n)
const store_vtbl_t * vtbl
CERT_NAME_BLOB DirectoryName
PCERT_EXTENSION rgExtension
PCERT_EXTENSION rgExtension
CERT_PUBLIC_KEY_INFO SubjectPublicKeyInfo
CRYPT_INTEGER_BLOB SerialNumber
CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm
CRYPT_ALGORITHM_IDENTIFIER Algorithm
CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm
CRYPT_DER_BLOB ToBeSigned
BOOL(* addContext)(struct WINE_CRYPTCERTSTORE *, context_t *, context_t *, context_t **, BOOL)
CRYPT_OBJID_BLOB Parameters
PCRYPT_KEY_PROV_PARAM rgProvParam
LPSTR * rgpszUsageIdentifier
DWORD WINAPI GetLastError(void)
#define CERT_SET_KEY_PROV_HANDLE_PROP_ID
ULONG_PTR HCRYPTPROV_OR_NCRYPT_KEY_HANDLE
#define X509_OBJECT_IDENTIFIER
#define CERT_PVK_FILE_PROP_ID
#define CERT_CROSS_CERT_DIST_POINTS_PROP_ID
#define CERT_ENROLLMENT_PROP_ID
#define X509_AUTHORITY_KEY_ID2
#define szOID_AUTHORITY_KEY_IDENTIFIER
#define CRYPT_VERIFY_CERT_SIGN_ISSUER_NULL
#define CERT_ID_ISSUER_SERIAL_NUMBER
#define CERT_MD5_HASH_PROP_ID
#define CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID
#define CERT_COMPARE_MD5_HASH
#define CERT_ENCODING_TYPE_MASK
#define CERT_ENHKEY_USAGE_PROP_ID
#define CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID
_Out_ int _Out_writes_bytes_to_opt_ pcbOIDs LPSTR _Inout_ DWORD * pcbOIDs
#define CRYPT_DECODE_NOCOPY_FLAG
#define CRYPT_VERIFYCONTEXT
#define CERT_KEY_CONTEXT_PROP_ID
#define CERT_KEY_IDENTIFIER_PROP_ID
#define CERT_COMPARE_NAME_STR_W
#define CERT_COMPARE_ISSUER_OF
#define CRYPT_VERIFY_CERT_SIGN_SUBJECT_CRL
#define X509_CERT_TO_BE_SIGNED
#define GET_CERT_ENCODING_TYPE(x)
#define X509_UNICODE_NAME
#define CERT_COMPARE_PUBLIC_KEY
#define CERT_COMPARE_SUBJECT_CERT
#define CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID
ULONG_PTR HCRYPTPROV_LEGACY
#define CERT_STORE_REVOCATION_FLAG
#define CERT_STORE_ADD_REPLACE_EXISTING
#define CRYPT_VERIFY_CERT_SIGN_ISSUER_CHAIN
#define CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES
#define CRYPT_USER_KEYSET
#define CERT_FIND_SUBJECT_CERT
#define CERT_ALT_NAME_DIRECTORY_NAME
#define CERT_KEY_PROV_INFO_PROP_ID
#define CERT_STORE_ADD_NEWER
_In_ PCCERT_CONTEXT _In_ DWORD dwAddDisposition
#define CERT_ID_KEY_IDENTIFIER
#define CERT_DESCRIPTION_PROP_ID
struct _CERT_REVOCATION_PARA * PCERT_REVOCATION_PARA
#define CERT_SET_KEY_CONTEXT_PROP_ID
#define CERT_OCSP_RESPONSE_PROP_ID
_In_ void _In_ PCCERT_CONTEXT pIssuer
_Out_ int _Out_writes_bytes_to_opt_ pcbOIDs LPSTR * rghOIDs
#define CERT_COMPARE_CERT_ID
#define CRYPT_OID_VERIFY_REVOCATION_FUNC
#define CRYPT_HASH_ALG_OID_GROUP_ID
#define CERT_EXTENDED_ERROR_INFO_PROP_ID
#define CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG
#define CERT_NEXT_UPDATE_LOCATION_PROP_ID
_In_ DWORD dwEncodingType
#define CRYPT_FIND_MACHINE_KEYSET_FLAG
#define CERT_CASE_INSENSITIVE_IS_RDN_ATTRS_FLAG
struct _CTL_USAGE CERT_ENHKEY_USAGE
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
#define CRYPT_VERIFY_CERT_SIGN_ISSUER_PUBKEY
#define CRYPT_VERIFY_CERT_SIGN_ISSUER_CERT
#define CALG_OID_INFO_CNG_ONLY
#define PP_ENUMCONTAINERS
#define szOID_ECC_CURVE_P256
#define szOID_ECC_PUBLIC_KEY
#define CRYPT_VERIFY_CERT_SIGN_SUBJECT_CERT
#define X509_ASN_ENCODING
#define CERT_FIND_PROP_ONLY_ENHKEY_USAGE_FLAG
#define X509_ECC_SIGNATURE
#define CERT_COMPARE_NAME_STR_A
_In_ DWORD dwCertEncodingType
#define CRYPT_DECODE_ALLOC_FLAG
#define CERT_PUBKEY_ALG_PARA_PROP_ID
#define szOID_SUBJECT_KEY_IDENTIFIER
#define X509_AUTHORITY_KEY_ID
struct _CRYPT_KEY_PROV_PARAM * PCRYPT_KEY_PROV_PARAM
#define CERT_SIMPLE_NAME_STR
#define CERT_INFO_SUBJECT_FLAG
#define CERT_AUTO_ENROLL_PROP_ID
#define CERT_CREATE_SELFSIGN_NO_KEY_INFO
#define CERT_FRIENDLY_NAME_PROP_ID
#define szOID_ECC_CURVE_P384
_In_ DWORD _In_ DWORD _In_ DWORD _Outptr_opt_ PCCERT_CONTEXT * ppCertContext
#define CERT_CTL_USAGE_PROP_ID
#define CERT_STORE_NO_CRL_FLAG
#define CERT_STORE_CERTIFICATE_CONTEXT
#define CERT_ACCESS_STATE_PROP_ID
#define CERT_COMPARE_NAME
#define RSA_CSP_PUBLICKEYBLOB
#define CERT_COMPARE_SHIFT
const CERT_CONTEXT * PCCERT_CONTEXT
#define CERT_STORE_SIGNATURE_FLAG
#define CERT_STORE_ADD_USE_EXISTING
#define CERT_STORE_CTL_CONTEXT
#define szOID_ENHANCED_KEY_USAGE
_In_ DWORD _In_ DWORD cbCertEncoded
_In_ PCCERT_CONTEXT _In_ DWORD _Outptr_opt_ PCCERT_CONTEXT * ppStoreContext
#define CERT_STORE_ADD_NEW
_In_ PCCERT_CONTEXT pCertContext
#define CERT_COMPARE_SHA1_HASH
#define CERT_HASH_PROP_ID
#define CERT_CREATE_SELFSIGN_NO_SIGN
#define CRYPT_FIND_SILENT_KEYSET_FLAG
#define CERT_RENEWAL_PROP_ID
#define CERT_STORE_ADD_ALWAYS
#define CERT_SHA1_HASH_PROP_ID
#define CERT_FIND_SHA1_HASH
#define CRYPT_ENCODE_ALLOC_FLAG
#define szOID_RSA_SHA1RSA
#define CRYPT_FIND_USER_KEYSET_FLAG
#define X509_PUBLIC_KEY_INFO
#define CERT_SIGNATURE_HASH_PROP_ID
#define CRYPT_OID_INFO_OID_KEY
#define CERT_COMPARE_SIGNATURE_HASH
#define CERT_UNICODE_IS_RDN_ATTRS_FLAG
#define CERT_STORE_NO_CRYPT_RELEASE_FLAG
#define szOID_AUTHORITY_KEY_IDENTIFIER2
#define CERT_ID_SHA1_HASH
_In_ DWORD _Out_writes_bytes_to_opt_ pcbData void _Inout_ DWORD * pcbData
#define CRYPT_VERIFY_CERT_SIGN_SUBJECT_BLOB
struct _CRYPT_KEY_PROV_INFO CRYPT_KEY_PROV_INFO
#define CERT_KEY_PROV_HANDLE_PROP_ID
#define CERT_STORE_CRL_CONTEXT
struct _CERT_REVOCATION_STATUS * PCERT_REVOCATION_STATUS
#define CRYPT_ACQUIRE_USE_PROV_INFO_FLAG
#define CERT_STORE_TIME_VALIDITY_FLAG
#define X509_ENHANCED_KEY_USAGE
_In_ PCCERT_STORE_PROV_FIND_INFO _In_ PCCERT_CONTEXT pPrevCertContext
#define CERT_FIND_ISSUER_OF
#define CRYPT_SIGN_ALG_OID_GROUP_ID
#define CRYPT_ACQUIRE_CACHE_FLAG
struct _CRYPT_KEY_PROV_PARAM CRYPT_KEY_PROV_PARAM
#define CERT_SUBJECT_NAME_MD5_HASH_PROP_ID
#define CRYPT_MACHINE_KEYSET
#define CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES
#define CERT_DATE_STAMP_PROP_ID
#define CERT_COMPARE_EXISTING
_In_ ULONG _In_opt_ PVOID pvData
#define CRYPT_E_NOT_FOUND
#define CRYPT_E_NO_REVOCATION_DLL
#define CRYPT_E_SELF_SIGNED
#define CRYPT_E_NO_KEY_PROPERTY
#define RPC_S_UUID_LOCAL_ONLY
#define CRYPT_E_ASN1_BADTAG
#define ERROR_INVALID_DATA