YKCS11: test mechanisms.
This commit is contained in:
@@ -99,6 +99,76 @@ static void test_token_info() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void test_mechanism_list_and_info() {
|
||||||
|
|
||||||
|
CK_MECHANISM_TYPE_PTR mechs;
|
||||||
|
CK_ULONG n_mechs;
|
||||||
|
CK_MECHANISM_INFO info;
|
||||||
|
CK_ULONG i;
|
||||||
|
|
||||||
|
static const CK_MECHANISM_TYPE token_mechanisms[] = {
|
||||||
|
CKM_RSA_PKCS_KEY_PAIR_GEN,
|
||||||
|
CKM_RSA_PKCS,
|
||||||
|
CKM_RSA_PKCS_PSS,
|
||||||
|
CKM_RSA_X_509,
|
||||||
|
CKM_SHA1_RSA_PKCS,
|
||||||
|
CKM_SHA256_RSA_PKCS,
|
||||||
|
CKM_SHA384_RSA_PKCS,
|
||||||
|
CKM_SHA512_RSA_PKCS,
|
||||||
|
CKM_SHA1_RSA_PKCS_PSS,
|
||||||
|
CKM_SHA256_RSA_PKCS_PSS,
|
||||||
|
CKM_SHA384_RSA_PKCS_PSS,
|
||||||
|
CKM_SHA512_RSA_PKCS_PSS,
|
||||||
|
CKM_EC_KEY_PAIR_GEN,
|
||||||
|
CKM_ECDSA,
|
||||||
|
CKM_ECDSA_SHA1,
|
||||||
|
CKM_ECDSA_SHA256,
|
||||||
|
CKM_SHA_1,
|
||||||
|
CKM_SHA256,
|
||||||
|
CKM_SHA384,
|
||||||
|
CKM_SHA512
|
||||||
|
};
|
||||||
|
|
||||||
|
static const CK_MECHANISM_INFO token_mechanism_infos[] = { // KEEP ALIGNED WITH token_mechanisms
|
||||||
|
{1024, 2048, CKF_HW | CKF_GENERATE_KEY_PAIR},
|
||||||
|
{1024, 2048, CKF_HW | CKF_DECRYPT | CKF_SIGN},
|
||||||
|
{1024, 2048, CKF_HW | CKF_SIGN},
|
||||||
|
{1024, 2048, CKF_HW | CKF_DECRYPT | CKF_SIGN},
|
||||||
|
{1024, 2048, CKF_HW | CKF_SIGN},
|
||||||
|
{1024, 2048, CKF_HW | CKF_SIGN},
|
||||||
|
{1024, 2048, CKF_HW | CKF_SIGN},
|
||||||
|
{1024, 2048, CKF_HW | CKF_SIGN},
|
||||||
|
{1024, 2048, CKF_HW | CKF_SIGN},
|
||||||
|
{1024, 2048, CKF_HW | CKF_SIGN},
|
||||||
|
{1024, 2048, CKF_HW | CKF_SIGN},
|
||||||
|
{1024, 2048, CKF_HW | CKF_SIGN},
|
||||||
|
{256, 384, CKF_HW | CKF_GENERATE_KEY_PAIR},
|
||||||
|
{256, 384, CKF_HW | CKF_SIGN},
|
||||||
|
{256, 384, CKF_HW | CKF_SIGN},
|
||||||
|
{256, 384, CKF_HW | CKF_SIGN},
|
||||||
|
{0, 0, CKF_DIGEST},
|
||||||
|
{0, 0, CKF_DIGEST},
|
||||||
|
{0, 0, CKF_DIGEST},
|
||||||
|
{0, 0, CKF_DIGEST}
|
||||||
|
};
|
||||||
|
|
||||||
|
asrt(funcs->C_Initialize(NULL), CKR_OK, "INITIALIZE");
|
||||||
|
|
||||||
|
asrt(funcs->C_GetMechanismList(0, NULL, &n_mechs), CKR_OK, "GetMechanismList");
|
||||||
|
|
||||||
|
mechs = malloc(n_mechs * sizeof(CK_MECHANISM_TYPE));
|
||||||
|
asrt(funcs->C_GetMechanismList(0, mechs, &n_mechs), CKR_OK, "GetMechanismList");
|
||||||
|
|
||||||
|
asrt(memcmp(token_mechanisms, mechs, sizeof(token_mechanisms)), 0, "CHECK MECHS");
|
||||||
|
|
||||||
|
for (i = 0; i < n_mechs; i++) {
|
||||||
|
asrt(funcs->C_GetMechanismInfo(0, mechs[i], &info), CKR_OK, "GET MECH INFO");
|
||||||
|
asrt(memcmp(token_mechanism_infos + i, &info, sizeof(CK_MECHANISM_INFO)), 0, "CHECK MECH INFO");
|
||||||
|
}
|
||||||
|
|
||||||
|
asrt(funcs->C_Finalize(NULL), CKR_OK, "FINALIZE");
|
||||||
|
}
|
||||||
|
|
||||||
int main(void) {
|
int main(void) {
|
||||||
|
|
||||||
get_functions(&funcs);
|
get_functions(&funcs);
|
||||||
@@ -108,6 +178,7 @@ int main(void) {
|
|||||||
#ifdef HW_TESTS
|
#ifdef HW_TESTS
|
||||||
test_initalize();
|
test_initalize();
|
||||||
test_token_info();
|
test_token_info();
|
||||||
|
test_mechanism_list_and_info();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
|
|||||||
Reference in New Issue
Block a user