proposal: Generalize KE methods
This commit is contained in:
@@ -301,38 +301,89 @@ START_TEST(test_select_proposal)
|
||||
}
|
||||
END_TEST
|
||||
|
||||
START_TEST(test_promote_ke_method)
|
||||
START_TEST(test_has_transform)
|
||||
{
|
||||
proposal_t *proposal;
|
||||
|
||||
proposal = proposal_create_from_string(PROTO_IKE,
|
||||
"aes128-sha256-modp3072-ecp256");
|
||||
ck_assert(proposal->promote_ke_method(proposal, ECP_256_BIT));
|
||||
ck_assert(proposal->has_transform(proposal, KEY_EXCHANGE_METHOD,
|
||||
MODP_3072_BIT));
|
||||
ck_assert(proposal->has_transform(proposal, KEY_EXCHANGE_METHOD,
|
||||
ECP_256_BIT));
|
||||
ck_assert(!proposal->has_transform(proposal, KEY_EXCHANGE_METHOD,
|
||||
MODP_2048_BIT));
|
||||
proposal->destroy(proposal);
|
||||
}
|
||||
END_TEST
|
||||
|
||||
START_TEST(test_has_transform_none)
|
||||
{
|
||||
proposal_t *proposal;
|
||||
|
||||
proposal = proposal_create_from_string(PROTO_ESP,
|
||||
"aes128-sha256");
|
||||
ck_assert(proposal->has_transform(proposal, KEY_EXCHANGE_METHOD,
|
||||
KE_NONE));
|
||||
proposal->destroy(proposal);
|
||||
|
||||
proposal = proposal_create_from_string(PROTO_ESP,
|
||||
"aes128-sha256-none");
|
||||
ck_assert(proposal->has_transform(proposal, KEY_EXCHANGE_METHOD,
|
||||
KE_NONE));
|
||||
proposal->destroy(proposal);
|
||||
|
||||
proposal = proposal_create_from_string(PROTO_ESP,
|
||||
"aes128-sha256-modp3072");
|
||||
ck_assert(!proposal->has_transform(proposal, KEY_EXCHANGE_METHOD,
|
||||
KE_NONE));
|
||||
proposal->destroy(proposal);
|
||||
|
||||
/* while actually contained in the proposal, KE_NONE is 0 so we expect
|
||||
* has_transform() to return FALSE if there are other algorithms */
|
||||
proposal = proposal_create_from_string(PROTO_ESP,
|
||||
"aes128-sha256-modp3072-none");
|
||||
ck_assert(!proposal->has_transform(proposal, KEY_EXCHANGE_METHOD,
|
||||
KE_NONE));
|
||||
proposal->destroy(proposal);
|
||||
}
|
||||
END_TEST
|
||||
|
||||
START_TEST(test_promote_transform)
|
||||
{
|
||||
proposal_t *proposal;
|
||||
|
||||
proposal = proposal_create_from_string(PROTO_IKE,
|
||||
"aes128-sha256-modp3072-ecp256");
|
||||
ck_assert(proposal->promote_transform(proposal, KEY_EXCHANGE_METHOD,
|
||||
ECP_256_BIT));
|
||||
assert_proposal_eq(proposal, "IKE:AES_CBC_128/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/ECP_256/MODP_3072");
|
||||
proposal->destroy(proposal);
|
||||
}
|
||||
END_TEST
|
||||
|
||||
START_TEST(test_promote_ke_method_already_front)
|
||||
START_TEST(test_promote_transform_already_front)
|
||||
{
|
||||
proposal_t *proposal;
|
||||
|
||||
proposal = proposal_create_from_string(PROTO_IKE,
|
||||
"aes128-sha256-modp3072-ecp256");
|
||||
ck_assert(proposal->promote_ke_method(proposal, MODP_3072_BIT));
|
||||
ck_assert(proposal->promote_transform(proposal, KEY_EXCHANGE_METHOD,
|
||||
MODP_3072_BIT));
|
||||
assert_proposal_eq(proposal, "IKE:AES_CBC_128/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_3072/ECP_256");
|
||||
proposal->destroy(proposal);
|
||||
}
|
||||
END_TEST
|
||||
|
||||
START_TEST(test_promote_ke_method_not_contained)
|
||||
START_TEST(test_promote_transform_not_contained)
|
||||
{
|
||||
proposal_t *proposal;
|
||||
|
||||
proposal = proposal_create_from_string(PROTO_IKE,
|
||||
"aes128-sha256-modp3072-ecp256");
|
||||
|
||||
ck_assert(!proposal->promote_ke_method(proposal, MODP_2048_BIT));
|
||||
ck_assert(!proposal->promote_transform(proposal, KEY_EXCHANGE_METHOD,
|
||||
MODP_2048_BIT));
|
||||
assert_proposal_eq(proposal, "IKE:AES_CBC_128/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_3072/ECP_256");
|
||||
proposal->destroy(proposal);
|
||||
}
|
||||
@@ -505,10 +556,15 @@ Suite *proposal_suite_create()
|
||||
countof(select_proposal_data));
|
||||
suite_add_tcase(s, tc);
|
||||
|
||||
tc = tcase_create("promote_ke_method");
|
||||
tcase_add_test(tc, test_promote_ke_method);
|
||||
tcase_add_test(tc, test_promote_ke_method_already_front);
|
||||
tcase_add_test(tc, test_promote_ke_method_not_contained);
|
||||
tc = tcase_create("has_transform");
|
||||
tcase_add_test(tc, test_has_transform);
|
||||
tcase_add_test(tc, test_has_transform_none);
|
||||
suite_add_tcase(s, tc);
|
||||
|
||||
tc = tcase_create("promote_transform");
|
||||
tcase_add_test(tc, test_promote_transform);
|
||||
tcase_add_test(tc, test_promote_transform_already_front);
|
||||
tcase_add_test(tc, test_promote_transform_not_contained);
|
||||
suite_add_tcase(s, tc);
|
||||
|
||||
tc = tcase_create("unknown transform types");
|
||||
|
||||
Reference in New Issue
Block a user