X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=tests%2Ftest_db_crypto.cpp;h=a4934484ffc7ddc564d7946d68bcfdb7bab0a47a;hb=ea59c2825e3b8bb2b42ea30f113a96e32dff16bb;hp=4344541b08e06dd3c8bd748d153aa7446ec26b50;hpb=258a1480470b000782260ac7034f33476d43af3b;p=platform%2Fcore%2Fsecurity%2Fkey-manager.git diff --git a/tests/test_db_crypto.cpp b/tests/test_db_crypto.cpp index 4344541..a493448 100644 --- a/tests/test_db_crypto.cpp +++ b/tests/test_db_crypto.cpp @@ -1,5 +1,4 @@ #include -#include #include #include #include @@ -9,8 +8,6 @@ #include #include -BOOST_GLOBAL_FIXTURE(TestConfig) - using namespace CKM; namespace @@ -19,15 +16,15 @@ const int restricted_local = 1; const int restricted_global = 0; const unsigned int c_test_retries = 1000; -const unsigned int c_num_aliases = 500; -const unsigned int c_num_aliases_add_test = 5000; -const unsigned int c_alias_per_label = 15; -} +const unsigned int c_num_names = 500; +const unsigned int c_num_names_add_test = 5000; +const unsigned int c_names_per_label = 15; +} // namespace anonymous BOOST_FIXTURE_TEST_SUITE(DBCRYPTO_TEST, DBFixture) BOOST_AUTO_TEST_CASE(DBtestSimple) { - DBRow rowPattern = create_default_row(); + DB::Row rowPattern = create_default_row(); rowPattern.data = RawBuffer(32, 1); rowPattern.dataSize = rowPattern.data.size(); rowPattern.tag = RawBuffer(AES_GCM_TAG_SIZE, 1); @@ -35,7 +32,7 @@ BOOST_AUTO_TEST_CASE(DBtestSimple) { check_DB_integrity(rowPattern); } BOOST_AUTO_TEST_CASE(DBtestBIG) { - DBRow rowPattern = create_default_row(); + DB::Row rowPattern = create_default_row(); rowPattern.data = createBigBlob(4096); rowPattern.dataSize = rowPattern.data.size(); rowPattern.tag = RawBuffer(AES_GCM_TAG_SIZE, 1); @@ -43,263 +40,152 @@ BOOST_AUTO_TEST_CASE(DBtestBIG) { check_DB_integrity(rowPattern); } BOOST_AUTO_TEST_CASE(DBtestGlobal) { - DBRow rowPattern = create_default_row(); + DB::Row rowPattern = create_default_row(); rowPattern.data = RawBuffer(1024, 2); rowPattern.dataSize = rowPattern.data.size(); rowPattern.tag = RawBuffer(AES_GCM_TAG_SIZE, 1); - BOOST_REQUIRE_NO_THROW(m_db.saveDBRow(rowPattern)); - - DBRow alias_duplicate = rowPattern; - rowPattern.smackLabel = rowPattern.smackLabel + "1"; + BOOST_REQUIRE_NO_THROW(m_db.saveRow(rowPattern)); - BOOST_REQUIRE_THROW(m_db.saveDBRow(alias_duplicate), - DBCrypto::Exception::AliasExists); + DB::Row name_duplicate = rowPattern; + rowPattern.ownerLabel = rowPattern.ownerLabel + "1"; } BOOST_AUTO_TEST_CASE(DBtestTransaction) { - DBRow rowPattern = create_default_row(); + DB::Row rowPattern = create_default_row(); rowPattern.data = RawBuffer(100, 20); rowPattern.dataSize = rowPattern.data.size(); rowPattern.tag = RawBuffer(AES_GCM_TAG_SIZE, 1); - DBCrypto::Transaction transaction(&m_db); + DB::Crypto::Transaction transaction(&m_db); - BOOST_REQUIRE_NO_THROW(m_db.saveDBRow(rowPattern)); + BOOST_REQUIRE_NO_THROW(m_db.saveRow(rowPattern)); BOOST_REQUIRE_NO_THROW(transaction.rollback()); - DBCrypto::DBRowOptional row_optional; - BOOST_REQUIRE_NO_THROW(row_optional = m_db.getDBRow(m_default_alias, m_default_label, - DBDataType::BINARY_DATA)); + DB::Crypto::RowOptional row_optional; + BOOST_REQUIRE_NO_THROW(row_optional = m_db.getRow(m_default_name, m_default_label, + DataType::BINARY_DATA)); BOOST_CHECK_MESSAGE(!row_optional, "Row still present after rollback"); - } -BOOST_AUTO_TEST_CASE(DBaddDataCheckIfPermissionIsAdded) -{ - std::string row_A_alias, row_B_alias; - std::string row_A_label, row_B_label; - generate_alias(0, row_A_alias); generate_label(0, row_A_label); - generate_alias(1, row_B_alias); generate_label(1, row_B_label); - - // insert initial data set - insert_row(row_A_alias, row_A_label); - insert_row(row_B_alias, row_B_label); - read_row_expect_success(row_A_alias, row_A_label); - read_row_expect_success(row_B_alias, row_B_label); - - // verify that no entries present in the permission table - // read row A from label B and vice versa - read_row_expect_fail(row_A_alias, row_B_label); - read_row_expect_fail(row_B_alias, row_A_label); - - // add appropriate permissions for label B - add_permission(row_A_alias, row_A_label, row_B_label); - - // B should have access to A, while A should not to B - // read row A from label B and vice versa - read_row_expect_success(row_A_alias, row_B_label); - read_row_expect_fail(row_B_alias, row_A_label); - - // add appropriate permissions for label A - add_permission(row_B_alias, row_B_label, row_A_label); - - // B should have access to A, same as A have access to B - // read row A from label B and vice versa - read_row_expect_success(row_A_alias, row_B_label); - read_row_expect_success(row_B_alias, row_A_label); -} +BOOST_AUTO_TEST_CASE(DBtestBackend) { + DB::Row rowPattern = create_default_row(); + rowPattern.data = RawBuffer(32, 1); + rowPattern.dataSize = rowPattern.data.size(); + rowPattern.tag = RawBuffer(AES_GCM_TAG_SIZE, 1); + + rowPattern.backendId = CryptoBackend::OpenSSL; + check_DB_integrity(rowPattern); + rowPattern.backendId = CryptoBackend::TrustZone; + check_DB_integrity(rowPattern); -BOOST_AUTO_TEST_CASE(DBremoveDataCheckIfPermissionIsRemoved) -{ - std::string row_A_alias, row_B_alias, row_C_alias; - std::string row_A_label, row_B_label, row_C_label; - generate_alias(0, row_A_alias); generate_label(0, row_A_label); - generate_alias(1, row_B_alias); generate_label(1, row_B_label); - generate_alias(2, row_C_alias); generate_label(2, row_C_label); - - // insert initial data set - insert_row(row_A_alias, row_A_label); - insert_row(row_B_alias, row_B_label); - insert_row(row_C_alias, row_C_label); - add_permission(row_A_alias, row_A_label, row_B_label); - add_permission(row_B_alias, row_B_label, row_A_label); - // to test multiple permissions removal - // put intentionally after row_B_alias permission entry - add_permission(row_A_alias, row_A_label, row_C_label); - - // B should have access to A, same as A have access to B - // read row A from label B and vice versa - read_row_expect_success(row_A_alias, row_B_label); - read_row_expect_success(row_A_alias, row_C_label); - read_row_expect_success(row_B_alias, row_A_label); - read_row_expect_fail(row_B_alias, row_C_label); - - // remove data A - expect permissions for B and C to be removed as well - delete_row(row_A_alias, row_A_label); - // insert it again - expect permissions for label B and C not to be there anymore - insert_row(row_A_alias, row_A_label); - - // read row A from label B and vice versa - read_row_expect_fail(row_A_alias, row_B_label); - read_row_expect_fail(row_A_alias, row_C_label); - read_row_expect_success(row_B_alias, row_A_label); - - // remove data B - expect permission to be removed as well - delete_row(row_B_alias, row_B_label); - // insert it again - expect permissions for label A not to be there anymore - insert_row(row_B_alias, row_B_label); - - // read row A from label B and vice versa - read_row_expect_fail(row_A_alias, row_B_label); - read_row_expect_fail(row_A_alias, row_C_label); - read_row_expect_fail(row_B_alias, row_A_label); - - // sanity check: data exists - read_row_expect_success(row_A_alias, row_A_label); - read_row_expect_success(row_B_alias, row_B_label); + rowPattern.backendId = CryptoBackend::None; + check_DB_integrity(rowPattern); } + BOOST_AUTO_TEST_SUITE_END() BOOST_FIXTURE_TEST_SUITE(DBCRYPTO_PERF_TEST, DBFixture) -BOOST_AUTO_TEST_CASE(DBperfAddAliases) +BOOST_AUTO_TEST_CASE(DBperfAddNames) { // actual test - performance_start("saveDBRow"); + performance_start("saveRow"); { - generate_perf_DB(c_num_aliases_add_test, c_alias_per_label); + generate_perf_DB(c_num_names_add_test, c_names_per_label); } - performance_stop(c_num_aliases_add_test); + performance_stop(c_num_names_add_test); } BOOST_AUTO_TEST_CASE(DBperfLookupAliasByOwner) { // prepare data - generate_perf_DB(c_num_aliases, c_alias_per_label); + generate_perf_DB(c_num_names, c_names_per_label); - unsigned int num_labels = c_num_aliases/c_alias_per_label; - std::string alias, label; + unsigned int num_labels = c_num_names/c_names_per_label; + Name name; + Label label; // actual test - successful lookup - performance_start("getDBRow"); + performance_start("getRow"); for(unsigned int t=0; t + for(unsigned int l=0; l