From: Kyungwook Tak Date: Tue, 6 Dec 2016 07:19:52 +0000 (+0900) Subject: [ckm] Add tc for optional password in one round X-Git-Tag: security-manager_5.5_testing~9^2~15 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=bc7328d01f76cecf052a868e8ad184062bee942c;p=platform%2Fcore%2Ftest%2Fsecurity-tests.git [ckm] Add tc for optional password in one round Change-Id: Iaf2c566b578abc3759e60214109fbe856c737f76 Signed-off-by: Kyungwook Tak --- diff --git a/src/ckm/unprivileged/capi-testcases.cpp b/src/ckm/unprivileged/capi-testcases.cpp index 22a58a21..99a80856 100644 --- a/src/ckm/unprivileged/capi-testcases.cpp +++ b/src/ckm/unprivileged/capi-testcases.cpp @@ -794,6 +794,60 @@ RUNNER_TEST(T3045_save_big_data_C_API, RemoveDataEnv) check_read(TEST_OBJECT1, self_label.c_str(), big_data.data(), BIG_SIZE, CKMC_ERROR_NONE); } +RUNNER_TEST(T3046_save_get_password_protected_data) +{ + const char *alias = "T3046_data_alias"; + const char *password = "test-password"; + std::vector data = { 0x28, 0x34, 0x5a, 0xf3 }; + + ckmc_raw_buffer_s raw_buffer; + raw_buffer.data = data.data(); + raw_buffer.size = data.size(); + + ckmc_policy_s policy; + policy.password = const_cast(password); + policy.extractable = 1; + + int temp; + + RUNNER_ASSERT_MSG( + CKMC_ERROR_NONE == (temp = ckmc_save_data(alias, raw_buffer, policy)), + CKMCReadableError(temp)); + + ckmc_raw_buffer_s *raw_buffer_stored = nullptr; + + // test negative case first + temp = ckmc_get_data(alias, "invalid_password", &raw_buffer_stored); + + // make scoped buffer for in case of success + std::unique_ptr scoped_buffer( + raw_buffer_stored, ckmc_buffer_free); + + RUNNER_ASSERT_MSG(temp == CKMC_ERROR_AUTHENTICATION_FAILED, + "expected(" << CKMCErrorToString(CKMC_ERROR_AUTHENTICATION_FAILED) + << ") but ret(" << CKMCErrorToString(temp) << ")"); + + temp = ckmc_get_data(alias, password, &raw_buffer_stored); + // reset buffer with raw buffer of positive case + scoped_buffer.reset(raw_buffer_stored); + RUNNER_ASSERT_MSG(CKMC_ERROR_NONE == temp, CKMCReadableError(temp)); + + RUNNER_ASSERT_MSG( + raw_buffer_stored->size == raw_buffer.size, + "stored raw buffer size(" << raw_buffer_stored->size + << ") is differ to original raw buffer size(" << raw_buffer.size << ")"); + for (size_t i = 0; i < raw_buffer_stored->size; ++i) + RUNNER_ASSERT_MSG( + raw_buffer_stored->data[i] == raw_buffer.data[i], + "stored raw buffer data[" << i << "](" << raw_buffer_stored->data[i] + << ") is differ to original raw buffer data[" + << i << "](" << raw_buffer.data[i] << ")"); + + RUNNER_ASSERT_MSG( + CKMC_ERROR_NONE == (temp = ckmc_remove_alias(alias)), + CKMCReadableError(temp)); +} + RUNNER_TEST(T3050_deinit_C_API) { int temp;