3 #include <dpl/log/log.h>
4 #include <dpl/test/test_runner.h>
5 #include <dpl/test/test_runner_child.h>
7 #include <tests_common.h>
8 #include <access_provider.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 static const int USER_APP = 5000;
19 static const int GROUP_APP = 5000;
20 static const int USER_TEST = 5001;
23 * How to numerate tests:
25 * T - test case (always T)
26 * AB - number of test group (always two digits)
27 * C - test number in group (all tests with same TABC must be run in the same time).
32 RUNNER_TEST_GROUP_INIT(T0000_CKM_CONTROL);
34 RUNNER_TEST(T0010_Control)
37 auto control = CKM::Control::create();
39 control->removeUserData(0);
40 control->removeUserData(20);
41 control->removeUserData(USER_APP);
44 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "simple-password")),
45 "Error=" << CKM::ErrorToString(temp));
48 RUNNER_TEST(T0020_Control)
51 auto control = CKM::Control::create();
53 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "simple-password")),
54 "Error=" << CKM::ErrorToString(temp));
56 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
57 "Error=" << CKM::ErrorToString(temp));
60 RUNNER_TEST(T0030_Control)
63 auto control = CKM::Control::create();
65 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "simple-password")),
66 "Error=" << CKM::ErrorToString(temp));
69 RUNNER_TEST(T0040_Control)
72 auto control = CKM::Control::create();
74 CKM_API_ERROR_BAD_REQUEST == (temp = control->resetUserPassword(14, "simple-password")),
75 "Error=" << CKM::ErrorToString(temp));
78 RUNNER_TEST(T0050_Control)
81 auto control = CKM::Control::create();
83 CKM_API_SUCCESS == (temp = control->unlockUserKey(20, "test-pass")),
84 "Error=" << CKM::ErrorToString(temp));
86 CKM_API_SUCCESS == (temp = control->changeUserPassword(20, "test-pass", "new-pass")),
87 "Error=" << CKM::ErrorToString(temp));
89 CKM_API_SUCCESS == (temp = control->lockUserKey(20)),
90 "Error=" << CKM::ErrorToString(temp));
92 CKM_API_SUCCESS == (temp = control->removeUserData(20)),
93 "Error=" << CKM::ErrorToString(temp));
96 RUNNER_TEST_GROUP_INIT(T101_CKM_QUICK_SET_GET_TESTS);
98 RUNNER_TEST(T1010_init)
101 auto control = CKM::Control::create();
103 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "test-pass")),
104 "Error=" << CKM::ErrorToString(temp));
106 CKM_API_SUCCESS == (temp = control->unlockUserKey(USER_APP, "user-pass")),
107 "Error=" << CKM::ErrorToString(temp));
110 RUNNER_TEST(T1011_key)
113 auto manager = CKM::Manager::create();
115 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
116 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
117 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
118 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
119 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
120 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
121 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
123 "-----END PUBLIC KEY-----";
125 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
126 auto key = CKM::Key::create(buffer, CKM::Password());
128 CKM::Alias alias = "mykey";
131 CKM_API_SUCCESS == (temp = manager->saveKey(alias, key, CKM::Policy())),
132 "Error=" << CKM::ErrorToString(temp));
134 CKM_API_SUCCESS == (temp = manager->getKey(alias, CKM::Password(), key2)),
135 "Error=" << CKM::ErrorToString(temp));
137 key->getDER() == key2->getDER(),
138 "Key value has been changed by service");
141 RUNNER_TEST(T1012_certificate)
144 auto manager = CKM::Manager::create();
146 std::string certPem =
147 "-----BEGIN CERTIFICATE-----\n"
148 "MIIEgDCCA2igAwIBAgIIcjtBYJGQtOAwDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UE\n"
149 "BhMCVVMxEzARBgNVBAoTCkdvb2dsZSBJbmMxJTAjBgNVBAMTHEdvb2dsZSBJbnRl\n"
150 "cm5ldCBBdXRob3JpdHkgRzIwHhcNMTQwNTIyMTEyOTQyWhcNMTQwODIwMDAwMDAw\n"
151 "WjBtMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwN\n"
152 "TW91bnRhaW4gVmlldzETMBEGA1UECgwKR29vZ2xlIEluYzEcMBoGA1UEAwwTYWNj\n"
153 "b3VudHMuZ29vZ2xlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB\n"
154 "ALtlLWVWPN3q3bSEQl1Z97gPdgl5vbgJOZSAr0ZY0tJCuFLBbUKetJWryyE+5KpG\n"
155 "gMMpLS4v8/bvXaZc6mAs+RfAqGM24C3vQg5hPnj4dflnhL0WiOCZBurm1tV4oexk\n"
156 "HLXs3jr/jpnb738AQpj8zZ9a4VEBuHJRZALnWZ/XhqU+dvYomAoRQNuL5OhkT7uu\n"
157 "d0NKJL9JjYLyQglGgE2sVsWv2kj7EO/P9Q6NEKt9BGmhMsFvtfeKUaymynaxpR1g\n"
158 "wEPlqYvB38goh1dIOgVLT0OVyLImeg5Mdwar/8c1U0OYhLOc6PJapOZAfUkE+3+w\n"
159 "xYt8AChLN1b5szOwInrCVpECAwEAAaOCAUYwggFCMB0GA1UdJQQWMBQGCCsGAQUF\n"
160 "BwMBBggrBgEFBQcDAjAeBgNVHREEFzAVghNhY2NvdW50cy5nb29nbGUuY29tMGgG\n"
161 "CCsGAQUFBwEBBFwwWjArBggrBgEFBQcwAoYfaHR0cDovL3BraS5nb29nbGUuY29t\n"
162 "L0dJQUcyLmNydDArBggrBgEFBQcwAYYfaHR0cDovL2NsaWVudHMxLmdvb2dsZS5j\n"
163 "b20vb2NzcDAdBgNVHQ4EFgQU0/UtToEtNIfwDwHuYGuVKcj0xK8wDAYDVR0TAQH/\n"
164 "BAIwADAfBgNVHSMEGDAWgBRK3QYWG7z2aLV29YG2u2IaulqBLzAXBgNVHSAEEDAO\n"
165 "MAwGCisGAQQB1nkCBQEwMAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL3BraS5nb29n\n"
166 "bGUuY29tL0dJQUcyLmNybDANBgkqhkiG9w0BAQUFAAOCAQEAcGNI/X9f0g+7ij0o\n"
167 "ehLpk6vxSMQGrmOZ4+PG/MC9SLClCkt7zJkfU7erZnyVXyxCpwlljq+Wk9YTPUOq\n"
168 "xD/V2ikQVSAANoxGJFO9UoL5jzWusPhKKv8CcM7fuiERz8K+CfBcqfxbgI5rH0g5\n"
169 "dYclmLC81cJ/08i+9Nltvxv69Y3hGfEICT6K+EdSxwnQzOhpMZmvxZsIj+d6CVNa\n"
170 "9ICYgUthsNQVWzrIs5wknpjjZ9liDMwJX0vu8A0rce4X/Lna5hh2bW9igz2iP5WM\n"
171 "9fuwdbTw4y3jfPQgszU4YZxWxhMzccxe058Qx1tLndAknBQEBesQjXytVQpuM1SV\n"
173 "-----END CERTIFICATE-----\n";
175 CKM::RawBuffer buffer(certPem.begin(), certPem.end());
176 auto cert = CKM::Certificate::create(buffer, CKM::DataFormat::FORM_PEM);
177 CKM::CertificateShPtr cert2;
178 CKM::Alias alias = "myCert";
181 CKM_API_SUCCESS == (temp = manager->saveCertificate(alias, cert, CKM::Policy())),
182 "Error=" << CKM::ErrorToString(temp));
184 CKM_API_SUCCESS == (temp = manager->getCertificate(alias, CKM::Password(), cert2)),
185 "Error=" << CKM::ErrorToString(temp));
187 cert->getDER() == cert2->getDER(),
188 "Data has been modified in key manager");
191 RUNNER_CHILD_TEST(T1013_user_app_save_key)
193 SecurityServer::AccessProvider ap("mylabel");
194 ap.addObjectRule("key-manager::api-storage", "rw");
195 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
197 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
198 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
199 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
200 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
201 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
202 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
203 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
205 "-----END PUBLIC KEY-----";
208 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
209 auto key = CKM::Key::create(buffer, CKM::Password());
211 CKM::Alias alias = "mykey";
212 auto manager = CKM::Manager::create();
215 CKM_API_SUCCESS == (temp = manager->saveKey(alias, key, CKM::Policy("x"))),
216 "Error=" << CKM::ErrorToString(temp));
218 CKM_API_SUCCESS == (temp = manager->getKey(alias, CKM::Password("x"), key2)),
219 "Error=" << CKM::ErrorToString(temp));
221 key->getDER() == key2->getDER(), "Key value has been changed by service");
225 RUNNER_TEST(T1014_deinit)
228 auto control = CKM::Control::create();
231 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
232 "Error=" << CKM::ErrorToString(temp));
234 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
235 "Error=" << CKM::ErrorToString(temp));
237 CKM_API_SUCCESS == (temp = control->lockUserKey(USER_APP)),
238 "Error=" << CKM::ErrorToString(temp));
240 CKM_API_SUCCESS == (temp = control->removeUserData(USER_APP)),
241 "Error=" << CKM::ErrorToString(temp));
244 RUNNER_TEST_GROUP_INIT(T102_CKM_QUICK_GET_ALIAS_TESTS);
246 RUNNER_TEST(T1020_init)
249 auto control = CKM::Control::create();
251 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "test-pass")),
252 "Error=" << CKM::ErrorToString(temp));
254 CKM_API_SUCCESS == (temp = control->unlockUserKey(USER_APP, "user-pass")),
255 "Error=" << CKM::ErrorToString(temp));
258 RUNNER_TEST(T1021_save_keys_get_alias)
261 auto manager = CKM::Manager::create();
263 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
264 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
265 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
266 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
267 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
268 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
269 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
271 "-----END PUBLIC KEY-----";
273 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
274 auto key = CKM::Key::create(buffer, CKM::Password());
275 CKM::AliasVector aliasVector;
278 CKM_API_SUCCESS == (temp = manager->saveKey("rootkey1", key, CKM::Policy())),
279 "Error=" << CKM::ErrorToString(temp));
281 CKM_API_SUCCESS == (temp = manager->saveKey("rootkey2", key, CKM::Policy())),
282 "Error=" << CKM::ErrorToString(temp));
284 CKM_API_SUCCESS == (temp = manager->saveKey("rootkey3", key, CKM::Policy(CKM::Password(), false))),
285 "Error=" << CKM::ErrorToString(temp));
287 CKM_API_SUCCESS == (temp = manager->getKeyAliasVector(aliasVector)),
288 "Error=" << CKM::ErrorToString(temp));
290 aliasVector.size() == 3,
291 "Wrong size of list: " << aliasVector.size() << " Expected: 3");
294 RUNNER_CHILD_TEST(T1022_app_user_save_keys_get_alias)
296 SecurityServer::AccessProvider ap("mylabel");
297 ap.addObjectRule("key-manager::api-storage", "rw");
298 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
301 auto manager = CKM::Manager::create();
303 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
304 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
305 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
306 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
307 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
308 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
309 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
311 "-----END PUBLIC KEY-----";
313 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
314 auto key = CKM::Key::create(buffer, CKM::Password());
315 CKM::AliasVector aliasVector;
318 CKM_API_SUCCESS == (temp = manager->saveKey("appkey1", key, CKM::Policy())),
319 "Error=" << CKM::ErrorToString(temp));
321 CKM_API_SUCCESS == (temp = manager->saveKey("appkey2", key, CKM::Policy())),
322 "Error=" << CKM::ErrorToString(temp));
324 CKM_API_SUCCESS == (temp = manager->saveKey("appkey3", key, CKM::Policy(CKM::Password(), false))),
325 "Error=" << CKM::ErrorToString(temp));
327 CKM_API_SUCCESS == (temp = manager->getKeyAliasVector(aliasVector)),
328 "Error=" << CKM::ErrorToString(temp));
330 aliasVector.size() == 3,
331 "Wrong size of list: " << aliasVector.size() << " Expected: 3");
334 RUNNER_CHILD_TEST(T1023_app_user_save_keys_exportable_flag)
336 SecurityServer::AccessProvider ap("mylabel");
337 ap.addObjectRule("key-manager::api-storage", "rw");
338 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
341 auto manager = CKM::Manager::create();
343 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
344 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
345 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
346 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
347 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
348 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
349 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
351 "-----END PUBLIC KEY-----";
353 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
354 auto key = CKM::Key::create(buffer, CKM::Password());
355 CKM::AliasVector aliasVector;
356 CKM::Policy notExportable(CKM::Password(), false);
359 CKM_API_SUCCESS == (temp = manager->saveKey("appkey4", key, notExportable)),
360 "Error=" << CKM::ErrorToString(temp));
362 CKM_API_ERROR_NOT_EXPORTABLE == (temp = manager->getKey("appkey4", CKM::Password(), key)),
363 "Error=" << CKM::ErrorToString(temp));
365 CKM_API_ERROR_INPUT_PARAM == (temp = manager->saveData("data3", buffer, notExportable)),
366 "Error=" << CKM::ErrorToString(temp));
369 RUNNER_TEST(T1029_deinit)
372 auto control = CKM::Control::create();
375 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
376 "Error=" << CKM::ErrorToString(temp));
378 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
379 "Error=" << CKM::ErrorToString(temp));
381 CKM_API_SUCCESS == (temp = control->lockUserKey(USER_APP)),
382 "Error=" << CKM::ErrorToString(temp));
384 CKM_API_SUCCESS == (temp = control->removeUserData(USER_APP)),
385 "Error=" << CKM::ErrorToString(temp));
388 RUNNER_TEST_GROUP_INIT(T103_CKM_QUICK_REMOVE_BIN_DATA_TEST);
390 RUNNER_TEST(T1030_init)
393 auto control = CKM::Control::create();
395 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "test-pass")),
396 "Error=" << CKM::ErrorToString(temp));
398 CKM_API_SUCCESS == (temp = control->unlockUserKey(USER_APP, "user-pass")),
399 "Error=" << CKM::ErrorToString(temp));
402 RUNNER_TEST(T1031_save_get_bin_data)
405 auto manager = CKM::Manager::create();
407 std::string binData1 = "My bin data1";
408 std::string binData2 = "My bin data2";
409 std::string binData3 = "My bin data3";
411 CKM::RawBuffer buffer1(binData1.begin(), binData1.end());
412 CKM::RawBuffer buffer2(binData2.begin(), binData2.end());
413 CKM::RawBuffer buffer3(binData3.begin(), binData3.end());
415 CKM::AliasVector aliasVector;
418 CKM_API_SUCCESS == (temp = manager->saveData("data1", buffer1, CKM::Policy())),
419 "Error=" << CKM::ErrorToString(temp));
421 CKM_API_SUCCESS == (temp = manager->saveData("data2", buffer2, CKM::Policy())),
422 "Error=" << CKM::ErrorToString(temp));
424 CKM_API_SUCCESS == (temp = manager->saveData("data3", buffer3, CKM::Policy(CKM::Password(), true))),
425 "Error=" << CKM::ErrorToString(temp));
427 CKM_API_ERROR_INPUT_PARAM == (temp = manager->saveData("data4", buffer3, CKM::Policy(CKM::Password(), false))),
428 "Error=" << CKM::ErrorToString(temp));
430 CKM_API_SUCCESS == (temp = manager->getDataAliasVector(aliasVector)),
431 "Error=" << CKM::ErrorToString(temp));
433 aliasVector.size() == 3,
434 "Wrong size of list: " << aliasVector.size() << " Expected: 3");
436 CKM::RawBuffer buffer;
438 CKM_API_SUCCESS == (temp = manager->getData("data2", CKM::Password(), buffer)),
439 "Error=" << CKM::ErrorToString(temp));
445 RUNNER_CHILD_TEST(T1032_app_user_save_bin_data)
447 SecurityServer::AccessProvider ap("mylabel");
448 ap.addObjectRule("key-manager::api-storage", "rw");
449 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
452 auto manager = CKM::Manager::create();
454 std::string binData = "My bin data";
456 CKM::RawBuffer buffer(binData.begin(), binData.end());
458 CKM::AliasVector aliasVector;
461 CKM_API_SUCCESS == (temp = manager->saveData("appdata1", buffer, CKM::Policy())),
462 "Error=" << CKM::ErrorToString(temp));
464 CKM_API_SUCCESS == (temp = manager->saveData("appdata2", buffer, CKM::Policy())),
465 "Error=" << CKM::ErrorToString(temp));
467 CKM_API_SUCCESS == (temp = manager->saveData("appdata3", buffer, CKM::Policy(CKM::Password(), true))),
468 "Error=" << CKM::ErrorToString(temp));
470 CKM_API_SUCCESS == (temp = manager->getDataAliasVector(aliasVector)),
471 "Error=" << CKM::ErrorToString(temp));
473 aliasVector.size() == 3,
474 "Wrong size of list: " << aliasVector.size() << " Expected: 3");
477 RUNNER_TEST(T1033_remove_bin_data)
480 auto manager = CKM::Manager::create();
482 std::string binData2 = "My bin data2";
483 CKM::RawBuffer buffer2(binData2.begin(), binData2.end());
485 CKM::AliasVector aliasVector;
488 CKM_API_SUCCESS == (temp = manager->removeData("data1")),
489 "Error=" << CKM::ErrorToString(temp));
491 CKM_API_SUCCESS == (temp = manager->removeData("data3")),
492 "Error=" << CKM::ErrorToString(temp));
494 CKM_API_SUCCESS == (temp = manager->getDataAliasVector(aliasVector)),
495 "Error=" << CKM::ErrorToString(temp));
497 aliasVector.size() == 1,
498 "Wrong size of list: " << aliasVector.size() << " Expected: 1");
500 CKM::RawBuffer buffer;
502 CKM_API_SUCCESS == (temp = manager->getData("data2", CKM::Password(), buffer)),
503 "Error=" << CKM::ErrorToString(temp));
508 CKM_API_ERROR_DB_ALIAS_UNKNOWN == (temp = manager->getData("data3", CKM::Password(), buffer)),
509 "Error=" << CKM::ErrorToString(temp));
512 RUNNER_TEST(T1039_deinit)
515 auto control = CKM::Control::create();
518 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
519 "Error=" << CKM::ErrorToString(temp));
521 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
522 "Error=" << CKM::ErrorToString(temp));
524 CKM_API_SUCCESS == (temp = control->lockUserKey(USER_APP)),
525 "Error=" << CKM::ErrorToString(temp));
527 CKM_API_SUCCESS == (temp = control->removeUserData(USER_APP)),
528 "Error=" << CKM::ErrorToString(temp));
531 RUNNER_TEST_GROUP_INIT(T104_CKM_QUICK_CREATE_PAIR);
533 RUNNER_TEST(T1040_init)
536 auto control = CKM::Control::create();
539 CKM_API_SUCCESS == (temp = control->unlockUserKey(USER_APP, "user-pass")),
540 "Error=" << CKM::ErrorToString(temp));
543 RUNNER_CHILD_TEST(T1041_create_rsa_key)
546 auto manager = CKM::Manager::create();
549 SecurityServer::AccessProvider ap("mylabel");
550 ap.addObjectRule("key-manager::api-storage", "rw");
551 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
554 CKM_API_SUCCESS == (temp = manager->createKeyPairRSA(2048, CKM::Alias("PRV_KEY1"), CKM::Alias("PUB_KEY1"), CKM::Policy(), CKM::Policy())),
555 "Error=" << CKM::ErrorToString(temp));
557 CKM_API_SUCCESS == (temp = manager->getKeyAliasVector(av)),
558 "Error=" << CKM::ErrorToString(temp));
560 2 == (temp = av.size()),
561 "Vector size: " << temp << ". Expected: 2");
564 RUNNER_TEST(T1049_deinit)
567 auto control = CKM::Control::create();
570 CKM_API_SUCCESS == (temp = control->lockUserKey(USER_APP)),
571 "Error=" << CKM::ErrorToString(temp));
573 CKM_API_SUCCESS == (temp = control->removeUserData(USER_APP)),
574 "Error=" << CKM::ErrorToString(temp));
578 RUNNER_TEST_GROUP_INIT(T111_CKM_CreateKeyPairRSA);
580 RUNNER_TEST(T1110_init)
583 auto control = CKM::Control::create();
585 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "test-pass")),
586 "Error=" << CKM::ErrorToString(temp));
588 CKM_API_SUCCESS == (temp = control->unlockUserKey(USER_APP, "user-pass")),
589 "Error=" << CKM::ErrorToString(temp));
592 RUNNER_TEST(T1111_CreateKeyPairRSA)
595 auto manager = CKM::Manager::create();
596 CKM::Alias a1("rsa-test-1");
597 CKM::Alias a2("rsa-test-2");
601 CKM_API_SUCCESS == (temp = manager->createKeyPairRSA(1024, a1, a2, p1, p2)),
602 "Error=" << CKM::ErrorToString(temp));
604 CKM_API_ERROR_DB_ALIAS_EXISTS == (temp = manager->createKeyPairRSA(1024, a1, a2, p1, p2)),
605 "Error=" << CKM::ErrorToString(temp));
608 RUNNER_TEST(T1112_CreateKeyPairECDSA)
611 auto manager = CKM::Manager::create();
612 CKM::Alias a1("ecdsa-test-1");
613 CKM::Alias a2("ecdsa-test-2");
617 CKM_API_SUCCESS == (temp = manager->createKeyPairECDSA(CKM::ElipticCurve::prime192v1, a1, a2, p1, p2)),
618 "Error=" << CKM::ErrorToString(temp));
621 RUNNER_TEST(T1113_deinit)
624 auto control = CKM::Control::create();
627 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
628 "Error=" << CKM::ErrorToString(temp));
630 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
631 "Error=" << CKM::ErrorToString(temp));
634 RUNNER_TEST_GROUP_INIT(T120_NEGATIVE_TESTS);
636 RUNNER_TEST(T12100_init)
639 auto control = CKM::Control::create();
641 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "test-pass")),
642 "Error=" << CKM::ErrorToString(temp));
644 CKM_API_SUCCESS == (temp = control->unlockUserKey(USER_APP, "user-pass")),
645 "Error=" << CKM::ErrorToString(temp));
648 RUNNER_TEST(T12101_key_exist)
651 auto manager = CKM::Manager::create();
653 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
654 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
655 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
656 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
657 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
658 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
659 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
661 "-----END PUBLIC KEY-----";
663 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
664 auto key = CKM::Key::create(buffer);
665 CKM::Alias alias = "rsa-alias-duplication";
668 CKM_API_SUCCESS == (ret = manager->saveKey(alias, key, CKM::Policy())),
669 "Error=" << CKM::ErrorToString(ret));
671 CKM_API_ERROR_DB_ALIAS_EXISTS == (ret = manager->saveKey(alias, key, CKM::Policy())),
672 "Error=" << CKM::ErrorToString(ret));
676 * These test cases tests API when empty parameters are passed to functions
679 RUNNER_TEST(T12102_saveKey_empty_alias)
681 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
682 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
683 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
684 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLc\n"
685 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
686 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
687 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
688 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
690 "-----END PUBLIC KEY-----";
692 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
693 auto key = CKM::Key::create(buffer);
694 CKM::Alias alias; //alias is not initialized
697 auto manager = CKM::Manager::create();
699 CKM_API_ERROR_INPUT_PARAM == (ret = manager->saveKey(alias, key, CKM::Policy())),
700 "Error=" << CKM::ErrorToString(ret));
703 RUNNER_TEST(T12103_saveKey_empty_key)
705 CKM::KeyShPtr key; //key is not initialized
706 CKM::Alias alias = "empty-key";
709 auto manager = CKM::Manager::create();
711 CKM_API_ERROR_INPUT_PARAM == (ret = manager->saveKey(alias, key, CKM::Policy())),
712 "Error=" << CKM::ErrorToString(ret));
715 RUNNER_TEST(T12104_saveCertificate_empty_alias)
717 std::string certPem =
718 "-----BEGIN CERTIFICATE-----\n"
719 "MIIEgDCCA2igAwIBAgIIcjtBYJGQtOAwDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UE\n"
720 "BhMCVVMxEzARBgNVBAoTCkdvb2dsZSBJbmMxJTAjBgNVBAMTHEdvb2dsZSBJbnRl\n"
721 "cm5ldCBBdXRob3JpdHkgRzIwHhcNMTQwNTIyMTEyOTQyWhcNMTQwODIwMDAwMDAw\n"
722 "WjBtMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwN\n"
723 "TW91bnRhaW4gVmlldzETMBEGA1UECgwKR29vZ2xlIEluYzEcMBoGA1UEAwwTYWNj\n"
724 "b3VudHMuZ29vZ2xlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB\n"
725 "ALtlLWVWPN3q3bSEQl1Z97gPdgl5vbgJOZSAr0ZY0tJCuFLBbUKetJWryyE+5KpG\n"
726 "gMMpLS4v8/bvXaZc6mAs+RfAqGM24C3vQg5hPnj4dflnhL0WiOCZBurm1tV4oexk\n"
727 "HLXs3jr/jpnb738AQpj8zZ9a4VEBuHJRZALnWZ/XhqU+dvYomAoRQNuL5OhkT7uu\n"
728 "d0NKJL9JjYLyQglGgE2sVsWv2kj7EO/P9Q6NEKt9BGmhMsFvtfeKUaymynaxpR1g\n"
729 "wEPlqYvB38goh1dIOgVLT0OVyLImeg5Mdwar/8c1U0OYhLOc6PJapOZAfUkE+3+w\n"
730 "xYt8AChLN1b5szOwInrCVpECAwEAAaOCAUYwggFCMB0GA1UdJQQWMBQGCCsGAQUF\n"
731 "BwMBBggrBgEFBQcDAjAeBgNVHREEFzAVghNhY2NvdW50cy5nb29nbGUuY29tMGgG\n"
732 "CCsGAQUFBwEBBFwwWjArBggrBgEFBQcwAoYfaHR0cDovL3BraS5nb29nbGUuY29t\n"
733 "L0dJQUcyLmNydDArBggrBgEFBQcwAYYfaHR0cDovL2NsaWVudHMxLmdvb2dsZS5j\n"
734 "b20vb2NzcDAdBgNVHQ4EFgQU0/UtToEtNIfwDwHuYGuVKcj0xK8wDAYDVR0TAQH/\n"
735 "BAIwADAfBgNVHSMEGDAWgBRK3QYWG7z2aLV29YG2u2IaulqBLzAXBgNVHSAEEDAO\n"
736 "MAwGCisGAQQB1nkCBQEwMAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL3BraS5nb29n\n"
737 "bGUuY29tL0dJQUcyLmNybDANBgkqhkiG9w0BAQUFAAOCAQEAcGNI/X9f0g+7ij0o\n"
738 "ehLpk6vxSMQGrmOZ4+PG/MC9SLClCkt7zJkfU7erZnyVXyxCpwlljq+Wk9YTPUOq\n"
739 "xD/V2ikQVSAANoxGJFO9UoL5jzWusPhKKv8CcM7fuiERz8K+CfBcqfxbgI5rH0g5\n"
740 "dYclmLC81cJ/08i+9Nltvxv69Y3hGfEICT6K+EdSxwnQzOhpMZmvxZsIj+d6CVNa\n"
741 "9ICYgUthsNQVWzrIs5wknpjjZ9liDMwJX0vu8A0rce4X/Lna5hh2bW9igz2iP5WM\n"
742 "9fuwdbTw4y3jfPQgszU4YZxWxhMzccxe058Qx1tLndAknBQEBesQjXytVQpuM1SV\n"
744 "-----END CERTIFICATE-----\n";
746 CKM::RawBuffer buffer(certPem.begin(), certPem.end());
747 auto cert = CKM::Certificate::create(buffer, CKM::DataFormat::FORM_PEM);
748 CKM::Alias alias; //alias is not initialized
751 auto manager = CKM::Manager::create();
753 CKM_API_ERROR_INPUT_PARAM == (temp = manager->saveCertificate(alias, cert, CKM::Policy())),
754 "Error=" << CKM::ErrorToString(temp));
757 RUNNER_TEST(T12105_saveCertificate_empty_cert)
759 CKM::CertificateShPtr cert; //cert is not initialized
760 CKM::Alias alias = "empty-cert";
763 auto manager = CKM::Manager::create();
765 CKM_API_ERROR_INPUT_PARAM == (temp = manager->saveCertificate(alias, cert, CKM::Policy())),
766 "Error=" << CKM::ErrorToString(temp));
769 RUNNER_TEST(T12106_saveData_empty_alias)
771 std::string testData = "test data test data test data";
772 CKM::RawBuffer buffer(testData.begin(), testData.end());
776 auto manager = CKM::Manager::create();
778 CKM_API_ERROR_INPUT_PARAM == (temp = manager->saveData(alias, buffer, CKM::Policy())),
779 "Error=" << CKM::ErrorToString(temp));
782 RUNNER_TEST(T12107_saveData_empty_data)
784 CKM::RawBuffer buffer;
785 CKM::Alias alias = "empty-data";
788 auto manager = CKM::Manager::create();
790 CKM_API_ERROR_INPUT_PARAM == (temp = manager->saveData(alias, buffer, CKM::Policy())),
791 "Error=" << CKM::ErrorToString(temp));
795 * These test cases tests API when trying to get data from not existing alias
798 RUNNER_TEST(T12108_getKey_alias_not_exist)
801 CKM::Alias alias = "this-alias-not-exist";
804 auto manager = CKM::Manager::create();
806 CKM_API_ERROR_DB_ALIAS_UNKNOWN == (temp = manager->getKey(alias, "", key)),
807 "Error=" << CKM::ErrorToString(temp));
810 RUNNER_TEST(T12109_getCertificate_alias_not_exist)
812 CKM::CertificateShPtr certificate;
813 CKM::Alias alias = "this-alias-not-exist";
816 auto manager = CKM::Manager::create();
818 CKM_API_ERROR_DB_ALIAS_UNKNOWN == (temp = manager->getCertificate(alias, CKM::Password(), certificate)),
819 "Error=" << CKM::ErrorToString(temp));
822 RUNNER_TEST(T12110_getData_alias_not_exist)
825 auto manager = CKM::Manager::create();
826 CKM::RawBuffer buffer;
827 CKM::Alias alias("some alias");
829 CKM_API_ERROR_DB_ALIAS_UNKNOWN == (temp = manager->getData(alias, "", buffer)),
830 "Error=" << CKM::ErrorToString(temp));
834 * These test cases tests API when damaged keys are used
836 RUNNER_TEST(T12111_rsa_key_damaged)
839 auto manager = CKM::Manager::create();
841 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
842 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
843 // "BROKENBROKENBROKENBROKENBROKENTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT\n"
844 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
845 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
846 // "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
847 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
849 "-----END PUBLIC KEY-----";
851 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
852 auto key = CKM::Key::create(buffer);
853 CKM::Alias alias = "damaged-rsa";
856 NULL == key.get(), "Key is broken. It should be empty");
859 CKM_API_ERROR_INPUT_PARAM == (ret = manager->saveKey(alias, key, CKM::Policy())),
860 "Error=" << CKM::ErrorToString(ret));
863 RUNNER_TEST(T12112_rsa_key_too_short)
866 auto manager = CKM::Manager::create();
868 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
869 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
870 //"T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
871 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
872 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
873 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
874 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
876 "-----END PUBLIC KEY-----";
878 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
879 auto key = CKM::Key::create(buffer);
880 CKM::Alias alias = "short-rsa";
883 CKM_API_ERROR_INPUT_PARAM == (ret = manager->saveKey(alias, key, CKM::Policy())),
884 "Error=" << CKM::ErrorToString(ret));
887 RUNNER_TEST(T12113_deinit)
890 auto control = CKM::Control::create();
893 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
894 "Error=" << CKM::ErrorToString(temp));
896 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
897 "Error=" << CKM::ErrorToString(temp));
900 RUNNER_TEST_GROUP_INIT(T131_CKM_QUICK_SET_GET_TESTS);
902 RUNNER_TEST(T1311_init)
905 auto control = CKM::Control::create();
907 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "test-pass")),
908 "Error=" << CKM::ErrorToString(temp));
909 RUNNER_ASSERT_MSG(time(0) > 1405343457,
910 "Time error. Device date is before 14th of July 2014. You must set proper time on device before run this tests!");
912 struct hostent* he = gethostbyname("google.com");
914 RUNNER_ASSERT_MSG(he != NULL, "There is problem with translate domain google.com into ip address. Probably network "
915 "is not woking on the device. OCSP tests requires network access!");
918 RUNNER_TEST(T1312_get_chain)
920 std::string ee = "-----BEGIN CERTIFICATE-----\n"
921 "MIIF0TCCBLmgAwIBAgIQaPGTP4aS7Ut/WDNaBzdQrDANBgkqhkiG9w0BAQUFADCB\n"
922 "ujELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
923 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n"
924 "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMr\n"
925 "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTAeFw0x\n"
926 "NDAyMjAwMDAwMDBaFw0xNTAyMjAyMzU5NTlaMIHmMRMwEQYLKwYBBAGCNzwCAQMT\n"
927 "AlBMMR0wGwYDVQQPExRQcml2YXRlIE9yZ2FuaXphdGlvbjETMBEGA1UEBRMKMDAw\n"
928 "MDAyNTIzNzELMAkGA1UEBhMCUEwxDzANBgNVBBEUBjAwLTk1MDEUMBIGA1UECBML\n"
929 "bWF6b3dpZWNraWUxETAPBgNVBAcUCFdhcnN6YXdhMRYwFAYDVQQJFA1TZW5hdG9y\n"
930 "c2thIDE4MRMwEQYDVQQKFAptQmFuayBTLkEuMQwwCgYDVQQLFANESU4xGTAXBgNV\n"
931 "BAMUEHd3dy5tYmFuay5jb20ucGwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n"
932 "AoIBAQDph6x8V6xUW/+651+qHF+UmorH9uaz2ZrX2bIWiMKIJFmpDDHlxcapKkqE\n"
933 "BV04is83aiCpqKtc2ZHy2g4Hpj1eSF5BP2+OAlo0YUQZPIeRRdiMjmeAxw/ncBDx\n"
934 "9rQBuCJ4XTD6cqQox5SI0TASOZ+wyAEjbDRXzL73XqRAFZ1LOpb2ONkolS+RutMB\n"
935 "vshvCsWPeNe7eGLuOh6DyC6r1vX9xhw3xnjM2mTSvmtimgzSLacNGKqRrsucUgcb\n"
936 "0+O5C2jZAtAMLyZksL92cxmWbtVzUYzem4chjHu5cRxUlPNzUJWrrczueB7Ip4A8\n"
937 "aQuFMfNXYc0x+WLWjy//urypMKjhAgMBAAGjggGjMIIBnzAbBgNVHREEFDASghB3\n"
938 "d3cubWJhbmsuY29tLnBsMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgWgMB0GA1Ud\n"
939 "JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBEBgNVHSAEPTA7MDkGC2CGSAGG+EUB\n"
940 "BxcGMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9jcHMw\n"
941 "HQYDVR0OBBYEFN37iGaS7mZnENxZ9FGqNLR+QgoMMB8GA1UdIwQYMBaAFPyKULqe\n"
942 "uSVae1WFT5UAY4/pWGtDMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9FVlNlY3Vy\n"
943 "ZS1jcmwudmVyaXNpZ24uY29tL0VWU2VjdXJlMjAwNi5jcmwwfAYIKwYBBQUHAQEE\n"
944 "cDBuMC0GCCsGAQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC52ZXJpc2lnbi5j\n"
945 "b20wPQYIKwYBBQUHMAKGMWh0dHA6Ly9FVlNlY3VyZS1haWEudmVyaXNpZ24uY29t\n"
946 "L0VWU2VjdXJlMjAwNi5jZXIwDQYJKoZIhvcNAQEFBQADggEBAD0wO+rooUrIM4qp\n"
947 "PHhp+hkXK6WMQ2qzGOmbMcZjw0govg5vkzkefPDryIXXbrF8mRagiJNMSfNaWWeh\n"
948 "Cj41OV24EdUl0OLbFxNzcvub599zRs/apfaRLTfsmlmOgi0/YP305i+3tJ2ll946\n"
949 "P+qV1wXnXqTqEdIl4Ys3+1HmDCdTB1hoDwAAzqRVUXZ5+iiwPAU7R/LTHfMjV1ke\n"
950 "8jtNFfrorlZMCfVH/7eEnHJvVjOJt+YFe4aFMzE+DfuYIK7MH+olC2v79kBwbnEQ\n"
951 "fvHMA9gFwOYLUBBdSfcocp8EKZ+mRlNPGR/3LBrPeaQQ0GZEkxzRK+v/aNTuiYfr\n"
953 "-----END CERTIFICATE-----\n";
956 "-----BEGIN CERTIFICATE-----\n"
957 "MIIF5DCCBMygAwIBAgIQW3dZxheE4V7HJ8AylSkoazANBgkqhkiG9w0BAQUFADCB\n"
958 "yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
959 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\n"
960 "U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\n"
961 "ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\n"
962 "aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMTYxMTA3MjM1OTU5WjCBujEL\n"
963 "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\n"
964 "ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg\n"
965 "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMrVmVy\n"
966 "aVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTCCASIwDQYJ\n"
967 "KoZIhvcNAQEBBQADggEPADCCAQoCggEBAJjboFXrnP0XeeOabhQdsVuYI4cWbod2\n"
968 "nLU4O7WgerQHYwkZ5iqISKnnnbYwWgiXDOyq5BZpcmIjmvt6VCiYxQwtt9citsj5\n"
969 "OBfH3doxRpqUFI6e7nigtyLUSVSXTeV0W5K87Gws3+fBthsaVWtmCAN/Ra+aM/EQ\n"
970 "wGyZSpIkMQht3QI+YXZ4eLbtfjeubPOJ4bfh3BXMt1afgKCxBX9ONxX/ty8ejwY4\n"
971 "P1C3aSijtWZfNhpSSENmUt+ikk/TGGC+4+peGXEFv54cbGhyJW+ze3PJbb0S/5tB\n"
972 "Ml706H7FC6NMZNFOvCYIZfsZl1h44TO/7Wg+sSdFb8Di7Jdp91zT91ECAwEAAaOC\n"
973 "AdIwggHOMB0GA1UdDgQWBBT8ilC6nrklWntVhU+VAGOP6VhrQzASBgNVHRMBAf8E\n"
974 "CDAGAQH/AgEAMD0GA1UdIAQ2MDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRw\n"
975 "czovL3d3dy52ZXJpc2lnbi5jb20vY3BzMD0GA1UdHwQ2MDQwMqAwoC6GLGh0dHA6\n"
976 "Ly9FVlNlY3VyZS1jcmwudmVyaXNpZ24uY29tL3BjYTMtZzUuY3JsMA4GA1UdDwEB\n"
977 "/wQEAwIBBjARBglghkgBhvhCAQEEBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZ\n"
978 "MFcwVRYJaW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7\n"
979 "GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwKQYDVR0R\n"
980 "BCIwIKQeMBwxGjAYBgNVBAMTEUNsYXNzM0NBMjA0OC0xLTQ3MD0GCCsGAQUFBwEB\n"
981 "BDEwLzAtBggrBgEFBQcwAYYhaHR0cDovL0VWU2VjdXJlLW9jc3AudmVyaXNpZ24u\n"
982 "Y29tMB8GA1UdIwQYMBaAFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqGSIb3DQEB\n"
983 "BQUAA4IBAQCWovp/5j3t1CvOtxU/wHIDX4u6FpAl98KD2Md1NGNoElMMU4l7yVYJ\n"
984 "p8M2RE4O0GJis4b66KGbNGeNUyIXPv2s7mcuQ+JdfzOE8qJwwG6Cl8A0/SXGI3/t\n"
985 "5rDFV0OEst4t8dD2SB8UcVeyrDHhlyQjyRNddOVG7wl8nuGZMQoIeRuPcZ8XZsg4\n"
986 "z+6Ml7YGuXNG5NOUweVgtSV1LdlpMezNlsOjdv3odESsErlNv1HoudRETifLriDR\n"
987 "fip8tmNHnna6l9AW5wtsbfdDbzMLKTB3+p359U64drPNGLT5IO892+bKrZvQTtKH\n"
988 "qQ2mRHNQ3XBb7a1+Srwi1agm5MKFIA3Z\n"
989 "-----END CERTIFICATE-----\n";
991 auto cert = CKM::Certificate::create(CKM::RawBuffer(ee.begin(), ee.end()), CKM::DataFormat::FORM_PEM);
992 auto cert1 = CKM::Certificate::create(CKM::RawBuffer(im.begin(), im.end()), CKM::DataFormat::FORM_PEM);
993 CKM::CertificateShPtrVector certVector = {cert1};
994 CKM::CertificateShPtrVector certChain;
997 auto manager = CKM::Manager::create();
999 RUNNER_ASSERT_MSG(NULL != cert.get(), "Certificate should not be empty");
1000 RUNNER_ASSERT_MSG(false != cert1.get(), "Certificate should not be empty");
1003 CKM_API_ERROR_VERIFICATION_FAILED == (tmp = manager->getCertificateChain(cert, CKM::CertificateShPtrVector(), certChain)),
1004 "Error=" << CKM::ErrorToString(tmp));
1007 0 == certChain.size(),
1008 "Wrong size of certificate chain.");
1011 CKM_API_SUCCESS == (tmp = manager->getCertificateChain(cert, certVector, certChain)),
1012 "Error=" << CKM::ErrorToString(tmp));
1015 3 == certChain.size(),
1016 "Wrong size of certificate chain.");
1019 RUNNER_TEST(T1313_get_chain_with_alias)
1021 std::string ee = "-----BEGIN CERTIFICATE-----\n"
1022 "MIIF0TCCBLmgAwIBAgIQaPGTP4aS7Ut/WDNaBzdQrDANBgkqhkiG9w0BAQUFADCB\n"
1023 "ujELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
1024 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n"
1025 "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMr\n"
1026 "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTAeFw0x\n"
1027 "NDAyMjAwMDAwMDBaFw0xNTAyMjAyMzU5NTlaMIHmMRMwEQYLKwYBBAGCNzwCAQMT\n"
1028 "AlBMMR0wGwYDVQQPExRQcml2YXRlIE9yZ2FuaXphdGlvbjETMBEGA1UEBRMKMDAw\n"
1029 "MDAyNTIzNzELMAkGA1UEBhMCUEwxDzANBgNVBBEUBjAwLTk1MDEUMBIGA1UECBML\n"
1030 "bWF6b3dpZWNraWUxETAPBgNVBAcUCFdhcnN6YXdhMRYwFAYDVQQJFA1TZW5hdG9y\n"
1031 "c2thIDE4MRMwEQYDVQQKFAptQmFuayBTLkEuMQwwCgYDVQQLFANESU4xGTAXBgNV\n"
1032 "BAMUEHd3dy5tYmFuay5jb20ucGwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n"
1033 "AoIBAQDph6x8V6xUW/+651+qHF+UmorH9uaz2ZrX2bIWiMKIJFmpDDHlxcapKkqE\n"
1034 "BV04is83aiCpqKtc2ZHy2g4Hpj1eSF5BP2+OAlo0YUQZPIeRRdiMjmeAxw/ncBDx\n"
1035 "9rQBuCJ4XTD6cqQox5SI0TASOZ+wyAEjbDRXzL73XqRAFZ1LOpb2ONkolS+RutMB\n"
1036 "vshvCsWPeNe7eGLuOh6DyC6r1vX9xhw3xnjM2mTSvmtimgzSLacNGKqRrsucUgcb\n"
1037 "0+O5C2jZAtAMLyZksL92cxmWbtVzUYzem4chjHu5cRxUlPNzUJWrrczueB7Ip4A8\n"
1038 "aQuFMfNXYc0x+WLWjy//urypMKjhAgMBAAGjggGjMIIBnzAbBgNVHREEFDASghB3\n"
1039 "d3cubWJhbmsuY29tLnBsMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgWgMB0GA1Ud\n"
1040 "JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBEBgNVHSAEPTA7MDkGC2CGSAGG+EUB\n"
1041 "BxcGMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9jcHMw\n"
1042 "HQYDVR0OBBYEFN37iGaS7mZnENxZ9FGqNLR+QgoMMB8GA1UdIwQYMBaAFPyKULqe\n"
1043 "uSVae1WFT5UAY4/pWGtDMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9FVlNlY3Vy\n"
1044 "ZS1jcmwudmVyaXNpZ24uY29tL0VWU2VjdXJlMjAwNi5jcmwwfAYIKwYBBQUHAQEE\n"
1045 "cDBuMC0GCCsGAQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC52ZXJpc2lnbi5j\n"
1046 "b20wPQYIKwYBBQUHMAKGMWh0dHA6Ly9FVlNlY3VyZS1haWEudmVyaXNpZ24uY29t\n"
1047 "L0VWU2VjdXJlMjAwNi5jZXIwDQYJKoZIhvcNAQEFBQADggEBAD0wO+rooUrIM4qp\n"
1048 "PHhp+hkXK6WMQ2qzGOmbMcZjw0govg5vkzkefPDryIXXbrF8mRagiJNMSfNaWWeh\n"
1049 "Cj41OV24EdUl0OLbFxNzcvub599zRs/apfaRLTfsmlmOgi0/YP305i+3tJ2ll946\n"
1050 "P+qV1wXnXqTqEdIl4Ys3+1HmDCdTB1hoDwAAzqRVUXZ5+iiwPAU7R/LTHfMjV1ke\n"
1051 "8jtNFfrorlZMCfVH/7eEnHJvVjOJt+YFe4aFMzE+DfuYIK7MH+olC2v79kBwbnEQ\n"
1052 "fvHMA9gFwOYLUBBdSfcocp8EKZ+mRlNPGR/3LBrPeaQQ0GZEkxzRK+v/aNTuiYfr\n"
1054 "-----END CERTIFICATE-----\n";
1057 "-----BEGIN CERTIFICATE-----\n"
1058 "MIIF5DCCBMygAwIBAgIQW3dZxheE4V7HJ8AylSkoazANBgkqhkiG9w0BAQUFADCB\n"
1059 "yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
1060 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\n"
1061 "U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\n"
1062 "ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\n"
1063 "aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMTYxMTA3MjM1OTU5WjCBujEL\n"
1064 "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\n"
1065 "ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg\n"
1066 "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMrVmVy\n"
1067 "aVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTCCASIwDQYJ\n"
1068 "KoZIhvcNAQEBBQADggEPADCCAQoCggEBAJjboFXrnP0XeeOabhQdsVuYI4cWbod2\n"
1069 "nLU4O7WgerQHYwkZ5iqISKnnnbYwWgiXDOyq5BZpcmIjmvt6VCiYxQwtt9citsj5\n"
1070 "OBfH3doxRpqUFI6e7nigtyLUSVSXTeV0W5K87Gws3+fBthsaVWtmCAN/Ra+aM/EQ\n"
1071 "wGyZSpIkMQht3QI+YXZ4eLbtfjeubPOJ4bfh3BXMt1afgKCxBX9ONxX/ty8ejwY4\n"
1072 "P1C3aSijtWZfNhpSSENmUt+ikk/TGGC+4+peGXEFv54cbGhyJW+ze3PJbb0S/5tB\n"
1073 "Ml706H7FC6NMZNFOvCYIZfsZl1h44TO/7Wg+sSdFb8Di7Jdp91zT91ECAwEAAaOC\n"
1074 "AdIwggHOMB0GA1UdDgQWBBT8ilC6nrklWntVhU+VAGOP6VhrQzASBgNVHRMBAf8E\n"
1075 "CDAGAQH/AgEAMD0GA1UdIAQ2MDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRw\n"
1076 "czovL3d3dy52ZXJpc2lnbi5jb20vY3BzMD0GA1UdHwQ2MDQwMqAwoC6GLGh0dHA6\n"
1077 "Ly9FVlNlY3VyZS1jcmwudmVyaXNpZ24uY29tL3BjYTMtZzUuY3JsMA4GA1UdDwEB\n"
1078 "/wQEAwIBBjARBglghkgBhvhCAQEEBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZ\n"
1079 "MFcwVRYJaW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7\n"
1080 "GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwKQYDVR0R\n"
1081 "BCIwIKQeMBwxGjAYBgNVBAMTEUNsYXNzM0NBMjA0OC0xLTQ3MD0GCCsGAQUFBwEB\n"
1082 "BDEwLzAtBggrBgEFBQcwAYYhaHR0cDovL0VWU2VjdXJlLW9jc3AudmVyaXNpZ24u\n"
1083 "Y29tMB8GA1UdIwQYMBaAFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqGSIb3DQEB\n"
1084 "BQUAA4IBAQCWovp/5j3t1CvOtxU/wHIDX4u6FpAl98KD2Md1NGNoElMMU4l7yVYJ\n"
1085 "p8M2RE4O0GJis4b66KGbNGeNUyIXPv2s7mcuQ+JdfzOE8qJwwG6Cl8A0/SXGI3/t\n"
1086 "5rDFV0OEst4t8dD2SB8UcVeyrDHhlyQjyRNddOVG7wl8nuGZMQoIeRuPcZ8XZsg4\n"
1087 "z+6Ml7YGuXNG5NOUweVgtSV1LdlpMezNlsOjdv3odESsErlNv1HoudRETifLriDR\n"
1088 "fip8tmNHnna6l9AW5wtsbfdDbzMLKTB3+p359U64drPNGLT5IO892+bKrZvQTtKH\n"
1089 "qQ2mRHNQ3XBb7a1+Srwi1agm5MKFIA3Z\n"
1090 "-----END CERTIFICATE-----\n";
1092 auto cert = CKM::Certificate::create(CKM::RawBuffer(ee.begin(), ee.end()), CKM::DataFormat::FORM_PEM);
1093 auto cert1 = CKM::Certificate::create(CKM::RawBuffer(im.begin(), im.end()), CKM::DataFormat::FORM_PEM);
1094 CKM::CertificateShPtrVector certChain;
1095 CKM::AliasVector aliasVector;
1096 CKM::Alias alias("imcert");
1099 auto manager = CKM::Manager::create();
1101 RUNNER_ASSERT_MSG(NULL != cert.get(), "Certificate should not be empty");
1102 RUNNER_ASSERT_MSG(NULL != cert1.get(), "Certificate should not be empty");
1105 CKM_API_ERROR_VERIFICATION_FAILED == (tmp = manager->getCertificateChain(cert, aliasVector, certChain)),
1106 "Error=" << CKM::ErrorToString(tmp));
1109 0 == certChain.size(),
1110 "Wrong size of certificate chain.");
1113 CKM_API_SUCCESS == (tmp = manager->saveCertificate(alias, cert1, CKM::Policy())),
1114 "Error=" << CKM::ErrorToString(tmp));
1116 aliasVector.push_back(alias);
1119 CKM_API_SUCCESS == (tmp = manager->getCertificateChain(cert, aliasVector, certChain)),
1120 "Error=" << CKM::ErrorToString(tmp));
1123 3 == certChain.size(),
1124 "Wrong size of certificate chain.");
1127 RUNNER_TEST(T1314_ocsp_check)
1129 std::string ee = "-----BEGIN CERTIFICATE-----\n"
1130 "MIIF0TCCBLmgAwIBAgIQaPGTP4aS7Ut/WDNaBzdQrDANBgkqhkiG9w0BAQUFADCB\n"
1131 "ujELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
1132 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n"
1133 "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMr\n"
1134 "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTAeFw0x\n"
1135 "NDAyMjAwMDAwMDBaFw0xNTAyMjAyMzU5NTlaMIHmMRMwEQYLKwYBBAGCNzwCAQMT\n"
1136 "AlBMMR0wGwYDVQQPExRQcml2YXRlIE9yZ2FuaXphdGlvbjETMBEGA1UEBRMKMDAw\n"
1137 "MDAyNTIzNzELMAkGA1UEBhMCUEwxDzANBgNVBBEUBjAwLTk1MDEUMBIGA1UECBML\n"
1138 "bWF6b3dpZWNraWUxETAPBgNVBAcUCFdhcnN6YXdhMRYwFAYDVQQJFA1TZW5hdG9y\n"
1139 "c2thIDE4MRMwEQYDVQQKFAptQmFuayBTLkEuMQwwCgYDVQQLFANESU4xGTAXBgNV\n"
1140 "BAMUEHd3dy5tYmFuay5jb20ucGwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n"
1141 "AoIBAQDph6x8V6xUW/+651+qHF+UmorH9uaz2ZrX2bIWiMKIJFmpDDHlxcapKkqE\n"
1142 "BV04is83aiCpqKtc2ZHy2g4Hpj1eSF5BP2+OAlo0YUQZPIeRRdiMjmeAxw/ncBDx\n"
1143 "9rQBuCJ4XTD6cqQox5SI0TASOZ+wyAEjbDRXzL73XqRAFZ1LOpb2ONkolS+RutMB\n"
1144 "vshvCsWPeNe7eGLuOh6DyC6r1vX9xhw3xnjM2mTSvmtimgzSLacNGKqRrsucUgcb\n"
1145 "0+O5C2jZAtAMLyZksL92cxmWbtVzUYzem4chjHu5cRxUlPNzUJWrrczueB7Ip4A8\n"
1146 "aQuFMfNXYc0x+WLWjy//urypMKjhAgMBAAGjggGjMIIBnzAbBgNVHREEFDASghB3\n"
1147 "d3cubWJhbmsuY29tLnBsMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgWgMB0GA1Ud\n"
1148 "JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBEBgNVHSAEPTA7MDkGC2CGSAGG+EUB\n"
1149 "BxcGMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9jcHMw\n"
1150 "HQYDVR0OBBYEFN37iGaS7mZnENxZ9FGqNLR+QgoMMB8GA1UdIwQYMBaAFPyKULqe\n"
1151 "uSVae1WFT5UAY4/pWGtDMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9FVlNlY3Vy\n"
1152 "ZS1jcmwudmVyaXNpZ24uY29tL0VWU2VjdXJlMjAwNi5jcmwwfAYIKwYBBQUHAQEE\n"
1153 "cDBuMC0GCCsGAQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC52ZXJpc2lnbi5j\n"
1154 "b20wPQYIKwYBBQUHMAKGMWh0dHA6Ly9FVlNlY3VyZS1haWEudmVyaXNpZ24uY29t\n"
1155 "L0VWU2VjdXJlMjAwNi5jZXIwDQYJKoZIhvcNAQEFBQADggEBAD0wO+rooUrIM4qp\n"
1156 "PHhp+hkXK6WMQ2qzGOmbMcZjw0govg5vkzkefPDryIXXbrF8mRagiJNMSfNaWWeh\n"
1157 "Cj41OV24EdUl0OLbFxNzcvub599zRs/apfaRLTfsmlmOgi0/YP305i+3tJ2ll946\n"
1158 "P+qV1wXnXqTqEdIl4Ys3+1HmDCdTB1hoDwAAzqRVUXZ5+iiwPAU7R/LTHfMjV1ke\n"
1159 "8jtNFfrorlZMCfVH/7eEnHJvVjOJt+YFe4aFMzE+DfuYIK7MH+olC2v79kBwbnEQ\n"
1160 "fvHMA9gFwOYLUBBdSfcocp8EKZ+mRlNPGR/3LBrPeaQQ0GZEkxzRK+v/aNTuiYfr\n"
1162 "-----END CERTIFICATE-----\n";
1165 "-----BEGIN CERTIFICATE-----\n"
1166 "MIIF5DCCBMygAwIBAgIQW3dZxheE4V7HJ8AylSkoazANBgkqhkiG9w0BAQUFADCB\n"
1167 "yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
1168 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\n"
1169 "U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\n"
1170 "ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\n"
1171 "aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMTYxMTA3MjM1OTU5WjCBujEL\n"
1172 "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\n"
1173 "ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg\n"
1174 "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMrVmVy\n"
1175 "aVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTCCASIwDQYJ\n"
1176 "KoZIhvcNAQEBBQADggEPADCCAQoCggEBAJjboFXrnP0XeeOabhQdsVuYI4cWbod2\n"
1177 "nLU4O7WgerQHYwkZ5iqISKnnnbYwWgiXDOyq5BZpcmIjmvt6VCiYxQwtt9citsj5\n"
1178 "OBfH3doxRpqUFI6e7nigtyLUSVSXTeV0W5K87Gws3+fBthsaVWtmCAN/Ra+aM/EQ\n"
1179 "wGyZSpIkMQht3QI+YXZ4eLbtfjeubPOJ4bfh3BXMt1afgKCxBX9ONxX/ty8ejwY4\n"
1180 "P1C3aSijtWZfNhpSSENmUt+ikk/TGGC+4+peGXEFv54cbGhyJW+ze3PJbb0S/5tB\n"
1181 "Ml706H7FC6NMZNFOvCYIZfsZl1h44TO/7Wg+sSdFb8Di7Jdp91zT91ECAwEAAaOC\n"
1182 "AdIwggHOMB0GA1UdDgQWBBT8ilC6nrklWntVhU+VAGOP6VhrQzASBgNVHRMBAf8E\n"
1183 "CDAGAQH/AgEAMD0GA1UdIAQ2MDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRw\n"
1184 "czovL3d3dy52ZXJpc2lnbi5jb20vY3BzMD0GA1UdHwQ2MDQwMqAwoC6GLGh0dHA6\n"
1185 "Ly9FVlNlY3VyZS1jcmwudmVyaXNpZ24uY29tL3BjYTMtZzUuY3JsMA4GA1UdDwEB\n"
1186 "/wQEAwIBBjARBglghkgBhvhCAQEEBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZ\n"
1187 "MFcwVRYJaW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7\n"
1188 "GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwKQYDVR0R\n"
1189 "BCIwIKQeMBwxGjAYBgNVBAMTEUNsYXNzM0NBMjA0OC0xLTQ3MD0GCCsGAQUFBwEB\n"
1190 "BDEwLzAtBggrBgEFBQcwAYYhaHR0cDovL0VWU2VjdXJlLW9jc3AudmVyaXNpZ24u\n"
1191 "Y29tMB8GA1UdIwQYMBaAFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqGSIb3DQEB\n"
1192 "BQUAA4IBAQCWovp/5j3t1CvOtxU/wHIDX4u6FpAl98KD2Md1NGNoElMMU4l7yVYJ\n"
1193 "p8M2RE4O0GJis4b66KGbNGeNUyIXPv2s7mcuQ+JdfzOE8qJwwG6Cl8A0/SXGI3/t\n"
1194 "5rDFV0OEst4t8dD2SB8UcVeyrDHhlyQjyRNddOVG7wl8nuGZMQoIeRuPcZ8XZsg4\n"
1195 "z+6Ml7YGuXNG5NOUweVgtSV1LdlpMezNlsOjdv3odESsErlNv1HoudRETifLriDR\n"
1196 "fip8tmNHnna6l9AW5wtsbfdDbzMLKTB3+p359U64drPNGLT5IO892+bKrZvQTtKH\n"
1197 "qQ2mRHNQ3XBb7a1+Srwi1agm5MKFIA3Z\n"
1198 "-----END CERTIFICATE-----\n";
1200 auto cert = CKM::Certificate::create(CKM::RawBuffer(ee.begin(), ee.end()), CKM::DataFormat::FORM_PEM);
1201 auto cert1 = CKM::Certificate::create(CKM::RawBuffer(im.begin(), im.end()), CKM::DataFormat::FORM_PEM);
1202 CKM::CertificateShPtrVector certVector = {cert1};
1203 CKM::CertificateShPtrVector certChain;
1206 auto manager = CKM::Manager::create();
1208 RUNNER_ASSERT_MSG(NULL != cert.get(), "Certificate should not be empty");
1209 RUNNER_ASSERT_MSG(NULL != cert1.get(), "Certificate should not be empty");
1212 CKM_API_ERROR_VERIFICATION_FAILED == (tmp = manager->getCertificateChain(cert, CKM::CertificateShPtrVector(), certChain)),
1213 "Error=" << CKM::ErrorToString(tmp));
1216 0 == certChain.size(),
1217 "Wrong size of certificate chain.");
1220 CKM_API_SUCCESS == (tmp = manager->getCertificateChain(cert, certVector, certChain)),
1221 "Error=" << CKM::ErrorToString(tmp));
1224 3 == certChain.size(),
1225 "Wrong size of certificate chain.");
1229 CKM_API_SUCCESS == (tmp = manager->ocspCheck(certChain, status)),
1230 "Error=" << CKM::ErrorToString(tmp));
1232 RUNNER_ASSERT_MSG(CKM_API_OCSP_STATUS_GOOD == status, "Verfication failed");
1235 RUNNER_TEST(T1315_deinit)
1238 auto control = CKM::Control::create();
1241 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
1242 "Error=" << CKM::ErrorToString(temp));
1244 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
1245 "Error=" << CKM::ErrorToString(temp));
1248 RUNNER_TEST_GROUP_INIT(T141_CREATE_AND_VERIFY_SIGNATURE);
1250 RUNNER_TEST(T1411_init)
1253 auto control = CKM::Control::create();
1255 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "test-pass")),
1256 "Error=" << CKM::ErrorToString(temp));
1259 RUNNER_TEST(T1412_rsa_key_create_verify)
1262 auto manager = CKM::Manager::create();
1264 std::string prv = "-----BEGIN RSA PRIVATE KEY-----\n"
1265 "Proc-Type: 4,ENCRYPTED\n"
1266 "DEK-Info: DES-EDE3-CBC,6C6507B11671DABC\n"
1268 "YiKNviNqc/V/i241CKtAVsNckesE0kcaka3VrY7ApXR+Va93YoEwVQ8gB9cE/eHH\n"
1269 "S0j3ZS1PAVFM/qo4ZnPdMzaSLvTQw0GAL90wWgF3XQ+feMnWyBObEoQdGXE828TB\n"
1270 "SLz4UOIQ55Dx6JSWTfEhwAlPs2cEWD14xvuxPzAEzBIYmWmBBsCN94YgFeRTzjH0\n"
1271 "TImoYVMN60GgOfZWw6rXq9RaV5dY0Y6F1piypCLGD35VaXAutdHIDvwUGECPm7SN\n"
1272 "w05jRro53E1vb4mYlZEY/bs4q7XEOI5+ZKT76Xn0oEJNX1KRL1h2q8fgUkm5j40M\n"
1273 "uQj71aLR9KyIoQARwGLeRy09tLVjH3fj66CCMqaPcxcIRIyWi5yYBB0s53ipm6A9\n"
1274 "CYuyc7MS2C0pOdWKsDvYsHR/36KUiIdPuhF4AbaTqqO0eWeuP7Na7dGK56Fl+ooi\n"
1275 "cUpJr7cIqMl2vL25B0jW7d4TB3zwCEkVVD1fBPeNoZWo30z4bILcBqjjPkQfHZ2e\n"
1276 "xNraG3qI4FHjoPT8JEE8p+PgwaMoINlICyIMKiCdvwz9yEnsHPy7FkmatpS+jFoS\n"
1277 "mg8R9vMwgK/HGEm0dmb/7/a0XsG2jCDm6cOmJdZJFQ8JW7hFs3eOHpNlQYDChG2D\n"
1278 "A1ExslqBtbpicywTZhzFdYU/hxeCr4UqcY27Zmhr4JlBPMyvadWKeOqCamWepjbT\n"
1279 "T/MhWJbmWgZbI5s5sbpu7cOYubQcUIEsTaQXGx/KEzGo1HLn9tzSeQfP/nqjAD/L\n"
1280 "T5t1Mb8o4LuV/fGIT33Q3i2FospJMqp2JINNzG18I6Fjo08PTvJ3row40Rb76+lJ\n"
1281 "wN1IBthgBgsgsOdB6XNc56sV+uq2TACsNNWw+JnFRCkCQgfF/KUrvN+WireWq88B\n"
1282 "9UPG+Hbans5A6K+y1a+bzfdYnKws7x8wNRyPxb7Vb2t9ZTl5PBorPLVGsjgf9N5X\n"
1283 "tCdBlfJsUdXot+EOxrIczV5zx0JIB1Y9hrDG07RYkzPuJKxkW7skqeLo8oWGVpaQ\n"
1284 "LGWvuebky1R75hcSuL3e4QHfjBHPdQ31fScB884tqkbhBAWr2nT9bYEmyT170bno\n"
1285 "8QkyOSb99xZBX55sLDHs9p61sTJr2C9Lz/KaWQs+3hTkpwSjSRyjEMH2n491qiQX\n"
1286 "G+kvLEnvtR8sl9zinorj/RfsxyPntAxudfY3qaYUu2QkLvVdfTVUVbxS/Fg8f7B3\n"
1287 "hEjCtpKgFjPxQuHE3didNOr5xM7mkmLN/QA7yHVgdpE64T5mFgC3JcVRpcR7zBPH\n"
1288 "3OeXHgjrhDfN8UIX/cq6gNgD8w7O0rhHa3mEXI1xP14ykPcJ7wlRuLm9P3fwx5A2\n"
1289 "jQrVKJKw1Nzummmspn4VOpJY3LkH4Sxo4e7Soo1l1cxJpzmERwgMF+vGz1L70+DG\n"
1290 "M0hVrz1PxlOsBBFgcdS4TB91DIs/RcFDqrJ4gOPNKCgBP+rgTXXLFcxUwJfE3lKg\n"
1291 "Kmpwdne6FuQYX3eyRVAmPgOHbJuRQCh/V4fYo51UxCcEKeKy6UgOPEJlXksWGbH5\n"
1292 "VFmlytYW6dFKJvjltSmK6L2r+TlyEQoXwTqe4bkfhB2LniDEq28hKQ==\n"
1293 "-----END RSA PRIVATE KEY-----\n";
1295 std::string pub = "-----BEGIN PUBLIC KEY-----\n"
1296 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
1297 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
1298 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
1299 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
1300 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
1301 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
1303 "-----END PUBLIC KEY-----\n";
1305 std::string message = "message test";
1307 CKM::Alias aliasPub = "pub1";
1308 CKM::Alias aliasPrv = "prv1";
1309 CKM::Password password = "1234";
1310 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
1311 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
1312 CKM::RawBuffer signature;
1314 auto keyPub = CKM::Key::create(CKM::RawBuffer(pub.begin(), pub.end()));
1315 auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()), password);
1317 RUNNER_ASSERT_MSG(NULL != keyPub.get(),
1318 "Key is empty. Failed to import public key.");
1319 RUNNER_ASSERT_MSG(NULL != keyPrv.get(),
1320 "Key is empty. Failed to import private key.");
1323 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPub, keyPub, CKM::Policy())),
1324 "Error=" << CKM::ErrorToString(temp));
1326 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
1327 "Error=" << CKM::ErrorToString(temp));
1330 CKM_API_SUCCESS == (temp = manager->createSignature(
1333 CKM::RawBuffer(message.begin(), message.end()),
1337 "Error=" << CKM::ErrorToString(temp));
1340 CKM_API_SUCCESS == (temp = manager->verifySignature(
1343 CKM::RawBuffer(message.begin(), message.end()),
1347 "Error=" << CKM::ErrorToString(temp));
1350 RUNNER_TEST(T1413_rsa_key_create_verify_negative)
1353 auto manager = CKM::Manager::create();
1354 std::string message = "message asdfaslkdfjlksadjf test";
1356 CKM::Alias aliasPub = "pub1";
1357 CKM::Alias aliasPrv = "prv1";
1359 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
1360 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
1361 CKM::RawBuffer signature;
1364 CKM_API_SUCCESS == (temp = manager->createSignature(
1367 CKM::RawBuffer(message.begin(), message.end()),
1371 "Error=" << CKM::ErrorToString(temp));
1374 CKM_API_SUCCESS == (temp = manager->verifySignature(
1377 CKM::RawBuffer(message.begin(), message.end()),
1381 "Error=" << CKM::ErrorToString(temp));
1383 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
1384 memcpy((void*)signature.data(), "BROKEN", 6);
1387 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
1390 CKM::RawBuffer(message.begin(), message.end()),
1394 "Error=" << CKM::ErrorToString(temp));
1397 RUNNER_TEST(T1414_ec_key_create_verify)
1400 auto manager = CKM::Manager::create();
1402 std::string prv = "-----BEGIN EC PRIVATE KEY-----\n"
1403 "MHQCAQEEIJNud6U4h8EM1rASn4W5vQOJELTaVPQTUiESaBULvQUVoAcGBSuBBAAK\n"
1404 "oUQDQgAEL1R+hgjiFrdjbUKRNOxUG8ze9nveD9zT05YHeT7vK0w08AUL1HCH5nFV\n"
1405 "ljePBYSxe6CybFiseayaxRxjA+iF1g==\n"
1406 "-----END EC PRIVATE KEY-----\n";
1408 std::string pub = "-----BEGIN PUBLIC KEY-----\n"
1409 "MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEL1R+hgjiFrdjbUKRNOxUG8ze9nveD9zT\n"
1410 "05YHeT7vK0w08AUL1HCH5nFVljePBYSxe6CybFiseayaxRxjA+iF1g==\n"
1411 "-----END PUBLIC KEY-----\n";
1413 std::string message = "message test";
1415 CKM::Alias aliasPub = "ecpub2";
1416 CKM::Alias aliasPrv = "ecprv2";
1417 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
1418 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
1419 CKM::RawBuffer signature;
1421 auto keyPub = CKM::Key::create(CKM::RawBuffer(pub.begin(), pub.end()));
1422 auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()));
1424 RUNNER_ASSERT_MSG(NULL != keyPub.get(),
1425 "Key is empty. Failed to import public key.");
1426 RUNNER_ASSERT_MSG(NULL != keyPrv.get(),
1427 "Key is empty. Failed to import private key.");
1430 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPub, keyPub, CKM::Policy())),
1431 "Error=" << CKM::ErrorToString(temp));
1433 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
1434 "Error=" << CKM::ErrorToString(temp));
1437 CKM_API_SUCCESS == (temp = manager->createSignature(
1440 CKM::RawBuffer(message.begin(), message.end()),
1444 "Error=" << CKM::ErrorToString(temp));
1447 CKM_API_SUCCESS == (temp = manager->verifySignature(
1450 CKM::RawBuffer(message.begin(), message.end()),
1454 "Error=" << CKM::ErrorToString(temp));
1456 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
1458 memcpy((void*)signature.data(), "BROKEN", 6);
1461 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
1464 CKM::RawBuffer(message.begin(), message.end()),
1468 "Error=" << CKM::ErrorToString(temp));
1471 RUNNER_TEST(T1415_rsa_cert_create_verify_signature)
1474 auto manager = CKM::Manager::create();
1477 "-----BEGIN RSA PRIVATE KEY-----\n"
1478 "MIICXQIBAAKBgQDCKb9BkTdOjCTXKPi/H5FSGuyrgzORBtR3nCTg7SRnL47zNGEj\n"
1479 "l2wkgsY9ZO3UJHm0gy5KMjWeCuUVkSD3G46J9obg1bYJivCQBJKxfieA8sWOtNq1\n"
1480 "M8emHGK8o3sjaRklrngmk2xSCs5vFJVlCluzAYUmrPDm64C3+n4yW4pBCQIDAQAB\n"
1481 "AoGAd1IWgiHO3kuLvFome7XXpaB8P27SutZ6rcLcewnhLDRy4g0XgTrmL43abBJh\n"
1482 "gdSkooVXZity/dvuKpHUs2dQ8W8zYiFFsHfu9qqLmLP6SuBPyUCvlUDH5BGfjjxI\n"
1483 "5qGWIowj/qGHKpbQ7uB+Oe2BHwbHao0zFZIkfKqY0mX9U00CQQDwF/4zQcGS1RX/\n"
1484 "229gowTsvSGVmm8cy1jGst6xkueEuOEZ/AVPO1fjavz+nTziUk4E5lZHAj18L6Hl\n"
1485 "iO29LRujAkEAzwbEWVhfTJewCZIFf3sY3ifXhGZhVKDHVzPBNyoft8Z+09DMHTJb\n"
1486 "EYg85MIbR73aUyIWsEci/CPk6LPRNv47YwJAHtQF2NEFqPPhakPjzjXAaSFz0YDN\n"
1487 "6ZWWpZTMEWL6hUkz5iE9EUpeY54WNB8+dRT6XZix1VZNTMfU8uMdG6BSHwJBAKYM\n"
1488 "gm47AGz5eVujwD8op6CACk+KomRzdI+P1lh9s+T+E3mnDiAY5IxiXp0Ix0K6lyN4\n"
1489 "wwPuerQLwi2XFKZsMYsCQQDOiSQFP9PfXh9kFzN6e89LxOdnqC/r9i5GDB3ea8eL\n"
1490 "SCRprpzqOXZvOP1HBAEjsJ6k4f8Dqj1fm+y8ZcgAZUPr\n"
1491 "-----END RSA PRIVATE KEY-----\n";
1494 "-----BEGIN CERTIFICATE-----\n"
1495 "MIICijCCAfOgAwIBAgIJAMvaNHQ1ozT8MA0GCSqGSIb3DQEBBQUAMF4xCzAJBgNV\n"
1496 "BAYTAlBMMQ0wCwYDVQQIDARMb2R6MQ0wCwYDVQQHDARMb2R6MRAwDgYDVQQKDAdT\n"
1497 "YW1zdW5nMREwDwYDVQQLDAhTZWN1cml0eTEMMAoGA1UEAwwDQ0tNMB4XDTE0MDcw\n"
1498 "MjEyNDE0N1oXDTE3MDcwMTEyNDE0N1owXjELMAkGA1UEBhMCUEwxDTALBgNVBAgM\n"
1499 "BExvZHoxDTALBgNVBAcMBExvZHoxEDAOBgNVBAoMB1NhbXN1bmcxETAPBgNVBAsM\n"
1500 "CFNlY3VyaXR5MQwwCgYDVQQDDANDS00wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ\n"
1501 "AoGBAMIpv0GRN06MJNco+L8fkVIa7KuDM5EG1HecJODtJGcvjvM0YSOXbCSCxj1k\n"
1502 "7dQkebSDLkoyNZ4K5RWRIPcbjon2huDVtgmK8JAEkrF+J4DyxY602rUzx6YcYryj\n"
1503 "eyNpGSWueCaTbFIKzm8UlWUKW7MBhSas8ObrgLf6fjJbikEJAgMBAAGjUDBOMB0G\n"
1504 "A1UdDgQWBBQuW9DuITahZJ6saVZZI0aBlis5vzAfBgNVHSMEGDAWgBQuW9DuITah\n"
1505 "ZJ6saVZZI0aBlis5vzAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBAB2X\n"
1506 "GNtJopBJR3dCpzDONknr/c6qcsPVa3nH4c7qzy6F+4bgqa5IObnoF8zUrvD2sMAO\n"
1507 "km3C/N+Qzt8Rb7ORM6U4tlPp1kZ5t6PKjghhNaiYwVm9A/Zm+wyAmRIkQiYDr4MX\n"
1508 "e+bRAkPmJeEWpaav1lvvBnFzGSGJrnSSeWUegGyn\n"
1509 "-----END CERTIFICATE-----\n";
1511 std::string message = "message test";
1513 CKM::Alias aliasPub = "pub3";
1514 CKM::Alias aliasPrv = "prv3";
1515 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
1516 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
1517 CKM::RawBuffer signature;
1519 auto cert = CKM::Certificate::create(CKM::RawBuffer(pub.begin(), pub.end()), CKM::DataFormat::FORM_PEM);
1520 auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()));
1522 RUNNER_ASSERT_MSG(NULL != cert.get(),
1523 "Key is empty. Failed to import public key.");
1524 RUNNER_ASSERT_MSG(NULL != keyPrv.get(),
1525 "Key is empty. Failed to import private key.");
1528 CKM_API_SUCCESS == (temp = manager->saveCertificate(aliasPub, cert, CKM::Policy())),
1529 "Error=" << CKM::ErrorToString(temp));
1531 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
1532 "Error=" << CKM::ErrorToString(temp));
1535 CKM_API_SUCCESS == (temp = manager->createSignature(
1538 CKM::RawBuffer(message.begin(), message.end()),
1542 "Error=" << CKM::ErrorToString(temp));
1545 CKM_API_SUCCESS == (temp = manager->verifySignature(
1548 CKM::RawBuffer(message.begin(), message.end()),
1552 "Error=" << CKM::ErrorToString(temp));
1554 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
1556 memcpy((void*)signature.data(), "BROKEN", 6);
1559 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
1562 CKM::RawBuffer(message.begin(), message.end()),
1566 "Error=" << CKM::ErrorToString(temp));
1569 RUNNER_TEST(T1416_ecdsa_cert_create_verify_signature)
1572 auto manager = CKM::Manager::create();
1575 "-----BEGIN EC PRIVATE KEY-----\n"
1576 "MIH8AgEBBBRPb/2utS5aCtyuwmzIHpU6LH3mc6CBsjCBrwIBATAgBgcqhkjOPQEB\n"
1577 "AhUA/////////////////////3////8wQwQU/////////////////////3////wE\n"
1578 "FByXvvxUvXqLZaz4n4HU1K3FZfpFAxUAEFPN5CwU1pbmdodWFRdTO/P4M0UEKQRK\n"
1579 "lrVojvVzKEZkaYlow4u5E8v8giOmKFUxaJR9WdzJEgQjUTd6xfsyAhUBAAAAAAAA\n"
1580 "AAAAAfTI+Seu08p1IlcCAQGhLAMqAATehLqu61gKC3Tgr4wQMVoguAhhG3Uwwz8u\n"
1581 "ELyhe7yPCAuOoLZlTLgf\n"
1582 "-----END EC PRIVATE KEY-----\n";
1585 "-----BEGIN CERTIFICATE-----\n"
1586 "MIICfDCCAjqgAwIBAgIJANIytpeTKlXBMAkGByqGSM49BAEwXjELMAkGA1UEBhMC\n"
1587 "UEwxDTALBgNVBAgMBExvZHoxDTALBgNVBAcMBExvZHoxEDAOBgNVBAoMB1NhbXN1\n"
1588 "bmcxETAPBgNVBAsMCFNlY3VyaXR5MQwwCgYDVQQDDANDS00wHhcNMTQwNzAyMTI0\n"
1589 "MTQ3WhcNMTcwNzAxMTI0MTQ3WjBeMQswCQYDVQQGEwJQTDENMAsGA1UECAwETG9k\n"
1590 "ejENMAsGA1UEBwwETG9kejEQMA4GA1UECgwHU2Ftc3VuZzERMA8GA1UECwwIU2Vj\n"
1591 "dXJpdHkxDDAKBgNVBAMMA0NLTTCB6jCBuwYHKoZIzj0CATCBrwIBATAgBgcqhkjO\n"
1592 "PQEBAhUA/////////////////////3////8wQwQU/////////////////////3//\n"
1593 "//wEFByXvvxUvXqLZaz4n4HU1K3FZfpFAxUAEFPN5CwU1pbmdodWFRdTO/P4M0UE\n"
1594 "KQRKlrVojvVzKEZkaYlow4u5E8v8giOmKFUxaJR9WdzJEgQjUTd6xfsyAhUBAAAA\n"
1595 "AAAAAAAAAfTI+Seu08p1IlcCAQEDKgAE3oS6rutYCgt04K+MEDFaILgIYRt1MMM/\n"
1596 "LhC8oXu8jwgLjqC2ZUy4H6NQME4wHQYDVR0OBBYEFELElWx3kbLo55Cfn1vywsEZ\n"
1597 "ccsmMB8GA1UdIwQYMBaAFELElWx3kbLo55Cfn1vywsEZccsmMAwGA1UdEwQFMAMB\n"
1598 "Af8wCQYHKoZIzj0EAQMxADAuAhUAumC4mGoyK97SxTvVBQ+ELfCbxEECFQCbMJ72\n"
1599 "Q1oBry6NEc+lLFmWMDesAA==\n"
1600 "-----END CERTIFICATE-----\n";
1602 std::string message = "message test";
1604 CKM::Alias aliasPub = "pub4";
1605 CKM::Alias aliasPrv = "prv4";
1606 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
1607 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
1608 CKM::RawBuffer signature;
1610 auto cert = CKM::Certificate::create(CKM::RawBuffer(pub.begin(), pub.end()), CKM::DataFormat::FORM_PEM);
1611 auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()));
1613 RUNNER_ASSERT_MSG(NULL != cert.get(),
1614 "Key is empty. Failed to import public key.");
1615 RUNNER_ASSERT_MSG(NULL != keyPrv.get(),
1616 "Key is empty. Failed to import private key.");
1619 CKM_API_SUCCESS == (temp = manager->saveCertificate(aliasPub, cert, CKM::Policy())),
1620 "Error=" << CKM::ErrorToString(temp));
1622 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
1623 "Error=" << CKM::ErrorToString(temp));
1626 CKM_API_SUCCESS == (temp = manager->createSignature(
1629 CKM::RawBuffer(message.begin(), message.end()),
1633 "Error=" << CKM::ErrorToString(temp));
1636 CKM_API_SUCCESS == (temp = manager->verifySignature(
1639 CKM::RawBuffer(message.begin(), message.end()),
1643 "Error=" << CKM::ErrorToString(temp));
1645 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
1647 memcpy((void*)signature.data(), "BROKEN", 6);
1650 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
1653 CKM::RawBuffer(message.begin(), message.end()),
1657 "Error=" << CKM::ErrorToString(temp));
1660 RUNNER_TEST(T1417_deinit)
1663 auto control = CKM::Control::create();
1666 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
1667 "Error=" << CKM::ErrorToString(temp));
1669 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
1670 "Error=" << CKM::ErrorToString(temp));
1673 RUNNER_TEST_GROUP_INIT(T151_CKM_STORAGE_PERNAMENT_TESTS);
1675 RUNNER_CHILD_TEST(T1510_init_unlock_key)
1678 SecurityServer::AccessProvider ap("my-label");
1679 ap.addObjectRule("key-manager::api-control", "rw");
1680 ap.applyAndSwithToUser(USER_TEST, GROUP_APP);
1682 auto control = CKM::Control::create();
1684 CKM_API_SUCCESS == (tmp = control->unlockUserKey(USER_TEST, "strong-password")),
1685 "Error=" << CKM::ErrorToString(tmp));
1688 RUNNER_CHILD_TEST(T1511_init_insert_data)
1690 SecurityServer::AccessProvider ap("my-label");
1691 ap.addObjectRule("key-manager::api-storage", "rw");
1692 ap.applyAndSwithToUser(USER_TEST, GROUP_APP);
1694 std::string ee = "-----BEGIN CERTIFICATE-----\n"
1695 "MIIF0TCCBLmgAwIBAgIQaPGTP4aS7Ut/WDNaBzdQrDANBgkqhkiG9w0BAQUFADCB\n"
1696 "ujELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
1697 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n"
1698 "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMr\n"
1699 "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTAeFw0x\n"
1700 "NDAyMjAwMDAwMDBaFw0xNTAyMjAyMzU5NTlaMIHmMRMwEQYLKwYBBAGCNzwCAQMT\n"
1701 "AlBMMR0wGwYDVQQPExRQcml2YXRlIE9yZ2FuaXphdGlvbjETMBEGA1UEBRMKMDAw\n"
1702 "MDAyNTIzNzELMAkGA1UEBhMCUEwxDzANBgNVBBEUBjAwLTk1MDEUMBIGA1UECBML\n"
1703 "bWF6b3dpZWNraWUxETAPBgNVBAcUCFdhcnN6YXdhMRYwFAYDVQQJFA1TZW5hdG9y\n"
1704 "c2thIDE4MRMwEQYDVQQKFAptQmFuayBTLkEuMQwwCgYDVQQLFANESU4xGTAXBgNV\n"
1705 "BAMUEHd3dy5tYmFuay5jb20ucGwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n"
1706 "AoIBAQDph6x8V6xUW/+651+qHF+UmorH9uaz2ZrX2bIWiMKIJFmpDDHlxcapKkqE\n"
1707 "BV04is83aiCpqKtc2ZHy2g4Hpj1eSF5BP2+OAlo0YUQZPIeRRdiMjmeAxw/ncBDx\n"
1708 "9rQBuCJ4XTD6cqQox5SI0TASOZ+wyAEjbDRXzL73XqRAFZ1LOpb2ONkolS+RutMB\n"
1709 "vshvCsWPeNe7eGLuOh6DyC6r1vX9xhw3xnjM2mTSvmtimgzSLacNGKqRrsucUgcb\n"
1710 "0+O5C2jZAtAMLyZksL92cxmWbtVzUYzem4chjHu5cRxUlPNzUJWrrczueB7Ip4A8\n"
1711 "aQuFMfNXYc0x+WLWjy//urypMKjhAgMBAAGjggGjMIIBnzAbBgNVHREEFDASghB3\n"
1712 "d3cubWJhbmsuY29tLnBsMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgWgMB0GA1Ud\n"
1713 "JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBEBgNVHSAEPTA7MDkGC2CGSAGG+EUB\n"
1714 "BxcGMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9jcHMw\n"
1715 "HQYDVR0OBBYEFN37iGaS7mZnENxZ9FGqNLR+QgoMMB8GA1UdIwQYMBaAFPyKULqe\n"
1716 "uSVae1WFT5UAY4/pWGtDMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9FVlNlY3Vy\n"
1717 "ZS1jcmwudmVyaXNpZ24uY29tL0VWU2VjdXJlMjAwNi5jcmwwfAYIKwYBBQUHAQEE\n"
1718 "cDBuMC0GCCsGAQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC52ZXJpc2lnbi5j\n"
1719 "b20wPQYIKwYBBQUHMAKGMWh0dHA6Ly9FVlNlY3VyZS1haWEudmVyaXNpZ24uY29t\n"
1720 "L0VWU2VjdXJlMjAwNi5jZXIwDQYJKoZIhvcNAQEFBQADggEBAD0wO+rooUrIM4qp\n"
1721 "PHhp+hkXK6WMQ2qzGOmbMcZjw0govg5vkzkefPDryIXXbrF8mRagiJNMSfNaWWeh\n"
1722 "Cj41OV24EdUl0OLbFxNzcvub599zRs/apfaRLTfsmlmOgi0/YP305i+3tJ2ll946\n"
1723 "P+qV1wXnXqTqEdIl4Ys3+1HmDCdTB1hoDwAAzqRVUXZ5+iiwPAU7R/LTHfMjV1ke\n"
1724 "8jtNFfrorlZMCfVH/7eEnHJvVjOJt+YFe4aFMzE+DfuYIK7MH+olC2v79kBwbnEQ\n"
1725 "fvHMA9gFwOYLUBBdSfcocp8EKZ+mRlNPGR/3LBrPeaQQ0GZEkxzRK+v/aNTuiYfr\n"
1727 "-----END CERTIFICATE-----\n";
1730 "-----BEGIN CERTIFICATE-----\n"
1731 "MIIF5DCCBMygAwIBAgIQW3dZxheE4V7HJ8AylSkoazANBgkqhkiG9w0BAQUFADCB\n"
1732 "yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
1733 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\n"
1734 "U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\n"
1735 "ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\n"
1736 "aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMTYxMTA3MjM1OTU5WjCBujEL\n"
1737 "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\n"
1738 "ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg\n"
1739 "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMrVmVy\n"
1740 "aVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTCCASIwDQYJ\n"
1741 "KoZIhvcNAQEBBQADggEPADCCAQoCggEBAJjboFXrnP0XeeOabhQdsVuYI4cWbod2\n"
1742 "nLU4O7WgerQHYwkZ5iqISKnnnbYwWgiXDOyq5BZpcmIjmvt6VCiYxQwtt9citsj5\n"
1743 "OBfH3doxRpqUFI6e7nigtyLUSVSXTeV0W5K87Gws3+fBthsaVWtmCAN/Ra+aM/EQ\n"
1744 "wGyZSpIkMQht3QI+YXZ4eLbtfjeubPOJ4bfh3BXMt1afgKCxBX9ONxX/ty8ejwY4\n"
1745 "P1C3aSijtWZfNhpSSENmUt+ikk/TGGC+4+peGXEFv54cbGhyJW+ze3PJbb0S/5tB\n"
1746 "Ml706H7FC6NMZNFOvCYIZfsZl1h44TO/7Wg+sSdFb8Di7Jdp91zT91ECAwEAAaOC\n"
1747 "AdIwggHOMB0GA1UdDgQWBBT8ilC6nrklWntVhU+VAGOP6VhrQzASBgNVHRMBAf8E\n"
1748 "CDAGAQH/AgEAMD0GA1UdIAQ2MDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRw\n"
1749 "czovL3d3dy52ZXJpc2lnbi5jb20vY3BzMD0GA1UdHwQ2MDQwMqAwoC6GLGh0dHA6\n"
1750 "Ly9FVlNlY3VyZS1jcmwudmVyaXNpZ24uY29tL3BjYTMtZzUuY3JsMA4GA1UdDwEB\n"
1751 "/wQEAwIBBjARBglghkgBhvhCAQEEBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZ\n"
1752 "MFcwVRYJaW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7\n"
1753 "GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwKQYDVR0R\n"
1754 "BCIwIKQeMBwxGjAYBgNVBAMTEUNsYXNzM0NBMjA0OC0xLTQ3MD0GCCsGAQUFBwEB\n"
1755 "BDEwLzAtBggrBgEFBQcwAYYhaHR0cDovL0VWU2VjdXJlLW9jc3AudmVyaXNpZ24u\n"
1756 "Y29tMB8GA1UdIwQYMBaAFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqGSIb3DQEB\n"
1757 "BQUAA4IBAQCWovp/5j3t1CvOtxU/wHIDX4u6FpAl98KD2Md1NGNoElMMU4l7yVYJ\n"
1758 "p8M2RE4O0GJis4b66KGbNGeNUyIXPv2s7mcuQ+JdfzOE8qJwwG6Cl8A0/SXGI3/t\n"
1759 "5rDFV0OEst4t8dD2SB8UcVeyrDHhlyQjyRNddOVG7wl8nuGZMQoIeRuPcZ8XZsg4\n"
1760 "z+6Ml7YGuXNG5NOUweVgtSV1LdlpMezNlsOjdv3odESsErlNv1HoudRETifLriDR\n"
1761 "fip8tmNHnna6l9AW5wtsbfdDbzMLKTB3+p359U64drPNGLT5IO892+bKrZvQTtKH\n"
1762 "qQ2mRHNQ3XBb7a1+Srwi1agm5MKFIA3Z\n"
1763 "-----END CERTIFICATE-----\n";
1765 auto manager = CKM::Manager::create();
1766 auto certee = CKM::Certificate::create(CKM::RawBuffer(ee.begin(), ee.end()), CKM::DataFormat::FORM_PEM);
1767 auto certim = CKM::Certificate::create(CKM::RawBuffer(im.begin(), im.end()), CKM::DataFormat::FORM_PEM);
1769 int status1 = manager->saveCertificate(CKM::Alias("CertEE"), certee, CKM::Policy());
1770 int status2 = manager->saveCertificate(CKM::Alias("CertIM"), certim, CKM::Policy());
1773 CKM_API_ERROR_DB_ALIAS_EXISTS == status1,
1774 "Certificate should be in database already. Error=" << CKM::ErrorToString(status1));
1777 CKM_API_ERROR_DB_ALIAS_EXISTS == status2,
1778 "Certificate should be in database already. Error=" << CKM::ErrorToString(status2));
1781 RUNNER_CHILD_TEST(T1519_deinit)
1784 SecurityServer::AccessProvider ap("my-label");
1785 ap.addObjectRule("key-manager::api-control", "rw");
1786 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
1788 auto control = CKM::Control::create();
1790 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_TEST)),
1791 "Error=" << CKM::ErrorToString(tmp));
1795 RUNNER_TEST_GROUP_INIT(T161_CKM_LOCKTYPE_TESTS);
1797 RUNNER_CHILD_TEST(T1610_init_lock_key)
1800 SecurityServer::AccessProvider ap("my-label");
1801 ap.addObjectRule("key-manager::api-control", "rw");
1802 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
1804 auto control = CKM::Control::create();
1806 CKM_API_SUCCESS == (tmp = control->changeUserPassword(USER_APP,"user-pass","")),
1807 "Error=" << CKM::ErrorToString(tmp));
1809 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_APP)),
1810 "Error=" << CKM::ErrorToString(tmp));
1813 RUNNER_CHILD_TEST(T1611_unlock_default_passwd)
1815 SecurityServer::AccessProvider ap("my-label");
1816 ap.addObjectRule("key-manager::api-storage", "rw");
1817 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
1820 auto manager = CKM::Manager::create();
1822 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
1823 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
1824 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
1825 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
1826 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
1827 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
1828 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
1830 "-----END PUBLIC KEY-----";
1832 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
1833 auto key = CKM::Key::create(buffer, CKM::Password());
1835 CKM::Alias alias = "mykey_defpasswd";
1838 CKM_API_SUCCESS == (temp = manager->saveKey(alias, key, CKM::Policy())),
1839 "Error=" << CKM::ErrorToString(temp));
1841 CKM_API_SUCCESS == (temp = manager->getKey(alias, CKM::Password(), key2)),
1842 "Error=" << CKM::ErrorToString(temp));
1844 key->getDER() == key2->getDER(),
1845 "Key value has been changed by service");
1847 CKM_API_SUCCESS == (temp = manager->removeKey(alias)),
1848 "Error=" << CKM::ErrorToString(temp));
1851 RUNNER_CHILD_TEST(T1612_init_change_user_password)
1854 SecurityServer::AccessProvider ap("my-label");
1855 ap.addObjectRule("key-manager::api-control", "rw");
1856 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
1858 auto control = CKM::Control::create();
1860 CKM_API_SUCCESS == (tmp = control->changeUserPassword(USER_APP,"","user-pass")),
1861 "Error=" << CKM::ErrorToString(tmp));
1863 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_APP)),
1864 "Error=" << CKM::ErrorToString(tmp));
1867 RUNNER_CHILD_TEST(T1613_unlock_default_passwd_negative)
1869 SecurityServer::AccessProvider ap("my-label");
1870 ap.addObjectRule("key-manager::api-storage", "rw");
1871 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
1874 auto manager = CKM::Manager::create();
1876 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
1877 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
1878 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
1879 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
1880 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
1881 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
1882 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
1884 "-----END PUBLIC KEY-----";
1886 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
1887 auto key = CKM::Key::create(buffer, CKM::Password());
1889 CKM::Alias alias = "mykey_defpasswd";
1892 CKM_API_ERROR_DB_LOCKED == (temp = manager->saveKey(alias, key, CKM::Policy())),
1893 "Error=" << CKM::ErrorToString(temp));
1895 CKM_API_ERROR_DB_LOCKED == (temp = manager->getKey(alias, CKM::Password(), key2)),
1896 "Error=" << CKM::ErrorToString(temp));
1898 CKM_API_ERROR_DB_LOCKED == (temp = manager->removeKey(alias)),
1899 "Error=" << CKM::ErrorToString(temp));
1902 RUNNER_CHILD_TEST(T1619_deinit)
1904 SecurityServer::AccessProvider ap("my-label");
1905 ap.addObjectRule("key-manager::api-control", "rw");
1906 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
1909 RUNNER_TEST_GROUP_INIT(T170_CKM_STORAGE_PERNAMENT_TESTS);
1911 RUNNER_TEST(T1701_init_unlock_key)
1914 auto control = CKM::Control::create();
1916 CKM_API_SUCCESS == (tmp = control->unlockUserKey(USER_TEST+1, "t170-special-password")),
1917 "Error=" << CKM::ErrorToString(tmp));
1920 RUNNER_CHILD_TEST(T1702_init_insert_data)
1923 SecurityServer::AccessProvider ap("t170-special-label");
1924 ap.addObjectRule("key-manager::api-storage", "rw");
1925 ap.applyAndSwithToUser(USER_TEST+1, GROUP_APP);
1927 std::string ee = "-----BEGIN CERTIFICATE-----\n"
1928 "MIIF0TCCBLmgAwIBAgIQaPGTP4aS7Ut/WDNaBzdQrDANBgkqhkiG9w0BAQUFADCB\n"
1929 "ujELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
1930 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n"
1931 "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMr\n"
1932 "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTAeFw0x\n"
1933 "NDAyMjAwMDAwMDBaFw0xNTAyMjAyMzU5NTlaMIHmMRMwEQYLKwYBBAGCNzwCAQMT\n"
1934 "AlBMMR0wGwYDVQQPExRQcml2YXRlIE9yZ2FuaXphdGlvbjETMBEGA1UEBRMKMDAw\n"
1935 "MDAyNTIzNzELMAkGA1UEBhMCUEwxDzANBgNVBBEUBjAwLTk1MDEUMBIGA1UECBML\n"
1936 "bWF6b3dpZWNraWUxETAPBgNVBAcUCFdhcnN6YXdhMRYwFAYDVQQJFA1TZW5hdG9y\n"
1937 "c2thIDE4MRMwEQYDVQQKFAptQmFuayBTLkEuMQwwCgYDVQQLFANESU4xGTAXBgNV\n"
1938 "BAMUEHd3dy5tYmFuay5jb20ucGwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n"
1939 "AoIBAQDph6x8V6xUW/+651+qHF+UmorH9uaz2ZrX2bIWiMKIJFmpDDHlxcapKkqE\n"
1940 "BV04is83aiCpqKtc2ZHy2g4Hpj1eSF5BP2+OAlo0YUQZPIeRRdiMjmeAxw/ncBDx\n"
1941 "9rQBuCJ4XTD6cqQox5SI0TASOZ+wyAEjbDRXzL73XqRAFZ1LOpb2ONkolS+RutMB\n"
1942 "vshvCsWPeNe7eGLuOh6DyC6r1vX9xhw3xnjM2mTSvmtimgzSLacNGKqRrsucUgcb\n"
1943 "0+O5C2jZAtAMLyZksL92cxmWbtVzUYzem4chjHu5cRxUlPNzUJWrrczueB7Ip4A8\n"
1944 "aQuFMfNXYc0x+WLWjy//urypMKjhAgMBAAGjggGjMIIBnzAbBgNVHREEFDASghB3\n"
1945 "d3cubWJhbmsuY29tLnBsMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgWgMB0GA1Ud\n"
1946 "JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBEBgNVHSAEPTA7MDkGC2CGSAGG+EUB\n"
1947 "BxcGMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9jcHMw\n"
1948 "HQYDVR0OBBYEFN37iGaS7mZnENxZ9FGqNLR+QgoMMB8GA1UdIwQYMBaAFPyKULqe\n"
1949 "uSVae1WFT5UAY4/pWGtDMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9FVlNlY3Vy\n"
1950 "ZS1jcmwudmVyaXNpZ24uY29tL0VWU2VjdXJlMjAwNi5jcmwwfAYIKwYBBQUHAQEE\n"
1951 "cDBuMC0GCCsGAQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC52ZXJpc2lnbi5j\n"
1952 "b20wPQYIKwYBBQUHMAKGMWh0dHA6Ly9FVlNlY3VyZS1haWEudmVyaXNpZ24uY29t\n"
1953 "L0VWU2VjdXJlMjAwNi5jZXIwDQYJKoZIhvcNAQEFBQADggEBAD0wO+rooUrIM4qp\n"
1954 "PHhp+hkXK6WMQ2qzGOmbMcZjw0govg5vkzkefPDryIXXbrF8mRagiJNMSfNaWWeh\n"
1955 "Cj41OV24EdUl0OLbFxNzcvub599zRs/apfaRLTfsmlmOgi0/YP305i+3tJ2ll946\n"
1956 "P+qV1wXnXqTqEdIl4Ys3+1HmDCdTB1hoDwAAzqRVUXZ5+iiwPAU7R/LTHfMjV1ke\n"
1957 "8jtNFfrorlZMCfVH/7eEnHJvVjOJt+YFe4aFMzE+DfuYIK7MH+olC2v79kBwbnEQ\n"
1958 "fvHMA9gFwOYLUBBdSfcocp8EKZ+mRlNPGR/3LBrPeaQQ0GZEkxzRK+v/aNTuiYfr\n"
1960 "-----END CERTIFICATE-----\n";
1962 auto manager = CKM::Manager::create();
1963 auto certee = CKM::Certificate::create(CKM::RawBuffer(ee.begin(), ee.end()), CKM::DataFormat::FORM_PEM);
1965 int status1 = manager->saveCertificate(CKM::Alias("CertEEE"), certee, CKM::Policy());
1968 CKM_API_SUCCESS == status1,
1969 "Could not put certificate in datbase. Error=" << CKM::ErrorToString(status1));
1971 CKM::AliasVector av;
1974 CKM_API_SUCCESS == (temp = manager->getCertificateAliasVector(av)),
1975 "Error=" << CKM::ErrorToString(temp));
1977 1 == (temp = av.size()),
1978 "Vector size: " << temp << ". Expected: 1");
1981 RUNNER_TEST(T1703_removeApplicationData)
1984 auto control = CKM::Control::create();
1986 CKM_API_SUCCESS == (tmp = control->removeApplicationData("t170-special-label")),
1987 "Error=" << CKM::ErrorToString(tmp));
1990 RUNNER_CHILD_TEST(T1704_data_test)
1993 SecurityServer::AccessProvider ap("t170-special-label");
1994 ap.addObjectRule("key-manager::api-storage", "rw");
1995 ap.applyAndSwithToUser(USER_TEST+1, GROUP_APP);
1997 CKM::AliasVector av;
1998 auto manager = CKM::Manager::create();
2001 CKM_API_SUCCESS == (temp = manager->getCertificateAliasVector(av)),
2002 "Error=" << CKM::ErrorToString(temp));
2004 0 == (temp = av.size()),
2005 "Vector size: " << temp << ". Expected: 0");
2008 RUNNER_TEST(T1705_deinit)
2012 auto control = CKM::Control::create();
2014 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_TEST+1)),
2015 "Error=" << CKM::ErrorToString(tmp));
2017 CKM_API_SUCCESS == (tmp = control->removeUserData(USER_TEST+1)),
2018 "Error=" << CKM::ErrorToString(tmp));
2021 RUNNER_TEST_GROUP_INIT(T180_PKCS12);
2023 RUNNER_TEST(T1801) {
2024 std::ifstream is("/usr/share/ckm-test/test1801.pkcs12");
2025 std::istreambuf_iterator<char> begin(is), end;
2026 std::vector<char> buff(begin, end);
2028 CKM::RawBuffer buffer(buff.size());
2029 memcpy(buffer.data(), buff.data(), buff.size());
2031 auto pkcs = CKM::PKCS12::create(buffer, "secret");
2034 "Error in PKCS12::create()");
2036 auto cert = pkcs->getCertificate();
2039 "Error in PKCS12::getCertificate()");
2041 auto key = pkcs->getKey();
2044 "Error in PKCS12::getKey()");
2046 auto caVector = pkcs->getCaCertificateShPtrVector();
2048 0 == caVector.size(),
2049 "Wrong size of vector");
2052 RUNNER_TEST(T1802_negative_wrong_password) {
2053 std::ifstream is("/usr/share/ckm-test/test1801.pkcs12");
2054 std::istreambuf_iterator<char> begin(is), end;
2055 std::vector<char> buff(begin, end);
2057 CKM::RawBuffer buffer(buff.size());
2058 memcpy(buffer.data(), buff.data(), buff.size());
2060 auto pkcs = CKM::PKCS12::create(buffer, "error");
2063 "Expected error in PKCS12::create()");
2066 RUNNER_TEST(T1803_negative_broken_buffer) {
2067 std::ifstream is("/usr/share/ckm-test/test1801.pkcs12");
2068 std::istreambuf_iterator<char> begin(is), end;
2069 std::vector<char> buff(begin, end);
2071 CKM::RawBuffer buffer(buff.size());
2072 memcpy(buffer.data(), buff.data(), buff.size());
2074 RUNNER_ASSERT_MSG(buffer.size() > 5, "PKCS file is too small.");
2077 auto pkcs = CKM::PKCS12::create(buffer, "secret");
2080 "Expected error in PKCS12::create()");
2083 RUNNER_TEST_GROUP_INIT(T190_CKM_EMPTY_STORAGE_TESTS);
2085 RUNNER_TEST(T1901_init_unlock_key)
2088 auto control = CKM::Control::create();
2090 CKM_API_SUCCESS == (tmp = control->lockUserKey(0)),
2091 "Error=" << CKM::ErrorToString(tmp));
2093 CKM_API_SUCCESS == (tmp = control->removeUserData(0)),
2094 "Error=" << CKM::ErrorToString(tmp));
2096 CKM_API_SUCCESS == (tmp = control->unlockUserKey(0, "t190-special-password")),
2097 "Error=" << CKM::ErrorToString(tmp));
2100 RUNNER_TEST(T1902_get_data)
2102 auto manager = CKM::Manager::create();
2105 int status1 = manager->getKey(CKM::Alias("CertEEE"), CKM::Password(), ptr);
2108 CKM_API_ERROR_DB_ALIAS_UNKNOWN == status1,
2109 "Could not put certificate in datbase. Error=" << CKM::ErrorToString(status1));
2112 RUNNER_TEST(T1903_deinit)
2116 auto control = CKM::Control::create();
2118 CKM_API_SUCCESS == (tmp = control->lockUserKey(0)),
2119 "Error=" << CKM::ErrorToString(tmp));
2121 CKM_API_SUCCESS == (tmp = control->removeUserData(0)),
2122 "Error=" << CKM::ErrorToString(tmp));
2125 RUNNER_TEST(T1904_get_data_from_locked_database)
2127 auto manager = CKM::Manager::create();
2130 int status1 = manager->getKey(CKM::Alias("CertEEE"), CKM::Password(), ptr);
2133 CKM_API_ERROR_DB_LOCKED == status1,
2134 "Could not get key from locked database. Error=" << CKM::ErrorToString(status1));
2137 int main(int argc, char *argv[])
2139 DPL::Log::LogSystemSingleton::Instance().SetTag("CKM_TESTS");
2140 return DPL::Test::TestRunnerSingleton::Instance().ExecTestRunner(argc, argv);