41#define NONAMELESSUNION
49#include "wine/unicode.h"
110 if (pEncodePara && pEncodePara->
pfnAlloc)
132 if (pEncodePara && pEncodePara->
pfnFree)
140 DWORD bytesNeeded, significantBytes = 0;
148 for (
temp =
len, significantBytes =
sizeof(
temp); !(
temp & 0xff000000);
149 temp <<= 8, significantBytes--)
151 bytesNeeded = significantBytes + 1;
170 for (
i = 0;
i < significantBytes;
i++)
187 TRACE(
"%p, %d, %08x, %p, %p, %d\n",
items, cItem,
dwFlags, pEncodePara,
201 DWORD lenBytes, bytesNeeded;
204 bytesNeeded = 1 + lenBytes + dataLen;
220 for (
i = 0;
ret &&
i < cItem;
i++)
250 DWORD dataLen, bytesNeeded;
253 bytesNeeded = 1 + dataLen +
len;
401 items[1].pvStructInfo = &nullBlob;
439 TRACE(
"Encoding public key with OID %s\n",
495 TRACE(
"Encoding public key with OID %s\n",
528 DWORD cItem = 7, cSwapped = 0;
530 if (
info->IssuerUniqueId.cbData)
535 items[cItem].pvStructInfo = &swapped[cSwapped];
540 if (
info->SubjectUniqueId.cbData)
545 items[cItem].pvStructInfo = &swapped[cSwapped];
550 if (
info->cExtension)
555 items[cItem].pvStructInfo = &constructed;
585 if (
entry->cExtension)
587 items[cItem].pvStructInfo = &
entry->cExtension;
603 DWORD bytesNeeded, dataLen, lenBytes,
i;
608 for (
i = 0, dataLen = 0;
ret &&
i <
info->cCRLEntry;
i++)
619 bytesNeeded = 1 + lenBytes + dataLen;
635 for (
i = 0;
i <
info->cCRLEntry;
i++)
691 DWORD cItem = 4, cConstructed = 0;
693 if (
info->NextUpdate.dwLowDateTime ||
info->NextUpdate.dwHighDateTime)
695 items[cItem].pvStructInfo = &
info->NextUpdate;
705 if (
info->cExtension)
707 constructed[cConstructed].
tag = 0;
710 items[cItem].pvStructInfo = &constructed[cConstructed];
743 items[cItem].pvStructInfo = &
ext->fCritical;
747 items[cItem].pvStructInfo = &
ext->Value;
765 DWORD bytesNeeded, dataLen, lenBytes,
i;
769 for (
i = 0, dataLen = 0;
ret &&
i <
exts->cExtension;
i++)
780 bytesNeeded = 1 + lenBytes + dataLen;
796 for (
i = 0;
i <
exts->cExtension;
i++)
825 DWORD bytesNeeded = 0, lenBytes;
837 if (
sscanf(pszObjId,
"%d.%d%n", &val1, &val2, &firstPos) != 2)
843 firstByte = val1 * 40 + val2;
844 ptr = pszObjId + firstPos;
857 if (val1 >= 0x10000000)
859 else if (val1 >= 0x200000)
861 else if (val1 >= 0x4000)
863 else if (val1 >= 0x80)
881 bytesNeeded += 1 + lenBytes;
900 ptr = pszObjId + firstPos;
905 unsigned char outBytes[5];
908 if (
val >= 0x10000000)
910 else if (
val >= 0x200000)
912 else if (
val >= 0x4000)
914 else if (
val >= 0x80)
918 for (
i = numBytes;
i > 0;
i--)
920 outBytes[
i - 1] =
val & 0x7f;
923 for (
i = 0;
i < numBytes - 1;
i++)
944 DWORD bytesNeeded, lenBytes, encodedLen;
948 bytesNeeded = 1 + lenBytes + encodedLen;
973 DWORD bytesNeeded, lenBytes, strLen;
977 else if (
value->Value.pbData)
982 bytesNeeded = 1 + lenBytes + strLen * 2;
997 for (
i = 0;
i < strLen;
i++)
1013 DWORD bytesNeeded, lenBytes, encodedLen, strLen;
1016 strLen =
value->Value.cbData /
sizeof(
WCHAR);
1024 bytesNeeded = 1 + lenBytes + encodedLen;
1038 bytesNeeded - lenBytes - 1,
NULL,
NULL);
1054 switch (
value->dwValueType)
1102 FIXME(
"CERT_RDN_UNIVERSAL_STRING: unimplemented\n");
1139 bytesNeeded +=
size;
1147 bytesNeeded +=
size;
1149 bytesNeeded += 1 + lenBytes;
1163 size = bytesNeeded - 1 - lenBytes;
1169 size = bytesNeeded - 1 - lenBytes -
size;
1195 ret =
a->cbData -
b->cbData;
1206 DWORD bytesNeeded = 0, lenBytes,
i;
1209 for (
i = 0;
i <
set->cBlob;
i++)
1210 bytesNeeded +=
set->rgBlob[
i].cbData;
1212 bytesNeeded += 1 + lenBytes;
1227 for (
i = 0;
i <
set->cBlob;
i++)
1287 DWORD bytesNeeded = 0, lenBytes;
1292 bytesNeeded += 1 + lenBytes;
1412 TRACE(
"encoding name with %d RDNs\n",
info->cRDN);
1419 bytesNeeded +=
size;
1424 bytesNeeded += 1 + lenBytes;
1451 bytesNeeded -=
size;
1475 const DWORD *ver = pvStructInfo;
1514 items[cItem].pvStructInfo = &nullBlob;
1548 DWORD bytesNeeded, dataLen, lenBytes,
i;
1549 const struct CTLEntries *entries = pvStructInfo;
1552 for (
i = 0, dataLen = 0;
ret &&
i < entries->
cEntry;
i++)
1563 bytesNeeded = 1 + lenBytes + dataLen;
1612 if (
info->ListIdentifier.cbData)
1614 items[cItem].pvStructInfo = &
info->ListIdentifier;
1618 if (
info->SequenceNumber.cbData)
1620 items[cItem].pvStructInfo = &
info->SequenceNumber;
1624 items[cItem].pvStructInfo = &
info->ThisUpdate;
1627 if (
info->NextUpdate.dwLowDateTime ||
info->NextUpdate.dwHighDateTime)
1629 items[cItem].pvStructInfo = &
info->NextUpdate;
1633 items[cItem].pvStructInfo = &
info->SubjectAlgorithm;
1636 if (
info->cCTLEntry)
1638 items[cItem].pvStructInfo = &
info->cCTLEntry;
1642 if (
info->cExtension)
1644 constructed.
tag = 0;
1647 items[cItem].pvStructInfo = &constructed;
1702 DWORD bytesNeeded, dataLen, lenBytes,
i;
1718 bytesNeeded = 1 + lenBytes + dataLen;
1763 DWORD bytesNeeded, dataLen, lenBytes,
i;
1778 bytesNeeded = 1 + lenBytes + dataLen;
1844 if (
notice->pNoticeReference)
1847 items[cItem].pvStructInfo =
notice->pNoticeReference;
1850 if (
notice->pszDisplayText)
1853 displayTextValue.Value.cbData = 0;
1854 displayTextValue.Value.pbData = (
LPBYTE)
notice->pszDisplayText;
1856 items[cItem].pvStructInfo = &displayTextValue;
1880 if (!
attr->pszObjId)
1939 if (
info->Content.cbData)
1941 constructed.
tag = 0;
1944 items[cItem].pvStructInfo = &constructed;
1976 if (!
info->pszObjId)
1997 DWORD bytesNeeded, lenBytes, encodedLen;
2000 encodedLen =
value->Value.cbData /
sizeof(
WCHAR);
2006 bytesNeeded = 1 + lenBytes + encodedLen;
2021 for (
i = 0;
i < encodedLen;
i++)
2034 DWORD bytesNeeded, lenBytes, encodedLen;
2037 encodedLen =
value->Value.cbData /
sizeof(
WCHAR);
2043 bytesNeeded = 1 + lenBytes + encodedLen;
2061 for (
i = 0;
ret &&
i < encodedLen;
i++)
2082 wc ==
')' || wc ==
'+' || wc ==
',' || wc ==
'-' || wc ==
'.' ||
2083 wc ==
'/' || wc ==
':' || wc ==
'=' || wc ==
'?';
2092 DWORD bytesNeeded, lenBytes, encodedLen;
2095 encodedLen =
value->Value.cbData /
sizeof(
WCHAR);
2101 bytesNeeded = 1 + lenBytes + encodedLen;
2119 for (
i = 0;
ret &&
i < encodedLen;
i++)
2143 DWORD bytesNeeded, lenBytes, encodedLen;
2146 encodedLen =
value->Value.cbData /
sizeof(
WCHAR);
2152 bytesNeeded = 1 + lenBytes + encodedLen;
2170 for (
i = 0;
ret &&
i < encodedLen;
i++)
2194 DWORD bytesNeeded, lenBytes, strLen;
2198 strLen =
value->Value.cbData /
sizeof(
WCHAR);
2204 bytesNeeded = 1 + lenBytes + strLen * 4;
2219 for (
i = 0;
i < strLen;
i++)
2241 switch (
value->dwValueType)
2315 TRACE(
"encoding name with %d RDNs\n",
info->cRDN);
2322 bytesNeeded +=
size;
2325 bytesNeeded += 1 + lenBytes;
2351 bytesNeeded -=
size;
2410 switch (
entry->dwAltNameChoice)
2416 if (
entry->u.pwszURL)
2422 for (
i = 0;
ret &&
i < dataLen;
i++)
2424 if (
entry->u.pwszURL[
i] > 0x7f)
2437 dataLen =
entry->u.DirectoryName.cbData;
2441 dataLen =
entry->u.IPAddress.cbData;
2453 FIXME(
"name type %d unimplemented\n",
entry->dwAltNameChoice);
2461 DWORD bytesNeeded, lenBytes;
2464 bytesNeeded = 1 + dataLen + lenBytes;
2478 switch (
entry->dwAltNameChoice)
2486 for (
i = 0;
i < dataLen;
i++)
2517 DWORD cItem = 0, cSwapped = 0;
2519 if (
info->KeyId.cbData)
2524 items[cItem].pvStructInfo = &swapped[cSwapped];
2529 if (
info->CertIssuer.cbData)
2531 constructed.
tag = 1;
2534 items[cItem].pvStructInfo = &constructed;
2538 if (
info->CertSerialNumber.cbData)
2543 items[cItem].pvStructInfo = &swapped[cSwapped];
2569 DWORD bytesNeeded, dataLen, lenBytes,
i;
2575 for (
i = 0, dataLen = 0;
ret &&
i <
info->cAltEntry;
i++)
2596 bytesNeeded = 1 + lenBytes + dataLen;
2653 DWORD cItem = 0, cSwapped = 0;
2655 if (
info->KeyId.cbData)
2660 items[cItem].pvStructInfo = &swapped[cSwapped];
2665 if (
info->AuthorityCertIssuer.cAltEntry)
2670 items[cItem].pvStructInfo = &swapped[cSwapped];
2675 if (
info->AuthorityCertSerialNumber.cbData)
2680 items[cItem].pvStructInfo = &swapped[cSwapped];
2705 if (!
descr->pszAccessMethod)
2721 DWORD bytesNeeded, dataLen, lenBytes,
i;
2725 for (
i = 0, dataLen = 0;
ret &&
i <
info->cAccDescr;
i++)
2737 bytesNeeded = 1 + lenBytes + dataLen;
2753 for (
i = 0;
i <
info->cAccDescr;
i++)
2792 if (
info->fPathLenConstraint)
2794 items[cItem].pvStructInfo = &
info->dwPathLenConstraint;
2798 if (
info->cSubtreesConstraint)
2800 items[cItem].pvStructInfo = &
info->cSubtreesConstraint;
2834 if (
info->fPathLenConstraint)
2836 items[cItem].pvStructInfo = &
info->dwPathLenConstraint;
2859 if (!
info->cPolicyQualifier)
2873 for (
i = 0;
ret &&
i <
info->cPolicyQualifier;
i++)
2875 items[0].pvStructInfo =
2876 info->rgPolicyQualifier[
i].pszPolicyQualifierId;
2877 items[1].pvStructInfo = &
info->rgPolicyQualifier[
i].Qualifier;
2881 bytesNeeded +=
size;
2884 bytesNeeded += 1 + lenBytes;
2902 for (
i = 0;
ret &&
i <
info->cPolicyQualifier;
i++)
2904 items[0].pvStructInfo =
2905 info->rgPolicyQualifier[
i].pszPolicyQualifierId;
2906 items[1].pvStructInfo =
2907 &
info->rgPolicyQualifier[
i].Qualifier;
2914 bytesNeeded -=
size;
2936 if (!
info->pszPolicyIdentifier)
2957 for (
i = 0;
ret &&
i <
info->cPolicyInfo;
i++)
2963 bytesNeeded +=
size;
2966 bytesNeeded += 1 + lenBytes;
2984 for (
i = 0;
ret &&
i <
info->cPolicyInfo;
i++)
2988 &
info->rgPolicyInfo[
i],
2993 bytesNeeded -=
size;
3019 if (!
mapping->pszIssuerDomainPolicy || !
mapping->pszSubjectDomainPolicy)
3039 for (
i = 0;
ret &&
i <
info->cPolicyMapping;
i++)
3045 bytesNeeded +=
size;
3048 bytesNeeded += 1 + lenBytes;
3066 for (
i = 0;
ret &&
i <
info->cPolicyMapping;
i++)
3075 bytesNeeded -=
size;
3104 DWORD cItem = 0, cSwapped = 0;
3106 if (
info->fRequireExplicitPolicy)
3110 &
info->dwRequireExplicitPolicySkipCerts;
3112 items[cItem].pvStructInfo = &swapped[cSwapped];
3117 if (
info->fInhibitPolicyMapping)
3121 &
info->dwInhibitPolicyMappingSkipCerts;
3123 items[cItem].pvStructInfo = &swapped[cSwapped];
3187 DWORD bytesNeeded, lenBytes;
3189 TRACE(
"(%d, %p), %08x, %p, %p, %d\n",
blob->cbData,
blob->pbData,
3193 bytesNeeded = 1 + lenBytes +
blob->cbData;
3233 DWORD bytesNeeded, lenBytes, dataBytes;
3237 if (!
blob->cUnusedBits)
3239 dataBytes =
blob->cbData;
3242 else if (
blob->cbData * 8 >
blob->cUnusedBits)
3244 dataBytes = (
blob->cbData * 8 -
blob->cUnusedBits) / 8 + 1;
3245 unusedBits =
blob->cUnusedBits >= 8 ?
blob->cUnusedBits / 8 :
3254 bytesNeeded = 1 + lenBytes + dataBytes + 1;
3351 DWORD significantBytes, lenBytes, bytesNeeded;
3356 significantBytes =
blob->cbData;
3357 if (significantBytes)
3359 if (
blob->pbData[significantBytes - 1] & 0x80)
3362 for (; significantBytes > 0 &&
3363 blob->pbData[significantBytes - 1] == 0xff; significantBytes--)
3365 if (
blob->pbData[significantBytes - 1] < 0x80)
3374 for (; significantBytes > 0 &&
3375 !
blob->pbData[significantBytes - 1]; significantBytes--)
3377 if (significantBytes == 0)
3378 significantBytes = 1;
3379 if (
blob->pbData[significantBytes - 1] > 0x7f)
3390 bytesNeeded = 1 + lenBytes + significantBytes;
3417 for (; significantBytes > 0; significantBytes--)
3439 DWORD significantBytes, lenBytes, bytesNeeded;
3443 significantBytes =
blob->cbData;
3444 if (significantBytes)
3447 for (; significantBytes > 0 && !
blob->pbData[significantBytes - 1];
3450 if (significantBytes == 0)
3451 significantBytes = 1;
3452 if (
blob->pbData[significantBytes - 1] > 0x7f)
3459 bytesNeeded = 1 + lenBytes + significantBytes;
3486 for (; significantBytes > 0; significantBytes--)
3533 static const DWORD bytesNeeded = 15;
3558 buf[1] = bytesNeeded - 2;
3560 "%02d%02d%02d%02d%02d%02dZ", sysTime.
wYear >= 2000 ?
3590 static const DWORD bytesNeeded = 17;
3609 buf[1] = bytesNeeded - 2;
3639 if (sysTime.
wYear >= 1950 && sysTime.
wYear <= 2050)
3664 DWORD bytesNeeded, dataLen, lenBytes,
i;
3667 for (
i = 0, dataLen = 0;
i < seq->
cValue;
i++)
3670 bytesNeeded = 1 + lenBytes + dataLen;
3711 DWORD cItem = 0, cSwapped = 0;
3722 constructed.
tag = 0;
3725 items[cItem].pvStructInfo = &constructed;
3731 FIXME(
"unimplemented for CRL_DIST_POINT_ISSUER_RDN_NAME\n");
3742 items[cItem].pvStructInfo = &swapped[cSwapped];
3752 items[cItem].pvStructInfo = &swapped[cSwapped];
3773 if (!
info->cDistPoint)
3780 DWORD bytesNeeded, dataLen, lenBytes,
i;
3783 for (
i = 0, dataLen = 0;
ret &&
i <
info->cDistPoint;
i++)
3800 bytesNeeded = 1 + lenBytes + dataLen;
3819 for (
i = 0;
ret &&
i <
info->cDistPoint;
i++)
3859 for (
i = 0;
ret &&
i <
usage->cUsageIdentifier;
i++)
3862 usage->rgpszUsageIdentifier[
i],
3865 bytesNeeded +=
size;
3868 bytesNeeded += 1 + lenBytes;
3886 for (
i = 0;
ret &&
i <
usage->cUsageIdentifier;
i++)
3890 usage->rgpszUsageIdentifier[
i],
3895 bytesNeeded -=
size;
3925 DWORD cItem = 0, cSwapped = 0;
3928 switch (
point->DistPointName.dwDistPointNameChoice)
3937 constructed.
tag = 0;
3940 items[cItem].pvStructInfo = &constructed;
3949 if (
ret &&
point->fOnlyContainsUserCerts)
3954 items[cItem].pvStructInfo = &swapped[cSwapped];
3959 if (
ret &&
point->fOnlyContainsCACerts)
3964 items[cItem].pvStructInfo = &swapped[cSwapped];
3969 if (
ret &&
point->OnlySomeReasonFlags.cbData)
3974 items[cItem].pvStructInfo = &swapped[cSwapped];
3984 items[cItem].pvStructInfo = &swapped[cSwapped];
4013 DWORD cItem = 1, cSwapped = 0;
4020 items[cItem].pvStructInfo = &swapped[cSwapped];
4030 items[cItem].pvStructInfo = &swapped[cSwapped];
4054 DWORD i, cItem = 0, cSwapped = 0;
4077 items[cItem].pvStructInfo = &swapped[cSwapped];
4090 if (excluded.rgBlob)
4093 memset(excluded.rgBlob, 0,
4095 for (
i = 0;
ret &&
i < excluded.cBlob;
i++)
4099 (
BYTE *)&excluded.rgBlob[
i].pbData,
4100 &excluded.rgBlob[
i].cbData);
4106 items[cItem].pvStructInfo = &swapped[cSwapped];
4118 for (
i = 0;
i < permitted.
cBlob;
i++)
4120 for (
i = 0;
i < excluded.cBlob;
i++)
4167 if (!
info->Issuer.cbData)
4178 DWORD cItem = 3, cSwapped = 0;
4180 if (
info->AuthAttrs.cAttr)
4185 items[cItem].pvStructInfo = &swapped[cSwapped];
4190 items[cItem].pvStructInfo = &
info->HashEncryptionAlgorithm;
4193 items[cItem].pvStructInfo = &
info->EncryptedHash;
4196 if (
info->UnauthAttrs.cAttr)
4201 items[cItem].pvStructInfo = &swapped[cSwapped];
4238 !
info->SignerId.u.IssuerSerialNumber.Issuer.cbData)
4246 DWORD cItem = 1, cSwapped = 0;
4250 items[cItem].pvStructInfo =
4251 &
info->SignerId.u.IssuerSerialNumber.Issuer;
4252 items[cItem].encodeFunc =
4261 items[cItem].pvStructInfo = &swapped[cSwapped];
4266 items[cItem].pvStructInfo = &
info->HashAlgorithm;
4269 if (
info->AuthAttrs.cAttr)
4274 items[cItem].pvStructInfo = &swapped[cSwapped];
4279 items[cItem].pvStructInfo = &
info->HashEncryptionAlgorithm;
4282 items[cItem].pvStructInfo = &
info->EncryptedHash;
4285 if (
info->UnauthAttrs.cAttr)
4290 items[cItem].pvStructInfo = &swapped[cSwapped];
4316 DWORD cItem = 1, cSwapped = 0;
4327 items[cItem].pvStructInfo = &digestAlgorithmsSet;
4339 certSet.itemOffset = 0;
4344 items[cItem].pvStructInfo = &swapped[cSwapped];
4359 items[cItem].pvStructInfo = &swapped[cSwapped];
4369 signerSet.itemOffset = 0;
4371 items[cItem].pvStructInfo = &signerSet;
4389 { &
info->RecipientId.u.IssuerSerialNumber,
4391 { &
info->KeyEncryptionAlgorithm,
4409 { &
info->contentEncryptionAlgorithm,
4449 switch (
LOWORD(lpszStructType))
4676 TRACE_(crypt)(
"OID %s not found or unimplemented, looking for DLL\n",
4679 lpszStructType, &hFunc);
4680 if (!pCryptEncodeObject)
4682 lpszStructType, &hFunc);
4684 if (pCryptEncodeObject)
4687 else if (pCryptEncodeObjectEx)
4725 TRACE_(crypt)(
"OID %s not found or unimplemented, looking for DLL\n",
4738 if (pCryptEncodeObject)
4770 FIXME_(crypt)(
"(%p, %p, %p, %p, %08x): stub\n", hStore, pPFX, szPassword,
4794 TRACE_(crypt)(
"(%08lx, %d, %08x, %s, %08x, %p, %p, %d)\n", hCryptProv,
4796 pvAuxInfo, pInfo, pInfo ? *pcbInfo : 0);
4814 if (!pszPublicKeyObjId)
4832 DWORD params_size = 0;
4835 dwFlags, pvAuxInfo, &key_data, &key_size, &
params, ¶ms_size);
4839 DWORD size_needed =
sizeof(*pInfo) + oid_size + key_size + params_size;
4842 *pcbInfo = size_needed;
4843 else if (*pcbInfo < size_needed)
4845 *pcbInfo = size_needed;
4851 *pcbInfo = size_needed;
4881 pszPublicKeyObjId = rsa_oid;
4890 strlen(pszPublicKeyObjId) + 1 + encodedLen;
4893 *pcbInfo = sizeNeeded;
4894 else if (*pcbInfo < sizeNeeded)
4897 *pcbInfo = sizeNeeded;
4902 *pcbInfo = sizeNeeded;
4943 TRACE_(crypt)(
"(%08lx, %d, %08x, %s, %08x, %p, %p, %d)\n", hCryptProv,
4945 pvAuxInfo, pInfo, pInfo ? *pcbInfo : 0);
4953 if (pszPublicKeyObjId)
4959 0, (
void **)&exportFunc, &hFunc);
4964 pszPublicKeyObjId,
dwFlags, pvAuxInfo, pInfo, pcbInfo);
4992 TRACE_(crypt)(
"(%08lx, %08x, %p, %08x, %08x, %p, %p)\n", hCryptProv,
4998 0, (
void **)&convertFunc, &hFunc);
5053 TRACE_(crypt)(
"(%08lx, %08x, %p, %08x, %08x, %p, %p)\n", hCryptProv,
int strcmp(const char *String1, const char *String2)
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
ACPI_SIZE strlen(const char *String)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
void __cdecl qsort(_Inout_updates_bytes_(_NumOfElements *_SizeOfElements) void *_Base, _In_ size_t _NumOfElements, _In_ size_t _SizeOfElements, _In_ int(__cdecl *_PtFuncCompare)(const void *, const void *))
BOOL WINAPI CryptDecodeObject(DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo, DWORD *pcbStructInfo)
BOOL(WINAPI * CryptEncodeObjectExFunc)(DWORD, LPCSTR, const void *, DWORD, PCRYPT_ENCODE_PARA, BYTE *, DWORD *)
#define ASN_GENERALSTRING
#define ASN_VIDEOTEXSTRING
#define ASN_NUMERICSTRING
#define ASN_GRAPHICSTRING
#define ASN_UNIVERSALSTRING
#define ASN_PRINTABLESTRING
#define ASN_VISIBLESTRING
BOOL WINAPI CryptExportKey(HCRYPTKEY hKey, HCRYPTKEY hExpKey, DWORD dwBlobType, DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen)
BOOL WINAPI CryptDestroyKey(HCRYPTKEY hKey)
BOOL WINAPI CryptGetUserKey(HCRYPTPROV hProv, DWORD dwKeySpec, HCRYPTKEY *phUserKey)
BOOL WINAPI CryptImportKey(HCRYPTPROV hProv, const BYTE *pbData, DWORD dwDataLen, HCRYPTKEY hPubKey, DWORD dwFlags, HCRYPTKEY *phKey)
static BOOL CRYPT_AsnEncodeRdn(DWORD dwCertEncodingType, const CERT_RDN *rdn, CryptEncodeObjectExFunc nameValueEncodeFunc, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodePKCSAttributes(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL CRYPT_AsnEncodeGeneralSubtree(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL CRYPT_AsnEncodeBMPString(const CERT_NAME_VALUE *value, DWORD dwFlags, const CRYPT_ENCODE_PARA *pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL CRYPT_AsnEncodeCertPolicyMapping(DWORD dwCertEncodingType, const CERT_POLICY_MAPPING *mapping, DWORD dwFlags, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeCTLSubjectAlgorithm(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeCertPolicyMappings(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeOrCopyUnicodeNameValue(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static CryptEncodeObjectExFunc CRYPT_LoadEncoderExFunc(DWORD dwCertEncodingType, LPCSTR lpszStructType, HCRYPTOIDFUNCADDR *hFunc)
static BOOL WINAPI CRYPT_AsnEncodeUtcTime(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
BOOL WINAPI PFXExportCertStore(HCERTSTORE hStore, CRYPT_DATA_BLOB *pPFX, LPCWSTR szPassword, DWORD dwFlags)
static BOOL CRYPT_AsnEncodeCertPolicy(DWORD dwCertEncodingType, const CERT_POLICY_INFO *info, DWORD dwFlags, BYTE *pbEncoded, DWORD *pcbEncoded)
static int BLOBComp(const void *l, const void *r)
static BOOL CRYPT_AsnEncodeIA5String(const CERT_NAME_VALUE *value, DWORD dwFlags, const CRYPT_ENCODE_PARA *pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
BOOL WINAPI CRYPT_AsnEncodePubKeyInfoNoNull(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeAlgorithmIdWithNullParams(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeAuthorityKeyId2(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL CRYPT_AsnEncodeUniversalString(const CERT_NAME_VALUE *value, DWORD dwFlags, const CRYPT_ENCODE_PARA *pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeExtensions(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeCRLInfo(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeAuthorityInfoAccess(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
BOOL WINAPI CryptEncodeObject(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL CRYPT_AsnEncodePrintableString(const CERT_NAME_VALUE *value, DWORD dwFlags, const CRYPT_ENCODE_PARA *pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
BOOL WINAPI CRYPT_AsnEncodeSequence(DWORD dwCertEncodingType, struct AsnEncodeSequenceItem items[], DWORD cItem, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeAltName(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeBits(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL CRYPT_AsnEncodeCRLEntry(const CRL_ENTRY *entry, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeNameConstraints(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodePKCSSignerInfo(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL CRYPT_AsnEncodeNumericString(const CERT_NAME_VALUE *value, DWORD dwFlags, const CRYPT_ENCODE_PARA *pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL CRYPT_AsnEncodeCTLEntry(const CTL_ENTRY *entry, BYTE *pbEncoded, DWORD *pcbEncoded)
BOOL(WINAPI * ConvertPublicKeyInfoFunc)(DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo, ALG_ID aiKeyAlg, DWORD dwFlags, BYTE **ppbData, DWORD *dwDataLen)
static BOOL CRYPT_AsnEncodeDistPoint(const CRL_DIST_POINT *distPoint, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodePolicyQualifierUserNotice(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeUnicodeName(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
BOOL CRYPT_AsnEncodeCMSSignedInfo(CRYPT_SIGNED_INFO *signedInfo, void *pvData, DWORD *pcbData)
BOOL(WINAPI * CryptEncodeObjectFunc)(DWORD, LPCSTR, const void *, BYTE *, DWORD *)
static BOOL WINAPI CRYPT_AsnEncodeSMIMECapabilities(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeValidity(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL CRYPT_AsnEncodeRdnAttr(DWORD dwCertEncodingType, const CERT_RDN_ATTR *attr, CryptEncodeObjectExFunc nameValueEncodeFunc, BYTE *pbEncoded, DWORD *pcbEncoded)
BOOL CRYPT_AsnEncodePKCSDigestedData(const CRYPT_DIGESTED_DATA *digestedData, void *pvData, DWORD *pcbData)
static BOOL WINAPI CRYPT_ExportPublicKeyInfoEx(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProv, DWORD dwKeySpec, DWORD dwCertEncodingType, LPSTR pszPublicKeyObjId, DWORD dwFlags, void *pvAuxInfo, PCERT_PUBLIC_KEY_INFO pInfo, DWORD *pcbInfo)
static BOOL WINAPI CRYPT_AsnEncodeNoticeNumbers(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeAuthorityKeyId(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
BOOL WINAPI CRYPT_AsnEncodeOid(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeChoiceOfTime(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeName(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeIssuingDistPoint(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeSwapTag(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeCRLVersion(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
BOOL WINAPI CryptExportPublicKeyInfoEx(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProv, DWORD dwKeySpec, DWORD dwCertEncodingType, LPSTR pszPublicKeyObjId, DWORD dwFlags, void *pvAuxInfo, PCERT_PUBLIC_KEY_INFO pInfo, DWORD *pcbInfo)
static BOOL WINAPI CRYPT_CopyEncodedBlob(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeInt(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
BOOL WINAPI CryptEncodeObjectEx(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, void *pvEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeUnsignedInteger(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeRsaPubKey(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeSequenceOfAny(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL CRYPT_AsnEncodeExtension(CERT_EXTENSION *ext, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeBasicConstraints(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeRecipientInfo(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeCMSSignerInfo(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeUnicodeNameValue(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL CRYPT_AsnEncodeSMIMECapability(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static void CRYPT_FreeSpace(const CRYPT_ENCODE_PARA *pEncodePara, LPVOID pv)
static BOOL WINAPI CRYPT_AsnEncodeCertPolicies(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodePKCSContentInfoInternal(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeCertPolicyConstraints(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static CryptEncodeObjectFunc CRYPT_LoadEncoderFunc(DWORD dwCertEncodingType, LPCSTR lpszStructType, HCRYPTOIDFUNCADDR *hFunc)
static BOOL isprintableW(WCHAR wc)
static BOOL WINAPI CRYPT_AsnEncodePubKeyInfo(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL CRYPT_AsnEncodeUnicodeStringCoerce(const CERT_NAME_VALUE *value, BYTE tag, DWORD dwFlags, const CRYPT_ENCODE_PARA *pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeCertInfo(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
BOOL CRYPT_AsnEncodePKCSEnvelopedData(const CRYPT_ENVELOPED_DATA *envelopedData, void *pvData, DWORD *pcbData)
static BOOL WINAPI CRYPT_AsnEncodeNameValue(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
BOOL WINAPI CRYPT_AsnEncodeConstructed(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeBasicConstraints2(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeCTL(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
BOOL CRYPT_EncodeLen(DWORD len, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeCRLEntries(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
BOOL CRYPT_EncodeEnsureSpace(DWORD dwFlags, const CRYPT_ENCODE_PARA *pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded, DWORD bytesNeeded)
BOOL WINAPI CryptImportPublicKeyInfoEx(HCRYPTPROV hCryptProv, DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo, ALG_ID aiKeyAlg, DWORD dwFlags, void *pvAuxInfo, HCRYPTKEY *phKey)
static BOOL WINAPI CRYPT_DEREncodeItemsAsSet(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
BOOL WINAPI PFXExportCertStoreEx(HCERTSTORE hStore, CRYPT_DATA_BLOB *pPFX, LPCWSTR szPassword, void *pvReserved, DWORD dwFlags)
static BOOL CRYPT_AsnEncodeUTF8String(const CERT_NAME_VALUE *value, DWORD dwFlags, const CRYPT_ENCODE_PARA *pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
BOOL WINAPI CRYPT_AsnEncodeOctets(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeNoticeReference(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeCert(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
BOOL WINAPI CryptImportPublicKeyInfo(HCRYPTPROV hCryptProv, DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo, HCRYPTKEY *phKey)
static BOOL WINAPI CRYPT_AsnEncodePKCSContentInfo(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_ImportPublicKeyInfoEx(HCRYPTPROV hCryptProv, DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo, ALG_ID aiKeyAlg, DWORD dwFlags, void *pvAuxInfo, HCRYPTKEY *phKey)
static BOOL WINAPI CRYPT_AsnEncodePKCSAttribute(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
BOOL(WINAPI * ImportPublicKeyInfoExFunc)(HCRYPTPROV hCryptProv, DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo, ALG_ID aiKeyAlg, DWORD dwFlags, void *pvAuxInfo, HCRYPTKEY *phKey)
static BOOL WINAPI CRYPT_AsnEncodeCertVersion(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL CRYPT_AsnEncodeGeneralizedTime(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeCTLVersion(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeAlgorithmId(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeEnhancedKeyUsage(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeCTLEntries(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL CRYPT_AsnEncodeStringCoerce(const CERT_NAME_VALUE *value, BYTE tag, DWORD dwFlags, const CRYPT_ENCODE_PARA *pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeBitsSwapBytes(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static CryptEncodeObjectExFunc CRYPT_GetBuiltinEncoder(DWORD dwCertEncodingType, LPCSTR lpszStructType)
static BOOL CRYPT_AsnEncodeAccessDescription(const CERT_ACCESS_DESCRIPTION *descr, BYTE *pbEncoded, DWORD *pcbEncoded)
BOOL(WINAPI * EncodePublicKeyAndParametersFunc)(DWORD dwCertEncodingType, LPSTR pszPublicKeyObjId, BYTE *pbPubKey, DWORD cbPubKey, DWORD dwFlags, void *pvAuxInfo, BYTE **ppPublicKey, DWORD *pcbPublicKey, BYTE **ppbParams, DWORD *pcbParams)
BOOL(WINAPI * ExportPublicKeyInfoExFunc)(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProv, DWORD dwKeySpec, DWORD dwCertEncodingType, LPSTR pszPublicKeyObjId, DWORD dwFlags, void *pvAuxInfo, PCERT_PUBLIC_KEY_INFO pInfo, DWORD *pcbInfo)
static BOOL WINAPI CRYPT_AsnEncodeEnumerated(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeIssuerSerialNumber(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeEncryptedContentInfo(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_DEREncodeSet(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeCRLDistPoints(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeCertPolicyQualifiers(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeInteger(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
BOOL WINAPI CryptExportPublicKeyInfo(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProv, DWORD dwKeySpec, DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo, DWORD *pcbInfo)
static BOOL WINAPI CRYPT_AsnEncodeAltNameEntry(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeBool(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
LPVOID WINAPI CryptMemAlloc(ULONG cbSize)
VOID WINAPI CryptMemFree(LPVOID pv)
HCRYPTOIDFUNCSET WINAPI CryptInitOIDFunctionSet(LPCSTR pszFuncName, DWORD dwFlags)
BOOL WINAPI CryptGetOIDFunctionAddress(HCRYPTOIDFUNCSET hFuncSet, DWORD dwEncodingType, LPCSTR pszOID, DWORD dwFlags, void **ppvFuncAddr, HCRYPTOIDFUNCADDR *phFuncAddr)
LPCSTR WINAPI CertAlgIdToOID(DWORD dwAlgId)
BOOL WINAPI CryptFreeOIDFunctionAddress(HCRYPTOIDFUNCADDR hFuncAddr, DWORD dwFlags)
#define ERROR_INVALID_PARAMETER
#define WINE_DECLARE_DEBUG_CHANNEL(x)
#define WideCharToMultiByte
#define __EXCEPT_PAGE_FAULT
static const WCHAR *const ext[]
BOOL WINAPI FileTimeToSystemTime(IN CONST FILETIME *lpFileTime, OUT LPSYSTEMTIME lpSystemTime)
GLdouble GLdouble GLdouble r
GLboolean GLboolean GLboolean b
GLenum const GLfloat * params
GLenum GLuint GLenum GLsizei const GLchar * buf
GLenum GLenum GLenum GLenum mapping
GLboolean GLboolean GLboolean GLboolean a
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
HLOCAL NTAPI LocalAlloc(UINT uFlags, SIZE_T dwBytes)
HLOCAL NTAPI LocalFree(HLOCAL hMem)
_Check_return_ _CRTIMP int __cdecl sscanf(_In_z_ const char *_Src, _In_z_ _Scanf_format_string_ const char *_Format,...)
LPSTR WINAPI lstrcpyA(LPSTR lpString1, LPCSTR lpString2)
int WINAPI lstrlenA(LPCSTR lpString)
#define memcpy(s1, s2, n)
#define ERROR_FILE_NOT_FOUND
static const struct encodedExtensions exts[]
static const WCHAR desc[]
static LPCSTR DWORD void * pvReserved
static LPCSTR DWORD void BYTE * pbEncoded
static LPCSTR DWORD void BYTE DWORD * pcbEncoded
#define STATUS_ACCESS_VIOLATION
#define offsetof(TYPE, MEMBER)
#define ASN_OBJECTIDENTIFIER
const void * pvStructInfo
CryptEncodeObjectExFunc encodeFunc
CryptEncodeObjectExFunc encodeFunc
const void * pvStructInfo
CryptEncodeObjectExFunc encode
CRYPT_INTEGER_BLOB SerialNumber
PCERT_GENERAL_SUBTREE rgPermittedSubtree
PCERT_GENERAL_SUBTREE rgExcludedSubtree
CRYPT_ALGORITHM_IDENTIFIER Algorithm
CERT_ALT_NAME_INFO FullName
DWORD dwDistPointNameChoice
CRYPT_BIT_BLOB ReasonFlags
CERT_ALT_NAME_INFO CRLIssuer
CRL_DIST_POINT_NAME DistPointName
CRYPT_OBJID_BLOB Parameters
CRYPT_CONTENT_INFO ContentInfo
CRYPT_ALGORITHM_IDENTIFIER DigestAlgorithm
CRYPT_ENCRYPTED_CONTENT_INFO encryptedContentInfo
PCMSG_KEY_TRANS_RECIPIENT_INFO rgRecipientInfo
CRYPT_CONTENT_INFO content
PCMSG_CMS_SIGNER_INFO rgSignerInfo
PCRYPT_SMIME_CAPABILITY rgCapability
CRYPT_OBJID_BLOB Parameters
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
DWORD WINAPI GetLastError(void)
ULONG_PTR HCRYPTPROV_OR_NCRYPT_KEY_HANDLE
#define X509_ISSUING_DIST_POINT
#define X509_AUTHORITY_KEY_ID2
#define szOID_AUTHORITY_KEY_IDENTIFIER
#define CERT_ID_ISSUER_SERIAL_NUMBER
#define CERT_ENCODING_TYPE_MASK
struct _CRYPT_ATTRIBUTE CRYPT_ATTRIBUTE
#define szOID_RSA_SMIMECapabilities
#define CERT_RDN_UTF8_STRING
#define CERT_RDN_IA5_STRING
#define CERT_RDN_GENERAL_STRING
#define szOID_CERT_EXTENSIONS
#define X509_POLICY_MAPPINGS
#define X509_CERT_TO_BE_SIGNED
struct _CMSG_KEY_TRANS_RECIPIENT_INFO CMSG_KEY_TRANS_RECIPIENT_INFO
#define X509_UNICODE_NAME
struct _RSAPUBKEY RSAPUBKEY
#define CERT_RDN_PRINTABLE_STRING
#define szOID_POLICY_MAPPINGS
#define CERT_ALT_NAME_URL
#define X509_MULTI_BYTE_UINT
#define szOID_CRL_DIST_POINTS
#define X509_OCTET_STRING
#define szOID_BASIC_CONSTRAINTS2
struct _CERT_PUBLIC_KEY_INFO CERT_PUBLIC_KEY_INFO
#define X509_MULTI_BYTE_INTEGER
#define CRL_DIST_POINT_ISSUER_RDN_NAME
#define CERT_ALT_NAME_DIRECTORY_NAME
#define CRYPT_OID_ENCODE_OBJECT_EX_FUNC
#define CERT_ID_KEY_IDENTIFIER
#define CERT_ALT_NAME_IP_ADDRESS
#define szOID_LEGACY_POLICY_MAPPINGS
#define X509_AUTHORITY_INFO_ACCESS
#define szOID_NAME_CONSTRAINTS
#define CMSG_ENCODING_TYPE_MASK
#define CERT_RDN_UNIVERSAL_STRING
#define CRYPT_ENCODE_NO_SIGNATURE_BYTE_REVERSAL_FLAG
#define szOID_ISSUER_ALT_NAME2
#define CERT_ALT_NAME_RFC822_NAME
#define PKCS_CONTENT_INFO
#define CERT_ALT_NAME_OTHER_NAME
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
#define CERT_RDN_VISIBLE_STRING
#define CRL_DIST_POINT_NO_NAME
#define CRYPT_OID_EXPORT_PUBLIC_KEY_INFO_FUNC
#define CRYPT_OID_IMPORT_PUBLIC_KEY_INFO_FUNC
#define X509_ASN_ENCODING
#define X509_CHOICE_OF_TIME
#define szOID_BASIC_CONSTRAINTS
_In_ DWORD dwCertEncodingType
#define CRL_DIST_POINT_FULL_NAME
#define szOID_SUBJECT_KEY_IDENTIFIER
#define X509_AUTHORITY_KEY_ID
#define CERT_RDN_VIDEOTEX_STRING
struct _CRYPTOAPI_BLOB CRL_BLOB
#define szOID_CRL_REASON_CODE
#define X509_CERT_POLICIES
#define RSA_CSP_PUBLICKEYBLOB
#define szOID_RSA_signingTime
#define CERT_ALT_NAME_ENTRY_ERR_INDEX_SHIFT
#define X509_SEQUENCE_OF_ANY
#define szOID_SUBJECT_ALT_NAME
#define szOID_CERT_POLICIES
#define CERT_ALT_NAME_DNS_NAME
#define PKCS7_SIGNER_INFO
#define szOID_ENHANCED_KEY_USAGE
#define szOID_SUBJECT_ALT_NAME2
#define X509_BASIC_CONSTRAINTS2
struct _PUBLICKEYSTRUC BLOBHEADER
#define PKCS_SMIME_CAPABILITIES
#define CERT_RDN_OCTET_STRING
#define CRYPT_ENCODE_ALLOC_FLAG
#define szOID_PKIX_POLICY_QUALIFIER_USERNOTICE
#define CRYPT_OID_CONVERT_PUBLIC_KEY_INFO_FUNC
#define szOID_NEXT_UPDATE_LOCATION
#define CERT_RDN_ENCODED_BLOB
#define CERT_RDN_NUMERIC_STRING
#define X509_PUBLIC_KEY_INFO
#define szOID_AUTHORITY_INFO_ACCESS
#define X509_ALTERNATE_NAME
#define szOID_AUTHORITY_KEY_IDENTIFIER2
struct _CMSG_CMS_SIGNER_INFO CMSG_CMS_SIGNER_INFO
#define PKCS_7_ASN_ENCODING
_In_ DWORD _Out_writes_bytes_to_opt_ pcbData void _Inout_ DWORD * pcbData
#define CERT_RDN_TELETEX_STRING
struct _CRYPTOAPI_BLOB CERT_BLOB
#define X509_NAME_CONSTRAINTS
#define CERT_RDN_BMP_STRING
#define CRYPT_OID_ENCODE_OBJECT_FUNC
#define szOID_POLICY_CONSTRAINTS
#define szOID_ISSUING_DIST_POINT
#define X509_CRL_DIST_POINTS
#define X509_CERT_CRL_TO_BE_SIGNED
#define X509_BASIC_CONSTRAINTS
#define CERT_ALT_NAME_REGISTERED_ID
#define CERT_RDN_ANY_TYPE
#define X509_ENHANCED_KEY_USAGE
#define X509_PKIX_POLICY_QUALIFIER_USERNOTICE
#define szOID_ISSUER_ALT_NAME
#define CERT_RDN_GRAPHIC_STRING
#define X509_POLICY_CONSTRAINTS
#define X509_UNICODE_NAME_VALUE
_In_ ULONG _In_opt_ PVOID pvData
#define CRYPT_E_INVALID_PRINTABLE_STRING
#define CRYPT_E_ASN1_ERROR
#define CRYPT_E_NOT_CHAR_STRING
#define CRYPT_E_BAD_ENCODE
#define CRYPT_E_INVALID_IA5_STRING
#define CRYPT_E_INVALID_NUMERIC_STRING
#define CRYPT_E_ASN1_CHOICE
_In_ BOOLEAN _In_ ULONG HashAlgorithm