mirror of
git://source.winehq.org/git/wine.git
synced 2024-07-21 17:14:10 +00:00
dssenh/tests: Get rid of workarounds for old Windows versions.
Signed-off-by: Hans Leidekker <hans@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
82c64b9c95
commit
2e11036feb
|
@ -126,11 +126,6 @@ static void test_acquire_context(void)
|
||||||
SetLastError(0xdeadbeef);
|
SetLastError(0xdeadbeef);
|
||||||
result = CryptAcquireContextA(
|
result = CryptAcquireContextA(
|
||||||
&hProv, NULL, MS_ENH_DSS_DH_PROV_A, PROV_DSS_DH, CRYPT_VERIFYCONTEXT);
|
&hProv, NULL, MS_ENH_DSS_DH_PROV_A, PROV_DSS_DH, CRYPT_VERIFYCONTEXT);
|
||||||
if(!result && GetLastError() == NTE_KEYSET_NOT_DEF)
|
|
||||||
{
|
|
||||||
win_skip("DSSENH and Schannel provider is broken on WinNT4\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
ok(result, "Expected no errors.\n");
|
ok(result, "Expected no errors.\n");
|
||||||
|
|
||||||
result = CryptReleaseContext(hProv, 0);
|
result = CryptReleaseContext(hProv, 0);
|
||||||
|
@ -189,38 +184,36 @@ struct keylength_test {
|
||||||
DWORD flags;
|
DWORD flags;
|
||||||
BOOL expectedResult;
|
BOOL expectedResult;
|
||||||
DWORD expectedError;
|
DWORD expectedError;
|
||||||
BOOL brokenResult;
|
|
||||||
DWORD brokenError;
|
DWORD brokenError;
|
||||||
DWORD altError;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct keylength_test baseDSS_keylength[] = {
|
static const struct keylength_test baseDSS_keylength[] = {
|
||||||
/* AT_KEYEXCHANGE is not supported by the base DSS provider */
|
/* AT_KEYEXCHANGE is not supported by the base DSS provider */
|
||||||
{AT_KEYEXCHANGE, 448 << 16, FALSE, NTE_BAD_ALGID, FALSE, NTE_BAD_FLAGS}, /* WinNT4 and Win2k */
|
{AT_KEYEXCHANGE, 448 << 16, FALSE, NTE_BAD_ALGID},
|
||||||
{AT_KEYEXCHANGE, 512 << 16, FALSE, NTE_BAD_ALGID, TRUE}, /* success on WinNT4 */
|
{AT_KEYEXCHANGE, 512 << 16, FALSE, NTE_BAD_ALGID},
|
||||||
{AT_KEYEXCHANGE, 1024 << 16, FALSE, NTE_BAD_ALGID, TRUE}, /* success on WinNT4 */
|
{AT_KEYEXCHANGE, 1024 << 16, FALSE, NTE_BAD_ALGID},
|
||||||
{AT_KEYEXCHANGE, 1088 << 16, FALSE, NTE_BAD_ALGID, FALSE, NTE_BAD_FLAGS},/* WinNT4 and Win2k */
|
{AT_KEYEXCHANGE, 1088 << 16, FALSE, NTE_BAD_ALGID},
|
||||||
/* min 512 max 1024 increment by 64 */
|
/* min 512 max 1024 increment by 64 */
|
||||||
{AT_SIGNATURE, 448 << 16, FALSE, NTE_BAD_FLAGS},
|
{AT_SIGNATURE, 448 << 16, FALSE, NTE_BAD_FLAGS},
|
||||||
{AT_SIGNATURE, 512 << 16, TRUE},
|
{AT_SIGNATURE, 512 << 16, TRUE},
|
||||||
{AT_SIGNATURE, 513 << 16, FALSE, NTE_FAIL, FALSE, NTE_BAD_FLAGS, STATUS_INVALID_PARAMETER}, /* WinNT4 and Win2k */
|
{AT_SIGNATURE, 513 << 16, FALSE, STATUS_INVALID_PARAMETER, NTE_FAIL},
|
||||||
{AT_SIGNATURE, 768 << 16, TRUE},
|
{AT_SIGNATURE, 768 << 16, TRUE},
|
||||||
{AT_SIGNATURE, 1024 << 16, TRUE},
|
{AT_SIGNATURE, 1024 << 16, TRUE},
|
||||||
{AT_SIGNATURE, 1088 << 16, FALSE, NTE_BAD_FLAGS},
|
{AT_SIGNATURE, 1088 << 16, FALSE, NTE_BAD_FLAGS},
|
||||||
/* CALG_DH_EPHEM is not supported by the base DSS provider */
|
/* CALG_DH_EPHEM is not supported by the base DSS provider */
|
||||||
{CALG_DH_EPHEM, 448 << 16, FALSE, NTE_BAD_ALGID, FALSE, NTE_BAD_FLAGS}, /* WinNT4 and Win2k */
|
{CALG_DH_EPHEM, 448 << 16, FALSE, NTE_BAD_ALGID},
|
||||||
{CALG_DH_EPHEM, 512 << 16, FALSE, NTE_BAD_ALGID, TRUE}, /* success on WinNT4 */
|
{CALG_DH_EPHEM, 512 << 16, FALSE, NTE_BAD_ALGID},
|
||||||
{CALG_DH_EPHEM, 1024 << 16, FALSE, NTE_BAD_ALGID, TRUE}, /* success on WinNT4 */
|
{CALG_DH_EPHEM, 1024 << 16, FALSE, NTE_BAD_ALGID},
|
||||||
{CALG_DH_EPHEM, 1088 << 16, FALSE, NTE_BAD_ALGID, FALSE, NTE_BAD_FLAGS}, /* WinNT4 and Win2k */
|
{CALG_DH_EPHEM, 1088 << 16, FALSE, NTE_BAD_ALGID},
|
||||||
/* CALG_DH_SF is not supported by the base DSS provider */
|
/* CALG_DH_SF is not supported by the base DSS provider */
|
||||||
{CALG_DH_SF, 448 << 16, FALSE, NTE_BAD_ALGID, FALSE, NTE_BAD_FLAGS}, /* WinNT4 and Win2k */
|
{CALG_DH_SF, 448 << 16, FALSE, NTE_BAD_ALGID},
|
||||||
{CALG_DH_SF, 512 << 16, FALSE, NTE_BAD_ALGID, TRUE}, /* success on WinNT4 */
|
{CALG_DH_SF, 512 << 16, FALSE, NTE_BAD_ALGID},
|
||||||
{CALG_DH_SF, 1024 << 16, FALSE, NTE_BAD_ALGID, TRUE}, /* success on WinNT4 */
|
{CALG_DH_SF, 1024 << 16, FALSE, NTE_BAD_ALGID},
|
||||||
{CALG_DH_SF, 1088 << 16, FALSE, NTE_BAD_ALGID, FALSE, NTE_BAD_FLAGS}, /* WinNT4 and Win2k */
|
{CALG_DH_SF, 1088 << 16, FALSE, NTE_BAD_ALGID},
|
||||||
/* min 512 max 1024, increment by 64 */
|
/* min 512 max 1024, increment by 64 */
|
||||||
{CALG_DSS_SIGN, 448 << 16, FALSE, NTE_BAD_FLAGS},
|
{CALG_DSS_SIGN, 448 << 16, FALSE, NTE_BAD_FLAGS},
|
||||||
{CALG_DSS_SIGN, 512 << 16, TRUE},
|
{CALG_DSS_SIGN, 512 << 16, TRUE},
|
||||||
{CALG_DSS_SIGN, 513 << 16, FALSE, NTE_FAIL, FALSE, NTE_BAD_FLAGS, STATUS_INVALID_PARAMETER}, /* WinNT4 and Win2k */
|
{CALG_DSS_SIGN, 513 << 16, FALSE, STATUS_INVALID_PARAMETER, NTE_FAIL},
|
||||||
{CALG_DSS_SIGN, 768 << 16, TRUE},
|
{CALG_DSS_SIGN, 768 << 16, TRUE},
|
||||||
{CALG_DSS_SIGN, 1024 << 16, TRUE},
|
{CALG_DSS_SIGN, 1024 << 16, TRUE},
|
||||||
{CALG_DSS_SIGN, 1088 << 16, FALSE, NTE_BAD_FLAGS}
|
{CALG_DSS_SIGN, 1088 << 16, FALSE, NTE_BAD_FLAGS}
|
||||||
|
@ -230,31 +223,31 @@ static const struct keylength_test dssDH_keylength[] = {
|
||||||
/* min 512 max 1024, increment by 64 */
|
/* min 512 max 1024, increment by 64 */
|
||||||
{AT_KEYEXCHANGE, 448 << 16, FALSE, NTE_BAD_FLAGS},
|
{AT_KEYEXCHANGE, 448 << 16, FALSE, NTE_BAD_FLAGS},
|
||||||
{AT_KEYEXCHANGE, 512 << 16, TRUE},
|
{AT_KEYEXCHANGE, 512 << 16, TRUE},
|
||||||
{AT_KEYEXCHANGE, 513 << 16, FALSE, NTE_FAIL, FALSE, NTE_BAD_FLAGS}, /* WinNT4 and Win2k */
|
{AT_KEYEXCHANGE, 513 << 16, FALSE, NTE_BAD_FLAGS},
|
||||||
{AT_KEYEXCHANGE, 768 << 16, TRUE},
|
{AT_KEYEXCHANGE, 768 << 16, TRUE},
|
||||||
{AT_KEYEXCHANGE, 1024 << 16, TRUE},
|
{AT_KEYEXCHANGE, 1024 << 16, TRUE},
|
||||||
{AT_KEYEXCHANGE, 1088 << 16, FALSE, NTE_BAD_FLAGS},
|
{AT_KEYEXCHANGE, 1088 << 16, FALSE, NTE_BAD_FLAGS},
|
||||||
{AT_SIGNATURE, 448 << 16, FALSE, NTE_BAD_FLAGS},
|
{AT_SIGNATURE, 448 << 16, FALSE, NTE_BAD_FLAGS},
|
||||||
{AT_SIGNATURE, 512 << 16, TRUE},
|
{AT_SIGNATURE, 512 << 16, TRUE},
|
||||||
{AT_SIGNATURE, 513 << 16, FALSE, NTE_FAIL, FALSE, NTE_BAD_FLAGS, STATUS_INVALID_PARAMETER}, /* WinNT4 and Win2k */
|
{AT_SIGNATURE, 513 << 16, FALSE, STATUS_INVALID_PARAMETER, NTE_FAIL},
|
||||||
{AT_SIGNATURE, 768 << 16, TRUE},
|
{AT_SIGNATURE, 768 << 16, TRUE},
|
||||||
{AT_SIGNATURE, 1024 << 16, TRUE},
|
{AT_SIGNATURE, 1024 << 16, TRUE},
|
||||||
{AT_SIGNATURE, 1088 << 16, FALSE, NTE_BAD_FLAGS},
|
{AT_SIGNATURE, 1088 << 16, FALSE, NTE_BAD_FLAGS},
|
||||||
{CALG_DH_EPHEM, 448 << 16, FALSE, NTE_BAD_FLAGS},
|
{CALG_DH_EPHEM, 448 << 16, FALSE, NTE_BAD_FLAGS},
|
||||||
{CALG_DH_EPHEM, 512 << 16, TRUE},
|
{CALG_DH_EPHEM, 512 << 16, TRUE},
|
||||||
{CALG_DH_EPHEM, 513 << 16, FALSE, NTE_FAIL, FALSE, NTE_BAD_FLAGS}, /* WinNT4 and Win2k */
|
{CALG_DH_EPHEM, 513 << 16, FALSE, NTE_BAD_FLAGS},
|
||||||
{CALG_DH_EPHEM, 768 << 16, TRUE},
|
{CALG_DH_EPHEM, 768 << 16, TRUE},
|
||||||
{CALG_DH_EPHEM, 1024 << 16, TRUE},
|
{CALG_DH_EPHEM, 1024 << 16, TRUE},
|
||||||
{CALG_DH_EPHEM, 1088 << 16, FALSE, NTE_BAD_FLAGS},
|
{CALG_DH_EPHEM, 1088 << 16, FALSE, NTE_BAD_FLAGS},
|
||||||
{CALG_DH_SF, 448 << 16, FALSE, NTE_BAD_FLAGS},
|
{CALG_DH_SF, 448 << 16, FALSE, NTE_BAD_FLAGS},
|
||||||
{CALG_DH_SF, 512 << 16, TRUE},
|
{CALG_DH_SF, 512 << 16, TRUE},
|
||||||
{CALG_DH_SF, 513 << 16, FALSE, NTE_FAIL, FALSE, NTE_BAD_FLAGS}, /* WinNT4 and Win2k */
|
{CALG_DH_SF, 513 << 16, FALSE, NTE_BAD_FLAGS},
|
||||||
{CALG_DH_SF, 768 << 16, TRUE},
|
{CALG_DH_SF, 768 << 16, TRUE},
|
||||||
{CALG_DH_SF, 1024 << 16, TRUE},
|
{CALG_DH_SF, 1024 << 16, TRUE},
|
||||||
{CALG_DH_SF, 1088 << 16, FALSE, NTE_BAD_FLAGS},
|
{CALG_DH_SF, 1088 << 16, FALSE, NTE_BAD_FLAGS},
|
||||||
{CALG_DSS_SIGN, 448 << 16, FALSE, NTE_BAD_FLAGS},
|
{CALG_DSS_SIGN, 448 << 16, FALSE, NTE_BAD_FLAGS},
|
||||||
{CALG_DSS_SIGN, 512 << 16, TRUE},
|
{CALG_DSS_SIGN, 512 << 16, TRUE},
|
||||||
{CALG_DSS_SIGN, 513 << 16, FALSE, NTE_FAIL, FALSE, NTE_BAD_FLAGS, STATUS_INVALID_PARAMETER}, /* WinNT4 and Win2k */
|
{CALG_DSS_SIGN, 513 << 16, FALSE, STATUS_INVALID_PARAMETER, NTE_FAIL},
|
||||||
{CALG_DSS_SIGN, 768 << 16, TRUE},
|
{CALG_DSS_SIGN, 768 << 16, TRUE},
|
||||||
{CALG_DSS_SIGN, 1024 << 16, TRUE},
|
{CALG_DSS_SIGN, 1024 << 16, TRUE},
|
||||||
{CALG_DSS_SIGN, 1088 << 16, FALSE, NTE_BAD_FLAGS}
|
{CALG_DSS_SIGN, 1088 << 16, FALSE, NTE_BAD_FLAGS}
|
||||||
|
@ -264,7 +257,7 @@ static const struct keylength_test dssENH_keylength[] = {
|
||||||
/* min 512 max 1024 (AT_KEYEXCHANGE, CALG_DH_EPHEM, CALG_DH_SF max 4096), increment by 64*/
|
/* min 512 max 1024 (AT_KEYEXCHANGE, CALG_DH_EPHEM, CALG_DH_SF max 4096), increment by 64*/
|
||||||
{AT_KEYEXCHANGE, 448 << 16, FALSE, NTE_BAD_FLAGS},
|
{AT_KEYEXCHANGE, 448 << 16, FALSE, NTE_BAD_FLAGS},
|
||||||
{AT_KEYEXCHANGE, 512 << 16, TRUE},
|
{AT_KEYEXCHANGE, 512 << 16, TRUE},
|
||||||
{AT_KEYEXCHANGE, 513 << 16, FALSE, NTE_FAIL, FALSE, NTE_BAD_FLAGS}, /* WinNT4 and Win2k */
|
{AT_KEYEXCHANGE, 513 << 16, FALSE, NTE_BAD_FLAGS},
|
||||||
{AT_KEYEXCHANGE, 768 << 16, TRUE},
|
{AT_KEYEXCHANGE, 768 << 16, TRUE},
|
||||||
{AT_KEYEXCHANGE, 1024 << 16, TRUE},
|
{AT_KEYEXCHANGE, 1024 << 16, TRUE},
|
||||||
{AT_KEYEXCHANGE, 1088 << 16, TRUE},
|
{AT_KEYEXCHANGE, 1088 << 16, TRUE},
|
||||||
|
@ -275,13 +268,13 @@ static const struct keylength_test dssENH_keylength[] = {
|
||||||
{AT_KEYEXCHANGE, 4160 << 16, FALSE, NTE_BAD_FLAGS},
|
{AT_KEYEXCHANGE, 4160 << 16, FALSE, NTE_BAD_FLAGS},
|
||||||
{AT_SIGNATURE, 448 << 16, FALSE, NTE_BAD_FLAGS},
|
{AT_SIGNATURE, 448 << 16, FALSE, NTE_BAD_FLAGS},
|
||||||
{AT_SIGNATURE, 512 << 16, TRUE},
|
{AT_SIGNATURE, 512 << 16, TRUE},
|
||||||
{AT_SIGNATURE, 513 << 16, FALSE, NTE_FAIL, FALSE, NTE_BAD_FLAGS, STATUS_INVALID_PARAMETER}, /* WinNT4 and Win2k */
|
{AT_SIGNATURE, 513 << 16, FALSE, STATUS_INVALID_PARAMETER, NTE_FAIL},
|
||||||
{AT_SIGNATURE, 768 << 16, TRUE},
|
{AT_SIGNATURE, 768 << 16, TRUE},
|
||||||
{AT_SIGNATURE, 1024 << 16, TRUE},
|
{AT_SIGNATURE, 1024 << 16, TRUE},
|
||||||
{AT_SIGNATURE, 1032 << 16, FALSE, NTE_BAD_FLAGS},
|
{AT_SIGNATURE, 1032 << 16, FALSE, NTE_BAD_FLAGS},
|
||||||
{CALG_DH_EPHEM, 448 << 16, FALSE, NTE_BAD_FLAGS},
|
{CALG_DH_EPHEM, 448 << 16, FALSE, NTE_BAD_FLAGS},
|
||||||
{CALG_DH_EPHEM, 512 << 16, TRUE},
|
{CALG_DH_EPHEM, 512 << 16, TRUE},
|
||||||
{CALG_DH_EPHEM, 513 << 16, FALSE, NTE_FAIL, FALSE, NTE_BAD_FLAGS}, /* WinNT4 and Win2k */
|
{CALG_DH_EPHEM, 513 << 16, FALSE, NTE_BAD_FLAGS},
|
||||||
{CALG_DH_EPHEM, 768 << 16, TRUE},
|
{CALG_DH_EPHEM, 768 << 16, TRUE},
|
||||||
{CALG_DH_EPHEM, 1024 << 16, TRUE},
|
{CALG_DH_EPHEM, 1024 << 16, TRUE},
|
||||||
{CALG_DH_EPHEM, 1040 << 16, FALSE, NTE_BAD_FLAGS},
|
{CALG_DH_EPHEM, 1040 << 16, FALSE, NTE_BAD_FLAGS},
|
||||||
|
@ -289,7 +282,7 @@ static const struct keylength_test dssENH_keylength[] = {
|
||||||
{CALG_DH_EPHEM, 4160 << 16, FALSE, NTE_BAD_FLAGS},
|
{CALG_DH_EPHEM, 4160 << 16, FALSE, NTE_BAD_FLAGS},
|
||||||
{CALG_DH_SF, 448 << 16, FALSE, NTE_BAD_FLAGS},
|
{CALG_DH_SF, 448 << 16, FALSE, NTE_BAD_FLAGS},
|
||||||
{CALG_DH_SF, 512 << 16, TRUE},
|
{CALG_DH_SF, 512 << 16, TRUE},
|
||||||
{CALG_DH_SF, 513 << 16, FALSE, NTE_FAIL, FALSE, NTE_BAD_FLAGS}, /* WinNT4 and Win2k */
|
{CALG_DH_SF, 513 << 16, FALSE, NTE_BAD_FLAGS},
|
||||||
{CALG_DH_SF, 768 << 16, TRUE},
|
{CALG_DH_SF, 768 << 16, TRUE},
|
||||||
{CALG_DH_SF, 1024 << 16, TRUE},
|
{CALG_DH_SF, 1024 << 16, TRUE},
|
||||||
{CALG_DH_SF, 1032 << 16, FALSE, NTE_BAD_FLAGS},
|
{CALG_DH_SF, 1032 << 16, FALSE, NTE_BAD_FLAGS},
|
||||||
|
@ -297,7 +290,7 @@ static const struct keylength_test dssENH_keylength[] = {
|
||||||
{CALG_DH_SF, 4160 << 16, FALSE, NTE_BAD_FLAGS},
|
{CALG_DH_SF, 4160 << 16, FALSE, NTE_BAD_FLAGS},
|
||||||
{CALG_DSS_SIGN, 448 << 16, FALSE, NTE_BAD_FLAGS},
|
{CALG_DSS_SIGN, 448 << 16, FALSE, NTE_BAD_FLAGS},
|
||||||
{CALG_DSS_SIGN, 512 << 16, TRUE},
|
{CALG_DSS_SIGN, 512 << 16, TRUE},
|
||||||
{CALG_DSS_SIGN, 513 << 16, FALSE, NTE_FAIL, FALSE, NTE_BAD_FLAGS, STATUS_INVALID_PARAMETER}, /* WinNT4 and Win2k */
|
{CALG_DSS_SIGN, 513 << 16, FALSE, STATUS_INVALID_PARAMETER, NTE_FAIL},
|
||||||
{CALG_DSS_SIGN, 768 << 16, TRUE},
|
{CALG_DSS_SIGN, 768 << 16, TRUE},
|
||||||
{CALG_DSS_SIGN, 1024 << 16, TRUE},
|
{CALG_DSS_SIGN, 1024 << 16, TRUE},
|
||||||
{CALG_DSS_SIGN, 1088 << 16, FALSE, NTE_BAD_FLAGS}
|
{CALG_DSS_SIGN, 1088 << 16, FALSE, NTE_BAD_FLAGS}
|
||||||
|
@ -322,26 +315,9 @@ static void test_keylength_array(HCRYPTPROV hProv,const struct keylength_test *t
|
||||||
ok(result, "Expected no errors.\n");
|
ok(result, "Expected no errors.\n");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ /* error but success on older system */
|
ok(!result && (GetLastError() == tests[i].expectedError ||
|
||||||
if(tests[i].brokenResult)
|
broken(GetLastError() == tests[i].brokenError)),
|
||||||
ok((!result && GetLastError() == tests[i].expectedError) ||
|
"%d: got %x.\n", i, GetLastError());
|
||||||
broken(result), "%d: Didn't really expect a key, got %x, %d\n",
|
|
||||||
i, GetLastError(), result);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* error */
|
|
||||||
if(!tests[i].brokenError)
|
|
||||||
ok(!result && GetLastError() == tests[i].expectedError,
|
|
||||||
"%d: Expected an error, got %x, %d.\n", i, GetLastError(), result);
|
|
||||||
|
|
||||||
/* error but different error on older system */
|
|
||||||
else
|
|
||||||
ok(!result && (GetLastError() == tests[i].expectedError ||
|
|
||||||
GetLastError() == tests[i].altError ||
|
|
||||||
broken(GetLastError() == tests[i].brokenError) ),
|
|
||||||
"%d: Expected an error, got %x, %d.\n", i, GetLastError(), result);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -381,11 +357,6 @@ static void test_keylength(void)
|
||||||
SetLastError(0xdeadbeef);
|
SetLastError(0xdeadbeef);
|
||||||
result = CryptAcquireContextA(
|
result = CryptAcquireContextA(
|
||||||
&hProv, NULL, MS_ENH_DSS_DH_PROV_A, PROV_DSS_DH, CRYPT_VERIFYCONTEXT);
|
&hProv, NULL, MS_ENH_DSS_DH_PROV_A, PROV_DSS_DH, CRYPT_VERIFYCONTEXT);
|
||||||
if(!result && GetLastError() == NTE_KEYSET_NOT_DEF)
|
|
||||||
{
|
|
||||||
win_skip("DSSENH and Schannel provider is broken on WinNT4\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
ok(result, "Expected no errors.\n");
|
ok(result, "Expected no errors.\n");
|
||||||
|
|
||||||
/* perform keylength tests */
|
/* perform keylength tests */
|
||||||
|
@ -1001,12 +972,6 @@ static void test_verify_signature(void)
|
||||||
/* acquire enhanced dss provider */
|
/* acquire enhanced dss provider */
|
||||||
SetLastError(0xdeadbeef);
|
SetLastError(0xdeadbeef);
|
||||||
result = CryptAcquireContextA(&hProv, NULL, MS_ENH_DSS_DH_PROV_A, PROV_DSS_DH, 0);
|
result = CryptAcquireContextA(&hProv, NULL, MS_ENH_DSS_DH_PROV_A, PROV_DSS_DH, 0);
|
||||||
if(!result && GetLastError() == NTE_KEYSET_NOT_DEF)
|
|
||||||
{
|
|
||||||
win_skip("DSSENH and Schannel provider is broken on WinNT4, skipping signature "
|
|
||||||
"verification tests.\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
ok(result, "Failed to acquire CSP.\n");
|
ok(result, "Failed to acquire CSP.\n");
|
||||||
|
|
||||||
test_signhash_array(hProv, dssSign_data, ARRAY_SIZE(dssSign_data));
|
test_signhash_array(hProv, dssSign_data, ARRAY_SIZE(dssSign_data));
|
||||||
|
@ -1120,94 +1085,94 @@ static void test_keyExchange_baseDSS(HCRYPTPROV hProv, const struct keyExchange_
|
||||||
|
|
||||||
/* Generate key exchange keys for user1 and user2 */
|
/* Generate key exchange keys for user1 and user2 */
|
||||||
result = CryptGenKey(hProv, tests[i].algid, 512 << 16 | CRYPT_PREGEN, &privKey1);
|
result = CryptGenKey(hProv, tests[i].algid, 512 << 16 | CRYPT_PREGEN, &privKey1);
|
||||||
ok((!result && GetLastError() == NTE_BAD_ALGID) || broken(result), /* WinNT4 */
|
ok(!result && GetLastError() == NTE_BAD_ALGID,
|
||||||
"Expected NTE_BAD_ALGID, got %x\n", GetLastError());
|
"Expected NTE_BAD_ALGID, got %x\n", GetLastError());
|
||||||
|
|
||||||
result = CryptGenKey(hProv, tests[i].algid, 512 << 16 | CRYPT_PREGEN, &privKey2);
|
result = CryptGenKey(hProv, tests[i].algid, 512 << 16 | CRYPT_PREGEN, &privKey2);
|
||||||
ok((!result && GetLastError() == NTE_BAD_ALGID) || broken(result), /* WinNT4 */
|
ok(!result && GetLastError() == NTE_BAD_ALGID,
|
||||||
"Expected NTE_BAD_ALGID, got %x\n", GetLastError());
|
"Expected NTE_BAD_ALGID, got %x\n", GetLastError());
|
||||||
|
|
||||||
/* Set the prime and generator values, which are agreed upon */
|
/* Set the prime and generator values, which are agreed upon */
|
||||||
result = CryptSetKeyParam(privKey1, KP_P, (BYTE *)&Prime, 0);
|
result = CryptSetKeyParam(privKey1, KP_P, (BYTE *)&Prime, 0);
|
||||||
ok((!result && GetLastError() == ERROR_INVALID_PARAMETER) || broken(result),
|
ok(!result && GetLastError() == ERROR_INVALID_PARAMETER,
|
||||||
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError()); /* WinNT4 */
|
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError());
|
||||||
|
|
||||||
result = CryptSetKeyParam(privKey2, KP_P, (BYTE *)&Prime, 0);
|
result = CryptSetKeyParam(privKey2, KP_P, (BYTE *)&Prime, 0);
|
||||||
ok((!result && GetLastError() == ERROR_INVALID_PARAMETER) || broken(result),
|
ok(!result && GetLastError() == ERROR_INVALID_PARAMETER,
|
||||||
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError()); /* WinNT4 */
|
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError());
|
||||||
|
|
||||||
result = CryptSetKeyParam(privKey1, KP_G, (BYTE *)&Generator, 0);
|
result = CryptSetKeyParam(privKey1, KP_G, (BYTE *)&Generator, 0);
|
||||||
ok((!result && GetLastError() == ERROR_INVALID_PARAMETER) || broken(result),
|
ok(!result && GetLastError() == ERROR_INVALID_PARAMETER,
|
||||||
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError()); /* WinNT4 */
|
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError());
|
||||||
|
|
||||||
result = CryptSetKeyParam(privKey2, KP_G, (BYTE *)&Generator, 0);
|
result = CryptSetKeyParam(privKey2, KP_G, (BYTE *)&Generator, 0);
|
||||||
ok((!result && GetLastError() == ERROR_INVALID_PARAMETER) || broken(result),
|
ok(!result && GetLastError() == ERROR_INVALID_PARAMETER,
|
||||||
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError()); /* WinNT4 */
|
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError());
|
||||||
|
|
||||||
/* Generate the secret value for user1 and user2 */
|
/* Generate the secret value for user1 and user2 */
|
||||||
result = CryptSetKeyParam(privKey1, KP_X, NULL, 0);
|
result = CryptSetKeyParam(privKey1, KP_X, NULL, 0);
|
||||||
ok((!result && GetLastError() == ERROR_INVALID_PARAMETER) || broken(result),
|
ok(!result && GetLastError() == ERROR_INVALID_PARAMETER,
|
||||||
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError()); /* WinNT4 */
|
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError());
|
||||||
|
|
||||||
result = CryptSetKeyParam(privKey2, KP_X, NULL, 0);
|
result = CryptSetKeyParam(privKey2, KP_X, NULL, 0);
|
||||||
ok((!result && GetLastError() == ERROR_INVALID_PARAMETER) || broken(result),
|
ok(!result && GetLastError() == ERROR_INVALID_PARAMETER,
|
||||||
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError()); /* WinNT4 */
|
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError());
|
||||||
|
|
||||||
/* Acquire required size for the public keys */
|
/* Acquire required size for the public keys */
|
||||||
result = CryptExportKey(privKey1, 0, PUBLICKEYBLOB, 0, NULL, &pubKeyLen1);
|
result = CryptExportKey(privKey1, 0, PUBLICKEYBLOB, 0, NULL, &pubKeyLen1);
|
||||||
ok((!result && GetLastError() == ERROR_INVALID_PARAMETER) || broken(result),
|
ok(!result && GetLastError() == ERROR_INVALID_PARAMETER,
|
||||||
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError()); /* WinNT4 */
|
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError());
|
||||||
|
|
||||||
result = CryptExportKey(privKey2, 0, PUBLICKEYBLOB, 0, NULL, &pubKeyLen2);
|
result = CryptExportKey(privKey2, 0, PUBLICKEYBLOB, 0, NULL, &pubKeyLen2);
|
||||||
ok((!result && GetLastError() == ERROR_INVALID_PARAMETER) || broken(result),
|
ok(!result && GetLastError() == ERROR_INVALID_PARAMETER,
|
||||||
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError()); /* WinNT4 */
|
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError());
|
||||||
|
|
||||||
/* Export public key which will be calculated into the shared key */
|
/* Export public key which will be calculated into the shared key */
|
||||||
result = CryptExportKey(privKey1, 0, PUBLICKEYBLOB, 0, pubKeyBuffer1, &pubKeyLen1);
|
result = CryptExportKey(privKey1, 0, PUBLICKEYBLOB, 0, pubKeyBuffer1, &pubKeyLen1);
|
||||||
ok((!result && GetLastError() == ERROR_INVALID_PARAMETER) || broken(result),
|
ok(!result && GetLastError() == ERROR_INVALID_PARAMETER,
|
||||||
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError()); /* WinNT4 */
|
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError());
|
||||||
|
|
||||||
result = CryptExportKey(privKey2, 0, PUBLICKEYBLOB, 0, pubKeyBuffer2, &pubKeyLen2);
|
result = CryptExportKey(privKey2, 0, PUBLICKEYBLOB, 0, pubKeyBuffer2, &pubKeyLen2);
|
||||||
ok((!result && GetLastError() == ERROR_INVALID_PARAMETER) || broken(result),
|
ok(!result && GetLastError() == ERROR_INVALID_PARAMETER,
|
||||||
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError()); /* WinNT4 */
|
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError());
|
||||||
|
|
||||||
/* Import the public key and convert it into a shared key */
|
/* Import the public key and convert it into a shared key */
|
||||||
result = CryptImportKey(hProv, pubKeyBuffer2, pubKeyLen2, privKey1, 0, &sessionKey1);
|
result = CryptImportKey(hProv, pubKeyBuffer2, pubKeyLen2, privKey1, 0, &sessionKey1);
|
||||||
ok((!result && GetLastError() == ERROR_INVALID_PARAMETER) ||
|
ok((!result && GetLastError() == ERROR_INVALID_PARAMETER) ||
|
||||||
broken(!result && GetLastError() == NTE_BAD_DATA) || /* Vista.64 */
|
broken(!result && GetLastError() == NTE_BAD_DATA) || /* Vista.64 */
|
||||||
broken(!result && GetLastError() == NTE_BAD_TYPE) || /* Win2K-W2K8, Win7.64 */
|
broken(!result && GetLastError() == NTE_BAD_TYPE) || /* Win2K-W2K8, Win7.64 */
|
||||||
broken(!result && GetLastError() == NTE_BAD_ALGID), /* W7SP164 (32 bit dssenh) */
|
broken(!result && GetLastError() == NTE_BAD_ALGID), /* W7SP164 (32 bit dssenh) */
|
||||||
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError());
|
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError());
|
||||||
|
|
||||||
result = CryptImportKey(hProv, pubKeyBuffer1, pubKeyLen1, privKey2, 0, &sessionKey2);
|
result = CryptImportKey(hProv, pubKeyBuffer1, pubKeyLen1, privKey2, 0, &sessionKey2);
|
||||||
ok((!result && GetLastError() == ERROR_INVALID_PARAMETER) ||
|
ok((!result && GetLastError() == ERROR_INVALID_PARAMETER) ||
|
||||||
broken(!result && GetLastError() == NTE_BAD_DATA) || /* Win 7 */
|
broken(!result && GetLastError() == NTE_BAD_DATA) || /* Win 7 */
|
||||||
broken(!result && GetLastError() == NTE_BAD_TYPE) || /* Win2K-W2K8, Win7.64 */
|
broken(!result && GetLastError() == NTE_BAD_TYPE) || /* Win2K-W2K8, Win7.64 */
|
||||||
broken(!result && GetLastError() == NTE_BAD_ALGID), /* W7SP164 (32 bit dssenh) */
|
broken(!result && GetLastError() == NTE_BAD_ALGID), /* W7SP164 (32 bit dssenh) */
|
||||||
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError());
|
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError());
|
||||||
|
|
||||||
/* Set the shared key parameters to matching type */
|
/* Set the shared key parameters to matching type */
|
||||||
algid = CALG_RC4;
|
algid = CALG_RC4;
|
||||||
result = CryptSetKeyParam(sessionKey1, KP_ALGID, (BYTE *)&algid, 0);
|
result = CryptSetKeyParam(sessionKey1, KP_ALGID, (BYTE *)&algid, 0);
|
||||||
ok((!result && GetLastError() == ERROR_INVALID_PARAMETER) || broken(result),
|
ok(!result && GetLastError() == ERROR_INVALID_PARAMETER,
|
||||||
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError()); /* WinNT4 */
|
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError());
|
||||||
|
|
||||||
algid = CALG_RC4;
|
algid = CALG_RC4;
|
||||||
result = CryptSetKeyParam(sessionKey2, KP_ALGID, (BYTE *)&algid, 0);
|
result = CryptSetKeyParam(sessionKey2, KP_ALGID, (BYTE *)&algid, 0);
|
||||||
ok((!result && GetLastError() == ERROR_INVALID_PARAMETER) || broken(result),
|
ok(!result && GetLastError() == ERROR_INVALID_PARAMETER,
|
||||||
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError()); /* WinNT4 */
|
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError());
|
||||||
|
|
||||||
/* Encrypt some data and verify we are getting the same output */
|
/* Encrypt some data and verify we are getting the same output */
|
||||||
memcpy(pbData1, plainText, plainLen);
|
memcpy(pbData1, plainText, plainLen);
|
||||||
dataLen = plainLen;
|
dataLen = plainLen;
|
||||||
|
|
||||||
result = CryptEncrypt(sessionKey1, 0, TRUE, 0, pbData1, &dataLen, 36);
|
result = CryptEncrypt(sessionKey1, 0, TRUE, 0, pbData1, &dataLen, 36);
|
||||||
ok((!result && GetLastError() == ERROR_INVALID_PARAMETER) || broken(result),
|
ok(!result && GetLastError() == ERROR_INVALID_PARAMETER,
|
||||||
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError()); /* WinNT4 */
|
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError());
|
||||||
|
|
||||||
result = CryptDecrypt(sessionKey2, 0, TRUE, 0, pbData1, &dataLen);
|
result = CryptDecrypt(sessionKey2, 0, TRUE, 0, pbData1, &dataLen);
|
||||||
ok((!result && GetLastError() == ERROR_INVALID_PARAMETER) || broken(result),
|
ok(!result && GetLastError() == ERROR_INVALID_PARAMETER,
|
||||||
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError()); /* WinNT4 */
|
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError());
|
||||||
|
|
||||||
ok(!memcmp(pbData1, (BYTE *)plainText, sizeof(plainText)), "Incorrect decrypted data.\n");
|
ok(!memcmp(pbData1, (BYTE *)plainText, sizeof(plainText)), "Incorrect decrypted data.\n");
|
||||||
|
|
||||||
|
@ -1215,31 +1180,31 @@ static void test_keyExchange_baseDSS(HCRYPTPROV hProv, const struct keyExchange_
|
||||||
dataLen = plainLen;
|
dataLen = plainLen;
|
||||||
|
|
||||||
result = CryptEncrypt(sessionKey2, 0, TRUE, 0, pbData2, &dataLen, 36);
|
result = CryptEncrypt(sessionKey2, 0, TRUE, 0, pbData2, &dataLen, 36);
|
||||||
ok((!result && GetLastError() == ERROR_INVALID_PARAMETER) || broken(result),
|
ok(!result && GetLastError() == ERROR_INVALID_PARAMETER,
|
||||||
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError()); /* WinNT4 */
|
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError());
|
||||||
|
|
||||||
result = CryptDecrypt(sessionKey1, 0, TRUE, 0, pbData2, &dataLen);
|
result = CryptDecrypt(sessionKey1, 0, TRUE, 0, pbData2, &dataLen);
|
||||||
ok((!result && GetLastError() == ERROR_INVALID_PARAMETER) || broken(result),
|
ok(!result && GetLastError() == ERROR_INVALID_PARAMETER,
|
||||||
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError()); /* WinNT4 */
|
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError());
|
||||||
|
|
||||||
ok(!memcmp(pbData1, pbData2, dataLen), "Decrypted data is not identical.\n");
|
ok(!memcmp(pbData1, pbData2, dataLen), "Decrypted data is not identical.\n");
|
||||||
|
|
||||||
/* Destroy all user keys */
|
/* Destroy all user keys */
|
||||||
result = CryptDestroyKey(sessionKey1);
|
result = CryptDestroyKey(sessionKey1);
|
||||||
ok((!result && GetLastError() == ERROR_INVALID_PARAMETER) || broken(result),
|
ok(!result && GetLastError() == ERROR_INVALID_PARAMETER,
|
||||||
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError()); /* WinNT4 */
|
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError());
|
||||||
|
|
||||||
result = CryptDestroyKey(sessionKey2);
|
result = CryptDestroyKey(sessionKey2);
|
||||||
ok((!result && GetLastError() == ERROR_INVALID_PARAMETER) || broken(result),
|
ok(!result && GetLastError() == ERROR_INVALID_PARAMETER,
|
||||||
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError()); /* WinNT4 */
|
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError());
|
||||||
|
|
||||||
result = CryptDestroyKey(privKey1);
|
result = CryptDestroyKey(privKey1);
|
||||||
ok((!result && GetLastError() == ERROR_INVALID_PARAMETER) || broken(result),
|
ok(!result && GetLastError() == ERROR_INVALID_PARAMETER,
|
||||||
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError()); /* WinNT4 */
|
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError());
|
||||||
|
|
||||||
result = CryptDestroyKey(privKey2);
|
result = CryptDestroyKey(privKey2);
|
||||||
ok((!result && GetLastError() == ERROR_INVALID_PARAMETER) || broken(result),
|
ok(!result && GetLastError() == ERROR_INVALID_PARAMETER,
|
||||||
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError()); /* WinNT4 */
|
"Expected ERROR_INVALID_PARAMETER, got %x\n", GetLastError());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1289,12 +1254,10 @@ static void test_keyExchange_dssDH(HCRYPTPROV hProv, const struct keyExchange_te
|
||||||
|
|
||||||
/* Generate the secret value for user1 and user2 */
|
/* Generate the secret value for user1 and user2 */
|
||||||
result = CryptSetKeyParam(privKey1, KP_X, NULL, 0);
|
result = CryptSetKeyParam(privKey1, KP_X, NULL, 0);
|
||||||
ok(result || broken(!result && GetLastError() == ERROR_INVALID_PARAMETER),
|
ok(result, "Failed to set secret value for user 1, got %x\n", GetLastError());
|
||||||
"Failed to set secret value for user 1, got %x\n", GetLastError());/* Win2k & WinXP */
|
|
||||||
|
|
||||||
result = CryptSetKeyParam(privKey2, KP_X, NULL, 0);
|
result = CryptSetKeyParam(privKey2, KP_X, NULL, 0);
|
||||||
ok(result || broken(!result && GetLastError() == ERROR_INVALID_PARAMETER),
|
ok(result, "Failed to set secret value for user 2, got %x\n", GetLastError());
|
||||||
"Failed to set secret value for user 2, got %x\n", GetLastError());/* Win2k & WinXP */
|
|
||||||
|
|
||||||
/* Acquire required size for the public keys */
|
/* Acquire required size for the public keys */
|
||||||
result = CryptExportKey(privKey1, 0, PUBLICKEYBLOB, 0, NULL, &pubKeyLen1);
|
result = CryptExportKey(privKey1, 0, PUBLICKEYBLOB, 0, NULL, &pubKeyLen1);
|
||||||
|
@ -1396,11 +1359,6 @@ static void test_key_exchange(void)
|
||||||
/* acquire enhanced dss provider */
|
/* acquire enhanced dss provider */
|
||||||
result = CryptAcquireContextA(&hProv, NULL, MS_ENH_DSS_DH_PROV_A, PROV_DSS_DH,
|
result = CryptAcquireContextA(&hProv, NULL, MS_ENH_DSS_DH_PROV_A, PROV_DSS_DH,
|
||||||
CRYPT_VERIFYCONTEXT);
|
CRYPT_VERIFYCONTEXT);
|
||||||
if(!result && GetLastError() == NTE_KEYSET_NOT_DEF)
|
|
||||||
{
|
|
||||||
win_skip("DSSENH and Schannel provider is broken on WinNT4, skipping shared key tests.\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
ok(result, "Failed to acquire CSP.\n");
|
ok(result, "Failed to acquire CSP.\n");
|
||||||
|
|
||||||
test_keyExchange_dssDH(hProv, dssDHkey_data, ARRAY_SIZE(dssDHkey_data));
|
test_keyExchange_dssDH(hProv, dssDHkey_data, ARRAY_SIZE(dssDHkey_data));
|
||||||
|
|
Loading…
Reference in a new issue