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>
23 static const int USER_APP = 5000;
24 static const int GROUP_APP = 5000;
25 static const int USER_TEST = 5001;
28 * How to numerate tests:
30 * T - test case (always T)
31 * AB - number of test group (always two digits)
32 * C - test number in group (all tests with same TABC must be run in the same time).
37 RUNNER_TEST_GROUP_INIT(T0000_CKM_CONTROL);
39 RUNNER_TEST(T0010_Control)
42 auto control = CKM::Control::create();
44 control->removeUserData(0);
45 control->removeUserData(20);
46 control->removeUserData(USER_APP);
49 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "simple-password")),
50 "Error=" << CKM::ErrorToString(temp));
53 RUNNER_TEST(T0020_Control)
56 auto control = CKM::Control::create();
58 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "simple-password")),
59 "Error=" << CKM::ErrorToString(temp));
61 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
62 "Error=" << CKM::ErrorToString(temp));
65 RUNNER_TEST(T0030_Control)
68 auto control = CKM::Control::create();
70 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "simple-password")),
71 "Error=" << CKM::ErrorToString(temp));
74 RUNNER_TEST(T0040_Control)
77 auto control = CKM::Control::create();
79 CKM_API_ERROR_BAD_REQUEST == (temp = control->resetUserPassword(14, "simple-password")),
80 "Error=" << CKM::ErrorToString(temp));
83 RUNNER_TEST(T0050_Control)
86 auto control = CKM::Control::create();
88 CKM_API_SUCCESS == (temp = control->unlockUserKey(20, "test-pass")),
89 "Error=" << CKM::ErrorToString(temp));
91 CKM_API_SUCCESS == (temp = control->changeUserPassword(20, "test-pass", "new-pass")),
92 "Error=" << CKM::ErrorToString(temp));
94 CKM_API_SUCCESS == (temp = control->lockUserKey(20)),
95 "Error=" << CKM::ErrorToString(temp));
97 CKM_API_SUCCESS == (temp = control->removeUserData(20)),
98 "Error=" << CKM::ErrorToString(temp));
101 RUNNER_TEST_GROUP_INIT(T101_CKM_QUICK_SET_GET_TESTS);
103 RUNNER_TEST(T1010_init)
106 auto control = CKM::Control::create();
108 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "test-pass")),
109 "Error=" << CKM::ErrorToString(temp));
111 CKM_API_SUCCESS == (temp = control->unlockUserKey(USER_APP, "user-pass")),
112 "Error=" << CKM::ErrorToString(temp));
115 RUNNER_TEST(T1011_key)
118 auto manager = CKM::Manager::create();
120 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
121 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
122 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
123 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
124 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
125 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
126 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
128 "-----END PUBLIC KEY-----";
130 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
131 auto key = CKM::Key::create(buffer, CKM::Password());
133 CKM::Alias alias = "mykey";
136 CKM_API_SUCCESS == (temp = manager->saveKey(alias, key, CKM::Policy())),
137 "Error=" << CKM::ErrorToString(temp));
139 CKM_API_SUCCESS == (temp = manager->getKey(alias, CKM::Password(), key2)),
140 "Error=" << CKM::ErrorToString(temp));
142 key->getDER() == key2->getDER(),
143 "Key value has been changed by service");
146 RUNNER_TEST(T1012_certificate)
149 auto manager = CKM::Manager::create();
151 std::string certPem =
152 "-----BEGIN CERTIFICATE-----\n"
153 "MIIEgDCCA2igAwIBAgIIcjtBYJGQtOAwDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UE\n"
154 "BhMCVVMxEzARBgNVBAoTCkdvb2dsZSBJbmMxJTAjBgNVBAMTHEdvb2dsZSBJbnRl\n"
155 "cm5ldCBBdXRob3JpdHkgRzIwHhcNMTQwNTIyMTEyOTQyWhcNMTQwODIwMDAwMDAw\n"
156 "WjBtMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwN\n"
157 "TW91bnRhaW4gVmlldzETMBEGA1UECgwKR29vZ2xlIEluYzEcMBoGA1UEAwwTYWNj\n"
158 "b3VudHMuZ29vZ2xlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB\n"
159 "ALtlLWVWPN3q3bSEQl1Z97gPdgl5vbgJOZSAr0ZY0tJCuFLBbUKetJWryyE+5KpG\n"
160 "gMMpLS4v8/bvXaZc6mAs+RfAqGM24C3vQg5hPnj4dflnhL0WiOCZBurm1tV4oexk\n"
161 "HLXs3jr/jpnb738AQpj8zZ9a4VEBuHJRZALnWZ/XhqU+dvYomAoRQNuL5OhkT7uu\n"
162 "d0NKJL9JjYLyQglGgE2sVsWv2kj7EO/P9Q6NEKt9BGmhMsFvtfeKUaymynaxpR1g\n"
163 "wEPlqYvB38goh1dIOgVLT0OVyLImeg5Mdwar/8c1U0OYhLOc6PJapOZAfUkE+3+w\n"
164 "xYt8AChLN1b5szOwInrCVpECAwEAAaOCAUYwggFCMB0GA1UdJQQWMBQGCCsGAQUF\n"
165 "BwMBBggrBgEFBQcDAjAeBgNVHREEFzAVghNhY2NvdW50cy5nb29nbGUuY29tMGgG\n"
166 "CCsGAQUFBwEBBFwwWjArBggrBgEFBQcwAoYfaHR0cDovL3BraS5nb29nbGUuY29t\n"
167 "L0dJQUcyLmNydDArBggrBgEFBQcwAYYfaHR0cDovL2NsaWVudHMxLmdvb2dsZS5j\n"
168 "b20vb2NzcDAdBgNVHQ4EFgQU0/UtToEtNIfwDwHuYGuVKcj0xK8wDAYDVR0TAQH/\n"
169 "BAIwADAfBgNVHSMEGDAWgBRK3QYWG7z2aLV29YG2u2IaulqBLzAXBgNVHSAEEDAO\n"
170 "MAwGCisGAQQB1nkCBQEwMAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL3BraS5nb29n\n"
171 "bGUuY29tL0dJQUcyLmNybDANBgkqhkiG9w0BAQUFAAOCAQEAcGNI/X9f0g+7ij0o\n"
172 "ehLpk6vxSMQGrmOZ4+PG/MC9SLClCkt7zJkfU7erZnyVXyxCpwlljq+Wk9YTPUOq\n"
173 "xD/V2ikQVSAANoxGJFO9UoL5jzWusPhKKv8CcM7fuiERz8K+CfBcqfxbgI5rH0g5\n"
174 "dYclmLC81cJ/08i+9Nltvxv69Y3hGfEICT6K+EdSxwnQzOhpMZmvxZsIj+d6CVNa\n"
175 "9ICYgUthsNQVWzrIs5wknpjjZ9liDMwJX0vu8A0rce4X/Lna5hh2bW9igz2iP5WM\n"
176 "9fuwdbTw4y3jfPQgszU4YZxWxhMzccxe058Qx1tLndAknBQEBesQjXytVQpuM1SV\n"
178 "-----END CERTIFICATE-----\n";
180 CKM::RawBuffer buffer(certPem.begin(), certPem.end());
181 auto cert = CKM::Certificate::create(buffer, CKM::DataFormat::FORM_PEM);
182 CKM::CertificateShPtr cert2;
183 CKM::Alias alias = "myCert";
186 CKM_API_SUCCESS == (temp = manager->saveCertificate(alias, cert, CKM::Policy())),
187 "Error=" << CKM::ErrorToString(temp));
189 CKM_API_SUCCESS == (temp = manager->getCertificate(alias, CKM::Password(), cert2)),
190 "Error=" << CKM::ErrorToString(temp));
192 cert->getDER() == cert2->getDER(),
193 "Data has been modified in key manager");
196 RUNNER_CHILD_TEST(T1013_user_app_save_key)
198 AccessProvider ap("mylabel");
199 ap.allowAPI("key-manager::api-storage", "rw");
200 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
202 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
203 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
204 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
205 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
206 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
207 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
208 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
210 "-----END PUBLIC KEY-----";
213 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
214 auto key = CKM::Key::create(buffer, CKM::Password());
216 CKM::Alias alias = "mykey";
217 auto manager = CKM::Manager::create();
220 CKM_API_SUCCESS == (temp = manager->saveKey(alias, key, CKM::Policy("x"))),
221 "Error=" << CKM::ErrorToString(temp));
223 CKM_API_SUCCESS == (temp = manager->getKey(alias, CKM::Password("x"), key2)),
224 "Error=" << CKM::ErrorToString(temp));
226 key->getDER() == key2->getDER(), "Key value has been changed by service");
230 RUNNER_TEST(T1014_deinit)
233 auto control = CKM::Control::create();
236 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
237 "Error=" << CKM::ErrorToString(temp));
239 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
240 "Error=" << CKM::ErrorToString(temp));
242 CKM_API_SUCCESS == (temp = control->lockUserKey(USER_APP)),
243 "Error=" << CKM::ErrorToString(temp));
245 CKM_API_SUCCESS == (temp = control->removeUserData(USER_APP)),
246 "Error=" << CKM::ErrorToString(temp));
249 RUNNER_TEST_GROUP_INIT(T102_CKM_QUICK_GET_ALIAS_TESTS);
251 RUNNER_TEST(T1020_init)
254 auto control = CKM::Control::create();
256 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "test-pass")),
257 "Error=" << CKM::ErrorToString(temp));
259 CKM_API_SUCCESS == (temp = control->unlockUserKey(USER_APP, "user-pass")),
260 "Error=" << CKM::ErrorToString(temp));
263 RUNNER_TEST(T1021_save_keys_get_alias)
266 auto manager = CKM::Manager::create();
268 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
269 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
270 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
271 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
272 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
273 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
274 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
276 "-----END PUBLIC KEY-----";
278 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
279 auto key = CKM::Key::create(buffer, CKM::Password());
280 CKM::AliasVector labelAliasVector;
283 CKM_API_SUCCESS == (temp = manager->saveKey("rootkey1", key, CKM::Policy())),
284 "Error=" << CKM::ErrorToString(temp));
286 CKM_API_SUCCESS == (temp = manager->saveKey("rootkey2", key, CKM::Policy())),
287 "Error=" << CKM::ErrorToString(temp));
289 CKM_API_SUCCESS == (temp = manager->saveKey("rootkey3", key, CKM::Policy(CKM::Password(), false))),
290 "Error=" << CKM::ErrorToString(temp));
292 CKM_API_SUCCESS == (temp = manager->getKeyAliasVector(labelAliasVector)),
293 "Error=" << CKM::ErrorToString(temp));
295 labelAliasVector.size() == 3,
296 "Wrong size of list: " << labelAliasVector.size() << " Expected: 3");
299 RUNNER_CHILD_TEST(T1022_app_user_save_keys_get_alias)
301 AccessProvider ap("mylabel");
302 ap.allowAPI("key-manager::api-storage", "rw");
303 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
306 auto manager = CKM::Manager::create();
308 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
309 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
310 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
311 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
312 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
313 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
314 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
316 "-----END PUBLIC KEY-----";
318 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
319 auto key = CKM::Key::create(buffer, CKM::Password());
320 CKM::AliasVector labelAliasVector;
323 CKM_API_SUCCESS == (temp = manager->saveKey("appkey1", key, CKM::Policy())),
324 "Error=" << CKM::ErrorToString(temp));
326 CKM_API_SUCCESS == (temp = manager->saveKey("appkey2", key, CKM::Policy())),
327 "Error=" << CKM::ErrorToString(temp));
329 CKM_API_SUCCESS == (temp = manager->saveKey("appkey3", key, CKM::Policy(CKM::Password(), false))),
330 "Error=" << CKM::ErrorToString(temp));
332 CKM_API_SUCCESS == (temp = manager->getKeyAliasVector(labelAliasVector)),
333 "Error=" << CKM::ErrorToString(temp));
335 labelAliasVector.size() == 3,
336 "Wrong size of list: " << labelAliasVector.size() << " Expected: 3");
339 RUNNER_CHILD_TEST(T1023_app_user_save_keys_exportable_flag)
341 AccessProvider ap("mylabel");
342 ap.allowAPI("key-manager::api-storage", "rw");
343 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
346 auto manager = CKM::Manager::create();
348 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
349 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
350 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
351 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
352 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
353 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
354 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
356 "-----END PUBLIC KEY-----";
358 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
359 auto key = CKM::Key::create(buffer, CKM::Password());
360 CKM::AliasVector aliasVector;
361 CKM::Policy notExportable(CKM::Password(), false);
364 CKM_API_SUCCESS == (temp = manager->saveKey("appkey4", key, notExportable)),
365 "Error=" << CKM::ErrorToString(temp));
367 CKM_API_ERROR_NOT_EXPORTABLE == (temp = manager->getKey("appkey4", CKM::Password(), key)),
368 "Error=" << CKM::ErrorToString(temp));
370 CKM_API_ERROR_INPUT_PARAM == (temp = manager->saveData("data3", buffer, notExportable)),
371 "Error=" << CKM::ErrorToString(temp));
374 RUNNER_TEST(T1029_deinit)
377 auto control = CKM::Control::create();
380 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
381 "Error=" << CKM::ErrorToString(temp));
383 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
384 "Error=" << CKM::ErrorToString(temp));
386 CKM_API_SUCCESS == (temp = control->lockUserKey(USER_APP)),
387 "Error=" << CKM::ErrorToString(temp));
389 CKM_API_SUCCESS == (temp = control->removeUserData(USER_APP)),
390 "Error=" << CKM::ErrorToString(temp));
393 RUNNER_TEST_GROUP_INIT(T103_CKM_QUICK_REMOVE_BIN_DATA_TEST);
395 RUNNER_TEST(T1030_init)
398 auto control = CKM::Control::create();
400 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "test-pass")),
401 "Error=" << CKM::ErrorToString(temp));
403 CKM_API_SUCCESS == (temp = control->unlockUserKey(USER_APP, "user-pass")),
404 "Error=" << CKM::ErrorToString(temp));
407 RUNNER_TEST(T1031_save_get_bin_data)
410 auto manager = CKM::Manager::create();
412 std::string binData1 = "My bin data1";
413 std::string binData2 = "My bin data2";
414 std::string binData3 = "My bin data3";
416 CKM::RawBuffer buffer1(binData1.begin(), binData1.end());
417 CKM::RawBuffer buffer2(binData2.begin(), binData2.end());
418 CKM::RawBuffer buffer3(binData3.begin(), binData3.end());
420 CKM::AliasVector labelAliasVector;
423 CKM_API_SUCCESS == (temp = manager->saveData("data1", buffer1, CKM::Policy())),
424 "Error=" << CKM::ErrorToString(temp));
426 CKM_API_SUCCESS == (temp = manager->saveData("data2", buffer2, CKM::Policy())),
427 "Error=" << CKM::ErrorToString(temp));
429 CKM_API_SUCCESS == (temp = manager->saveData("data3", buffer3, CKM::Policy(CKM::Password(), true))),
430 "Error=" << CKM::ErrorToString(temp));
432 CKM_API_ERROR_INPUT_PARAM == (temp = manager->saveData("data4", buffer3, CKM::Policy(CKM::Password(), false))),
433 "Error=" << CKM::ErrorToString(temp));
435 CKM_API_SUCCESS == (temp = manager->getDataAliasVector(labelAliasVector)),
436 "Error=" << CKM::ErrorToString(temp));
438 labelAliasVector.size() == 3,
439 "Wrong size of list: " << labelAliasVector.size() << " Expected: 3");
441 CKM::RawBuffer buffer;
443 CKM_API_SUCCESS == (temp = manager->getData("data2", CKM::Password(), buffer)),
444 "Error=" << CKM::ErrorToString(temp));
450 RUNNER_CHILD_TEST(T1032_app_user_save_bin_data)
452 AccessProvider ap("mylabel");
453 ap.allowAPI("key-manager::api-storage", "rw");
454 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
457 auto manager = CKM::Manager::create();
459 std::string binData = "My bin data";
461 CKM::RawBuffer buffer(binData.begin(), binData.end());
463 CKM::AliasVector labelAliasVector;
466 CKM_API_SUCCESS == (temp = manager->saveData("appdata1", buffer, CKM::Policy())),
467 "Error=" << CKM::ErrorToString(temp));
469 CKM_API_SUCCESS == (temp = manager->saveData("appdata2", buffer, CKM::Policy())),
470 "Error=" << CKM::ErrorToString(temp));
472 CKM_API_SUCCESS == (temp = manager->saveData("appdata3", buffer, CKM::Policy(CKM::Password(), true))),
473 "Error=" << CKM::ErrorToString(temp));
475 CKM_API_SUCCESS == (temp = manager->getDataAliasVector(labelAliasVector)),
476 "Error=" << CKM::ErrorToString(temp));
478 labelAliasVector.size() == 3,
479 "Wrong size of list: " << labelAliasVector.size() << " Expected: 3");
482 RUNNER_TEST(T1033_remove_bin_data)
485 auto manager = CKM::Manager::create();
487 std::string binData2 = "My bin data2";
488 CKM::RawBuffer buffer2(binData2.begin(), binData2.end());
490 CKM::AliasVector labelAliasVector;
492 std::string invalid_address = aliasWithLabel("i-do-not-exist", "data1");
494 CKM_API_ERROR_DB_ALIAS_UNKNOWN == (temp = manager->removeData(invalid_address.c_str())),
495 "Error=" << CKM::ErrorToString(temp));
497 CKM_API_SUCCESS == (temp = manager->removeData("data1")),
498 "Error=" << CKM::ErrorToString(temp));
500 CKM_API_SUCCESS == (temp = manager->removeData("data3")),
501 "Error=" << CKM::ErrorToString(temp));
503 CKM_API_SUCCESS == (temp = manager->getDataAliasVector(labelAliasVector)),
504 "Error=" << CKM::ErrorToString(temp));
506 labelAliasVector.size() == 1,
507 "Wrong size of list: " << labelAliasVector.size() << " Expected: 1");
509 CKM::RawBuffer buffer;
511 CKM_API_SUCCESS == (temp = manager->getData("data2", CKM::Password(), buffer)),
512 "Error=" << CKM::ErrorToString(temp));
517 CKM_API_ERROR_DB_ALIAS_UNKNOWN == (temp = manager->getData("data3", CKM::Password(), buffer)),
518 "Error=" << CKM::ErrorToString(temp));
521 RUNNER_TEST(T1039_deinit)
524 auto control = CKM::Control::create();
527 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
528 "Error=" << CKM::ErrorToString(temp));
530 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
531 "Error=" << CKM::ErrorToString(temp));
533 CKM_API_SUCCESS == (temp = control->lockUserKey(USER_APP)),
534 "Error=" << CKM::ErrorToString(temp));
536 CKM_API_SUCCESS == (temp = control->removeUserData(USER_APP)),
537 "Error=" << CKM::ErrorToString(temp));
540 RUNNER_TEST_GROUP_INIT(T104_CKM_QUICK_CREATE_PAIR);
542 RUNNER_TEST(T1040_init)
545 auto control = CKM::Control::create();
548 CKM_API_SUCCESS == (temp = control->unlockUserKey(USER_APP, "user-pass")),
549 "Error=" << CKM::ErrorToString(temp));
552 RUNNER_CHILD_TEST(T1041_create_rsa_key)
555 auto manager = CKM::Manager::create();
558 AccessProvider ap("mylabel-rsa");
559 ap.allowAPI("key-manager::api-storage", "rw");
560 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
563 CKM_API_SUCCESS == (temp = manager->createKeyPairRSA(2048, CKM::Alias("PRV_KEY1_RSA"), CKM::Alias("PUB_KEY1_RSA"), CKM::Policy(), CKM::Policy())),
564 "Error=" << CKM::ErrorToString(temp));
566 CKM_API_SUCCESS == (temp = manager->getKeyAliasVector(av)),
567 "Error=" << CKM::ErrorToString(temp));
569 2 == (temp = av.size()),
570 "Vector size: " << temp << ". Expected: 2");
573 RUNNER_CHILD_TEST(T1042_create_dsa_key)
576 auto manager = CKM::Manager::create();
579 AccessProvider ap("mylabel-dsa");
580 ap.allowAPI("key-manager::api-storage", "rw");
581 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
584 CKM_API_SUCCESS == (temp = manager->createKeyPairDSA(1024, CKM::Alias("PRV_KEY1_DSA"), CKM::Alias("PUB_KEY1_DSA"), CKM::Policy(), CKM::Policy())),
585 "Error=" << CKM::ErrorToString(temp));
587 CKM_API_SUCCESS == (temp = manager->getKeyAliasVector(av)),
588 "Error=" << CKM::ErrorToString(temp));
590 2 == (temp = av.size()),
591 "Vector size: " << temp << ". Expected: 2");
594 RUNNER_TEST(T1049_deinit)
597 auto control = CKM::Control::create();
600 CKM_API_SUCCESS == (temp = control->lockUserKey(USER_APP)),
601 "Error=" << CKM::ErrorToString(temp));
603 CKM_API_SUCCESS == (temp = control->removeUserData(USER_APP)),
604 "Error=" << CKM::ErrorToString(temp));
608 RUNNER_TEST_GROUP_INIT(T111_CKM_CreateKeyPair);
610 RUNNER_TEST(T1110_init)
613 auto control = CKM::Control::create();
615 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "test-pass")),
616 "Error=" << CKM::ErrorToString(temp));
618 CKM_API_SUCCESS == (temp = control->unlockUserKey(USER_APP, "user-pass")),
619 "Error=" << CKM::ErrorToString(temp));
622 RUNNER_TEST(T1111_CreateKeyPairRSA)
625 auto manager = CKM::Manager::create();
626 CKM::Alias a1("rsa-test-1");
627 CKM::Alias a2("rsa-test-2");
631 CKM_API_SUCCESS == (temp = manager->createKeyPairRSA(1024, a1, a2, p1, p2)),
632 "Error=" << CKM::ErrorToString(temp));
634 CKM_API_ERROR_DB_ALIAS_EXISTS == (temp = manager->createKeyPairRSA(1024, a1, a2, p1, p2)),
635 "Error=" << CKM::ErrorToString(temp));
638 RUNNER_TEST(T1112_CreateKeyPairDSA)
641 auto manager = CKM::Manager::create();
642 CKM::Alias a1("dsa-test-1");
643 CKM::Alias a2("dsa-test-2");
647 CKM_API_SUCCESS == (temp = manager->createKeyPairDSA(1024, a1, a2, p1, p2)),
648 "Error=" << CKM::ErrorToString(temp));
650 CKM_API_ERROR_DB_ALIAS_EXISTS == (temp = manager->createKeyPairDSA(1024, a1, a2, p1, p2)),
651 "Error=" << CKM::ErrorToString(temp));
654 RUNNER_TEST(T1113_CreateKeyPairECDSA)
657 auto manager = CKM::Manager::create();
658 CKM::Alias a1("ecdsa-test-1");
659 CKM::Alias a2("ecdsa-test-2");
663 CKM_API_SUCCESS == (temp = manager->createKeyPairECDSA(CKM::ElipticCurve::prime192v1, a1, a2, p1, p2)),
664 "Error=" << CKM::ErrorToString(temp));
667 RUNNER_TEST(T1114_deinit)
670 auto control = CKM::Control::create();
673 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
674 "Error=" << CKM::ErrorToString(temp));
676 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
677 "Error=" << CKM::ErrorToString(temp));
680 RUNNER_TEST_GROUP_INIT(T120_NEGATIVE_TESTS);
682 RUNNER_TEST(T12100_init)
685 auto control = CKM::Control::create();
687 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "test-pass")),
688 "Error=" << CKM::ErrorToString(temp));
690 CKM_API_SUCCESS == (temp = control->unlockUserKey(USER_APP, "user-pass")),
691 "Error=" << CKM::ErrorToString(temp));
694 RUNNER_TEST(T12101_key_exist)
697 auto manager = CKM::Manager::create();
699 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
700 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
701 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
702 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
703 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
704 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
705 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
707 "-----END PUBLIC KEY-----";
709 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
710 auto key = CKM::Key::create(buffer);
711 CKM::Alias alias = "rsa-alias-duplication";
714 CKM_API_SUCCESS == (ret = manager->saveKey(alias, key, CKM::Policy())),
715 "Error=" << CKM::ErrorToString(ret));
717 CKM_API_ERROR_DB_ALIAS_EXISTS == (ret = manager->saveKey(alias, key, CKM::Policy())),
718 "Error=" << CKM::ErrorToString(ret));
722 * These test cases tests API when empty parameters are passed to functions
725 RUNNER_TEST(T12102_saveKey_empty_alias)
727 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
728 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
729 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
730 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLc\n"
731 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
732 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
733 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
734 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
736 "-----END PUBLIC KEY-----";
738 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
739 auto key = CKM::Key::create(buffer);
740 CKM::Alias alias; //alias is not initialized
743 auto manager = CKM::Manager::create();
745 CKM_API_ERROR_INPUT_PARAM == (ret = manager->saveKey(alias, key, CKM::Policy())),
746 "Error=" << CKM::ErrorToString(ret));
749 RUNNER_TEST(T12103_saveKey_empty_key)
751 CKM::KeyShPtr key; //key is not initialized
752 CKM::Alias alias = "empty-key";
755 auto manager = CKM::Manager::create();
757 CKM_API_ERROR_INPUT_PARAM == (ret = manager->saveKey(alias, key, CKM::Policy())),
758 "Error=" << CKM::ErrorToString(ret));
761 RUNNER_TEST(T12104_saveCertificate_empty_alias)
763 std::string certPem =
764 "-----BEGIN CERTIFICATE-----\n"
765 "MIIEgDCCA2igAwIBAgIIcjtBYJGQtOAwDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UE\n"
766 "BhMCVVMxEzARBgNVBAoTCkdvb2dsZSBJbmMxJTAjBgNVBAMTHEdvb2dsZSBJbnRl\n"
767 "cm5ldCBBdXRob3JpdHkgRzIwHhcNMTQwNTIyMTEyOTQyWhcNMTQwODIwMDAwMDAw\n"
768 "WjBtMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwN\n"
769 "TW91bnRhaW4gVmlldzETMBEGA1UECgwKR29vZ2xlIEluYzEcMBoGA1UEAwwTYWNj\n"
770 "b3VudHMuZ29vZ2xlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB\n"
771 "ALtlLWVWPN3q3bSEQl1Z97gPdgl5vbgJOZSAr0ZY0tJCuFLBbUKetJWryyE+5KpG\n"
772 "gMMpLS4v8/bvXaZc6mAs+RfAqGM24C3vQg5hPnj4dflnhL0WiOCZBurm1tV4oexk\n"
773 "HLXs3jr/jpnb738AQpj8zZ9a4VEBuHJRZALnWZ/XhqU+dvYomAoRQNuL5OhkT7uu\n"
774 "d0NKJL9JjYLyQglGgE2sVsWv2kj7EO/P9Q6NEKt9BGmhMsFvtfeKUaymynaxpR1g\n"
775 "wEPlqYvB38goh1dIOgVLT0OVyLImeg5Mdwar/8c1U0OYhLOc6PJapOZAfUkE+3+w\n"
776 "xYt8AChLN1b5szOwInrCVpECAwEAAaOCAUYwggFCMB0GA1UdJQQWMBQGCCsGAQUF\n"
777 "BwMBBggrBgEFBQcDAjAeBgNVHREEFzAVghNhY2NvdW50cy5nb29nbGUuY29tMGgG\n"
778 "CCsGAQUFBwEBBFwwWjArBggrBgEFBQcwAoYfaHR0cDovL3BraS5nb29nbGUuY29t\n"
779 "L0dJQUcyLmNydDArBggrBgEFBQcwAYYfaHR0cDovL2NsaWVudHMxLmdvb2dsZS5j\n"
780 "b20vb2NzcDAdBgNVHQ4EFgQU0/UtToEtNIfwDwHuYGuVKcj0xK8wDAYDVR0TAQH/\n"
781 "BAIwADAfBgNVHSMEGDAWgBRK3QYWG7z2aLV29YG2u2IaulqBLzAXBgNVHSAEEDAO\n"
782 "MAwGCisGAQQB1nkCBQEwMAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL3BraS5nb29n\n"
783 "bGUuY29tL0dJQUcyLmNybDANBgkqhkiG9w0BAQUFAAOCAQEAcGNI/X9f0g+7ij0o\n"
784 "ehLpk6vxSMQGrmOZ4+PG/MC9SLClCkt7zJkfU7erZnyVXyxCpwlljq+Wk9YTPUOq\n"
785 "xD/V2ikQVSAANoxGJFO9UoL5jzWusPhKKv8CcM7fuiERz8K+CfBcqfxbgI5rH0g5\n"
786 "dYclmLC81cJ/08i+9Nltvxv69Y3hGfEICT6K+EdSxwnQzOhpMZmvxZsIj+d6CVNa\n"
787 "9ICYgUthsNQVWzrIs5wknpjjZ9liDMwJX0vu8A0rce4X/Lna5hh2bW9igz2iP5WM\n"
788 "9fuwdbTw4y3jfPQgszU4YZxWxhMzccxe058Qx1tLndAknBQEBesQjXytVQpuM1SV\n"
790 "-----END CERTIFICATE-----\n";
792 CKM::RawBuffer buffer(certPem.begin(), certPem.end());
793 auto cert = CKM::Certificate::create(buffer, CKM::DataFormat::FORM_PEM);
794 CKM::Alias alias; //alias is not initialized
797 auto manager = CKM::Manager::create();
799 CKM_API_ERROR_INPUT_PARAM == (temp = manager->saveCertificate(alias, cert, CKM::Policy())),
800 "Error=" << CKM::ErrorToString(temp));
803 RUNNER_TEST(T12105_saveCertificate_empty_cert)
805 CKM::CertificateShPtr cert; //cert is not initialized
806 CKM::Alias alias = "empty-cert";
809 auto manager = CKM::Manager::create();
811 CKM_API_ERROR_INPUT_PARAM == (temp = manager->saveCertificate(alias, cert, CKM::Policy())),
812 "Error=" << CKM::ErrorToString(temp));
815 RUNNER_TEST(T12106_saveData_empty_alias)
817 std::string testData = "test data test data test data";
818 CKM::RawBuffer buffer(testData.begin(), testData.end());
822 auto manager = CKM::Manager::create();
824 CKM_API_ERROR_INPUT_PARAM == (temp = manager->saveData(alias, buffer, CKM::Policy())),
825 "Error=" << CKM::ErrorToString(temp));
828 RUNNER_TEST(T12107_saveData_empty_data)
830 CKM::RawBuffer buffer;
831 CKM::Alias alias = "empty-data";
834 auto manager = CKM::Manager::create();
836 CKM_API_ERROR_INPUT_PARAM == (temp = manager->saveData(alias, buffer, CKM::Policy())),
837 "Error=" << CKM::ErrorToString(temp));
841 * These test cases tests API when trying to get data from not existing alias
844 RUNNER_TEST(T12108_getKey_alias_not_exist)
847 CKM::Alias alias = "this-alias-not-exist";
850 auto manager = CKM::Manager::create();
852 CKM_API_ERROR_DB_ALIAS_UNKNOWN == (temp = manager->getKey(alias, "", key)),
853 "Error=" << CKM::ErrorToString(temp));
856 RUNNER_TEST(T12109_getCertificate_alias_not_exist)
858 CKM::CertificateShPtr certificate;
859 CKM::Alias alias = "this-alias-not-exist";
862 auto manager = CKM::Manager::create();
864 CKM_API_ERROR_DB_ALIAS_UNKNOWN == (temp = manager->getCertificate(alias, CKM::Password(), certificate)),
865 "Error=" << CKM::ErrorToString(temp));
868 RUNNER_TEST(T12110_getData_alias_not_exist)
871 auto manager = CKM::Manager::create();
872 CKM::RawBuffer buffer;
873 CKM::Alias alias("some alias");
875 CKM_API_ERROR_DB_ALIAS_UNKNOWN == (temp = manager->getData(alias, "", buffer)),
876 "Error=" << CKM::ErrorToString(temp));
880 * These test cases tests API when damaged keys are used
882 RUNNER_TEST(T12111_rsa_key_damaged)
885 auto manager = CKM::Manager::create();
887 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
888 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
889 // "BROKENBROKENBROKENBROKENBROKENTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT\n"
890 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
891 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
892 // "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
893 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
895 "-----END PUBLIC KEY-----";
897 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
898 auto key = CKM::Key::create(buffer);
899 CKM::Alias alias = "damaged-rsa";
902 NULL == key.get(), "Key is broken. It should be empty");
905 CKM_API_ERROR_INPUT_PARAM == (ret = manager->saveKey(alias, key, CKM::Policy())),
906 "Error=" << CKM::ErrorToString(ret));
909 RUNNER_TEST(T12112_rsa_key_too_short)
912 auto manager = CKM::Manager::create();
914 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
915 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
916 //"T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
917 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
918 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
919 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
920 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
922 "-----END PUBLIC KEY-----";
924 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
925 auto key = CKM::Key::create(buffer);
926 CKM::Alias alias = "short-rsa";
929 CKM_API_ERROR_INPUT_PARAM == (ret = manager->saveKey(alias, key, CKM::Policy())),
930 "Error=" << CKM::ErrorToString(ret));
933 RUNNER_TEST(T12113_dsa_key_too_short)
936 auto manager = CKM::Manager::create();
938 const std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
939 "MIIBtzCCASwGByqGSM44BAEwggEfAoGBALeveaD/EheW+ws1YuW77f344+brkEzm\n"
940 "BVfFYHr7t+jwu6nQe341SoESJG+PCgrrhy76KNDCfveiwEoWufVHnI4bYBU/ClzP\n"
941 //"A3amf6c5yud45ZR/b6OiAuew6ohY0mQGnzqeio8BaCsZaJ6EziCSlkdIDJisSfPg\n"
942 "nlWHqf4AwHVdAhUA7I1JQ7sBFJ+N19w3Omu+aO8EG08CgYEAldagy/Ccxhh43cZu\n"
943 //"AZQxgJLCcp1jg6NdPMdkZ2TcSijvaVxBu+gjEGOqN5Os2V6UF7S/k/rjHYmcX9ux\n"
944 "gpjkC31yTNrKyERIAFIYZtG2K7LVBUZq5Fgm7I83QBVchJ2PA7mBaugJFEhNjbhK\n"
945 "NRip5UH38le1YDZ/IiA+svFOpeoDgYQAAoGAPT91aEgwFdulzmHlvr3k+GBCE9z+\n"
946 "hq0c3FGUCtGbVOqg2KPqMBgwSb4MC0msQys4DTVZhLJI+C5eIPEHgfBMqY1ZNJdO\n"
947 "OSCQciDXnRfSqKbT6tjDTgR5jmh5bG1Q8QFeBTHCDsQHoQYWgx0nyu12lASN80rC\n"
949 "-----END PUBLIC KEY-----";
951 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
952 auto key = CKM::Key::create(buffer);
953 CKM::Alias alias = "short-dsa";
956 CKM_API_ERROR_INPUT_PARAM == (ret = manager->saveKey(alias, key, CKM::Policy())),
957 "Error=" << CKM::ErrorToString(ret));
962 * These test cases tests CKM service if malicious data is provided over the socket.
965 RUNNER_TEST(T12114_rsa_key_damaged_serviceTest)
968 auto manager = CKM::Manager::create();
970 // fake the client - let the service detect the problem
971 class WrongKeyImpl : public CKM::Key
974 WrongKeyImpl(CKM::RawBuffer & dummy_content) : m_dummy(dummy_content) {
977 virtual bool empty() const {
981 virtual CKM::KeyType getType() const {
982 return CKM::KeyType::KEY_RSA_PUBLIC;
984 virtual int getSize() const {
987 virtual CKM::ElipticCurve getCurve() const {
988 return CKM::ElipticCurve::prime192v1;
990 virtual CKM::RawBuffer getDER() const {
993 virtual ~WrongKeyImpl() {}
995 CKM::RawBuffer & m_dummy;
997 std::string dummyData = "my_cat_Berta\n";
998 CKM::RawBuffer buffer(dummyData.begin(), dummyData.end());
999 auto key = std::make_shared<WrongKeyImpl>(buffer);
1000 CKM::Alias alias = "damaged-rsa";
1003 CKM_API_ERROR_INPUT_PARAM == (ret = manager->saveKey(alias, key, CKM::Policy())),
1004 "Error=" << CKM::ErrorToString(ret));
1007 RUNNER_TEST(T12115_saveCertificate_damaged_serviceTest)
1009 // fake the client - let the service detect the problem
1010 class WrongCertImpl : public CKM::Certificate
1013 WrongCertImpl(CKM::RawBuffer & dummy_content) : m_dummy(dummy_content) {
1014 m_x509 = X509_new();
1017 bool empty() const {
1021 virtual X509 *getX509() const {
1025 virtual CKM::RawBuffer getDER() const {
1029 virtual ~WrongCertImpl() {
1034 CKM::RawBuffer & m_dummy;
1036 std::string dummyData = "my_cat_Stefan\n";
1037 CKM::RawBuffer buffer(dummyData.begin(), dummyData.end());
1038 auto cert = std::make_shared<WrongCertImpl>(buffer);
1039 CKM::Alias alias = "damaged-cert";
1042 auto manager = CKM::Manager::create();
1044 CKM_API_ERROR_INPUT_PARAM == (temp = manager->saveCertificate(alias, cert, CKM::Policy())),
1045 "Error=" << CKM::ErrorToString(temp));
1048 RUNNER_TEST(T12116_deinit)
1051 auto control = CKM::Control::create();
1054 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
1055 "Error=" << CKM::ErrorToString(temp));
1057 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
1058 "Error=" << CKM::ErrorToString(temp));
1061 RUNNER_TEST_GROUP_INIT(T131_CKM_QUICK_SET_GET_TESTS);
1063 RUNNER_TEST(T1311_init)
1066 auto control = CKM::Control::create();
1068 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "test-pass")),
1069 "Error=" << CKM::ErrorToString(temp));
1070 RUNNER_ASSERT_MSG(time(0) > 1405343457,
1071 "Time error. Device date is before 14th of July 2014. You must set proper time on device before run this tests!");
1073 struct hostent* he = gethostbyname("google.com");
1075 RUNNER_ASSERT_MSG(he != NULL, "There is problem with translate domain google.com into ip address. Probably network "
1076 "is not woking on the device. OCSP tests requires network access!");
1079 RUNNER_TEST(T1312_get_chain)
1081 std::string ee = "-----BEGIN CERTIFICATE-----\n"
1082 "MIIF0TCCBLmgAwIBAgIQaPGTP4aS7Ut/WDNaBzdQrDANBgkqhkiG9w0BAQUFADCB\n"
1083 "ujELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
1084 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n"
1085 "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMr\n"
1086 "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTAeFw0x\n"
1087 "NDAyMjAwMDAwMDBaFw0xNTAyMjAyMzU5NTlaMIHmMRMwEQYLKwYBBAGCNzwCAQMT\n"
1088 "AlBMMR0wGwYDVQQPExRQcml2YXRlIE9yZ2FuaXphdGlvbjETMBEGA1UEBRMKMDAw\n"
1089 "MDAyNTIzNzELMAkGA1UEBhMCUEwxDzANBgNVBBEUBjAwLTk1MDEUMBIGA1UECBML\n"
1090 "bWF6b3dpZWNraWUxETAPBgNVBAcUCFdhcnN6YXdhMRYwFAYDVQQJFA1TZW5hdG9y\n"
1091 "c2thIDE4MRMwEQYDVQQKFAptQmFuayBTLkEuMQwwCgYDVQQLFANESU4xGTAXBgNV\n"
1092 "BAMUEHd3dy5tYmFuay5jb20ucGwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n"
1093 "AoIBAQDph6x8V6xUW/+651+qHF+UmorH9uaz2ZrX2bIWiMKIJFmpDDHlxcapKkqE\n"
1094 "BV04is83aiCpqKtc2ZHy2g4Hpj1eSF5BP2+OAlo0YUQZPIeRRdiMjmeAxw/ncBDx\n"
1095 "9rQBuCJ4XTD6cqQox5SI0TASOZ+wyAEjbDRXzL73XqRAFZ1LOpb2ONkolS+RutMB\n"
1096 "vshvCsWPeNe7eGLuOh6DyC6r1vX9xhw3xnjM2mTSvmtimgzSLacNGKqRrsucUgcb\n"
1097 "0+O5C2jZAtAMLyZksL92cxmWbtVzUYzem4chjHu5cRxUlPNzUJWrrczueB7Ip4A8\n"
1098 "aQuFMfNXYc0x+WLWjy//urypMKjhAgMBAAGjggGjMIIBnzAbBgNVHREEFDASghB3\n"
1099 "d3cubWJhbmsuY29tLnBsMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgWgMB0GA1Ud\n"
1100 "JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBEBgNVHSAEPTA7MDkGC2CGSAGG+EUB\n"
1101 "BxcGMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9jcHMw\n"
1102 "HQYDVR0OBBYEFN37iGaS7mZnENxZ9FGqNLR+QgoMMB8GA1UdIwQYMBaAFPyKULqe\n"
1103 "uSVae1WFT5UAY4/pWGtDMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9FVlNlY3Vy\n"
1104 "ZS1jcmwudmVyaXNpZ24uY29tL0VWU2VjdXJlMjAwNi5jcmwwfAYIKwYBBQUHAQEE\n"
1105 "cDBuMC0GCCsGAQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC52ZXJpc2lnbi5j\n"
1106 "b20wPQYIKwYBBQUHMAKGMWh0dHA6Ly9FVlNlY3VyZS1haWEudmVyaXNpZ24uY29t\n"
1107 "L0VWU2VjdXJlMjAwNi5jZXIwDQYJKoZIhvcNAQEFBQADggEBAD0wO+rooUrIM4qp\n"
1108 "PHhp+hkXK6WMQ2qzGOmbMcZjw0govg5vkzkefPDryIXXbrF8mRagiJNMSfNaWWeh\n"
1109 "Cj41OV24EdUl0OLbFxNzcvub599zRs/apfaRLTfsmlmOgi0/YP305i+3tJ2ll946\n"
1110 "P+qV1wXnXqTqEdIl4Ys3+1HmDCdTB1hoDwAAzqRVUXZ5+iiwPAU7R/LTHfMjV1ke\n"
1111 "8jtNFfrorlZMCfVH/7eEnHJvVjOJt+YFe4aFMzE+DfuYIK7MH+olC2v79kBwbnEQ\n"
1112 "fvHMA9gFwOYLUBBdSfcocp8EKZ+mRlNPGR/3LBrPeaQQ0GZEkxzRK+v/aNTuiYfr\n"
1114 "-----END CERTIFICATE-----\n";
1117 "-----BEGIN CERTIFICATE-----\n"
1118 "MIIF5DCCBMygAwIBAgIQW3dZxheE4V7HJ8AylSkoazANBgkqhkiG9w0BAQUFADCB\n"
1119 "yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
1120 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\n"
1121 "U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\n"
1122 "ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\n"
1123 "aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMTYxMTA3MjM1OTU5WjCBujEL\n"
1124 "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\n"
1125 "ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg\n"
1126 "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMrVmVy\n"
1127 "aVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTCCASIwDQYJ\n"
1128 "KoZIhvcNAQEBBQADggEPADCCAQoCggEBAJjboFXrnP0XeeOabhQdsVuYI4cWbod2\n"
1129 "nLU4O7WgerQHYwkZ5iqISKnnnbYwWgiXDOyq5BZpcmIjmvt6VCiYxQwtt9citsj5\n"
1130 "OBfH3doxRpqUFI6e7nigtyLUSVSXTeV0W5K87Gws3+fBthsaVWtmCAN/Ra+aM/EQ\n"
1131 "wGyZSpIkMQht3QI+YXZ4eLbtfjeubPOJ4bfh3BXMt1afgKCxBX9ONxX/ty8ejwY4\n"
1132 "P1C3aSijtWZfNhpSSENmUt+ikk/TGGC+4+peGXEFv54cbGhyJW+ze3PJbb0S/5tB\n"
1133 "Ml706H7FC6NMZNFOvCYIZfsZl1h44TO/7Wg+sSdFb8Di7Jdp91zT91ECAwEAAaOC\n"
1134 "AdIwggHOMB0GA1UdDgQWBBT8ilC6nrklWntVhU+VAGOP6VhrQzASBgNVHRMBAf8E\n"
1135 "CDAGAQH/AgEAMD0GA1UdIAQ2MDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRw\n"
1136 "czovL3d3dy52ZXJpc2lnbi5jb20vY3BzMD0GA1UdHwQ2MDQwMqAwoC6GLGh0dHA6\n"
1137 "Ly9FVlNlY3VyZS1jcmwudmVyaXNpZ24uY29tL3BjYTMtZzUuY3JsMA4GA1UdDwEB\n"
1138 "/wQEAwIBBjARBglghkgBhvhCAQEEBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZ\n"
1139 "MFcwVRYJaW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7\n"
1140 "GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwKQYDVR0R\n"
1141 "BCIwIKQeMBwxGjAYBgNVBAMTEUNsYXNzM0NBMjA0OC0xLTQ3MD0GCCsGAQUFBwEB\n"
1142 "BDEwLzAtBggrBgEFBQcwAYYhaHR0cDovL0VWU2VjdXJlLW9jc3AudmVyaXNpZ24u\n"
1143 "Y29tMB8GA1UdIwQYMBaAFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqGSIb3DQEB\n"
1144 "BQUAA4IBAQCWovp/5j3t1CvOtxU/wHIDX4u6FpAl98KD2Md1NGNoElMMU4l7yVYJ\n"
1145 "p8M2RE4O0GJis4b66KGbNGeNUyIXPv2s7mcuQ+JdfzOE8qJwwG6Cl8A0/SXGI3/t\n"
1146 "5rDFV0OEst4t8dD2SB8UcVeyrDHhlyQjyRNddOVG7wl8nuGZMQoIeRuPcZ8XZsg4\n"
1147 "z+6Ml7YGuXNG5NOUweVgtSV1LdlpMezNlsOjdv3odESsErlNv1HoudRETifLriDR\n"
1148 "fip8tmNHnna6l9AW5wtsbfdDbzMLKTB3+p359U64drPNGLT5IO892+bKrZvQTtKH\n"
1149 "qQ2mRHNQ3XBb7a1+Srwi1agm5MKFIA3Z\n"
1150 "-----END CERTIFICATE-----\n";
1152 auto cert = CKM::Certificate::create(CKM::RawBuffer(ee.begin(), ee.end()), CKM::DataFormat::FORM_PEM);
1153 auto cert1 = CKM::Certificate::create(CKM::RawBuffer(im.begin(), im.end()), CKM::DataFormat::FORM_PEM);
1154 CKM::CertificateShPtrVector certVector = {cert1};
1155 CKM::CertificateShPtrVector certChain;
1158 auto manager = CKM::Manager::create();
1160 RUNNER_ASSERT_MSG(NULL != cert.get(), "Certificate should not be empty");
1161 RUNNER_ASSERT_MSG(false != cert1.get(), "Certificate should not be empty");
1164 CKM_API_ERROR_VERIFICATION_FAILED == (tmp = manager->getCertificateChain(cert, CKM::CertificateShPtrVector(), certChain)),
1165 "Error=" << CKM::ErrorToString(tmp));
1168 0 == certChain.size(),
1169 "Wrong size of certificate chain.");
1172 CKM_API_SUCCESS == (tmp = manager->getCertificateChain(cert, certVector, certChain)),
1173 "Error=" << CKM::ErrorToString(tmp));
1176 3 == certChain.size(),
1177 "Wrong size of certificate chain.");
1180 RUNNER_TEST(T1313_get_chain_with_alias)
1182 std::string ee = "-----BEGIN CERTIFICATE-----\n"
1183 "MIIF0TCCBLmgAwIBAgIQaPGTP4aS7Ut/WDNaBzdQrDANBgkqhkiG9w0BAQUFADCB\n"
1184 "ujELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
1185 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n"
1186 "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMr\n"
1187 "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTAeFw0x\n"
1188 "NDAyMjAwMDAwMDBaFw0xNTAyMjAyMzU5NTlaMIHmMRMwEQYLKwYBBAGCNzwCAQMT\n"
1189 "AlBMMR0wGwYDVQQPExRQcml2YXRlIE9yZ2FuaXphdGlvbjETMBEGA1UEBRMKMDAw\n"
1190 "MDAyNTIzNzELMAkGA1UEBhMCUEwxDzANBgNVBBEUBjAwLTk1MDEUMBIGA1UECBML\n"
1191 "bWF6b3dpZWNraWUxETAPBgNVBAcUCFdhcnN6YXdhMRYwFAYDVQQJFA1TZW5hdG9y\n"
1192 "c2thIDE4MRMwEQYDVQQKFAptQmFuayBTLkEuMQwwCgYDVQQLFANESU4xGTAXBgNV\n"
1193 "BAMUEHd3dy5tYmFuay5jb20ucGwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n"
1194 "AoIBAQDph6x8V6xUW/+651+qHF+UmorH9uaz2ZrX2bIWiMKIJFmpDDHlxcapKkqE\n"
1195 "BV04is83aiCpqKtc2ZHy2g4Hpj1eSF5BP2+OAlo0YUQZPIeRRdiMjmeAxw/ncBDx\n"
1196 "9rQBuCJ4XTD6cqQox5SI0TASOZ+wyAEjbDRXzL73XqRAFZ1LOpb2ONkolS+RutMB\n"
1197 "vshvCsWPeNe7eGLuOh6DyC6r1vX9xhw3xnjM2mTSvmtimgzSLacNGKqRrsucUgcb\n"
1198 "0+O5C2jZAtAMLyZksL92cxmWbtVzUYzem4chjHu5cRxUlPNzUJWrrczueB7Ip4A8\n"
1199 "aQuFMfNXYc0x+WLWjy//urypMKjhAgMBAAGjggGjMIIBnzAbBgNVHREEFDASghB3\n"
1200 "d3cubWJhbmsuY29tLnBsMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgWgMB0GA1Ud\n"
1201 "JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBEBgNVHSAEPTA7MDkGC2CGSAGG+EUB\n"
1202 "BxcGMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9jcHMw\n"
1203 "HQYDVR0OBBYEFN37iGaS7mZnENxZ9FGqNLR+QgoMMB8GA1UdIwQYMBaAFPyKULqe\n"
1204 "uSVae1WFT5UAY4/pWGtDMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9FVlNlY3Vy\n"
1205 "ZS1jcmwudmVyaXNpZ24uY29tL0VWU2VjdXJlMjAwNi5jcmwwfAYIKwYBBQUHAQEE\n"
1206 "cDBuMC0GCCsGAQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC52ZXJpc2lnbi5j\n"
1207 "b20wPQYIKwYBBQUHMAKGMWh0dHA6Ly9FVlNlY3VyZS1haWEudmVyaXNpZ24uY29t\n"
1208 "L0VWU2VjdXJlMjAwNi5jZXIwDQYJKoZIhvcNAQEFBQADggEBAD0wO+rooUrIM4qp\n"
1209 "PHhp+hkXK6WMQ2qzGOmbMcZjw0govg5vkzkefPDryIXXbrF8mRagiJNMSfNaWWeh\n"
1210 "Cj41OV24EdUl0OLbFxNzcvub599zRs/apfaRLTfsmlmOgi0/YP305i+3tJ2ll946\n"
1211 "P+qV1wXnXqTqEdIl4Ys3+1HmDCdTB1hoDwAAzqRVUXZ5+iiwPAU7R/LTHfMjV1ke\n"
1212 "8jtNFfrorlZMCfVH/7eEnHJvVjOJt+YFe4aFMzE+DfuYIK7MH+olC2v79kBwbnEQ\n"
1213 "fvHMA9gFwOYLUBBdSfcocp8EKZ+mRlNPGR/3LBrPeaQQ0GZEkxzRK+v/aNTuiYfr\n"
1215 "-----END CERTIFICATE-----\n";
1218 "-----BEGIN CERTIFICATE-----\n"
1219 "MIIF5DCCBMygAwIBAgIQW3dZxheE4V7HJ8AylSkoazANBgkqhkiG9w0BAQUFADCB\n"
1220 "yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
1221 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\n"
1222 "U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\n"
1223 "ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\n"
1224 "aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMTYxMTA3MjM1OTU5WjCBujEL\n"
1225 "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\n"
1226 "ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg\n"
1227 "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMrVmVy\n"
1228 "aVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTCCASIwDQYJ\n"
1229 "KoZIhvcNAQEBBQADggEPADCCAQoCggEBAJjboFXrnP0XeeOabhQdsVuYI4cWbod2\n"
1230 "nLU4O7WgerQHYwkZ5iqISKnnnbYwWgiXDOyq5BZpcmIjmvt6VCiYxQwtt9citsj5\n"
1231 "OBfH3doxRpqUFI6e7nigtyLUSVSXTeV0W5K87Gws3+fBthsaVWtmCAN/Ra+aM/EQ\n"
1232 "wGyZSpIkMQht3QI+YXZ4eLbtfjeubPOJ4bfh3BXMt1afgKCxBX9ONxX/ty8ejwY4\n"
1233 "P1C3aSijtWZfNhpSSENmUt+ikk/TGGC+4+peGXEFv54cbGhyJW+ze3PJbb0S/5tB\n"
1234 "Ml706H7FC6NMZNFOvCYIZfsZl1h44TO/7Wg+sSdFb8Di7Jdp91zT91ECAwEAAaOC\n"
1235 "AdIwggHOMB0GA1UdDgQWBBT8ilC6nrklWntVhU+VAGOP6VhrQzASBgNVHRMBAf8E\n"
1236 "CDAGAQH/AgEAMD0GA1UdIAQ2MDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRw\n"
1237 "czovL3d3dy52ZXJpc2lnbi5jb20vY3BzMD0GA1UdHwQ2MDQwMqAwoC6GLGh0dHA6\n"
1238 "Ly9FVlNlY3VyZS1jcmwudmVyaXNpZ24uY29tL3BjYTMtZzUuY3JsMA4GA1UdDwEB\n"
1239 "/wQEAwIBBjARBglghkgBhvhCAQEEBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZ\n"
1240 "MFcwVRYJaW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7\n"
1241 "GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwKQYDVR0R\n"
1242 "BCIwIKQeMBwxGjAYBgNVBAMTEUNsYXNzM0NBMjA0OC0xLTQ3MD0GCCsGAQUFBwEB\n"
1243 "BDEwLzAtBggrBgEFBQcwAYYhaHR0cDovL0VWU2VjdXJlLW9jc3AudmVyaXNpZ24u\n"
1244 "Y29tMB8GA1UdIwQYMBaAFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqGSIb3DQEB\n"
1245 "BQUAA4IBAQCWovp/5j3t1CvOtxU/wHIDX4u6FpAl98KD2Md1NGNoElMMU4l7yVYJ\n"
1246 "p8M2RE4O0GJis4b66KGbNGeNUyIXPv2s7mcuQ+JdfzOE8qJwwG6Cl8A0/SXGI3/t\n"
1247 "5rDFV0OEst4t8dD2SB8UcVeyrDHhlyQjyRNddOVG7wl8nuGZMQoIeRuPcZ8XZsg4\n"
1248 "z+6Ml7YGuXNG5NOUweVgtSV1LdlpMezNlsOjdv3odESsErlNv1HoudRETifLriDR\n"
1249 "fip8tmNHnna6l9AW5wtsbfdDbzMLKTB3+p359U64drPNGLT5IO892+bKrZvQTtKH\n"
1250 "qQ2mRHNQ3XBb7a1+Srwi1agm5MKFIA3Z\n"
1251 "-----END CERTIFICATE-----\n";
1253 auto cert = CKM::Certificate::create(CKM::RawBuffer(ee.begin(), ee.end()), CKM::DataFormat::FORM_PEM);
1254 auto cert1 = CKM::Certificate::create(CKM::RawBuffer(im.begin(), im.end()), CKM::DataFormat::FORM_PEM);
1255 CKM::CertificateShPtrVector certChain;
1256 CKM::AliasVector aliasVector;
1257 CKM::Alias alias("imcert");
1258 CharPtr top_label = get_label();
1259 std::string full_address = aliasWithLabel(top_label.get(), alias.c_str());
1262 auto manager = CKM::Manager::create();
1264 RUNNER_ASSERT_MSG(NULL != cert.get(), "Certificate should not be empty");
1265 RUNNER_ASSERT_MSG(NULL != cert1.get(), "Certificate should not be empty");
1268 CKM_API_ERROR_VERIFICATION_FAILED == (tmp = manager->getCertificateChain(cert, aliasVector, certChain)),
1269 "Error=" << CKM::ErrorToString(tmp));
1272 0 == certChain.size(),
1273 "Wrong size of certificate chain.");
1276 CKM_API_SUCCESS == (tmp = manager->saveCertificate(alias, cert1, CKM::Policy())),
1277 "Error=" << CKM::ErrorToString(tmp));
1279 aliasVector.push_back(full_address);
1282 CKM_API_SUCCESS == (tmp = manager->getCertificateChain(cert, aliasVector, certChain)),
1283 "Error=" << CKM::ErrorToString(tmp));
1286 3 == certChain.size(),
1287 "Wrong size of certificate chain.");
1290 RUNNER_TEST(T1314_ocsp_check)
1292 RUNNER_IGNORED_MSG("Fixed in next version of ckm!");
1294 std::string ee = "-----BEGIN CERTIFICATE-----\n"
1295 "MIIF0TCCBLmgAwIBAgIQaPGTP4aS7Ut/WDNaBzdQrDANBgkqhkiG9w0BAQUFADCB\n"
1296 "ujELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
1297 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n"
1298 "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMr\n"
1299 "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTAeFw0x\n"
1300 "NDAyMjAwMDAwMDBaFw0xNTAyMjAyMzU5NTlaMIHmMRMwEQYLKwYBBAGCNzwCAQMT\n"
1301 "AlBMMR0wGwYDVQQPExRQcml2YXRlIE9yZ2FuaXphdGlvbjETMBEGA1UEBRMKMDAw\n"
1302 "MDAyNTIzNzELMAkGA1UEBhMCUEwxDzANBgNVBBEUBjAwLTk1MDEUMBIGA1UECBML\n"
1303 "bWF6b3dpZWNraWUxETAPBgNVBAcUCFdhcnN6YXdhMRYwFAYDVQQJFA1TZW5hdG9y\n"
1304 "c2thIDE4MRMwEQYDVQQKFAptQmFuayBTLkEuMQwwCgYDVQQLFANESU4xGTAXBgNV\n"
1305 "BAMUEHd3dy5tYmFuay5jb20ucGwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n"
1306 "AoIBAQDph6x8V6xUW/+651+qHF+UmorH9uaz2ZrX2bIWiMKIJFmpDDHlxcapKkqE\n"
1307 "BV04is83aiCpqKtc2ZHy2g4Hpj1eSF5BP2+OAlo0YUQZPIeRRdiMjmeAxw/ncBDx\n"
1308 "9rQBuCJ4XTD6cqQox5SI0TASOZ+wyAEjbDRXzL73XqRAFZ1LOpb2ONkolS+RutMB\n"
1309 "vshvCsWPeNe7eGLuOh6DyC6r1vX9xhw3xnjM2mTSvmtimgzSLacNGKqRrsucUgcb\n"
1310 "0+O5C2jZAtAMLyZksL92cxmWbtVzUYzem4chjHu5cRxUlPNzUJWrrczueB7Ip4A8\n"
1311 "aQuFMfNXYc0x+WLWjy//urypMKjhAgMBAAGjggGjMIIBnzAbBgNVHREEFDASghB3\n"
1312 "d3cubWJhbmsuY29tLnBsMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgWgMB0GA1Ud\n"
1313 "JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBEBgNVHSAEPTA7MDkGC2CGSAGG+EUB\n"
1314 "BxcGMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9jcHMw\n"
1315 "HQYDVR0OBBYEFN37iGaS7mZnENxZ9FGqNLR+QgoMMB8GA1UdIwQYMBaAFPyKULqe\n"
1316 "uSVae1WFT5UAY4/pWGtDMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9FVlNlY3Vy\n"
1317 "ZS1jcmwudmVyaXNpZ24uY29tL0VWU2VjdXJlMjAwNi5jcmwwfAYIKwYBBQUHAQEE\n"
1318 "cDBuMC0GCCsGAQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC52ZXJpc2lnbi5j\n"
1319 "b20wPQYIKwYBBQUHMAKGMWh0dHA6Ly9FVlNlY3VyZS1haWEudmVyaXNpZ24uY29t\n"
1320 "L0VWU2VjdXJlMjAwNi5jZXIwDQYJKoZIhvcNAQEFBQADggEBAD0wO+rooUrIM4qp\n"
1321 "PHhp+hkXK6WMQ2qzGOmbMcZjw0govg5vkzkefPDryIXXbrF8mRagiJNMSfNaWWeh\n"
1322 "Cj41OV24EdUl0OLbFxNzcvub599zRs/apfaRLTfsmlmOgi0/YP305i+3tJ2ll946\n"
1323 "P+qV1wXnXqTqEdIl4Ys3+1HmDCdTB1hoDwAAzqRVUXZ5+iiwPAU7R/LTHfMjV1ke\n"
1324 "8jtNFfrorlZMCfVH/7eEnHJvVjOJt+YFe4aFMzE+DfuYIK7MH+olC2v79kBwbnEQ\n"
1325 "fvHMA9gFwOYLUBBdSfcocp8EKZ+mRlNPGR/3LBrPeaQQ0GZEkxzRK+v/aNTuiYfr\n"
1327 "-----END CERTIFICATE-----\n";
1330 "-----BEGIN CERTIFICATE-----\n"
1331 "MIIF5DCCBMygAwIBAgIQW3dZxheE4V7HJ8AylSkoazANBgkqhkiG9w0BAQUFADCB\n"
1332 "yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
1333 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\n"
1334 "U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\n"
1335 "ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\n"
1336 "aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMTYxMTA3MjM1OTU5WjCBujEL\n"
1337 "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\n"
1338 "ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg\n"
1339 "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMrVmVy\n"
1340 "aVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTCCASIwDQYJ\n"
1341 "KoZIhvcNAQEBBQADggEPADCCAQoCggEBAJjboFXrnP0XeeOabhQdsVuYI4cWbod2\n"
1342 "nLU4O7WgerQHYwkZ5iqISKnnnbYwWgiXDOyq5BZpcmIjmvt6VCiYxQwtt9citsj5\n"
1343 "OBfH3doxRpqUFI6e7nigtyLUSVSXTeV0W5K87Gws3+fBthsaVWtmCAN/Ra+aM/EQ\n"
1344 "wGyZSpIkMQht3QI+YXZ4eLbtfjeubPOJ4bfh3BXMt1afgKCxBX9ONxX/ty8ejwY4\n"
1345 "P1C3aSijtWZfNhpSSENmUt+ikk/TGGC+4+peGXEFv54cbGhyJW+ze3PJbb0S/5tB\n"
1346 "Ml706H7FC6NMZNFOvCYIZfsZl1h44TO/7Wg+sSdFb8Di7Jdp91zT91ECAwEAAaOC\n"
1347 "AdIwggHOMB0GA1UdDgQWBBT8ilC6nrklWntVhU+VAGOP6VhrQzASBgNVHRMBAf8E\n"
1348 "CDAGAQH/AgEAMD0GA1UdIAQ2MDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRw\n"
1349 "czovL3d3dy52ZXJpc2lnbi5jb20vY3BzMD0GA1UdHwQ2MDQwMqAwoC6GLGh0dHA6\n"
1350 "Ly9FVlNlY3VyZS1jcmwudmVyaXNpZ24uY29tL3BjYTMtZzUuY3JsMA4GA1UdDwEB\n"
1351 "/wQEAwIBBjARBglghkgBhvhCAQEEBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZ\n"
1352 "MFcwVRYJaW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7\n"
1353 "GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwKQYDVR0R\n"
1354 "BCIwIKQeMBwxGjAYBgNVBAMTEUNsYXNzM0NBMjA0OC0xLTQ3MD0GCCsGAQUFBwEB\n"
1355 "BDEwLzAtBggrBgEFBQcwAYYhaHR0cDovL0VWU2VjdXJlLW9jc3AudmVyaXNpZ24u\n"
1356 "Y29tMB8GA1UdIwQYMBaAFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqGSIb3DQEB\n"
1357 "BQUAA4IBAQCWovp/5j3t1CvOtxU/wHIDX4u6FpAl98KD2Md1NGNoElMMU4l7yVYJ\n"
1358 "p8M2RE4O0GJis4b66KGbNGeNUyIXPv2s7mcuQ+JdfzOE8qJwwG6Cl8A0/SXGI3/t\n"
1359 "5rDFV0OEst4t8dD2SB8UcVeyrDHhlyQjyRNddOVG7wl8nuGZMQoIeRuPcZ8XZsg4\n"
1360 "z+6Ml7YGuXNG5NOUweVgtSV1LdlpMezNlsOjdv3odESsErlNv1HoudRETifLriDR\n"
1361 "fip8tmNHnna6l9AW5wtsbfdDbzMLKTB3+p359U64drPNGLT5IO892+bKrZvQTtKH\n"
1362 "qQ2mRHNQ3XBb7a1+Srwi1agm5MKFIA3Z\n"
1363 "-----END CERTIFICATE-----\n";
1365 auto cert = CKM::Certificate::create(CKM::RawBuffer(ee.begin(), ee.end()), CKM::DataFormat::FORM_PEM);
1366 auto cert1 = CKM::Certificate::create(CKM::RawBuffer(im.begin(), im.end()), CKM::DataFormat::FORM_PEM);
1367 CKM::CertificateShPtrVector certVector = {cert1};
1368 CKM::CertificateShPtrVector certChain;
1371 auto manager = CKM::Manager::create();
1373 RUNNER_ASSERT_MSG(NULL != cert.get(), "Certificate should not be empty");
1374 RUNNER_ASSERT_MSG(NULL != cert1.get(), "Certificate should not be empty");
1377 CKM_API_ERROR_VERIFICATION_FAILED == (tmp = manager->getCertificateChain(cert, CKM::CertificateShPtrVector(), certChain)),
1378 "Error=" << CKM::ErrorToString(tmp));
1381 0 == certChain.size(),
1382 "Wrong size of certificate chain.");
1385 CKM_API_SUCCESS == (tmp = manager->getCertificateChain(cert, certVector, certChain)),
1386 "Error=" << CKM::ErrorToString(tmp));
1389 3 == certChain.size(),
1390 "Wrong size of certificate chain.");
1394 CKM_API_SUCCESS == (tmp = manager->ocspCheck(certChain, status)),
1395 "Error=" << CKM::ErrorToString(tmp));
1397 RUNNER_ASSERT_MSG(CKM_API_OCSP_STATUS_GOOD == status, "Verfication failed");
1400 RUNNER_TEST(T1315_deinit)
1403 auto control = CKM::Control::create();
1406 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
1407 "Error=" << CKM::ErrorToString(temp));
1409 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
1410 "Error=" << CKM::ErrorToString(temp));
1413 RUNNER_TEST_GROUP_INIT(T141_CREATE_AND_VERIFY_SIGNATURE);
1415 RUNNER_TEST(T1411_init)
1418 auto control = CKM::Control::create();
1420 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "test-pass")),
1421 "Error=" << CKM::ErrorToString(temp));
1424 RUNNER_TEST(T1412_rsa_key_create_verify)
1427 auto manager = CKM::Manager::create();
1429 std::string prv = "-----BEGIN RSA PRIVATE KEY-----\n"
1430 "Proc-Type: 4,ENCRYPTED\n"
1431 "DEK-Info: DES-EDE3-CBC,6C6507B11671DABC\n"
1433 "YiKNviNqc/V/i241CKtAVsNckesE0kcaka3VrY7ApXR+Va93YoEwVQ8gB9cE/eHH\n"
1434 "S0j3ZS1PAVFM/qo4ZnPdMzaSLvTQw0GAL90wWgF3XQ+feMnWyBObEoQdGXE828TB\n"
1435 "SLz4UOIQ55Dx6JSWTfEhwAlPs2cEWD14xvuxPzAEzBIYmWmBBsCN94YgFeRTzjH0\n"
1436 "TImoYVMN60GgOfZWw6rXq9RaV5dY0Y6F1piypCLGD35VaXAutdHIDvwUGECPm7SN\n"
1437 "w05jRro53E1vb4mYlZEY/bs4q7XEOI5+ZKT76Xn0oEJNX1KRL1h2q8fgUkm5j40M\n"
1438 "uQj71aLR9KyIoQARwGLeRy09tLVjH3fj66CCMqaPcxcIRIyWi5yYBB0s53ipm6A9\n"
1439 "CYuyc7MS2C0pOdWKsDvYsHR/36KUiIdPuhF4AbaTqqO0eWeuP7Na7dGK56Fl+ooi\n"
1440 "cUpJr7cIqMl2vL25B0jW7d4TB3zwCEkVVD1fBPeNoZWo30z4bILcBqjjPkQfHZ2e\n"
1441 "xNraG3qI4FHjoPT8JEE8p+PgwaMoINlICyIMKiCdvwz9yEnsHPy7FkmatpS+jFoS\n"
1442 "mg8R9vMwgK/HGEm0dmb/7/a0XsG2jCDm6cOmJdZJFQ8JW7hFs3eOHpNlQYDChG2D\n"
1443 "A1ExslqBtbpicywTZhzFdYU/hxeCr4UqcY27Zmhr4JlBPMyvadWKeOqCamWepjbT\n"
1444 "T/MhWJbmWgZbI5s5sbpu7cOYubQcUIEsTaQXGx/KEzGo1HLn9tzSeQfP/nqjAD/L\n"
1445 "T5t1Mb8o4LuV/fGIT33Q3i2FospJMqp2JINNzG18I6Fjo08PTvJ3row40Rb76+lJ\n"
1446 "wN1IBthgBgsgsOdB6XNc56sV+uq2TACsNNWw+JnFRCkCQgfF/KUrvN+WireWq88B\n"
1447 "9UPG+Hbans5A6K+y1a+bzfdYnKws7x8wNRyPxb7Vb2t9ZTl5PBorPLVGsjgf9N5X\n"
1448 "tCdBlfJsUdXot+EOxrIczV5zx0JIB1Y9hrDG07RYkzPuJKxkW7skqeLo8oWGVpaQ\n"
1449 "LGWvuebky1R75hcSuL3e4QHfjBHPdQ31fScB884tqkbhBAWr2nT9bYEmyT170bno\n"
1450 "8QkyOSb99xZBX55sLDHs9p61sTJr2C9Lz/KaWQs+3hTkpwSjSRyjEMH2n491qiQX\n"
1451 "G+kvLEnvtR8sl9zinorj/RfsxyPntAxudfY3qaYUu2QkLvVdfTVUVbxS/Fg8f7B3\n"
1452 "hEjCtpKgFjPxQuHE3didNOr5xM7mkmLN/QA7yHVgdpE64T5mFgC3JcVRpcR7zBPH\n"
1453 "3OeXHgjrhDfN8UIX/cq6gNgD8w7O0rhHa3mEXI1xP14ykPcJ7wlRuLm9P3fwx5A2\n"
1454 "jQrVKJKw1Nzummmspn4VOpJY3LkH4Sxo4e7Soo1l1cxJpzmERwgMF+vGz1L70+DG\n"
1455 "M0hVrz1PxlOsBBFgcdS4TB91DIs/RcFDqrJ4gOPNKCgBP+rgTXXLFcxUwJfE3lKg\n"
1456 "Kmpwdne6FuQYX3eyRVAmPgOHbJuRQCh/V4fYo51UxCcEKeKy6UgOPEJlXksWGbH5\n"
1457 "VFmlytYW6dFKJvjltSmK6L2r+TlyEQoXwTqe4bkfhB2LniDEq28hKQ==\n"
1458 "-----END RSA PRIVATE KEY-----\n";
1460 std::string pub = "-----BEGIN PUBLIC KEY-----\n"
1461 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
1462 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
1463 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
1464 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
1465 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
1466 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
1468 "-----END PUBLIC KEY-----\n";
1470 std::string message = "message test";
1472 CKM::Alias aliasPub = "pub1";
1473 CKM::Alias aliasPrv = "prv1";
1474 CKM::Password password = "1234";
1475 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
1476 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
1477 CKM::RawBuffer signature;
1479 auto keyPub = CKM::Key::create(CKM::RawBuffer(pub.begin(), pub.end()));
1480 auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()), password);
1482 RUNNER_ASSERT_MSG(NULL != keyPub.get(),
1483 "Key is empty. Failed to import public key.");
1484 RUNNER_ASSERT_MSG(NULL != keyPrv.get(),
1485 "Key is empty. Failed to import private key.");
1488 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPub, keyPub, CKM::Policy())),
1489 "Error=" << CKM::ErrorToString(temp));
1491 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
1492 "Error=" << CKM::ErrorToString(temp));
1495 CKM_API_SUCCESS == (temp = manager->createSignature(
1498 CKM::RawBuffer(message.begin(), message.end()),
1502 "Error=" << CKM::ErrorToString(temp));
1505 CKM_API_SUCCESS == (temp = manager->verifySignature(
1508 CKM::RawBuffer(message.begin(), message.end()),
1512 "Error=" << CKM::ErrorToString(temp));
1515 RUNNER_TEST(T1413_dsa_key_create_verify)
1518 auto manager = CKM::Manager::create();
1520 std::string prv = "-----BEGIN DSA PRIVATE KEY-----\n"
1521 "MIIBvAIBAAKBgQC3r3mg/xIXlvsLNWLlu+39+OPm65BM5gVXxWB6+7fo8Lup0Ht+\n"
1522 "NUqBEiRvjwoK64cu+ijQwn73osBKFrn1R5yOG2AVPwpczwN2pn+nOcrneOWUf2+j\n"
1523 "ogLnsOqIWNJkBp86noqPAWgrGWiehM4gkpZHSAyYrEnz4J5Vh6n+AMB1XQIVAOyN\n"
1524 "SUO7ARSfjdfcNzprvmjvBBtPAoGBAJXWoMvwnMYYeN3GbgGUMYCSwnKdY4OjXTzH\n"
1525 "ZGdk3Eoo72lcQbvoIxBjqjeTrNlelBe0v5P64x2JnF/bsYKY5At9ckzayshESABS\n"
1526 "GGbRtiuy1QVGauRYJuyPN0AVXISdjwO5gWroCRRITY24SjUYqeVB9/JXtWA2fyIg\n"
1527 "PrLxTqXqAoGAPT91aEgwFdulzmHlvr3k+GBCE9z+hq0c3FGUCtGbVOqg2KPqMBgw\n"
1528 "Sb4MC0msQys4DTVZhLJI+C5eIPEHgfBMqY1ZNJdOOSCQciDXnRfSqKbT6tjDTgR5\n"
1529 "jmh5bG1Q8QFeBTHCDsQHoQYWgx0nyu12lASN80rCYMYCBhubtrVaLmcCFQC0IB4m\n"
1530 "u1roOuaPY+Hl19BlTE2qdw==\n"
1531 "-----END DSA PRIVATE KEY-----";
1533 std::string pub = "-----BEGIN PUBLIC KEY-----\n"
1534 "MIIBtzCCASwGByqGSM44BAEwggEfAoGBALeveaD/EheW+ws1YuW77f344+brkEzm\n"
1535 "BVfFYHr7t+jwu6nQe341SoESJG+PCgrrhy76KNDCfveiwEoWufVHnI4bYBU/ClzP\n"
1536 "A3amf6c5yud45ZR/b6OiAuew6ohY0mQGnzqeio8BaCsZaJ6EziCSlkdIDJisSfPg\n"
1537 "nlWHqf4AwHVdAhUA7I1JQ7sBFJ+N19w3Omu+aO8EG08CgYEAldagy/Ccxhh43cZu\n"
1538 "AZQxgJLCcp1jg6NdPMdkZ2TcSijvaVxBu+gjEGOqN5Os2V6UF7S/k/rjHYmcX9ux\n"
1539 "gpjkC31yTNrKyERIAFIYZtG2K7LVBUZq5Fgm7I83QBVchJ2PA7mBaugJFEhNjbhK\n"
1540 "NRip5UH38le1YDZ/IiA+svFOpeoDgYQAAoGAPT91aEgwFdulzmHlvr3k+GBCE9z+\n"
1541 "hq0c3FGUCtGbVOqg2KPqMBgwSb4MC0msQys4DTVZhLJI+C5eIPEHgfBMqY1ZNJdO\n"
1542 "OSCQciDXnRfSqKbT6tjDTgR5jmh5bG1Q8QFeBTHCDsQHoQYWgx0nyu12lASN80rC\n"
1543 "YMYCBhubtrVaLmc=\n"
1544 "-----END PUBLIC KEY-----";
1546 std::string message = "message test";
1548 CKM::Alias aliasPub = "pub2";
1549 CKM::Alias aliasPrv = "prv2";
1550 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
1551 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
1552 CKM::RawBuffer signature;
1554 auto keyPub = CKM::Key::create(CKM::RawBuffer(pub.begin(), pub.end()));
1555 auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()), CKM::Password());
1557 RUNNER_ASSERT_MSG(NULL != keyPub.get(),
1558 "Key is empty. Failed to import public key.");
1559 RUNNER_ASSERT_MSG(NULL != keyPrv.get(),
1560 "Key is empty. Failed to import private key.");
1563 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPub, keyPub, CKM::Policy())),
1564 "Error=" << CKM::ErrorToString(temp));
1566 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
1567 "Error=" << CKM::ErrorToString(temp));
1570 CKM_API_SUCCESS == (temp = manager->createSignature(
1573 CKM::RawBuffer(message.begin(), message.end()),
1577 "Error=" << CKM::ErrorToString(temp));
1580 CKM_API_SUCCESS == (temp = manager->verifySignature(
1583 CKM::RawBuffer(message.begin(), message.end()),
1587 "Error=" << CKM::ErrorToString(temp));
1591 RUNNER_TEST(T1414_ec_key_create_verify)
1594 auto manager = CKM::Manager::create();
1596 std::string prv = "-----BEGIN EC PRIVATE KEY-----\n"
1597 "MHQCAQEEIJNud6U4h8EM1rASn4W5vQOJELTaVPQTUiESaBULvQUVoAcGBSuBBAAK\n"
1598 "oUQDQgAEL1R+hgjiFrdjbUKRNOxUG8ze9nveD9zT05YHeT7vK0w08AUL1HCH5nFV\n"
1599 "ljePBYSxe6CybFiseayaxRxjA+iF1g==\n"
1600 "-----END EC PRIVATE KEY-----\n";
1602 std::string pub = "-----BEGIN PUBLIC KEY-----\n"
1603 "MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEL1R+hgjiFrdjbUKRNOxUG8ze9nveD9zT\n"
1604 "05YHeT7vK0w08AUL1HCH5nFVljePBYSxe6CybFiseayaxRxjA+iF1g==\n"
1605 "-----END PUBLIC KEY-----\n";
1607 std::string message = "message test";
1609 CKM::Alias aliasPub = "ecpub2";
1610 CKM::Alias aliasPrv = "ecprv2";
1611 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
1612 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
1613 CKM::RawBuffer signature;
1615 auto keyPub = CKM::Key::create(CKM::RawBuffer(pub.begin(), pub.end()));
1616 auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()));
1618 RUNNER_ASSERT_MSG(NULL != keyPub.get(),
1619 "Key is empty. Failed to import public key.");
1620 RUNNER_ASSERT_MSG(NULL != keyPrv.get(),
1621 "Key is empty. Failed to import private key.");
1624 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPub, keyPub, CKM::Policy())),
1625 "Error=" << CKM::ErrorToString(temp));
1627 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
1628 "Error=" << CKM::ErrorToString(temp));
1631 CKM_API_SUCCESS == (temp = manager->createSignature(
1634 CKM::RawBuffer(message.begin(), message.end()),
1638 "Error=" << CKM::ErrorToString(temp));
1641 CKM_API_SUCCESS == (temp = manager->verifySignature(
1644 CKM::RawBuffer(message.begin(), message.end()),
1648 "Error=" << CKM::ErrorToString(temp));
1650 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
1652 memcpy((void*)signature.data(), "BROKEN", 6);
1655 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
1658 CKM::RawBuffer(message.begin(), message.end()),
1662 "Error=" << CKM::ErrorToString(temp));
1665 RUNNER_TEST(T1415_rsa_key_create_verify_negative)
1668 auto manager = CKM::Manager::create();
1669 std::string message = "message asdfaslkdfjlksadjf test";
1671 CKM::Alias aliasPub = "pub1";
1672 CKM::Alias aliasPrv = "prv1";
1674 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
1675 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
1676 CKM::RawBuffer signature;
1679 CKM_API_SUCCESS == (temp = manager->createSignature(
1682 CKM::RawBuffer(message.begin(), message.end()),
1686 "Error=" << CKM::ErrorToString(temp));
1689 CKM_API_SUCCESS == (temp = manager->verifySignature(
1692 CKM::RawBuffer(message.begin(), message.end()),
1696 "Error=" << CKM::ErrorToString(temp));
1698 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
1699 memcpy((void*)signature.data(), "BROKEN", 6);
1702 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
1705 CKM::RawBuffer(message.begin(), message.end()),
1709 "Error=" << CKM::ErrorToString(temp));
1712 RUNNER_TEST(T1416_dsa_key_create_verify_negative)
1715 auto manager = CKM::Manager::create();
1716 std::string message = "message asdfaslkdfjlksadjf test";
1718 CKM::Alias aliasPub = "pub2";
1719 CKM::Alias aliasPrv = "prv2";
1721 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
1722 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
1723 CKM::RawBuffer signature;
1726 CKM_API_SUCCESS == (temp = manager->createSignature(
1729 CKM::RawBuffer(message.begin(), message.end()),
1733 "Error=" << CKM::ErrorToString(temp));
1736 CKM_API_SUCCESS == (temp = manager->verifySignature(
1739 CKM::RawBuffer(message.begin(), message.end()),
1743 "Error=" << CKM::ErrorToString(temp));
1745 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
1746 memcpy((void*)signature.data(), "BROKEN", 6);
1749 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
1752 CKM::RawBuffer(message.begin(), message.end()),
1756 "Error=" << CKM::ErrorToString(temp));
1759 RUNNER_TEST(T1417_rsa_cert_create_verify_signature)
1762 auto manager = CKM::Manager::create();
1765 "-----BEGIN RSA PRIVATE KEY-----\n"
1766 "MIICXQIBAAKBgQDCKb9BkTdOjCTXKPi/H5FSGuyrgzORBtR3nCTg7SRnL47zNGEj\n"
1767 "l2wkgsY9ZO3UJHm0gy5KMjWeCuUVkSD3G46J9obg1bYJivCQBJKxfieA8sWOtNq1\n"
1768 "M8emHGK8o3sjaRklrngmk2xSCs5vFJVlCluzAYUmrPDm64C3+n4yW4pBCQIDAQAB\n"
1769 "AoGAd1IWgiHO3kuLvFome7XXpaB8P27SutZ6rcLcewnhLDRy4g0XgTrmL43abBJh\n"
1770 "gdSkooVXZity/dvuKpHUs2dQ8W8zYiFFsHfu9qqLmLP6SuBPyUCvlUDH5BGfjjxI\n"
1771 "5qGWIowj/qGHKpbQ7uB+Oe2BHwbHao0zFZIkfKqY0mX9U00CQQDwF/4zQcGS1RX/\n"
1772 "229gowTsvSGVmm8cy1jGst6xkueEuOEZ/AVPO1fjavz+nTziUk4E5lZHAj18L6Hl\n"
1773 "iO29LRujAkEAzwbEWVhfTJewCZIFf3sY3ifXhGZhVKDHVzPBNyoft8Z+09DMHTJb\n"
1774 "EYg85MIbR73aUyIWsEci/CPk6LPRNv47YwJAHtQF2NEFqPPhakPjzjXAaSFz0YDN\n"
1775 "6ZWWpZTMEWL6hUkz5iE9EUpeY54WNB8+dRT6XZix1VZNTMfU8uMdG6BSHwJBAKYM\n"
1776 "gm47AGz5eVujwD8op6CACk+KomRzdI+P1lh9s+T+E3mnDiAY5IxiXp0Ix0K6lyN4\n"
1777 "wwPuerQLwi2XFKZsMYsCQQDOiSQFP9PfXh9kFzN6e89LxOdnqC/r9i5GDB3ea8eL\n"
1778 "SCRprpzqOXZvOP1HBAEjsJ6k4f8Dqj1fm+y8ZcgAZUPr\n"
1779 "-----END RSA PRIVATE KEY-----\n";
1782 "-----BEGIN CERTIFICATE-----\n"
1783 "MIICijCCAfOgAwIBAgIJAMvaNHQ1ozT8MA0GCSqGSIb3DQEBBQUAMF4xCzAJBgNV\n"
1784 "BAYTAlBMMQ0wCwYDVQQIDARMb2R6MQ0wCwYDVQQHDARMb2R6MRAwDgYDVQQKDAdT\n"
1785 "YW1zdW5nMREwDwYDVQQLDAhTZWN1cml0eTEMMAoGA1UEAwwDQ0tNMB4XDTE0MDcw\n"
1786 "MjEyNDE0N1oXDTE3MDcwMTEyNDE0N1owXjELMAkGA1UEBhMCUEwxDTALBgNVBAgM\n"
1787 "BExvZHoxDTALBgNVBAcMBExvZHoxEDAOBgNVBAoMB1NhbXN1bmcxETAPBgNVBAsM\n"
1788 "CFNlY3VyaXR5MQwwCgYDVQQDDANDS00wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ\n"
1789 "AoGBAMIpv0GRN06MJNco+L8fkVIa7KuDM5EG1HecJODtJGcvjvM0YSOXbCSCxj1k\n"
1790 "7dQkebSDLkoyNZ4K5RWRIPcbjon2huDVtgmK8JAEkrF+J4DyxY602rUzx6YcYryj\n"
1791 "eyNpGSWueCaTbFIKzm8UlWUKW7MBhSas8ObrgLf6fjJbikEJAgMBAAGjUDBOMB0G\n"
1792 "A1UdDgQWBBQuW9DuITahZJ6saVZZI0aBlis5vzAfBgNVHSMEGDAWgBQuW9DuITah\n"
1793 "ZJ6saVZZI0aBlis5vzAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBAB2X\n"
1794 "GNtJopBJR3dCpzDONknr/c6qcsPVa3nH4c7qzy6F+4bgqa5IObnoF8zUrvD2sMAO\n"
1795 "km3C/N+Qzt8Rb7ORM6U4tlPp1kZ5t6PKjghhNaiYwVm9A/Zm+wyAmRIkQiYDr4MX\n"
1796 "e+bRAkPmJeEWpaav1lvvBnFzGSGJrnSSeWUegGyn\n"
1797 "-----END CERTIFICATE-----\n";
1799 std::string message = "message test";
1801 CKM::Alias aliasPub = "pub1-cert";
1802 CKM::Alias aliasPrv = "prv1-cert";
1803 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
1804 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
1805 CKM::RawBuffer signature;
1807 auto cert = CKM::Certificate::create(CKM::RawBuffer(pub.begin(), pub.end()), CKM::DataFormat::FORM_PEM);
1808 auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()));
1810 RUNNER_ASSERT_MSG(NULL != cert.get(),
1811 "Key is empty. Failed to import public key.");
1812 RUNNER_ASSERT_MSG(NULL != keyPrv.get(),
1813 "Key is empty. Failed to import private key.");
1816 CKM_API_SUCCESS == (temp = manager->saveCertificate(aliasPub, cert, CKM::Policy())),
1817 "Error=" << CKM::ErrorToString(temp));
1819 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
1820 "Error=" << CKM::ErrorToString(temp));
1823 CKM_API_SUCCESS == (temp = manager->createSignature(
1826 CKM::RawBuffer(message.begin(), message.end()),
1830 "Error=" << CKM::ErrorToString(temp));
1833 CKM_API_SUCCESS == (temp = manager->verifySignature(
1836 CKM::RawBuffer(message.begin(), message.end()),
1840 "Error=" << CKM::ErrorToString(temp));
1842 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
1844 memcpy((void*)signature.data(), "BROKEN", 6);
1847 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
1850 CKM::RawBuffer(message.begin(), message.end()),
1854 "Error=" << CKM::ErrorToString(temp));
1857 RUNNER_TEST(T1418_dsa_cert_create_verify_signature)
1860 auto manager = CKM::Manager::create();
1862 const std::string pub = "-----BEGIN CERTIFICATE-----\n"
1863 "MIIDUzCCAxECCQCer/fKcXtJgTALBglghkgBZQMEAwIwgYsxCzAJBgNVBAYTAlBM\n"
1864 "MQ8wDQYDVQQIDAZQb2xhbmQxDzANBgNVBAcMBldhcnNhdzEQMA4GA1UECgwHU2Ft\n"
1865 "c3VuZzEMMAoGA1UECwwDS1NGMRMwEQYDVQQDDAptLmthcnBpdWsyMSUwIwYJKoZI\n"
1866 "hvcNAQkBFhZtLmthcnBpdWsyQHNhbXN1bmcuY29tMCAXDTE0MDkyNjEzNTQwN1oY\n"
1867 "DzIxNDAwOTA1MTM1NDA3WjCBizELMAkGA1UEBhMCUEwxDzANBgNVBAgMBlBvbGFu\n"
1868 "ZDEPMA0GA1UEBwwGV2Fyc2F3MRAwDgYDVQQKDAdTYW1zdW5nMQwwCgYDVQQLDANL\n"
1869 "U0YxEzARBgNVBAMMCm0ua2FycGl1azIxJTAjBgkqhkiG9w0BCQEWFm0ua2FycGl1\n"
1870 "azJAc2Ftc3VuZy5jb20wggG3MIIBKwYHKoZIzjgEATCCAR4CgYEA9Bhh7ZA4onkY\n"
1871 "uDNQbYR4EwkJ6RpD505hB0GF6yppUNp2LanvNcQXcyXY88MB6OdP7Rikbu1H2zP4\n"
1872 "gONCtdxKW58Za7h9bFzYjxcObZsS52F9DP7sv3C4sX4xNWApfhUgbfzKaRCJOkOs\n"
1873 "06tV7teu3G/v26PdI8dlykIuQXQZmH8CFQCHsIV0njb2yC3ggfKz+exH+g5jAQKB\n"
1874 "gBVLYfVCMjUz5XJH+xYU3A8W8rpSLqZKIK2d9mbXqhpz8QK1bvNQUlSRZo+o1ZYV\n"
1875 "mJn3Mx2YuiifHZNKdBNweCqe5a+HV2RSl1Yv/TV9famZKlogGslsmPHUOJMlSIdh\n"
1876 "MfMwVny4/rNtjEtEFE1WnaTr1W6MKH1EBbizVo8fmWFrA4GFAAKBgQCaPjrlkAyX\n"
1877 "kBitWo+w0xZN4OSk13SsCzZ/PG+5zOgMRaFm2XbiC04YsGCi4NFOd9kaiP7w1CsP\n"
1878 "iqG6Vwv0T/VcoxBl/hp6jEqTDSrM6z0ungjDO9wGOdI+jZS0UjVahgC4ZLDHhrOa\n"
1879 "CjfxcHruO3e416b/Rm2CjhOzjKdoSFUWVzALBglghkgBZQMEAwIDLwAwLAIUHa+A\n"
1880 "5xo8O/tPuH9gXkr1mee6kRYCFGNycJ1xkc3nIJaEQOtGfDe7S71A\n"
1881 "-----END CERTIFICATE-----\n";
1883 const std::string prv = "-----BEGIN DSA PRIVATE KEY-----\n"
1884 "MIIBuwIBAAKBgQD0GGHtkDiieRi4M1BthHgTCQnpGkPnTmEHQYXrKmlQ2nYtqe81\n"
1885 "xBdzJdjzwwHo50/tGKRu7UfbM/iA40K13EpbnxlruH1sXNiPFw5tmxLnYX0M/uy/\n"
1886 "cLixfjE1YCl+FSBt/MppEIk6Q6zTq1Xu167cb+/bo90jx2XKQi5BdBmYfwIVAIew\n"
1887 "hXSeNvbILeCB8rP57Ef6DmMBAoGAFUth9UIyNTPlckf7FhTcDxbyulIupkogrZ32\n"
1888 "ZteqGnPxArVu81BSVJFmj6jVlhWYmfczHZi6KJ8dk0p0E3B4Kp7lr4dXZFKXVi/9\n"
1889 "NX19qZkqWiAayWyY8dQ4kyVIh2Ex8zBWfLj+s22MS0QUTVadpOvVbowofUQFuLNW\n"
1890 "jx+ZYWsCgYEAmj465ZAMl5AYrVqPsNMWTeDkpNd0rAs2fzxvuczoDEWhZtl24gtO\n"
1891 "GLBgouDRTnfZGoj+8NQrD4qhulcL9E/1XKMQZf4aeoxKkw0qzOs9Lp4IwzvcBjnS\n"
1892 "Po2UtFI1WoYAuGSwx4azmgo38XB67jt3uNem/0Ztgo4Ts4ynaEhVFlcCFGMH+Z9l\n"
1893 "vonbjii3BYe4AIdkzOvp\n"
1894 "-----END DSA PRIVATE KEY-----\n";
1896 std::string message = "message test";
1898 CKM::Alias aliasPub = "pub2-cert";
1899 CKM::Alias aliasPrv = "prv2-cert";
1900 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
1901 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
1902 CKM::RawBuffer signature;
1904 auto cert = CKM::Certificate::create(CKM::RawBuffer(pub.begin(), pub.end()), CKM::DataFormat::FORM_PEM);
1905 auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()));
1907 RUNNER_ASSERT_MSG(NULL != cert.get(),
1908 "Key is empty. Failed to import public key.");
1909 RUNNER_ASSERT_MSG(NULL != keyPrv.get(),
1910 "Key is empty. Failed to import private key.");
1913 CKM_API_SUCCESS == (temp = manager->saveCertificate(aliasPub, cert, CKM::Policy())),
1914 "Error=" << CKM::ErrorToString(temp));
1916 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
1917 "Error=" << CKM::ErrorToString(temp));
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");
1941 memcpy((void*)signature.data(), "BROKEN", 6);
1944 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
1947 CKM::RawBuffer(message.begin(), message.end()),
1951 "Error=" << CKM::ErrorToString(temp));
1954 RUNNER_TEST(T1419_ecdsa_cert_create_verify_signature)
1957 auto manager = CKM::Manager::create();
1960 "-----BEGIN EC PRIVATE KEY-----\n"
1961 "MIH8AgEBBBRPb/2utS5aCtyuwmzIHpU6LH3mc6CBsjCBrwIBATAgBgcqhkjOPQEB\n"
1962 "AhUA/////////////////////3////8wQwQU/////////////////////3////wE\n"
1963 "FByXvvxUvXqLZaz4n4HU1K3FZfpFAxUAEFPN5CwU1pbmdodWFRdTO/P4M0UEKQRK\n"
1964 "lrVojvVzKEZkaYlow4u5E8v8giOmKFUxaJR9WdzJEgQjUTd6xfsyAhUBAAAAAAAA\n"
1965 "AAAAAfTI+Seu08p1IlcCAQGhLAMqAATehLqu61gKC3Tgr4wQMVoguAhhG3Uwwz8u\n"
1966 "ELyhe7yPCAuOoLZlTLgf\n"
1967 "-----END EC PRIVATE KEY-----\n";
1970 "-----BEGIN CERTIFICATE-----\n"
1971 "MIICfDCCAjqgAwIBAgIJANIytpeTKlXBMAkGByqGSM49BAEwXjELMAkGA1UEBhMC\n"
1972 "UEwxDTALBgNVBAgMBExvZHoxDTALBgNVBAcMBExvZHoxEDAOBgNVBAoMB1NhbXN1\n"
1973 "bmcxETAPBgNVBAsMCFNlY3VyaXR5MQwwCgYDVQQDDANDS00wHhcNMTQwNzAyMTI0\n"
1974 "MTQ3WhcNMTcwNzAxMTI0MTQ3WjBeMQswCQYDVQQGEwJQTDENMAsGA1UECAwETG9k\n"
1975 "ejENMAsGA1UEBwwETG9kejEQMA4GA1UECgwHU2Ftc3VuZzERMA8GA1UECwwIU2Vj\n"
1976 "dXJpdHkxDDAKBgNVBAMMA0NLTTCB6jCBuwYHKoZIzj0CATCBrwIBATAgBgcqhkjO\n"
1977 "PQEBAhUA/////////////////////3////8wQwQU/////////////////////3//\n"
1978 "//wEFByXvvxUvXqLZaz4n4HU1K3FZfpFAxUAEFPN5CwU1pbmdodWFRdTO/P4M0UE\n"
1979 "KQRKlrVojvVzKEZkaYlow4u5E8v8giOmKFUxaJR9WdzJEgQjUTd6xfsyAhUBAAAA\n"
1980 "AAAAAAAAAfTI+Seu08p1IlcCAQEDKgAE3oS6rutYCgt04K+MEDFaILgIYRt1MMM/\n"
1981 "LhC8oXu8jwgLjqC2ZUy4H6NQME4wHQYDVR0OBBYEFELElWx3kbLo55Cfn1vywsEZ\n"
1982 "ccsmMB8GA1UdIwQYMBaAFELElWx3kbLo55Cfn1vywsEZccsmMAwGA1UdEwQFMAMB\n"
1983 "Af8wCQYHKoZIzj0EAQMxADAuAhUAumC4mGoyK97SxTvVBQ+ELfCbxEECFQCbMJ72\n"
1984 "Q1oBry6NEc+lLFmWMDesAA==\n"
1985 "-----END CERTIFICATE-----\n";
1987 std::string message = "message test";
1989 CKM::Alias aliasPub = "pub3";
1990 CKM::Alias aliasPrv = "prv3";
1991 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
1992 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
1993 CKM::RawBuffer signature;
1995 auto cert = CKM::Certificate::create(CKM::RawBuffer(pub.begin(), pub.end()), CKM::DataFormat::FORM_PEM);
1996 auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()));
1998 RUNNER_ASSERT_MSG(NULL != cert.get(),
1999 "Key is empty. Failed to import public key.");
2000 RUNNER_ASSERT_MSG(NULL != keyPrv.get(),
2001 "Key is empty. Failed to import private key.");
2004 CKM_API_SUCCESS == (temp = manager->saveCertificate(aliasPub, cert, CKM::Policy())),
2005 "Error=" << CKM::ErrorToString(temp));
2007 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
2008 "Error=" << CKM::ErrorToString(temp));
2011 CKM_API_SUCCESS == (temp = manager->createSignature(
2014 CKM::RawBuffer(message.begin(), message.end()),
2018 "Error=" << CKM::ErrorToString(temp));
2021 CKM_API_SUCCESS == (temp = manager->verifySignature(
2024 CKM::RawBuffer(message.begin(), message.end()),
2028 "Error=" << CKM::ErrorToString(temp));
2030 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
2032 memcpy((void*)signature.data(), "BROKEN", 6);
2035 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
2038 CKM::RawBuffer(message.begin(), message.end()),
2042 "Error=" << CKM::ErrorToString(temp));
2045 RUNNER_TEST(T1420_deinit)
2048 auto control = CKM::Control::create();
2051 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
2052 "Error=" << CKM::ErrorToString(temp));
2054 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
2055 "Error=" << CKM::ErrorToString(temp));
2058 RUNNER_TEST(T14180_init)
2061 auto control = CKM::Control::create();
2063 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "test-pass")),
2064 "Error=" << CKM::ErrorToString(temp));
2066 auto manager = CKM::Manager::create();
2068 // Prepare RSA Key Pair
2069 std::string prv = "-----BEGIN RSA PRIVATE KEY-----\n"
2070 "Proc-Type: 4,ENCRYPTED\n"
2071 "DEK-Info: DES-EDE3-CBC,6C6507B11671DABC\n"
2073 "YiKNviNqc/V/i241CKtAVsNckesE0kcaka3VrY7ApXR+Va93YoEwVQ8gB9cE/eHH\n"
2074 "S0j3ZS1PAVFM/qo4ZnPdMzaSLvTQw0GAL90wWgF3XQ+feMnWyBObEoQdGXE828TB\n"
2075 "SLz4UOIQ55Dx6JSWTfEhwAlPs2cEWD14xvuxPzAEzBIYmWmBBsCN94YgFeRTzjH0\n"
2076 "TImoYVMN60GgOfZWw6rXq9RaV5dY0Y6F1piypCLGD35VaXAutdHIDvwUGECPm7SN\n"
2077 "w05jRro53E1vb4mYlZEY/bs4q7XEOI5+ZKT76Xn0oEJNX1KRL1h2q8fgUkm5j40M\n"
2078 "uQj71aLR9KyIoQARwGLeRy09tLVjH3fj66CCMqaPcxcIRIyWi5yYBB0s53ipm6A9\n"
2079 "CYuyc7MS2C0pOdWKsDvYsHR/36KUiIdPuhF4AbaTqqO0eWeuP7Na7dGK56Fl+ooi\n"
2080 "cUpJr7cIqMl2vL25B0jW7d4TB3zwCEkVVD1fBPeNoZWo30z4bILcBqjjPkQfHZ2e\n"
2081 "xNraG3qI4FHjoPT8JEE8p+PgwaMoINlICyIMKiCdvwz9yEnsHPy7FkmatpS+jFoS\n"
2082 "mg8R9vMwgK/HGEm0dmb/7/a0XsG2jCDm6cOmJdZJFQ8JW7hFs3eOHpNlQYDChG2D\n"
2083 "A1ExslqBtbpicywTZhzFdYU/hxeCr4UqcY27Zmhr4JlBPMyvadWKeOqCamWepjbT\n"
2084 "T/MhWJbmWgZbI5s5sbpu7cOYubQcUIEsTaQXGx/KEzGo1HLn9tzSeQfP/nqjAD/L\n"
2085 "T5t1Mb8o4LuV/fGIT33Q3i2FospJMqp2JINNzG18I6Fjo08PTvJ3row40Rb76+lJ\n"
2086 "wN1IBthgBgsgsOdB6XNc56sV+uq2TACsNNWw+JnFRCkCQgfF/KUrvN+WireWq88B\n"
2087 "9UPG+Hbans5A6K+y1a+bzfdYnKws7x8wNRyPxb7Vb2t9ZTl5PBorPLVGsjgf9N5X\n"
2088 "tCdBlfJsUdXot+EOxrIczV5zx0JIB1Y9hrDG07RYkzPuJKxkW7skqeLo8oWGVpaQ\n"
2089 "LGWvuebky1R75hcSuL3e4QHfjBHPdQ31fScB884tqkbhBAWr2nT9bYEmyT170bno\n"
2090 "8QkyOSb99xZBX55sLDHs9p61sTJr2C9Lz/KaWQs+3hTkpwSjSRyjEMH2n491qiQX\n"
2091 "G+kvLEnvtR8sl9zinorj/RfsxyPntAxudfY3qaYUu2QkLvVdfTVUVbxS/Fg8f7B3\n"
2092 "hEjCtpKgFjPxQuHE3didNOr5xM7mkmLN/QA7yHVgdpE64T5mFgC3JcVRpcR7zBPH\n"
2093 "3OeXHgjrhDfN8UIX/cq6gNgD8w7O0rhHa3mEXI1xP14ykPcJ7wlRuLm9P3fwx5A2\n"
2094 "jQrVKJKw1Nzummmspn4VOpJY3LkH4Sxo4e7Soo1l1cxJpzmERwgMF+vGz1L70+DG\n"
2095 "M0hVrz1PxlOsBBFgcdS4TB91DIs/RcFDqrJ4gOPNKCgBP+rgTXXLFcxUwJfE3lKg\n"
2096 "Kmpwdne6FuQYX3eyRVAmPgOHbJuRQCh/V4fYo51UxCcEKeKy6UgOPEJlXksWGbH5\n"
2097 "VFmlytYW6dFKJvjltSmK6L2r+TlyEQoXwTqe4bkfhB2LniDEq28hKQ==\n"
2098 "-----END RSA PRIVATE KEY-----\n";
2100 std::string pub = "-----BEGIN PUBLIC KEY-----\n"
2101 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
2102 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
2103 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
2104 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
2105 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
2106 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
2108 "-----END PUBLIC KEY-----\n";
2110 CKM::Alias aliasPub = "pub_nohash1";
2111 CKM::Alias aliasPrv = "prv_nohash1";
2112 CKM::Password password = "1234";
2114 auto keyPub = CKM::Key::create(CKM::RawBuffer(pub.begin(), pub.end()));
2115 auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()), password);
2117 RUNNER_ASSERT_MSG(NULL != keyPub.get(),
2118 "Key is empty. Failed to import public key.");
2119 RUNNER_ASSERT_MSG(NULL != keyPrv.get(),
2120 "Key is empty. Failed to import private key.");
2123 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPub, keyPub, CKM::Policy())),
2124 "Error=" << CKM::ErrorToString(temp));
2126 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
2127 "Error=" << CKM::ErrorToString(temp));
2129 // Prepare ECDSA Key Pair
2130 std::string ecprv = "-----BEGIN EC PRIVATE KEY-----\n"
2131 "MHQCAQEEIJNud6U4h8EM1rASn4W5vQOJELTaVPQTUiESaBULvQUVoAcGBSuBBAAK\n"
2132 "oUQDQgAEL1R+hgjiFrdjbUKRNOxUG8ze9nveD9zT05YHeT7vK0w08AUL1HCH5nFV\n"
2133 "ljePBYSxe6CybFiseayaxRxjA+iF1g==\n"
2134 "-----END EC PRIVATE KEY-----\n";
2136 std::string ecpub = "-----BEGIN PUBLIC KEY-----\n"
2137 "MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEL1R+hgjiFrdjbUKRNOxUG8ze9nveD9zT\n"
2138 "05YHeT7vK0w08AUL1HCH5nFVljePBYSxe6CybFiseayaxRxjA+iF1g==\n"
2139 "-----END PUBLIC KEY-----\n";
2141 CKM::Alias aliasEcPub = "ecpub_nohash1";
2142 CKM::Alias aliasEcPrv = "ecprv_nohash1";
2144 auto ecKeyPub = CKM::Key::create(CKM::RawBuffer(ecpub.begin(), ecpub.end()));
2145 auto ecKeyPrv = CKM::Key::create(CKM::RawBuffer(ecprv.begin(), ecprv.end()));
2147 RUNNER_ASSERT_MSG(NULL != ecKeyPub.get(),
2148 "Key is empty. Failed to import public key.");
2149 RUNNER_ASSERT_MSG(NULL != ecKeyPrv.get(),
2150 "Key is empty. Failed to import private key.");
2153 CKM_API_SUCCESS == (temp = manager->saveKey(aliasEcPub, ecKeyPub, CKM::Policy())),
2154 "Error=" << CKM::ErrorToString(temp));
2156 CKM_API_SUCCESS == (temp = manager->saveKey(aliasEcPrv, ecKeyPrv, CKM::Policy())),
2157 "Error=" << CKM::ErrorToString(temp));
2161 RUNNER_TEST(T14181_rsa_create_signatue_nohash)
2164 auto manager = CKM::Manager::create();
2165 std::string message = "message asdfaslkdfjlksadjf test";
2167 CKM::Alias aliasPub = "pub_nohash1";
2168 CKM::Alias aliasPrv = "prv_nohash1";
2170 CKM::HashAlgorithm hash = CKM::HashAlgorithm::NONE;
2171 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
2172 CKM::RawBuffer signature;
2175 CKM_API_SUCCESS == (temp = manager->createSignature(
2178 CKM::RawBuffer(message.begin(), message.end()),
2182 "Error=" << CKM::ErrorToString(temp));
2185 CKM_API_SUCCESS == (temp = manager->verifySignature(
2188 CKM::RawBuffer(message.begin(), message.end()),
2192 "Error=" << CKM::ErrorToString(temp));
2194 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
2195 memcpy((void*)signature.data(), "BROKEN", 6);
2198 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
2201 CKM::RawBuffer(message.begin(), message.end()),
2205 "Error=" << CKM::ErrorToString(temp));
2208 RUNNER_TEST(T14182_rsa_create_signatue_nohash_nopad)
2211 auto manager = CKM::Manager::create();
2212 std::string message = "message asdfaslkdfjlksadjf test";
2214 CKM::Alias aliasPub = "pub_nohash1";
2215 CKM::Alias aliasPrv = "prv_nohash1";
2217 CKM::HashAlgorithm hash = CKM::HashAlgorithm::NONE;
2218 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::NONE;
2219 CKM::RawBuffer signature;
2222 CKM_API_ERROR_INPUT_PARAM == (temp = manager->createSignature(
2225 CKM::RawBuffer(message.begin(), message.end()),
2229 "Error=" << CKM::ErrorToString(temp));
2232 RUNNER_TEST(T14183_rsa_create_signatue_nohash_bigmsg)
2235 auto manager = CKM::Manager::create();
2236 std::string message = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2237 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2238 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2239 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2240 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2241 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2242 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2243 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2244 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2245 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2246 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2247 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2248 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2249 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2250 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2251 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2252 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2253 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2254 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2255 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
2257 CKM::Alias aliasPub = "pub_nohash1";
2258 CKM::Alias aliasPrv = "prv_nohash1";
2260 CKM::HashAlgorithm hash = CKM::HashAlgorithm::NONE;
2261 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
2262 CKM::RawBuffer signature;
2265 CKM_API_ERROR_INPUT_PARAM == (temp = manager->createSignature(
2268 CKM::RawBuffer(message.begin(), message.end()),
2272 "Error=" << CKM::ErrorToString(temp));
2276 RUNNER_TEST(T14184_ec_create_signatue_nohash)
2279 auto manager = CKM::Manager::create();
2281 std::string message = "message test";
2283 CKM::Alias aliasPub = "ecpub_nohash1";
2284 CKM::Alias aliasPrv = "ecprv_nohash1";
2285 CKM::HashAlgorithm hash = CKM::HashAlgorithm::NONE;
2286 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
2287 CKM::RawBuffer signature;
2290 CKM_API_SUCCESS == (temp = manager->createSignature(
2293 CKM::RawBuffer(message.begin(), message.end()),
2297 "Error=" << CKM::ErrorToString(temp));
2300 CKM_API_SUCCESS == (temp = manager->verifySignature(
2303 CKM::RawBuffer(message.begin(), message.end()),
2307 "Error=" << CKM::ErrorToString(temp));
2309 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
2311 memcpy((void*)signature.data(), "BROKEN", 6);
2314 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
2317 CKM::RawBuffer(message.begin(), message.end()),
2321 "Error=" << CKM::ErrorToString(temp));
2324 RUNNER_TEST(T14185_ec_create_signatue_nohash_bigmsg)
2327 auto manager = CKM::Manager::create();
2329 int msgSize = 1024*1024;
2330 char big_msg[msgSize];
2331 for(int i =0; i<msgSize-1; i++) {
2334 big_msg[msgSize-1]=0x00;
2335 std::string message(big_msg);
2337 CKM::Alias aliasPub = "ecpub_nohash1";
2338 CKM::Alias aliasPrv = "ecprv_nohash1";
2339 CKM::HashAlgorithm hash = CKM::HashAlgorithm::NONE;
2340 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::NONE;
2341 CKM::RawBuffer signature;
2344 CKM_API_SUCCESS == (temp = manager->createSignature(
2347 CKM::RawBuffer(message.begin(), message.end()),
2351 "Error=" << CKM::ErrorToString(temp));
2355 RUNNER_TEST(T14189_deinit)
2358 auto control = CKM::Control::create();
2361 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
2362 "Error=" << CKM::ErrorToString(temp));
2364 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
2365 "Error=" << CKM::ErrorToString(temp));
2369 RUNNER_TEST_GROUP_INIT(T151_CKM_STORAGE_PERNAMENT_TESTS);
2371 RUNNER_CHILD_TEST(T1510_init_unlock_key)
2374 AccessProvider ap("my-label");
2375 ap.allowAPI("key-manager::api-control", "rw");
2376 ap.applyAndSwithToUser(USER_TEST, GROUP_APP);
2378 auto control = CKM::Control::create();
2380 CKM_API_SUCCESS == (tmp = control->unlockUserKey(USER_TEST, "strong-password")),
2381 "Error=" << CKM::ErrorToString(tmp));
2384 RUNNER_CHILD_TEST(T1511_init_insert_data)
2386 AccessProvider ap("my-label");
2387 ap.allowAPI("key-manager::api-storage", "rw");
2388 ap.applyAndSwithToUser(USER_TEST, GROUP_APP);
2390 std::string ee = "-----BEGIN CERTIFICATE-----\n"
2391 "MIIF0TCCBLmgAwIBAgIQaPGTP4aS7Ut/WDNaBzdQrDANBgkqhkiG9w0BAQUFADCB\n"
2392 "ujELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
2393 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n"
2394 "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMr\n"
2395 "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTAeFw0x\n"
2396 "NDAyMjAwMDAwMDBaFw0xNTAyMjAyMzU5NTlaMIHmMRMwEQYLKwYBBAGCNzwCAQMT\n"
2397 "AlBMMR0wGwYDVQQPExRQcml2YXRlIE9yZ2FuaXphdGlvbjETMBEGA1UEBRMKMDAw\n"
2398 "MDAyNTIzNzELMAkGA1UEBhMCUEwxDzANBgNVBBEUBjAwLTk1MDEUMBIGA1UECBML\n"
2399 "bWF6b3dpZWNraWUxETAPBgNVBAcUCFdhcnN6YXdhMRYwFAYDVQQJFA1TZW5hdG9y\n"
2400 "c2thIDE4MRMwEQYDVQQKFAptQmFuayBTLkEuMQwwCgYDVQQLFANESU4xGTAXBgNV\n"
2401 "BAMUEHd3dy5tYmFuay5jb20ucGwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n"
2402 "AoIBAQDph6x8V6xUW/+651+qHF+UmorH9uaz2ZrX2bIWiMKIJFmpDDHlxcapKkqE\n"
2403 "BV04is83aiCpqKtc2ZHy2g4Hpj1eSF5BP2+OAlo0YUQZPIeRRdiMjmeAxw/ncBDx\n"
2404 "9rQBuCJ4XTD6cqQox5SI0TASOZ+wyAEjbDRXzL73XqRAFZ1LOpb2ONkolS+RutMB\n"
2405 "vshvCsWPeNe7eGLuOh6DyC6r1vX9xhw3xnjM2mTSvmtimgzSLacNGKqRrsucUgcb\n"
2406 "0+O5C2jZAtAMLyZksL92cxmWbtVzUYzem4chjHu5cRxUlPNzUJWrrczueB7Ip4A8\n"
2407 "aQuFMfNXYc0x+WLWjy//urypMKjhAgMBAAGjggGjMIIBnzAbBgNVHREEFDASghB3\n"
2408 "d3cubWJhbmsuY29tLnBsMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgWgMB0GA1Ud\n"
2409 "JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBEBgNVHSAEPTA7MDkGC2CGSAGG+EUB\n"
2410 "BxcGMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9jcHMw\n"
2411 "HQYDVR0OBBYEFN37iGaS7mZnENxZ9FGqNLR+QgoMMB8GA1UdIwQYMBaAFPyKULqe\n"
2412 "uSVae1WFT5UAY4/pWGtDMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9FVlNlY3Vy\n"
2413 "ZS1jcmwudmVyaXNpZ24uY29tL0VWU2VjdXJlMjAwNi5jcmwwfAYIKwYBBQUHAQEE\n"
2414 "cDBuMC0GCCsGAQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC52ZXJpc2lnbi5j\n"
2415 "b20wPQYIKwYBBQUHMAKGMWh0dHA6Ly9FVlNlY3VyZS1haWEudmVyaXNpZ24uY29t\n"
2416 "L0VWU2VjdXJlMjAwNi5jZXIwDQYJKoZIhvcNAQEFBQADggEBAD0wO+rooUrIM4qp\n"
2417 "PHhp+hkXK6WMQ2qzGOmbMcZjw0govg5vkzkefPDryIXXbrF8mRagiJNMSfNaWWeh\n"
2418 "Cj41OV24EdUl0OLbFxNzcvub599zRs/apfaRLTfsmlmOgi0/YP305i+3tJ2ll946\n"
2419 "P+qV1wXnXqTqEdIl4Ys3+1HmDCdTB1hoDwAAzqRVUXZ5+iiwPAU7R/LTHfMjV1ke\n"
2420 "8jtNFfrorlZMCfVH/7eEnHJvVjOJt+YFe4aFMzE+DfuYIK7MH+olC2v79kBwbnEQ\n"
2421 "fvHMA9gFwOYLUBBdSfcocp8EKZ+mRlNPGR/3LBrPeaQQ0GZEkxzRK+v/aNTuiYfr\n"
2423 "-----END CERTIFICATE-----\n";
2426 "-----BEGIN CERTIFICATE-----\n"
2427 "MIIF5DCCBMygAwIBAgIQW3dZxheE4V7HJ8AylSkoazANBgkqhkiG9w0BAQUFADCB\n"
2428 "yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
2429 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\n"
2430 "U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\n"
2431 "ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\n"
2432 "aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMTYxMTA3MjM1OTU5WjCBujEL\n"
2433 "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\n"
2434 "ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg\n"
2435 "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMrVmVy\n"
2436 "aVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTCCASIwDQYJ\n"
2437 "KoZIhvcNAQEBBQADggEPADCCAQoCggEBAJjboFXrnP0XeeOabhQdsVuYI4cWbod2\n"
2438 "nLU4O7WgerQHYwkZ5iqISKnnnbYwWgiXDOyq5BZpcmIjmvt6VCiYxQwtt9citsj5\n"
2439 "OBfH3doxRpqUFI6e7nigtyLUSVSXTeV0W5K87Gws3+fBthsaVWtmCAN/Ra+aM/EQ\n"
2440 "wGyZSpIkMQht3QI+YXZ4eLbtfjeubPOJ4bfh3BXMt1afgKCxBX9ONxX/ty8ejwY4\n"
2441 "P1C3aSijtWZfNhpSSENmUt+ikk/TGGC+4+peGXEFv54cbGhyJW+ze3PJbb0S/5tB\n"
2442 "Ml706H7FC6NMZNFOvCYIZfsZl1h44TO/7Wg+sSdFb8Di7Jdp91zT91ECAwEAAaOC\n"
2443 "AdIwggHOMB0GA1UdDgQWBBT8ilC6nrklWntVhU+VAGOP6VhrQzASBgNVHRMBAf8E\n"
2444 "CDAGAQH/AgEAMD0GA1UdIAQ2MDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRw\n"
2445 "czovL3d3dy52ZXJpc2lnbi5jb20vY3BzMD0GA1UdHwQ2MDQwMqAwoC6GLGh0dHA6\n"
2446 "Ly9FVlNlY3VyZS1jcmwudmVyaXNpZ24uY29tL3BjYTMtZzUuY3JsMA4GA1UdDwEB\n"
2447 "/wQEAwIBBjARBglghkgBhvhCAQEEBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZ\n"
2448 "MFcwVRYJaW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7\n"
2449 "GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwKQYDVR0R\n"
2450 "BCIwIKQeMBwxGjAYBgNVBAMTEUNsYXNzM0NBMjA0OC0xLTQ3MD0GCCsGAQUFBwEB\n"
2451 "BDEwLzAtBggrBgEFBQcwAYYhaHR0cDovL0VWU2VjdXJlLW9jc3AudmVyaXNpZ24u\n"
2452 "Y29tMB8GA1UdIwQYMBaAFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqGSIb3DQEB\n"
2453 "BQUAA4IBAQCWovp/5j3t1CvOtxU/wHIDX4u6FpAl98KD2Md1NGNoElMMU4l7yVYJ\n"
2454 "p8M2RE4O0GJis4b66KGbNGeNUyIXPv2s7mcuQ+JdfzOE8qJwwG6Cl8A0/SXGI3/t\n"
2455 "5rDFV0OEst4t8dD2SB8UcVeyrDHhlyQjyRNddOVG7wl8nuGZMQoIeRuPcZ8XZsg4\n"
2456 "z+6Ml7YGuXNG5NOUweVgtSV1LdlpMezNlsOjdv3odESsErlNv1HoudRETifLriDR\n"
2457 "fip8tmNHnna6l9AW5wtsbfdDbzMLKTB3+p359U64drPNGLT5IO892+bKrZvQTtKH\n"
2458 "qQ2mRHNQ3XBb7a1+Srwi1agm5MKFIA3Z\n"
2459 "-----END CERTIFICATE-----\n";
2461 auto manager = CKM::Manager::create();
2462 auto certee = CKM::Certificate::create(CKM::RawBuffer(ee.begin(), ee.end()), CKM::DataFormat::FORM_PEM);
2463 auto certim = CKM::Certificate::create(CKM::RawBuffer(im.begin(), im.end()), CKM::DataFormat::FORM_PEM);
2465 int status1 = manager->saveCertificate(CKM::Alias("CertEE"), certee, CKM::Policy());
2466 int status2 = manager->saveCertificate(CKM::Alias("CertIM"), certim, CKM::Policy());
2469 CKM_API_ERROR_DB_ALIAS_EXISTS == status1,
2470 "Certificate should be in database already. Error=" << CKM::ErrorToString(status1));
2473 CKM_API_ERROR_DB_ALIAS_EXISTS == status2,
2474 "Certificate should be in database already. Error=" << CKM::ErrorToString(status2));
2477 RUNNER_CHILD_TEST(T1519_deinit)
2480 AccessProvider ap("my-label");
2481 ap.allowAPI("key-manager::api-control", "rw");
2482 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
2484 auto control = CKM::Control::create();
2486 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_TEST)),
2487 "Error=" << CKM::ErrorToString(tmp));
2491 RUNNER_TEST_GROUP_INIT(T161_CKM_LOCKTYPE_TESTS);
2493 RUNNER_CHILD_TEST(T1610_init_lock_key)
2496 AccessProvider ap("my-label");
2497 ap.allowAPI("key-manager::api-control", "rw");
2498 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
2500 auto control = CKM::Control::create();
2502 CKM_API_SUCCESS == (tmp = control->changeUserPassword(USER_APP,"user-pass","")),
2503 "Error=" << CKM::ErrorToString(tmp));
2505 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_APP)),
2506 "Error=" << CKM::ErrorToString(tmp));
2509 RUNNER_CHILD_TEST(T1611_unlock_default_passwd)
2511 AccessProvider ap("my-label");
2512 ap.allowAPI("key-manager::api-storage", "rw");
2513 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
2516 auto manager = CKM::Manager::create();
2518 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
2519 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
2520 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
2521 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
2522 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
2523 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
2524 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
2526 "-----END PUBLIC KEY-----";
2528 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
2529 auto key = CKM::Key::create(buffer, CKM::Password());
2531 CKM::Alias alias = "mykey_defpasswd";
2534 CKM_API_SUCCESS == (temp = manager->saveKey(alias, key, CKM::Policy())),
2535 "Error=" << CKM::ErrorToString(temp));
2537 CKM_API_SUCCESS == (temp = manager->getKey(alias, CKM::Password(), key2)),
2538 "Error=" << CKM::ErrorToString(temp));
2540 key->getDER() == key2->getDER(),
2541 "Key value has been changed by service");
2543 std::string invalid_address = aliasWithLabel("i-do-not-exist", alias.c_str());
2545 CKM_API_ERROR_DB_ALIAS_UNKNOWN == (temp = manager->removeKey(invalid_address.c_str())),
2546 "Error=" << CKM::ErrorToString(temp));
2548 CKM_API_SUCCESS == (temp = manager->removeKey(alias)),
2549 "Error=" << CKM::ErrorToString(temp));
2552 RUNNER_CHILD_TEST(T1612_init_change_user_password)
2555 AccessProvider ap("my-label");
2556 ap.allowAPI("key-manager::api-control", "rw");
2557 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
2559 auto control = CKM::Control::create();
2561 CKM_API_SUCCESS == (tmp = control->changeUserPassword(USER_APP,"","user-pass")),
2562 "Error=" << CKM::ErrorToString(tmp));
2564 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_APP)),
2565 "Error=" << CKM::ErrorToString(tmp));
2568 RUNNER_CHILD_TEST(T1613_unlock_default_passwd_negative)
2570 AccessProvider ap("my-label");
2571 ap.allowAPI("key-manager::api-storage", "rw");
2572 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
2575 auto manager = CKM::Manager::create();
2577 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
2578 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
2579 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
2580 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
2581 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
2582 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
2583 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
2585 "-----END PUBLIC KEY-----";
2587 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
2588 auto key = CKM::Key::create(buffer, CKM::Password());
2590 CKM::Alias alias = "mykey_defpasswd";
2593 CKM_API_ERROR_DB_LOCKED == (temp = manager->saveKey(alias, key, CKM::Policy())),
2594 "Error=" << CKM::ErrorToString(temp));
2596 CKM_API_ERROR_DB_LOCKED == (temp = manager->getKey(alias, CKM::Password(), key2)),
2597 "Error=" << CKM::ErrorToString(temp));
2599 CKM_API_ERROR_DB_LOCKED == (temp = manager->removeKey(alias)),
2600 "Error=" << CKM::ErrorToString(temp));
2603 RUNNER_CHILD_TEST(T1619_deinit)
2605 AccessProvider ap("my-label");
2606 ap.allowAPI("key-manager::api-control", "rw");
2607 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
2610 RUNNER_TEST_GROUP_INIT(T170_CKM_STORAGE_PERNAMENT_TESTS);
2612 RUNNER_TEST(T1701_init_unlock_key)
2615 auto control = CKM::Control::create();
2617 CKM_API_SUCCESS == (tmp = control->unlockUserKey(USER_TEST+1, "t170-special-password")),
2618 "Error=" << CKM::ErrorToString(tmp));
2621 RUNNER_CHILD_TEST(T1702_init_insert_data)
2624 AccessProvider ap("t170-special-label");
2625 ap.allowAPI("key-manager::api-storage", "rw");
2626 ap.applyAndSwithToUser(USER_TEST+1, GROUP_APP);
2628 std::string ee = "-----BEGIN CERTIFICATE-----\n"
2629 "MIIF0TCCBLmgAwIBAgIQaPGTP4aS7Ut/WDNaBzdQrDANBgkqhkiG9w0BAQUFADCB\n"
2630 "ujELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
2631 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n"
2632 "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMr\n"
2633 "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTAeFw0x\n"
2634 "NDAyMjAwMDAwMDBaFw0xNTAyMjAyMzU5NTlaMIHmMRMwEQYLKwYBBAGCNzwCAQMT\n"
2635 "AlBMMR0wGwYDVQQPExRQcml2YXRlIE9yZ2FuaXphdGlvbjETMBEGA1UEBRMKMDAw\n"
2636 "MDAyNTIzNzELMAkGA1UEBhMCUEwxDzANBgNVBBEUBjAwLTk1MDEUMBIGA1UECBML\n"
2637 "bWF6b3dpZWNraWUxETAPBgNVBAcUCFdhcnN6YXdhMRYwFAYDVQQJFA1TZW5hdG9y\n"
2638 "c2thIDE4MRMwEQYDVQQKFAptQmFuayBTLkEuMQwwCgYDVQQLFANESU4xGTAXBgNV\n"
2639 "BAMUEHd3dy5tYmFuay5jb20ucGwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n"
2640 "AoIBAQDph6x8V6xUW/+651+qHF+UmorH9uaz2ZrX2bIWiMKIJFmpDDHlxcapKkqE\n"
2641 "BV04is83aiCpqKtc2ZHy2g4Hpj1eSF5BP2+OAlo0YUQZPIeRRdiMjmeAxw/ncBDx\n"
2642 "9rQBuCJ4XTD6cqQox5SI0TASOZ+wyAEjbDRXzL73XqRAFZ1LOpb2ONkolS+RutMB\n"
2643 "vshvCsWPeNe7eGLuOh6DyC6r1vX9xhw3xnjM2mTSvmtimgzSLacNGKqRrsucUgcb\n"
2644 "0+O5C2jZAtAMLyZksL92cxmWbtVzUYzem4chjHu5cRxUlPNzUJWrrczueB7Ip4A8\n"
2645 "aQuFMfNXYc0x+WLWjy//urypMKjhAgMBAAGjggGjMIIBnzAbBgNVHREEFDASghB3\n"
2646 "d3cubWJhbmsuY29tLnBsMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgWgMB0GA1Ud\n"
2647 "JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBEBgNVHSAEPTA7MDkGC2CGSAGG+EUB\n"
2648 "BxcGMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9jcHMw\n"
2649 "HQYDVR0OBBYEFN37iGaS7mZnENxZ9FGqNLR+QgoMMB8GA1UdIwQYMBaAFPyKULqe\n"
2650 "uSVae1WFT5UAY4/pWGtDMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9FVlNlY3Vy\n"
2651 "ZS1jcmwudmVyaXNpZ24uY29tL0VWU2VjdXJlMjAwNi5jcmwwfAYIKwYBBQUHAQEE\n"
2652 "cDBuMC0GCCsGAQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC52ZXJpc2lnbi5j\n"
2653 "b20wPQYIKwYBBQUHMAKGMWh0dHA6Ly9FVlNlY3VyZS1haWEudmVyaXNpZ24uY29t\n"
2654 "L0VWU2VjdXJlMjAwNi5jZXIwDQYJKoZIhvcNAQEFBQADggEBAD0wO+rooUrIM4qp\n"
2655 "PHhp+hkXK6WMQ2qzGOmbMcZjw0govg5vkzkefPDryIXXbrF8mRagiJNMSfNaWWeh\n"
2656 "Cj41OV24EdUl0OLbFxNzcvub599zRs/apfaRLTfsmlmOgi0/YP305i+3tJ2ll946\n"
2657 "P+qV1wXnXqTqEdIl4Ys3+1HmDCdTB1hoDwAAzqRVUXZ5+iiwPAU7R/LTHfMjV1ke\n"
2658 "8jtNFfrorlZMCfVH/7eEnHJvVjOJt+YFe4aFMzE+DfuYIK7MH+olC2v79kBwbnEQ\n"
2659 "fvHMA9gFwOYLUBBdSfcocp8EKZ+mRlNPGR/3LBrPeaQQ0GZEkxzRK+v/aNTuiYfr\n"
2661 "-----END CERTIFICATE-----\n";
2663 auto manager = CKM::Manager::create();
2664 auto certee = CKM::Certificate::create(CKM::RawBuffer(ee.begin(), ee.end()), CKM::DataFormat::FORM_PEM);
2666 int status1 = manager->saveCertificate(CKM::Alias("CertEEE"), certee, CKM::Policy());
2669 CKM_API_SUCCESS == status1,
2670 "Could not put certificate in datbase. Error=" << CKM::ErrorToString(status1));
2672 CKM::AliasVector av;
2674 CKM_API_SUCCESS == (temp = manager->getCertificateAliasVector(av)),
2675 "Error=" << CKM::ErrorToString(temp));
2677 1 == (temp = av.size()),
2678 "Vector size: " << temp << ". Expected: 1");
2681 RUNNER_TEST(T1703_removeApplicationData)
2684 auto control = CKM::Control::create();
2686 CKM_API_SUCCESS == (tmp = control->removeApplicationData("t170-special-label")),
2687 "Error=" << CKM::ErrorToString(tmp));
2690 RUNNER_CHILD_TEST(T1704_data_test)
2693 AccessProvider ap("t170-special-label");
2694 ap.allowAPI("key-manager::api-storage", "rw");
2695 ap.applyAndSwithToUser(USER_TEST+1, GROUP_APP);
2697 CKM::AliasVector av;
2698 auto manager = CKM::Manager::create();
2701 CKM_API_SUCCESS == (temp = manager->getCertificateAliasVector(av)),
2702 "Error=" << CKM::ErrorToString(temp));
2704 0 == (temp = av.size()),
2705 "Vector size: " << temp << ". Expected: 0");
2708 RUNNER_TEST(T1705_deinit)
2712 auto control = CKM::Control::create();
2714 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_TEST+1)),
2715 "Error=" << CKM::ErrorToString(tmp));
2717 CKM_API_SUCCESS == (tmp = control->removeUserData(USER_TEST+1)),
2718 "Error=" << CKM::ErrorToString(tmp));
2721 RUNNER_TEST(T17101_init)
2725 auto control = CKM::Control::create();
2727 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_TEST+2)),
2728 "Error=" << CKM::ErrorToString(tmp));
2730 CKM_API_SUCCESS == (tmp = control->removeUserData(USER_TEST+2)),
2731 "Error=" << CKM::ErrorToString(tmp));
2733 CKM_API_SUCCESS == (tmp = control->unlockUserKey(USER_TEST+2, "t1706-special-password")),
2734 "Error=" << CKM::ErrorToString(tmp));
2737 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_TEST+3)),
2738 "Error=" << CKM::ErrorToString(tmp));
2740 CKM_API_SUCCESS == (tmp = control->removeUserData(USER_TEST+3)),
2741 "Error=" << CKM::ErrorToString(tmp));
2743 CKM_API_SUCCESS == (tmp = control->unlockUserKey(USER_TEST+3, "t1706-special-password")),
2744 "Error=" << CKM::ErrorToString(tmp));
2747 RUNNER_CHILD_TEST(T17102_prep_data_01)
2750 AccessProvider ap("t1706-special-label");
2751 ap.allowAPI("key-manager::api-storage", "rw");
2752 ap.applyAndSwithToUser(USER_TEST+2, GROUP_APP);
2754 CKM::AliasVector av;
2755 auto manager = CKM::Manager::create();
2757 std::string data = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4";
2759 CKM::RawBuffer buffer(data.begin(), data.end());
2760 CKM::Policy exportable(CKM::Password(), true);
2763 CKM_API_SUCCESS == (temp = manager->saveData("data1", buffer, exportable)),
2764 "Error=" << CKM::ErrorToString(temp));
2767 RUNNER_CHILD_TEST(T17103_prep_data_02)
2770 AccessProvider ap("t1706-special-label2");
2771 ap.allowAPI("key-manager::api-storage", "rw");
2772 ap.applyAndSwithToUser(USER_TEST+2, GROUP_APP);
2774 CKM::AliasVector av;
2775 auto manager = CKM::Manager::create();
2777 std::string data = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4";
2779 CKM::RawBuffer buffer(data.begin(), data.end());
2780 CKM::Policy exportable(CKM::Password(), true);
2783 CKM_API_SUCCESS == (temp = manager->saveData("data2", buffer, exportable)),
2784 "Error=" << CKM::ErrorToString(temp));
2787 RUNNER_CHILD_TEST(T17104_prep_data_03)
2790 AccessProvider ap("t1706-special-label");
2791 ap.allowAPI("key-manager::api-storage", "rw");
2792 ap.applyAndSwithToUser(USER_TEST+3, GROUP_APP);
2794 CKM::AliasVector av;
2795 auto manager = CKM::Manager::create();
2797 std::string data = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4";
2799 CKM::RawBuffer buffer(data.begin(), data.end());
2800 CKM::Policy exportable(CKM::Password(), true);
2803 CKM_API_SUCCESS == (temp = manager->saveData("data3", buffer, exportable)),
2804 "Error=" << CKM::ErrorToString(temp));
2807 RUNNER_CHILD_TEST(T17105_prep_data_04)
2810 AccessProvider ap("t1706-special-label2");
2811 ap.allowAPI("key-manager::api-storage", "rw");
2812 ap.applyAndSwithToUser(USER_TEST+3, GROUP_APP);
2814 CKM::AliasVector av;
2815 auto manager = CKM::Manager::create();
2817 std::string data = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4";
2819 CKM::RawBuffer buffer(data.begin(), data.end());
2820 CKM::Policy exportable(CKM::Password(), true);
2823 CKM_API_SUCCESS == (temp = manager->saveData("data4", buffer, exportable)),
2824 "Error=" << CKM::ErrorToString(temp));
2827 RUNNER_TEST(T17106_remove_application)
2831 auto control = CKM::Control::create();
2833 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_TEST+3)),
2834 "Error=" << CKM::ErrorToString(tmp));
2836 CKM_API_SUCCESS == (tmp = control->removeApplicationData("t1706-special-label")),
2837 "Error=" << CKM::ErrorToString(tmp));
2840 RUNNER_CHILD_TEST(T17107_check_data_01)
2843 AccessProvider ap("t1706-special-label");
2844 ap.allowAPI("key-manager::api-storage", "rw");
2845 ap.applyAndSwithToUser(USER_TEST+2, GROUP_APP);
2847 CKM::AliasVector av;
2848 auto manager = CKM::Manager::create();
2851 CKM_API_SUCCESS == (temp = manager->getDataAliasVector(av)),
2852 "Error=" << CKM::ErrorToString(temp));
2854 0 == (temp = av.size()),
2855 "Vector size: " << temp << ". Expected: 0");
2858 RUNNER_CHILD_TEST(T17108_check_data_02)
2861 AccessProvider ap("t1706-special-label2");
2862 ap.allowAPI("key-manager::api-storage", "rw");
2863 ap.applyAndSwithToUser(USER_TEST+2, GROUP_APP);
2865 CKM::AliasVector av;
2866 auto manager = CKM::Manager::create();
2869 CKM_API_SUCCESS == (temp = manager->getDataAliasVector(av)),
2870 "Error=" << CKM::ErrorToString(temp));
2872 1 == (temp = av.size()),
2873 "Vector size: " << temp << ". Expected: 1");
2876 RUNNER_TEST(T17109_unlock_user2)
2880 auto control = CKM::Control::create();
2882 CKM_API_SUCCESS == (tmp = control->unlockUserKey(USER_TEST+3, "t1706-special-password")),
2883 "Error=" << CKM::ErrorToString(tmp));
2886 RUNNER_CHILD_TEST(T17110_check_data_03)
2889 AccessProvider ap("t1706-special-label");
2890 ap.allowAPI("key-manager::api-storage", "rw");
2891 ap.applyAndSwithToUser(USER_TEST+3, GROUP_APP);
2893 CKM::AliasVector av;
2894 auto manager = CKM::Manager::create();
2897 CKM_API_SUCCESS == (temp = manager->getDataAliasVector(av)),
2898 "Error=" << CKM::ErrorToString(temp));
2900 0 == (temp = av.size()),
2901 "Vector size: " << temp << ". Expected: 0");
2904 RUNNER_CHILD_TEST(T17111_check_data_04)
2907 AccessProvider ap("t1706-special-label2");
2908 ap.allowAPI("key-manager::api-storage", "rw");
2909 ap.applyAndSwithToUser(USER_TEST+3, GROUP_APP);
2911 CKM::AliasVector av;
2912 auto manager = CKM::Manager::create();
2915 CKM_API_SUCCESS == (temp = manager->getDataAliasVector(av)),
2916 "Error=" << CKM::ErrorToString(temp));
2918 1 == (temp = av.size()),
2919 "Vector size: " << temp << ". Expected: 1");
2922 RUNNER_TEST(T17112_deinit)
2926 auto control = CKM::Control::create();
2928 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_TEST+2)),
2929 "Error=" << CKM::ErrorToString(tmp));
2931 CKM_API_SUCCESS == (tmp = control->removeUserData(USER_TEST+2)),
2932 "Error=" << CKM::ErrorToString(tmp));
2935 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_TEST+3)),
2936 "Error=" << CKM::ErrorToString(tmp));
2938 CKM_API_SUCCESS == (tmp = control->removeUserData(USER_TEST+3)),
2939 "Error=" << CKM::ErrorToString(tmp));
2942 RUNNER_TEST_GROUP_INIT(T180_PKCS12);
2944 RUNNER_TEST(T1801) {
2945 std::ifstream is("/usr/share/ckm-test/test1801.pkcs12");
2946 std::istreambuf_iterator<char> begin(is), end;
2947 std::vector<char> buff(begin, end);
2949 CKM::RawBuffer buffer(buff.size());
2950 memcpy(buffer.data(), buff.data(), buff.size());
2952 auto pkcs = CKM::PKCS12::create(buffer, "secret");
2955 "Error in PKCS12::create()");
2957 auto cert = pkcs->getCertificate();
2960 "Error in PKCS12::getCertificate()");
2962 auto key = pkcs->getKey();
2965 "Error in PKCS12::getKey()");
2967 auto caVector = pkcs->getCaCertificateShPtrVector();
2969 0 == caVector.size(),
2970 "Wrong size of vector");
2973 RUNNER_TEST(T1802_negative_wrong_password) {
2974 std::ifstream is("/usr/share/ckm-test/test1801.pkcs12");
2975 std::istreambuf_iterator<char> begin(is), end;
2976 std::vector<char> buff(begin, end);
2978 CKM::RawBuffer buffer(buff.size());
2979 memcpy(buffer.data(), buff.data(), buff.size());
2981 auto pkcs = CKM::PKCS12::create(buffer, "error");
2984 "Expected error in PKCS12::create()");
2987 RUNNER_TEST(T1803_negative_broken_buffer) {
2988 std::ifstream is("/usr/share/ckm-test/test1801.pkcs12");
2989 std::istreambuf_iterator<char> begin(is), end;
2990 std::vector<char> buff(begin, end);
2992 CKM::RawBuffer buffer(buff.size());
2993 memcpy(buffer.data(), buff.data(), buff.size());
2995 RUNNER_ASSERT_MSG(buffer.size() > 5, "PKCS file is too small.");
2998 auto pkcs = CKM::PKCS12::create(buffer, "secret");
3001 "Expected error in PKCS12::create()");
3004 RUNNER_TEST_GROUP_INIT(T190_CKM_EMPTY_STORAGE_TESTS);
3006 RUNNER_TEST(T1901_init_unlock_key)
3009 auto control = CKM::Control::create();
3011 CKM_API_SUCCESS == (tmp = control->lockUserKey(0)),
3012 "Error=" << CKM::ErrorToString(tmp));
3014 CKM_API_SUCCESS == (tmp = control->removeUserData(0)),
3015 "Error=" << CKM::ErrorToString(tmp));
3017 CKM_API_SUCCESS == (tmp = control->unlockUserKey(0, "t190-special-password")),
3018 "Error=" << CKM::ErrorToString(tmp));
3021 RUNNER_TEST(T1902_get_data)
3023 auto manager = CKM::Manager::create();
3026 int status1 = manager->getKey(CKM::Alias("CertEEE"), CKM::Password(), ptr);
3029 CKM_API_ERROR_DB_ALIAS_UNKNOWN == status1,
3030 "Could not put certificate in datbase. Error=" << CKM::ErrorToString(status1));
3033 RUNNER_TEST(T1903_lock_database)
3036 auto control = CKM::Control::create();
3038 CKM_API_SUCCESS == (tmp = control->lockUserKey(0)),
3039 "Error=" << CKM::ErrorToString(tmp));
3042 RUNNER_TEST(T1904_get_data_from_locked_database)
3044 auto manager = CKM::Manager::create();
3047 int status1 = manager->getKey(CKM::Alias("CertEEE"), CKM::Password(), ptr);
3050 CKM_API_ERROR_DB_LOCKED == status1,
3051 "Could not get key from locked database. Error=" << CKM::ErrorToString(status1));
3054 RUNNER_TEST(T1905_deinit)
3057 auto control = CKM::Control::create();
3059 CKM_API_SUCCESS == (tmp = control->removeUserData(0)),
3060 "Error=" << CKM::ErrorToString(tmp));
3063 RUNNER_TEST_GROUP_INIT (T200_CKM_CC_MODE_TESTS); // this test group is only for non-cc certified device
3065 * default status : no event callback registered. // vconftool unset file/security_mdpp/security_mdpp_state
3066 * - `ps axf | grep key-manager-listener | grep -v grep | awk '{print "kill -9 " $1}'`
3067 * - vconftool unset file/security_mdpp/security_mdpp_state
3068 * - /usr/bin/key-manager-listener
3070 * - Create RSA key // createKeyPairRSA
3071 * - try to get private key -> must be success // getKey
3072 * - vconftool set -t string file/security_mdpp/security_mdpp_state "Enabled"
3073 * - try to get private key : must be success because no callback registered. // getKey
3075 * new status : event callback registered. // unset mdpp_state vconf key and reset mdpp state vconf key
3076 * - `ps axf | grep key-manager-listener | grep -v grep | awk '{print "kill -9 " $1}'`
3077 * - vconftool set -t string file/security_mdpp/security_mdpp_state "Disabled" -f
3078 * - /usr/bin/key-manager-listener
3079 * - Create RSA key // createKeyPairRSA
3080 * - try to get private key -> must be success // getKey
3081 * - vconftool set -t string file/security_mdpp/security_mdpp_state "Enabled" -f
3082 * - try to get private key -> must be fail because cc mode is set to 1
3085 RUNNER_TEST(T2001_init_cc_mode_tests)
3087 system("`ps axf | grep key-manager-listener | grep -v grep | awk '{print \"kill -9 \" $1}'`");
3088 system("vconftool unset file/security_mdpp/security_mdpp_state");
3089 system("/usr/bin/key-manager-listener");
3092 auto control = CKM::Control::create();
3093 RUNNER_ASSERT_MSG( CKM_API_SUCCESS == (tmp = control->setCCMode(CKM::CCModeState::CC_MODE_OFF)), // default state : cc mode off
3094 "Error=" << CKM::ErrorToString(tmp));
3095 RUNNER_ASSERT_MSG( CKM_API_SUCCESS == (tmp = control->lockUserKey(0)),
3096 "Error=" << CKM::ErrorToString(tmp));
3097 RUNNER_ASSERT_MSG( CKM_API_SUCCESS == (tmp = control->removeUserData(0)),
3098 "Error=" << CKM::ErrorToString(tmp));
3100 CKM_API_SUCCESS == (tmp = control->unlockUserKey(0, "t200-special-password")),
3101 "Error=" << CKM::ErrorToString(tmp));
3105 RUNNER_TEST(T2002_CC_Mode_Changed_Event_Callback_Not_Registered)
3108 auto manager = CKM::Manager::create();
3109 CKM::Alias rsa_pri_alias("rsa-private-T2002");
3110 CKM::Alias rsa_pub_alias("rsa-public-T2002");
3111 CKM::Alias ecdsa_pri_alias("ecdsa-private-T2002");
3112 CKM::Alias ecdsa_pub_alias("ecdsa-public-T2002");
3115 CKM_API_SUCCESS == (temp = manager->createKeyPairRSA(
3119 CKM::Policy(CKM::Password(), true),
3120 CKM::Policy(CKM::Password(), true))),
3121 "Error=" << CKM::ErrorToString(temp));
3124 CKM_API_SUCCESS == (temp = manager->createKeyPairECDSA(
3125 CKM::ElipticCurve::prime192v1,
3128 CKM::Policy(CKM::Password(), true),
3129 CKM::Policy(CKM::Password(), true))),
3130 "Error=" << CKM::ErrorToString(temp));
3135 CKM_API_SUCCESS == (temp = manager->getKey(
3139 "Error=" << CKM::ErrorToString(temp));
3142 CKM_API_SUCCESS == (temp = manager->getKey(
3146 "Error=" << CKM::ErrorToString(temp));
3148 system("vconftool set -t string file/security_mdpp/security_mdpp_state \"Enabled\"");
3151 CKM_API_SUCCESS == (temp = manager->getKey(
3155 "Error=" << CKM::ErrorToString(temp));
3158 CKM_API_SUCCESS == (temp = manager->getKey(
3162 "Error=" << CKM::ErrorToString(temp));
3165 RUNNER_TEST(T2003_CC_Mode_Changed_Event_Callback_Registered)
3167 system("`ps axf | grep key-manager-listener | grep -v grep | awk '{print \"kill -9 \" $1}'`");
3168 system("vconftool set -t string file/security_mdpp/security_mdpp_state \"Disabled\" -f");
3169 system("/usr/bin/key-manager-listener");
3172 auto manager = CKM::Manager::create();
3173 CKM::Alias rsa_pri_alias("rsa-private-T2003");
3174 CKM::Alias rsa_pub_alias("rsa-public-T2003");
3175 CKM::Alias ecdsa_pri_alias("ecdsa-private-T2003");
3176 CKM::Alias ecdsa_pub_alias("ecdsa-public-T2003");
3179 CKM_API_SUCCESS == (temp = manager->createKeyPairRSA(
3183 CKM::Policy(CKM::Password(), true),
3184 CKM::Policy(CKM::Password(), true))),
3185 "Error=" << CKM::ErrorToString(temp));
3188 CKM_API_SUCCESS == (temp = manager->createKeyPairECDSA(
3189 CKM::ElipticCurve::prime192v1,
3192 CKM::Policy(CKM::Password(), true),
3193 CKM::Policy(CKM::Password(), true))),
3194 "Error=" << CKM::ErrorToString(temp));
3199 CKM_API_SUCCESS == (temp = manager->getKey(
3203 "Error=" << CKM::ErrorToString(temp));
3206 CKM_API_SUCCESS == (temp = manager->getKey(
3210 "Error=" << CKM::ErrorToString(temp));
3212 system("vconftool set -t string file/security_mdpp/security_mdpp_state \"Enabled\" -f");
3215 CKM_API_ERROR_BAD_REQUEST == (temp = manager->getKey(
3219 "Error=" << CKM::ErrorToString(temp));
3222 CKM_API_ERROR_BAD_REQUEST == (temp = manager->getKey(
3226 "Error=" << CKM::ErrorToString(temp));
3229 RUNNER_TEST(T2004_deinit)
3232 auto control = CKM::Control::create();
3233 RUNNER_ASSERT_MSG( CKM_API_SUCCESS == (tmp = control->removeUserData(0)),
3234 "Error=" << CKM::ErrorToString(tmp));
3235 RUNNER_ASSERT_MSG( CKM_API_SUCCESS == (tmp = control->setCCMode(CKM::CCModeState::CC_MODE_OFF)), // default state : cc mode off
3236 "Error=" << CKM::ErrorToString(tmp));
3237 system("`ps axf | grep key-manager-listener | grep -v grep | awk '{print \"kill -9 \" $1}'`");
3238 system("vconftool unset file/security_mdpp/security_mdpp_state");
3239 system("/usr/bin/key-manager-listener");
3242 int main(int argc, char *argv[])
3244 DPL::Log::LogSystemSingleton::Instance().SetTag("CKM_TESTS");
3245 return DPL::Test::TestRunnerSingleton::Instance().ExecTestRunner(argc, argv);