From f4b12883579af918653904d3f1351d9a454d5e6f Mon Sep 17 00:00:00 2001 From: Stef Walter Date: Mon, 16 Nov 2009 20:52:55 +0000 Subject: Implement testing of DH key pair generation --- src/object.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) (limited to 'src/object.c') diff --git a/src/object.c b/src/object.c index aee8363..4252bbc 100644 --- a/src/object.c +++ b/src/object.c @@ -396,6 +396,56 @@ p11t_object_tests(void) } } +int +p11t_object_generate_pair_bad (CK_SESSION_HANDLE session, CK_MECHANISM_TYPE mech) +{ + CK_OBJECT_CLASS pub_class = CKO_PUBLIC_KEY; + CK_OBJECT_CLASS priv_class = CKO_PRIVATE_KEY; + CK_ATTRIBUTE pub_attrs[1]; + CK_ATTRIBUTE priv_attrs[1]; + CK_MECHANISM mechanism; + CK_OBJECT_HANDLE pub_key, priv_key; + CK_RV rv; + + if (!p11t_test_unexpected) + return CONTINUE; + + /* An valid mechanism */ + mechanism.mechanism = mech; + mechanism.pParameter = NULL; + mechanism.ulParameterLen = 0; + + pub_attrs[0].type = CKA_CLASS; + pub_attrs[0].pValue = &pub_class; + pub_attrs[0].ulValueLen = sizeof (pub_class); + + priv_attrs[0].type = CKA_CLASS; + priv_attrs[0].pValue = &priv_class; + priv_attrs[0].ulValueLen = sizeof (priv_class); + + P11T_SECTION ("C_GenerateKeyPair"); + + rv = (p11t_module_funcs->C_GenerateKeyPair) ((CK_ULONG)-9, &mechanism, pub_attrs, 1, priv_attrs, 1, &pub_key, &priv_key); + P11T_CHECK_RV ("Invalid Session", rv, CKR_SESSION_HANDLE_INVALID); + + rv = (p11t_module_funcs->C_GenerateKeyPair) (session, NULL, pub_attrs, 1, priv_attrs, 1, &pub_key, &priv_key); + P11T_CHECK_RV ("Missing mechanism", rv, CKR_ARGUMENTS_BAD); + + rv = (p11t_module_funcs->C_GenerateKeyPair) (session, &mechanism, NULL, 1, priv_attrs, 1, &pub_key, &priv_key); + P11T_CHECK_RV ("Missing public attributes", rv, CKR_ARGUMENTS_BAD); + + rv = (p11t_module_funcs->C_GenerateKeyPair) (session, &mechanism, pub_attrs, 1, NULL, 1, &pub_key, &priv_key); + P11T_CHECK_RV ("Missing private attributes", rv, CKR_ARGUMENTS_BAD); + + rv = (p11t_module_funcs->C_GenerateKeyPair) (session, &mechanism, pub_attrs, 1, priv_attrs, 1, NULL, &priv_key); + P11T_CHECK_RV ("Missing public key handle", rv, CKR_ARGUMENTS_BAD); + + rv = (p11t_module_funcs->C_GenerateKeyPair) (session, &mechanism, pub_attrs, 1, priv_attrs, 1, &pub_key, NULL); + P11T_CHECK_RV ("Missing private key handle", rv, CKR_ARGUMENTS_BAD); + + return CONTINUE; +} + /* ---------------------------------------------------------------------------------- * METHODS */ -- cgit v1.2.3