From 7818b49e7d004fb5246b71764104ac4ab340d139 Mon Sep 17 00:00:00 2001 From: Trevor Bentley Date: Tue, 31 Oct 2017 15:40:51 +0100 Subject: [PATCH] Skip unusable integration tests when testing a NEO --- lib/tests/api.c | 18 ++++++++++-------- ykcs11/tests/ykcs11_tests.c | 15 ++++++++++++--- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/lib/tests/api.c b/lib/tests/api.c index aff6aaa..d0037a0 100644 --- a/lib/tests/api.c +++ b/lib/tests/api.c @@ -435,6 +435,16 @@ END_TEST START_TEST(test_pin_policy_always) { ykpiv_rc res; + { + ykpiv_devmodel model; + model = ykpiv_util_devicemodel(g_state); + // Only works with YK4. NEO should skip. + if (model != DEVTYPE_YK4) { + fprintf(stderr, "WARNING: Not supported with Yubikey NEO. Test skipped.\n"); + return; + } + } + { unsigned char pp = YKPIV_PINPOLICY_ALWAYS; unsigned char tp = YKPIV_TOUCHPOLICY_DEFAULT; @@ -597,14 +607,6 @@ START_TEST(test_generate_key) { } END_TEST -START_TEST(test_read_write_mscmap) { -} -END_TEST - -START_TEST(test_read_write_msroots) { -} -END_TEST - START_TEST(test_authenticate) { ykpiv_rc res; const char *default_mgm_key = "010203040506070801020304050607080102030405060708"; diff --git a/ykcs11/tests/ykcs11_tests.c b/ykcs11/tests/ykcs11_tests.c index 0894e5a..53c26cd 100644 --- a/ykcs11/tests/ykcs11_tests.c +++ b/ykcs11/tests/ykcs11_tests.c @@ -107,10 +107,11 @@ static void test_initalize() { } -static void test_token_info() { +static int test_token_info() { const CK_CHAR_PTR TOKEN_LABEL = "YubiKey PIV"; const CK_CHAR_PTR TOKEN_MODEL = "YubiKey "; // Skip last 3 characters (version dependent) + const CK_CHAR_PTR TOKEN_MODEL_YK4 = "YubiKey YK4"; const CK_CHAR_PTR TOKEN_SERIAL = "1234"; const CK_FLAGS TOKEN_FLAGS = CKF_RNG | CKF_LOGIN_REQUIRED | CKF_USER_PIN_INITIALIZED | CKF_TOKEN_INITIALIZED; const CK_VERSION HW = {0, 0}; @@ -135,6 +136,12 @@ static void test_token_info() { asrt(info.ulFreePublicMemory, CK_UNAVAILABLE_INFORMATION, "FREE_PUB_MEM"); asrt(info.ulTotalPrivateMemory, CK_UNAVAILABLE_INFORMATION, "TOTAL_PVT_MEM"); asrt(info.ulFreePrivateMemory, CK_UNAVAILABLE_INFORMATION, "FREE_PVT_MEM"); + + if (strncmp(info.model, TOKEN_MODEL_YK4, strlen(TOKEN_MODEL_YK4)) != 0) { + dprintf(0, "\n\n** WARNING: Only YK4 supported. Skipping remaining tests.\n\n"); + return -1; + } + asrt(info.hardwareVersion.major, HW.major, "HW_MAJ"); asrt(info.hardwareVersion.minor, HW.minor, "HW_MIN"); @@ -144,7 +151,7 @@ static void test_token_info() { asrt(strncmp(info.utcTime, TOKEN_TIME, sizeof(info.utcTime)), 0, "TOKEN_TIME"); asrt(funcs->C_Finalize(NULL), CKR_OK, "FINALIZE"); - + return 0; } static void test_mechanism_list_and_info() { @@ -652,7 +659,9 @@ int main(void) { exit(77); // exit code 77 == skipped tests test_initalize(); - test_token_info(); + // Require YK4 to continue. Skip if different model found. + if (test_token_info() != 0) + exit(77); test_mechanism_list_and_info(); test_session(); test_login();