40#define CATADMIN_MAGIC 0x43415441
41#define CRYPTCAT_MAGIC 0x43415443
42#define CATINFO_MAGIC 0x43415449
76 if (!(ci =
malloc(
sizeof(*ci))))
128 {
'\\',
'c',
'a',
't',
'r',
'o',
'o',
't',0};
130 {
'%',
's',
'\\',
'{',
'%',
'0',
'8',
'x',
'-',
'%',
'0',
'4',
'x',
'-',
'%',
'0',
131 '4',
'x',
'-',
'%',
'0',
'2',
'x',
'%',
'0',
'2',
'x',
'-',
'%',
'0',
'2',
'x',
132 '%',
'0',
'2',
'x',
'%',
'0',
'2',
'x',
'%',
'0',
'2',
'x',
'%',
'0',
'2',
'x',
133 '%',
'0',
'2',
'x',
'}',0};
134 static const GUID defsys =
135 {0x127d0a1d,0x4ef2,0x11d1,{0x86,0x08,0x00,0xc0,0x4f,0xc2,0x95,0xee}};
152 FIXME(
"strong policy parameter is unimplemented\n");
188 if (!sys) sys = &defsys;
190 sys->Data3, sys->Data4[0], sys->Data4[1], sys->Data4[2],
191 sys->Data4[3], sys->Data4[4], sys->Data4[5], sys->Data4[6],
221 FIXME(
"NULL basename not handled\n");
248 if (!(ci =
malloc(
sizeof(*ci))))
314 if (sig_pos <
offset)
goto done;
325 static const BYTE pad[7];
367 FIXME(
"unsupported algorithm %x\n",
alg);
371 if (*pcbHash < hashLength)
373 *pcbHash = hashLength;
378 *pcbHash = hashLength;
471 static const WCHAR globW[] = {
'\\',
'*',
'.',
'c',
'a',
't',0};
480 TRACE(
"%p %p %ld %lx %p\n", hCatAdmin, pbHash, cbHash,
dwFlags, phPrevCatInfo);
487 if (phPrevCatInfo) prev = *phPrevCatInfo;
548 if (
member->pIndirectData->Digest.cbData != cbHash)
550 WARN(
"amount of hash bytes differs: %lu/%lu\n",
member->pIndirectData->Digest.cbData, cbHash);
553 if (!
memcmp(
member->pIndirectData->Digest.pbData, pbHash, cbHash))
678 if (pwszCatalogFile && pwszCatalogFile[0] != 0 &&
679 !
wcschr(pwszCatalogFile,
'\\') && !
wcschr(pwszCatalogFile,
'/') &&
680 !
wcschr(pwszCatalogFile,
':'))
734 TRACE(
"(%p)\n", hCatalog);
827 FIXME(
"%p, %p\n", hCatalog, prev);
848 TRACE(
"%p, %p\n", hCatalog, prev);
864 member->cbStruct =
sizeof(*member);
869 member->fdwMemberFlags = 0;
871 member->dwCertVersion =
cc->inner->dwVersion;
873 else member->dwReserved++;
875 if (
member->dwReserved >=
cc->inner->cCTLEntry)
882 entry = &
cc->inner->rgCTLEntry[
cc->inner->cCTLEntry -
member->dwReserved - 1];
884 member->sEncodedIndirectData.cbData =
member->sEncodedMemberInfo.cbData = 0;
885 member->sEncodedIndirectData.pbData =
member->sEncodedMemberInfo.pbData =
NULL;
889 for (
i = 0;
i <
entry->cAttribute;
i++)
893 if (
attr->cValue != 1)
895 ERR(
"Can't handle attr->cValue of %lu\n",
attr->cValue);
903 member->sEncodedMemberInfo.cbData =
attr->rgValue->cbData;
904 member->sEncodedMemberInfo.pbData =
attr->rgValue->pbData;
918 member->dwCertVersion =
mi->dwCertVersion;
933 member->sEncodedIndirectData.cbData =
attr->rgValue->cbData;
934 member->sEncodedIndirectData.pbData =
attr->rgValue->pbData;
947 FIXME(
"unhandled object id \"%s\"\n",
attr->pszObjId);
950 if (!
member->sEncodedMemberInfo.cbData || !
member->sEncodedIndirectData.cbData)
952 ERR(
"Corrupted catalog entry?\n");
959 if (!
member->pwszReferenceTag)
965 for (
i = 0;
i <
member->pIndirectData->Digest.cbData;
i++)
969 sub =
member->pIndirectData->Digest.pbData[
i] >> 4;
970 member->pwszReferenceTag[
i * 2] = (sub < 10 ?
'0' + sub :
'A' + sub - 10);
971 sub =
member->pIndirectData->Digest.pbData[
i] & 0xf;
972 member->pwszReferenceTag[
i * 2 + 1] = (sub < 10 ?
'0' + sub :
'A' + sub - 10);
974 member->pwszReferenceTag[
i * 2] = 0;
1025 struct catinfo *ci = hcatinfo;
1045 FIXME(
"catalog %p, member %p, name %s, flags %#lx, size %lu, data %p, stub!\n",
1058 FIXME(
"catalog %p, name %s, flags %#lx, size %lu, data %p, stub!\n",
1071 FIXME(
"catalog %p, filename %s, member %s, subject %s, version %lu, size %lu, data %p, stub!\n",
1083 FIXME(
"catalog %p, stub!\n", catalog);
1101 TRACE(
"filename %s, flags %#lx, provider %#Ix, version %#lx, type %#lx\n",
1154 cc->encoding = dwEncodingType;
1166 for (
i = 0;
i <
cc->attr_count;
i++)
1183 p = (
BYTE *)(
cc->attr +
cc->attr_count);
1184 for (
i = 0;
i <
cc->attr_count;
i++)
1225 FIXME(
"(%p %p %p) stub\n", pSubjectInfo, pcbIndirectData, pIndirectData);
1236 FIXME(
"(%p) stub\n", pCDF);
1248 FIXME(
"(%p %p %p) stub\n", pCDF, pPrevAttr, pfnParseError);
1261 FIXME(
"(%p %s %p %p %d %p) stub\n", pCDF,
debugstr_w(pwszPrevCDFTag), pfnParseError,
1280 BYTE *pbSignedDataMsg)
1286 TRACE(
"(%p %p %ld %p %p)\n", pSubjectInfo, pdwEncodingType, dwIndex,
1287 pcbSignedDataMsg, pbSignedDataMsg);
1299 if (!pbSignedDataMsg)
1307 switch (
cert.wCertificateType)
1311 *pcbSignedDataMsg =
cert.dwLength;
1314 WARN(
"unknown certificate type %d\n",
cert.wCertificateType);
1336 if (*pcbSignedDataMsg < pCert->
dwLength)
1338 *pcbSignedDataMsg = pCert->
dwLength;
1345 *pcbSignedDataMsg = pCert->
dwLength;
1355 WARN(
"don't know what to do for encoding type %d\n",
1357 *pdwEncodingType = 0;
1396 memcpy(
cert->bCertificate, pbSignedDataMsg, cbSignedDataMsg);
1406#define cfhead_Signature (0x00)
1407#define cfhead_CabinetSize (0x08)
1408#define cfhead_MinorVersion (0x18)
1409#define cfhead_MajorVersion (0x19)
1410#define cfhead_Flags (0x1E)
1411#define cfhead_SIZEOF (0x24)
1412#define cfheadext_HeaderReserved (0x00)
1413#define cfheadext_SIZEOF (0x04)
1414#define cfsigninfo_CertOffset (0x04)
1415#define cfsigninfo_CertSize (0x08)
1416#define cfsigninfo_SIZEOF (0x0C)
1419#define cfheadRESERVE_PRESENT (0x0004)
1422#define EndGetI32(a) ((((a)[3])<<24)|(((a)[2])<<16)|(((a)[1])<<8)|((a)[0]))
1423#define EndGetI16(a) ((((a)[1])<<8)|((a)[0]))
1439 BYTE *pbSignedDataMsg)
1442 LONG base_offset, cabsize;
1445 DWORD cert_offset, cert_size, dwRead;
1447 TRACE(
"(%p %p %ld %p %p)\n", pSubjectInfo, pdwEncodingType, dwIndex,
1448 pcbSignedDataMsg, pbSignedDataMsg);
1455 TRACE(
"seek error\n");
1460 if ((cabsize == -1) || (base_offset == -1) ||
1463 TRACE(
"seek error\n");
1471 TRACE(
"reading header failed\n");
1478 WARN(
"cabinet signature not present\n");
1488 WARN(
"cabinet format version > 1.3\n");
1497 TRACE(
"no header present, not signed\n");
1504 ERR(
"bunk reserve-sizes?\n");
1511 TRACE(
"no header_resv, not signed\n");
1516 TRACE(
"header_resv too small, not signed\n");
1520 if (header_resv > 60000)
1522 WARN(
"WARNING; header reserved space > 60000\n");
1528 ERR(
"couldn't read reserve\n");
1533 TRACE(
"cert_offset: %ld\n", cert_offset);
1535 TRACE(
"cert_size: %ld\n", cert_size);
1538 if (cert_offset > cabsize || cert_size > cabsize ||
1539 cert_offset + cert_size > cabsize)
1541 WARN(
"offset beyond file, not attempting to read\n");
1546 if (!pbSignedDataMsg)
1548 *pcbSignedDataMsg = cert_size;
1551 if (*pcbSignedDataMsg < cert_size)
1553 *pcbSignedDataMsg = cert_size;
1559 ERR(
"couldn't seek to cert location\n");
1562 if (!
ReadFile(pSubjectInfo->
hFile, pbSignedDataMsg, cert_size, &dwRead,
1563 NULL) || dwRead != cert_size)
1565 ERR(
"couldn't read cert\n");
1581 BYTE *pbSignedDataMsg)
1585 TRACE(
"(%p %p %ld %p %p)\n", pSubjectInfo, pdwEncodingType, dwIndex,
1586 pcbSignedDataMsg, pbSignedDataMsg);
1588 if (!pbSignedDataMsg)
1597 if (*pcbSignedDataMsg <
len)
1599 *pcbSignedDataMsg =
len;
1606 pcbSignedDataMsg,
NULL);
1616 0x00,0xC0,0x4F,0xC2,0x95,0xEE } };
1618 0x00,0xC0,0x4F,0xC2,0x95,0xEE } };
1620 0x00,0xC0,0x4F,0xC2,0x95,0xEE }};
1630 TRACE(
"(%p %p %ld %p %p)\n", pSubjectInfo, pdwEncodingType, dwIndex,
1631 pcbSignedDataMsg, pbSignedDataMsg);
1641 dwIndex, pcbSignedDataMsg, pbSignedDataMsg);
1644 dwIndex, pcbSignedDataMsg, pbSignedDataMsg);
1647 dwIndex, pcbSignedDataMsg, pbSignedDataMsg);
1650 FIXME(
"unimplemented for subject type %s\n",
1665 TRACE(
"(%p %ld %p %ld %p)\n", pSubjectInfo, pdwEncodingType, pdwIndex,
1666 cbSignedDataMsg, pbSignedDataMsg);
1675 pdwIndex, cbSignedDataMsg, pbSignedDataMsg);
1677 FIXME(
"unimplemented for subject type %s\n",
1689 FIXME(
"(%p %ld) stub\n", pSubjectInfo, dwIndex);
1700 FIXME(
"(%p %p) stub\n", pSubjectInfo, pIndirectData);
WINBASEAPI _Check_return_ _Out_ AppPolicyProcessTerminationMethod * policy
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define BCRYPT_SHA256_ALGORITHM
#define BCRYPT_SHA1_ALGORITHM
BOOL WINAPI CryptDecodeObject(DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo, DWORD *pcbStructInfo)
PIMAGE_NT_HEADERS WINAPI ImageNtHeader(_In_ PVOID)
#define ERROR_INSUFFICIENT_BUFFER
BOOL WINAPI CryptCreateHash(HCRYPTPROV hProv, ALG_ID Algid, HCRYPTKEY hKey, DWORD dwFlags, HCRYPTHASH *phHash)
BOOL WINAPI CryptGetHashParam(HCRYPTHASH hHash, DWORD dwParam, BYTE *pbData, DWORD *pdwDataLen, DWORD dwFlags)
BOOL WINAPI CryptDestroyHash(HCRYPTHASH hHash)
BOOL WINAPI CryptReleaseContext(HCRYPTPROV hProv, DWORD dwFlags)
BOOL WINAPI CryptHashData(HCRYPTHASH hHash, const BYTE *pbData, DWORD dwDataLen, DWORD dwFlags)
BOOL WINAPI CryptAcquireContextW(HCRYPTPROV *phProv, LPCWSTR pszContainer, LPCWSTR pszProvider, DWORD dwProvType, DWORD dwFlags)
HCRYPTMSG WINAPI CryptMsgOpenToDecode(DWORD dwMsgEncodingType, DWORD dwFlags, DWORD dwMsgType, HCRYPTPROV_LEGACY hCryptProv, PCERT_INFO pRecipientInfo, PCMSG_STREAM_INFO pStreamInfo)
BOOL WINAPI CryptMsgGetParam(HCRYPTMSG hCryptMsg, DWORD dwParamType, DWORD dwIndex, void *pvData, DWORD *pcbData)
BOOL WINAPI CryptMsgUpdate(HCRYPTMSG hCryptMsg, const BYTE *pbData, DWORD cbData, BOOL fFinal)
BOOL WINAPI CryptMsgClose(HCRYPTMSG hCryptMsg)
BOOL WINAPI CryptSIPRetrieveSubjectGuid(LPCWSTR FileName, HANDLE hFileIn, GUID *pgSubject)
#define ERROR_CALL_NOT_IMPLEMENTED
#define ERROR_INVALID_PARAMETER
#define INVALID_SET_FILE_POINTER
#define ReadFile(a, b, c, d, e)
#define INVALID_HANDLE_VALUE
#define CreateFileMappingW(a, b, c, d, e, f)
static const WCHAR version[]
static DWORD DWORD * dwLength
BOOL WINAPI ImageGetCertificateData(HANDLE handle, DWORD Index, LPWIN_CERTIFICATE Certificate, PDWORD RequiredLength)
BOOL WINAPI ImageAddCertificate(HANDLE FileHandle, LPWIN_CERTIFICATE Certificate, PDWORD Index)
BOOL WINAPI ImageGetCertificateHeader(HANDLE handle, DWORD index, LPWIN_CERTIFICATE pCert)
BOOL WINAPI CopyFileW(IN LPCWSTR lpExistingFileName, IN LPCWSTR lpNewFileName, IN BOOL bFailIfExists)
BOOL WINAPI DeleteFileW(IN LPCWSTR lpFileName)
BOOL WINAPI CreateDirectoryW(IN LPCWSTR lpPathName, IN LPSECURITY_ATTRIBUTES lpSecurityAttributes)
BOOL WINAPI SetFileAttributesW(LPCWSTR lpFileName, DWORD dwFileAttributes)
DWORD WINAPI GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh)
HANDLE WINAPI FindFirstFileW(IN LPCWSTR lpFileName, OUT LPWIN32_FIND_DATAW lpFindFileData)
BOOL WINAPI FindClose(HANDLE hFindFile)
BOOL WINAPI FindNextFileW(IN HANDLE hFindFile, OUT LPWIN32_FIND_DATAW lpFindFileData)
UINT WINAPI GetSystemDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
static const WCHAR slashW[]
_ACRTIMP int __cdecl wcscmp(const wchar_t *, const wchar_t *)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
_ACRTIMP int __cdecl strcmp(const char *, const char *)
CRYPTCATATTRIBUTE *WINAPI CryptCATGetAttrInfo(HANDLE hCatalog, CRYPTCATMEMBER *member, LPWSTR tag)
CRYPTCATATTRIBUTE *WINAPI CryptCATPutCatAttrInfo(HANDLE catalog, WCHAR *name, DWORD flags, DWORD size, BYTE *data)
BOOL WINAPI CryptSIPPutSignedDataMsg(SIP_SUBJECTINFO *pSubjectInfo, DWORD pdwEncodingType, DWORD *pdwIndex, DWORD cbSignedDataMsg, BYTE *pbSignedDataMsg)
BOOL WINAPI CryptCATAdminReleaseContext(HCATADMIN hCatAdmin, DWORD dwFlags)
CRYPTCATCDF *WINAPI CryptCATCDFOpen(LPWSTR pwszFilePath, PFN_CDF_PARSE_ERROR_CALLBACK pfnParseError)
static HCATINFO create_catinfo(const WCHAR *filename)
CRYPTCATATTRIBUTE *WINAPI CryptCATCDFEnumCatAttributes(CRYPTCATCDF *pCDF, CRYPTCATATTRIBUTE *pPrevAttr, PFN_CDF_PARSE_ERROR_CALLBACK pfnParseError)
struct _CAB_SIGNINFO * PCAB_SIGNINFO
BOOL WINAPI CryptCATClose(HANDLE hCatalog)
CRYPTCATATTRIBUTE *WINAPI CryptCATGetCatAttrInfo(HANDLE hCatalog, LPWSTR tag)
#define cfheadext_HeaderReserved
CRYPTCATMEMBER *WINAPI CryptCATEnumerateMember(HANDLE hCatalog, CRYPTCATMEMBER *prev)
BOOL WINAPI CryptCATCatalogInfoFromContext(HCATINFO hcatinfo, CATALOG_INFO *info, DWORD flags)
#define cfheadRESERVE_PRESENT
#define cfsigninfo_CertSize
BOOL WINAPI CryptCATAdminCalcHashFromFileHandle(HANDLE hFile, DWORD *pcbHash, BYTE *pbHash, DWORD dwFlags)
static CTL_INFO * decode_inner_content(HANDLE hmsg, DWORD encoding, DWORD *len)
static const GUID unknown
#define cfhead_MajorVersion
#define cfsigninfo_CertOffset
CRYPTCATATTRIBUTE *WINAPI CryptCATPutAttrInfo(HANDLE catalog, CRYPTCATMEMBER *member, WCHAR *name, DWORD flags, DWORD size, BYTE *data)
BOOL WINAPI CryptCATCDFClose(CRYPTCATCDF *pCDF)
BOOL WINAPI CryptCATAdminAcquireContext2(HCATADMIN *catAdmin, const GUID *sys, const WCHAR *algorithm, const CERT_STRONG_SIGN_PARA *policy, DWORD dwFlags)
static BOOL WINTRUST_GetSignedMsgFromCabFile(SIP_SUBJECTINFO *pSubjectInfo, DWORD *pdwEncodingType, DWORD dwIndex, DWORD *pcbSignedDataMsg, BYTE *pbSignedDataMsg)
LPWSTR WINAPI CryptCATCDFEnumMembersByCDFTagEx(CRYPTCATCDF *pCDF, LPWSTR pwszPrevCDFTag, PFN_CDF_PARSE_ERROR_CALLBACK pfnParseError, CRYPTCATMEMBER **ppMember, BOOL fContinueOnError, LPVOID pvReserved)
BOOL WINAPI CryptCATPersistStore(HANDLE catalog)
BOOL WINAPI CryptSIPRemoveSignedDataMsg(SIP_SUBJECTINFO *pSubjectInfo, DWORD dwIndex)
BOOL WINAPI CryptCATAdminCalcHashFromFileHandle2(HCATADMIN catAdmin, HANDLE hFile, DWORD *pcbHash, BYTE *pbHash, DWORD dwFlags)
#define cfhead_MinorVersion
HCATINFO WINAPI CryptCATAdminAddCatalog(HCATADMIN catAdmin, PWSTR catalogFile, PWSTR selectBaseName, DWORD flags)
BOOL WINAPI CryptCATAdminReleaseCatalogContext(HCATADMIN hCatAdmin, HCATINFO hCatInfo, DWORD dwFlags)
BOOL WINAPI CryptCATAdminRemoveCatalog(HCATADMIN hCatAdmin, LPCWSTR pwszCatalogFile, DWORD dwFlags)
static BOOL pe_image_hash(HANDLE file, HCRYPTHASH hash)
CRYPTCATMEMBER *WINAPI CryptCATPutMemberInfo(HANDLE catalog, WCHAR *filename, WCHAR *member, GUID *subject, DWORD version, DWORD size, BYTE *data)
BOOL WINAPI CryptSIPGetSignedDataMsg(SIP_SUBJECTINFO *pSubjectInfo, DWORD *pdwEncodingType, DWORD dwIndex, DWORD *pcbSignedDataMsg, BYTE *pbSignedDataMsg)
static BOOL catadmin_calc_hash_from_filehandle(HCATADMIN catAdmin, HANDLE hFile, DWORD *pcbHash, BYTE *pbHash, DWORD dwFlags)
BOOL WINAPI CryptCATAdminResolveCatalogPath(HCATADMIN hcatadmin, WCHAR *catalog_file, CATALOG_INFO *info, DWORD flags)
CRYPTCATATTRIBUTE *WINAPI CryptCATEnumerateCatAttr(HANDLE hCatalog, CRYPTCATATTRIBUTE *prev)
BOOL WINAPI CryptSIPCreateIndirectData(SIP_SUBJECTINFO *pSubjectInfo, DWORD *pcbIndirectData, SIP_INDIRECT_DATA *pIndirectData)
BOOL WINAPI CryptCATAdminAcquireContext(HCATADMIN *catAdmin, const GUID *sys, DWORD dwFlags)
static BOOL WINTRUST_GetSignedMsgFromPEFile(SIP_SUBJECTINFO *pSubjectInfo, DWORD *pdwEncodingType, DWORD dwIndex, DWORD *pcbSignedDataMsg, BYTE *pbSignedDataMsg)
#define cfsigninfo_SIZEOF
BOOL WINAPI CryptSIPVerifyIndirectData(SIP_SUBJECTINFO *pSubjectInfo, SIP_INDIRECT_DATA *pIndirectData)
HCATINFO WINAPI CryptCATAdminEnumCatalogFromHash(HCATADMIN hCatAdmin, BYTE *pbHash, DWORD cbHash, DWORD dwFlags, HCATINFO *phPrevCatInfo)
CRYPTCATATTRIBUTE *WINAPI CryptCATEnumerateAttr(HANDLE hCatalog, CRYPTCATMEMBER *member, CRYPTCATATTRIBUTE *prev)
CRYPTCATMEMBER *WINAPI CryptCATGetMemberInfo(HANDLE hCatalog, LPWSTR tag)
HANDLE WINAPI CryptCATOpen(WCHAR *filename, DWORD flags, HCRYPTPROV hProv, DWORD dwPublicVersion, DWORD dwEncodingType)
static BOOL WINTRUST_PutSignedMsgToPEFile(SIP_SUBJECTINFO *pSubjectInfo, DWORD pdwEncodingType, DWORD *pdwIndex, DWORD cbSignedDataMsg, BYTE *pbSignedDataMsg)
static const GUID catGUID
static BOOL WINTRUST_GetSignedMsgFromCatFile(SIP_SUBJECTINFO *pSubjectInfo, DWORD *pdwEncodingType, DWORD dwIndex, DWORD *pcbSignedDataMsg, BYTE *pbSignedDataMsg)
static const GUID cabGUID
struct _CAB_SIGNINFO CAB_SIGNINFO
struct _IMAGE_DATA_DIRECTORY IMAGE_DATA_DIRECTORY
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLenum GLuint GLenum GLsizei const GLchar * buf
GLenum GLenum GLenum GLenum mapping
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
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
#define memcpy(s1, s2, n)
static LPCWSTR LPVOID pvReserved
static CHAR catroot[MAX_PATH]
#define CRYPTCAT_OPEN_CREATENEW
void(WINAPI * PFN_CDF_PARSE_ERROR_CALLBACK)(DWORD, DWORD, WCHAR *)
#define CRYPTCAT_OPEN_EXISTING
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
#define FILE_ATTRIBUTE_SYSTEM
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define IMAGE_NT_OPTIONAL_HDR32_MAGIC
#define IMAGE_NT_OPTIONAL_HDR64_MAGIC
#define IMAGE_DIRECTORY_ENTRY_SECURITY
static int sum(int x_, int y_)
static unsigned int file_size
const WCHAR * providerName
#define FIELD_OFFSET(t, f)
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
DWORD WINAPI GetLastError(void)
#define INVALID_FILE_SIZE
#define CRYPT_VERIFYCONTEXT
#define CMSG_ATTR_CERT_COUNT_PARAM
#define X509_ASN_ENCODING
#define CMSG_INNER_CONTENT_TYPE_PARAM
static const WCHAR MS_DEF_PROV_W[]
#define PKCS_7_ASN_ENCODING
#define CMSG_ATTR_CERT_PARAM
static const WCHAR MS_ENH_RSA_AES_PROV_W[]
#define CMSG_CONTENT_PARAM
NTSYSAPI NTSTATUS WINAPI RtlGUIDFromString(PUNICODE_STRING, GUID *)
#define CRYPT_E_NOT_FOUND
#define CRYPT_E_ATTRIBUTES_MISSING
#define IMAGE_FILE_SECURITY_DIRECTORY
#define WIN_CERT_TYPE_X509
#define WIN_CERT_REVISION_2_0
#define CAT_MEMBERINFO_OBJID
#define WIN_CERT_TYPE_PKCS_SIGNED_DATA
#define SPC_INDIRECT_DATA_OBJID
static const WCHAR providerName[]
static const WCHAR providerType[]