104 if (pEncodePara && pEncodePara->
pfnAlloc)
105 *(
BYTE **)pbEncoded = pEncodePara->
pfnAlloc(bytesNeeded);
108 if (!*(
BYTE **)pbEncoded)
111 *pcbEncoded = bytesNeeded;
113 else if (bytesNeeded > *pcbEncoded)
115 *pcbEncoded = bytesNeeded;
120 *pcbEncoded = bytesNeeded;
126 if (pEncodePara && pEncodePara->
pfnFree)
134 DWORD bytesNeeded, significantBytes = 0;
142 for (
temp =
len, significantBytes =
sizeof(
temp); !(
temp & 0xff000000);
143 temp <<= 8, significantBytes--)
145 bytesNeeded = significantBytes + 1;
149 *pcbEncoded = bytesNeeded;
152 if (*pcbEncoded < bytesNeeded)
163 *pbEncoded++ = significantBytes | 0x80;
164 for (
i = 0;
i < significantBytes;
i++)
166 *(pbEncoded + significantBytes -
i - 1) = (
BYTE)(
len & 0xff);
170 *pcbEncoded = bytesNeeded;
181 TRACE(
"%p, %ld, %08lx, %p, %p, %ld\n",
items, cItem,
dwFlags, pEncodePara,
182 pbEncoded, pbEncoded ? *pcbEncoded : 0);
190 *pcbEncoded =
items[
i].size;
195 DWORD lenBytes, bytesNeeded;
198 bytesNeeded = 1 + lenBytes + dataLen;
200 *pcbEncoded = bytesNeeded;
204 pcbEncoded, bytesNeeded)))
209 pbEncoded = *(
BYTE **)pbEncoded;
214 for (
i = 0;
ret &&
i < cItem;
i++)
221 *pcbEncoded =
items[
i].size;
241 if ((
ret =
item->encodeFunc(dwCertEncodingType, lpszStructType,
244 DWORD dataLen, bytesNeeded;
247 bytesNeeded = 1 + dataLen +
len;
249 *pcbEncoded = bytesNeeded;
251 pbEncoded, pcbEncoded, bytesNeeded)))
256 pbEncoded = *(
BYTE **)pbEncoded;
261 ret =
item->encodeFunc(dwCertEncodingType, lpszStructType,
299 ret =
item->encodeFunc(dwCertEncodingType, lpszStructType,
300 item->pvStructInfo,
dwFlags, pEncodePara, pbEncoded, pcbEncoded);
301 if (
ret && pbEncoded)
302 *pbEncoded =
item->tag;
324 &
item,
dwFlags, pEncodePara, pbEncoded, pcbEncoded);
338 *pcbEncoded =
blob->cbData;
344 pcbEncoded,
blob->cbData)))
347 pbEncoded = *(
BYTE **)pbEncoded;
350 *pcbEncoded =
blob->cbData;
395 items[1].pvStructInfo = &nullBlob;
433 TRACE(
"Encoding public key with OID %s\n",
489 TRACE(
"Encoding public key with OID %s\n",
522 DWORD cItem = 7, cSwapped = 0;
524 if (
info->IssuerUniqueId.cbData)
529 items[cItem].pvStructInfo = &swapped[cSwapped];
534 if (
info->SubjectUniqueId.cbData)
539 items[cItem].pvStructInfo = &swapped[cSwapped];
544 if (
info->cExtension)
549 items[cItem].pvStructInfo = &constructed;
555 dwFlags, pEncodePara, pbEncoded, pcbEncoded);
577 TRACE(
"%p, %p, %ld\n",
entry, pbEncoded, pbEncoded ? *pcbEncoded : 0);
579 if (
entry->cExtension)
581 items[cItem].pvStructInfo = &
entry->cExtension;
587 pbEncoded, pcbEncoded);
597 DWORD bytesNeeded, dataLen, lenBytes,
i;
602 for (
i = 0, dataLen = 0;
ret &&
i <
info->cCRLEntry;
i++)
613 bytesNeeded = 1 + lenBytes + dataLen;
615 *pcbEncoded = bytesNeeded;
619 pcbEncoded, bytesNeeded)))
624 pbEncoded = *(
BYTE **)pbEncoded;
629 for (
i = 0;
i <
info->cCRLEntry;
i++)
660 dwFlags, pEncodePara, pbEncoded, pcbEncoded);
685 DWORD cItem = 4, cConstructed = 0;
687 if (
info->NextUpdate.dwLowDateTime ||
info->NextUpdate.dwHighDateTime)
689 items[cItem].pvStructInfo = &
info->NextUpdate;
699 if (
info->cExtension)
701 constructed[cConstructed].
tag = 0;
704 items[cItem].pvStructInfo = &constructed[cConstructed];
711 dwFlags, pEncodePara, pbEncoded, pcbEncoded);
733 TRACE(
"%p, %p, %ld\n",
ext, pbEncoded, pbEncoded ? *pcbEncoded : 0);
737 items[cItem].pvStructInfo = &
ext->fCritical;
741 items[cItem].pvStructInfo = &
ext->Value;
746 pbEncoded, pcbEncoded);
759 DWORD bytesNeeded, dataLen, lenBytes,
i;
763 for (
i = 0, dataLen = 0;
ret &&
i <
exts->cExtension;
i++)
774 bytesNeeded = 1 + lenBytes + dataLen;
776 *pcbEncoded = bytesNeeded;
780 pbEncoded, pcbEncoded, bytesNeeded)))
785 pbEncoded = *(
BYTE **)pbEncoded;
790 for (
i = 0;
i <
exts->cExtension;
i++)
819 DWORD bytesNeeded = 0, lenBytes;
831 if (
sscanf(pszObjId,
"%d.%d%n", &val1, &val2, &firstPos) != 2)
837 firstByte = val1 * 40 + val2;
838 ptr = pszObjId + firstPos;
851 if (val1 >= 0x10000000)
853 else if (val1 >= 0x200000)
855 else if (val1 >= 0x4000)
857 else if (val1 >= 0x80)
875 bytesNeeded += 1 + lenBytes;
878 if (*pcbEncoded < bytesNeeded)
887 pbEncoded += lenBytes;
893 *pbEncoded++ = firstByte;
894 ptr = pszObjId + firstPos;
899 unsigned char outBytes[5];
902 if (
val >= 0x10000000)
904 else if (
val >= 0x200000)
906 else if (
val >= 0x4000)
908 else if (
val >= 0x80)
912 for (
i = numBytes;
i > 0;
i--)
914 outBytes[
i - 1] =
val & 0x7f;
917 for (
i = 0;
i < numBytes - 1;
i++)
918 *pbEncoded++ = outBytes[
i] | 0x80;
919 *pbEncoded++ = outBytes[
i];
928 *pcbEncoded = bytesNeeded;
938 DWORD bytesNeeded, lenBytes, encodedLen;
942 bytesNeeded = 1 + lenBytes + encodedLen;
944 *pcbEncoded = bytesNeeded;
948 pbEncoded, pcbEncoded, bytesNeeded)))
951 pbEncoded = *(
BYTE **)pbEncoded;
954 pbEncoded += lenBytes;
967 DWORD bytesNeeded, lenBytes, strLen;
971 else if (
value->Value.pbData)
976 bytesNeeded = 1 + lenBytes + strLen * 2;
978 *pcbEncoded = bytesNeeded;
982 pbEncoded, pcbEncoded, bytesNeeded)))
987 pbEncoded = *(
BYTE **)pbEncoded;
990 pbEncoded += lenBytes;
991 for (
i = 0;
i < strLen;
i++)
993 *pbEncoded++ = (
str[
i] & 0xff00) >> 8;
994 *pbEncoded++ =
str[
i] & 0x00ff;
1007 DWORD bytesNeeded, lenBytes, encodedLen, strLen;
1010 strLen =
value->Value.cbData /
sizeof(
WCHAR);
1018 bytesNeeded = 1 + lenBytes + encodedLen;
1020 *pcbEncoded = bytesNeeded;
1024 pbEncoded, pcbEncoded, bytesNeeded)))
1027 pbEncoded = *(
BYTE **)pbEncoded;
1030 pbEncoded += lenBytes;
1032 bytesNeeded - lenBytes - 1,
NULL,
NULL);
1048 switch (
value->dwValueType)
1057 &
value->Value,
dwFlags, pEncodePara, pbEncoded, pcbEncoded);
1061 dwFlags, pEncodePara, pbEncoded, pcbEncoded);
1065 dwFlags, pEncodePara, pbEncoded, pcbEncoded);
1069 dwFlags, pEncodePara, pbEncoded, pcbEncoded);
1073 dwFlags, pEncodePara, pbEncoded, pcbEncoded);
1081 dwFlags, pEncodePara, pbEncoded, pcbEncoded);
1085 dwFlags, pEncodePara, pbEncoded, pcbEncoded);
1089 dwFlags, pEncodePara, pbEncoded, pcbEncoded);
1093 dwFlags, pEncodePara, pbEncoded, pcbEncoded);
1096 FIXME(
"CERT_RDN_UNIVERSAL_STRING: unimplemented\n");
1102 pbEncoded, pcbEncoded);
1106 pbEncoded, pcbEncoded);
1133 bytesNeeded +=
size;
1137 ret = nameValueEncodeFunc(dwCertEncodingType,
NULL, &
attr->dwValueType,
1141 bytesNeeded +=
size;
1143 bytesNeeded += 1 + lenBytes;
1146 if (*pcbEncoded < bytesNeeded)
1156 pbEncoded += lenBytes;
1157 size = bytesNeeded - 1 - lenBytes;
1163 size = bytesNeeded - 1 - lenBytes -
size;
1164 ret = nameValueEncodeFunc(dwCertEncodingType,
NULL,
1172 *pcbEncoded = bytesNeeded;
1189 ret =
a->cbData -
b->cbData;
1200 DWORD bytesNeeded = 0, lenBytes,
i;
1203 for (
i = 0;
i <
set->cBlob;
i++)
1204 bytesNeeded +=
set->rgBlob[
i].cbData;
1206 bytesNeeded += 1 + lenBytes;
1209 *pcbEncoded = bytesNeeded;
1213 pbEncoded, pcbEncoded, bytesNeeded)))
1216 pbEncoded = *(
BYTE **)pbEncoded;
1220 pbEncoded += lenBytes;
1221 for (
i = 0;
i <
set->cBlob;
i++)
1224 pbEncoded +=
set->rgBlob[
i].cbData;
1261 ret =
desc->encode(dwCertEncodingType, lpszStructType,
1270 ret =
desc->encode(dwCertEncodingType, lpszStructType,
1281 DWORD bytesNeeded = 0, lenBytes;
1286 bytesNeeded += 1 + lenBytes;
1288 *pcbEncoded = bytesNeeded;
1290 pbEncoded, pcbEncoded, bytesNeeded)))
1293 pbEncoded = *(
BYTE **)pbEncoded;
1298 pbEncoded += lenBytes;
1360 pbEncoded, pcbEncoded);
1379 DWORD dwCertEncodingType,
LPCSTR lpszStructType,
const void *pvStructInfo,
1388 dwFlags, pEncodePara, pbEncoded, pcbEncoded);
1391 dwFlags, pEncodePara, pbEncoded, pcbEncoded);
1406 TRACE(
"encoding name with %ld RDNs\n",
info->cRDN);
1413 bytesNeeded +=
size;
1418 bytesNeeded += 1 + lenBytes;
1422 *pcbEncoded = bytesNeeded;
1426 pbEncoded, pcbEncoded, bytesNeeded)))
1431 pbEncoded = *(
BYTE **)pbEncoded;
1445 bytesNeeded -=
size;
1469 const DWORD *ver = pvStructInfo;
1480 dwFlags, pEncodePara, pbEncoded, pcbEncoded);
1488 DWORD dwCertEncodingType,
LPCSTR lpszStructType,
const void *pvStructInfo,
1508 items[cItem].pvStructInfo = &nullBlob;
1513 dwFlags, pEncodePara, pbEncoded, pcbEncoded);
1542 DWORD bytesNeeded, dataLen, lenBytes,
i;
1543 const struct CTLEntries *entries = pvStructInfo;
1546 for (
i = 0, dataLen = 0;
ret &&
i < entries->
cEntry;
i++)
1557 bytesNeeded = 1 + lenBytes + dataLen;
1559 *pcbEncoded = bytesNeeded;
1563 pbEncoded, pcbEncoded, bytesNeeded)))
1568 pbEncoded = *(
BYTE **)pbEncoded;
1606 if (
info->ListIdentifier.cbData)
1608 items[cItem].pvStructInfo = &
info->ListIdentifier;
1612 if (
info->SequenceNumber.cbData)
1614 items[cItem].pvStructInfo = &
info->SequenceNumber;
1618 items[cItem].pvStructInfo = &
info->ThisUpdate;
1621 if (
info->NextUpdate.dwLowDateTime ||
info->NextUpdate.dwHighDateTime)
1623 items[cItem].pvStructInfo = &
info->NextUpdate;
1627 items[cItem].pvStructInfo = &
info->SubjectAlgorithm;
1630 if (
info->cCTLEntry)
1632 items[cItem].pvStructInfo = &
info->cCTLEntry;
1636 if (
info->cExtension)
1638 constructed.
tag = 0;
1641 items[cItem].pvStructInfo = &constructed;
1646 dwFlags, pEncodePara, pbEncoded, pcbEncoded);
1696 DWORD bytesNeeded, dataLen, lenBytes,
i;
1712 bytesNeeded = 1 + lenBytes + dataLen;
1714 *pcbEncoded = bytesNeeded;
1718 pbEncoded, pcbEncoded, bytesNeeded)))
1723 pbEncoded = *(
BYTE **)pbEncoded;
1757 DWORD bytesNeeded, dataLen, lenBytes,
i;
1772 bytesNeeded = 1 + lenBytes + dataLen;
1774 *pcbEncoded = bytesNeeded;
1778 pcbEncoded, bytesNeeded)))
1783 pbEncoded = *(
BYTE **)pbEncoded;
1838 if (
notice->pNoticeReference)
1841 items[cItem].pvStructInfo =
notice->pNoticeReference;
1844 if (
notice->pszDisplayText)
1847 displayTextValue.Value.cbData = 0;
1848 displayTextValue.Value.pbData = (
LPBYTE)
notice->pszDisplayText;
1850 items[cItem].pvStructInfo = &displayTextValue;
1854 dwFlags, pEncodePara, pbEncoded, pcbEncoded);
1874 if (!
attr->pszObjId)
1909 &
desc,
dwFlags, pEncodePara, pbEncoded, pcbEncoded);
1921 DWORD dwCertEncodingType,
LPCSTR lpszStructType,
const void *pvStructInfo,
1933 if (
info->Content.cbData)
1935 constructed.
tag = 0;
1938 items[cItem].pvStructInfo = &constructed;
1943 cItem,
dwFlags, pEncodePara, pbEncoded, pcbEncoded);
1970 if (!
info->pszObjId)
1991 DWORD bytesNeeded, lenBytes, encodedLen;
1994 encodedLen =
value->Value.cbData /
sizeof(
WCHAR);
2000 bytesNeeded = 1 + lenBytes + encodedLen;
2002 *pcbEncoded = bytesNeeded;
2006 pbEncoded, pcbEncoded, bytesNeeded)))
2011 pbEncoded = *(
BYTE **)pbEncoded;
2014 pbEncoded += lenBytes;
2015 for (
i = 0;
i < encodedLen;
i++)
2028 DWORD bytesNeeded, lenBytes, encodedLen;
2031 encodedLen =
value->Value.cbData /
sizeof(
WCHAR);
2037 bytesNeeded = 1 + lenBytes + encodedLen;
2039 *pcbEncoded = bytesNeeded;
2043 pbEncoded, pcbEncoded, bytesNeeded)))
2055 for (
i = 0;
ret &&
i < encodedLen;
i++)
2057 if (
'0' <=
str[
i] &&
str[
i] <=
'9')
2075 return wc &&
wcschr(
L"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 '()+,-./:=?", wc );
2084 DWORD bytesNeeded, lenBytes, encodedLen;
2087 encodedLen =
value->Value.cbData /
sizeof(
WCHAR);
2093 bytesNeeded = 1 + lenBytes + encodedLen;
2095 *pcbEncoded = bytesNeeded;
2099 pbEncoded, pcbEncoded, bytesNeeded)))
2111 for (
i = 0;
ret &&
i < encodedLen;
i++)
2135 DWORD bytesNeeded, lenBytes, encodedLen;
2138 encodedLen =
value->Value.cbData /
sizeof(
WCHAR);
2144 bytesNeeded = 1 + lenBytes + encodedLen;
2146 *pcbEncoded = bytesNeeded;
2150 pbEncoded, pcbEncoded, bytesNeeded)))
2162 for (
i = 0;
ret &&
i < encodedLen;
i++)
2186 DWORD bytesNeeded, lenBytes, strLen;
2190 strLen =
value->Value.cbData /
sizeof(
WCHAR);
2196 bytesNeeded = 1 + lenBytes + strLen * 4;
2198 *pcbEncoded = bytesNeeded;
2202 pbEncoded, pcbEncoded, bytesNeeded)))
2207 pbEncoded = *(
BYTE **)pbEncoded;
2210 pbEncoded += lenBytes;
2211 for (
i = 0;
i < strLen;
i++)
2215 *pbEncoded++ = (
BYTE)((
str[
i] & 0xff00) >> 8);
2216 *pbEncoded++ = (
BYTE)(
str[
i] & 0x00ff);
2233 switch (
value->dwValueType)
2242 pbEncoded, pcbEncoded);
2246 pbEncoded, pcbEncoded);
2250 dwFlags, pEncodePara, pbEncoded, pcbEncoded);
2258 pbEncoded, pcbEncoded);
2262 dwFlags, pEncodePara, pbEncoded, pcbEncoded);
2266 dwFlags, pEncodePara, pbEncoded, pcbEncoded);
2270 dwFlags, pEncodePara, pbEncoded, pcbEncoded);
2274 pbEncoded, pcbEncoded);
2278 pbEncoded, pcbEncoded);
2282 pbEncoded, pcbEncoded);
2307 TRACE(
"encoding name with %ld RDNs\n",
info->cRDN);
2314 bytesNeeded +=
size;
2317 bytesNeeded += 1 + lenBytes;
2321 *pcbEncoded = bytesNeeded;
2325 pbEncoded, pcbEncoded, bytesNeeded)))
2330 pbEncoded = *(
BYTE **)pbEncoded;
2343 bytesNeeded -=
size;
2374 else if (*pcbEncoded < 3)
2385 *pbEncoded++ =
val ? 0xff : 0;
2402 switch (
entry->dwAltNameChoice)
2414 for (
i = 0;
ret &&
i < dataLen;
i++)
2416 if (
entry->pwszURL[
i] > 0x7f)
2429 dataLen =
entry->DirectoryName.cbData;
2433 dataLen =
entry->IPAddress.cbData;
2445 FIXME(
"name type %ld unimplemented\n",
entry->dwAltNameChoice);
2453 DWORD bytesNeeded, lenBytes;
2456 bytesNeeded = 1 + dataLen + lenBytes;
2458 *pcbEncoded = bytesNeeded;
2459 else if (*pcbEncoded < bytesNeeded)
2462 *pcbEncoded = bytesNeeded;
2469 pbEncoded += lenBytes;
2470 switch (
entry->dwAltNameChoice)
2478 for (
i = 0;
i < dataLen;
i++)
2483 memcpy(pbEncoded,
entry->DirectoryName.pbData, dataLen);
2486 memcpy(pbEncoded,
entry->IPAddress.pbData, dataLen);
2490 *pcbEncoded = bytesNeeded;
2509 DWORD cItem = 0, cSwapped = 0;
2511 if (
info->KeyId.cbData)
2516 items[cItem].pvStructInfo = &swapped[cSwapped];
2521 if (
info->CertIssuer.cbData)
2523 constructed.
tag = 1;
2526 items[cItem].pvStructInfo = &constructed;
2530 if (
info->CertSerialNumber.cbData)
2535 items[cItem].pvStructInfo = &swapped[cSwapped];
2541 pEncodePara, pbEncoded, pcbEncoded);
2561 DWORD bytesNeeded, dataLen, lenBytes,
i;
2567 for (
i = 0, dataLen = 0;
ret &&
i <
info->cAltEntry;
i++)
2581 *pcbEncoded = (
BYTE)
i <<
2588 bytesNeeded = 1 + lenBytes + dataLen;
2591 *pcbEncoded = bytesNeeded;
2597 pbEncoded, pcbEncoded, bytesNeeded)))
2602 pbEncoded = *(
BYTE **)pbEncoded;
2645 DWORD cItem = 0, cSwapped = 0;
2647 if (
info->KeyId.cbData)
2652 items[cItem].pvStructInfo = &swapped[cSwapped];
2657 if (
info->AuthorityCertIssuer.cAltEntry)
2662 items[cItem].pvStructInfo = &swapped[cSwapped];
2667 if (
info->AuthorityCertSerialNumber.cbData)
2672 items[cItem].pvStructInfo = &swapped[cSwapped];
2678 pEncodePara, pbEncoded, pcbEncoded);
2697 if (!
descr->pszAccessMethod)
2713 DWORD bytesNeeded, dataLen, lenBytes,
i;
2717 for (
i = 0, dataLen = 0;
ret &&
i <
info->cAccDescr;
i++)
2729 bytesNeeded = 1 + lenBytes + dataLen;
2731 *pcbEncoded = bytesNeeded;
2735 pbEncoded, pcbEncoded, bytesNeeded)))
2740 pbEncoded = *(
BYTE **)pbEncoded;
2745 for (
i = 0;
i <
info->cAccDescr;
i++)
2784 if (
info->fPathLenConstraint)
2786 items[cItem].pvStructInfo = &
info->dwPathLenConstraint;
2790 if (
info->cSubtreesConstraint)
2792 items[cItem].pvStructInfo = &
info->cSubtreesConstraint;
2797 dwFlags, pEncodePara, pbEncoded, pcbEncoded);
2826 if (
info->fPathLenConstraint)
2828 items[cItem].pvStructInfo = &
info->dwPathLenConstraint;
2833 dwFlags, pEncodePara, pbEncoded, pcbEncoded);
2851 if (!
info->cPolicyQualifier)
2865 for (
i = 0;
ret &&
i <
info->cPolicyQualifier;
i++)
2867 items[0].pvStructInfo =
2868 info->rgPolicyQualifier[
i].pszPolicyQualifierId;
2869 items[1].pvStructInfo = &
info->rgPolicyQualifier[
i].Qualifier;
2873 bytesNeeded +=
size;
2876 bytesNeeded += 1 + lenBytes;
2880 *pcbEncoded = bytesNeeded;
2884 pbEncoded, pcbEncoded, bytesNeeded)))
2889 pbEncoded = *(
BYTE **)pbEncoded;
2894 for (
i = 0;
ret &&
i <
info->cPolicyQualifier;
i++)
2896 items[0].pvStructInfo =
2897 info->rgPolicyQualifier[
i].pszPolicyQualifierId;
2898 items[1].pvStructInfo =
2899 &
info->rgPolicyQualifier[
i].Qualifier;
2906 bytesNeeded -=
size;
2928 if (!
info->pszPolicyIdentifier)
2949 for (
i = 0;
ret &&
i <
info->cPolicyInfo;
i++)
2955 bytesNeeded +=
size;
2958 bytesNeeded += 1 + lenBytes;
2962 *pcbEncoded = bytesNeeded;
2966 pbEncoded, pcbEncoded, bytesNeeded)))
2971 pbEncoded = *(
BYTE **)pbEncoded;
2976 for (
i = 0;
ret &&
i <
info->cPolicyInfo;
i++)
2980 &
info->rgPolicyInfo[
i],
2985 bytesNeeded -=
size;
3011 if (!
mapping->pszIssuerDomainPolicy || !
mapping->pszSubjectDomainPolicy)
3031 for (
i = 0;
ret &&
i <
info->cPolicyMapping;
i++)
3037 bytesNeeded +=
size;
3040 bytesNeeded += 1 + lenBytes;
3044 *pcbEncoded = bytesNeeded;
3048 pbEncoded, pcbEncoded, bytesNeeded)))
3053 pbEncoded = *(
BYTE **)pbEncoded;
3058 for (
i = 0;
ret &&
i <
info->cPolicyMapping;
i++)
3062 dwCertEncodingType, &
info->rgPolicyMapping[
i],
3067 bytesNeeded -=
size;
3096 DWORD cItem = 0, cSwapped = 0;
3098 if (
info->fRequireExplicitPolicy)
3102 &
info->dwRequireExplicitPolicySkipCerts;
3104 items[cItem].pvStructInfo = &swapped[cSwapped];
3109 if (
info->fInhibitPolicyMapping)
3113 &
info->dwInhibitPolicyMappingSkipCerts;
3115 items[cItem].pvStructInfo = &swapped[cSwapped];
3225 DWORD bytesNeeded, lenBytes;
3227 TRACE(
"(%ld, %p), %08lx, %p, %p, %ld\n",
blob->cbData,
blob->pbData,
3228 dwFlags, pEncodePara, pbEncoded, pbEncoded ? *pcbEncoded : 0);
3231 bytesNeeded = 1 + lenBytes +
blob->cbData;
3234 *pcbEncoded = bytesNeeded;
3240 pcbEncoded, bytesNeeded)))
3243 pbEncoded = *(
BYTE **)pbEncoded;
3246 pbEncoded += lenBytes;
3271 DWORD bytesNeeded, lenBytes, dataBytes;
3275 if (!
blob->cUnusedBits)
3277 dataBytes =
blob->cbData;
3280 else if (
blob->cbData * 8 >
blob->cUnusedBits)
3282 dataBytes = (
blob->cbData * 8 -
blob->cUnusedBits) / 8 + 1;
3283 unusedBits =
blob->cUnusedBits >= 8 ?
blob->cUnusedBits / 8 :
3292 bytesNeeded = 1 + lenBytes + dataBytes + 1;
3295 *pcbEncoded = bytesNeeded;
3301 pcbEncoded, bytesNeeded)))
3304 pbEncoded = *(
BYTE **)pbEncoded;
3307 pbEncoded += lenBytes;
3308 *pbEncoded++ = unusedBits;
3315 memcpy(pbEncoded,
blob->pbData, dataBytes - 1);
3316 pbEncoded += dataBytes - 1;
3318 *pbEncoded = *(
blob->pbData + dataBytes - 1) &
mask;
3359 &newBlob,
dwFlags, pEncodePara, pbEncoded, pcbEncoded);
3378 &
blob,
dwFlags, pEncodePara, pbEncoded, pcbEncoded);
3389 DWORD significantBytes, lenBytes, bytesNeeded;
3394 significantBytes =
blob->cbData;
3395 if (significantBytes)
3397 if (
blob->pbData[significantBytes - 1] & 0x80)
3400 for (; significantBytes > 0 &&
3401 blob->pbData[significantBytes - 1] == 0xff; significantBytes--)
3403 if (
blob->pbData[significantBytes - 1] < 0x80)
3412 for (; significantBytes > 0 &&
3413 !
blob->pbData[significantBytes - 1]; significantBytes--)
3415 if (significantBytes == 0)
3416 significantBytes = 1;
3417 if (
blob->pbData[significantBytes - 1] > 0x7f)
3428 bytesNeeded = 1 + lenBytes + significantBytes;
3433 *pcbEncoded = bytesNeeded;
3439 pcbEncoded, bytesNeeded)))
3442 pbEncoded = *(
BYTE **)pbEncoded;
3447 pbEncoded += lenBytes;
3448 *pbEncoded++ = padByte;
3453 pbEncoded += lenBytes;
3455 for (; significantBytes > 0; significantBytes--)
3456 *(pbEncoded++) =
blob->pbData[significantBytes - 1];
3477 DWORD significantBytes, lenBytes, bytesNeeded;
3481 significantBytes =
blob->cbData;
3482 if (significantBytes)
3485 for (; significantBytes > 0 && !
blob->pbData[significantBytes - 1];
3488 if (significantBytes == 0)
3489 significantBytes = 1;
3490 if (
blob->pbData[significantBytes - 1] > 0x7f)
3497 bytesNeeded = 1 + lenBytes + significantBytes;
3502 *pcbEncoded = bytesNeeded;
3508 pcbEncoded, bytesNeeded)))
3511 pbEncoded = *(
BYTE **)pbEncoded;
3516 pbEncoded += lenBytes;
3522 pbEncoded += lenBytes;
3524 for (; significantBytes > 0; significantBytes--)
3525 *(pbEncoded++) =
blob->pbData[significantBytes - 1];
3550 if (
ret && pbEncoded)
3553 pbEncoded = *(
BYTE **)pbEncoded;
3571 static const DWORD bytesNeeded = 15;
3576 *pcbEncoded = bytesNeeded;
3591 pbEncoded, pcbEncoded, bytesNeeded)))
3594 pbEncoded = *(
BYTE **)pbEncoded;
3596 buf[1] = bytesNeeded - 2;
3598 "%02d%02d%02d%02d%02d%02dZ", sysTime.
wYear >= 2000 ?
3628 static const DWORD bytesNeeded = 17;
3633 *pcbEncoded = bytesNeeded;
3641 pcbEncoded, bytesNeeded);
3645 pbEncoded = *(
BYTE **)pbEncoded;
3647 buf[1] = bytesNeeded - 2;
3677 if (sysTime.
wYear >= 1950 && sysTime.
wYear <= 2050)
3702 DWORD bytesNeeded, dataLen, lenBytes,
i;
3705 for (
i = 0, dataLen = 0;
i < seq->
cValue;
i++)
3708 bytesNeeded = 1 + lenBytes + dataLen;
3711 *pcbEncoded = bytesNeeded;
3717 pcbEncoded, bytesNeeded)))
3720 pbEncoded = *(
BYTE **)pbEncoded;
3723 pbEncoded += lenBytes;
3749 DWORD cItem = 0, cSwapped = 0;
3760 constructed.
tag = 0;
3763 items[cItem].pvStructInfo = &constructed;
3769 FIXME(
"unimplemented for CRL_DIST_POINT_ISSUER_RDN_NAME\n");
3780 items[cItem].pvStructInfo = &swapped[cSwapped];
3790 items[cItem].pvStructInfo = &swapped[cSwapped];
3797 pbEncoded, pcbEncoded);
3811 if (!
info->cDistPoint)
3818 DWORD bytesNeeded, dataLen, lenBytes,
i;
3821 for (
i = 0, dataLen = 0;
ret &&
i <
info->cDistPoint;
i++)
3838 bytesNeeded = 1 + lenBytes + dataLen;
3841 *pcbEncoded = bytesNeeded;
3847 pbEncoded, pcbEncoded, bytesNeeded)))
3852 pbEncoded = *(
BYTE **)pbEncoded;
3857 for (
i = 0;
ret &&
i <
info->cDistPoint;
i++)
3897 for (
i = 0;
ret &&
i <
usage->cUsageIdentifier;
i++)
3900 usage->rgpszUsageIdentifier[
i],
3903 bytesNeeded +=
size;
3906 bytesNeeded += 1 + lenBytes;
3910 *pcbEncoded = bytesNeeded;
3914 pbEncoded, pcbEncoded, bytesNeeded)))
3919 pbEncoded = *(
BYTE **)pbEncoded;
3924 for (
i = 0;
ret &&
i <
usage->cUsageIdentifier;
i++)
3928 usage->rgpszUsageIdentifier[
i],
3933 bytesNeeded -=
size;
3963 DWORD cItem = 0, cSwapped = 0;
3966 switch (
point->DistPointName.dwDistPointNameChoice)
3975 constructed.
tag = 0;
3978 items[cItem].pvStructInfo = &constructed;
3987 if (
ret &&
point->fOnlyContainsUserCerts)
3992 items[cItem].pvStructInfo = &swapped[cSwapped];
3997 if (
ret &&
point->fOnlyContainsCACerts)
4002 items[cItem].pvStructInfo = &swapped[cSwapped];
4007 if (
ret &&
point->OnlySomeReasonFlags.cbData)
4012 items[cItem].pvStructInfo = &swapped[cSwapped];
4022 items[cItem].pvStructInfo = &swapped[cSwapped];
4029 dwFlags, pEncodePara, pbEncoded, pcbEncoded);
4051 DWORD cItem = 1, cSwapped = 0;
4058 items[cItem].pvStructInfo = &swapped[cSwapped];
4068 items[cItem].pvStructInfo = &swapped[cSwapped];
4074 pEncodePara, pbEncoded, pcbEncoded);
4092 DWORD i, cItem = 0, cSwapped = 0;
4115 items[cItem].pvStructInfo = &swapped[cSwapped];
4128 if (excluded.rgBlob)
4131 memset(excluded.rgBlob, 0,
4133 for (
i = 0;
ret &&
i < excluded.cBlob;
i++)
4137 (
BYTE *)&excluded.rgBlob[
i].pbData,
4138 &excluded.rgBlob[
i].cbData);
4144 items[cItem].pvStructInfo = &swapped[cSwapped];
4155 dwFlags, pEncodePara, pbEncoded, pcbEncoded);
4156 for (
i = 0;
i < permitted.
cBlob;
i++)
4158 for (
i = 0;
i < excluded.cBlob;
i++)
4205 if (!
info->Issuer.cbData)
4216 DWORD cItem = 3, cSwapped = 0;
4218 if (
info->AuthAttrs.cAttr)
4223 items[cItem].pvStructInfo = &swapped[cSwapped];
4228 items[cItem].pvStructInfo = &
info->HashEncryptionAlgorithm;
4231 items[cItem].pvStructInfo = &
info->EncryptedHash;
4234 if (
info->UnauthAttrs.cAttr)
4239 items[cItem].pvStructInfo = &swapped[cSwapped];
4245 dwFlags, pEncodePara, pbEncoded, pcbEncoded);
4276 !
info->SignerId.IssuerSerialNumber.Issuer.cbData)
4284 DWORD cItem = 1, cSwapped = 0;
4288 items[cItem].pvStructInfo =
4289 &
info->SignerId.IssuerSerialNumber.Issuer;
4290 items[cItem].encodeFunc =
4299 items[cItem].pvStructInfo = &swapped[cSwapped];
4304 items[cItem].pvStructInfo = &
info->HashAlgorithm;
4307 if (
info->AuthAttrs.cAttr)
4312 items[cItem].pvStructInfo = &swapped[cSwapped];
4317 items[cItem].pvStructInfo = &
info->HashEncryptionAlgorithm;
4320 items[cItem].pvStructInfo = &
info->EncryptedHash;
4323 if (
info->UnauthAttrs.cAttr)
4328 items[cItem].pvStructInfo = &swapped[cSwapped];
4334 dwFlags, pEncodePara, pbEncoded, pcbEncoded);
4357 struct DERSetDescriptor certSet = { 0 }, crlSet = { 0 }, signerSet = { 0 };
4359 DWORD cItem = 3, cSwapped = 0;
4371 items[cItem].pvStructInfo = &swapped[cSwapped];
4380 crlSet.itemSize =
sizeof(
CRL_BLOB);
4381 crlSet.itemOffset = 0;
4386 items[cItem].pvStructInfo = &swapped[cSwapped];
4394 signerSet.itemOffset = 0;
4396 items[cItem].pvStructInfo = &signerSet;
4411 { &
info->RecipientId.IssuerSerialNumber,
4413 { &
info->KeyEncryptionAlgorithm,
4431 { &
info->contentEncryptionAlgorithm,
4498 if (
info->cExtension)
4500 FIXME(
"extensions not supported\n");
4533 DWORD bytesNeeded, dataLen, lenBytes,
i;
4537 for (
i = 0, dataLen = 0;
ret &&
i <
list->count;
i++)
4548 bytesNeeded = 1 + lenBytes + dataLen;
4550 *pcbEncoded = bytesNeeded;
4554 pbEncoded, pcbEncoded, bytesNeeded)))
4559 pbEncoded = *(
BYTE **)pbEncoded;
4564 for (
i = 0;
i <
list->count;
i++)
4601 FIXME(
"version %lu not supported\n",
info->dwVersion);
4607 if (
info->cExtension)
4609 FIXME(
"extensions not supported\n");
4619 if (
info->pRequestorName)
4622 name.pvStructInfo =
info->pRequestorName;
4628 if (
info->cRequestEntry)
4662 if (
info->pOptionalSignatureInfo)
FIXME(
"pOptionalSignatureInfo not supported\n");
4690 switch (
LOWORD(lpszStructType))
4823 FIXME(
"Unimplemented encoder for lpszStructType OID %d\n",
LOWORD(lpszStructType));
4879 FIXME(
"Unsupported encoder for lpszStructType %s\n", lpszStructType);
4917 TRACE_(crypt)(
"(0x%08lx, %s, %p, %p, %p)\n", dwCertEncodingType,
4921 if (!pbEncoded && !pcbEncoded)
4930 TRACE_(crypt)(
"OID %s not found or unimplemented, looking for DLL\n",
4933 lpszStructType, &hFunc);
4934 if (!pCryptEncodeObject)
4936 lpszStructType, &hFunc);
4938 if (pCryptEncodeObject)
4939 ret = pCryptEncodeObject(dwCertEncodingType, lpszStructType,
4941 else if (pCryptEncodeObjectEx)
4942 ret = pCryptEncodeObjectEx(dwCertEncodingType, lpszStructType,
4952 void *pvEncoded,
DWORD *pcbEncoded)
4958 TRACE_(crypt)(
"(0x%08lx, %s, %p, 0x%08lx, %p, %p, %p)\n", dwCertEncodingType,
4960 pvEncoded, pcbEncoded);
4962 if (!pvEncoded && !pcbEncoded)
4979 TRACE_(crypt)(
"OID %s not found or unimplemented, looking for DLL\n",
4986 dwFlags, pEncodePara, pvEncoded, pcbEncoded);
4992 if (pCryptEncodeObject)
4996 ret = pCryptEncodeObject(dwCertEncodingType, lpszStructType,
4999 pvEncoded, pcbEncoded, *pcbEncoded)))
5000 ret = pCryptEncodeObject(dwCertEncodingType,
5005 ret = pCryptEncodeObject(dwCertEncodingType, lpszStructType,
5034 TRACE_(crypt)(
"(%08Ix, %ld, %08lx, %s, %08lx, %p, %p, %ld)\n", hCryptProv,
5036 pvAuxInfo, pInfo, pInfo ? *pcbInfo : 0);
5054 if (!pszPublicKeyObjId)
5072 DWORD params_size = 0;
5075 dwFlags, pvAuxInfo, &key_data, &key_size, &
params, ¶ms_size);
5079 DWORD size_needed =
sizeof(*pInfo) + oid_size + key_size + params_size;
5082 *pcbInfo = size_needed;
5083 else if (*pcbInfo < size_needed)
5085 *pcbInfo = size_needed;
5091 *pcbInfo = size_needed;
5121 pszPublicKeyObjId = rsa_oid;
5130 strlen(pszPublicKeyObjId) + 1 + encodedLen;
5133 *pcbInfo = sizeNeeded;
5134 else if (*pcbInfo < sizeNeeded)
5137 *pcbInfo = sizeNeeded;
5142 *pcbInfo = sizeNeeded;
5183 TRACE_(crypt)(
"(%08Ix, %ld, %08lx, %s, %08lx, %p, %p, %ld)\n", hCryptProv,
5185 pvAuxInfo, pInfo, pInfo ? *pcbInfo : 0);
5193 if (pszPublicKeyObjId)
5199 0, (
void **)&exportFunc, &hFunc);
5203 ret = exportFunc(hCryptProv, dwKeySpec, dwCertEncodingType,
5204 pszPublicKeyObjId,
dwFlags, pvAuxInfo, pInfo, pcbInfo);
5232 TRACE_(crypt)(
"(%08Ix, %08lx, %p, %08x, %08lx, %p, %p)\n", hCryptProv,
5233 dwCertEncodingType, pInfo, aiKeyAlg,
dwFlags, pvAuxInfo, phKey);
5238 0, (
void **)&convertFunc, &hFunc);
5243 ret = convertFunc(dwCertEncodingType, pInfo, aiKeyAlg,
dwFlags, &
pubKey, &pubKeySize);
5293 TRACE_(crypt)(
"(%08Ix, %08lx, %p, %08x, %08lx, %p, %p)\n", hCryptProv,
5294 dwCertEncodingType, pInfo, aiKeyAlg,
dwFlags, pvAuxInfo, phKey);
5302 ret = importFunc(hCryptProv, dwCertEncodingType, pInfo, aiKeyAlg,
dwFlags,
5313 TRACE_(crypt)(
"(%ld, %p, %08lx, %p, %p)\n", dwCertEncodingType, pInfo,
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
BOOL WINAPI CryptDecodeObject(DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo, DWORD *pcbStructInfo)
void CRYPT_CopyReversed(BYTE *dst, const BYTE *src, size_t len)
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)
BOOL CNG_ImportPubKey(CERT_PUBLIC_KEY_INFO *pubKeyInfo, BCRYPT_KEY_HANDLE *key)
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)
static BOOL CRYPT_AsnEncodeCertPolicy(DWORD dwCertEncodingType, const CERT_POLICY_INFO *info, DWORD dwFlags, BYTE *pbEncoded, DWORD *pcbEncoded)
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)
BOOL WINAPI CryptImportPublicKeyInfoEx2(DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo, DWORD dwFlags, void *pvAuxInfo, BCRYPT_KEY_HANDLE *phKey)
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 CRYPT_AsnEncodeOCSPRequestEntry(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded)
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)
static BOOL WINAPI CRYPT_AsnEncodeCertId(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 BOOL WINAPI CRYPT_AsnEncodeOCSPRequest(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_AsnEncodeRsaPubKey_Bcrypt(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)
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)
static BOOL WINAPI CRYPT_AsnEncodeOCSPRequestEntries(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)
static int __cdecl BLOBComp(const void *l, const void *r)
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_AsnEncodeOCSPSignedRequest(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)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
_ACRTIMP void __cdecl qsort(void *, size_t, size_t, int(__cdecl *)(const void *, const void *))
_ACRTIMP int __cdecl _ACRTIMP int __cdecl _ACRTIMP int __cdecl _ACRTIMP int __cdecl _ACRTIMP int __cdecl _ACRTIMP int __cdecl _ACRTIMP int __cdecl sscanf(const char *, const char *,...) __WINE_CRT_SCANF_ATTR(2
_ACRTIMP size_t __cdecl strlen(const char *)
_ACRTIMP int __cdecl strcmp(const char *, const char *)
#define STATUS_ACCESS_VIOLATION
GLuint GLuint GLsizei count
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)
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[]
D3D11_SHADER_VARIABLE_DESC desc
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
_In_ LPWSTR _In_ DWORD _In_ LPCVOID pvData
static HANDLE ACCESS_MASK ULONG attributes
_In_ _Out_writes_opt_ pcchValueName _Inout_opt_ LPDWORD _Out_opt_ _Out_writes_bytes_to_opt_ pcbData _Inout_opt_ LPDWORD pcbData
#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
OCSP_REQUEST_ENTRY * entry
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
#define CERT_RDN_VISIBLE_STRING
#define CRL_DIST_POINT_NO_NAME
#define CRYPT_OID_EXPORT_PUBLIC_KEY_INFO_FUNC
#define CNG_RSA_PUBLIC_KEY_BLOB
#define CRYPT_OID_IMPORT_PUBLIC_KEY_INFO_FUNC
#define X509_ASN_ENCODING
#define X509_CHOICE_OF_TIME
#define szOID_BASIC_CONSTRAINTS
#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
#define CERT_RDN_TELETEX_STRING
struct _CRYPTOAPI_BLOB CERT_BLOB
#define X509_NAME_CONSTRAINTS
#define OCSP_SIGNED_REQUEST
#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
#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