24#define NONAMELESSUNION
44#define hton16(x) RtlUshortByteSwap(x)
45#define n16toh(x) RtlUshortByteSwap(x)
49#define ASN_BOOL (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x01)
50#define ASN_BITSTRING (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x03)
51#define ASN_BMPSTRING (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x1e)
55 DWORD bytesNeeded, significantBytes = 0;
64 temp <<= 8, significantBytes--)
66 bytesNeeded = significantBytes + 1;
85 for (
i = 0;
i < significantBytes;
i++)
101 DWORD bytesNeeded, lenBytes;
107 bytesNeeded = 1 + lenBytes +
blob->cbData;
141 DWORD bytesNeeded, lenBytes;
143 switch (
link->dwLinkChoice)
147 DWORD fileNameLen, fileNameLenBytes;
150 fileNameLen =
link->u.pwszFile ?
155 bytesNeeded = 2 + lenBytes + fileNameLenBytes + fileNameLen;
187 DWORD classIdLenBytes, dataLenBytes, dataLen;
194 dataLen = 2 + classIdLenBytes + classId.
cbData +
195 dataLenBytes +
link->u.Moniker.SerializedData.cbData;
197 bytesNeeded = 1 + dataLen + lenBytes;
220 size = 1 + dataLenBytes +
link->u.Moniker.SerializedData.cbData;
248 bytesNeeded = 1 + lenBytes + urlLen;
311 DWORD lenBytes, bytesNeeded;
314 bytesNeeded = 1 + lenBytes + dataLen;
329 for (
i = 0;
ret &&
i < cItem;
i++)
353 DWORD bytesNeeded, lenBytes, dataBytes;
357 if (!
blob->cUnusedBits)
359 dataBytes =
blob->cbData;
362 else if (
blob->cbData * 8 >
blob->cUnusedBits)
364 dataBytes = (
blob->cbData * 8 -
blob->cUnusedBits) / 8 + 1;
365 unusedBits =
blob->cUnusedBits >= 8 ?
blob->cUnusedBits / 8 :
374 bytesNeeded = 1 + lenBytes + dataBytes + 1;
432 DWORD dataLen, bytesNeeded;
435 bytesNeeded = 1 + dataLen +
len;
490 items[cItem].pvStructInfo = &imageData->
Flags;
494 if (imageData->
pFile)
496 items[cItem].pvStructInfo = &constructed;
518 DWORD bytesNeeded = 0, lenBytes;
530 if (
sscanf(pszObjId,
"%d.%d%n", &val1, &val2, &firstPos) != 2)
536 firstByte = val1 * 40 + val2;
537 ptr = pszObjId + firstPos;
550 if (val1 >= 0x10000000)
552 else if (val1 >= 0x200000)
554 else if (val1 >= 0x4000)
556 else if (val1 >= 0x80)
574 bytesNeeded += 1 + lenBytes;
593 ptr = pszObjId + firstPos;
598 unsigned char outBytes[5];
601 if (
val >= 0x10000000)
603 else if (
val >= 0x200000)
605 else if (
val >= 0x4000)
607 else if (
val >= 0x80)
611 for (
i = numBytes;
i > 0;
i--)
613 outBytes[
i - 1] =
val & 0x7f;
616 for (
i = 0;
i < numBytes - 1;
i++)
640 else if (*pcbEncoded < blob->cbData)
672 items[1].pvStructInfo = &nullBlob;
702 const struct SPCDigest *digest = pvStructInfo;
746 DWORD bytesNeeded, lenBytes, strLen;
753 bytesNeeded = 1 + lenBytes + strLen * 2;
770 for (
i = 0;
i < strLen;
i++)
817 if (
info->pMoreInfo &&
822 else if (
info->pPublisherInfo &&
832 DWORD cItem = 0, cConstructed = 0;
834 if (
info->pwszProgramName)
839 constructed[cConstructed].
tag = 0;
842 items[cItem].pvStructInfo = &constructed[cConstructed];
849 constructed[cConstructed].
tag = 1;
852 items[cItem].pvStructInfo = &constructed[cConstructed];
857 if (
info->pPublisherInfo)
859 constructed[cConstructed].
tag = 2;
862 items[cItem].pvStructInfo = &constructed[cConstructed];
887 DWORD significantBytes, lenBytes, bytesNeeded;
892 significantBytes =
blob->cbData;
893 if (significantBytes)
895 if (
blob->pbData[significantBytes - 1] & 0x80)
898 for (; significantBytes > 0 &&
899 blob->pbData[significantBytes - 1] == 0xff; significantBytes--)
901 if (
blob->pbData[significantBytes - 1] < 0x80)
910 for (; significantBytes > 0 &&
911 !
blob->pbData[significantBytes - 1]; significantBytes--)
913 if (significantBytes == 0)
914 significantBytes = 1;
915 if (
blob->pbData[significantBytes - 1] > 0x7f)
926 bytesNeeded = 1 + lenBytes + significantBytes;
955 for (; significantBytes > 0; significantBytes--)
1096#define GET_LEN_BYTES(b) ((b) <= 0x7f ? 1 : 1 + ((b) & 0x7f))
1127 FIXME(
"unimplemented for indefinite-length encoding\n");
1135 if (lenLen >
sizeof(
DWORD) + 1)
1140 else if (lenLen + 2 > cbEncoded)
1155 if (
out + lenLen + 1 > cbEncoded)
1175 DWORD bytesNeeded, dataLen;
1197 *pcbStructInfo = bytesNeeded;
1198 else if (*pcbStructInfo < bytesNeeded)
1201 *pcbStructInfo = bytesNeeded;
1210 blob->cbData = dataLen;
1243 bytesNeeded += (dataLen + 1) *
sizeof(
WCHAR);
1245 *pcbStructInfo = bytesNeeded;
1246 else if (*pcbStructInfo < bytesNeeded)
1248 *pcbStructInfo = bytesNeeded;
1258 for (
i = 0;
i < dataLen;
i++)
1259 link->u.pwszUrl[
i] =
1261 link->u.pwszUrl[
i] =
'\0';
1271 pbEncoded + 1 + lenBytes, cbEncoded - 1 - lenBytes,
1289 cbEncoded - 3 - lenBytes - classId.
cbData,
1292 bytesNeeded +=
data.cbData;
1294 *pcbStructInfo = bytesNeeded;
1295 else if (*pcbStructInfo < bytesNeeded)
1297 *pcbStructInfo = bytesNeeded;
1309 link->u.Moniker.SerializedData.pbData =
1313 memcpy(
link->u.Moniker.SerializedData.pbData,
1315 link->u.Moniker.SerializedData.cbData =
data.cbData;
1330 bytesNeeded += realDataLen +
sizeof(
WCHAR);
1332 *pcbStructInfo = bytesNeeded;
1333 else if (*pcbStructInfo < bytesNeeded)
1335 *pcbStructInfo = bytesNeeded;
1346 for (
i = 0;
i < dataLen /
sizeof(
WCHAR);
i++)
1347 link->u.pwszFile[
i] =
1349 link->u.pwszFile[realDataLen /
sizeof(
WCHAR)] =
'\0';
1355 bytesNeeded +=
sizeof(
WCHAR);
1357 *pcbStructInfo = bytesNeeded;
1358 else if (*pcbStructInfo < bytesNeeded)
1360 *pcbStructInfo = bytesNeeded;
1369 link->u.pwszFile[0] =
'\0';
1400 *pcbStructInfo = bytesNeeded;
1401 else if (*pcbStructInfo < bytesNeeded)
1403 *pcbStructInfo = bytesNeeded;
1467#define ALIGN_DWORD_PTR(x) (((x) + sizeof(DWORD_PTR) - 1) & ~(sizeof(DWORD_PTR) - 1))
1469#define FINALMEMBERSIZE(s, member) (sizeof(s) - offsetof(s, member))
1470#define MEMBERSIZE(s, member, nextmember) \
1471 (offsetof(s, nextmember) - offsetof(s, member))
1489 TRACE(
"%p, %d, %p, %d, %08x, %p, %p, %p\n",
items, cItem,
pbEncoded,
1490 cbEncoded,
dwFlags, pvStructInfo, nextData, cbDecoded);
1505 if (nextData && pvStructInfo &&
items[
i].hasPointer)
1507 TRACE(
"Setting next pointer to %p\n",
1510 items[
i].pointerOffset) = nextData;
1515 TRACE(
"decoding item %d\n",
i);
1517 TRACE(
"sizing item %d\n",
i);
1519 NULL,
ptr, 1 + nextItemLenBytes + nextItemLen,
1533 if (nextData &&
items[
i].hasPointer &&
1536 ptr += 1 + nextItemLenBytes + nextItemLen;
1537 decoded += 1 + nextItemLenBytes + nextItemLen;
1538 TRACE(
"item %d: decoded %d bytes\n",
i,
1539 1 + nextItemLenBytes + nextItemLen);
1544 TRACE(
"skipping optional item %d\n",
i);
1550 TRACE(
"item %d failed: %08x\n",
i,
1555 TRACE(
"item %d: decoded %d bytes\n",
i,
1556 1 + nextItemLenBytes + nextItemLen);
1557 ptr += 1 + nextItemLenBytes + nextItemLen;
1558 decoded += 1 + nextItemLenBytes + nextItemLen;
1564 TRACE(
"skipping optional item %d\n",
i);
1569 TRACE(
"item %d: tag %02x doesn't match expected %02x\n",
1578 TRACE(
"missing optional item %d, skipping\n",
i);
1583 TRACE(
"not enough bytes for item %d, failing\n",
i);
1589 *cbDecoded = decoded;
1604 void *startingPointer)
1608 TRACE(
"%p, %d, %p, %d, %08x, %p, %d, %p\n",
items, cItem,
pbEncoded,
1609 cbEncoded,
dwFlags, pvStructInfo, *pcbStructInfo, startingPointer);
1620 cbEncoded -= 1 + lenBytes;
1621 if (cbEncoded < dataLen)
1623 TRACE(
"dataLen %d exceeds cbEncoded %d, failing\n", dataLen,
1631 if (
ret && cbDecoded != dataLen)
1633 TRACE(
"expected %d decoded, got %d, failing\n", dataLen,
1640 DWORD i, bytesNeeded = 0, structSize = 0;
1642 for (
i = 0;
i < cItem;
i++)
1644 bytesNeeded +=
items[
i].size;
1645 structSize +=
items[
i].minSize;
1648 *pcbStructInfo = bytesNeeded;
1649 else if (*pcbStructInfo < bytesNeeded)
1652 *pcbStructInfo = bytesNeeded;
1659 *pcbStructInfo = bytesNeeded;
1660 if (startingPointer)
1661 nextData = startingPointer;
1663 nextData = (
BYTE *)pvStructInfo + structSize;
1664 memset(pvStructInfo, 0, structSize);
1666 ptr, cbEncoded,
dwFlags, pvStructInfo, nextData,
1683 void *pvStructInfo,
DWORD *pcbStructInfo)
1688 pvStructInfo, *pcbStructInfo);
1692 DWORD bytesNeeded, dataLen;
1701 *pcbStructInfo = bytesNeeded;
1702 else if (*pcbStructInfo < bytesNeeded)
1704 *pcbStructInfo = bytesNeeded;
1712 blob = pvStructInfo;
1713 blob->cbData = dataLen - 1;
1747 void *pvStructInfo,
DWORD *pcbStructInfo)
1776 (*pLink)->u.pwszUrl =
1781 *pLink, pcbStructInfo);
1790 void *pvStructInfo,
DWORD *pcbStructInfo)
1795 pvStructInfo, *pcbStructInfo);
1822 void *pvStructInfo,
DWORD *pcbStructInfo)
1828 pvStructInfo, *pcbStructInfo);
1847 bytesNeeded +=
strlen(firstTwo) + 1;
1878 *pcbStructInfo = bytesNeeded;
1879 else if (*pcbStructInfo < bytesNeeded)
1881 *pcbStructInfo = bytesNeeded;
1915 *pcbStructInfo = bytesNeeded;
1923 void *pvStructInfo,
DWORD *pcbStructInfo)
1928 pvStructInfo, *pcbStructInfo);
1942 void *pvStructInfo,
DWORD *pcbStructInfo)
1948 pvStructInfo, *pcbStructInfo);
1951 bytesNeeded += cbEncoded;
1953 *pcbStructInfo = bytesNeeded;
1954 else if (*pcbStructInfo < bytesNeeded)
1957 *pcbStructInfo = bytesNeeded;
1964 *pcbStructInfo = bytesNeeded;
1965 blob->cbData = cbEncoded;
1979 void *pvStructInfo,
DWORD *pcbStructInfo)
1992 pvStructInfo, *pcbStructInfo);
2001 void *pvStructInfo,
DWORD *pcbStructInfo)
2015 pvStructInfo, *pcbStructInfo);
2019 if (
ret && pvStructInfo)
2029 void *pvStructInfo,
DWORD *pcbStructInfo)
2031 struct SPCDigest *digest = pvStructInfo;
2043 pvStructInfo, *pcbStructInfo);
2052 void *pvStructInfo,
DWORD *pcbStructInfo)
2057 pvStructInfo, *pcbStructInfo);
2086 void *pvStructInfo,
DWORD *pcbStructInfo)
2089 DWORD bytesNeeded, dataLen;
2095 bytesNeeded = dataLen + 2 +
sizeof(
LPWSTR);
2097 *pcbStructInfo = bytesNeeded;
2098 else if (*pcbStructInfo < bytesNeeded)
2100 *pcbStructInfo = bytesNeeded;
2109 *pcbStructInfo = bytesNeeded;
2112 for (
i = 0;
i < dataLen / 2;
i++)
2124 void *pvStructInfo,
DWORD *pcbStructInfo)
2130 pvStructInfo, pvStructInfo ? *pcbStructInfo : 0);
2145 void *pvStructInfo,
DWORD *pcbStructInfo)
2150 pvStructInfo, *pcbStructInfo);
2184 void *pvStructInfo,
DWORD *pcbStructInfo)
2193 if (dataLen >
sizeof(
int))
2198 else if (!pvStructInfo)
2199 *pcbStructInfo =
sizeof(
int);
2200 else if (*pcbStructInfo <
sizeof(
int))
2202 *pcbStructInfo =
sizeof(
int);
2211 *pcbStructInfo =
sizeof(
int);
2212 if (dataLen &&
pbEncoded[1 + lenBytes] & 0x80)
2219 for (
i = 0;
i < dataLen;
i++)
2224 memcpy(pvStructInfo, &
val,
sizeof(
int));
2232 void *pvStructInfo,
DWORD *pcbStructInfo)
2237 pvStructInfo, *pcbStructInfo);
2264 void *pvStructInfo,
DWORD *pcbStructInfo)
2269 pvStructInfo, *pcbStructInfo);
2299 void *pvStructInfo,
DWORD *pcbStructInfo)
2320 *pcbStructInfo =
sizeof(
BOOL);
2323 else if (*pcbStructInfo <
sizeof(
BOOL))
2325 *pcbStructInfo =
sizeof(
BOOL);
2331 *pcbStructInfo =
sizeof(
BOOL);
2341 void *pvStructInfo,
DWORD *pcbStructInfo)
2346 pvStructInfo, *pcbStructInfo);
2353 fFinancialInfoAvailable, fMeetsCriteria),
FALSE,
FALSE, 0, 0 },
ACPI_SIZE strlen(const char *String)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define __EXCEPT_PAGE_FAULT
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
BOOL WINAPI WVTAsn1SpcFinancialCriteriaInfoEncode(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnDecodeAlgorithmId(DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo, DWORD *pcbStructInfo)
static BOOL WINAPI CRYPT_AsnDecodeOctets(DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo, DWORD *pcbStructInfo)
#define MEMBERSIZE(s, member, nextmember)
static BOOL WINAPI CRYPT_AsnEncodeBits(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL CRYPT_GetLen(const BYTE *pbEncoded, DWORD cbEncoded, DWORD *len)
BOOL WINAPI WVTAsn1SpcLinkEncode(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnDecodeBool(DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo, DWORD *pcbStructInfo)
static BOOL WINAPI CRYPT_AsnDecodeAttributeTypeValue(DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo, DWORD *pcbStructInfo)
static BOOL CRYPT_EncodeLen(DWORD len, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnDecodeBMPString(DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo, DWORD *pcbStructInfo)
static BOOL WINAPI CRYPT_AsnDecodeInt(DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo, DWORD *pcbStructInfo)
static BOOL WINAPI CRYPT_AsnDecodeSPCLinkPointer(DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo, DWORD *pcbStructInfo)
static BOOL CRYPT_AsnEncodeSequence(DWORD dwCertEncodingType, struct AsnEncodeSequenceItem items[], DWORD cItem, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeBool(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnDecodeCopyBytes(DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo, DWORD *pcbStructInfo)
BOOL WINAPI WVTAsn1SpcIndirectDataContentEncode(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeOctets(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnDecodeOidIgnoreTag(DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo, DWORD *pcbStructInfo)
BOOL(WINAPI * CryptEncodeObjectFunc)(DWORD, LPCSTR, const void *, BYTE *, DWORD *)
static BOOL WINAPI CRYPT_AsnDecodeProgramName(DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo, DWORD *pcbStructInfo)
static BOOL WINAPI CRYPT_AsnEncodeAlgorithmIdWithNullParams(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeOid(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, BYTE *pbEncoded, DWORD *pcbEncoded)
#define FINALMEMBERSIZE(s, member)
BOOL WINAPI WVTAsn1SpcPeImageDataDecode(DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo, DWORD *pcbStructInfo)
static BOOL WINAPI CRYPT_AsnEncodeBMPString(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, BYTE *pbEncoded, DWORD *pcbEncoded)
BOOL WINAPI WVTAsn1CatMemberInfoDecode(DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo, DWORD *pcbStructInfo)
static BOOL WINAPI CRYPT_AsnEncodeSPCDigest(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeSwapTag(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnEncodeAttributeTypeValue(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, BYTE *pbEncoded, DWORD *pcbEncoded)
BOOL WINAPI WVTAsn1SpcIndirectDataContentDecode(DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo, DWORD *pcbStructInfo)
static BOOL CRYPT_AsnDecodeSPCLinkInternal(DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo, DWORD *pcbStructInfo)
BOOL WINAPI WVTAsn1SpcLinkDecode(DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo, DWORD *pcbStructInfo)
BOOL WINAPI WVTAsn1CatMemberInfoEncode(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL CRYPT_AsnDecodeSequence(DWORD dwCertEncodingType, struct AsnDecodeSequenceItem items[], DWORD cItem, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo, DWORD *pcbStructInfo, void *startingPointer)
static BOOL WINAPI CRYPT_AsnDecodeBitsInternal(DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo, DWORD *pcbStructInfo)
static BOOL CRYPT_AsnEncodeInteger(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, BYTE *pbEncoded, DWORD *pcbEncoded)
BOOL WINAPI WVTAsn1CatNameValueEncode(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, BYTE *pbEncoded, DWORD *pcbEncoded)
BOOL(WINAPI * CryptDecodeObjectFunc)(DWORD, LPCSTR, const BYTE *, DWORD, DWORD, void *, DWORD *)
static BOOL WINAPI CRYPT_AsnEncodeInt(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, BYTE *pbEncoded, DWORD *pcbEncoded)
BOOL WINAPI WVTAsn1SpcFinancialCriteriaInfoDecode(DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo, DWORD *pcbStructInfo)
BOOL WINAPI WVTAsn1CatNameValueDecode(DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo, DWORD *pcbStructInfo)
static BOOL WINAPI CRYPT_AsnDecodeSPCDigest(DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo, DWORD *pcbStructInfo)
static BOOL WINAPI CRYPT_CopyEncodedBlob(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL WINAPI CRYPT_AsnDecodeOid(DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo, DWORD *pcbStructInfo)
#define ALIGN_DWORD_PTR(x)
BOOL WINAPI WVTAsn1SpcPeImageDataEncode(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, BYTE *pbEncoded, DWORD *pcbEncoded)
static BOOL CRYPT_AsnDecodeSequenceItems(DWORD dwCertEncodingType, struct AsnDecodeSequenceItem items[], DWORD cItem, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo, BYTE *nextData, DWORD *cbDecoded)
static BOOL WINAPI CRYPT_AsnEncodeConstructed(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, BYTE *pbEncoded, DWORD *pcbEncoded)
BOOL WINAPI WVTAsn1SpcSpOpusInfoDecode(DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo, DWORD *pcbStructInfo)
BOOL WINAPI WVTAsn1SpcSpOpusInfoEncode(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, BYTE *pbEncoded, DWORD *pcbEncoded)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
_Check_return_ _CRTIMP int __cdecl sscanf(_In_z_ const char *_Src, _In_z_ _Scanf_format_string_ const char *_Format,...)
#define memcpy(s1, s2, n)
#define sprintf(buf, format,...)
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
CryptEncodeObjectFunc encodeFunc
CryptEncodeObjectExFunc encodeFunc
CryptDecodeObjectFunc decodeFunc
const void * pvStructInfo
CryptEncodeObjectFunc encodeFunc
CRYPT_ALGORITHM_IDENTIFIER DigestAlgorithm
CRYPT_OBJID_BLOB Parameters
BOOL fFinancialInfoAvailable
_Must_inspect_result_ _In_ WDFQUEUE _In_opt_ WDFREQUEST _In_opt_ WDFFILEOBJECT _Inout_opt_ PWDF_REQUEST_PARAMETERS Parameters
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
DWORD WINAPI GetLastError(void)
struct _CRYPTOAPI_BLOB CRYPT_DER_BLOB
#define CRYPT_DECODE_NOCOPY_FLAG
#define X509_MULTI_BYTE_INTEGER
struct _CRYPTOAPI_BLOB CRYPT_DATA_BLOB
struct _CRYPT_ALGORITHM_IDENTIFIER CRYPT_ALGORITHM_IDENTIFIER
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
#define X509_ASN_ENCODING
_In_ DWORD dwCertEncodingType
#define CRYPT_DECODE_ALLOC_FLAG
struct _CRYPT_BIT_BLOB CRYPT_BIT_BLOB
struct _CRYPTOAPI_BLOB CRYPT_OBJID_BLOB
struct _CRYPT_ATTRIBUTE_TYPE_VALUE CRYPT_ATTRIBUTE_TYPE_VALUE
#define CRYPT_E_ASN1_ERROR
#define CRYPT_E_ASN1_CORRUPT
#define CRYPT_E_BAD_ENCODE
#define CRYPT_E_ASN1_LARGE
#define CRYPT_E_INVALID_IA5_STRING
#define CRYPT_E_ASN1_BADTAG
BYTE SPC_UUID[SPC_UUID_LENGTH]
struct SPC_LINK_ SPC_LINK
#define SPC_FILE_LINK_CHOICE
#define SPC_MONIKER_LINK_CHOICE
struct SPC_LINK_ * PSPC_LINK
#define SPC_URL_LINK_CHOICE
_Must_inspect_result_ _In_ ULONG Flags