3 #include <dpl/test/test_runner.h>
4 #include <dpl/test/test_runner_child.h>
6 #include <tests_common.h>
7 #include <access_provider2.h>
9 #include <ckm-common.h>
10 #include <ckm/ckm-manager.h>
11 #include <ckm/ckm-control.h>
12 #include <ckm/ckm-password.h>
13 #include <ckm/ckm-type.h>
14 #include <ckm/ckm-pkcs12.h>
18 #include <openssl/x509.h>
19 #include <openssl/x509v3.h>
21 #include <dpl/log/log.h>
24 const int USER_APP = 5000;
25 const int GROUP_APP = 5000;
26 const int USER_TEST = 5001;
28 const CKM::CertificateShPtrVector EMPTY_CERT_VECTOR;
29 const CKM::AliasVector EMPTY_ALIAS_VECTOR;
30 } // namespace anonymous
33 * How to numerate tests:
35 * T - test case (always T)
36 * AB - number of test group (always two digits)
37 * C - test number in group (all tests with same TABC must be run in the same time).
41 RUNNER_TEST_GROUP_INIT(A_T0010_CKM_OPENSSL_INIT);
42 RUNNER_TEST(A_T0011_OpenSSL_not_init_client_parse_PKCS) {
43 stop_service(MANAGER);
44 start_service(MANAGER);
46 std::ifstream is("/usr/share/ckm-test/pkcs.p12");
47 std::istreambuf_iterator<char> begin(is), end;
48 std::vector<char> buff(begin, end);
50 CKM::RawBuffer buffer(buff.size());
51 memcpy(buffer.data(), buff.data(), buff.size());
53 auto pkcs = CKM::PKCS12::create(buffer, CKM::Password());
56 "Error in PKCS12::create()");
58 // all further tests will start with newly started service,
59 // OpenSSL on the service side will have to be properly initialized too
60 stop_service(MANAGER);
61 start_service(MANAGER);
64 RUNNER_TEST_GROUP_INIT(T0010_CKM_CONTROL);
66 RUNNER_TEST(T0011_Control)
69 auto control = CKM::Control::create();
71 control->removeUserData(0);
72 control->removeUserData(20);
73 control->removeUserData(USER_APP);
76 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "simple-password")),
77 "Error=" << CKM::ErrorToString(temp));
80 RUNNER_TEST(T0012_Control)
83 auto control = CKM::Control::create();
85 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "simple-password")),
86 "Error=" << CKM::ErrorToString(temp));
88 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
89 "Error=" << CKM::ErrorToString(temp));
92 RUNNER_TEST(T0013_Control)
95 auto control = CKM::Control::create();
97 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "simple-password")),
98 "Error=" << CKM::ErrorToString(temp));
101 RUNNER_TEST(T0014_Control)
104 auto control = CKM::Control::create();
105 RUNNER_ASSERT_MSG_BT(
106 CKM_API_SUCCESS == (temp = control->removeUserData(14)),
107 "Error=" << CKM::ErrorToString(temp));
109 RUNNER_ASSERT_MSG_BT(
110 CKM_API_SUCCESS == (temp = control->resetUserPassword(14, "simple-password")),
111 "Error=" << CKM::ErrorToString(temp));
113 RUNNER_ASSERT_MSG_BT(
114 CKM_API_SUCCESS == (temp = control->resetUserPassword(14, "something")),
115 "Error=" << CKM::ErrorToString(temp));
117 RUNNER_ASSERT_MSG_BT(
118 CKM_API_SUCCESS == (temp = control->unlockUserKey(14, "test-pass")),
119 "Error=" << CKM::ErrorToString(temp));
121 RUNNER_ASSERT_MSG_BT(
122 CKM_API_SUCCESS == (temp = control->lockUserKey(14)),
123 "Error=" << CKM::ErrorToString(temp));
125 RUNNER_ASSERT_MSG_BT(
126 CKM_API_ERROR_BAD_REQUEST == (temp = control->resetUserPassword(14, "something")),
127 "Error=" << CKM::ErrorToString(temp));
129 RUNNER_ASSERT_MSG_BT(
130 CKM_API_SUCCESS == (temp = control->removeUserData(14)),
131 "Error=" << CKM::ErrorToString(temp));
134 RUNNER_TEST(T0015_Control)
137 auto control = CKM::Control::create();
139 CKM_API_SUCCESS == (temp = control->unlockUserKey(20, "test-pass")),
140 "Error=" << CKM::ErrorToString(temp));
142 CKM_API_SUCCESS == (temp = control->changeUserPassword(20, "test-pass", "new-pass")),
143 "Error=" << CKM::ErrorToString(temp));
145 CKM_API_SUCCESS == (temp = control->lockUserKey(20)),
146 "Error=" << CKM::ErrorToString(temp));
148 CKM_API_SUCCESS == (temp = control->removeUserData(20)),
149 "Error=" << CKM::ErrorToString(temp));
152 RUNNER_TEST(T0016_Control_negative_wrong_password)
155 auto control = CKM::Control::create();
156 RUNNER_ASSERT_MSG_BT(
157 CKM_API_SUCCESS == (temp = control->unlockUserKey(20, "test-pass")),
158 "Error=" << CKM::ErrorToString(temp));
159 RUNNER_ASSERT_MSG_BT(
160 CKM_API_SUCCESS == (temp = control->changeUserPassword(20, "test-pass", "new-pass")),
161 "Error=" << CKM::ErrorToString(temp));
162 RUNNER_ASSERT_MSG_BT(
163 CKM_API_SUCCESS == (temp = control->lockUserKey(20)),
164 "Error=" << CKM::ErrorToString(temp));
165 RUNNER_ASSERT_MSG_BT(
166 CKM_API_ERROR_AUTHENTICATION_FAILED == (temp = control->unlockUserKey(20, "incorrect-password")),
167 "Error=" << CKM::ErrorToString(temp));
168 RUNNER_ASSERT_MSG_BT(
169 CKM_API_SUCCESS == (temp = control->removeUserData(20)),
170 "Error=" << CKM::ErrorToString(temp));
173 RUNNER_TEST_GROUP_INIT(T101_CKM_QUICK_SET_GET_TESTS);
175 RUNNER_TEST(T1010_init)
178 auto control = CKM::Control::create();
180 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "simple-password")),
181 "Error=" << CKM::ErrorToString(temp));
183 CKM_API_SUCCESS == (temp = control->unlockUserKey(USER_APP, "user-pass")),
184 "Error=" << CKM::ErrorToString(temp));
187 RUNNER_TEST(T1011_key)
190 auto manager = CKM::Manager::create();
192 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
193 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
194 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
195 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
196 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
197 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
198 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
200 "-----END PUBLIC KEY-----";
202 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
203 auto key = CKM::Key::create(buffer, CKM::Password());
205 CKM::Alias alias = "mykey";
208 CKM_API_SUCCESS == (temp = manager->saveKey(alias, key, CKM::Policy())),
209 "Error=" << CKM::ErrorToString(temp));
211 CKM_API_SUCCESS == (temp = manager->getKey(alias, CKM::Password(), key2)),
212 "Error=" << CKM::ErrorToString(temp));
214 key->getDER() == key2->getDER(),
215 "Key value has been changed by service");
218 RUNNER_TEST(T1012_certificate)
221 auto manager = CKM::Manager::create();
223 std::string certPem =
224 "-----BEGIN CERTIFICATE-----\n"
225 "MIIEgDCCA2igAwIBAgIIcjtBYJGQtOAwDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UE\n"
226 "BhMCVVMxEzARBgNVBAoTCkdvb2dsZSBJbmMxJTAjBgNVBAMTHEdvb2dsZSBJbnRl\n"
227 "cm5ldCBBdXRob3JpdHkgRzIwHhcNMTQwNTIyMTEyOTQyWhcNMTQwODIwMDAwMDAw\n"
228 "WjBtMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwN\n"
229 "TW91bnRhaW4gVmlldzETMBEGA1UECgwKR29vZ2xlIEluYzEcMBoGA1UEAwwTYWNj\n"
230 "b3VudHMuZ29vZ2xlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB\n"
231 "ALtlLWVWPN3q3bSEQl1Z97gPdgl5vbgJOZSAr0ZY0tJCuFLBbUKetJWryyE+5KpG\n"
232 "gMMpLS4v8/bvXaZc6mAs+RfAqGM24C3vQg5hPnj4dflnhL0WiOCZBurm1tV4oexk\n"
233 "HLXs3jr/jpnb738AQpj8zZ9a4VEBuHJRZALnWZ/XhqU+dvYomAoRQNuL5OhkT7uu\n"
234 "d0NKJL9JjYLyQglGgE2sVsWv2kj7EO/P9Q6NEKt9BGmhMsFvtfeKUaymynaxpR1g\n"
235 "wEPlqYvB38goh1dIOgVLT0OVyLImeg5Mdwar/8c1U0OYhLOc6PJapOZAfUkE+3+w\n"
236 "xYt8AChLN1b5szOwInrCVpECAwEAAaOCAUYwggFCMB0GA1UdJQQWMBQGCCsGAQUF\n"
237 "BwMBBggrBgEFBQcDAjAeBgNVHREEFzAVghNhY2NvdW50cy5nb29nbGUuY29tMGgG\n"
238 "CCsGAQUFBwEBBFwwWjArBggrBgEFBQcwAoYfaHR0cDovL3BraS5nb29nbGUuY29t\n"
239 "L0dJQUcyLmNydDArBggrBgEFBQcwAYYfaHR0cDovL2NsaWVudHMxLmdvb2dsZS5j\n"
240 "b20vb2NzcDAdBgNVHQ4EFgQU0/UtToEtNIfwDwHuYGuVKcj0xK8wDAYDVR0TAQH/\n"
241 "BAIwADAfBgNVHSMEGDAWgBRK3QYWG7z2aLV29YG2u2IaulqBLzAXBgNVHSAEEDAO\n"
242 "MAwGCisGAQQB1nkCBQEwMAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL3BraS5nb29n\n"
243 "bGUuY29tL0dJQUcyLmNybDANBgkqhkiG9w0BAQUFAAOCAQEAcGNI/X9f0g+7ij0o\n"
244 "ehLpk6vxSMQGrmOZ4+PG/MC9SLClCkt7zJkfU7erZnyVXyxCpwlljq+Wk9YTPUOq\n"
245 "xD/V2ikQVSAANoxGJFO9UoL5jzWusPhKKv8CcM7fuiERz8K+CfBcqfxbgI5rH0g5\n"
246 "dYclmLC81cJ/08i+9Nltvxv69Y3hGfEICT6K+EdSxwnQzOhpMZmvxZsIj+d6CVNa\n"
247 "9ICYgUthsNQVWzrIs5wknpjjZ9liDMwJX0vu8A0rce4X/Lna5hh2bW9igz2iP5WM\n"
248 "9fuwdbTw4y3jfPQgszU4YZxWxhMzccxe058Qx1tLndAknBQEBesQjXytVQpuM1SV\n"
250 "-----END CERTIFICATE-----\n";
252 CKM::RawBuffer buffer(certPem.begin(), certPem.end());
253 auto cert = CKM::Certificate::create(buffer, CKM::DataFormat::FORM_PEM);
254 CKM::CertificateShPtr cert2;
255 CKM::Alias alias = "myCert";
258 CKM_API_SUCCESS == (temp = manager->saveCertificate(alias, cert, CKM::Policy())),
259 "Error=" << CKM::ErrorToString(temp));
261 CKM_API_SUCCESS == (temp = manager->getCertificate(alias, CKM::Password(), cert2)),
262 "Error=" << CKM::ErrorToString(temp));
264 cert->getDER() == cert2->getDER(),
265 "Data has been modified in key manager");
268 RUNNER_CHILD_TEST(T1013_user_app_save_key)
270 AccessProvider ap("mylabel");
271 ap.allowAPI("key-manager::api-storage", "rw");
272 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
274 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
275 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
276 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
277 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
278 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
279 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
280 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
282 "-----END PUBLIC KEY-----";
285 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
286 auto key = CKM::Key::create(buffer, CKM::Password());
288 CKM::Alias alias = "mykey";
289 auto manager = CKM::Manager::create();
292 CKM_API_SUCCESS == (temp = manager->saveKey(alias, key, CKM::Policy("x"))),
293 "Error=" << CKM::ErrorToString(temp));
295 CKM_API_SUCCESS == (temp = manager->getKey(alias, CKM::Password("x"), key2)),
296 "Error=" << CKM::ErrorToString(temp));
298 key->getDER() == key2->getDER(), "Key value has been changed by service");
301 RUNNER_TEST(T1014_save_with_label)
304 auto manager = CKM::Manager::create();
306 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
307 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
308 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
309 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
310 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
311 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
312 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
314 "-----END PUBLIC KEY-----";
316 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
317 auto key = CKM::Key::create(buffer, CKM::Password());
318 CKM::KeyShPtr key_name, key_full_addr;
319 CKM::Alias alias = "mykey-2";
320 CharPtr top_label = get_label();
321 std::string full_address = aliasWithLabel(top_label.get(), alias.c_str());
324 CKM_API_SUCCESS == (temp = manager->saveKey(full_address, key, CKM::Policy())),
325 "Error=" << CKM::ErrorToString(temp));
329 CKM_API_SUCCESS == (temp = manager->getKey(alias, CKM::Password(), key_name)),
330 "Error=" << CKM::ErrorToString(temp));
332 key->getDER() == key_name->getDER(),
333 "Key value has been changed by service");
335 // lookup by full address
337 CKM_API_SUCCESS == (temp = manager->getKey(full_address, CKM::Password(), key_full_addr)),
338 "Error=" << CKM::ErrorToString(temp));
340 key->getDER() == key_full_addr->getDER(),
341 "Key value has been changed by service");
344 RUNNER_TEST(T1015_deinit)
347 auto control = CKM::Control::create();
350 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
351 "Error=" << CKM::ErrorToString(temp));
353 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
354 "Error=" << CKM::ErrorToString(temp));
356 CKM_API_SUCCESS == (temp = control->lockUserKey(USER_APP)),
357 "Error=" << CKM::ErrorToString(temp));
359 CKM_API_SUCCESS == (temp = control->removeUserData(USER_APP)),
360 "Error=" << CKM::ErrorToString(temp));
363 RUNNER_TEST_GROUP_INIT(T102_CKM_QUICK_GET_ALIAS_TESTS);
365 RUNNER_TEST(T1020_init)
368 auto control = CKM::Control::create();
370 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "test-pass")),
371 "Error=" << CKM::ErrorToString(temp));
373 CKM_API_SUCCESS == (temp = control->unlockUserKey(USER_APP, "user-pass")),
374 "Error=" << CKM::ErrorToString(temp));
377 RUNNER_TEST(T1021_save_keys_get_alias)
380 auto manager = CKM::Manager::create();
382 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
383 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
384 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
385 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
386 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
387 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
388 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
390 "-----END PUBLIC KEY-----";
392 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
393 auto key = CKM::Key::create(buffer, CKM::Password());
394 CKM::AliasVector labelAliasVector;
397 CKM_API_SUCCESS == (temp = manager->saveKey("rootkey1", key, CKM::Policy())),
398 "Error=" << CKM::ErrorToString(temp));
400 CKM_API_SUCCESS == (temp = manager->saveKey("rootkey2", key, CKM::Policy())),
401 "Error=" << CKM::ErrorToString(temp));
403 CKM_API_SUCCESS == (temp = manager->saveKey("rootkey3", key, CKM::Policy(CKM::Password(), false))),
404 "Error=" << CKM::ErrorToString(temp));
406 CKM_API_SUCCESS == (temp = manager->getKeyAliasVector(labelAliasVector)),
407 "Error=" << CKM::ErrorToString(temp));
409 labelAliasVector.size() == 3,
410 "Wrong size of list: " << labelAliasVector.size() << " Expected: 3");
413 RUNNER_CHILD_TEST(T1022_app_user_save_keys_get_alias)
415 AccessProvider ap("mylabel");
416 ap.allowAPI("key-manager::api-storage", "rw");
417 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
420 auto manager = CKM::Manager::create();
422 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
423 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
424 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
425 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
426 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
427 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
428 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
430 "-----END PUBLIC KEY-----";
432 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
433 auto key = CKM::Key::create(buffer, CKM::Password());
434 CKM::AliasVector labelAliasVector;
437 CKM_API_SUCCESS == (temp = manager->saveKey("appkey1", key, CKM::Policy())),
438 "Error=" << CKM::ErrorToString(temp));
440 CKM_API_SUCCESS == (temp = manager->saveKey("appkey2", key, CKM::Policy())),
441 "Error=" << CKM::ErrorToString(temp));
443 CKM_API_SUCCESS == (temp = manager->saveKey("appkey3", key, CKM::Policy(CKM::Password(), false))),
444 "Error=" << CKM::ErrorToString(temp));
446 CKM_API_SUCCESS == (temp = manager->getKeyAliasVector(labelAliasVector)),
447 "Error=" << CKM::ErrorToString(temp));
449 labelAliasVector.size() == 3,
450 "Wrong size of list: " << labelAliasVector.size() << " Expected: 3");
453 RUNNER_CHILD_TEST(T1023_app_user_save_keys_exportable_flag)
455 AccessProvider ap("mylabel");
456 ap.allowAPI("key-manager::api-storage", "rw");
457 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
460 auto manager = CKM::Manager::create();
462 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
463 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
464 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
465 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
466 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
467 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
468 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
470 "-----END PUBLIC KEY-----";
472 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
473 auto key = CKM::Key::create(buffer, CKM::Password());
474 CKM::AliasVector aliasVector;
475 CKM::Policy notExportable(CKM::Password(), false);
478 CKM_API_SUCCESS == (temp = manager->saveKey("appkey4", key, notExportable)),
479 "Error=" << CKM::ErrorToString(temp));
481 CKM_API_ERROR_NOT_EXPORTABLE == (temp = manager->getKey("appkey4", CKM::Password(), key)),
482 "Error=" << CKM::ErrorToString(temp));
484 CKM_API_ERROR_INPUT_PARAM == (temp = manager->saveData("data3", buffer, notExportable)),
485 "Error=" << CKM::ErrorToString(temp));
488 RUNNER_TEST(T1029_deinit)
491 auto control = CKM::Control::create();
494 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
495 "Error=" << CKM::ErrorToString(temp));
497 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
498 "Error=" << CKM::ErrorToString(temp));
500 CKM_API_SUCCESS == (temp = control->lockUserKey(USER_APP)),
501 "Error=" << CKM::ErrorToString(temp));
503 CKM_API_SUCCESS == (temp = control->removeUserData(USER_APP)),
504 "Error=" << CKM::ErrorToString(temp));
507 RUNNER_TEST_GROUP_INIT(T103_CKM_QUICK_REMOVE_BIN_DATA_TEST);
509 RUNNER_TEST(T1030_init)
512 auto control = CKM::Control::create();
514 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "test-pass")),
515 "Error=" << CKM::ErrorToString(temp));
517 CKM_API_SUCCESS == (temp = control->unlockUserKey(USER_APP, "user-pass")),
518 "Error=" << CKM::ErrorToString(temp));
521 RUNNER_TEST(T1031_save_get_bin_data)
524 auto manager = CKM::Manager::create();
526 std::string binData1 = "My bin data1";
527 std::string binData2 = "My bin data2";
528 std::string binData3 = "My bin data3";
530 CKM::RawBuffer buffer1(binData1.begin(), binData1.end());
531 CKM::RawBuffer buffer2(binData2.begin(), binData2.end());
532 CKM::RawBuffer buffer3(binData3.begin(), binData3.end());
534 CKM::AliasVector labelAliasVector;
537 CKM_API_SUCCESS == (temp = manager->saveData("data1", buffer1, CKM::Policy())),
538 "Error=" << CKM::ErrorToString(temp));
540 CKM_API_SUCCESS == (temp = manager->saveData("data2", buffer2, CKM::Policy())),
541 "Error=" << CKM::ErrorToString(temp));
543 CKM_API_SUCCESS == (temp = manager->saveData("data3", buffer3, CKM::Policy(CKM::Password(), true))),
544 "Error=" << CKM::ErrorToString(temp));
546 CKM_API_ERROR_INPUT_PARAM == (temp = manager->saveData("data4", buffer3, CKM::Policy(CKM::Password(), false))),
547 "Error=" << CKM::ErrorToString(temp));
549 CKM_API_SUCCESS == (temp = manager->getDataAliasVector(labelAliasVector)),
550 "Error=" << CKM::ErrorToString(temp));
552 labelAliasVector.size() == 3,
553 "Wrong size of list: " << labelAliasVector.size() << " Expected: 3");
555 CKM::RawBuffer buffer;
557 CKM_API_SUCCESS == (temp = manager->getData("data2", CKM::Password(), buffer)),
558 "Error=" << CKM::ErrorToString(temp));
563 RUNNER_ASSERT_MSG_BT(
564 CKM_API_SUCCESS == (temp = manager->getData("data2", CKM::Password("Password"), buffer)),
565 "The wrong password should be ignored because non was used in saveData. Error=" << CKM::ErrorToString(temp));
568 RUNNER_CHILD_TEST(T1032_app_user_save_bin_data)
570 AccessProvider ap("mylabel");
571 ap.allowAPI("key-manager::api-storage", "rw");
572 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
575 auto manager = CKM::Manager::create();
577 std::string binData = "My bin data";
579 CKM::RawBuffer buffer(binData.begin(), binData.end());
581 CKM::AliasVector labelAliasVector;
584 CKM_API_SUCCESS == (temp = manager->saveData("appdata1", buffer, CKM::Policy())),
585 "Error=" << CKM::ErrorToString(temp));
587 CKM_API_SUCCESS == (temp = manager->saveData("appdata2", buffer, CKM::Policy())),
588 "Error=" << CKM::ErrorToString(temp));
590 CKM_API_SUCCESS == (temp = manager->saveData("appdata3", buffer, CKM::Policy(CKM::Password(), true))),
591 "Error=" << CKM::ErrorToString(temp));
593 CKM_API_SUCCESS == (temp = manager->getDataAliasVector(labelAliasVector)),
594 "Error=" << CKM::ErrorToString(temp));
596 labelAliasVector.size() == 3,
597 "Wrong size of list: " << labelAliasVector.size() << " Expected: 3");
600 RUNNER_TEST(T1033_remove_bin_data)
603 auto manager = CKM::Manager::create();
605 std::string binData2 = "My bin data2";
606 CKM::RawBuffer buffer2(binData2.begin(), binData2.end());
608 CKM::AliasVector labelAliasVector;
610 std::string invalid_address = aliasWithLabel("i-do-not-exist", "data1");
612 CKM_API_ERROR_DB_ALIAS_UNKNOWN == (temp = manager->removeAlias(invalid_address.c_str())),
613 "Error=" << CKM::ErrorToString(temp));
615 CKM_API_SUCCESS == (temp = manager->removeAlias("data1")),
616 "Error=" << CKM::ErrorToString(temp));
618 CKM_API_SUCCESS == (temp = manager->removeAlias("data3")),
619 "Error=" << CKM::ErrorToString(temp));
621 CKM_API_SUCCESS == (temp = manager->getDataAliasVector(labelAliasVector)),
622 "Error=" << CKM::ErrorToString(temp));
624 labelAliasVector.size() == 1,
625 "Wrong size of list: " << labelAliasVector.size() << " Expected: 1");
627 CKM::RawBuffer buffer;
629 CKM_API_SUCCESS == (temp = manager->getData("data2", CKM::Password(), buffer)),
630 "Error=" << CKM::ErrorToString(temp));
635 CKM_API_ERROR_DB_ALIAS_UNKNOWN == (temp = manager->getData("data3", CKM::Password(), buffer)),
636 "Error=" << CKM::ErrorToString(temp));
639 RUNNER_TEST(T1034_getData_wrong_password)
642 auto manager = CKM::Manager::create();
644 std::string binData1 = "My bin data4";
646 CKM::RawBuffer buffer1(binData1.begin(), binData1.end());
648 RUNNER_ASSERT_MSG_BT(
649 CKM_API_SUCCESS == (temp = manager->saveData("data4", buffer1, CKM::Policy("CorrectPassword"))),
650 "Error=" << CKM::ErrorToString(temp));
652 CKM::RawBuffer buffer;
653 RUNNER_ASSERT_MSG_BT(
654 CKM_API_SUCCESS == (temp = manager->getData("data4", CKM::Password("CorrectPassword"), buffer)),
655 "Error=" << CKM::ErrorToString(temp));
656 RUNNER_ASSERT_MSG_BT(
660 RUNNER_ASSERT_MSG_BT(
661 CKM_API_ERROR_AUTHENTICATION_FAILED == (temp = manager->getData("data4", CKM::Password("WrongPassword"), buffer)),
662 "Error=" << CKM::ErrorToString(temp));
665 RUNNER_TEST(T1035_deinit)
668 auto control = CKM::Control::create();
671 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
672 "Error=" << CKM::ErrorToString(temp));
674 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
675 "Error=" << CKM::ErrorToString(temp));
677 CKM_API_SUCCESS == (temp = control->lockUserKey(USER_APP)),
678 "Error=" << CKM::ErrorToString(temp));
680 CKM_API_SUCCESS == (temp = control->removeUserData(USER_APP)),
681 "Error=" << CKM::ErrorToString(temp));
684 RUNNER_TEST_GROUP_INIT(T104_CKM_QUICK_CREATE_PAIR);
686 RUNNER_TEST(T1040_init)
689 auto control = CKM::Control::create();
692 CKM_API_SUCCESS == (temp = control->unlockUserKey(USER_APP, "user-pass")),
693 "Error=" << CKM::ErrorToString(temp));
696 RUNNER_CHILD_TEST(T1041_create_rsa_key)
699 auto manager = CKM::Manager::create();
702 AccessProvider ap("mylabel-rsa");
703 ap.allowAPI("key-manager::api-storage", "rw");
704 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
707 CKM_API_SUCCESS == (temp = manager->createKeyPairRSA(2048, CKM::Alias("PRV_KEY1_RSA"), CKM::Alias("PUB_KEY1_RSA"), CKM::Policy(), CKM::Policy())),
708 "Error=" << CKM::ErrorToString(temp));
710 CKM_API_SUCCESS == (temp = manager->getKeyAliasVector(av)),
711 "Error=" << CKM::ErrorToString(temp));
713 2 == (temp = av.size()),
714 "Vector size: " << temp << ". Expected: 2");
717 RUNNER_CHILD_TEST(T1042_create_rsa_key_foreign_label)
720 auto manager = CKM::Manager::create();
723 AccessProvider ap("mylabel-rsa");
724 ap.allowAPI("key-manager::api-storage", "rw");
725 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
728 CKM_API_ERROR_ACCESS_DENIED == (temp = manager->createKeyPairRSA(2048, CKM::Alias("iamsomebodyelse PRV_KEY2_RSA"), CKM::Alias("PUB_KEY2_RSA"), CKM::Policy(), CKM::Policy())),
729 "Error=" << CKM::ErrorToString(temp));
731 CKM_API_ERROR_ACCESS_DENIED == (temp = manager->createKeyPairRSA(2048, CKM::Alias("PRV_KEY2_RSA"), CKM::Alias("iamsomebodyelse PUB_KEY2_RSA"), CKM::Policy(), CKM::Policy())),
732 "Error=" << CKM::ErrorToString(temp));
735 RUNNER_CHILD_TEST(T1043_create_dsa_key)
738 auto manager = CKM::Manager::create();
741 AccessProvider ap("mylabel-dsa");
742 ap.allowAPI("key-manager::api-storage", "rw");
743 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
746 CKM_API_SUCCESS == (temp = manager->createKeyPairDSA(1024, CKM::Alias("PRV_KEY1_DSA"), CKM::Alias("PUB_KEY1_DSA"), CKM::Policy(), CKM::Policy())),
747 "Error=" << CKM::ErrorToString(temp));
749 CKM_API_SUCCESS == (temp = manager->getKeyAliasVector(av)),
750 "Error=" << CKM::ErrorToString(temp));
752 2 == (temp = av.size()),
753 "Vector size: " << temp << ". Expected: 2");
756 RUNNER_TEST(T1049_deinit)
759 auto control = CKM::Control::create();
762 CKM_API_SUCCESS == (temp = control->lockUserKey(USER_APP)),
763 "Error=" << CKM::ErrorToString(temp));
765 CKM_API_SUCCESS == (temp = control->removeUserData(USER_APP)),
766 "Error=" << CKM::ErrorToString(temp));
770 RUNNER_TEST_GROUP_INIT(T111_CKM_CreateKeyPair);
772 RUNNER_TEST(T1110_init)
775 auto control = CKM::Control::create();
777 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "test-pass")),
778 "Error=" << CKM::ErrorToString(temp));
780 CKM_API_SUCCESS == (temp = control->unlockUserKey(USER_APP, "user-pass")),
781 "Error=" << CKM::ErrorToString(temp));
784 RUNNER_TEST(T1111_CreateKeyPairRSA)
787 auto manager = CKM::Manager::create();
788 CKM::Alias a1("rsa-test-1");
789 CKM::Alias a2("rsa-test-2");
793 CKM_API_SUCCESS == (temp = manager->createKeyPairRSA(1024, a1, a2, p1, p2)),
794 "Error=" << CKM::ErrorToString(temp));
796 CKM_API_ERROR_DB_ALIAS_EXISTS == (temp = manager->createKeyPairRSA(1024, a1, a2, p1, p2)),
797 "Error=" << CKM::ErrorToString(temp));
800 RUNNER_TEST(T1112_CreateKeyPairDSA)
803 auto manager = CKM::Manager::create();
804 CKM::Alias a1("dsa-test-1");
805 CKM::Alias a2("dsa-test-2");
809 CKM_API_SUCCESS == (temp = manager->createKeyPairDSA(1024, a1, a2, p1, p2)),
810 "Error=" << CKM::ErrorToString(temp));
812 CKM_API_ERROR_DB_ALIAS_EXISTS == (temp = manager->createKeyPairDSA(1024, a1, a2, p1, p2)),
813 "Error=" << CKM::ErrorToString(temp));
816 RUNNER_TEST(T1113_CreateKeyPairECDSA)
819 auto manager = CKM::Manager::create();
820 CKM::Alias a1("ecdsa-test-1");
821 CKM::Alias a2("ecdsa-test-2");
825 CKM_API_SUCCESS == (temp = manager->createKeyPairECDSA(CKM::ElipticCurve::prime192v1, a1, a2, p1, p2)),
826 "Error=" << CKM::ErrorToString(temp));
829 RUNNER_TEST(T1114_deinit)
832 auto control = CKM::Control::create();
835 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
836 "Error=" << CKM::ErrorToString(temp));
838 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
839 "Error=" << CKM::ErrorToString(temp));
842 RUNNER_TEST_GROUP_INIT(T120_NEGATIVE_TESTS);
844 RUNNER_TEST(T12100_init)
847 auto control = CKM::Control::create();
849 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "test-pass")),
850 "Error=" << CKM::ErrorToString(temp));
852 CKM_API_SUCCESS == (temp = control->unlockUserKey(USER_APP, "user-pass")),
853 "Error=" << CKM::ErrorToString(temp));
856 RUNNER_TEST(T12101_key_exist)
859 auto manager = CKM::Manager::create();
861 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
862 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
863 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
864 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
865 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
866 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
867 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
869 "-----END PUBLIC KEY-----";
871 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
872 auto key = CKM::Key::create(buffer);
873 CKM::Alias alias = "rsa-alias-duplication";
876 CKM_API_SUCCESS == (ret = manager->saveKey(alias, key, CKM::Policy())),
877 "Error=" << CKM::ErrorToString(ret));
879 CKM_API_ERROR_DB_ALIAS_EXISTS == (ret = manager->saveKey(alias, key, CKM::Policy())),
880 "Error=" << CKM::ErrorToString(ret));
884 * These test cases tests API when empty parameters are passed to functions
887 RUNNER_TEST(T12102_saveKey_empty_alias)
889 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
890 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
891 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
892 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLc\n"
893 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
894 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
895 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
896 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
898 "-----END PUBLIC KEY-----";
900 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
901 auto key = CKM::Key::create(buffer);
902 CKM::Alias alias; //alias is not initialized
905 auto manager = CKM::Manager::create();
907 CKM_API_ERROR_INPUT_PARAM == (ret = manager->saveKey(alias, key, CKM::Policy())),
908 "Error=" << CKM::ErrorToString(ret));
911 RUNNER_TEST(T12103_saveKey_foreign_label)
913 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
914 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
915 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
916 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
917 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
918 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
919 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
921 "-----END PUBLIC KEY-----";
923 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
924 auto key = CKM::Key::create(buffer);
925 CKM::Alias alias = "iamsomebodyelse alias";
928 auto manager = CKM::Manager::create();
930 CKM_API_ERROR_ACCESS_DENIED == (ret = manager->saveKey(alias, key, CKM::Policy())),
931 "Error=" << CKM::ErrorToString(ret));
934 RUNNER_TEST(T12104_saveKey_empty_key)
936 CKM::KeyShPtr key; //key is not initialized
937 CKM::Alias alias = "empty-key";
940 auto manager = CKM::Manager::create();
942 CKM_API_ERROR_INPUT_PARAM == (ret = manager->saveKey(alias, key, CKM::Policy())),
943 "Error=" << CKM::ErrorToString(ret));
946 RUNNER_TEST(T12105_saveCertificate_empty_alias)
948 std::string certPem =
949 "-----BEGIN CERTIFICATE-----\n"
950 "MIIEgDCCA2igAwIBAgIIcjtBYJGQtOAwDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UE\n"
951 "BhMCVVMxEzARBgNVBAoTCkdvb2dsZSBJbmMxJTAjBgNVBAMTHEdvb2dsZSBJbnRl\n"
952 "cm5ldCBBdXRob3JpdHkgRzIwHhcNMTQwNTIyMTEyOTQyWhcNMTQwODIwMDAwMDAw\n"
953 "WjBtMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwN\n"
954 "TW91bnRhaW4gVmlldzETMBEGA1UECgwKR29vZ2xlIEluYzEcMBoGA1UEAwwTYWNj\n"
955 "b3VudHMuZ29vZ2xlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB\n"
956 "ALtlLWVWPN3q3bSEQl1Z97gPdgl5vbgJOZSAr0ZY0tJCuFLBbUKetJWryyE+5KpG\n"
957 "gMMpLS4v8/bvXaZc6mAs+RfAqGM24C3vQg5hPnj4dflnhL0WiOCZBurm1tV4oexk\n"
958 "HLXs3jr/jpnb738AQpj8zZ9a4VEBuHJRZALnWZ/XhqU+dvYomAoRQNuL5OhkT7uu\n"
959 "d0NKJL9JjYLyQglGgE2sVsWv2kj7EO/P9Q6NEKt9BGmhMsFvtfeKUaymynaxpR1g\n"
960 "wEPlqYvB38goh1dIOgVLT0OVyLImeg5Mdwar/8c1U0OYhLOc6PJapOZAfUkE+3+w\n"
961 "xYt8AChLN1b5szOwInrCVpECAwEAAaOCAUYwggFCMB0GA1UdJQQWMBQGCCsGAQUF\n"
962 "BwMBBggrBgEFBQcDAjAeBgNVHREEFzAVghNhY2NvdW50cy5nb29nbGUuY29tMGgG\n"
963 "CCsGAQUFBwEBBFwwWjArBggrBgEFBQcwAoYfaHR0cDovL3BraS5nb29nbGUuY29t\n"
964 "L0dJQUcyLmNydDArBggrBgEFBQcwAYYfaHR0cDovL2NsaWVudHMxLmdvb2dsZS5j\n"
965 "b20vb2NzcDAdBgNVHQ4EFgQU0/UtToEtNIfwDwHuYGuVKcj0xK8wDAYDVR0TAQH/\n"
966 "BAIwADAfBgNVHSMEGDAWgBRK3QYWG7z2aLV29YG2u2IaulqBLzAXBgNVHSAEEDAO\n"
967 "MAwGCisGAQQB1nkCBQEwMAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL3BraS5nb29n\n"
968 "bGUuY29tL0dJQUcyLmNybDANBgkqhkiG9w0BAQUFAAOCAQEAcGNI/X9f0g+7ij0o\n"
969 "ehLpk6vxSMQGrmOZ4+PG/MC9SLClCkt7zJkfU7erZnyVXyxCpwlljq+Wk9YTPUOq\n"
970 "xD/V2ikQVSAANoxGJFO9UoL5jzWusPhKKv8CcM7fuiERz8K+CfBcqfxbgI5rH0g5\n"
971 "dYclmLC81cJ/08i+9Nltvxv69Y3hGfEICT6K+EdSxwnQzOhpMZmvxZsIj+d6CVNa\n"
972 "9ICYgUthsNQVWzrIs5wknpjjZ9liDMwJX0vu8A0rce4X/Lna5hh2bW9igz2iP5WM\n"
973 "9fuwdbTw4y3jfPQgszU4YZxWxhMzccxe058Qx1tLndAknBQEBesQjXytVQpuM1SV\n"
975 "-----END CERTIFICATE-----\n";
977 CKM::RawBuffer buffer(certPem.begin(), certPem.end());
978 auto cert = CKM::Certificate::create(buffer, CKM::DataFormat::FORM_PEM);
979 CKM::Alias alias; //alias is not initialized
982 auto manager = CKM::Manager::create();
984 CKM_API_ERROR_INPUT_PARAM == (temp = manager->saveCertificate(alias, cert, CKM::Policy())),
985 "Error=" << CKM::ErrorToString(temp));
988 RUNNER_TEST(T12106_saveCertificate_foreign_label)
990 std::string certPem =
991 "-----BEGIN CERTIFICATE-----\n"
992 "MIIEgDCCA2igAwIBAgIIcjtBYJGQtOAwDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UE\n"
993 "BhMCVVMxEzARBgNVBAoTCkdvb2dsZSBJbmMxJTAjBgNVBAMTHEdvb2dsZSBJbnRl\n"
994 "cm5ldCBBdXRob3JpdHkgRzIwHhcNMTQwNTIyMTEyOTQyWhcNMTQwODIwMDAwMDAw\n"
995 "WjBtMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwN\n"
996 "TW91bnRhaW4gVmlldzETMBEGA1UECgwKR29vZ2xlIEluYzEcMBoGA1UEAwwTYWNj\n"
997 "b3VudHMuZ29vZ2xlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB\n"
998 "ALtlLWVWPN3q3bSEQl1Z97gPdgl5vbgJOZSAr0ZY0tJCuFLBbUKetJWryyE+5KpG\n"
999 "gMMpLS4v8/bvXaZc6mAs+RfAqGM24C3vQg5hPnj4dflnhL0WiOCZBurm1tV4oexk\n"
1000 "HLXs3jr/jpnb738AQpj8zZ9a4VEBuHJRZALnWZ/XhqU+dvYomAoRQNuL5OhkT7uu\n"
1001 "d0NKJL9JjYLyQglGgE2sVsWv2kj7EO/P9Q6NEKt9BGmhMsFvtfeKUaymynaxpR1g\n"
1002 "wEPlqYvB38goh1dIOgVLT0OVyLImeg5Mdwar/8c1U0OYhLOc6PJapOZAfUkE+3+w\n"
1003 "xYt8AChLN1b5szOwInrCVpECAwEAAaOCAUYwggFCMB0GA1UdJQQWMBQGCCsGAQUF\n"
1004 "BwMBBggrBgEFBQcDAjAeBgNVHREEFzAVghNhY2NvdW50cy5nb29nbGUuY29tMGgG\n"
1005 "CCsGAQUFBwEBBFwwWjArBggrBgEFBQcwAoYfaHR0cDovL3BraS5nb29nbGUuY29t\n"
1006 "L0dJQUcyLmNydDArBggrBgEFBQcwAYYfaHR0cDovL2NsaWVudHMxLmdvb2dsZS5j\n"
1007 "b20vb2NzcDAdBgNVHQ4EFgQU0/UtToEtNIfwDwHuYGuVKcj0xK8wDAYDVR0TAQH/\n"
1008 "BAIwADAfBgNVHSMEGDAWgBRK3QYWG7z2aLV29YG2u2IaulqBLzAXBgNVHSAEEDAO\n"
1009 "MAwGCisGAQQB1nkCBQEwMAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL3BraS5nb29n\n"
1010 "bGUuY29tL0dJQUcyLmNybDANBgkqhkiG9w0BAQUFAAOCAQEAcGNI/X9f0g+7ij0o\n"
1011 "ehLpk6vxSMQGrmOZ4+PG/MC9SLClCkt7zJkfU7erZnyVXyxCpwlljq+Wk9YTPUOq\n"
1012 "xD/V2ikQVSAANoxGJFO9UoL5jzWusPhKKv8CcM7fuiERz8K+CfBcqfxbgI5rH0g5\n"
1013 "dYclmLC81cJ/08i+9Nltvxv69Y3hGfEICT6K+EdSxwnQzOhpMZmvxZsIj+d6CVNa\n"
1014 "9ICYgUthsNQVWzrIs5wknpjjZ9liDMwJX0vu8A0rce4X/Lna5hh2bW9igz2iP5WM\n"
1015 "9fuwdbTw4y3jfPQgszU4YZxWxhMzccxe058Qx1tLndAknBQEBesQjXytVQpuM1SV\n"
1017 "-----END CERTIFICATE-----\n";
1019 CKM::RawBuffer buffer(certPem.begin(), certPem.end());
1020 auto cert = CKM::Certificate::create(buffer, CKM::DataFormat::FORM_PEM);
1021 CKM::Alias alias = "iamsomebodyelse alias";
1024 auto manager = CKM::Manager::create();
1026 CKM_API_ERROR_ACCESS_DENIED == (temp = manager->saveCertificate(alias, cert, CKM::Policy())),
1027 "Error=" << CKM::ErrorToString(temp));
1030 RUNNER_TEST(T12107_saveCertificate_empty_cert)
1032 CKM::CertificateShPtr cert; //cert is not initialized
1033 CKM::Alias alias = "empty-cert";
1036 auto manager = CKM::Manager::create();
1038 CKM_API_ERROR_INPUT_PARAM == (temp = manager->saveCertificate(alias, cert, CKM::Policy())),
1039 "Error=" << CKM::ErrorToString(temp));
1042 RUNNER_TEST(T12108_saveData_empty_alias)
1044 std::string testData = "test data test data test data";
1045 CKM::RawBuffer buffer(testData.begin(), testData.end());
1049 auto manager = CKM::Manager::create();
1051 CKM_API_ERROR_INPUT_PARAM == (temp = manager->saveData(alias, buffer, CKM::Policy())),
1052 "Error=" << CKM::ErrorToString(temp));
1055 RUNNER_TEST(T12109_saveData_foreign_label)
1057 std::string testData = "test data test data test data";
1058 CKM::RawBuffer buffer(testData.begin(), testData.end());
1059 CKM::Alias alias = "iamsomebodyelse alias";
1062 auto manager = CKM::Manager::create();
1064 CKM_API_ERROR_ACCESS_DENIED == (temp = manager->saveData(alias, buffer, CKM::Policy())),
1065 "Error=" << CKM::ErrorToString(temp));
1068 RUNNER_TEST(T12110_saveData_empty_data)
1070 CKM::RawBuffer buffer;
1071 CKM::Alias alias = "empty-data";
1074 auto manager = CKM::Manager::create();
1076 CKM_API_ERROR_INPUT_PARAM == (temp = manager->saveData(alias, buffer, CKM::Policy())),
1077 "Error=" << CKM::ErrorToString(temp));
1081 * These test cases tests API when trying to get data from not existing alias
1084 RUNNER_TEST(T12111_getKey_alias_not_exist)
1087 CKM::Alias alias = "this-alias-not-exist";
1090 auto manager = CKM::Manager::create();
1092 CKM_API_ERROR_DB_ALIAS_UNKNOWN == (temp = manager->getKey(alias, "", key)),
1093 "Error=" << CKM::ErrorToString(temp));
1096 RUNNER_TEST(T12112_getCertificate_alias_not_exist)
1098 CKM::CertificateShPtr certificate;
1099 CKM::Alias alias = "this-alias-not-exist";
1102 auto manager = CKM::Manager::create();
1104 CKM_API_ERROR_DB_ALIAS_UNKNOWN == (temp = manager->getCertificate(alias, CKM::Password(), certificate)),
1105 "Error=" << CKM::ErrorToString(temp));
1108 RUNNER_TEST(T12113_getData_alias_not_exist)
1111 auto manager = CKM::Manager::create();
1112 CKM::RawBuffer buffer;
1113 CKM::Alias alias("some alias");
1115 CKM_API_ERROR_DB_ALIAS_UNKNOWN == (temp = manager->getData(alias, "", buffer)),
1116 "Error=" << CKM::ErrorToString(temp));
1120 * These test cases tests API when damaged keys are used
1122 RUNNER_TEST(T12114_rsa_key_damaged)
1125 auto manager = CKM::Manager::create();
1127 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
1128 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
1129 // "BROKENBROKENBROKENBROKENBROKENTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT\n"
1130 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
1131 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
1132 // "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
1133 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
1135 "-----END PUBLIC KEY-----";
1137 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
1138 auto key = CKM::Key::create(buffer);
1139 CKM::Alias alias = "damaged-rsa";
1142 NULL == key.get(), "Key is broken. It should be empty");
1145 CKM_API_ERROR_INPUT_PARAM == (ret = manager->saveKey(alias, key, CKM::Policy())),
1146 "Error=" << CKM::ErrorToString(ret));
1149 RUNNER_TEST(T12115_rsa_key_too_short)
1152 auto manager = CKM::Manager::create();
1154 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
1155 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
1156 //"T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
1157 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
1158 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
1159 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
1160 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
1162 "-----END PUBLIC KEY-----";
1164 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
1165 auto key = CKM::Key::create(buffer);
1166 CKM::Alias alias = "short-rsa";
1169 CKM_API_ERROR_INPUT_PARAM == (ret = manager->saveKey(alias, key, CKM::Policy())),
1170 "Error=" << CKM::ErrorToString(ret));
1173 RUNNER_TEST(T12116_dsa_key_too_short)
1176 auto manager = CKM::Manager::create();
1178 const std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
1179 "MIIBtzCCASwGByqGSM44BAEwggEfAoGBALeveaD/EheW+ws1YuW77f344+brkEzm\n"
1180 "BVfFYHr7t+jwu6nQe341SoESJG+PCgrrhy76KNDCfveiwEoWufVHnI4bYBU/ClzP\n"
1181 //"A3amf6c5yud45ZR/b6OiAuew6ohY0mQGnzqeio8BaCsZaJ6EziCSlkdIDJisSfPg\n"
1182 "nlWHqf4AwHVdAhUA7I1JQ7sBFJ+N19w3Omu+aO8EG08CgYEAldagy/Ccxhh43cZu\n"
1183 //"AZQxgJLCcp1jg6NdPMdkZ2TcSijvaVxBu+gjEGOqN5Os2V6UF7S/k/rjHYmcX9ux\n"
1184 "gpjkC31yTNrKyERIAFIYZtG2K7LVBUZq5Fgm7I83QBVchJ2PA7mBaugJFEhNjbhK\n"
1185 "NRip5UH38le1YDZ/IiA+svFOpeoDgYQAAoGAPT91aEgwFdulzmHlvr3k+GBCE9z+\n"
1186 "hq0c3FGUCtGbVOqg2KPqMBgwSb4MC0msQys4DTVZhLJI+C5eIPEHgfBMqY1ZNJdO\n"
1187 "OSCQciDXnRfSqKbT6tjDTgR5jmh5bG1Q8QFeBTHCDsQHoQYWgx0nyu12lASN80rC\n"
1188 "YMYCBhubtrVaLmc=\n"
1189 "-----END PUBLIC KEY-----";
1191 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
1192 auto key = CKM::Key::create(buffer);
1193 CKM::Alias alias = "short-dsa";
1196 CKM_API_ERROR_INPUT_PARAM == (ret = manager->saveKey(alias, key, CKM::Policy())),
1197 "Error=" << CKM::ErrorToString(ret));
1202 * These test cases tests CKM service if malicious data is provided over the socket.
1205 RUNNER_TEST(T12117_rsa_key_damaged_serviceTest)
1208 auto manager = CKM::Manager::create();
1210 // fake the client - let the service detect the problem
1211 class WrongKeyImpl : public CKM::Key
1214 WrongKeyImpl(CKM::RawBuffer & dummy_content) : m_dummy(dummy_content) {
1217 virtual bool empty() const {
1221 virtual CKM::KeyType getType() const {
1222 return CKM::KeyType::KEY_RSA_PUBLIC;
1224 virtual int getSize() const {
1227 virtual CKM::ElipticCurve getCurve() const {
1228 return CKM::ElipticCurve::prime192v1;
1230 virtual CKM::RawBuffer getDER() const {
1233 virtual ~WrongKeyImpl() {}
1235 CKM::RawBuffer & m_dummy;
1237 std::string dummyData = "my_cat_Berta\n";
1238 CKM::RawBuffer buffer(dummyData.begin(), dummyData.end());
1239 auto key = std::make_shared<WrongKeyImpl>(buffer);
1240 CKM::Alias alias = "damaged-rsa";
1243 CKM_API_ERROR_INPUT_PARAM == (ret = manager->saveKey(alias, key, CKM::Policy())),
1244 "Error=" << CKM::ErrorToString(ret));
1247 RUNNER_TEST(T12118_saveCertificate_damaged_serviceTest)
1249 // fake the client - let the service detect the problem
1250 class WrongCertImpl : public CKM::Certificate
1253 WrongCertImpl(CKM::RawBuffer & dummy_content) : m_dummy(dummy_content) {
1254 m_x509 = X509_new();
1257 bool empty() const {
1261 virtual X509 *getX509() const {
1265 virtual CKM::RawBuffer getDER() const {
1269 virtual ~WrongCertImpl() {
1274 CKM::RawBuffer & m_dummy;
1276 std::string dummyData = "my_cat_Stefan\n";
1277 CKM::RawBuffer buffer(dummyData.begin(), dummyData.end());
1278 auto cert = std::make_shared<WrongCertImpl>(buffer);
1279 CKM::Alias alias = "damaged-cert";
1282 auto manager = CKM::Manager::create();
1284 CKM_API_ERROR_INPUT_PARAM == (temp = manager->saveCertificate(alias, cert, CKM::Policy())),
1285 "Error=" << CKM::ErrorToString(temp));
1288 RUNNER_TEST(T12119_deinit)
1291 auto control = CKM::Control::create();
1294 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
1295 "Error=" << CKM::ErrorToString(temp));
1297 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
1298 "Error=" << CKM::ErrorToString(temp));
1301 RUNNER_TEST_GROUP_INIT(T131_CKM_QUICK_SET_GET_TESTS);
1303 RUNNER_TEST(T1311_init)
1306 auto control = CKM::Control::create();
1308 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "test-pass")),
1309 "Error=" << CKM::ErrorToString(temp));
1310 RUNNER_ASSERT_MSG(time(0) > 1405343457,
1311 "Time error. Device date is before 14th of July 2014. You must set proper time on device before run this tests!");
1313 struct hostent* he = gethostbyname("google.com");
1315 RUNNER_ASSERT_MSG(he != NULL, "There is problem with translate domain google.com into ip address. Probably network "
1316 "is not woking on the device. OCSP tests requires network access!");
1319 RUNNER_TEST(T1312_get_chain)
1321 std::string ee = "-----BEGIN CERTIFICATE-----\n"
1322 "MIIF0TCCBLmgAwIBAgIQaPGTP4aS7Ut/WDNaBzdQrDANBgkqhkiG9w0BAQUFADCB\n"
1323 "ujELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
1324 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n"
1325 "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMr\n"
1326 "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTAeFw0x\n"
1327 "NDAyMjAwMDAwMDBaFw0xNTAyMjAyMzU5NTlaMIHmMRMwEQYLKwYBBAGCNzwCAQMT\n"
1328 "AlBMMR0wGwYDVQQPExRQcml2YXRlIE9yZ2FuaXphdGlvbjETMBEGA1UEBRMKMDAw\n"
1329 "MDAyNTIzNzELMAkGA1UEBhMCUEwxDzANBgNVBBEUBjAwLTk1MDEUMBIGA1UECBML\n"
1330 "bWF6b3dpZWNraWUxETAPBgNVBAcUCFdhcnN6YXdhMRYwFAYDVQQJFA1TZW5hdG9y\n"
1331 "c2thIDE4MRMwEQYDVQQKFAptQmFuayBTLkEuMQwwCgYDVQQLFANESU4xGTAXBgNV\n"
1332 "BAMUEHd3dy5tYmFuay5jb20ucGwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n"
1333 "AoIBAQDph6x8V6xUW/+651+qHF+UmorH9uaz2ZrX2bIWiMKIJFmpDDHlxcapKkqE\n"
1334 "BV04is83aiCpqKtc2ZHy2g4Hpj1eSF5BP2+OAlo0YUQZPIeRRdiMjmeAxw/ncBDx\n"
1335 "9rQBuCJ4XTD6cqQox5SI0TASOZ+wyAEjbDRXzL73XqRAFZ1LOpb2ONkolS+RutMB\n"
1336 "vshvCsWPeNe7eGLuOh6DyC6r1vX9xhw3xnjM2mTSvmtimgzSLacNGKqRrsucUgcb\n"
1337 "0+O5C2jZAtAMLyZksL92cxmWbtVzUYzem4chjHu5cRxUlPNzUJWrrczueB7Ip4A8\n"
1338 "aQuFMfNXYc0x+WLWjy//urypMKjhAgMBAAGjggGjMIIBnzAbBgNVHREEFDASghB3\n"
1339 "d3cubWJhbmsuY29tLnBsMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgWgMB0GA1Ud\n"
1340 "JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBEBgNVHSAEPTA7MDkGC2CGSAGG+EUB\n"
1341 "BxcGMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9jcHMw\n"
1342 "HQYDVR0OBBYEFN37iGaS7mZnENxZ9FGqNLR+QgoMMB8GA1UdIwQYMBaAFPyKULqe\n"
1343 "uSVae1WFT5UAY4/pWGtDMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9FVlNlY3Vy\n"
1344 "ZS1jcmwudmVyaXNpZ24uY29tL0VWU2VjdXJlMjAwNi5jcmwwfAYIKwYBBQUHAQEE\n"
1345 "cDBuMC0GCCsGAQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC52ZXJpc2lnbi5j\n"
1346 "b20wPQYIKwYBBQUHMAKGMWh0dHA6Ly9FVlNlY3VyZS1haWEudmVyaXNpZ24uY29t\n"
1347 "L0VWU2VjdXJlMjAwNi5jZXIwDQYJKoZIhvcNAQEFBQADggEBAD0wO+rooUrIM4qp\n"
1348 "PHhp+hkXK6WMQ2qzGOmbMcZjw0govg5vkzkefPDryIXXbrF8mRagiJNMSfNaWWeh\n"
1349 "Cj41OV24EdUl0OLbFxNzcvub599zRs/apfaRLTfsmlmOgi0/YP305i+3tJ2ll946\n"
1350 "P+qV1wXnXqTqEdIl4Ys3+1HmDCdTB1hoDwAAzqRVUXZ5+iiwPAU7R/LTHfMjV1ke\n"
1351 "8jtNFfrorlZMCfVH/7eEnHJvVjOJt+YFe4aFMzE+DfuYIK7MH+olC2v79kBwbnEQ\n"
1352 "fvHMA9gFwOYLUBBdSfcocp8EKZ+mRlNPGR/3LBrPeaQQ0GZEkxzRK+v/aNTuiYfr\n"
1354 "-----END CERTIFICATE-----\n";
1357 "-----BEGIN CERTIFICATE-----\n"
1358 "MIIF5DCCBMygAwIBAgIQW3dZxheE4V7HJ8AylSkoazANBgkqhkiG9w0BAQUFADCB\n"
1359 "yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
1360 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\n"
1361 "U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\n"
1362 "ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\n"
1363 "aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMTYxMTA3MjM1OTU5WjCBujEL\n"
1364 "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\n"
1365 "ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg\n"
1366 "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMrVmVy\n"
1367 "aVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTCCASIwDQYJ\n"
1368 "KoZIhvcNAQEBBQADggEPADCCAQoCggEBAJjboFXrnP0XeeOabhQdsVuYI4cWbod2\n"
1369 "nLU4O7WgerQHYwkZ5iqISKnnnbYwWgiXDOyq5BZpcmIjmvt6VCiYxQwtt9citsj5\n"
1370 "OBfH3doxRpqUFI6e7nigtyLUSVSXTeV0W5K87Gws3+fBthsaVWtmCAN/Ra+aM/EQ\n"
1371 "wGyZSpIkMQht3QI+YXZ4eLbtfjeubPOJ4bfh3BXMt1afgKCxBX9ONxX/ty8ejwY4\n"
1372 "P1C3aSijtWZfNhpSSENmUt+ikk/TGGC+4+peGXEFv54cbGhyJW+ze3PJbb0S/5tB\n"
1373 "Ml706H7FC6NMZNFOvCYIZfsZl1h44TO/7Wg+sSdFb8Di7Jdp91zT91ECAwEAAaOC\n"
1374 "AdIwggHOMB0GA1UdDgQWBBT8ilC6nrklWntVhU+VAGOP6VhrQzASBgNVHRMBAf8E\n"
1375 "CDAGAQH/AgEAMD0GA1UdIAQ2MDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRw\n"
1376 "czovL3d3dy52ZXJpc2lnbi5jb20vY3BzMD0GA1UdHwQ2MDQwMqAwoC6GLGh0dHA6\n"
1377 "Ly9FVlNlY3VyZS1jcmwudmVyaXNpZ24uY29tL3BjYTMtZzUuY3JsMA4GA1UdDwEB\n"
1378 "/wQEAwIBBjARBglghkgBhvhCAQEEBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZ\n"
1379 "MFcwVRYJaW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7\n"
1380 "GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwKQYDVR0R\n"
1381 "BCIwIKQeMBwxGjAYBgNVBAMTEUNsYXNzM0NBMjA0OC0xLTQ3MD0GCCsGAQUFBwEB\n"
1382 "BDEwLzAtBggrBgEFBQcwAYYhaHR0cDovL0VWU2VjdXJlLW9jc3AudmVyaXNpZ24u\n"
1383 "Y29tMB8GA1UdIwQYMBaAFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqGSIb3DQEB\n"
1384 "BQUAA4IBAQCWovp/5j3t1CvOtxU/wHIDX4u6FpAl98KD2Md1NGNoElMMU4l7yVYJ\n"
1385 "p8M2RE4O0GJis4b66KGbNGeNUyIXPv2s7mcuQ+JdfzOE8qJwwG6Cl8A0/SXGI3/t\n"
1386 "5rDFV0OEst4t8dD2SB8UcVeyrDHhlyQjyRNddOVG7wl8nuGZMQoIeRuPcZ8XZsg4\n"
1387 "z+6Ml7YGuXNG5NOUweVgtSV1LdlpMezNlsOjdv3odESsErlNv1HoudRETifLriDR\n"
1388 "fip8tmNHnna6l9AW5wtsbfdDbzMLKTB3+p359U64drPNGLT5IO892+bKrZvQTtKH\n"
1389 "qQ2mRHNQ3XBb7a1+Srwi1agm5MKFIA3Z\n"
1390 "-----END CERTIFICATE-----\n";
1392 auto cert = CKM::Certificate::create(CKM::RawBuffer(ee.begin(), ee.end()), CKM::DataFormat::FORM_PEM);
1393 auto cert1 = CKM::Certificate::create(CKM::RawBuffer(im.begin(), im.end()), CKM::DataFormat::FORM_PEM);
1394 CKM::CertificateShPtrVector certVector = {cert1};
1395 CKM::CertificateShPtrVector certChain;
1398 auto manager = CKM::Manager::create();
1400 RUNNER_ASSERT_MSG(NULL != cert.get(), "Certificate should not be empty");
1401 RUNNER_ASSERT_MSG(false != cert1.get(), "Certificate should not be empty");
1403 tmp = manager->getCertificateChain(cert,
1408 RUNNER_ASSERT_MSG_BT(CKM_API_ERROR_VERIFICATION_FAILED == tmp,
1409 "Error=" << CKM::ErrorToString(tmp));
1412 0 == certChain.size(),
1413 "Wrong size of certificate chain.");
1415 tmp = manager->getCertificateChain(cert, certVector, EMPTY_CERT_VECTOR, true, certChain);
1416 RUNNER_ASSERT_MSG_BT(CKM_API_SUCCESS == tmp, "Error=" << CKM::ErrorToString(tmp));
1419 3 == certChain.size(),
1420 "Wrong size of certificate chain.");
1423 RUNNER_TEST(T1313_get_chain_with_alias)
1425 std::string ee = "-----BEGIN CERTIFICATE-----\n"
1426 "MIIF0TCCBLmgAwIBAgIQaPGTP4aS7Ut/WDNaBzdQrDANBgkqhkiG9w0BAQUFADCB\n"
1427 "ujELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
1428 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n"
1429 "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMr\n"
1430 "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTAeFw0x\n"
1431 "NDAyMjAwMDAwMDBaFw0xNTAyMjAyMzU5NTlaMIHmMRMwEQYLKwYBBAGCNzwCAQMT\n"
1432 "AlBMMR0wGwYDVQQPExRQcml2YXRlIE9yZ2FuaXphdGlvbjETMBEGA1UEBRMKMDAw\n"
1433 "MDAyNTIzNzELMAkGA1UEBhMCUEwxDzANBgNVBBEUBjAwLTk1MDEUMBIGA1UECBML\n"
1434 "bWF6b3dpZWNraWUxETAPBgNVBAcUCFdhcnN6YXdhMRYwFAYDVQQJFA1TZW5hdG9y\n"
1435 "c2thIDE4MRMwEQYDVQQKFAptQmFuayBTLkEuMQwwCgYDVQQLFANESU4xGTAXBgNV\n"
1436 "BAMUEHd3dy5tYmFuay5jb20ucGwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n"
1437 "AoIBAQDph6x8V6xUW/+651+qHF+UmorH9uaz2ZrX2bIWiMKIJFmpDDHlxcapKkqE\n"
1438 "BV04is83aiCpqKtc2ZHy2g4Hpj1eSF5BP2+OAlo0YUQZPIeRRdiMjmeAxw/ncBDx\n"
1439 "9rQBuCJ4XTD6cqQox5SI0TASOZ+wyAEjbDRXzL73XqRAFZ1LOpb2ONkolS+RutMB\n"
1440 "vshvCsWPeNe7eGLuOh6DyC6r1vX9xhw3xnjM2mTSvmtimgzSLacNGKqRrsucUgcb\n"
1441 "0+O5C2jZAtAMLyZksL92cxmWbtVzUYzem4chjHu5cRxUlPNzUJWrrczueB7Ip4A8\n"
1442 "aQuFMfNXYc0x+WLWjy//urypMKjhAgMBAAGjggGjMIIBnzAbBgNVHREEFDASghB3\n"
1443 "d3cubWJhbmsuY29tLnBsMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgWgMB0GA1Ud\n"
1444 "JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBEBgNVHSAEPTA7MDkGC2CGSAGG+EUB\n"
1445 "BxcGMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9jcHMw\n"
1446 "HQYDVR0OBBYEFN37iGaS7mZnENxZ9FGqNLR+QgoMMB8GA1UdIwQYMBaAFPyKULqe\n"
1447 "uSVae1WFT5UAY4/pWGtDMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9FVlNlY3Vy\n"
1448 "ZS1jcmwudmVyaXNpZ24uY29tL0VWU2VjdXJlMjAwNi5jcmwwfAYIKwYBBQUHAQEE\n"
1449 "cDBuMC0GCCsGAQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC52ZXJpc2lnbi5j\n"
1450 "b20wPQYIKwYBBQUHMAKGMWh0dHA6Ly9FVlNlY3VyZS1haWEudmVyaXNpZ24uY29t\n"
1451 "L0VWU2VjdXJlMjAwNi5jZXIwDQYJKoZIhvcNAQEFBQADggEBAD0wO+rooUrIM4qp\n"
1452 "PHhp+hkXK6WMQ2qzGOmbMcZjw0govg5vkzkefPDryIXXbrF8mRagiJNMSfNaWWeh\n"
1453 "Cj41OV24EdUl0OLbFxNzcvub599zRs/apfaRLTfsmlmOgi0/YP305i+3tJ2ll946\n"
1454 "P+qV1wXnXqTqEdIl4Ys3+1HmDCdTB1hoDwAAzqRVUXZ5+iiwPAU7R/LTHfMjV1ke\n"
1455 "8jtNFfrorlZMCfVH/7eEnHJvVjOJt+YFe4aFMzE+DfuYIK7MH+olC2v79kBwbnEQ\n"
1456 "fvHMA9gFwOYLUBBdSfcocp8EKZ+mRlNPGR/3LBrPeaQQ0GZEkxzRK+v/aNTuiYfr\n"
1458 "-----END CERTIFICATE-----\n";
1461 "-----BEGIN CERTIFICATE-----\n"
1462 "MIIF5DCCBMygAwIBAgIQW3dZxheE4V7HJ8AylSkoazANBgkqhkiG9w0BAQUFADCB\n"
1463 "yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
1464 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\n"
1465 "U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\n"
1466 "ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\n"
1467 "aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMTYxMTA3MjM1OTU5WjCBujEL\n"
1468 "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\n"
1469 "ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg\n"
1470 "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMrVmVy\n"
1471 "aVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTCCASIwDQYJ\n"
1472 "KoZIhvcNAQEBBQADggEPADCCAQoCggEBAJjboFXrnP0XeeOabhQdsVuYI4cWbod2\n"
1473 "nLU4O7WgerQHYwkZ5iqISKnnnbYwWgiXDOyq5BZpcmIjmvt6VCiYxQwtt9citsj5\n"
1474 "OBfH3doxRpqUFI6e7nigtyLUSVSXTeV0W5K87Gws3+fBthsaVWtmCAN/Ra+aM/EQ\n"
1475 "wGyZSpIkMQht3QI+YXZ4eLbtfjeubPOJ4bfh3BXMt1afgKCxBX9ONxX/ty8ejwY4\n"
1476 "P1C3aSijtWZfNhpSSENmUt+ikk/TGGC+4+peGXEFv54cbGhyJW+ze3PJbb0S/5tB\n"
1477 "Ml706H7FC6NMZNFOvCYIZfsZl1h44TO/7Wg+sSdFb8Di7Jdp91zT91ECAwEAAaOC\n"
1478 "AdIwggHOMB0GA1UdDgQWBBT8ilC6nrklWntVhU+VAGOP6VhrQzASBgNVHRMBAf8E\n"
1479 "CDAGAQH/AgEAMD0GA1UdIAQ2MDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRw\n"
1480 "czovL3d3dy52ZXJpc2lnbi5jb20vY3BzMD0GA1UdHwQ2MDQwMqAwoC6GLGh0dHA6\n"
1481 "Ly9FVlNlY3VyZS1jcmwudmVyaXNpZ24uY29tL3BjYTMtZzUuY3JsMA4GA1UdDwEB\n"
1482 "/wQEAwIBBjARBglghkgBhvhCAQEEBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZ\n"
1483 "MFcwVRYJaW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7\n"
1484 "GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwKQYDVR0R\n"
1485 "BCIwIKQeMBwxGjAYBgNVBAMTEUNsYXNzM0NBMjA0OC0xLTQ3MD0GCCsGAQUFBwEB\n"
1486 "BDEwLzAtBggrBgEFBQcwAYYhaHR0cDovL0VWU2VjdXJlLW9jc3AudmVyaXNpZ24u\n"
1487 "Y29tMB8GA1UdIwQYMBaAFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqGSIb3DQEB\n"
1488 "BQUAA4IBAQCWovp/5j3t1CvOtxU/wHIDX4u6FpAl98KD2Md1NGNoElMMU4l7yVYJ\n"
1489 "p8M2RE4O0GJis4b66KGbNGeNUyIXPv2s7mcuQ+JdfzOE8qJwwG6Cl8A0/SXGI3/t\n"
1490 "5rDFV0OEst4t8dD2SB8UcVeyrDHhlyQjyRNddOVG7wl8nuGZMQoIeRuPcZ8XZsg4\n"
1491 "z+6Ml7YGuXNG5NOUweVgtSV1LdlpMezNlsOjdv3odESsErlNv1HoudRETifLriDR\n"
1492 "fip8tmNHnna6l9AW5wtsbfdDbzMLKTB3+p359U64drPNGLT5IO892+bKrZvQTtKH\n"
1493 "qQ2mRHNQ3XBb7a1+Srwi1agm5MKFIA3Z\n"
1494 "-----END CERTIFICATE-----\n";
1496 auto cert = CKM::Certificate::create(CKM::RawBuffer(ee.begin(), ee.end()), CKM::DataFormat::FORM_PEM);
1497 auto cert1 = CKM::Certificate::create(CKM::RawBuffer(im.begin(), im.end()), CKM::DataFormat::FORM_PEM);
1498 CKM::CertificateShPtrVector certChain;
1499 CKM::AliasVector aliasVector;
1500 CKM::Alias alias("imcert");
1501 CharPtr top_label = get_label();
1502 std::string full_address = aliasWithLabel(top_label.get(), alias.c_str());
1505 auto manager = CKM::Manager::create();
1507 RUNNER_ASSERT_MSG(NULL != cert.get(), "Certificate should not be empty");
1508 RUNNER_ASSERT_MSG(NULL != cert1.get(), "Certificate should not be empty");
1510 tmp = manager->getCertificateChain(cert, aliasVector, EMPTY_ALIAS_VECTOR, true, certChain);
1511 RUNNER_ASSERT_MSG_BT(CKM_API_ERROR_VERIFICATION_FAILED == tmp,
1512 "Error=" << CKM::ErrorToString(tmp));
1515 0 == certChain.size(),
1516 "Wrong size of certificate chain.");
1519 CKM_API_SUCCESS == (tmp = manager->saveCertificate(alias, cert1, CKM::Policy())),
1520 "Error=" << CKM::ErrorToString(tmp));
1522 aliasVector.push_back(full_address);
1524 tmp = manager->getCertificateChain(cert, aliasVector, EMPTY_ALIAS_VECTOR, true, certChain);
1525 RUNNER_ASSERT_MSG_BT(CKM_API_SUCCESS == tmp, "Error=" << CKM::ErrorToString(tmp));
1527 RUNNER_ASSERT_MSG_BT(
1528 3 == certChain.size(),
1529 "Wrong size of certificate chain.");
1532 RUNNER_TEST(T1314_ocsp_check)
1534 RUNNER_IGNORED_MSG("Fixed in next version of ckm!");
1536 std::string ee = "-----BEGIN CERTIFICATE-----\n"
1537 "MIIF0TCCBLmgAwIBAgIQaPGTP4aS7Ut/WDNaBzdQrDANBgkqhkiG9w0BAQUFADCB\n"
1538 "ujELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
1539 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n"
1540 "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMr\n"
1541 "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTAeFw0x\n"
1542 "NDAyMjAwMDAwMDBaFw0xNTAyMjAyMzU5NTlaMIHmMRMwEQYLKwYBBAGCNzwCAQMT\n"
1543 "AlBMMR0wGwYDVQQPExRQcml2YXRlIE9yZ2FuaXphdGlvbjETMBEGA1UEBRMKMDAw\n"
1544 "MDAyNTIzNzELMAkGA1UEBhMCUEwxDzANBgNVBBEUBjAwLTk1MDEUMBIGA1UECBML\n"
1545 "bWF6b3dpZWNraWUxETAPBgNVBAcUCFdhcnN6YXdhMRYwFAYDVQQJFA1TZW5hdG9y\n"
1546 "c2thIDE4MRMwEQYDVQQKFAptQmFuayBTLkEuMQwwCgYDVQQLFANESU4xGTAXBgNV\n"
1547 "BAMUEHd3dy5tYmFuay5jb20ucGwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n"
1548 "AoIBAQDph6x8V6xUW/+651+qHF+UmorH9uaz2ZrX2bIWiMKIJFmpDDHlxcapKkqE\n"
1549 "BV04is83aiCpqKtc2ZHy2g4Hpj1eSF5BP2+OAlo0YUQZPIeRRdiMjmeAxw/ncBDx\n"
1550 "9rQBuCJ4XTD6cqQox5SI0TASOZ+wyAEjbDRXzL73XqRAFZ1LOpb2ONkolS+RutMB\n"
1551 "vshvCsWPeNe7eGLuOh6DyC6r1vX9xhw3xnjM2mTSvmtimgzSLacNGKqRrsucUgcb\n"
1552 "0+O5C2jZAtAMLyZksL92cxmWbtVzUYzem4chjHu5cRxUlPNzUJWrrczueB7Ip4A8\n"
1553 "aQuFMfNXYc0x+WLWjy//urypMKjhAgMBAAGjggGjMIIBnzAbBgNVHREEFDASghB3\n"
1554 "d3cubWJhbmsuY29tLnBsMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgWgMB0GA1Ud\n"
1555 "JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBEBgNVHSAEPTA7MDkGC2CGSAGG+EUB\n"
1556 "BxcGMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9jcHMw\n"
1557 "HQYDVR0OBBYEFN37iGaS7mZnENxZ9FGqNLR+QgoMMB8GA1UdIwQYMBaAFPyKULqe\n"
1558 "uSVae1WFT5UAY4/pWGtDMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9FVlNlY3Vy\n"
1559 "ZS1jcmwudmVyaXNpZ24uY29tL0VWU2VjdXJlMjAwNi5jcmwwfAYIKwYBBQUHAQEE\n"
1560 "cDBuMC0GCCsGAQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC52ZXJpc2lnbi5j\n"
1561 "b20wPQYIKwYBBQUHMAKGMWh0dHA6Ly9FVlNlY3VyZS1haWEudmVyaXNpZ24uY29t\n"
1562 "L0VWU2VjdXJlMjAwNi5jZXIwDQYJKoZIhvcNAQEFBQADggEBAD0wO+rooUrIM4qp\n"
1563 "PHhp+hkXK6WMQ2qzGOmbMcZjw0govg5vkzkefPDryIXXbrF8mRagiJNMSfNaWWeh\n"
1564 "Cj41OV24EdUl0OLbFxNzcvub599zRs/apfaRLTfsmlmOgi0/YP305i+3tJ2ll946\n"
1565 "P+qV1wXnXqTqEdIl4Ys3+1HmDCdTB1hoDwAAzqRVUXZ5+iiwPAU7R/LTHfMjV1ke\n"
1566 "8jtNFfrorlZMCfVH/7eEnHJvVjOJt+YFe4aFMzE+DfuYIK7MH+olC2v79kBwbnEQ\n"
1567 "fvHMA9gFwOYLUBBdSfcocp8EKZ+mRlNPGR/3LBrPeaQQ0GZEkxzRK+v/aNTuiYfr\n"
1569 "-----END CERTIFICATE-----\n";
1572 "-----BEGIN CERTIFICATE-----\n"
1573 "MIIF5DCCBMygAwIBAgIQW3dZxheE4V7HJ8AylSkoazANBgkqhkiG9w0BAQUFADCB\n"
1574 "yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
1575 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\n"
1576 "U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\n"
1577 "ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\n"
1578 "aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMTYxMTA3MjM1OTU5WjCBujEL\n"
1579 "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\n"
1580 "ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg\n"
1581 "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMrVmVy\n"
1582 "aVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTCCASIwDQYJ\n"
1583 "KoZIhvcNAQEBBQADggEPADCCAQoCggEBAJjboFXrnP0XeeOabhQdsVuYI4cWbod2\n"
1584 "nLU4O7WgerQHYwkZ5iqISKnnnbYwWgiXDOyq5BZpcmIjmvt6VCiYxQwtt9citsj5\n"
1585 "OBfH3doxRpqUFI6e7nigtyLUSVSXTeV0W5K87Gws3+fBthsaVWtmCAN/Ra+aM/EQ\n"
1586 "wGyZSpIkMQht3QI+YXZ4eLbtfjeubPOJ4bfh3BXMt1afgKCxBX9ONxX/ty8ejwY4\n"
1587 "P1C3aSijtWZfNhpSSENmUt+ikk/TGGC+4+peGXEFv54cbGhyJW+ze3PJbb0S/5tB\n"
1588 "Ml706H7FC6NMZNFOvCYIZfsZl1h44TO/7Wg+sSdFb8Di7Jdp91zT91ECAwEAAaOC\n"
1589 "AdIwggHOMB0GA1UdDgQWBBT8ilC6nrklWntVhU+VAGOP6VhrQzASBgNVHRMBAf8E\n"
1590 "CDAGAQH/AgEAMD0GA1UdIAQ2MDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRw\n"
1591 "czovL3d3dy52ZXJpc2lnbi5jb20vY3BzMD0GA1UdHwQ2MDQwMqAwoC6GLGh0dHA6\n"
1592 "Ly9FVlNlY3VyZS1jcmwudmVyaXNpZ24uY29tL3BjYTMtZzUuY3JsMA4GA1UdDwEB\n"
1593 "/wQEAwIBBjARBglghkgBhvhCAQEEBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZ\n"
1594 "MFcwVRYJaW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7\n"
1595 "GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwKQYDVR0R\n"
1596 "BCIwIKQeMBwxGjAYBgNVBAMTEUNsYXNzM0NBMjA0OC0xLTQ3MD0GCCsGAQUFBwEB\n"
1597 "BDEwLzAtBggrBgEFBQcwAYYhaHR0cDovL0VWU2VjdXJlLW9jc3AudmVyaXNpZ24u\n"
1598 "Y29tMB8GA1UdIwQYMBaAFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqGSIb3DQEB\n"
1599 "BQUAA4IBAQCWovp/5j3t1CvOtxU/wHIDX4u6FpAl98KD2Md1NGNoElMMU4l7yVYJ\n"
1600 "p8M2RE4O0GJis4b66KGbNGeNUyIXPv2s7mcuQ+JdfzOE8qJwwG6Cl8A0/SXGI3/t\n"
1601 "5rDFV0OEst4t8dD2SB8UcVeyrDHhlyQjyRNddOVG7wl8nuGZMQoIeRuPcZ8XZsg4\n"
1602 "z+6Ml7YGuXNG5NOUweVgtSV1LdlpMezNlsOjdv3odESsErlNv1HoudRETifLriDR\n"
1603 "fip8tmNHnna6l9AW5wtsbfdDbzMLKTB3+p359U64drPNGLT5IO892+bKrZvQTtKH\n"
1604 "qQ2mRHNQ3XBb7a1+Srwi1agm5MKFIA3Z\n"
1605 "-----END CERTIFICATE-----\n";
1607 auto cert = CKM::Certificate::create(CKM::RawBuffer(ee.begin(), ee.end()), CKM::DataFormat::FORM_PEM);
1608 auto cert1 = CKM::Certificate::create(CKM::RawBuffer(im.begin(), im.end()), CKM::DataFormat::FORM_PEM);
1609 CKM::CertificateShPtrVector certVector = {cert1};
1610 CKM::CertificateShPtrVector certChain;
1613 auto manager = CKM::Manager::create();
1615 RUNNER_ASSERT_MSG(NULL != cert.get(), "Certificate should not be empty");
1616 RUNNER_ASSERT_MSG(NULL != cert1.get(), "Certificate should not be empty");
1618 tmp = manager->getCertificateChain(cert, EMPTY_CERT_VECTOR, EMPTY_CERT_VECTOR, true, certChain);
1619 RUNNER_ASSERT_MSG_BT(CKM_API_ERROR_VERIFICATION_FAILED == tmp,
1620 "Error=" << CKM::ErrorToString(tmp));
1623 0 == certChain.size(),
1624 "Wrong size of certificate chain.");
1626 tmp = manager->getCertificateChain(cert, certVector, EMPTY_CERT_VECTOR, true, certChain);
1627 RUNNER_ASSERT_MSG_BT(CKM_API_SUCCESS == tmp, "Error=" << CKM::ErrorToString(tmp));
1629 RUNNER_ASSERT_MSG_BT(
1630 3 == certChain.size(),
1631 "Wrong size of certificate chain.");
1635 CKM_API_SUCCESS == (tmp = manager->ocspCheck(certChain, status)),
1636 "Error=" << CKM::ErrorToString(tmp));
1638 RUNNER_ASSERT_MSG(CKM_API_OCSP_STATUS_GOOD == status, "Verfication failed");
1641 RUNNER_TEST(T1315_deinit)
1644 auto control = CKM::Control::create();
1647 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
1648 "Error=" << CKM::ErrorToString(temp));
1650 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
1651 "Error=" << CKM::ErrorToString(temp));
1654 RUNNER_TEST_GROUP_INIT(T141_CREATE_AND_VERIFY_SIGNATURE);
1656 RUNNER_TEST(T1411_init)
1659 auto control = CKM::Control::create();
1661 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "test-pass")),
1662 "Error=" << CKM::ErrorToString(temp));
1665 RUNNER_TEST(T1412_rsa_key_create_verify)
1668 auto manager = CKM::Manager::create();
1670 std::string prv = "-----BEGIN RSA PRIVATE KEY-----\n"
1671 "Proc-Type: 4,ENCRYPTED\n"
1672 "DEK-Info: DES-EDE3-CBC,6C6507B11671DABC\n"
1674 "YiKNviNqc/V/i241CKtAVsNckesE0kcaka3VrY7ApXR+Va93YoEwVQ8gB9cE/eHH\n"
1675 "S0j3ZS1PAVFM/qo4ZnPdMzaSLvTQw0GAL90wWgF3XQ+feMnWyBObEoQdGXE828TB\n"
1676 "SLz4UOIQ55Dx6JSWTfEhwAlPs2cEWD14xvuxPzAEzBIYmWmBBsCN94YgFeRTzjH0\n"
1677 "TImoYVMN60GgOfZWw6rXq9RaV5dY0Y6F1piypCLGD35VaXAutdHIDvwUGECPm7SN\n"
1678 "w05jRro53E1vb4mYlZEY/bs4q7XEOI5+ZKT76Xn0oEJNX1KRL1h2q8fgUkm5j40M\n"
1679 "uQj71aLR9KyIoQARwGLeRy09tLVjH3fj66CCMqaPcxcIRIyWi5yYBB0s53ipm6A9\n"
1680 "CYuyc7MS2C0pOdWKsDvYsHR/36KUiIdPuhF4AbaTqqO0eWeuP7Na7dGK56Fl+ooi\n"
1681 "cUpJr7cIqMl2vL25B0jW7d4TB3zwCEkVVD1fBPeNoZWo30z4bILcBqjjPkQfHZ2e\n"
1682 "xNraG3qI4FHjoPT8JEE8p+PgwaMoINlICyIMKiCdvwz9yEnsHPy7FkmatpS+jFoS\n"
1683 "mg8R9vMwgK/HGEm0dmb/7/a0XsG2jCDm6cOmJdZJFQ8JW7hFs3eOHpNlQYDChG2D\n"
1684 "A1ExslqBtbpicywTZhzFdYU/hxeCr4UqcY27Zmhr4JlBPMyvadWKeOqCamWepjbT\n"
1685 "T/MhWJbmWgZbI5s5sbpu7cOYubQcUIEsTaQXGx/KEzGo1HLn9tzSeQfP/nqjAD/L\n"
1686 "T5t1Mb8o4LuV/fGIT33Q3i2FospJMqp2JINNzG18I6Fjo08PTvJ3row40Rb76+lJ\n"
1687 "wN1IBthgBgsgsOdB6XNc56sV+uq2TACsNNWw+JnFRCkCQgfF/KUrvN+WireWq88B\n"
1688 "9UPG+Hbans5A6K+y1a+bzfdYnKws7x8wNRyPxb7Vb2t9ZTl5PBorPLVGsjgf9N5X\n"
1689 "tCdBlfJsUdXot+EOxrIczV5zx0JIB1Y9hrDG07RYkzPuJKxkW7skqeLo8oWGVpaQ\n"
1690 "LGWvuebky1R75hcSuL3e4QHfjBHPdQ31fScB884tqkbhBAWr2nT9bYEmyT170bno\n"
1691 "8QkyOSb99xZBX55sLDHs9p61sTJr2C9Lz/KaWQs+3hTkpwSjSRyjEMH2n491qiQX\n"
1692 "G+kvLEnvtR8sl9zinorj/RfsxyPntAxudfY3qaYUu2QkLvVdfTVUVbxS/Fg8f7B3\n"
1693 "hEjCtpKgFjPxQuHE3didNOr5xM7mkmLN/QA7yHVgdpE64T5mFgC3JcVRpcR7zBPH\n"
1694 "3OeXHgjrhDfN8UIX/cq6gNgD8w7O0rhHa3mEXI1xP14ykPcJ7wlRuLm9P3fwx5A2\n"
1695 "jQrVKJKw1Nzummmspn4VOpJY3LkH4Sxo4e7Soo1l1cxJpzmERwgMF+vGz1L70+DG\n"
1696 "M0hVrz1PxlOsBBFgcdS4TB91DIs/RcFDqrJ4gOPNKCgBP+rgTXXLFcxUwJfE3lKg\n"
1697 "Kmpwdne6FuQYX3eyRVAmPgOHbJuRQCh/V4fYo51UxCcEKeKy6UgOPEJlXksWGbH5\n"
1698 "VFmlytYW6dFKJvjltSmK6L2r+TlyEQoXwTqe4bkfhB2LniDEq28hKQ==\n"
1699 "-----END RSA PRIVATE KEY-----\n";
1701 std::string pub = "-----BEGIN PUBLIC KEY-----\n"
1702 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
1703 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
1704 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
1705 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
1706 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
1707 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
1709 "-----END PUBLIC KEY-----\n";
1711 std::string message = "message test";
1713 CKM::Alias aliasPub = "pub1";
1714 CKM::Alias aliasPrv = "prv1";
1715 CKM::Password password = "1234";
1716 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
1717 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
1718 CKM::RawBuffer signature;
1720 auto keyPub = CKM::Key::create(CKM::RawBuffer(pub.begin(), pub.end()));
1721 auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()), password);
1723 RUNNER_ASSERT_MSG(NULL != keyPub.get(),
1724 "Key is empty. Failed to import public key.");
1725 RUNNER_ASSERT_MSG(NULL != keyPrv.get(),
1726 "Key is empty. Failed to import private key.");
1729 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPub, keyPub, CKM::Policy())),
1730 "Error=" << CKM::ErrorToString(temp));
1732 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
1733 "Error=" << CKM::ErrorToString(temp));
1736 CKM_API_SUCCESS == (temp = manager->createSignature(
1739 CKM::RawBuffer(message.begin(), message.end()),
1743 "Error=" << CKM::ErrorToString(temp));
1746 CKM_API_SUCCESS == (temp = manager->verifySignature(
1749 CKM::RawBuffer(message.begin(), message.end()),
1753 "Error=" << CKM::ErrorToString(temp));
1756 RUNNER_TEST(T1413_dsa_key_create_verify)
1759 auto manager = CKM::Manager::create();
1761 std::string prv = "-----BEGIN DSA PRIVATE KEY-----\n"
1762 "MIIBvAIBAAKBgQC3r3mg/xIXlvsLNWLlu+39+OPm65BM5gVXxWB6+7fo8Lup0Ht+\n"
1763 "NUqBEiRvjwoK64cu+ijQwn73osBKFrn1R5yOG2AVPwpczwN2pn+nOcrneOWUf2+j\n"
1764 "ogLnsOqIWNJkBp86noqPAWgrGWiehM4gkpZHSAyYrEnz4J5Vh6n+AMB1XQIVAOyN\n"
1765 "SUO7ARSfjdfcNzprvmjvBBtPAoGBAJXWoMvwnMYYeN3GbgGUMYCSwnKdY4OjXTzH\n"
1766 "ZGdk3Eoo72lcQbvoIxBjqjeTrNlelBe0v5P64x2JnF/bsYKY5At9ckzayshESABS\n"
1767 "GGbRtiuy1QVGauRYJuyPN0AVXISdjwO5gWroCRRITY24SjUYqeVB9/JXtWA2fyIg\n"
1768 "PrLxTqXqAoGAPT91aEgwFdulzmHlvr3k+GBCE9z+hq0c3FGUCtGbVOqg2KPqMBgw\n"
1769 "Sb4MC0msQys4DTVZhLJI+C5eIPEHgfBMqY1ZNJdOOSCQciDXnRfSqKbT6tjDTgR5\n"
1770 "jmh5bG1Q8QFeBTHCDsQHoQYWgx0nyu12lASN80rCYMYCBhubtrVaLmcCFQC0IB4m\n"
1771 "u1roOuaPY+Hl19BlTE2qdw==\n"
1772 "-----END DSA PRIVATE KEY-----";
1774 std::string pub = "-----BEGIN PUBLIC KEY-----\n"
1775 "MIIBtzCCASwGByqGSM44BAEwggEfAoGBALeveaD/EheW+ws1YuW77f344+brkEzm\n"
1776 "BVfFYHr7t+jwu6nQe341SoESJG+PCgrrhy76KNDCfveiwEoWufVHnI4bYBU/ClzP\n"
1777 "A3amf6c5yud45ZR/b6OiAuew6ohY0mQGnzqeio8BaCsZaJ6EziCSlkdIDJisSfPg\n"
1778 "nlWHqf4AwHVdAhUA7I1JQ7sBFJ+N19w3Omu+aO8EG08CgYEAldagy/Ccxhh43cZu\n"
1779 "AZQxgJLCcp1jg6NdPMdkZ2TcSijvaVxBu+gjEGOqN5Os2V6UF7S/k/rjHYmcX9ux\n"
1780 "gpjkC31yTNrKyERIAFIYZtG2K7LVBUZq5Fgm7I83QBVchJ2PA7mBaugJFEhNjbhK\n"
1781 "NRip5UH38le1YDZ/IiA+svFOpeoDgYQAAoGAPT91aEgwFdulzmHlvr3k+GBCE9z+\n"
1782 "hq0c3FGUCtGbVOqg2KPqMBgwSb4MC0msQys4DTVZhLJI+C5eIPEHgfBMqY1ZNJdO\n"
1783 "OSCQciDXnRfSqKbT6tjDTgR5jmh5bG1Q8QFeBTHCDsQHoQYWgx0nyu12lASN80rC\n"
1784 "YMYCBhubtrVaLmc=\n"
1785 "-----END PUBLIC KEY-----";
1787 std::string message = "message test";
1789 CKM::Alias aliasPub = "pub2";
1790 CKM::Alias aliasPrv = "prv2";
1791 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
1792 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
1793 CKM::RawBuffer signature;
1795 auto keyPub = CKM::Key::create(CKM::RawBuffer(pub.begin(), pub.end()));
1796 auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()), CKM::Password());
1798 RUNNER_ASSERT_MSG(NULL != keyPub.get(),
1799 "Key is empty. Failed to import public key.");
1800 RUNNER_ASSERT_MSG(NULL != keyPrv.get(),
1801 "Key is empty. Failed to import private key.");
1804 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPub, keyPub, CKM::Policy())),
1805 "Error=" << CKM::ErrorToString(temp));
1807 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
1808 "Error=" << CKM::ErrorToString(temp));
1811 CKM_API_SUCCESS == (temp = manager->createSignature(
1814 CKM::RawBuffer(message.begin(), message.end()),
1818 "Error=" << CKM::ErrorToString(temp));
1821 CKM_API_SUCCESS == (temp = manager->verifySignature(
1824 CKM::RawBuffer(message.begin(), message.end()),
1828 "Error=" << CKM::ErrorToString(temp));
1832 RUNNER_TEST(T1414_ec_key_create_verify)
1835 auto manager = CKM::Manager::create();
1837 std::string prv = "-----BEGIN EC PRIVATE KEY-----\n"
1838 "MHQCAQEEIJNud6U4h8EM1rASn4W5vQOJELTaVPQTUiESaBULvQUVoAcGBSuBBAAK\n"
1839 "oUQDQgAEL1R+hgjiFrdjbUKRNOxUG8ze9nveD9zT05YHeT7vK0w08AUL1HCH5nFV\n"
1840 "ljePBYSxe6CybFiseayaxRxjA+iF1g==\n"
1841 "-----END EC PRIVATE KEY-----\n";
1843 std::string pub = "-----BEGIN PUBLIC KEY-----\n"
1844 "MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEL1R+hgjiFrdjbUKRNOxUG8ze9nveD9zT\n"
1845 "05YHeT7vK0w08AUL1HCH5nFVljePBYSxe6CybFiseayaxRxjA+iF1g==\n"
1846 "-----END PUBLIC KEY-----\n";
1848 std::string message = "message test";
1850 CKM::Alias aliasPub = "ecpub2";
1851 CKM::Alias aliasPrv = "ecprv2";
1852 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
1853 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
1854 CKM::RawBuffer signature;
1856 auto keyPub = CKM::Key::create(CKM::RawBuffer(pub.begin(), pub.end()));
1857 auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()));
1859 RUNNER_ASSERT_MSG(NULL != keyPub.get(),
1860 "Key is empty. Failed to import public key.");
1861 RUNNER_ASSERT_MSG(NULL != keyPrv.get(),
1862 "Key is empty. Failed to import private key.");
1865 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPub, keyPub, CKM::Policy())),
1866 "Error=" << CKM::ErrorToString(temp));
1868 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
1869 "Error=" << CKM::ErrorToString(temp));
1872 CKM_API_SUCCESS == (temp = manager->createSignature(
1875 CKM::RawBuffer(message.begin(), message.end()),
1879 "Error=" << CKM::ErrorToString(temp));
1882 CKM_API_SUCCESS == (temp = manager->verifySignature(
1885 CKM::RawBuffer(message.begin(), message.end()),
1889 "Error=" << CKM::ErrorToString(temp));
1891 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
1893 memcpy((void*)signature.data(), "BROKEN", 6);
1896 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
1899 CKM::RawBuffer(message.begin(), message.end()),
1903 "Error=" << CKM::ErrorToString(temp));
1906 RUNNER_TEST(T1415_rsa_key_create_verify_negative)
1909 auto manager = CKM::Manager::create();
1910 std::string message = "message asdfaslkdfjlksadjf test";
1912 CKM::Alias aliasPub = "pub1";
1913 CKM::Alias aliasPrv = "prv1";
1915 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
1916 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
1917 CKM::RawBuffer signature;
1920 CKM_API_SUCCESS == (temp = manager->createSignature(
1923 CKM::RawBuffer(message.begin(), message.end()),
1927 "Error=" << CKM::ErrorToString(temp));
1930 CKM_API_SUCCESS == (temp = manager->verifySignature(
1933 CKM::RawBuffer(message.begin(), message.end()),
1937 "Error=" << CKM::ErrorToString(temp));
1939 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
1940 memcpy((void*)signature.data(), "BROKEN", 6);
1943 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
1946 CKM::RawBuffer(message.begin(), message.end()),
1950 "Error=" << CKM::ErrorToString(temp));
1953 RUNNER_TEST(T1416_dsa_key_create_verify_negative)
1956 auto manager = CKM::Manager::create();
1957 std::string message = "message asdfaslkdfjlksadjf test";
1959 CKM::Alias aliasPub = "pub2";
1960 CKM::Alias aliasPrv = "prv2";
1962 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
1963 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
1964 CKM::RawBuffer signature;
1967 CKM_API_SUCCESS == (temp = manager->createSignature(
1970 CKM::RawBuffer(message.begin(), message.end()),
1974 "Error=" << CKM::ErrorToString(temp));
1977 CKM_API_SUCCESS == (temp = manager->verifySignature(
1980 CKM::RawBuffer(message.begin(), message.end()),
1984 "Error=" << CKM::ErrorToString(temp));
1986 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
1987 memcpy((void*)signature.data(), "BROKEN", 6);
1990 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
1993 CKM::RawBuffer(message.begin(), message.end()),
1997 "Error=" << CKM::ErrorToString(temp));
2000 RUNNER_TEST(T1417_rsa_cert_create_verify_signature)
2003 auto manager = CKM::Manager::create();
2006 "-----BEGIN RSA PRIVATE KEY-----\n"
2007 "MIICXQIBAAKBgQDCKb9BkTdOjCTXKPi/H5FSGuyrgzORBtR3nCTg7SRnL47zNGEj\n"
2008 "l2wkgsY9ZO3UJHm0gy5KMjWeCuUVkSD3G46J9obg1bYJivCQBJKxfieA8sWOtNq1\n"
2009 "M8emHGK8o3sjaRklrngmk2xSCs5vFJVlCluzAYUmrPDm64C3+n4yW4pBCQIDAQAB\n"
2010 "AoGAd1IWgiHO3kuLvFome7XXpaB8P27SutZ6rcLcewnhLDRy4g0XgTrmL43abBJh\n"
2011 "gdSkooVXZity/dvuKpHUs2dQ8W8zYiFFsHfu9qqLmLP6SuBPyUCvlUDH5BGfjjxI\n"
2012 "5qGWIowj/qGHKpbQ7uB+Oe2BHwbHao0zFZIkfKqY0mX9U00CQQDwF/4zQcGS1RX/\n"
2013 "229gowTsvSGVmm8cy1jGst6xkueEuOEZ/AVPO1fjavz+nTziUk4E5lZHAj18L6Hl\n"
2014 "iO29LRujAkEAzwbEWVhfTJewCZIFf3sY3ifXhGZhVKDHVzPBNyoft8Z+09DMHTJb\n"
2015 "EYg85MIbR73aUyIWsEci/CPk6LPRNv47YwJAHtQF2NEFqPPhakPjzjXAaSFz0YDN\n"
2016 "6ZWWpZTMEWL6hUkz5iE9EUpeY54WNB8+dRT6XZix1VZNTMfU8uMdG6BSHwJBAKYM\n"
2017 "gm47AGz5eVujwD8op6CACk+KomRzdI+P1lh9s+T+E3mnDiAY5IxiXp0Ix0K6lyN4\n"
2018 "wwPuerQLwi2XFKZsMYsCQQDOiSQFP9PfXh9kFzN6e89LxOdnqC/r9i5GDB3ea8eL\n"
2019 "SCRprpzqOXZvOP1HBAEjsJ6k4f8Dqj1fm+y8ZcgAZUPr\n"
2020 "-----END RSA PRIVATE KEY-----\n";
2023 "-----BEGIN CERTIFICATE-----\n"
2024 "MIICijCCAfOgAwIBAgIJAMvaNHQ1ozT8MA0GCSqGSIb3DQEBBQUAMF4xCzAJBgNV\n"
2025 "BAYTAlBMMQ0wCwYDVQQIDARMb2R6MQ0wCwYDVQQHDARMb2R6MRAwDgYDVQQKDAdT\n"
2026 "YW1zdW5nMREwDwYDVQQLDAhTZWN1cml0eTEMMAoGA1UEAwwDQ0tNMB4XDTE0MDcw\n"
2027 "MjEyNDE0N1oXDTE3MDcwMTEyNDE0N1owXjELMAkGA1UEBhMCUEwxDTALBgNVBAgM\n"
2028 "BExvZHoxDTALBgNVBAcMBExvZHoxEDAOBgNVBAoMB1NhbXN1bmcxETAPBgNVBAsM\n"
2029 "CFNlY3VyaXR5MQwwCgYDVQQDDANDS00wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ\n"
2030 "AoGBAMIpv0GRN06MJNco+L8fkVIa7KuDM5EG1HecJODtJGcvjvM0YSOXbCSCxj1k\n"
2031 "7dQkebSDLkoyNZ4K5RWRIPcbjon2huDVtgmK8JAEkrF+J4DyxY602rUzx6YcYryj\n"
2032 "eyNpGSWueCaTbFIKzm8UlWUKW7MBhSas8ObrgLf6fjJbikEJAgMBAAGjUDBOMB0G\n"
2033 "A1UdDgQWBBQuW9DuITahZJ6saVZZI0aBlis5vzAfBgNVHSMEGDAWgBQuW9DuITah\n"
2034 "ZJ6saVZZI0aBlis5vzAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBAB2X\n"
2035 "GNtJopBJR3dCpzDONknr/c6qcsPVa3nH4c7qzy6F+4bgqa5IObnoF8zUrvD2sMAO\n"
2036 "km3C/N+Qzt8Rb7ORM6U4tlPp1kZ5t6PKjghhNaiYwVm9A/Zm+wyAmRIkQiYDr4MX\n"
2037 "e+bRAkPmJeEWpaav1lvvBnFzGSGJrnSSeWUegGyn\n"
2038 "-----END CERTIFICATE-----\n";
2040 std::string message = "message test";
2042 CKM::Alias aliasPub = "pub1-cert";
2043 CKM::Alias aliasPrv = "prv1-cert";
2044 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
2045 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
2046 CKM::RawBuffer signature;
2048 auto cert = CKM::Certificate::create(CKM::RawBuffer(pub.begin(), pub.end()), CKM::DataFormat::FORM_PEM);
2049 auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()));
2051 RUNNER_ASSERT_MSG(NULL != cert.get(),
2052 "Key is empty. Failed to import public key.");
2053 RUNNER_ASSERT_MSG(NULL != keyPrv.get(),
2054 "Key is empty. Failed to import private key.");
2057 CKM_API_SUCCESS == (temp = manager->saveCertificate(aliasPub, cert, CKM::Policy())),
2058 "Error=" << CKM::ErrorToString(temp));
2060 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
2061 "Error=" << CKM::ErrorToString(temp));
2064 CKM_API_SUCCESS == (temp = manager->createSignature(
2067 CKM::RawBuffer(message.begin(), message.end()),
2071 "Error=" << CKM::ErrorToString(temp));
2074 CKM_API_SUCCESS == (temp = manager->verifySignature(
2077 CKM::RawBuffer(message.begin(), message.end()),
2081 "Error=" << CKM::ErrorToString(temp));
2083 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
2085 memcpy((void*)signature.data(), "BROKEN", 6);
2088 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
2091 CKM::RawBuffer(message.begin(), message.end()),
2095 "Error=" << CKM::ErrorToString(temp));
2098 RUNNER_TEST(T1418_dsa_cert_create_verify_signature)
2101 auto manager = CKM::Manager::create();
2103 const std::string pub = "-----BEGIN CERTIFICATE-----\n"
2104 "MIIDUzCCAxECCQCer/fKcXtJgTALBglghkgBZQMEAwIwgYsxCzAJBgNVBAYTAlBM\n"
2105 "MQ8wDQYDVQQIDAZQb2xhbmQxDzANBgNVBAcMBldhcnNhdzEQMA4GA1UECgwHU2Ft\n"
2106 "c3VuZzEMMAoGA1UECwwDS1NGMRMwEQYDVQQDDAptLmthcnBpdWsyMSUwIwYJKoZI\n"
2107 "hvcNAQkBFhZtLmthcnBpdWsyQHNhbXN1bmcuY29tMCAXDTE0MDkyNjEzNTQwN1oY\n"
2108 "DzIxNDAwOTA1MTM1NDA3WjCBizELMAkGA1UEBhMCUEwxDzANBgNVBAgMBlBvbGFu\n"
2109 "ZDEPMA0GA1UEBwwGV2Fyc2F3MRAwDgYDVQQKDAdTYW1zdW5nMQwwCgYDVQQLDANL\n"
2110 "U0YxEzARBgNVBAMMCm0ua2FycGl1azIxJTAjBgkqhkiG9w0BCQEWFm0ua2FycGl1\n"
2111 "azJAc2Ftc3VuZy5jb20wggG3MIIBKwYHKoZIzjgEATCCAR4CgYEA9Bhh7ZA4onkY\n"
2112 "uDNQbYR4EwkJ6RpD505hB0GF6yppUNp2LanvNcQXcyXY88MB6OdP7Rikbu1H2zP4\n"
2113 "gONCtdxKW58Za7h9bFzYjxcObZsS52F9DP7sv3C4sX4xNWApfhUgbfzKaRCJOkOs\n"
2114 "06tV7teu3G/v26PdI8dlykIuQXQZmH8CFQCHsIV0njb2yC3ggfKz+exH+g5jAQKB\n"
2115 "gBVLYfVCMjUz5XJH+xYU3A8W8rpSLqZKIK2d9mbXqhpz8QK1bvNQUlSRZo+o1ZYV\n"
2116 "mJn3Mx2YuiifHZNKdBNweCqe5a+HV2RSl1Yv/TV9famZKlogGslsmPHUOJMlSIdh\n"
2117 "MfMwVny4/rNtjEtEFE1WnaTr1W6MKH1EBbizVo8fmWFrA4GFAAKBgQCaPjrlkAyX\n"
2118 "kBitWo+w0xZN4OSk13SsCzZ/PG+5zOgMRaFm2XbiC04YsGCi4NFOd9kaiP7w1CsP\n"
2119 "iqG6Vwv0T/VcoxBl/hp6jEqTDSrM6z0ungjDO9wGOdI+jZS0UjVahgC4ZLDHhrOa\n"
2120 "CjfxcHruO3e416b/Rm2CjhOzjKdoSFUWVzALBglghkgBZQMEAwIDLwAwLAIUHa+A\n"
2121 "5xo8O/tPuH9gXkr1mee6kRYCFGNycJ1xkc3nIJaEQOtGfDe7S71A\n"
2122 "-----END CERTIFICATE-----\n";
2124 const std::string prv = "-----BEGIN DSA PRIVATE KEY-----\n"
2125 "MIIBuwIBAAKBgQD0GGHtkDiieRi4M1BthHgTCQnpGkPnTmEHQYXrKmlQ2nYtqe81\n"
2126 "xBdzJdjzwwHo50/tGKRu7UfbM/iA40K13EpbnxlruH1sXNiPFw5tmxLnYX0M/uy/\n"
2127 "cLixfjE1YCl+FSBt/MppEIk6Q6zTq1Xu167cb+/bo90jx2XKQi5BdBmYfwIVAIew\n"
2128 "hXSeNvbILeCB8rP57Ef6DmMBAoGAFUth9UIyNTPlckf7FhTcDxbyulIupkogrZ32\n"
2129 "ZteqGnPxArVu81BSVJFmj6jVlhWYmfczHZi6KJ8dk0p0E3B4Kp7lr4dXZFKXVi/9\n"
2130 "NX19qZkqWiAayWyY8dQ4kyVIh2Ex8zBWfLj+s22MS0QUTVadpOvVbowofUQFuLNW\n"
2131 "jx+ZYWsCgYEAmj465ZAMl5AYrVqPsNMWTeDkpNd0rAs2fzxvuczoDEWhZtl24gtO\n"
2132 "GLBgouDRTnfZGoj+8NQrD4qhulcL9E/1XKMQZf4aeoxKkw0qzOs9Lp4IwzvcBjnS\n"
2133 "Po2UtFI1WoYAuGSwx4azmgo38XB67jt3uNem/0Ztgo4Ts4ynaEhVFlcCFGMH+Z9l\n"
2134 "vonbjii3BYe4AIdkzOvp\n"
2135 "-----END DSA PRIVATE KEY-----\n";
2137 std::string message = "message test";
2139 CKM::Alias aliasPub = "pub2-cert";
2140 CKM::Alias aliasPrv = "prv2-cert";
2141 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
2142 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
2143 CKM::RawBuffer signature;
2145 auto cert = CKM::Certificate::create(CKM::RawBuffer(pub.begin(), pub.end()), CKM::DataFormat::FORM_PEM);
2146 auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()));
2148 RUNNER_ASSERT_MSG(NULL != cert.get(),
2149 "Key is empty. Failed to import public key.");
2150 RUNNER_ASSERT_MSG(NULL != keyPrv.get(),
2151 "Key is empty. Failed to import private key.");
2154 CKM_API_SUCCESS == (temp = manager->saveCertificate(aliasPub, cert, CKM::Policy())),
2155 "Error=" << CKM::ErrorToString(temp));
2157 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
2158 "Error=" << CKM::ErrorToString(temp));
2161 CKM_API_SUCCESS == (temp = manager->createSignature(
2164 CKM::RawBuffer(message.begin(), message.end()),
2168 "Error=" << CKM::ErrorToString(temp));
2171 CKM_API_SUCCESS == (temp = manager->verifySignature(
2174 CKM::RawBuffer(message.begin(), message.end()),
2178 "Error=" << CKM::ErrorToString(temp));
2180 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
2182 memcpy((void*)signature.data(), "BROKEN", 6);
2185 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
2188 CKM::RawBuffer(message.begin(), message.end()),
2192 "Error=" << CKM::ErrorToString(temp));
2195 RUNNER_TEST(T1419_ecdsa_cert_create_verify_signature)
2198 auto manager = CKM::Manager::create();
2201 "-----BEGIN EC PRIVATE KEY-----\n"
2202 "MIH8AgEBBBRPb/2utS5aCtyuwmzIHpU6LH3mc6CBsjCBrwIBATAgBgcqhkjOPQEB\n"
2203 "AhUA/////////////////////3////8wQwQU/////////////////////3////wE\n"
2204 "FByXvvxUvXqLZaz4n4HU1K3FZfpFAxUAEFPN5CwU1pbmdodWFRdTO/P4M0UEKQRK\n"
2205 "lrVojvVzKEZkaYlow4u5E8v8giOmKFUxaJR9WdzJEgQjUTd6xfsyAhUBAAAAAAAA\n"
2206 "AAAAAfTI+Seu08p1IlcCAQGhLAMqAATehLqu61gKC3Tgr4wQMVoguAhhG3Uwwz8u\n"
2207 "ELyhe7yPCAuOoLZlTLgf\n"
2208 "-----END EC PRIVATE KEY-----\n";
2211 "-----BEGIN CERTIFICATE-----\n"
2212 "MIICfDCCAjqgAwIBAgIJANIytpeTKlXBMAkGByqGSM49BAEwXjELMAkGA1UEBhMC\n"
2213 "UEwxDTALBgNVBAgMBExvZHoxDTALBgNVBAcMBExvZHoxEDAOBgNVBAoMB1NhbXN1\n"
2214 "bmcxETAPBgNVBAsMCFNlY3VyaXR5MQwwCgYDVQQDDANDS00wHhcNMTQwNzAyMTI0\n"
2215 "MTQ3WhcNMTcwNzAxMTI0MTQ3WjBeMQswCQYDVQQGEwJQTDENMAsGA1UECAwETG9k\n"
2216 "ejENMAsGA1UEBwwETG9kejEQMA4GA1UECgwHU2Ftc3VuZzERMA8GA1UECwwIU2Vj\n"
2217 "dXJpdHkxDDAKBgNVBAMMA0NLTTCB6jCBuwYHKoZIzj0CATCBrwIBATAgBgcqhkjO\n"
2218 "PQEBAhUA/////////////////////3////8wQwQU/////////////////////3//\n"
2219 "//wEFByXvvxUvXqLZaz4n4HU1K3FZfpFAxUAEFPN5CwU1pbmdodWFRdTO/P4M0UE\n"
2220 "KQRKlrVojvVzKEZkaYlow4u5E8v8giOmKFUxaJR9WdzJEgQjUTd6xfsyAhUBAAAA\n"
2221 "AAAAAAAAAfTI+Seu08p1IlcCAQEDKgAE3oS6rutYCgt04K+MEDFaILgIYRt1MMM/\n"
2222 "LhC8oXu8jwgLjqC2ZUy4H6NQME4wHQYDVR0OBBYEFELElWx3kbLo55Cfn1vywsEZ\n"
2223 "ccsmMB8GA1UdIwQYMBaAFELElWx3kbLo55Cfn1vywsEZccsmMAwGA1UdEwQFMAMB\n"
2224 "Af8wCQYHKoZIzj0EAQMxADAuAhUAumC4mGoyK97SxTvVBQ+ELfCbxEECFQCbMJ72\n"
2225 "Q1oBry6NEc+lLFmWMDesAA==\n"
2226 "-----END CERTIFICATE-----\n";
2228 std::string message = "message test";
2230 CKM::Alias aliasPub = "pub3";
2231 CKM::Alias aliasPrv = "prv3";
2232 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
2233 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
2234 CKM::RawBuffer signature;
2236 auto cert = CKM::Certificate::create(CKM::RawBuffer(pub.begin(), pub.end()), CKM::DataFormat::FORM_PEM);
2237 auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()));
2239 RUNNER_ASSERT_MSG(NULL != cert.get(),
2240 "Key is empty. Failed to import public key.");
2241 RUNNER_ASSERT_MSG(NULL != keyPrv.get(),
2242 "Key is empty. Failed to import private key.");
2245 CKM_API_SUCCESS == (temp = manager->saveCertificate(aliasPub, cert, CKM::Policy())),
2246 "Error=" << CKM::ErrorToString(temp));
2248 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
2249 "Error=" << CKM::ErrorToString(temp));
2252 CKM_API_SUCCESS == (temp = manager->createSignature(
2255 CKM::RawBuffer(message.begin(), message.end()),
2259 "Error=" << CKM::ErrorToString(temp));
2262 CKM_API_SUCCESS == (temp = manager->verifySignature(
2265 CKM::RawBuffer(message.begin(), message.end()),
2269 "Error=" << CKM::ErrorToString(temp));
2271 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
2273 memcpy((void*)signature.data(), "BROKEN", 6);
2276 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
2279 CKM::RawBuffer(message.begin(), message.end()),
2283 "Error=" << CKM::ErrorToString(temp));
2286 RUNNER_TEST(T1420_deinit)
2289 auto control = CKM::Control::create();
2292 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
2293 "Error=" << CKM::ErrorToString(temp));
2295 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
2296 "Error=" << CKM::ErrorToString(temp));
2299 RUNNER_TEST(T14180_init)
2302 auto control = CKM::Control::create();
2304 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "test-pass")),
2305 "Error=" << CKM::ErrorToString(temp));
2307 auto manager = CKM::Manager::create();
2309 // Prepare RSA Key Pair
2310 std::string prv = "-----BEGIN RSA PRIVATE KEY-----\n"
2311 "Proc-Type: 4,ENCRYPTED\n"
2312 "DEK-Info: DES-EDE3-CBC,6C6507B11671DABC\n"
2314 "YiKNviNqc/V/i241CKtAVsNckesE0kcaka3VrY7ApXR+Va93YoEwVQ8gB9cE/eHH\n"
2315 "S0j3ZS1PAVFM/qo4ZnPdMzaSLvTQw0GAL90wWgF3XQ+feMnWyBObEoQdGXE828TB\n"
2316 "SLz4UOIQ55Dx6JSWTfEhwAlPs2cEWD14xvuxPzAEzBIYmWmBBsCN94YgFeRTzjH0\n"
2317 "TImoYVMN60GgOfZWw6rXq9RaV5dY0Y6F1piypCLGD35VaXAutdHIDvwUGECPm7SN\n"
2318 "w05jRro53E1vb4mYlZEY/bs4q7XEOI5+ZKT76Xn0oEJNX1KRL1h2q8fgUkm5j40M\n"
2319 "uQj71aLR9KyIoQARwGLeRy09tLVjH3fj66CCMqaPcxcIRIyWi5yYBB0s53ipm6A9\n"
2320 "CYuyc7MS2C0pOdWKsDvYsHR/36KUiIdPuhF4AbaTqqO0eWeuP7Na7dGK56Fl+ooi\n"
2321 "cUpJr7cIqMl2vL25B0jW7d4TB3zwCEkVVD1fBPeNoZWo30z4bILcBqjjPkQfHZ2e\n"
2322 "xNraG3qI4FHjoPT8JEE8p+PgwaMoINlICyIMKiCdvwz9yEnsHPy7FkmatpS+jFoS\n"
2323 "mg8R9vMwgK/HGEm0dmb/7/a0XsG2jCDm6cOmJdZJFQ8JW7hFs3eOHpNlQYDChG2D\n"
2324 "A1ExslqBtbpicywTZhzFdYU/hxeCr4UqcY27Zmhr4JlBPMyvadWKeOqCamWepjbT\n"
2325 "T/MhWJbmWgZbI5s5sbpu7cOYubQcUIEsTaQXGx/KEzGo1HLn9tzSeQfP/nqjAD/L\n"
2326 "T5t1Mb8o4LuV/fGIT33Q3i2FospJMqp2JINNzG18I6Fjo08PTvJ3row40Rb76+lJ\n"
2327 "wN1IBthgBgsgsOdB6XNc56sV+uq2TACsNNWw+JnFRCkCQgfF/KUrvN+WireWq88B\n"
2328 "9UPG+Hbans5A6K+y1a+bzfdYnKws7x8wNRyPxb7Vb2t9ZTl5PBorPLVGsjgf9N5X\n"
2329 "tCdBlfJsUdXot+EOxrIczV5zx0JIB1Y9hrDG07RYkzPuJKxkW7skqeLo8oWGVpaQ\n"
2330 "LGWvuebky1R75hcSuL3e4QHfjBHPdQ31fScB884tqkbhBAWr2nT9bYEmyT170bno\n"
2331 "8QkyOSb99xZBX55sLDHs9p61sTJr2C9Lz/KaWQs+3hTkpwSjSRyjEMH2n491qiQX\n"
2332 "G+kvLEnvtR8sl9zinorj/RfsxyPntAxudfY3qaYUu2QkLvVdfTVUVbxS/Fg8f7B3\n"
2333 "hEjCtpKgFjPxQuHE3didNOr5xM7mkmLN/QA7yHVgdpE64T5mFgC3JcVRpcR7zBPH\n"
2334 "3OeXHgjrhDfN8UIX/cq6gNgD8w7O0rhHa3mEXI1xP14ykPcJ7wlRuLm9P3fwx5A2\n"
2335 "jQrVKJKw1Nzummmspn4VOpJY3LkH4Sxo4e7Soo1l1cxJpzmERwgMF+vGz1L70+DG\n"
2336 "M0hVrz1PxlOsBBFgcdS4TB91DIs/RcFDqrJ4gOPNKCgBP+rgTXXLFcxUwJfE3lKg\n"
2337 "Kmpwdne6FuQYX3eyRVAmPgOHbJuRQCh/V4fYo51UxCcEKeKy6UgOPEJlXksWGbH5\n"
2338 "VFmlytYW6dFKJvjltSmK6L2r+TlyEQoXwTqe4bkfhB2LniDEq28hKQ==\n"
2339 "-----END RSA PRIVATE KEY-----\n";
2341 std::string pub = "-----BEGIN PUBLIC KEY-----\n"
2342 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
2343 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
2344 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
2345 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
2346 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
2347 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
2349 "-----END PUBLIC KEY-----\n";
2351 CKM::Alias aliasPub = "pub_nohash1";
2352 CKM::Alias aliasPrv = "prv_nohash1";
2353 CKM::Password password = "1234";
2355 auto keyPub = CKM::Key::create(CKM::RawBuffer(pub.begin(), pub.end()));
2356 auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()), password);
2358 RUNNER_ASSERT_MSG(NULL != keyPub.get(),
2359 "Key is empty. Failed to import public key.");
2360 RUNNER_ASSERT_MSG(NULL != keyPrv.get(),
2361 "Key is empty. Failed to import private key.");
2364 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPub, keyPub, CKM::Policy())),
2365 "Error=" << CKM::ErrorToString(temp));
2367 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
2368 "Error=" << CKM::ErrorToString(temp));
2370 // Prepare ECDSA Key Pair
2371 std::string ecprv = "-----BEGIN EC PRIVATE KEY-----\n"
2372 "MHQCAQEEIJNud6U4h8EM1rASn4W5vQOJELTaVPQTUiESaBULvQUVoAcGBSuBBAAK\n"
2373 "oUQDQgAEL1R+hgjiFrdjbUKRNOxUG8ze9nveD9zT05YHeT7vK0w08AUL1HCH5nFV\n"
2374 "ljePBYSxe6CybFiseayaxRxjA+iF1g==\n"
2375 "-----END EC PRIVATE KEY-----\n";
2377 std::string ecpub = "-----BEGIN PUBLIC KEY-----\n"
2378 "MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEL1R+hgjiFrdjbUKRNOxUG8ze9nveD9zT\n"
2379 "05YHeT7vK0w08AUL1HCH5nFVljePBYSxe6CybFiseayaxRxjA+iF1g==\n"
2380 "-----END PUBLIC KEY-----\n";
2382 CKM::Alias aliasEcPub = "ecpub_nohash1";
2383 CKM::Alias aliasEcPrv = "ecprv_nohash1";
2385 auto ecKeyPub = CKM::Key::create(CKM::RawBuffer(ecpub.begin(), ecpub.end()));
2386 auto ecKeyPrv = CKM::Key::create(CKM::RawBuffer(ecprv.begin(), ecprv.end()));
2388 RUNNER_ASSERT_MSG(NULL != ecKeyPub.get(),
2389 "Key is empty. Failed to import public key.");
2390 RUNNER_ASSERT_MSG(NULL != ecKeyPrv.get(),
2391 "Key is empty. Failed to import private key.");
2394 CKM_API_SUCCESS == (temp = manager->saveKey(aliasEcPub, ecKeyPub, CKM::Policy())),
2395 "Error=" << CKM::ErrorToString(temp));
2397 CKM_API_SUCCESS == (temp = manager->saveKey(aliasEcPrv, ecKeyPrv, CKM::Policy())),
2398 "Error=" << CKM::ErrorToString(temp));
2402 RUNNER_TEST(T14181_rsa_create_signatue_nohash)
2405 auto manager = CKM::Manager::create();
2406 std::string message = "message asdfaslkdfjlksadjf test";
2408 CKM::Alias aliasPub = "pub_nohash1";
2409 CKM::Alias aliasPrv = "prv_nohash1";
2411 CKM::HashAlgorithm hash = CKM::HashAlgorithm::NONE;
2412 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
2413 CKM::RawBuffer signature;
2416 CKM_API_SUCCESS == (temp = manager->createSignature(
2419 CKM::RawBuffer(message.begin(), message.end()),
2423 "Error=" << CKM::ErrorToString(temp));
2426 CKM_API_SUCCESS == (temp = manager->verifySignature(
2429 CKM::RawBuffer(message.begin(), message.end()),
2433 "Error=" << CKM::ErrorToString(temp));
2435 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
2436 memcpy((void*)signature.data(), "BROKEN", 6);
2439 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
2442 CKM::RawBuffer(message.begin(), message.end()),
2446 "Error=" << CKM::ErrorToString(temp));
2449 RUNNER_TEST(T14182_rsa_create_signatue_nohash_nopad)
2452 auto manager = CKM::Manager::create();
2453 std::string message = "message asdfaslkdfjlksadjf test";
2455 CKM::Alias aliasPub = "pub_nohash1";
2456 CKM::Alias aliasPrv = "prv_nohash1";
2458 CKM::HashAlgorithm hash = CKM::HashAlgorithm::NONE;
2459 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::NONE;
2460 CKM::RawBuffer signature;
2463 CKM_API_ERROR_INPUT_PARAM == (temp = manager->createSignature(
2466 CKM::RawBuffer(message.begin(), message.end()),
2470 "Error=" << CKM::ErrorToString(temp));
2473 RUNNER_TEST(T14183_rsa_create_signatue_nohash_bigmsg)
2476 auto manager = CKM::Manager::create();
2477 std::string message = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2478 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2479 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2480 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2481 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2482 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2483 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2484 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2485 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2486 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2487 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2488 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2489 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2490 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2491 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2492 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2493 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2494 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2495 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2496 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
2498 CKM::Alias aliasPub = "pub_nohash1";
2499 CKM::Alias aliasPrv = "prv_nohash1";
2501 CKM::HashAlgorithm hash = CKM::HashAlgorithm::NONE;
2502 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
2503 CKM::RawBuffer signature;
2506 CKM_API_ERROR_INPUT_PARAM == (temp = manager->createSignature(
2509 CKM::RawBuffer(message.begin(), message.end()),
2513 "Error=" << CKM::ErrorToString(temp));
2517 RUNNER_TEST(T14184_ec_create_signatue_nohash)
2520 auto manager = CKM::Manager::create();
2522 std::string message = "message test";
2524 CKM::Alias aliasPub = "ecpub_nohash1";
2525 CKM::Alias aliasPrv = "ecprv_nohash1";
2526 CKM::HashAlgorithm hash = CKM::HashAlgorithm::NONE;
2527 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
2528 CKM::RawBuffer signature;
2531 CKM_API_SUCCESS == (temp = manager->createSignature(
2534 CKM::RawBuffer(message.begin(), message.end()),
2538 "Error=" << CKM::ErrorToString(temp));
2541 CKM_API_SUCCESS == (temp = manager->verifySignature(
2544 CKM::RawBuffer(message.begin(), message.end()),
2548 "Error=" << CKM::ErrorToString(temp));
2550 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
2552 memcpy((void*)signature.data(), "BROKEN", 6);
2555 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
2558 CKM::RawBuffer(message.begin(), message.end()),
2562 "Error=" << CKM::ErrorToString(temp));
2565 RUNNER_TEST(T14185_ec_create_signatue_nohash_bigmsg)
2568 auto manager = CKM::Manager::create();
2570 int msgSize = 1024*1024;
2571 char big_msg[msgSize];
2572 for(int i =0; i<msgSize-1; i++) {
2575 big_msg[msgSize-1]=0x00;
2576 std::string message(big_msg);
2578 CKM::Alias aliasPub = "ecpub_nohash1";
2579 CKM::Alias aliasPrv = "ecprv_nohash1";
2580 CKM::HashAlgorithm hash = CKM::HashAlgorithm::NONE;
2581 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::NONE;
2582 CKM::RawBuffer signature;
2585 CKM_API_SUCCESS == (temp = manager->createSignature(
2588 CKM::RawBuffer(message.begin(), message.end()),
2592 "Error=" << CKM::ErrorToString(temp));
2596 RUNNER_TEST(T14189_deinit)
2599 auto control = CKM::Control::create();
2602 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
2603 "Error=" << CKM::ErrorToString(temp));
2605 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
2606 "Error=" << CKM::ErrorToString(temp));
2610 RUNNER_TEST_GROUP_INIT(T151_CKM_STORAGE_PERNAMENT_TESTS);
2612 RUNNER_CHILD_TEST(T1510_init_unlock_key)
2615 AccessProvider ap("my-label");
2616 ap.allowAPI("key-manager::api-control", "rw");
2617 ap.applyAndSwithToUser(USER_TEST, GROUP_APP);
2619 auto control = CKM::Control::create();
2621 CKM_API_SUCCESS == (tmp = control->unlockUserKey(USER_TEST, "strong-password")),
2622 "Error=" << CKM::ErrorToString(tmp));
2625 RUNNER_CHILD_TEST(T1511_insert_data)
2627 AccessProvider ap("my-label");
2628 ap.allowAPI("key-manager::api-storage", "rw");
2629 ap.applyAndSwithToUser(USER_TEST, GROUP_APP);
2631 std::string ee = "-----BEGIN CERTIFICATE-----\n"
2632 "MIIF0TCCBLmgAwIBAgIQaPGTP4aS7Ut/WDNaBzdQrDANBgkqhkiG9w0BAQUFADCB\n"
2633 "ujELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
2634 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n"
2635 "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMr\n"
2636 "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTAeFw0x\n"
2637 "NDAyMjAwMDAwMDBaFw0xNTAyMjAyMzU5NTlaMIHmMRMwEQYLKwYBBAGCNzwCAQMT\n"
2638 "AlBMMR0wGwYDVQQPExRQcml2YXRlIE9yZ2FuaXphdGlvbjETMBEGA1UEBRMKMDAw\n"
2639 "MDAyNTIzNzELMAkGA1UEBhMCUEwxDzANBgNVBBEUBjAwLTk1MDEUMBIGA1UECBML\n"
2640 "bWF6b3dpZWNraWUxETAPBgNVBAcUCFdhcnN6YXdhMRYwFAYDVQQJFA1TZW5hdG9y\n"
2641 "c2thIDE4MRMwEQYDVQQKFAptQmFuayBTLkEuMQwwCgYDVQQLFANESU4xGTAXBgNV\n"
2642 "BAMUEHd3dy5tYmFuay5jb20ucGwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n"
2643 "AoIBAQDph6x8V6xUW/+651+qHF+UmorH9uaz2ZrX2bIWiMKIJFmpDDHlxcapKkqE\n"
2644 "BV04is83aiCpqKtc2ZHy2g4Hpj1eSF5BP2+OAlo0YUQZPIeRRdiMjmeAxw/ncBDx\n"
2645 "9rQBuCJ4XTD6cqQox5SI0TASOZ+wyAEjbDRXzL73XqRAFZ1LOpb2ONkolS+RutMB\n"
2646 "vshvCsWPeNe7eGLuOh6DyC6r1vX9xhw3xnjM2mTSvmtimgzSLacNGKqRrsucUgcb\n"
2647 "0+O5C2jZAtAMLyZksL92cxmWbtVzUYzem4chjHu5cRxUlPNzUJWrrczueB7Ip4A8\n"
2648 "aQuFMfNXYc0x+WLWjy//urypMKjhAgMBAAGjggGjMIIBnzAbBgNVHREEFDASghB3\n"
2649 "d3cubWJhbmsuY29tLnBsMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgWgMB0GA1Ud\n"
2650 "JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBEBgNVHSAEPTA7MDkGC2CGSAGG+EUB\n"
2651 "BxcGMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9jcHMw\n"
2652 "HQYDVR0OBBYEFN37iGaS7mZnENxZ9FGqNLR+QgoMMB8GA1UdIwQYMBaAFPyKULqe\n"
2653 "uSVae1WFT5UAY4/pWGtDMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9FVlNlY3Vy\n"
2654 "ZS1jcmwudmVyaXNpZ24uY29tL0VWU2VjdXJlMjAwNi5jcmwwfAYIKwYBBQUHAQEE\n"
2655 "cDBuMC0GCCsGAQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC52ZXJpc2lnbi5j\n"
2656 "b20wPQYIKwYBBQUHMAKGMWh0dHA6Ly9FVlNlY3VyZS1haWEudmVyaXNpZ24uY29t\n"
2657 "L0VWU2VjdXJlMjAwNi5jZXIwDQYJKoZIhvcNAQEFBQADggEBAD0wO+rooUrIM4qp\n"
2658 "PHhp+hkXK6WMQ2qzGOmbMcZjw0govg5vkzkefPDryIXXbrF8mRagiJNMSfNaWWeh\n"
2659 "Cj41OV24EdUl0OLbFxNzcvub599zRs/apfaRLTfsmlmOgi0/YP305i+3tJ2ll946\n"
2660 "P+qV1wXnXqTqEdIl4Ys3+1HmDCdTB1hoDwAAzqRVUXZ5+iiwPAU7R/LTHfMjV1ke\n"
2661 "8jtNFfrorlZMCfVH/7eEnHJvVjOJt+YFe4aFMzE+DfuYIK7MH+olC2v79kBwbnEQ\n"
2662 "fvHMA9gFwOYLUBBdSfcocp8EKZ+mRlNPGR/3LBrPeaQQ0GZEkxzRK+v/aNTuiYfr\n"
2664 "-----END CERTIFICATE-----\n";
2667 "-----BEGIN CERTIFICATE-----\n"
2668 "MIIF5DCCBMygAwIBAgIQW3dZxheE4V7HJ8AylSkoazANBgkqhkiG9w0BAQUFADCB\n"
2669 "yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
2670 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\n"
2671 "U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\n"
2672 "ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\n"
2673 "aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMTYxMTA3MjM1OTU5WjCBujEL\n"
2674 "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\n"
2675 "ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg\n"
2676 "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMrVmVy\n"
2677 "aVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTCCASIwDQYJ\n"
2678 "KoZIhvcNAQEBBQADggEPADCCAQoCggEBAJjboFXrnP0XeeOabhQdsVuYI4cWbod2\n"
2679 "nLU4O7WgerQHYwkZ5iqISKnnnbYwWgiXDOyq5BZpcmIjmvt6VCiYxQwtt9citsj5\n"
2680 "OBfH3doxRpqUFI6e7nigtyLUSVSXTeV0W5K87Gws3+fBthsaVWtmCAN/Ra+aM/EQ\n"
2681 "wGyZSpIkMQht3QI+YXZ4eLbtfjeubPOJ4bfh3BXMt1afgKCxBX9ONxX/ty8ejwY4\n"
2682 "P1C3aSijtWZfNhpSSENmUt+ikk/TGGC+4+peGXEFv54cbGhyJW+ze3PJbb0S/5tB\n"
2683 "Ml706H7FC6NMZNFOvCYIZfsZl1h44TO/7Wg+sSdFb8Di7Jdp91zT91ECAwEAAaOC\n"
2684 "AdIwggHOMB0GA1UdDgQWBBT8ilC6nrklWntVhU+VAGOP6VhrQzASBgNVHRMBAf8E\n"
2685 "CDAGAQH/AgEAMD0GA1UdIAQ2MDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRw\n"
2686 "czovL3d3dy52ZXJpc2lnbi5jb20vY3BzMD0GA1UdHwQ2MDQwMqAwoC6GLGh0dHA6\n"
2687 "Ly9FVlNlY3VyZS1jcmwudmVyaXNpZ24uY29tL3BjYTMtZzUuY3JsMA4GA1UdDwEB\n"
2688 "/wQEAwIBBjARBglghkgBhvhCAQEEBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZ\n"
2689 "MFcwVRYJaW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7\n"
2690 "GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwKQYDVR0R\n"
2691 "BCIwIKQeMBwxGjAYBgNVBAMTEUNsYXNzM0NBMjA0OC0xLTQ3MD0GCCsGAQUFBwEB\n"
2692 "BDEwLzAtBggrBgEFBQcwAYYhaHR0cDovL0VWU2VjdXJlLW9jc3AudmVyaXNpZ24u\n"
2693 "Y29tMB8GA1UdIwQYMBaAFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqGSIb3DQEB\n"
2694 "BQUAA4IBAQCWovp/5j3t1CvOtxU/wHIDX4u6FpAl98KD2Md1NGNoElMMU4l7yVYJ\n"
2695 "p8M2RE4O0GJis4b66KGbNGeNUyIXPv2s7mcuQ+JdfzOE8qJwwG6Cl8A0/SXGI3/t\n"
2696 "5rDFV0OEst4t8dD2SB8UcVeyrDHhlyQjyRNddOVG7wl8nuGZMQoIeRuPcZ8XZsg4\n"
2697 "z+6Ml7YGuXNG5NOUweVgtSV1LdlpMezNlsOjdv3odESsErlNv1HoudRETifLriDR\n"
2698 "fip8tmNHnna6l9AW5wtsbfdDbzMLKTB3+p359U64drPNGLT5IO892+bKrZvQTtKH\n"
2699 "qQ2mRHNQ3XBb7a1+Srwi1agm5MKFIA3Z\n"
2700 "-----END CERTIFICATE-----\n";
2702 auto manager = CKM::Manager::create();
2703 auto certee = CKM::Certificate::create(CKM::RawBuffer(ee.begin(), ee.end()), CKM::DataFormat::FORM_PEM);
2704 auto certim = CKM::Certificate::create(CKM::RawBuffer(im.begin(), im.end()), CKM::DataFormat::FORM_PEM);
2706 int status1 = manager->saveCertificate(CKM::Alias("CertEE"), certee, CKM::Policy());
2707 int status2 = manager->saveCertificate(CKM::Alias("CertIM"), certim, CKM::Policy());
2710 CKM_API_ERROR_DB_ALIAS_EXISTS == status1,
2711 "Certificate should be in database already. Error=" << CKM::ErrorToString(status1));
2714 CKM_API_ERROR_DB_ALIAS_EXISTS == status2,
2715 "Certificate should be in database already. Error=" << CKM::ErrorToString(status2));
2718 RUNNER_CHILD_TEST(T1519_deinit)
2721 AccessProvider ap("my-label");
2722 ap.allowAPI("key-manager::api-control", "rw");
2723 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
2725 auto control = CKM::Control::create();
2727 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_TEST)),
2728 "Error=" << CKM::ErrorToString(tmp));
2732 RUNNER_TEST_GROUP_INIT(T161_CKM_LOCKTYPE_TESTS);
2734 RUNNER_CHILD_TEST(T1610_init_lock_key)
2737 AccessProvider ap("my-label");
2738 ap.allowAPI("key-manager::api-control", "rw");
2739 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
2741 auto control = CKM::Control::create();
2743 CKM_API_SUCCESS == (tmp = control->changeUserPassword(USER_APP,"user-pass","")),
2744 "Error=" << CKM::ErrorToString(tmp));
2746 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_APP)),
2747 "Error=" << CKM::ErrorToString(tmp));
2750 RUNNER_CHILD_TEST(T1611_unlock_default_passwd)
2752 AccessProvider ap("my-label");
2753 ap.allowAPI("key-manager::api-storage", "rw");
2754 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
2757 auto manager = CKM::Manager::create();
2759 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
2760 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
2761 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
2762 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
2763 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
2764 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
2765 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
2767 "-----END PUBLIC KEY-----";
2769 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
2770 auto key = CKM::Key::create(buffer, CKM::Password());
2772 CKM::Alias alias = "mykey_defpasswd";
2775 CKM_API_SUCCESS == (temp = manager->saveKey(alias, key, CKM::Policy())),
2776 "Error=" << CKM::ErrorToString(temp));
2778 CKM_API_SUCCESS == (temp = manager->getKey(alias, CKM::Password(), key2)),
2779 "Error=" << CKM::ErrorToString(temp));
2781 key->getDER() == key2->getDER(),
2782 "Key value has been changed by service");
2784 std::string invalid_address = aliasWithLabel("i-do-not-exist", alias.c_str());
2786 CKM_API_ERROR_DB_ALIAS_UNKNOWN == (temp = manager->removeAlias(invalid_address.c_str())),
2787 "Error=" << CKM::ErrorToString(temp));
2789 CKM_API_SUCCESS == (temp = manager->removeAlias(alias)),
2790 "Error=" << CKM::ErrorToString(temp));
2793 RUNNER_CHILD_TEST(T1612_init_change_user_password)
2796 AccessProvider ap("my-label");
2797 ap.allowAPI("key-manager::api-control", "rw");
2798 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
2800 auto control = CKM::Control::create();
2802 CKM_API_SUCCESS == (tmp = control->changeUserPassword(USER_APP,"","user-pass")),
2803 "Error=" << CKM::ErrorToString(tmp));
2804 // confirm changed password
2806 CKM_API_SUCCESS == (tmp = control->unlockUserKey(USER_APP,"user-pass")),
2807 CKM::ErrorToString(tmp));
2809 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_APP)),
2810 CKM::ErrorToString(tmp));
2813 RUNNER_CHILD_TEST(T1613_unlock_default_passwd_negative)
2815 AccessProvider ap("my-label");
2816 ap.allowAPI("key-manager::api-storage", "rw");
2817 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
2820 auto manager = CKM::Manager::create();
2822 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
2823 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
2824 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
2825 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
2826 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
2827 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
2828 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
2830 "-----END PUBLIC KEY-----";
2832 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
2833 auto key = CKM::Key::create(buffer, CKM::Password());
2835 CKM::Alias alias = "mykey_defpasswd";
2838 CKM_API_ERROR_DB_LOCKED == (temp = manager->saveKey(alias, key, CKM::Policy())),
2839 "Error=" << CKM::ErrorToString(temp));
2841 CKM_API_ERROR_DB_LOCKED == (temp = manager->getKey(alias, CKM::Password(), key2)),
2842 "Error=" << CKM::ErrorToString(temp));
2844 CKM_API_ERROR_DB_LOCKED == (temp = manager->removeAlias(alias)),
2845 "Error=" << CKM::ErrorToString(temp));
2848 RUNNER_CHILD_TEST(T1619_deinit)
2850 AccessProvider ap("my-label");
2851 ap.allowAPI("key-manager::api-control", "rw");
2852 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
2855 RUNNER_TEST_GROUP_INIT(T170_CKM_STORAGE_PERNAMENT_TESTS);
2857 RUNNER_TEST(T1701_init_unlock_key)
2860 auto control = CKM::Control::create();
2862 CKM_API_SUCCESS == (tmp = control->unlockUserKey(USER_TEST+1, "t170-special-password")),
2863 "Error=" << CKM::ErrorToString(tmp));
2866 RUNNER_CHILD_TEST(T1702_insert_data)
2869 AccessProvider ap("t170-special-label");
2870 ap.allowAPI("key-manager::api-storage", "rw");
2871 ap.applyAndSwithToUser(USER_TEST+1, GROUP_APP);
2873 std::string ee = "-----BEGIN CERTIFICATE-----\n"
2874 "MIIF0TCCBLmgAwIBAgIQaPGTP4aS7Ut/WDNaBzdQrDANBgkqhkiG9w0BAQUFADCB\n"
2875 "ujELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
2876 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n"
2877 "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMr\n"
2878 "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTAeFw0x\n"
2879 "NDAyMjAwMDAwMDBaFw0xNTAyMjAyMzU5NTlaMIHmMRMwEQYLKwYBBAGCNzwCAQMT\n"
2880 "AlBMMR0wGwYDVQQPExRQcml2YXRlIE9yZ2FuaXphdGlvbjETMBEGA1UEBRMKMDAw\n"
2881 "MDAyNTIzNzELMAkGA1UEBhMCUEwxDzANBgNVBBEUBjAwLTk1MDEUMBIGA1UECBML\n"
2882 "bWF6b3dpZWNraWUxETAPBgNVBAcUCFdhcnN6YXdhMRYwFAYDVQQJFA1TZW5hdG9y\n"
2883 "c2thIDE4MRMwEQYDVQQKFAptQmFuayBTLkEuMQwwCgYDVQQLFANESU4xGTAXBgNV\n"
2884 "BAMUEHd3dy5tYmFuay5jb20ucGwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n"
2885 "AoIBAQDph6x8V6xUW/+651+qHF+UmorH9uaz2ZrX2bIWiMKIJFmpDDHlxcapKkqE\n"
2886 "BV04is83aiCpqKtc2ZHy2g4Hpj1eSF5BP2+OAlo0YUQZPIeRRdiMjmeAxw/ncBDx\n"
2887 "9rQBuCJ4XTD6cqQox5SI0TASOZ+wyAEjbDRXzL73XqRAFZ1LOpb2ONkolS+RutMB\n"
2888 "vshvCsWPeNe7eGLuOh6DyC6r1vX9xhw3xnjM2mTSvmtimgzSLacNGKqRrsucUgcb\n"
2889 "0+O5C2jZAtAMLyZksL92cxmWbtVzUYzem4chjHu5cRxUlPNzUJWrrczueB7Ip4A8\n"
2890 "aQuFMfNXYc0x+WLWjy//urypMKjhAgMBAAGjggGjMIIBnzAbBgNVHREEFDASghB3\n"
2891 "d3cubWJhbmsuY29tLnBsMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgWgMB0GA1Ud\n"
2892 "JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBEBgNVHSAEPTA7MDkGC2CGSAGG+EUB\n"
2893 "BxcGMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9jcHMw\n"
2894 "HQYDVR0OBBYEFN37iGaS7mZnENxZ9FGqNLR+QgoMMB8GA1UdIwQYMBaAFPyKULqe\n"
2895 "uSVae1WFT5UAY4/pWGtDMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9FVlNlY3Vy\n"
2896 "ZS1jcmwudmVyaXNpZ24uY29tL0VWU2VjdXJlMjAwNi5jcmwwfAYIKwYBBQUHAQEE\n"
2897 "cDBuMC0GCCsGAQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC52ZXJpc2lnbi5j\n"
2898 "b20wPQYIKwYBBQUHMAKGMWh0dHA6Ly9FVlNlY3VyZS1haWEudmVyaXNpZ24uY29t\n"
2899 "L0VWU2VjdXJlMjAwNi5jZXIwDQYJKoZIhvcNAQEFBQADggEBAD0wO+rooUrIM4qp\n"
2900 "PHhp+hkXK6WMQ2qzGOmbMcZjw0govg5vkzkefPDryIXXbrF8mRagiJNMSfNaWWeh\n"
2901 "Cj41OV24EdUl0OLbFxNzcvub599zRs/apfaRLTfsmlmOgi0/YP305i+3tJ2ll946\n"
2902 "P+qV1wXnXqTqEdIl4Ys3+1HmDCdTB1hoDwAAzqRVUXZ5+iiwPAU7R/LTHfMjV1ke\n"
2903 "8jtNFfrorlZMCfVH/7eEnHJvVjOJt+YFe4aFMzE+DfuYIK7MH+olC2v79kBwbnEQ\n"
2904 "fvHMA9gFwOYLUBBdSfcocp8EKZ+mRlNPGR/3LBrPeaQQ0GZEkxzRK+v/aNTuiYfr\n"
2906 "-----END CERTIFICATE-----\n";
2908 auto manager = CKM::Manager::create();
2909 auto certee = CKM::Certificate::create(CKM::RawBuffer(ee.begin(), ee.end()), CKM::DataFormat::FORM_PEM);
2911 int status1 = manager->saveCertificate(CKM::Alias("CertEEE"), certee, CKM::Policy());
2914 CKM_API_SUCCESS == status1,
2915 "Could not put certificate in datbase. Error=" << CKM::ErrorToString(status1));
2917 CKM::AliasVector av;
2919 CKM_API_SUCCESS == (temp = manager->getCertificateAliasVector(av)),
2920 "Error=" << CKM::ErrorToString(temp));
2922 1 == (temp = av.size()),
2923 "Vector size: " << temp << ". Expected: 1");
2926 RUNNER_TEST(T1703_removeApplicationData)
2929 auto control = CKM::Control::create();
2931 CKM_API_SUCCESS == (tmp = control->removeApplicationData("t170-special-label")),
2932 "Error=" << CKM::ErrorToString(tmp));
2935 RUNNER_CHILD_TEST(T1704_data_test)
2938 AccessProvider ap("t170-special-label");
2939 ap.allowAPI("key-manager::api-storage", "rw");
2940 ap.applyAndSwithToUser(USER_TEST+1, GROUP_APP);
2942 CKM::AliasVector av;
2943 auto manager = CKM::Manager::create();
2946 CKM_API_SUCCESS == (temp = manager->getCertificateAliasVector(av)),
2947 "Error=" << CKM::ErrorToString(temp));
2949 0 == (temp = av.size()),
2950 "Vector size: " << temp << ". Expected: 0");
2953 RUNNER_TEST(T1705_deinit)
2957 auto control = CKM::Control::create();
2959 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_TEST+1)),
2960 "Error=" << CKM::ErrorToString(tmp));
2962 CKM_API_SUCCESS == (tmp = control->removeUserData(USER_TEST+1)),
2963 "Error=" << CKM::ErrorToString(tmp));
2966 RUNNER_TEST(T17101_init)
2970 auto control = CKM::Control::create();
2972 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_TEST+2)),
2973 "Error=" << CKM::ErrorToString(tmp));
2975 CKM_API_SUCCESS == (tmp = control->removeUserData(USER_TEST+2)),
2976 "Error=" << CKM::ErrorToString(tmp));
2978 CKM_API_SUCCESS == (tmp = control->unlockUserKey(USER_TEST+2, "t1706-special-password")),
2979 "Error=" << CKM::ErrorToString(tmp));
2982 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_TEST+3)),
2983 "Error=" << CKM::ErrorToString(tmp));
2985 CKM_API_SUCCESS == (tmp = control->removeUserData(USER_TEST+3)),
2986 "Error=" << CKM::ErrorToString(tmp));
2988 CKM_API_SUCCESS == (tmp = control->unlockUserKey(USER_TEST+3, "t1706-special-password")),
2989 "Error=" << CKM::ErrorToString(tmp));
2992 RUNNER_CHILD_TEST(T17102_prep_data_01)
2995 AccessProvider ap("t1706-special-label");
2996 ap.allowAPI("key-manager::api-storage", "rw");
2997 ap.applyAndSwithToUser(USER_TEST+2, GROUP_APP);
2999 CKM::AliasVector av;
3000 auto manager = CKM::Manager::create();
3002 std::string data = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4";
3004 CKM::RawBuffer buffer(data.begin(), data.end());
3005 CKM::Policy exportable(CKM::Password(), true);
3008 CKM_API_SUCCESS == (temp = manager->saveData("data1", buffer, exportable)),
3009 "Error=" << CKM::ErrorToString(temp));
3012 RUNNER_CHILD_TEST(T17103_prep_data_02)
3015 AccessProvider ap("t1706-special-label2");
3016 ap.allowAPI("key-manager::api-storage", "rw");
3017 ap.applyAndSwithToUser(USER_TEST+2, GROUP_APP);
3019 CKM::AliasVector av;
3020 auto manager = CKM::Manager::create();
3022 std::string data = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4";
3024 CKM::RawBuffer buffer(data.begin(), data.end());
3025 CKM::Policy exportable(CKM::Password(), true);
3028 CKM_API_SUCCESS == (temp = manager->saveData("data2", buffer, exportable)),
3029 "Error=" << CKM::ErrorToString(temp));
3032 RUNNER_CHILD_TEST(T17104_prep_data_03)
3035 AccessProvider ap("t1706-special-label");
3036 ap.allowAPI("key-manager::api-storage", "rw");
3037 ap.applyAndSwithToUser(USER_TEST+3, GROUP_APP);
3039 CKM::AliasVector av;
3040 auto manager = CKM::Manager::create();
3042 std::string data = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4";
3044 CKM::RawBuffer buffer(data.begin(), data.end());
3045 CKM::Policy exportable(CKM::Password(), true);
3048 CKM_API_SUCCESS == (temp = manager->saveData("data3", buffer, exportable)),
3049 "Error=" << CKM::ErrorToString(temp));
3052 RUNNER_CHILD_TEST(T17105_prep_data_04)
3055 AccessProvider ap("t1706-special-label2");
3056 ap.allowAPI("key-manager::api-storage", "rw");
3057 ap.applyAndSwithToUser(USER_TEST+3, GROUP_APP);
3059 CKM::AliasVector av;
3060 auto manager = CKM::Manager::create();
3062 std::string data = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4";
3064 CKM::RawBuffer buffer(data.begin(), data.end());
3065 CKM::Policy exportable(CKM::Password(), true);
3068 CKM_API_SUCCESS == (temp = manager->saveData("data4", buffer, exportable)),
3069 "Error=" << CKM::ErrorToString(temp));
3072 RUNNER_TEST(T17106_remove_application)
3076 auto control = CKM::Control::create();
3078 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_TEST+3)),
3079 "Error=" << CKM::ErrorToString(tmp));
3081 CKM_API_SUCCESS == (tmp = control->removeApplicationData("t1706-special-label")),
3082 "Error=" << CKM::ErrorToString(tmp));
3085 RUNNER_CHILD_TEST(T17107_check_data_01)
3088 AccessProvider ap("t1706-special-label");
3089 ap.allowAPI("key-manager::api-storage", "rw");
3090 ap.applyAndSwithToUser(USER_TEST+2, GROUP_APP);
3092 CKM::AliasVector av;
3093 auto manager = CKM::Manager::create();
3096 CKM_API_SUCCESS == (temp = manager->getDataAliasVector(av)),
3097 "Error=" << CKM::ErrorToString(temp));
3099 0 == (temp = av.size()),
3100 "Vector size: " << temp << ". Expected: 0");
3103 RUNNER_CHILD_TEST(T17108_check_data_02)
3106 AccessProvider ap("t1706-special-label2");
3107 ap.allowAPI("key-manager::api-storage", "rw");
3108 ap.applyAndSwithToUser(USER_TEST+2, GROUP_APP);
3110 CKM::AliasVector av;
3111 auto manager = CKM::Manager::create();
3114 CKM_API_SUCCESS == (temp = manager->getDataAliasVector(av)),
3115 "Error=" << CKM::ErrorToString(temp));
3117 1 == (temp = av.size()),
3118 "Vector size: " << temp << ". Expected: 1");
3121 RUNNER_TEST(T17109_unlock_user2)
3125 auto control = CKM::Control::create();
3127 CKM_API_SUCCESS == (tmp = control->unlockUserKey(USER_TEST+3, "t1706-special-password")),
3128 "Error=" << CKM::ErrorToString(tmp));
3131 RUNNER_CHILD_TEST(T17110_check_data_03)
3134 AccessProvider ap("t1706-special-label");
3135 ap.allowAPI("key-manager::api-storage", "rw");
3136 ap.applyAndSwithToUser(USER_TEST+3, GROUP_APP);
3138 CKM::AliasVector av;
3139 auto manager = CKM::Manager::create();
3142 CKM_API_SUCCESS == (temp = manager->getDataAliasVector(av)),
3143 "Error=" << CKM::ErrorToString(temp));
3145 0 == (temp = av.size()),
3146 "Vector size: " << temp << ". Expected: 0");
3149 RUNNER_CHILD_TEST(T17111_check_data_04)
3152 AccessProvider ap("t1706-special-label2");
3153 ap.allowAPI("key-manager::api-storage", "rw");
3154 ap.applyAndSwithToUser(USER_TEST+3, GROUP_APP);
3156 CKM::AliasVector av;
3157 auto manager = CKM::Manager::create();
3160 CKM_API_SUCCESS == (temp = manager->getDataAliasVector(av)),
3161 "Error=" << CKM::ErrorToString(temp));
3163 1 == (temp = av.size()),
3164 "Vector size: " << temp << ". Expected: 1");
3167 RUNNER_TEST(T17112_deinit)
3171 auto control = CKM::Control::create();
3173 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_TEST+2)),
3174 "Error=" << CKM::ErrorToString(tmp));
3176 CKM_API_SUCCESS == (tmp = control->removeUserData(USER_TEST+2)),
3177 "Error=" << CKM::ErrorToString(tmp));
3180 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_TEST+3)),
3181 "Error=" << CKM::ErrorToString(tmp));
3183 CKM_API_SUCCESS == (tmp = control->removeUserData(USER_TEST+3)),
3184 "Error=" << CKM::ErrorToString(tmp));
3187 RUNNER_TEST_GROUP_INIT(T180_PKCS12);
3191 CKM::Alias alias_PKCS_collision = "test-PKCS-collision";
3192 CKM::Alias alias_PKCS_exportable = "test-PKCS-export";
3193 CKM::Alias alias_PKCS_not_exportable = "test-PKCS-no-export";
3194 CKM::Alias alias_PKCS_priv_key_copy = "test-PKCS-private-key-copy";
3195 CKM::Alias alias_PKCS_priv_key_wrong = "test-PKCS-private-key-wrong";
3198 RUNNER_TEST(T1800_init) {
3200 auto control = CKM::Control::create();
3202 CKM_API_SUCCESS == (temp = control->unlockUserKey(USER_APP, "user-pass")),
3203 "Error=" << CKM::ErrorToString(temp));
3205 auto manager = CKM::Manager::create();
3206 manager->removeAlias(alias_PKCS_collision);
3207 manager->removeAlias(alias_PKCS_exportable);
3208 manager->removeAlias(alias_PKCS_not_exportable);
3209 manager->removeAlias(alias_PKCS_priv_key_copy);
3210 manager->removeAlias(alias_PKCS_priv_key_wrong);
3213 RUNNER_TEST(T1801_parse_PKCS12) {
3214 std::ifstream is("/usr/share/ckm-test/test1801.pkcs12");
3215 std::istreambuf_iterator<char> begin(is), end;
3216 std::vector<char> buff(begin, end);
3218 CKM::RawBuffer buffer(buff.size());
3219 memcpy(buffer.data(), buff.data(), buff.size());
3221 auto pkcs = CKM::PKCS12::create(buffer, "secret");
3224 "Error in PKCS12::create()");
3226 auto cert = pkcs->getCertificate();
3229 "Error in PKCS12::getCertificate()");
3231 auto key = pkcs->getKey();
3234 "Error in PKCS12::getKey()");
3236 auto caVector = pkcs->getCaCertificateShPtrVector();
3238 0 == caVector.size(),
3239 "Wrong size of vector");
3242 RUNNER_TEST(T1802_negative_wrong_password) {
3243 std::ifstream is("/usr/share/ckm-test/test1801.pkcs12");
3244 std::istreambuf_iterator<char> begin(is), end;
3245 std::vector<char> buff(begin, end);
3247 CKM::RawBuffer buffer(buff.size());
3248 memcpy(buffer.data(), buff.data(), buff.size());
3250 auto pkcs = CKM::PKCS12::create(buffer, "error");
3253 "Expected error in PKCS12::create()");
3256 RUNNER_TEST(T1803_negative_broken_buffer) {
3257 std::ifstream is("/usr/share/ckm-test/test1801.pkcs12");
3258 std::istreambuf_iterator<char> begin(is), end;
3259 std::vector<char> buff(begin, end);
3261 CKM::RawBuffer buffer(buff.size());
3262 memcpy(buffer.data(), buff.data(), buff.size());
3264 RUNNER_ASSERT_MSG(buffer.size() > 5, "PKCS file is too small.");
3267 auto pkcs = CKM::PKCS12::create(buffer, "secret");
3270 "Expected error in PKCS12::create()");
3273 RUNNER_TEST(T1804_add_PKCS_collision_with_existing_alias)
3275 auto manager = CKM::Manager::create();
3276 std::ifstream is("/usr/share/ckm-test/pkcs.p12");
3277 std::istreambuf_iterator<char> begin(is), end;
3278 std::vector<char> buff(begin, end);
3280 CKM::RawBuffer buffer(buff.size());
3281 memcpy(buffer.data(), buff.data(), buff.size());
3283 auto pkcs = CKM::PKCS12::create(buffer, CKM::Password());
3286 "Error in PKCS12::create()");
3289 std::string prv = "-----BEGIN RSA PRIVATE KEY-----\n"
3290 "MIICXQIBAAKBgQDCKb9BkTdOjCTXKPi/H5FSGuyrgzORBtR3nCTg7SRnL47zNGEj\n"
3291 "l2wkgsY9ZO3UJHm0gy5KMjWeCuUVkSD3G46J9obg1bYJivCQBJKxfieA8sWOtNq1\n"
3292 "M8emHGK8o3sjaRklrngmk2xSCs5vFJVlCluzAYUmrPDm64C3+n4yW4pBCQIDAQAB\n"
3293 "AoGAd1IWgiHO3kuLvFome7XXpaB8P27SutZ6rcLcewnhLDRy4g0XgTrmL43abBJh\n"
3294 "gdSkooVXZity/dvuKpHUs2dQ8W8zYiFFsHfu9qqLmLP6SuBPyUCvlUDH5BGfjjxI\n"
3295 "5qGWIowj/qGHKpbQ7uB+Oe2BHwbHao0zFZIkfKqY0mX9U00CQQDwF/4zQcGS1RX/\n"
3296 "229gowTsvSGVmm8cy1jGst6xkueEuOEZ/AVPO1fjavz+nTziUk4E5lZHAj18L6Hl\n"
3297 "iO29LRujAkEAzwbEWVhfTJewCZIFf3sY3ifXhGZhVKDHVzPBNyoft8Z+09DMHTJb\n"
3298 "EYg85MIbR73aUyIWsEci/CPk6LPRNv47YwJAHtQF2NEFqPPhakPjzjXAaSFz0YDN\n"
3299 "6ZWWpZTMEWL6hUkz5iE9EUpeY54WNB8+dRT6XZix1VZNTMfU8uMdG6BSHwJBAKYM\n"
3300 "gm47AGz5eVujwD8op6CACk+KomRzdI+P1lh9s+T+E3mnDiAY5IxiXp0Ix0K6lyN4\n"
3301 "wwPuerQLwi2XFKZsMYsCQQDOiSQFP9PfXh9kFzN6e89LxOdnqC/r9i5GDB3ea8eL\n"
3302 "SCRprpzqOXZvOP1HBAEjsJ6k4f8Dqj1fm+y8ZcgAZUPr\n"
3303 "-----END RSA PRIVATE KEY-----\n";
3305 std::string message = "message test";
3307 auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()), CKM::Password());
3308 RUNNER_ASSERT_MSG(NULL != keyPrv.get(),
3309 "Key is empty. Failed to import private key.");
3313 CKM_API_SUCCESS == (temp = manager->saveKey(alias_PKCS_collision, keyPrv, CKM::Policy())),
3314 "Error=" << CKM::ErrorToString(temp));
3317 CKM_API_ERROR_DB_ALIAS_EXISTS == (temp = manager->savePKCS12(alias_PKCS_collision, pkcs, CKM::Policy(), CKM::Policy())),
3318 "Error=" << CKM::ErrorToString(temp));
3321 RUNNER_TEST(T1805_add_bundle_with_chain_certificates)
3323 auto manager = CKM::Manager::create();
3324 std::ifstream is("/usr/share/ckm-test/pkcs.p12");
3325 std::istreambuf_iterator<char> begin(is), end;
3326 std::vector<char> buff(begin, end);
3328 CKM::RawBuffer buffer(buff.size());
3329 memcpy(buffer.data(), buff.data(), buff.size());
3331 auto pkcs = CKM::PKCS12::create(buffer, CKM::Password());
3334 "Error in PKCS12::create()");
3336 auto cert = pkcs->getCertificate();
3339 "Error in PKCS12::getCertificate()");
3341 auto key = pkcs->getKey();
3344 "Error in PKCS12::getKey()");
3346 auto caVector = pkcs->getCaCertificateShPtrVector();
3348 2 == caVector.size(),
3349 "Wrong size of vector");
3353 CKM::Policy exportable;
3354 CKM::Policy notExportable(CKM::Password(), false);
3357 CKM_API_SUCCESS == (tmp = manager->savePKCS12(alias_PKCS_exportable, pkcs, exportable, exportable)),
3358 "Error=" << CKM::ErrorToString(tmp));
3360 CKM_API_ERROR_DB_ALIAS_EXISTS == (tmp = manager->savePKCS12(alias_PKCS_exportable, pkcs, exportable, exportable)),
3361 "Error=" << CKM::ErrorToString(tmp));
3363 CKM_API_SUCCESS == (tmp = manager->savePKCS12(alias_PKCS_not_exportable, pkcs, notExportable, notExportable)),
3364 "Error=" << CKM::ErrorToString(tmp));
3366 CKM_API_ERROR_DB_ALIAS_EXISTS == (tmp = manager->savePKCS12(alias_PKCS_not_exportable, pkcs, notExportable, notExportable)),
3367 "Error=" << CKM::ErrorToString(tmp));
3369 // try to lookup key
3370 CKM::KeyShPtr key_lookup;
3372 CKM_API_SUCCESS == (tmp = manager->getKey(alias_PKCS_exportable, CKM::Password(), key_lookup)),
3373 "Error=" << CKM::ErrorToString(tmp));
3375 CKM_API_ERROR_NOT_EXPORTABLE == (tmp = manager->getKey(alias_PKCS_not_exportable, CKM::Password(), key_lookup)),
3376 "Error=" << CKM::ErrorToString(tmp));
3378 // try to lookup certificate
3379 CKM::CertificateShPtr cert_lookup;
3381 CKM_API_SUCCESS == (tmp = manager->getCertificate(alias_PKCS_exportable, CKM::Password(), cert_lookup)),
3382 "Error=" << CKM::ErrorToString(tmp));
3384 CKM_API_ERROR_NOT_EXPORTABLE == (tmp = manager->getCertificate(alias_PKCS_not_exportable, CKM::Password(), cert_lookup)),
3385 "Error=" << CKM::ErrorToString(tmp));
3388 RUNNER_TEST(T1806_get_PKCS)
3391 auto manager = CKM::Manager::create();
3393 CKM::PKCS12ShPtr pkcs;
3397 CKM_API_ERROR_DB_ALIAS_UNKNOWN == (temp = manager->getPKCS12("i-do-not-exist", pkcs)),
3398 "Error=" << CKM::ErrorToString(temp));
3400 // fail - not exportable
3402 CKM_API_ERROR_NOT_EXPORTABLE == (temp = manager->getPKCS12(alias_PKCS_not_exportable, pkcs)),
3403 "Error=" << CKM::ErrorToString(temp));
3405 // success - exportable
3407 CKM_API_SUCCESS == (temp = manager->getPKCS12(alias_PKCS_exportable, pkcs)),
3408 "Error=" << CKM::ErrorToString(temp));
3410 auto cert = pkcs->getCertificate();
3413 "Error in PKCS12::getCertificate()");
3415 auto key = pkcs->getKey();
3418 "Error in PKCS12::getKey()");
3420 auto caVector = pkcs->getCaCertificateShPtrVector();
3422 2 == caVector.size(),
3423 "Wrong size of vector");
3426 RUNNER_TEST(T1807_create_and_verify_signature)
3429 auto manager = CKM::Manager::create();
3431 std::string message = "message test";
3433 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
3434 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
3435 CKM::RawBuffer signature;
3438 CKM_API_SUCCESS == (temp = manager->createSignature(
3439 alias_PKCS_exportable,
3441 CKM::RawBuffer(message.begin(), message.end()),
3445 "Error=" << CKM::ErrorToString(temp));
3448 CKM_API_SUCCESS == (temp = manager->verifySignature(
3449 alias_PKCS_exportable,
3451 CKM::RawBuffer(message.begin(), message.end()),
3455 "Error=" << CKM::ErrorToString(temp));
3458 RUNNER_TEST(T1808_create_signature_on_raw_key_and_verify_on_PKCS)
3461 auto manager = CKM::Manager::create();
3463 std::string prv = "-----BEGIN RSA PRIVATE KEY-----\n"
3464 "MIICXQIBAAKBgQD1W9neUbXL1rnq9SvyzprjhWBKXyYKQirG3V2zyUnUaE24Sq2I\n"
3465 "v7ISrwMN/G6WcjrGmeZDEWwrL4zXh002N8BD1waJPRonxwtVkhFy3emGatSmx7eI\n"
3466 "ely5H+PBNImRvBh2u4GWga6OEXcUNdfaBUcxn+P6548/zpDhyNLzQKk5FwIDAQAB\n"
3467 "AoGAR+4WkBuqTUj1FlGsAbHaLKt0UDlWwJknS0eoacWwFEpDxqx19WolfV67aYVA\n"
3468 "snBolMKXg7/+0yZMhv8Ofr+XaHkPQplVVn9BwT0rmtEovJXwx+poRP9Bm3emglj/\n"
3469 "iYd8EkaXDlIXCtewtQW9JEIctWppntHj3TvA/h7FCXPN6SkCQQD/N7sn5S1gBkVh\n"
3470 "dyXQKoyKsZDb7hMIS1q6cKwYCMf2UrsD1/lnr7xXkvORdL213MfueO8g0WkuKfRY\n"
3471 "bDD6WGX1AkEA9hxiOlsgvermqLJkOlJffbSaM8n/6wtnM0HV+Vd9NfSBOmxFDXPO\n"
3472 "vrvdgiDPENhbqTJSQVDsfzHilTpK7lEvWwJBAJLxHoOg0tg3pBiyxgWtic+M3q+R\n"
3473 "ykl7QViY6KzJ2X98MIrM/Z7yMollZXE4+sVLwZ0O6fdGOr3GkBWc7TImVUUCQQC7\n"
3474 "pf6bQfof9Ce0fnf/I+ldHkPost7nJsWkBlGQkM2OQwP5OK4ZyK/dK76DxmI7FMwm\n"
3475 "oJCo7nuzq6R4ZX7WYJ47AkBavxBDo/e9/0Vk5yrloGKW3f8RQXBJLcCkVUGyyJ3D\n"
3476 "3gu/nafW4hzjSJniTjC1fOj0eb0OSg1JAvqHTYAnUsI7\n"
3477 "-----END RSA PRIVATE KEY-----";
3478 std::string message = "message test";
3480 auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()), CKM::Password());
3481 RUNNER_ASSERT_MSG(NULL != keyPrv.get(),
3482 "Key is empty. Failed to import private key.");
3485 CKM_API_SUCCESS == (temp = manager->saveKey(alias_PKCS_priv_key_copy, keyPrv, CKM::Policy())),
3486 "Error=" << CKM::ErrorToString(temp));
3488 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
3489 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
3490 CKM::RawBuffer signature;
3493 CKM_API_SUCCESS == (temp = manager->createSignature(
3494 alias_PKCS_priv_key_copy,
3496 CKM::RawBuffer(message.begin(), message.end()),
3500 "Error=" << CKM::ErrorToString(temp));
3503 CKM_API_SUCCESS == (temp = manager->verifySignature(
3504 alias_PKCS_exportable,
3506 CKM::RawBuffer(message.begin(), message.end()),
3510 "Error=" << CKM::ErrorToString(temp));
3513 RUNNER_TEST(T1809_create_signature_on_wrong_key_and_verify_on_PKCS)
3516 auto manager = CKM::Manager::create();
3518 std::string prv = "-----BEGIN RSA PRIVATE KEY-----\n"
3519 "MIICXQIBAAKBgQDCKb9BkTdOjCTXKPi/H5FSGuyrgzORBtR3nCTg7SRnL47zNGEj\n"
3520 "l2wkgsY9ZO3UJHm0gy5KMjWeCuUVkSD3G46J9obg1bYJivCQBJKxfieA8sWOtNq1\n"
3521 "M8emHGK8o3sjaRklrngmk2xSCs5vFJVlCluzAYUmrPDm64C3+n4yW4pBCQIDAQAB\n"
3522 "AoGAd1IWgiHO3kuLvFome7XXpaB8P27SutZ6rcLcewnhLDRy4g0XgTrmL43abBJh\n"
3523 "gdSkooVXZity/dvuKpHUs2dQ8W8zYiFFsHfu9qqLmLP6SuBPyUCvlUDH5BGfjjxI\n"
3524 "5qGWIowj/qGHKpbQ7uB+Oe2BHwbHao0zFZIkfKqY0mX9U00CQQDwF/4zQcGS1RX/\n"
3525 "229gowTsvSGVmm8cy1jGst6xkueEuOEZ/AVPO1fjavz+nTziUk4E5lZHAj18L6Hl\n"
3526 "iO29LRujAkEAzwbEWVhfTJewCZIFf3sY3ifXhGZhVKDHVzPBNyoft8Z+09DMHTJb\n"
3527 "EYg85MIbR73aUyIWsEci/CPk6LPRNv47YwJAHtQF2NEFqPPhakPjzjXAaSFz0YDN\n"
3528 "6ZWWpZTMEWL6hUkz5iE9EUpeY54WNB8+dRT6XZix1VZNTMfU8uMdG6BSHwJBAKYM\n"
3529 "gm47AGz5eVujwD8op6CACk+KomRzdI+P1lh9s+T+E3mnDiAY5IxiXp0Ix0K6lyN4\n"
3530 "wwPuerQLwi2XFKZsMYsCQQDOiSQFP9PfXh9kFzN6e89LxOdnqC/r9i5GDB3ea8eL\n"
3531 "SCRprpzqOXZvOP1HBAEjsJ6k4f8Dqj1fm+y8ZcgAZUPr\n"
3532 "-----END RSA PRIVATE KEY-----\n";
3534 std::string message = "message test";
3536 auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()), CKM::Password());
3537 RUNNER_ASSERT_MSG(NULL != keyPrv.get(),
3538 "Key is empty. Failed to import private key.");
3541 CKM_API_SUCCESS == (temp = manager->saveKey(alias_PKCS_priv_key_wrong, keyPrv, CKM::Policy())),
3542 "Error=" << CKM::ErrorToString(temp));
3544 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
3545 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
3546 CKM::RawBuffer signature;
3549 CKM_API_SUCCESS == (temp = manager->createSignature(
3550 alias_PKCS_priv_key_wrong,
3552 CKM::RawBuffer(message.begin(), message.end()),
3556 "Error=" << CKM::ErrorToString(temp));
3559 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
3560 alias_PKCS_exportable,
3562 CKM::RawBuffer(message.begin(), message.end()),
3566 "Error=" << CKM::ErrorToString(temp));
3569 RUNNER_TEST(T1810_verify_get_certificate_chain)
3571 // this certificate has been signed using PKCS chain
3572 std::string im = "-----BEGIN CERTIFICATE-----\n"
3573 "MIIBrTCCARYCAQEwDQYJKoZIhvcNAQELBQAwHDEaMBgGA1UEAwwRc2VydmVyQHRl\n"
3574 "c3RtZS5jb20wHhcNMTQxMjAyMTMxNTQzWhcNMTUxMjAyMTMxNTQzWjAiMSAwHgYD\n"
3575 "VQQDDBdlbmQtb24tY2hhaW5AdGVzdG1lLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOB\n"
3576 "jQAwgYkCgYEAsJS/jky4Cnxnlj6m2Eam3E3ARfR1PTaQV3Om09z3Ax15ca3kfHSb\n"
3577 "n6UlDk9vjP3iE7Nbju5Nzw9Tu/Pe32g/54quUBgbTFWbztR/Q9Dxbt3evWZ98ADS\n"
3578 "qAtH9OU23xS/5jGpmJSP0l22JItx8E8nEbEPj7GTWfVuYb3HXMHqzY8CAwEAATAN\n"
3579 "BgkqhkiG9w0BAQsFAAOBgQCPJqjMH24kAngd0EunIPsVNSpWJMlMocFM5xHJsvgi\n"
3580 "5DZ7swo0O/Jfqvo/vKDVqR/wiPeAxrwirECGC1O2hC7HcOt7kW4taHSVGGd4dHMn\n"
3581 "oK70cUKQeVy3cYY6QUaonjuNVvYQHE3OSLDe56n6c7Mnek28qNtezeSWLUy8L8fA\n"
3583 "-----END CERTIFICATE-----\n";
3585 auto cert = CKM::Certificate::create(CKM::RawBuffer(im.begin(), im.end()), CKM::DataFormat::FORM_PEM);
3586 CKM::CertificateShPtrVector certChain;
3587 CKM::AliasVector aliasVector;
3590 auto manager = CKM::Manager::create();
3592 RUNNER_ASSERT_MSG(NULL != cert.get(), "Certificate should not be empty");
3594 tmp = manager->getCertificateChain(cert,
3599 RUNNER_ASSERT_MSG_BT(CKM_API_ERROR_VERIFICATION_FAILED == tmp,
3600 "Error=" << CKM::ErrorToString(tmp));
3603 0 == certChain.size(),
3604 "Wrong size of certificate chain.");
3606 aliasVector.push_back(alias_PKCS_exportable);
3608 tmp = manager->getCertificateChain(cert, EMPTY_ALIAS_VECTOR, aliasVector, false, certChain);
3609 RUNNER_ASSERT_MSG_BT(CKM_API_SUCCESS == tmp, "Error=" << CKM::ErrorToString(tmp));
3611 // 1(cert) + 1(pkcs12 cert) + 2(pkcs12 chain cert) = 4
3612 RUNNER_ASSERT_MSG_BT(
3613 4 == certChain.size(),
3614 "Wrong size of certificate chain: " << certChain.size());
3617 RUNNER_TEST(T1811_remove_bundle_with_chain_certificates)
3619 auto manager = CKM::Manager::create();
3623 // remove the whole PKCS12 bundles
3625 CKM_API_SUCCESS == (tmp = manager->removeAlias(alias_PKCS_exportable)),
3626 "Error=" << CKM::ErrorToString(tmp));
3628 CKM_API_SUCCESS == (tmp = manager->removeAlias(alias_PKCS_not_exportable)),
3629 "Error=" << CKM::ErrorToString(tmp));
3631 // expect lookup fails due to unknown alias
3632 // try to lookup key
3633 CKM::KeyShPtr key_lookup;
3635 CKM_API_ERROR_DB_ALIAS_UNKNOWN == (tmp = manager->getKey(alias_PKCS_exportable, CKM::Password(), key_lookup)),
3636 "Error=" << CKM::ErrorToString(tmp));
3638 CKM_API_ERROR_DB_ALIAS_UNKNOWN == (tmp = manager->getKey(alias_PKCS_not_exportable, CKM::Password(), key_lookup)),
3639 "Error=" << CKM::ErrorToString(tmp));
3641 // try to lookup certificate
3642 CKM::CertificateShPtr cert_lookup;
3644 CKM_API_ERROR_DB_ALIAS_UNKNOWN == (tmp = manager->getCertificate(alias_PKCS_exportable, CKM::Password(), cert_lookup)),
3645 "Error=" << CKM::ErrorToString(tmp));
3647 CKM_API_ERROR_DB_ALIAS_UNKNOWN == (tmp = manager->getCertificate(alias_PKCS_not_exportable, CKM::Password(), cert_lookup)),
3648 "Error=" << CKM::ErrorToString(tmp));
3651 RUNNER_TEST(T1812_get_pkcs12_password_tests)
3653 CKM::Alias alias = "t1812alias1";
3655 auto manager = CKM::Manager::create();
3656 std::ifstream is("/usr/share/ckm-test/pkcs.p12");
3657 std::istreambuf_iterator<char> begin(is), end;
3658 std::vector<char> buff(begin, end);
3660 CKM::PKCS12ShPtr pkcs12;
3661 CKM::Password pass1 = "easypass1";
3662 CKM::Password pass2 = "easypass2";
3664 CKM::RawBuffer buffer(buff.size());
3665 memcpy(buffer.data(), buff.data(), buff.size());
3667 auto pkcs = CKM::PKCS12::create(buffer, CKM::Password());
3668 RUNNER_ASSERT_MSG_BT(
3670 "Error in PKCS12::create()");
3673 RUNNER_ASSERT_MSG_BT(
3674 CKM_API_SUCCESS == (temp = manager->savePKCS12(alias, pkcs, CKM::Policy(pass1), CKM::Policy(pass2))),
3675 "Error=" << CKM::ErrorToString(temp));
3677 RUNNER_ASSERT_MSG_BT(
3678 CKM_API_ERROR_AUTHENTICATION_FAILED == (temp = manager->getPKCS12(alias, pkcs)),
3679 "Error=" << CKM::ErrorToString(temp));
3681 RUNNER_ASSERT_MSG_BT(
3682 CKM_API_ERROR_AUTHENTICATION_FAILED == (temp = manager->getPKCS12(alias, CKM::Password(), CKM::Password(), pkcs)),
3683 "Error=" << CKM::ErrorToString(temp));
3685 RUNNER_ASSERT_MSG_BT(
3686 CKM_API_ERROR_AUTHENTICATION_FAILED == (temp = manager->getPKCS12(alias, pass1, CKM::Password(), pkcs)),
3687 "Error=" << CKM::ErrorToString(temp));
3689 RUNNER_ASSERT_MSG_BT(
3690 CKM_API_ERROR_AUTHENTICATION_FAILED == (temp = manager->getPKCS12(alias, CKM::Password(), pass2, pkcs)),
3691 "Error=" << CKM::ErrorToString(temp));
3693 RUNNER_ASSERT_MSG_BT(
3694 CKM_API_SUCCESS == (temp = manager->getPKCS12(alias, pass1, pass2, pkcs)),
3695 "Error=" << CKM::ErrorToString(temp));
3697 CKM::CertificateShPtr cert;
3698 RUNNER_ASSERT_MSG_BT(
3699 CKM_API_SUCCESS == (temp = manager->getCertificate(alias, pass2, cert)),
3700 "Error=" << CKM::ErrorToString(temp));
3702 CKM::CertificateShPtrVector certChain;
3703 CKM::AliasVector certVect;
3704 certVect.push_back(alias);
3706 RUNNER_ASSERT_MSG_BT(
3707 CKM_API_ERROR_AUTHENTICATION_FAILED == (temp = manager->getCertificateChain(cert, certVect, certVect, true, certChain)),
3708 "Error=" << CKM::ErrorToString(temp));
3711 RUNNER_TEST(T1813_deinit)
3714 auto control = CKM::Control::create();
3717 CKM_API_SUCCESS == (temp = control->lockUserKey(USER_APP)),
3718 "Error=" << CKM::ErrorToString(temp));
3721 RUNNER_TEST_GROUP_INIT(T190_CKM_EMPTY_STORAGE_TESTS);
3723 RUNNER_TEST(T1901_init_unlock_key)
3726 auto control = CKM::Control::create();
3728 CKM_API_SUCCESS == (tmp = control->lockUserKey(0)),
3729 "Error=" << CKM::ErrorToString(tmp));
3731 CKM_API_SUCCESS == (tmp = control->removeUserData(0)),
3732 "Error=" << CKM::ErrorToString(tmp));
3734 CKM_API_SUCCESS == (tmp = control->unlockUserKey(0, "t190-special-password")),
3735 "Error=" << CKM::ErrorToString(tmp));
3738 RUNNER_TEST(T1902_get_data)
3740 auto manager = CKM::Manager::create();
3743 int status1 = manager->getKey(CKM::Alias("CertEEE"), CKM::Password(), ptr);
3746 CKM_API_ERROR_DB_ALIAS_UNKNOWN == status1,
3747 "Could not put certificate in datbase. Error=" << CKM::ErrorToString(status1));
3750 RUNNER_TEST(T1903_lock_database)
3753 auto control = CKM::Control::create();
3755 CKM_API_SUCCESS == (tmp = control->lockUserKey(0)),
3756 "Error=" << CKM::ErrorToString(tmp));
3759 RUNNER_TEST(T1904_get_data_from_locked_database)
3761 auto manager = CKM::Manager::create();
3764 int status1 = manager->getKey(CKM::Alias("CertEEE"), CKM::Password(), ptr);
3767 CKM_API_ERROR_DB_LOCKED == status1,
3768 "Could not get key from locked database. Error=" << CKM::ErrorToString(status1));
3771 RUNNER_TEST(T1905_deinit)
3774 auto control = CKM::Control::create();
3776 CKM_API_SUCCESS == (tmp = control->removeUserData(0)),
3777 "Error=" << CKM::ErrorToString(tmp));
3780 int main(int argc, char *argv[])
3782 DPL::Log::LogSystemSingleton::Instance().SetTag("CKM_TESTS");
3783 return DPL::Test::TestRunnerSingleton::Instance().ExecTestRunner(argc, argv);