From: Dongsun Lee Date: Fri, 26 Sep 2014 10:34:14 +0000 (+0900) Subject: add test for HASH_NONE and NO_PADDING algo X-Git-Tag: security-manager_5.5_testing~9^2~154 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=01557e6f9b75099ad9d80752a55f322d132a0f66;p=platform%2Fcore%2Ftest%2Fsecurity-tests.git add test for HASH_NONE and NO_PADDING algo Change-Id: I262202949af148cb0433260965718ee3fff9627a Signed-off-by: Dongsun Lee --- diff --git a/tests/ckm/capi-testcases.cpp b/tests/ckm/capi-testcases.cpp index a6ea694..d7ba986 100644 --- a/tests/ckm/capi-testcases.cpp +++ b/tests/ckm/capi-testcases.cpp @@ -841,7 +841,7 @@ RUNNER_CHILD_TEST(T2052_CAPI_create_rsa_key) ap.allowAPI("key-manager::api-storage", "rw"); ap.applyAndSwithToUser(USER_APP, GROUP_APP); - size_t size = 2048; + size_t size = 1024; const char *private_key_alias = "RSA-test-1-priv"; const char *public_key_alias = "RSA-test-1-pub"; ckmc_policy_s policy_private_key; diff --git a/tests/ckm/main.cpp b/tests/ckm/main.cpp index c5b8c4d..26cfc0f 100644 --- a/tests/ckm/main.cpp +++ b/tests/ckm/main.cpp @@ -1488,6 +1488,7 @@ RUNNER_TEST(T1413_dsa_key_create_verify) "Error=" << CKM::ErrorToString(temp)); } + RUNNER_TEST(T1414_ec_key_create_verify) { int temp; @@ -1955,6 +1956,317 @@ RUNNER_TEST(T1420_deinit) "Error=" << CKM::ErrorToString(temp)); } +RUNNER_TEST(T14180_init) +{ + int temp; + auto control = CKM::Control::create(); + RUNNER_ASSERT_MSG( + CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "test-pass")), + "Error=" << CKM::ErrorToString(temp)); + + auto manager = CKM::Manager::create(); + + // Prepare RSA Key Pair + std::string prv = "-----BEGIN RSA PRIVATE KEY-----\n" + "Proc-Type: 4,ENCRYPTED\n" + "DEK-Info: DES-EDE3-CBC,6C6507B11671DABC\n" + "\n" + "YiKNviNqc/V/i241CKtAVsNckesE0kcaka3VrY7ApXR+Va93YoEwVQ8gB9cE/eHH\n" + "S0j3ZS1PAVFM/qo4ZnPdMzaSLvTQw0GAL90wWgF3XQ+feMnWyBObEoQdGXE828TB\n" + "SLz4UOIQ55Dx6JSWTfEhwAlPs2cEWD14xvuxPzAEzBIYmWmBBsCN94YgFeRTzjH0\n" + "TImoYVMN60GgOfZWw6rXq9RaV5dY0Y6F1piypCLGD35VaXAutdHIDvwUGECPm7SN\n" + "w05jRro53E1vb4mYlZEY/bs4q7XEOI5+ZKT76Xn0oEJNX1KRL1h2q8fgUkm5j40M\n" + "uQj71aLR9KyIoQARwGLeRy09tLVjH3fj66CCMqaPcxcIRIyWi5yYBB0s53ipm6A9\n" + "CYuyc7MS2C0pOdWKsDvYsHR/36KUiIdPuhF4AbaTqqO0eWeuP7Na7dGK56Fl+ooi\n" + "cUpJr7cIqMl2vL25B0jW7d4TB3zwCEkVVD1fBPeNoZWo30z4bILcBqjjPkQfHZ2e\n" + "xNraG3qI4FHjoPT8JEE8p+PgwaMoINlICyIMKiCdvwz9yEnsHPy7FkmatpS+jFoS\n" + "mg8R9vMwgK/HGEm0dmb/7/a0XsG2jCDm6cOmJdZJFQ8JW7hFs3eOHpNlQYDChG2D\n" + "A1ExslqBtbpicywTZhzFdYU/hxeCr4UqcY27Zmhr4JlBPMyvadWKeOqCamWepjbT\n" + "T/MhWJbmWgZbI5s5sbpu7cOYubQcUIEsTaQXGx/KEzGo1HLn9tzSeQfP/nqjAD/L\n" + "T5t1Mb8o4LuV/fGIT33Q3i2FospJMqp2JINNzG18I6Fjo08PTvJ3row40Rb76+lJ\n" + "wN1IBthgBgsgsOdB6XNc56sV+uq2TACsNNWw+JnFRCkCQgfF/KUrvN+WireWq88B\n" + "9UPG+Hbans5A6K+y1a+bzfdYnKws7x8wNRyPxb7Vb2t9ZTl5PBorPLVGsjgf9N5X\n" + "tCdBlfJsUdXot+EOxrIczV5zx0JIB1Y9hrDG07RYkzPuJKxkW7skqeLo8oWGVpaQ\n" + "LGWvuebky1R75hcSuL3e4QHfjBHPdQ31fScB884tqkbhBAWr2nT9bYEmyT170bno\n" + "8QkyOSb99xZBX55sLDHs9p61sTJr2C9Lz/KaWQs+3hTkpwSjSRyjEMH2n491qiQX\n" + "G+kvLEnvtR8sl9zinorj/RfsxyPntAxudfY3qaYUu2QkLvVdfTVUVbxS/Fg8f7B3\n" + "hEjCtpKgFjPxQuHE3didNOr5xM7mkmLN/QA7yHVgdpE64T5mFgC3JcVRpcR7zBPH\n" + "3OeXHgjrhDfN8UIX/cq6gNgD8w7O0rhHa3mEXI1xP14ykPcJ7wlRuLm9P3fwx5A2\n" + "jQrVKJKw1Nzummmspn4VOpJY3LkH4Sxo4e7Soo1l1cxJpzmERwgMF+vGz1L70+DG\n" + "M0hVrz1PxlOsBBFgcdS4TB91DIs/RcFDqrJ4gOPNKCgBP+rgTXXLFcxUwJfE3lKg\n" + "Kmpwdne6FuQYX3eyRVAmPgOHbJuRQCh/V4fYo51UxCcEKeKy6UgOPEJlXksWGbH5\n" + "VFmlytYW6dFKJvjltSmK6L2r+TlyEQoXwTqe4bkfhB2LniDEq28hKQ==\n" + "-----END RSA PRIVATE KEY-----\n"; + + std::string pub = "-----BEGIN PUBLIC KEY-----\n" + "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n" + "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n" + "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n" + "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n" + "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n" + "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n" + "zQIDAQAB\n" + "-----END PUBLIC KEY-----\n"; + + CKM::Alias aliasPub = "pub_nohash1"; + CKM::Alias aliasPrv = "prv_nohash1"; + CKM::Password password = "1234"; + + auto keyPub = CKM::Key::create(CKM::RawBuffer(pub.begin(), pub.end())); + auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()), password); + + RUNNER_ASSERT_MSG(NULL != keyPub.get(), + "Key is empty. Failed to import public key."); + RUNNER_ASSERT_MSG(NULL != keyPrv.get(), + "Key is empty. Failed to import private key."); + + RUNNER_ASSERT_MSG( + CKM_API_SUCCESS == (temp = manager->saveKey(aliasPub, keyPub, CKM::Policy())), + "Error=" << CKM::ErrorToString(temp)); + RUNNER_ASSERT_MSG( + CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())), + "Error=" << CKM::ErrorToString(temp)); + + // Prepare ECDSA Key Pair + std::string ecprv = "-----BEGIN EC PRIVATE KEY-----\n" + "MHQCAQEEIJNud6U4h8EM1rASn4W5vQOJELTaVPQTUiESaBULvQUVoAcGBSuBBAAK\n" + "oUQDQgAEL1R+hgjiFrdjbUKRNOxUG8ze9nveD9zT05YHeT7vK0w08AUL1HCH5nFV\n" + "ljePBYSxe6CybFiseayaxRxjA+iF1g==\n" + "-----END EC PRIVATE KEY-----\n"; + + std::string ecpub = "-----BEGIN PUBLIC KEY-----\n" + "MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEL1R+hgjiFrdjbUKRNOxUG8ze9nveD9zT\n" + "05YHeT7vK0w08AUL1HCH5nFVljePBYSxe6CybFiseayaxRxjA+iF1g==\n" + "-----END PUBLIC KEY-----\n"; + + CKM::Alias aliasEcPub = "ecpub_nohash1"; + CKM::Alias aliasEcPrv = "ecprv_nohash1"; + + auto ecKeyPub = CKM::Key::create(CKM::RawBuffer(ecpub.begin(), ecpub.end())); + auto ecKeyPrv = CKM::Key::create(CKM::RawBuffer(ecprv.begin(), ecprv.end())); + + RUNNER_ASSERT_MSG(NULL != ecKeyPub.get(), + "Key is empty. Failed to import public key."); + RUNNER_ASSERT_MSG(NULL != ecKeyPrv.get(), + "Key is empty. Failed to import private key."); + + RUNNER_ASSERT_MSG( + CKM_API_SUCCESS == (temp = manager->saveKey(aliasEcPub, ecKeyPub, CKM::Policy())), + "Error=" << CKM::ErrorToString(temp)); + RUNNER_ASSERT_MSG( + CKM_API_SUCCESS == (temp = manager->saveKey(aliasEcPrv, ecKeyPrv, CKM::Policy())), + "Error=" << CKM::ErrorToString(temp)); +} + + +RUNNER_TEST(T14181_rsa_create_signatue_nohash) +{ + int temp; + auto manager = CKM::Manager::create(); + std::string message = "message asdfaslkdfjlksadjf test"; + + CKM::Alias aliasPub = "pub_nohash1"; + CKM::Alias aliasPrv = "prv_nohash1"; + + CKM::HashAlgorithm hash = CKM::HashAlgorithm::NONE; + CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1; + CKM::RawBuffer signature; + + RUNNER_ASSERT_MSG( + CKM_API_SUCCESS == (temp = manager->createSignature( + aliasPrv, + CKM::Password(), + CKM::RawBuffer(message.begin(), message.end()), + hash, + padd, + signature)), + "Error=" << CKM::ErrorToString(temp)); + + RUNNER_ASSERT_MSG( + CKM_API_SUCCESS == (temp = manager->verifySignature( + aliasPub, + CKM::Password(), + CKM::RawBuffer(message.begin(), message.end()), + signature, + hash, + padd)), + "Error=" << CKM::ErrorToString(temp)); + + RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small"); + memcpy((void*)signature.data(), "BROKEN", 6); + + RUNNER_ASSERT_MSG( + CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature( + aliasPub, + CKM::Password(), + CKM::RawBuffer(message.begin(), message.end()), + signature, + hash, + padd)), + "Error=" << CKM::ErrorToString(temp)); +} + +RUNNER_TEST(T14182_rsa_create_signatue_nohash_nopad) +{ + int temp; + auto manager = CKM::Manager::create(); + std::string message = "message asdfaslkdfjlksadjf test"; + + CKM::Alias aliasPub = "pub_nohash1"; + CKM::Alias aliasPrv = "prv_nohash1"; + + CKM::HashAlgorithm hash = CKM::HashAlgorithm::NONE; + CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::NONE; + CKM::RawBuffer signature; + + RUNNER_ASSERT_MSG( + CKM_API_ERROR_INPUT_PARAM == (temp = manager->createSignature( + aliasPrv, + CKM::Password(), + CKM::RawBuffer(message.begin(), message.end()), + hash, + padd, + signature)), + "Error=" << CKM::ErrorToString(temp)); +} + +RUNNER_TEST(T14183_rsa_create_signatue_nohash_bigmsg) +{ + int temp; + auto manager = CKM::Manager::create(); + std::string message = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; + + CKM::Alias aliasPub = "pub_nohash1"; + CKM::Alias aliasPrv = "prv_nohash1"; + + CKM::HashAlgorithm hash = CKM::HashAlgorithm::NONE; + CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1; + CKM::RawBuffer signature; + + RUNNER_ASSERT_MSG( + CKM_API_ERROR_INPUT_PARAM == (temp = manager->createSignature( + aliasPrv, + CKM::Password(), + CKM::RawBuffer(message.begin(), message.end()), + hash, + padd, + signature)), + "Error=" << CKM::ErrorToString(temp)); +} + + +RUNNER_TEST(T14184_ec_create_signatue_nohash) +{ + int temp; + auto manager = CKM::Manager::create(); + + std::string message = "message test"; + + CKM::Alias aliasPub = "ecpub_nohash1"; + CKM::Alias aliasPrv = "ecprv_nohash1"; + CKM::HashAlgorithm hash = CKM::HashAlgorithm::NONE; + CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1; + CKM::RawBuffer signature; + + RUNNER_ASSERT_MSG( + CKM_API_SUCCESS == (temp = manager->createSignature( + aliasPrv, + CKM::Password(), + CKM::RawBuffer(message.begin(), message.end()), + hash, + padd, + signature)), + "Error=" << CKM::ErrorToString(temp)); + + RUNNER_ASSERT_MSG( + CKM_API_SUCCESS == (temp = manager->verifySignature( + aliasPub, + CKM::Password(), + CKM::RawBuffer(message.begin(), message.end()), + signature, + hash, + padd)), + "Error=" << CKM::ErrorToString(temp)); + + RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small"); + + memcpy((void*)signature.data(), "BROKEN", 6); + + RUNNER_ASSERT_MSG( + CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature( + aliasPub, + CKM::Password(), + CKM::RawBuffer(message.begin(), message.end()), + signature, + hash, + padd)), + "Error=" << CKM::ErrorToString(temp)); +} + +RUNNER_TEST(T14185_ec_create_signatue_nohash_bigmsg) +{ + int temp; + auto manager = CKM::Manager::create(); + + int msgSize = 1024*1024; + char big_msg[msgSize]; + for(int i =0; icreateSignature( + aliasPrv, + CKM::Password(), + CKM::RawBuffer(message.begin(), message.end()), + hash, + padd, + signature)), + "Error=" << CKM::ErrorToString(temp)); +} + + +RUNNER_TEST(T14189_deinit) +{ + int temp; + auto control = CKM::Control::create(); + + RUNNER_ASSERT_MSG( + CKM_API_SUCCESS == (temp = control->lockUserKey(0)), + "Error=" << CKM::ErrorToString(temp)); + RUNNER_ASSERT_MSG( + CKM_API_SUCCESS == (temp = control->removeUserData(0)), + "Error=" << CKM::ErrorToString(temp)); +} + + RUNNER_TEST_GROUP_INIT(T151_CKM_STORAGE_PERNAMENT_TESTS); RUNNER_CHILD_TEST(T1510_init_unlock_key) @@ -2101,7 +2413,7 @@ RUNNER_CHILD_TEST(T1611_unlock_default_passwd) ap.allowAPI("key-manager::api-storage", "rw"); ap.applyAndSwithToUser(USER_APP, GROUP_APP); - int temp; + int temp; auto manager = CKM::Manager::create(); std::string keyPem = "-----BEGIN PUBLIC KEY-----\n" @@ -2155,7 +2467,7 @@ RUNNER_CHILD_TEST(T1613_unlock_default_passwd_negative) ap.allowAPI("key-manager::api-storage", "rw"); ap.applyAndSwithToUser(USER_APP, GROUP_APP); - int temp; + int temp; auto manager = CKM::Manager::create(); std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"