42 if (!pCryptEncodeObjectEx)
44 win_skip(
"CryptEncodeObjectEx() is not available. Skipping the encodeFinancialCriteria tests\n");
74 if (!pCryptDecodeObjectEx)
76 win_skip(
"CryptDecodeObjectEx() is not available. Skipping the decodeSPCFinancialCriteria tests\n");
98static WCHAR url[] = {
'h',
't',
't',
'p',
':',
'/',
'/',
'w',
'i',
'n',
'e',
'h',
'q',
'.',
1040x80,0x11,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x69,0x6e,0x65,0x68,0x71,
1070xa2,0x14,0x80,0x12,0x00,0x68,0x00,0x74,0x00,0x74,0x00,0x70,0x00,0x3a,0x00,
1080x2f,0x00,0x2f,0x22,0x6f,0x57,0x5b };
1100xa1,0x14,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
1110x00,0x00,0x00,0x00,0x00,0x04,0x00 };
1140xa1,0x18,0x04,0x10,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,
1150xea,0xea,0xea,0xea,0xea,0x04,0x04,0xba,0xad,0xf0,0x0d };
124 if (!pCryptEncodeObjectEx)
126 win_skip(
"CryptEncodeObjectEx() is not available. Skipping the encodeSPCLink tests\n");
154 "Expected CRYPT_E_INVALID_IA5_STRING, got %08lx\n",
GetLastError());
158 ok(
size == 0,
"Expected size 0, got %ld\n",
size);
191 memset(&
link.Moniker.ClassId, 0xea,
sizeof(
link.Moniker.ClassId));
192 link.Moniker.SerializedData.pbData =
data;
193 link.Moniker.SerializedData.cbData =
sizeof(
data);
2060xa1,0x19,0x04,0x11,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,
2070xea,0xea,0xea,0xea,0xea,0xea,0x04,0x04,0xba,0xad,0xf0,0x0d };
216 if (!pCryptDecodeObjectEx)
218 win_skip(
"CryptDecodeObjectEx() is not available. Skipping the decodeSPCLink tests\n");
230 "Expected SPC_URL_LINK_CHOICE, got %ld\n",
link->dwLinkChoice);
242 "Expected SPC_URL_LINK_CHOICE, got %ld\n",
link->dwLinkChoice);
254 "Expected SPC_FILE_LINK_CHOICE, got %ld\n",
link->dwLinkChoice);
268 "Expected SPC_MONIKER_LINK_CHOICE, got %ld\n",
link->dwLinkChoice);
270 sizeof(emptyMoniker.
ClassId)),
"Unexpected value\n");
271 ok(
link->Moniker.SerializedData.cbData == 0,
272 "Expected no serialized data\n");
285 "Expected SPC_MONIKER_LINK_CHOICE, got %ld\n",
link->dwLinkChoice);
286 memset(&
id, 0xea,
sizeof(
id));
288 "Unexpected value\n");
289 ok(
link->Moniker.SerializedData.cbData ==
sizeof(
data),
290 "Unexpected data size %ld\n",
link->Moniker.SerializedData.cbData);
292 "Unexpected value\n");
302 "Expected CRYPT_E_BAD_ENCODE, got %08lx\n",
GetLastError());
3090x30,0x06,0xa0,0x04,0xa2,0x02,0x80,0x00 };
3110x30,0x0a,0x03,0x02,0x00,0x01,0xa0,0x04,0xa2,0x02,0x80,0x00 };
3130x30,0x1c,0x03,0x02,0x00,0x01,0xa0,0x16,0xa2,0x14,0x80,0x12,0x00,0x68,0x00,
3140x74,0x00,0x74,0x00,0x70,0x00,0x3a,0x00,0x2f,0x00,0x2f,0x22,0x6f,0x57,0x5b };
324 if (!pCryptEncodeObjectEx)
326 win_skip(
"CryptEncodeObjectEx() is not available. Skipping the encodeSPCPEImage tests\n");
337 "Unexpected value\n");
357 "Unexpected value\n");
368 skip(
"SPC_PE_IMAGE_DATA_STRUCT not supported\n");
376 "Unexpected value\n");
390 "Unexpected value\n");
416 "Unexpected value\n");
423 static const WCHAR emptyString[] = { 0 };
429 if (!pCryptDecodeObjectEx)
431 win_skip(
"CryptDecodeObjectEx() is not available. Skipping the decodeSPCPEImage tests\n");
442 ok(imageData->
Flags.
cbData == 0,
"Expected empty flags, got %ld\n",
444 ok(imageData->
pFile ==
NULL,
"Expected no file\n");
455 "Unexpected flags size %ld\n", imageData->
Flags.
cbData);
458 "Unexpected flags\n");
459 ok(imageData->
pFile ==
NULL,
"Expected no file\n");
469 ok(imageData->
Flags.
cbData == 0,
"Expected empty flags, got %ld\n",
472 if (imageData->
pFile)
475 "Expected SPC_FILE_LINK_CHOICE, got %ld\n",
478 "Unexpected file\n");
490 "Unexpected flags size %ld\n", imageData->
Flags.
cbData);
493 "Unexpected flags\n");
495 if (imageData->
pFile)
498 "Expected SPC_FILE_LINK_CHOICE, got %ld\n",
501 "Unexpected file\n");
513 "Unexpected flags size %ld\n", imageData->
Flags.
cbData);
516 "Unexpected flags\n");
518 if (imageData->
pFile)
521 "Expected SPC_FILE_LINK_CHOICE, got %ld\n",
524 "Unexpected file\n");
531 0x30,0x0c,0x30,0x02,0x06,0x00,0x30,0x06,0x30,0x02,0x06,0x00,0x04,0x00 };
533 0x30,0x20,0x30,0x02,0x06,0x00,0x30,0x1a,0x30,0x02,0x06,0x00,0x04,0x14,0x01,0x02,
534 0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,
537 0x30,0x27,0x30,0x02,0x06,0x00,0x30,0x21,0x30,0x09,0x06,0x05,0x2b,0x0e,0x03,0x02,
538 0x1a,0x05,0x00,0x04,0x14,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,
539 0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14 };
541 0x30,0x29,0x30,0x02,0x06,0x00,0x30,0x23,0x30,0x0b,0x06,0x05,0x2b,0x0e,0x03,0x02,
542 0x1a,0x74,0x65,0x73,0x74,0x04,0x14,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,
543 0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14 };
545 0x30,0x33,0x30,0x0c,0x06,0x0a,0x2b,0x06,0x01,0x04,0x01,0x82,0x37,0x02,0x01,0x0f,
546 0x30,0x23,0x30,0x0b,0x06,0x05,0x2b,0x0e,0x03,0x02,0x1a,0x74,0x65,0x73,0x74,0x04,
547 0x14,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,
548 0x10,0x11,0x12,0x13,0x14 };
550 0x30,0x35,0x30,0x0e,0x06,0x0a,0x2b,0x06,0x01,0x04,0x01,0x82,0x37,0x02,0x01,0x0f,
551 0x30,0x00,0x30,0x23,0x30,0x0b,0x06,0x05,0x2b,0x0e,0x03,0x02,0x1a,0x74,0x65,0x73,
552 0x74,0x04,0x14,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,
553 0x0e,0x0f,0x10,0x11,0x12,0x13,0x14 };
556 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,
557 0x11,0x12,0x13,0x14 };
570 if (!pCryptEncodeObjectEx)
572 win_skip(
"CryptEncodeObjectEx() is not available. Skipping the encodeSPCIndirectDataContent tests\n");
584 "Unexpected value\n");
598 "Unexpected value\n");
613 "Unexpected value\n");
625 "Unexpected size %ld\n",
size);
629 "Unexpected value\n");
640 "Unexpected size %ld\n",
size);
644 "Unexpected value\n");
658 "Unexpected value\n");
665 static const BYTE asn1Null[] = { 0x05,0x00 };
672 if (!pCryptDecodeObjectEx)
674 win_skip(
"CryptDecodeObjectEx() is not available. Skipping the decodeSPCIndirectDataContent tests\n");
688 "Expected empty data objid\n");
691 "Expected non-NULL digest algorithm objid\n");
694 "Expected empty digest algorithm objid\n");
696 "Expected no digest algorithm parameters\n");
708 "Unexpected digest size %ld\n", indirectData->
Digest.
cbData);
712 "Unexpected flags\n");
723 "Expected non-NULL digest algorithm objid\n");
726 "Expected szOID_OIWSEC_sha1, got \"%s\"\n",
729 "Unexpected digest algorithm parameters size %ld\n",
733 asn1Null,
sizeof(asn1Null)),
734 "Unexpected digest algorithm parameters\n");
736 "Unexpected digest size %ld\n", indirectData->
Digest.
cbData);
740 "Unexpected flags\n");
748 "Expected CRYPT_E_ASN1_EOD, got %08lx\n",
GetLastError());
756 "Expected CRYPT_E_ASN1_EOD, got %08lx\n",
GetLastError());
764 "Expected CRYPT_E_ASN1_EOD, got %08lx\n",
GetLastError());
770static WCHAR guidStr[] = {
'{',
'8',
'b',
'c',
'9',
'6',
'b',
'0',
'0',
'-',
771 '8',
'd',
'a',
'1',
'-',
'1',
'1',
'c',
'f',
'-',
'8',
'7',
'3',
'6',
'-',
'0',
'0',
772 'a',
'a',
'0',
'0',
'a',
'4',
'8',
'5',
'e',
'b',
'}',0 };
7760x30,0x0b,0x1e,0x06,0x00,0x66,0x00,0x6f,0x00,0x6f,0x02,0x01,0x00 };
7780x30,0x51,0x1e,0x4c,0x00,0x7b,0x00,0x38,0x00,0x62,0x00,0x63,0x00,0x39,0x00,0x36,
7790x00,0x62,0x00,0x30,0x00,0x30,0x00,0x2d,0x00,0x38,0x00,0x64,0x00,0x61,0x00,0x31,
7800x00,0x2d,0x00,0x31,0x00,0x31,0x00,0x63,0x00,0x66,0x00,0x2d,0x00,0x38,0x00,0x37,
7810x00,0x33,0x00,0x36,0x00,0x2d,0x00,0x30,0x00,0x30,0x00,0x61,0x00,0x61,0x00,0x30,
7820x00,0x30,0x00,0x61,0x00,0x34,0x00,0x38,0x00,0x35,0x00,0x65,0x00,0x62,0x00,0x7d,
794 if (!pCryptEncodeObjectEx)
796 win_skip(
"CryptEncodeObjectEx() is not available. Skipping the encodeCatMemberInfo tests\n");
807 "Unexpected value\n");
831 "Unexpected value\n");
843 if (!pCryptDecodeObjectEx)
845 win_skip(
"CryptDecodeObjectEx() is not available. Skipping the decodeCatMemberInfo tests\n");
856 ok(!
info->pwszSubjGuid || !
info->pwszSubjGuid[0],
857 "expected empty pwszSubjGuid\n");
858 ok(
info->dwCertVersion == 0,
"expected dwCertVersion == 0, got %ld\n",
859 info->dwCertVersion);
870 "unexpected pwszSubjGuid\n");
871 ok(
info->dwCertVersion == 0,
"expected dwCertVersion == 0, got %ld\n",
872 info->dwCertVersion);
883 "unexpected pwszSubjGuid\n");
884 ok(
info->dwCertVersion == 0,
"expected dwCertVersion == 0, got %ld\n",
885 info->dwCertVersion);
8910x30,0x07,0x1e,0x00,0x02,0x01,0x00,0x04,0x00 };
8930x30,0x0d,0x1e,0x06,0x00,0x66,0x00,0x6f,0x00,0x6f,0x02,0x01,0x00,0x04,0x00 };
8950x30,0x0a,0x1e,0x00,0x02,0x04,0xf0,0x0d,0xd0,0x0d,0x04,0x00 };
8970x30,0x0b,0x1e,0x00,0x02,0x01,0x00,0x04,0x04,0x01,0x02,0x03,0x04 };
903 static WCHAR foo[] = {
'f',
'o',
'o',0 };
917 "Unexpected value\n");
928 "Unexpected value\n");
932 value.fdwFlags = 0xf00dd00d;
940 "Unexpected value\n");
953 "Unexpected value\n");
973 ok(!
value->pwszTag || !
value->pwszTag[0],
"expected empty pwszTag\n");
974 ok(
value->fdwFlags == 0,
"expected fdwFlags == 0, got %08lx\n",
976 ok(
value->Value.cbData == 0,
"expected 0-length value, got %ld\n",
977 value->Value.cbData);
989 "unexpected pwszTag\n");
990 ok(
value->fdwFlags == 0,
"expected fdwFlags == 0, got %08lx\n",
992 ok(
value->Value.cbData == 0,
"expected 0-length value, got %ld\n",
993 value->Value.cbData);
1004 ok(!
value->pwszTag || !
value->pwszTag[0],
"expected empty pwszTag\n");
1005 ok(
value->fdwFlags == 0xf00dd00d,
1006 "expected fdwFlags == 0xf00dd00d, got %08lx\n",
value->fdwFlags);
1007 ok(
value->Value.cbData == 0,
"expected 0-length value, got %ld\n",
1008 value->Value.cbData);
1019 ok(!
value->pwszTag || !
value->pwszTag[0],
"expected empty pwszTag\n");
1020 ok(
value->fdwFlags == 0,
"expected fdwFlags == 0, got %08lx\n",
1022 ok(
value->Value.cbData ==
sizeof(
aVal),
"unexpected size %ld\n",
1023 value->Value.cbData);
1025 "unexpected value\n");
10320x30,0x16,0xa0,0x14,0x80,0x12,0x00,0x41,0x00,0x20,0x00,0x70,0x00,0x72,0x00,0x6f,
10330x00,0x67,0x00,0x72,0x00,0x61,0x00,0x6d };
1034static WCHAR winehq[] = {
'h',
't',
't',
'p',
':',
'/',
'/',
'w',
'i',
'n',
'e',
'h',
'q',
1035 '.',
'o',
'r',
'g',
'/',0 };
10370x30,0x16,0xa1,0x14,0x80,0x12,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x69,0x6e,
10380x65,0x68,0x71,0x2e,0x6f,0x72,0x67,0x2f };
10400x30,0x16,0xa2,0x14,0x80,0x12,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x69,0x6e,
10410x65,0x68,0x71,0x2e,0x6f,0x72,0x67,0x2f };
1070 "unexpected value\n");
1074 memset(&moreInfo, 0,
sizeof(moreInfo));
1075 info.pMoreInfo = &moreInfo;
1089 "unexpected size %ld\n",
size);
1091 "unexpected value\n");
1095 info.pPublisherInfo = &moreInfo;
1102 "unexpected size %ld\n",
size);
1104 "unexpected value\n");
1121 ok(!
info->pwszProgramName,
"expected NULL\n");
1122 ok(!
info->pMoreInfo,
"expected NULL\n");
1123 ok(!
info->pPublisherInfo,
"expected NULL\n");
1133 progName),
"unexpected program name\n");
1134 ok(!
info->pMoreInfo,
"expected NULL\n");
1135 ok(!
info->pPublisherInfo,
"expected NULL\n");
1144 ok(!
info->pwszProgramName,
"expected NULL\n");
1145 ok(
info->pMoreInfo !=
NULL,
"expected a value for pMoreInfo\n");
1146 if (
info->pMoreInfo)
1149 "unexpected link choice %ld\n",
info->pMoreInfo->dwLinkChoice);
1151 "unexpected link value\n");
1153 ok(!
info->pPublisherInfo,
"expected NULL\n");
1162 ok(!
info->pwszProgramName,
"expected NULL\n");
1163 ok(!
info->pMoreInfo,
"expected NULL\n");
1165 "expected a value for pPublisherInfo\n");
1166 if (
info->pPublisherInfo)
1169 "unexpected link choice %ld\n",
1170 info->pPublisherInfo->dwLinkChoice);
1172 "unexpected link value\n");
1181 pCryptDecodeObjectEx = (
void*)
GetProcAddress(hCrypt32,
"CryptDecodeObjectEx");
1182 pCryptEncodeObjectEx = (
void*)
GetProcAddress(hCrypt32,
"CryptEncodeObjectEx");
#define GetProcAddress(x, y)
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryA(LPCSTR lpLibFileName)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
_ACRTIMP int __cdecl strcmp(const char *, const char *)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLenum GLuint GLenum GLsizei const GLchar * buf
HLOCAL NTAPI LocalFree(HLOCAL hMem)
static const BYTE onlyEmptyFilePEImage[]
static const BYTE spcidcWithEverything[]
static const BYTE catNameValueWithFlags[]
static void test_decodeSPCIndirectDataContent(void)
static const BYTE emptyCatMemberInfo[]
static void test_encodeSPCLink(void)
static void test_decodeSpOpusInfo(void)
static void test_encodeSPCPEImage(void)
static const BYTE badMonikerSPCLink[]
static const BYTE emptyCatNameValue[]
static const BYTE emptyIndirectData[]
static const BYTE spOpusInfoWithProgramName[]
static void test_decodeSPCFinancialCriteria(void)
static void test_encodeCatNameValue(void)
static void test_decodeSPCLink(void)
static const BYTE flagsAndEmptyFilePEImage[]
static const BYTE catNameValueWithTag[]
static const BYTE catMemberInfoWithGuid[]
static const BYTE spOpusInfoWithMoreInfo[]
static void test_encodeSpOpusInfo(void)
static const BYTE fileSPCLink[]
static const BYTE PCRYPT_DECODE_PARA
static void test_decodeSPCPEImage(void)
static void test_decodeCatMemberInfo(void)
static const BYTE spcidcWithEverythingExceptDataValue[]
static void test_encodeSPCFinancialCriteria(void)
static const BYTE catMemberInfoWithSillyGuid[]
static const BYTE void DWORD *static const void PCRYPT_ENCODE_PARA
static const BYTE emptyURLSPCLink[]
static const BYTE flagsAndFilePEImage[]
static const WCHAR progName[]
static const BYTE trueCriteria[]
static const BYTE monikerSPCLink[]
static const BYTE spcidcWithDigestAndAlgorithm[]
static const BYTE spOpusInfoWithPublisherInfo[]
static void test_encodeCatMemberInfo(void)
static const BYTE spcidcWithOnlyDigest[]
static const BYTE emptySequence[]
static const BYTE void DWORD *static const void void DWORD *static const BYTE falseCriteria[]
static const BYTE onlyFlagsPEImage[]
static void test_encodeSPCIndirectDataContent(void)
static const BYTE emptyMonikerSPCLink[]
static const BYTE spcidcWithDigestAndAlgorithmParams[]
static const BYTE catNameValueWithValue[]
static void test_decodeCatNameValue(void)
static const WCHAR nihongoURL[]
static const BYTE urlSPCLink[]
CRYPT_OBJID_BLOB Parameters
BOOL fFinancialInfoAvailable
CRYPT_ALGORITHM_IDENTIFIER DigestAlgorithm
CRYPT_ATTRIBUTE_TYPE_VALUE Data
DWORD WINAPI GetLastError(void)
#define X509_ASN_ENCODING
#define CRYPT_DECODE_ALLOC_FLAG
#define szOID_OIWSEC_sha1
#define CRYPT_ENCODE_ALLOC_FLAG
#define CRYPT_E_BAD_ENCODE
#define CRYPT_E_INVALID_IA5_STRING
#define SPC_INDIRECT_DATA_CONTENT_STRUCT
BYTE SPC_UUID[SPC_UUID_LENGTH]
#define SPC_PE_IMAGE_DATA_OBJID
#define SPC_PE_IMAGE_DATA_STRUCT
#define SPC_SP_OPUS_INFO_STRUCT
#define SPC_FILE_LINK_CHOICE
#define CAT_MEMBERINFO_STRUCT
#define SPC_MONIKER_LINK_CHOICE
#define SPC_FINANCIAL_CRITERIA_STRUCT
#define CAT_NAMEVALUE_STRUCT
#define SPC_URL_LINK_CHOICE