3 #include <dpl/test/test_runner.h>
4 #include <dpl/test/test_runner_child.h>
6 #include <tests_common.h>
7 #include <access_provider.h>
9 #include <ckm/ckm-manager.h>
10 #include <ckm/ckm-control.h>
11 #include <ckm/ckm-password.h>
12 #include <ckm/ckm-type.h>
13 #include <ckm/ckm-pkcs12.h>
17 #include <dpl/log/log.h>
19 static const int USER_APP = 5000;
20 static const int GROUP_APP = 5000;
21 static const int USER_TEST = 5001;
24 * How to numerate tests:
26 * T - test case (always T)
27 * AB - number of test group (always two digits)
28 * C - test number in group (all tests with same TABC must be run in the same time).
33 RUNNER_TEST_GROUP_INIT(T0000_CKM_CONTROL);
35 RUNNER_TEST(T0010_Control)
38 auto control = CKM::Control::create();
40 control->removeUserData(0);
41 control->removeUserData(20);
42 control->removeUserData(USER_APP);
45 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "simple-password")),
46 "Error=" << CKM::ErrorToString(temp));
49 RUNNER_TEST(T0020_Control)
52 auto control = CKM::Control::create();
54 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "simple-password")),
55 "Error=" << CKM::ErrorToString(temp));
57 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
58 "Error=" << CKM::ErrorToString(temp));
61 RUNNER_TEST(T0030_Control)
64 auto control = CKM::Control::create();
66 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "simple-password")),
67 "Error=" << CKM::ErrorToString(temp));
70 RUNNER_TEST(T0040_Control)
73 auto control = CKM::Control::create();
75 CKM_API_ERROR_BAD_REQUEST == (temp = control->resetUserPassword(14, "simple-password")),
76 "Error=" << CKM::ErrorToString(temp));
79 RUNNER_TEST(T0050_Control)
82 auto control = CKM::Control::create();
84 CKM_API_SUCCESS == (temp = control->unlockUserKey(20, "test-pass")),
85 "Error=" << CKM::ErrorToString(temp));
87 CKM_API_SUCCESS == (temp = control->changeUserPassword(20, "test-pass", "new-pass")),
88 "Error=" << CKM::ErrorToString(temp));
90 CKM_API_SUCCESS == (temp = control->lockUserKey(20)),
91 "Error=" << CKM::ErrorToString(temp));
93 CKM_API_SUCCESS == (temp = control->removeUserData(20)),
94 "Error=" << CKM::ErrorToString(temp));
97 RUNNER_TEST_GROUP_INIT(T101_CKM_QUICK_SET_GET_TESTS);
99 RUNNER_TEST(T1010_init)
102 auto control = CKM::Control::create();
104 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "test-pass")),
105 "Error=" << CKM::ErrorToString(temp));
107 CKM_API_SUCCESS == (temp = control->unlockUserKey(USER_APP, "user-pass")),
108 "Error=" << CKM::ErrorToString(temp));
111 RUNNER_TEST(T1011_key)
114 auto manager = CKM::Manager::create();
116 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
117 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
118 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
119 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
120 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
121 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
122 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
124 "-----END PUBLIC KEY-----";
126 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
127 auto key = CKM::Key::create(buffer, CKM::Password());
129 CKM::Alias alias = "mykey";
132 CKM_API_SUCCESS == (temp = manager->saveKey(alias, key, CKM::Policy())),
133 "Error=" << CKM::ErrorToString(temp));
135 CKM_API_SUCCESS == (temp = manager->getKey(alias, CKM::Password(), key2)),
136 "Error=" << CKM::ErrorToString(temp));
138 key->getDER() == key2->getDER(),
139 "Key value has been changed by service");
142 RUNNER_TEST(T1012_certificate)
145 auto manager = CKM::Manager::create();
147 std::string certPem =
148 "-----BEGIN CERTIFICATE-----\n"
149 "MIIEgDCCA2igAwIBAgIIcjtBYJGQtOAwDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UE\n"
150 "BhMCVVMxEzARBgNVBAoTCkdvb2dsZSBJbmMxJTAjBgNVBAMTHEdvb2dsZSBJbnRl\n"
151 "cm5ldCBBdXRob3JpdHkgRzIwHhcNMTQwNTIyMTEyOTQyWhcNMTQwODIwMDAwMDAw\n"
152 "WjBtMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwN\n"
153 "TW91bnRhaW4gVmlldzETMBEGA1UECgwKR29vZ2xlIEluYzEcMBoGA1UEAwwTYWNj\n"
154 "b3VudHMuZ29vZ2xlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB\n"
155 "ALtlLWVWPN3q3bSEQl1Z97gPdgl5vbgJOZSAr0ZY0tJCuFLBbUKetJWryyE+5KpG\n"
156 "gMMpLS4v8/bvXaZc6mAs+RfAqGM24C3vQg5hPnj4dflnhL0WiOCZBurm1tV4oexk\n"
157 "HLXs3jr/jpnb738AQpj8zZ9a4VEBuHJRZALnWZ/XhqU+dvYomAoRQNuL5OhkT7uu\n"
158 "d0NKJL9JjYLyQglGgE2sVsWv2kj7EO/P9Q6NEKt9BGmhMsFvtfeKUaymynaxpR1g\n"
159 "wEPlqYvB38goh1dIOgVLT0OVyLImeg5Mdwar/8c1U0OYhLOc6PJapOZAfUkE+3+w\n"
160 "xYt8AChLN1b5szOwInrCVpECAwEAAaOCAUYwggFCMB0GA1UdJQQWMBQGCCsGAQUF\n"
161 "BwMBBggrBgEFBQcDAjAeBgNVHREEFzAVghNhY2NvdW50cy5nb29nbGUuY29tMGgG\n"
162 "CCsGAQUFBwEBBFwwWjArBggrBgEFBQcwAoYfaHR0cDovL3BraS5nb29nbGUuY29t\n"
163 "L0dJQUcyLmNydDArBggrBgEFBQcwAYYfaHR0cDovL2NsaWVudHMxLmdvb2dsZS5j\n"
164 "b20vb2NzcDAdBgNVHQ4EFgQU0/UtToEtNIfwDwHuYGuVKcj0xK8wDAYDVR0TAQH/\n"
165 "BAIwADAfBgNVHSMEGDAWgBRK3QYWG7z2aLV29YG2u2IaulqBLzAXBgNVHSAEEDAO\n"
166 "MAwGCisGAQQB1nkCBQEwMAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL3BraS5nb29n\n"
167 "bGUuY29tL0dJQUcyLmNybDANBgkqhkiG9w0BAQUFAAOCAQEAcGNI/X9f0g+7ij0o\n"
168 "ehLpk6vxSMQGrmOZ4+PG/MC9SLClCkt7zJkfU7erZnyVXyxCpwlljq+Wk9YTPUOq\n"
169 "xD/V2ikQVSAANoxGJFO9UoL5jzWusPhKKv8CcM7fuiERz8K+CfBcqfxbgI5rH0g5\n"
170 "dYclmLC81cJ/08i+9Nltvxv69Y3hGfEICT6K+EdSxwnQzOhpMZmvxZsIj+d6CVNa\n"
171 "9ICYgUthsNQVWzrIs5wknpjjZ9liDMwJX0vu8A0rce4X/Lna5hh2bW9igz2iP5WM\n"
172 "9fuwdbTw4y3jfPQgszU4YZxWxhMzccxe058Qx1tLndAknBQEBesQjXytVQpuM1SV\n"
174 "-----END CERTIFICATE-----\n";
176 CKM::RawBuffer buffer(certPem.begin(), certPem.end());
177 auto cert = CKM::Certificate::create(buffer, CKM::DataFormat::FORM_PEM);
178 CKM::CertificateShPtr cert2;
179 CKM::Alias alias = "myCert";
182 CKM_API_SUCCESS == (temp = manager->saveCertificate(alias, cert, CKM::Policy())),
183 "Error=" << CKM::ErrorToString(temp));
185 CKM_API_SUCCESS == (temp = manager->getCertificate(alias, CKM::Password(), cert2)),
186 "Error=" << CKM::ErrorToString(temp));
188 cert->getDER() == cert2->getDER(),
189 "Data has been modified in key manager");
192 RUNNER_CHILD_TEST(T1013_user_app_save_key)
194 SecurityServer::AccessProvider ap("mylabel");
195 ap.allowAPI("key-manager::api-storage", "rw");
196 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
198 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
199 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
200 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
201 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
202 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
203 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
204 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
206 "-----END PUBLIC KEY-----";
209 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
210 auto key = CKM::Key::create(buffer, CKM::Password());
212 CKM::Alias alias = "mykey";
213 auto manager = CKM::Manager::create();
216 CKM_API_SUCCESS == (temp = manager->saveKey(alias, key, CKM::Policy("x"))),
217 "Error=" << CKM::ErrorToString(temp));
219 CKM_API_SUCCESS == (temp = manager->getKey(alias, CKM::Password("x"), key2)),
220 "Error=" << CKM::ErrorToString(temp));
222 key->getDER() == key2->getDER(), "Key value has been changed by service");
226 RUNNER_TEST(T1014_deinit)
229 auto control = CKM::Control::create();
232 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
233 "Error=" << CKM::ErrorToString(temp));
235 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
236 "Error=" << CKM::ErrorToString(temp));
238 CKM_API_SUCCESS == (temp = control->lockUserKey(USER_APP)),
239 "Error=" << CKM::ErrorToString(temp));
241 CKM_API_SUCCESS == (temp = control->removeUserData(USER_APP)),
242 "Error=" << CKM::ErrorToString(temp));
245 RUNNER_TEST_GROUP_INIT(T102_CKM_QUICK_GET_ALIAS_TESTS);
247 RUNNER_TEST(T1020_init)
250 auto control = CKM::Control::create();
252 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "test-pass")),
253 "Error=" << CKM::ErrorToString(temp));
255 CKM_API_SUCCESS == (temp = control->unlockUserKey(USER_APP, "user-pass")),
256 "Error=" << CKM::ErrorToString(temp));
259 RUNNER_TEST(T1021_save_keys_get_alias)
262 auto manager = CKM::Manager::create();
264 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
265 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
266 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
267 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
268 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
269 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
270 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
272 "-----END PUBLIC KEY-----";
274 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
275 auto key = CKM::Key::create(buffer, CKM::Password());
276 CKM::AliasVector aliasVector;
279 CKM_API_SUCCESS == (temp = manager->saveKey("rootkey1", key, CKM::Policy())),
280 "Error=" << CKM::ErrorToString(temp));
282 CKM_API_SUCCESS == (temp = manager->saveKey("rootkey2", key, CKM::Policy())),
283 "Error=" << CKM::ErrorToString(temp));
285 CKM_API_SUCCESS == (temp = manager->saveKey("rootkey3", key, CKM::Policy(CKM::Password(), false))),
286 "Error=" << CKM::ErrorToString(temp));
288 CKM_API_SUCCESS == (temp = manager->getKeyAliasVector(aliasVector)),
289 "Error=" << CKM::ErrorToString(temp));
291 aliasVector.size() == 3,
292 "Wrong size of list: " << aliasVector.size() << " Expected: 3");
295 RUNNER_CHILD_TEST(T1022_app_user_save_keys_get_alias)
297 SecurityServer::AccessProvider ap("mylabel");
298 ap.allowAPI("key-manager::api-storage", "rw");
299 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
302 auto manager = CKM::Manager::create();
304 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
305 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
306 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
307 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
308 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
309 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
310 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
312 "-----END PUBLIC KEY-----";
314 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
315 auto key = CKM::Key::create(buffer, CKM::Password());
316 CKM::AliasVector aliasVector;
319 CKM_API_SUCCESS == (temp = manager->saveKey("appkey1", key, CKM::Policy())),
320 "Error=" << CKM::ErrorToString(temp));
322 CKM_API_SUCCESS == (temp = manager->saveKey("appkey2", key, CKM::Policy())),
323 "Error=" << CKM::ErrorToString(temp));
325 CKM_API_SUCCESS == (temp = manager->saveKey("appkey3", key, CKM::Policy(CKM::Password(), false))),
326 "Error=" << CKM::ErrorToString(temp));
328 CKM_API_SUCCESS == (temp = manager->getKeyAliasVector(aliasVector)),
329 "Error=" << CKM::ErrorToString(temp));
331 aliasVector.size() == 3,
332 "Wrong size of list: " << aliasVector.size() << " Expected: 3");
335 RUNNER_CHILD_TEST(T1023_app_user_save_keys_exportable_flag)
337 SecurityServer::AccessProvider ap("mylabel");
338 ap.allowAPI("key-manager::api-storage", "rw");
339 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
342 auto manager = CKM::Manager::create();
344 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
345 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
346 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
347 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
348 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
349 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
350 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
352 "-----END PUBLIC KEY-----";
354 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
355 auto key = CKM::Key::create(buffer, CKM::Password());
356 CKM::AliasVector aliasVector;
357 CKM::Policy notExportable(CKM::Password(), false);
360 CKM_API_SUCCESS == (temp = manager->saveKey("appkey4", key, notExportable)),
361 "Error=" << CKM::ErrorToString(temp));
363 CKM_API_ERROR_NOT_EXPORTABLE == (temp = manager->getKey("appkey4", CKM::Password(), key)),
364 "Error=" << CKM::ErrorToString(temp));
366 CKM_API_ERROR_INPUT_PARAM == (temp = manager->saveData("data3", buffer, notExportable)),
367 "Error=" << CKM::ErrorToString(temp));
370 RUNNER_TEST(T1029_deinit)
373 auto control = CKM::Control::create();
376 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
377 "Error=" << CKM::ErrorToString(temp));
379 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
380 "Error=" << CKM::ErrorToString(temp));
382 CKM_API_SUCCESS == (temp = control->lockUserKey(USER_APP)),
383 "Error=" << CKM::ErrorToString(temp));
385 CKM_API_SUCCESS == (temp = control->removeUserData(USER_APP)),
386 "Error=" << CKM::ErrorToString(temp));
389 RUNNER_TEST_GROUP_INIT(T103_CKM_QUICK_REMOVE_BIN_DATA_TEST);
391 RUNNER_TEST(T1030_init)
394 auto control = CKM::Control::create();
396 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "test-pass")),
397 "Error=" << CKM::ErrorToString(temp));
399 CKM_API_SUCCESS == (temp = control->unlockUserKey(USER_APP, "user-pass")),
400 "Error=" << CKM::ErrorToString(temp));
403 RUNNER_TEST(T1031_save_get_bin_data)
406 auto manager = CKM::Manager::create();
408 std::string binData1 = "My bin data1";
409 std::string binData2 = "My bin data2";
410 std::string binData3 = "My bin data3";
412 CKM::RawBuffer buffer1(binData1.begin(), binData1.end());
413 CKM::RawBuffer buffer2(binData2.begin(), binData2.end());
414 CKM::RawBuffer buffer3(binData3.begin(), binData3.end());
416 CKM::AliasVector aliasVector;
419 CKM_API_SUCCESS == (temp = manager->saveData("data1", buffer1, CKM::Policy())),
420 "Error=" << CKM::ErrorToString(temp));
422 CKM_API_SUCCESS == (temp = manager->saveData("data2", buffer2, CKM::Policy())),
423 "Error=" << CKM::ErrorToString(temp));
425 CKM_API_SUCCESS == (temp = manager->saveData("data3", buffer3, CKM::Policy(CKM::Password(), true))),
426 "Error=" << CKM::ErrorToString(temp));
428 CKM_API_ERROR_INPUT_PARAM == (temp = manager->saveData("data4", buffer3, CKM::Policy(CKM::Password(), false))),
429 "Error=" << CKM::ErrorToString(temp));
431 CKM_API_SUCCESS == (temp = manager->getDataAliasVector(aliasVector)),
432 "Error=" << CKM::ErrorToString(temp));
434 aliasVector.size() == 3,
435 "Wrong size of list: " << aliasVector.size() << " Expected: 3");
437 CKM::RawBuffer buffer;
439 CKM_API_SUCCESS == (temp = manager->getData("data2", CKM::Password(), buffer)),
440 "Error=" << CKM::ErrorToString(temp));
446 RUNNER_CHILD_TEST(T1032_app_user_save_bin_data)
448 SecurityServer::AccessProvider ap("mylabel");
449 ap.allowAPI("key-manager::api-storage", "rw");
450 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
453 auto manager = CKM::Manager::create();
455 std::string binData = "My bin data";
457 CKM::RawBuffer buffer(binData.begin(), binData.end());
459 CKM::AliasVector aliasVector;
462 CKM_API_SUCCESS == (temp = manager->saveData("appdata1", buffer, CKM::Policy())),
463 "Error=" << CKM::ErrorToString(temp));
465 CKM_API_SUCCESS == (temp = manager->saveData("appdata2", buffer, CKM::Policy())),
466 "Error=" << CKM::ErrorToString(temp));
468 CKM_API_SUCCESS == (temp = manager->saveData("appdata3", buffer, CKM::Policy(CKM::Password(), true))),
469 "Error=" << CKM::ErrorToString(temp));
471 CKM_API_SUCCESS == (temp = manager->getDataAliasVector(aliasVector)),
472 "Error=" << CKM::ErrorToString(temp));
474 aliasVector.size() == 3,
475 "Wrong size of list: " << aliasVector.size() << " Expected: 3");
478 RUNNER_TEST(T1033_remove_bin_data)
481 auto manager = CKM::Manager::create();
483 std::string binData2 = "My bin data2";
484 CKM::RawBuffer buffer2(binData2.begin(), binData2.end());
486 CKM::AliasVector aliasVector;
489 CKM_API_SUCCESS == (temp = manager->removeData("data1")),
490 "Error=" << CKM::ErrorToString(temp));
492 CKM_API_SUCCESS == (temp = manager->removeData("data3")),
493 "Error=" << CKM::ErrorToString(temp));
495 CKM_API_SUCCESS == (temp = manager->getDataAliasVector(aliasVector)),
496 "Error=" << CKM::ErrorToString(temp));
498 aliasVector.size() == 1,
499 "Wrong size of list: " << aliasVector.size() << " Expected: 1");
501 CKM::RawBuffer buffer;
503 CKM_API_SUCCESS == (temp = manager->getData("data2", CKM::Password(), buffer)),
504 "Error=" << CKM::ErrorToString(temp));
509 CKM_API_ERROR_DB_ALIAS_UNKNOWN == (temp = manager->getData("data3", CKM::Password(), buffer)),
510 "Error=" << CKM::ErrorToString(temp));
513 RUNNER_TEST(T1039_deinit)
516 auto control = CKM::Control::create();
519 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
520 "Error=" << CKM::ErrorToString(temp));
522 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
523 "Error=" << CKM::ErrorToString(temp));
525 CKM_API_SUCCESS == (temp = control->lockUserKey(USER_APP)),
526 "Error=" << CKM::ErrorToString(temp));
528 CKM_API_SUCCESS == (temp = control->removeUserData(USER_APP)),
529 "Error=" << CKM::ErrorToString(temp));
532 RUNNER_TEST_GROUP_INIT(T104_CKM_QUICK_CREATE_PAIR);
534 RUNNER_TEST(T1040_init)
537 auto control = CKM::Control::create();
540 CKM_API_SUCCESS == (temp = control->unlockUserKey(USER_APP, "user-pass")),
541 "Error=" << CKM::ErrorToString(temp));
544 RUNNER_CHILD_TEST(T1041_create_rsa_key)
547 auto manager = CKM::Manager::create();
550 SecurityServer::AccessProvider ap("mylabel-rsa");
551 ap.allowAPI("key-manager::api-storage", "rw");
552 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
555 CKM_API_SUCCESS == (temp = manager->createKeyPairRSA(2048, CKM::Alias("PRV_KEY1_RSA"), CKM::Alias("PUB_KEY1_RSA"), CKM::Policy(), CKM::Policy())),
556 "Error=" << CKM::ErrorToString(temp));
558 CKM_API_SUCCESS == (temp = manager->getKeyAliasVector(av)),
559 "Error=" << CKM::ErrorToString(temp));
561 2 == (temp = av.size()),
562 "Vector size: " << temp << ". Expected: 2");
565 RUNNER_CHILD_TEST(T1042_create_dsa_key)
568 auto manager = CKM::Manager::create();
571 SecurityServer::AccessProvider ap("mylabel-dsa");
572 ap.allowAPI("key-manager::api-storage", "rw");
573 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
576 CKM_API_SUCCESS == (temp = manager->createKeyPairDSA(1024, CKM::Alias("PRV_KEY1_DSA"), CKM::Alias("PUB_KEY1_DSA"), CKM::Policy(), CKM::Policy())),
577 "Error=" << CKM::ErrorToString(temp));
579 CKM_API_SUCCESS == (temp = manager->getKeyAliasVector(av)),
580 "Error=" << CKM::ErrorToString(temp));
582 2 == (temp = av.size()),
583 "Vector size: " << temp << ". Expected: 2");
586 RUNNER_TEST(T1049_deinit)
589 auto control = CKM::Control::create();
592 CKM_API_SUCCESS == (temp = control->lockUserKey(USER_APP)),
593 "Error=" << CKM::ErrorToString(temp));
595 CKM_API_SUCCESS == (temp = control->removeUserData(USER_APP)),
596 "Error=" << CKM::ErrorToString(temp));
600 RUNNER_TEST_GROUP_INIT(T111_CKM_CreateKeyPair);
602 RUNNER_TEST(T1110_init)
605 auto control = CKM::Control::create();
607 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "test-pass")),
608 "Error=" << CKM::ErrorToString(temp));
610 CKM_API_SUCCESS == (temp = control->unlockUserKey(USER_APP, "user-pass")),
611 "Error=" << CKM::ErrorToString(temp));
614 RUNNER_TEST(T1111_CreateKeyPairRSA)
617 auto manager = CKM::Manager::create();
618 CKM::Alias a1("rsa-test-1");
619 CKM::Alias a2("rsa-test-2");
623 CKM_API_SUCCESS == (temp = manager->createKeyPairRSA(1024, a1, a2, p1, p2)),
624 "Error=" << CKM::ErrorToString(temp));
626 CKM_API_ERROR_DB_ALIAS_EXISTS == (temp = manager->createKeyPairRSA(1024, a1, a2, p1, p2)),
627 "Error=" << CKM::ErrorToString(temp));
630 RUNNER_TEST(T1112_CreateKeyPairDSA)
633 auto manager = CKM::Manager::create();
634 CKM::Alias a1("dsa-test-1");
635 CKM::Alias a2("dsa-test-2");
639 CKM_API_SUCCESS == (temp = manager->createKeyPairDSA(1024, a1, a2, p1, p2)),
640 "Error=" << CKM::ErrorToString(temp));
642 CKM_API_ERROR_DB_ALIAS_EXISTS == (temp = manager->createKeyPairDSA(1024, a1, a2, p1, p2)),
643 "Error=" << CKM::ErrorToString(temp));
646 RUNNER_TEST(T1113_CreateKeyPairECDSA)
649 auto manager = CKM::Manager::create();
650 CKM::Alias a1("ecdsa-test-1");
651 CKM::Alias a2("ecdsa-test-2");
655 CKM_API_SUCCESS == (temp = manager->createKeyPairECDSA(CKM::ElipticCurve::prime192v1, a1, a2, p1, p2)),
656 "Error=" << CKM::ErrorToString(temp));
659 RUNNER_TEST(T1114_deinit)
662 auto control = CKM::Control::create();
665 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
666 "Error=" << CKM::ErrorToString(temp));
668 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
669 "Error=" << CKM::ErrorToString(temp));
672 RUNNER_TEST_GROUP_INIT(T120_NEGATIVE_TESTS);
674 RUNNER_TEST(T12100_init)
677 auto control = CKM::Control::create();
679 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "test-pass")),
680 "Error=" << CKM::ErrorToString(temp));
682 CKM_API_SUCCESS == (temp = control->unlockUserKey(USER_APP, "user-pass")),
683 "Error=" << CKM::ErrorToString(temp));
686 RUNNER_TEST(T12101_key_exist)
689 auto manager = CKM::Manager::create();
691 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
692 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
693 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
694 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
695 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
696 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
697 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
699 "-----END PUBLIC KEY-----";
701 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
702 auto key = CKM::Key::create(buffer);
703 CKM::Alias alias = "rsa-alias-duplication";
706 CKM_API_SUCCESS == (ret = manager->saveKey(alias, key, CKM::Policy())),
707 "Error=" << CKM::ErrorToString(ret));
709 CKM_API_ERROR_DB_ALIAS_EXISTS == (ret = manager->saveKey(alias, key, CKM::Policy())),
710 "Error=" << CKM::ErrorToString(ret));
714 * These test cases tests API when empty parameters are passed to functions
717 RUNNER_TEST(T12102_saveKey_empty_alias)
719 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
720 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
721 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
722 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLc\n"
723 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
724 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
725 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
726 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
728 "-----END PUBLIC KEY-----";
730 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
731 auto key = CKM::Key::create(buffer);
732 CKM::Alias alias; //alias is not initialized
735 auto manager = CKM::Manager::create();
737 CKM_API_ERROR_INPUT_PARAM == (ret = manager->saveKey(alias, key, CKM::Policy())),
738 "Error=" << CKM::ErrorToString(ret));
741 RUNNER_TEST(T12103_saveKey_empty_key)
743 CKM::KeyShPtr key; //key is not initialized
744 CKM::Alias alias = "empty-key";
747 auto manager = CKM::Manager::create();
749 CKM_API_ERROR_INPUT_PARAM == (ret = manager->saveKey(alias, key, CKM::Policy())),
750 "Error=" << CKM::ErrorToString(ret));
753 RUNNER_TEST(T12104_saveCertificate_empty_alias)
755 std::string certPem =
756 "-----BEGIN CERTIFICATE-----\n"
757 "MIIEgDCCA2igAwIBAgIIcjtBYJGQtOAwDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UE\n"
758 "BhMCVVMxEzARBgNVBAoTCkdvb2dsZSBJbmMxJTAjBgNVBAMTHEdvb2dsZSBJbnRl\n"
759 "cm5ldCBBdXRob3JpdHkgRzIwHhcNMTQwNTIyMTEyOTQyWhcNMTQwODIwMDAwMDAw\n"
760 "WjBtMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwN\n"
761 "TW91bnRhaW4gVmlldzETMBEGA1UECgwKR29vZ2xlIEluYzEcMBoGA1UEAwwTYWNj\n"
762 "b3VudHMuZ29vZ2xlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB\n"
763 "ALtlLWVWPN3q3bSEQl1Z97gPdgl5vbgJOZSAr0ZY0tJCuFLBbUKetJWryyE+5KpG\n"
764 "gMMpLS4v8/bvXaZc6mAs+RfAqGM24C3vQg5hPnj4dflnhL0WiOCZBurm1tV4oexk\n"
765 "HLXs3jr/jpnb738AQpj8zZ9a4VEBuHJRZALnWZ/XhqU+dvYomAoRQNuL5OhkT7uu\n"
766 "d0NKJL9JjYLyQglGgE2sVsWv2kj7EO/P9Q6NEKt9BGmhMsFvtfeKUaymynaxpR1g\n"
767 "wEPlqYvB38goh1dIOgVLT0OVyLImeg5Mdwar/8c1U0OYhLOc6PJapOZAfUkE+3+w\n"
768 "xYt8AChLN1b5szOwInrCVpECAwEAAaOCAUYwggFCMB0GA1UdJQQWMBQGCCsGAQUF\n"
769 "BwMBBggrBgEFBQcDAjAeBgNVHREEFzAVghNhY2NvdW50cy5nb29nbGUuY29tMGgG\n"
770 "CCsGAQUFBwEBBFwwWjArBggrBgEFBQcwAoYfaHR0cDovL3BraS5nb29nbGUuY29t\n"
771 "L0dJQUcyLmNydDArBggrBgEFBQcwAYYfaHR0cDovL2NsaWVudHMxLmdvb2dsZS5j\n"
772 "b20vb2NzcDAdBgNVHQ4EFgQU0/UtToEtNIfwDwHuYGuVKcj0xK8wDAYDVR0TAQH/\n"
773 "BAIwADAfBgNVHSMEGDAWgBRK3QYWG7z2aLV29YG2u2IaulqBLzAXBgNVHSAEEDAO\n"
774 "MAwGCisGAQQB1nkCBQEwMAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL3BraS5nb29n\n"
775 "bGUuY29tL0dJQUcyLmNybDANBgkqhkiG9w0BAQUFAAOCAQEAcGNI/X9f0g+7ij0o\n"
776 "ehLpk6vxSMQGrmOZ4+PG/MC9SLClCkt7zJkfU7erZnyVXyxCpwlljq+Wk9YTPUOq\n"
777 "xD/V2ikQVSAANoxGJFO9UoL5jzWusPhKKv8CcM7fuiERz8K+CfBcqfxbgI5rH0g5\n"
778 "dYclmLC81cJ/08i+9Nltvxv69Y3hGfEICT6K+EdSxwnQzOhpMZmvxZsIj+d6CVNa\n"
779 "9ICYgUthsNQVWzrIs5wknpjjZ9liDMwJX0vu8A0rce4X/Lna5hh2bW9igz2iP5WM\n"
780 "9fuwdbTw4y3jfPQgszU4YZxWxhMzccxe058Qx1tLndAknBQEBesQjXytVQpuM1SV\n"
782 "-----END CERTIFICATE-----\n";
784 CKM::RawBuffer buffer(certPem.begin(), certPem.end());
785 auto cert = CKM::Certificate::create(buffer, CKM::DataFormat::FORM_PEM);
786 CKM::Alias alias; //alias is not initialized
789 auto manager = CKM::Manager::create();
791 CKM_API_ERROR_INPUT_PARAM == (temp = manager->saveCertificate(alias, cert, CKM::Policy())),
792 "Error=" << CKM::ErrorToString(temp));
795 RUNNER_TEST(T12105_saveCertificate_empty_cert)
797 CKM::CertificateShPtr cert; //cert is not initialized
798 CKM::Alias alias = "empty-cert";
801 auto manager = CKM::Manager::create();
803 CKM_API_ERROR_INPUT_PARAM == (temp = manager->saveCertificate(alias, cert, CKM::Policy())),
804 "Error=" << CKM::ErrorToString(temp));
807 RUNNER_TEST(T12106_saveData_empty_alias)
809 std::string testData = "test data test data test data";
810 CKM::RawBuffer buffer(testData.begin(), testData.end());
814 auto manager = CKM::Manager::create();
816 CKM_API_ERROR_INPUT_PARAM == (temp = manager->saveData(alias, buffer, CKM::Policy())),
817 "Error=" << CKM::ErrorToString(temp));
820 RUNNER_TEST(T12107_saveData_empty_data)
822 CKM::RawBuffer buffer;
823 CKM::Alias alias = "empty-data";
826 auto manager = CKM::Manager::create();
828 CKM_API_ERROR_INPUT_PARAM == (temp = manager->saveData(alias, buffer, CKM::Policy())),
829 "Error=" << CKM::ErrorToString(temp));
833 * These test cases tests API when trying to get data from not existing alias
836 RUNNER_TEST(T12108_getKey_alias_not_exist)
839 CKM::Alias alias = "this-alias-not-exist";
842 auto manager = CKM::Manager::create();
844 CKM_API_ERROR_DB_ALIAS_UNKNOWN == (temp = manager->getKey(alias, "", key)),
845 "Error=" << CKM::ErrorToString(temp));
848 RUNNER_TEST(T12109_getCertificate_alias_not_exist)
850 CKM::CertificateShPtr certificate;
851 CKM::Alias alias = "this-alias-not-exist";
854 auto manager = CKM::Manager::create();
856 CKM_API_ERROR_DB_ALIAS_UNKNOWN == (temp = manager->getCertificate(alias, CKM::Password(), certificate)),
857 "Error=" << CKM::ErrorToString(temp));
860 RUNNER_TEST(T12110_getData_alias_not_exist)
863 auto manager = CKM::Manager::create();
864 CKM::RawBuffer buffer;
865 CKM::Alias alias("some alias");
867 CKM_API_ERROR_DB_ALIAS_UNKNOWN == (temp = manager->getData(alias, "", buffer)),
868 "Error=" << CKM::ErrorToString(temp));
872 * These test cases tests API when damaged keys are used
874 RUNNER_TEST(T12111_rsa_key_damaged)
877 auto manager = CKM::Manager::create();
879 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
880 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
881 // "BROKENBROKENBROKENBROKENBROKENTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT\n"
882 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
883 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
884 // "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
885 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
887 "-----END PUBLIC KEY-----";
889 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
890 auto key = CKM::Key::create(buffer);
891 CKM::Alias alias = "damaged-rsa";
894 NULL == key.get(), "Key is broken. It should be empty");
897 CKM_API_ERROR_INPUT_PARAM == (ret = manager->saveKey(alias, key, CKM::Policy())),
898 "Error=" << CKM::ErrorToString(ret));
901 RUNNER_TEST(T12112_rsa_key_too_short)
904 auto manager = CKM::Manager::create();
906 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
907 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
908 //"T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
909 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
910 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
911 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
912 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
914 "-----END PUBLIC KEY-----";
916 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
917 auto key = CKM::Key::create(buffer);
918 CKM::Alias alias = "short-rsa";
921 CKM_API_ERROR_INPUT_PARAM == (ret = manager->saveKey(alias, key, CKM::Policy())),
922 "Error=" << CKM::ErrorToString(ret));
925 RUNNER_TEST(T12113_dsa_key_too_short)
928 auto manager = CKM::Manager::create();
930 const std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
931 "MIIBtzCCASwGByqGSM44BAEwggEfAoGBALeveaD/EheW+ws1YuW77f344+brkEzm\n"
932 "BVfFYHr7t+jwu6nQe341SoESJG+PCgrrhy76KNDCfveiwEoWufVHnI4bYBU/ClzP\n"
933 //"A3amf6c5yud45ZR/b6OiAuew6ohY0mQGnzqeio8BaCsZaJ6EziCSlkdIDJisSfPg\n"
934 "nlWHqf4AwHVdAhUA7I1JQ7sBFJ+N19w3Omu+aO8EG08CgYEAldagy/Ccxhh43cZu\n"
935 //"AZQxgJLCcp1jg6NdPMdkZ2TcSijvaVxBu+gjEGOqN5Os2V6UF7S/k/rjHYmcX9ux\n"
936 "gpjkC31yTNrKyERIAFIYZtG2K7LVBUZq5Fgm7I83QBVchJ2PA7mBaugJFEhNjbhK\n"
937 "NRip5UH38le1YDZ/IiA+svFOpeoDgYQAAoGAPT91aEgwFdulzmHlvr3k+GBCE9z+\n"
938 "hq0c3FGUCtGbVOqg2KPqMBgwSb4MC0msQys4DTVZhLJI+C5eIPEHgfBMqY1ZNJdO\n"
939 "OSCQciDXnRfSqKbT6tjDTgR5jmh5bG1Q8QFeBTHCDsQHoQYWgx0nyu12lASN80rC\n"
941 "-----END PUBLIC KEY-----";
943 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
944 auto key = CKM::Key::create(buffer);
945 CKM::Alias alias = "short-dsa";
948 CKM_API_ERROR_INPUT_PARAM == (ret = manager->saveKey(alias, key, CKM::Policy())),
949 "Error=" << CKM::ErrorToString(ret));
953 RUNNER_TEST(T12114_deinit)
956 auto control = CKM::Control::create();
959 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
960 "Error=" << CKM::ErrorToString(temp));
962 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
963 "Error=" << CKM::ErrorToString(temp));
966 RUNNER_TEST_GROUP_INIT(T131_CKM_QUICK_SET_GET_TESTS);
968 RUNNER_TEST(T1311_init)
971 auto control = CKM::Control::create();
973 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "test-pass")),
974 "Error=" << CKM::ErrorToString(temp));
975 RUNNER_ASSERT_MSG(time(0) > 1405343457,
976 "Time error. Device date is before 14th of July 2014. You must set proper time on device before run this tests!");
978 struct hostent* he = gethostbyname("google.com");
980 RUNNER_ASSERT_MSG(he != NULL, "There is problem with translate domain google.com into ip address. Probably network "
981 "is not woking on the device. OCSP tests requires network access!");
984 RUNNER_TEST(T1312_get_chain)
986 std::string ee = "-----BEGIN CERTIFICATE-----\n"
987 "MIIF0TCCBLmgAwIBAgIQaPGTP4aS7Ut/WDNaBzdQrDANBgkqhkiG9w0BAQUFADCB\n"
988 "ujELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
989 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n"
990 "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMr\n"
991 "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTAeFw0x\n"
992 "NDAyMjAwMDAwMDBaFw0xNTAyMjAyMzU5NTlaMIHmMRMwEQYLKwYBBAGCNzwCAQMT\n"
993 "AlBMMR0wGwYDVQQPExRQcml2YXRlIE9yZ2FuaXphdGlvbjETMBEGA1UEBRMKMDAw\n"
994 "MDAyNTIzNzELMAkGA1UEBhMCUEwxDzANBgNVBBEUBjAwLTk1MDEUMBIGA1UECBML\n"
995 "bWF6b3dpZWNraWUxETAPBgNVBAcUCFdhcnN6YXdhMRYwFAYDVQQJFA1TZW5hdG9y\n"
996 "c2thIDE4MRMwEQYDVQQKFAptQmFuayBTLkEuMQwwCgYDVQQLFANESU4xGTAXBgNV\n"
997 "BAMUEHd3dy5tYmFuay5jb20ucGwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n"
998 "AoIBAQDph6x8V6xUW/+651+qHF+UmorH9uaz2ZrX2bIWiMKIJFmpDDHlxcapKkqE\n"
999 "BV04is83aiCpqKtc2ZHy2g4Hpj1eSF5BP2+OAlo0YUQZPIeRRdiMjmeAxw/ncBDx\n"
1000 "9rQBuCJ4XTD6cqQox5SI0TASOZ+wyAEjbDRXzL73XqRAFZ1LOpb2ONkolS+RutMB\n"
1001 "vshvCsWPeNe7eGLuOh6DyC6r1vX9xhw3xnjM2mTSvmtimgzSLacNGKqRrsucUgcb\n"
1002 "0+O5C2jZAtAMLyZksL92cxmWbtVzUYzem4chjHu5cRxUlPNzUJWrrczueB7Ip4A8\n"
1003 "aQuFMfNXYc0x+WLWjy//urypMKjhAgMBAAGjggGjMIIBnzAbBgNVHREEFDASghB3\n"
1004 "d3cubWJhbmsuY29tLnBsMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgWgMB0GA1Ud\n"
1005 "JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBEBgNVHSAEPTA7MDkGC2CGSAGG+EUB\n"
1006 "BxcGMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9jcHMw\n"
1007 "HQYDVR0OBBYEFN37iGaS7mZnENxZ9FGqNLR+QgoMMB8GA1UdIwQYMBaAFPyKULqe\n"
1008 "uSVae1WFT5UAY4/pWGtDMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9FVlNlY3Vy\n"
1009 "ZS1jcmwudmVyaXNpZ24uY29tL0VWU2VjdXJlMjAwNi5jcmwwfAYIKwYBBQUHAQEE\n"
1010 "cDBuMC0GCCsGAQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC52ZXJpc2lnbi5j\n"
1011 "b20wPQYIKwYBBQUHMAKGMWh0dHA6Ly9FVlNlY3VyZS1haWEudmVyaXNpZ24uY29t\n"
1012 "L0VWU2VjdXJlMjAwNi5jZXIwDQYJKoZIhvcNAQEFBQADggEBAD0wO+rooUrIM4qp\n"
1013 "PHhp+hkXK6WMQ2qzGOmbMcZjw0govg5vkzkefPDryIXXbrF8mRagiJNMSfNaWWeh\n"
1014 "Cj41OV24EdUl0OLbFxNzcvub599zRs/apfaRLTfsmlmOgi0/YP305i+3tJ2ll946\n"
1015 "P+qV1wXnXqTqEdIl4Ys3+1HmDCdTB1hoDwAAzqRVUXZ5+iiwPAU7R/LTHfMjV1ke\n"
1016 "8jtNFfrorlZMCfVH/7eEnHJvVjOJt+YFe4aFMzE+DfuYIK7MH+olC2v79kBwbnEQ\n"
1017 "fvHMA9gFwOYLUBBdSfcocp8EKZ+mRlNPGR/3LBrPeaQQ0GZEkxzRK+v/aNTuiYfr\n"
1019 "-----END CERTIFICATE-----\n";
1022 "-----BEGIN CERTIFICATE-----\n"
1023 "MIIF5DCCBMygAwIBAgIQW3dZxheE4V7HJ8AylSkoazANBgkqhkiG9w0BAQUFADCB\n"
1024 "yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
1025 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\n"
1026 "U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\n"
1027 "ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\n"
1028 "aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMTYxMTA3MjM1OTU5WjCBujEL\n"
1029 "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\n"
1030 "ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg\n"
1031 "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMrVmVy\n"
1032 "aVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTCCASIwDQYJ\n"
1033 "KoZIhvcNAQEBBQADggEPADCCAQoCggEBAJjboFXrnP0XeeOabhQdsVuYI4cWbod2\n"
1034 "nLU4O7WgerQHYwkZ5iqISKnnnbYwWgiXDOyq5BZpcmIjmvt6VCiYxQwtt9citsj5\n"
1035 "OBfH3doxRpqUFI6e7nigtyLUSVSXTeV0W5K87Gws3+fBthsaVWtmCAN/Ra+aM/EQ\n"
1036 "wGyZSpIkMQht3QI+YXZ4eLbtfjeubPOJ4bfh3BXMt1afgKCxBX9ONxX/ty8ejwY4\n"
1037 "P1C3aSijtWZfNhpSSENmUt+ikk/TGGC+4+peGXEFv54cbGhyJW+ze3PJbb0S/5tB\n"
1038 "Ml706H7FC6NMZNFOvCYIZfsZl1h44TO/7Wg+sSdFb8Di7Jdp91zT91ECAwEAAaOC\n"
1039 "AdIwggHOMB0GA1UdDgQWBBT8ilC6nrklWntVhU+VAGOP6VhrQzASBgNVHRMBAf8E\n"
1040 "CDAGAQH/AgEAMD0GA1UdIAQ2MDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRw\n"
1041 "czovL3d3dy52ZXJpc2lnbi5jb20vY3BzMD0GA1UdHwQ2MDQwMqAwoC6GLGh0dHA6\n"
1042 "Ly9FVlNlY3VyZS1jcmwudmVyaXNpZ24uY29tL3BjYTMtZzUuY3JsMA4GA1UdDwEB\n"
1043 "/wQEAwIBBjARBglghkgBhvhCAQEEBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZ\n"
1044 "MFcwVRYJaW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7\n"
1045 "GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwKQYDVR0R\n"
1046 "BCIwIKQeMBwxGjAYBgNVBAMTEUNsYXNzM0NBMjA0OC0xLTQ3MD0GCCsGAQUFBwEB\n"
1047 "BDEwLzAtBggrBgEFBQcwAYYhaHR0cDovL0VWU2VjdXJlLW9jc3AudmVyaXNpZ24u\n"
1048 "Y29tMB8GA1UdIwQYMBaAFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqGSIb3DQEB\n"
1049 "BQUAA4IBAQCWovp/5j3t1CvOtxU/wHIDX4u6FpAl98KD2Md1NGNoElMMU4l7yVYJ\n"
1050 "p8M2RE4O0GJis4b66KGbNGeNUyIXPv2s7mcuQ+JdfzOE8qJwwG6Cl8A0/SXGI3/t\n"
1051 "5rDFV0OEst4t8dD2SB8UcVeyrDHhlyQjyRNddOVG7wl8nuGZMQoIeRuPcZ8XZsg4\n"
1052 "z+6Ml7YGuXNG5NOUweVgtSV1LdlpMezNlsOjdv3odESsErlNv1HoudRETifLriDR\n"
1053 "fip8tmNHnna6l9AW5wtsbfdDbzMLKTB3+p359U64drPNGLT5IO892+bKrZvQTtKH\n"
1054 "qQ2mRHNQ3XBb7a1+Srwi1agm5MKFIA3Z\n"
1055 "-----END CERTIFICATE-----\n";
1057 auto cert = CKM::Certificate::create(CKM::RawBuffer(ee.begin(), ee.end()), CKM::DataFormat::FORM_PEM);
1058 auto cert1 = CKM::Certificate::create(CKM::RawBuffer(im.begin(), im.end()), CKM::DataFormat::FORM_PEM);
1059 CKM::CertificateShPtrVector certVector = {cert1};
1060 CKM::CertificateShPtrVector certChain;
1063 auto manager = CKM::Manager::create();
1065 RUNNER_ASSERT_MSG(NULL != cert.get(), "Certificate should not be empty");
1066 RUNNER_ASSERT_MSG(false != cert1.get(), "Certificate should not be empty");
1069 CKM_API_ERROR_VERIFICATION_FAILED == (tmp = manager->getCertificateChain(cert, CKM::CertificateShPtrVector(), certChain)),
1070 "Error=" << CKM::ErrorToString(tmp));
1073 0 == certChain.size(),
1074 "Wrong size of certificate chain.");
1077 CKM_API_SUCCESS == (tmp = manager->getCertificateChain(cert, certVector, certChain)),
1078 "Error=" << CKM::ErrorToString(tmp));
1081 3 == certChain.size(),
1082 "Wrong size of certificate chain.");
1085 RUNNER_TEST(T1313_get_chain_with_alias)
1087 std::string ee = "-----BEGIN CERTIFICATE-----\n"
1088 "MIIF0TCCBLmgAwIBAgIQaPGTP4aS7Ut/WDNaBzdQrDANBgkqhkiG9w0BAQUFADCB\n"
1089 "ujELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
1090 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n"
1091 "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMr\n"
1092 "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTAeFw0x\n"
1093 "NDAyMjAwMDAwMDBaFw0xNTAyMjAyMzU5NTlaMIHmMRMwEQYLKwYBBAGCNzwCAQMT\n"
1094 "AlBMMR0wGwYDVQQPExRQcml2YXRlIE9yZ2FuaXphdGlvbjETMBEGA1UEBRMKMDAw\n"
1095 "MDAyNTIzNzELMAkGA1UEBhMCUEwxDzANBgNVBBEUBjAwLTk1MDEUMBIGA1UECBML\n"
1096 "bWF6b3dpZWNraWUxETAPBgNVBAcUCFdhcnN6YXdhMRYwFAYDVQQJFA1TZW5hdG9y\n"
1097 "c2thIDE4MRMwEQYDVQQKFAptQmFuayBTLkEuMQwwCgYDVQQLFANESU4xGTAXBgNV\n"
1098 "BAMUEHd3dy5tYmFuay5jb20ucGwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n"
1099 "AoIBAQDph6x8V6xUW/+651+qHF+UmorH9uaz2ZrX2bIWiMKIJFmpDDHlxcapKkqE\n"
1100 "BV04is83aiCpqKtc2ZHy2g4Hpj1eSF5BP2+OAlo0YUQZPIeRRdiMjmeAxw/ncBDx\n"
1101 "9rQBuCJ4XTD6cqQox5SI0TASOZ+wyAEjbDRXzL73XqRAFZ1LOpb2ONkolS+RutMB\n"
1102 "vshvCsWPeNe7eGLuOh6DyC6r1vX9xhw3xnjM2mTSvmtimgzSLacNGKqRrsucUgcb\n"
1103 "0+O5C2jZAtAMLyZksL92cxmWbtVzUYzem4chjHu5cRxUlPNzUJWrrczueB7Ip4A8\n"
1104 "aQuFMfNXYc0x+WLWjy//urypMKjhAgMBAAGjggGjMIIBnzAbBgNVHREEFDASghB3\n"
1105 "d3cubWJhbmsuY29tLnBsMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgWgMB0GA1Ud\n"
1106 "JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBEBgNVHSAEPTA7MDkGC2CGSAGG+EUB\n"
1107 "BxcGMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9jcHMw\n"
1108 "HQYDVR0OBBYEFN37iGaS7mZnENxZ9FGqNLR+QgoMMB8GA1UdIwQYMBaAFPyKULqe\n"
1109 "uSVae1WFT5UAY4/pWGtDMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9FVlNlY3Vy\n"
1110 "ZS1jcmwudmVyaXNpZ24uY29tL0VWU2VjdXJlMjAwNi5jcmwwfAYIKwYBBQUHAQEE\n"
1111 "cDBuMC0GCCsGAQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC52ZXJpc2lnbi5j\n"
1112 "b20wPQYIKwYBBQUHMAKGMWh0dHA6Ly9FVlNlY3VyZS1haWEudmVyaXNpZ24uY29t\n"
1113 "L0VWU2VjdXJlMjAwNi5jZXIwDQYJKoZIhvcNAQEFBQADggEBAD0wO+rooUrIM4qp\n"
1114 "PHhp+hkXK6WMQ2qzGOmbMcZjw0govg5vkzkefPDryIXXbrF8mRagiJNMSfNaWWeh\n"
1115 "Cj41OV24EdUl0OLbFxNzcvub599zRs/apfaRLTfsmlmOgi0/YP305i+3tJ2ll946\n"
1116 "P+qV1wXnXqTqEdIl4Ys3+1HmDCdTB1hoDwAAzqRVUXZ5+iiwPAU7R/LTHfMjV1ke\n"
1117 "8jtNFfrorlZMCfVH/7eEnHJvVjOJt+YFe4aFMzE+DfuYIK7MH+olC2v79kBwbnEQ\n"
1118 "fvHMA9gFwOYLUBBdSfcocp8EKZ+mRlNPGR/3LBrPeaQQ0GZEkxzRK+v/aNTuiYfr\n"
1120 "-----END CERTIFICATE-----\n";
1123 "-----BEGIN CERTIFICATE-----\n"
1124 "MIIF5DCCBMygAwIBAgIQW3dZxheE4V7HJ8AylSkoazANBgkqhkiG9w0BAQUFADCB\n"
1125 "yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
1126 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\n"
1127 "U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\n"
1128 "ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\n"
1129 "aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMTYxMTA3MjM1OTU5WjCBujEL\n"
1130 "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\n"
1131 "ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg\n"
1132 "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMrVmVy\n"
1133 "aVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTCCASIwDQYJ\n"
1134 "KoZIhvcNAQEBBQADggEPADCCAQoCggEBAJjboFXrnP0XeeOabhQdsVuYI4cWbod2\n"
1135 "nLU4O7WgerQHYwkZ5iqISKnnnbYwWgiXDOyq5BZpcmIjmvt6VCiYxQwtt9citsj5\n"
1136 "OBfH3doxRpqUFI6e7nigtyLUSVSXTeV0W5K87Gws3+fBthsaVWtmCAN/Ra+aM/EQ\n"
1137 "wGyZSpIkMQht3QI+YXZ4eLbtfjeubPOJ4bfh3BXMt1afgKCxBX9ONxX/ty8ejwY4\n"
1138 "P1C3aSijtWZfNhpSSENmUt+ikk/TGGC+4+peGXEFv54cbGhyJW+ze3PJbb0S/5tB\n"
1139 "Ml706H7FC6NMZNFOvCYIZfsZl1h44TO/7Wg+sSdFb8Di7Jdp91zT91ECAwEAAaOC\n"
1140 "AdIwggHOMB0GA1UdDgQWBBT8ilC6nrklWntVhU+VAGOP6VhrQzASBgNVHRMBAf8E\n"
1141 "CDAGAQH/AgEAMD0GA1UdIAQ2MDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRw\n"
1142 "czovL3d3dy52ZXJpc2lnbi5jb20vY3BzMD0GA1UdHwQ2MDQwMqAwoC6GLGh0dHA6\n"
1143 "Ly9FVlNlY3VyZS1jcmwudmVyaXNpZ24uY29tL3BjYTMtZzUuY3JsMA4GA1UdDwEB\n"
1144 "/wQEAwIBBjARBglghkgBhvhCAQEEBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZ\n"
1145 "MFcwVRYJaW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7\n"
1146 "GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwKQYDVR0R\n"
1147 "BCIwIKQeMBwxGjAYBgNVBAMTEUNsYXNzM0NBMjA0OC0xLTQ3MD0GCCsGAQUFBwEB\n"
1148 "BDEwLzAtBggrBgEFBQcwAYYhaHR0cDovL0VWU2VjdXJlLW9jc3AudmVyaXNpZ24u\n"
1149 "Y29tMB8GA1UdIwQYMBaAFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqGSIb3DQEB\n"
1150 "BQUAA4IBAQCWovp/5j3t1CvOtxU/wHIDX4u6FpAl98KD2Md1NGNoElMMU4l7yVYJ\n"
1151 "p8M2RE4O0GJis4b66KGbNGeNUyIXPv2s7mcuQ+JdfzOE8qJwwG6Cl8A0/SXGI3/t\n"
1152 "5rDFV0OEst4t8dD2SB8UcVeyrDHhlyQjyRNddOVG7wl8nuGZMQoIeRuPcZ8XZsg4\n"
1153 "z+6Ml7YGuXNG5NOUweVgtSV1LdlpMezNlsOjdv3odESsErlNv1HoudRETifLriDR\n"
1154 "fip8tmNHnna6l9AW5wtsbfdDbzMLKTB3+p359U64drPNGLT5IO892+bKrZvQTtKH\n"
1155 "qQ2mRHNQ3XBb7a1+Srwi1agm5MKFIA3Z\n"
1156 "-----END CERTIFICATE-----\n";
1158 auto cert = CKM::Certificate::create(CKM::RawBuffer(ee.begin(), ee.end()), CKM::DataFormat::FORM_PEM);
1159 auto cert1 = CKM::Certificate::create(CKM::RawBuffer(im.begin(), im.end()), CKM::DataFormat::FORM_PEM);
1160 CKM::CertificateShPtrVector certChain;
1161 CKM::AliasVector aliasVector;
1162 CKM::Alias alias("imcert");
1165 auto manager = CKM::Manager::create();
1167 RUNNER_ASSERT_MSG(NULL != cert.get(), "Certificate should not be empty");
1168 RUNNER_ASSERT_MSG(NULL != cert1.get(), "Certificate should not be empty");
1171 CKM_API_ERROR_VERIFICATION_FAILED == (tmp = manager->getCertificateChain(cert, aliasVector, certChain)),
1172 "Error=" << CKM::ErrorToString(tmp));
1175 0 == certChain.size(),
1176 "Wrong size of certificate chain.");
1179 CKM_API_SUCCESS == (tmp = manager->saveCertificate(alias, cert1, CKM::Policy())),
1180 "Error=" << CKM::ErrorToString(tmp));
1182 aliasVector.push_back(alias);
1185 CKM_API_SUCCESS == (tmp = manager->getCertificateChain(cert, aliasVector, certChain)),
1186 "Error=" << CKM::ErrorToString(tmp));
1189 3 == certChain.size(),
1190 "Wrong size of certificate chain.");
1193 RUNNER_TEST(T1314_ocsp_check)
1195 std::string ee = "-----BEGIN CERTIFICATE-----\n"
1196 "MIIF0TCCBLmgAwIBAgIQaPGTP4aS7Ut/WDNaBzdQrDANBgkqhkiG9w0BAQUFADCB\n"
1197 "ujELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
1198 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n"
1199 "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMr\n"
1200 "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTAeFw0x\n"
1201 "NDAyMjAwMDAwMDBaFw0xNTAyMjAyMzU5NTlaMIHmMRMwEQYLKwYBBAGCNzwCAQMT\n"
1202 "AlBMMR0wGwYDVQQPExRQcml2YXRlIE9yZ2FuaXphdGlvbjETMBEGA1UEBRMKMDAw\n"
1203 "MDAyNTIzNzELMAkGA1UEBhMCUEwxDzANBgNVBBEUBjAwLTk1MDEUMBIGA1UECBML\n"
1204 "bWF6b3dpZWNraWUxETAPBgNVBAcUCFdhcnN6YXdhMRYwFAYDVQQJFA1TZW5hdG9y\n"
1205 "c2thIDE4MRMwEQYDVQQKFAptQmFuayBTLkEuMQwwCgYDVQQLFANESU4xGTAXBgNV\n"
1206 "BAMUEHd3dy5tYmFuay5jb20ucGwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n"
1207 "AoIBAQDph6x8V6xUW/+651+qHF+UmorH9uaz2ZrX2bIWiMKIJFmpDDHlxcapKkqE\n"
1208 "BV04is83aiCpqKtc2ZHy2g4Hpj1eSF5BP2+OAlo0YUQZPIeRRdiMjmeAxw/ncBDx\n"
1209 "9rQBuCJ4XTD6cqQox5SI0TASOZ+wyAEjbDRXzL73XqRAFZ1LOpb2ONkolS+RutMB\n"
1210 "vshvCsWPeNe7eGLuOh6DyC6r1vX9xhw3xnjM2mTSvmtimgzSLacNGKqRrsucUgcb\n"
1211 "0+O5C2jZAtAMLyZksL92cxmWbtVzUYzem4chjHu5cRxUlPNzUJWrrczueB7Ip4A8\n"
1212 "aQuFMfNXYc0x+WLWjy//urypMKjhAgMBAAGjggGjMIIBnzAbBgNVHREEFDASghB3\n"
1213 "d3cubWJhbmsuY29tLnBsMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgWgMB0GA1Ud\n"
1214 "JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBEBgNVHSAEPTA7MDkGC2CGSAGG+EUB\n"
1215 "BxcGMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9jcHMw\n"
1216 "HQYDVR0OBBYEFN37iGaS7mZnENxZ9FGqNLR+QgoMMB8GA1UdIwQYMBaAFPyKULqe\n"
1217 "uSVae1WFT5UAY4/pWGtDMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9FVlNlY3Vy\n"
1218 "ZS1jcmwudmVyaXNpZ24uY29tL0VWU2VjdXJlMjAwNi5jcmwwfAYIKwYBBQUHAQEE\n"
1219 "cDBuMC0GCCsGAQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC52ZXJpc2lnbi5j\n"
1220 "b20wPQYIKwYBBQUHMAKGMWh0dHA6Ly9FVlNlY3VyZS1haWEudmVyaXNpZ24uY29t\n"
1221 "L0VWU2VjdXJlMjAwNi5jZXIwDQYJKoZIhvcNAQEFBQADggEBAD0wO+rooUrIM4qp\n"
1222 "PHhp+hkXK6WMQ2qzGOmbMcZjw0govg5vkzkefPDryIXXbrF8mRagiJNMSfNaWWeh\n"
1223 "Cj41OV24EdUl0OLbFxNzcvub599zRs/apfaRLTfsmlmOgi0/YP305i+3tJ2ll946\n"
1224 "P+qV1wXnXqTqEdIl4Ys3+1HmDCdTB1hoDwAAzqRVUXZ5+iiwPAU7R/LTHfMjV1ke\n"
1225 "8jtNFfrorlZMCfVH/7eEnHJvVjOJt+YFe4aFMzE+DfuYIK7MH+olC2v79kBwbnEQ\n"
1226 "fvHMA9gFwOYLUBBdSfcocp8EKZ+mRlNPGR/3LBrPeaQQ0GZEkxzRK+v/aNTuiYfr\n"
1228 "-----END CERTIFICATE-----\n";
1231 "-----BEGIN CERTIFICATE-----\n"
1232 "MIIF5DCCBMygAwIBAgIQW3dZxheE4V7HJ8AylSkoazANBgkqhkiG9w0BAQUFADCB\n"
1233 "yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
1234 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\n"
1235 "U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\n"
1236 "ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\n"
1237 "aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMTYxMTA3MjM1OTU5WjCBujEL\n"
1238 "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\n"
1239 "ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg\n"
1240 "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMrVmVy\n"
1241 "aVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTCCASIwDQYJ\n"
1242 "KoZIhvcNAQEBBQADggEPADCCAQoCggEBAJjboFXrnP0XeeOabhQdsVuYI4cWbod2\n"
1243 "nLU4O7WgerQHYwkZ5iqISKnnnbYwWgiXDOyq5BZpcmIjmvt6VCiYxQwtt9citsj5\n"
1244 "OBfH3doxRpqUFI6e7nigtyLUSVSXTeV0W5K87Gws3+fBthsaVWtmCAN/Ra+aM/EQ\n"
1245 "wGyZSpIkMQht3QI+YXZ4eLbtfjeubPOJ4bfh3BXMt1afgKCxBX9ONxX/ty8ejwY4\n"
1246 "P1C3aSijtWZfNhpSSENmUt+ikk/TGGC+4+peGXEFv54cbGhyJW+ze3PJbb0S/5tB\n"
1247 "Ml706H7FC6NMZNFOvCYIZfsZl1h44TO/7Wg+sSdFb8Di7Jdp91zT91ECAwEAAaOC\n"
1248 "AdIwggHOMB0GA1UdDgQWBBT8ilC6nrklWntVhU+VAGOP6VhrQzASBgNVHRMBAf8E\n"
1249 "CDAGAQH/AgEAMD0GA1UdIAQ2MDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRw\n"
1250 "czovL3d3dy52ZXJpc2lnbi5jb20vY3BzMD0GA1UdHwQ2MDQwMqAwoC6GLGh0dHA6\n"
1251 "Ly9FVlNlY3VyZS1jcmwudmVyaXNpZ24uY29tL3BjYTMtZzUuY3JsMA4GA1UdDwEB\n"
1252 "/wQEAwIBBjARBglghkgBhvhCAQEEBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZ\n"
1253 "MFcwVRYJaW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7\n"
1254 "GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwKQYDVR0R\n"
1255 "BCIwIKQeMBwxGjAYBgNVBAMTEUNsYXNzM0NBMjA0OC0xLTQ3MD0GCCsGAQUFBwEB\n"
1256 "BDEwLzAtBggrBgEFBQcwAYYhaHR0cDovL0VWU2VjdXJlLW9jc3AudmVyaXNpZ24u\n"
1257 "Y29tMB8GA1UdIwQYMBaAFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqGSIb3DQEB\n"
1258 "BQUAA4IBAQCWovp/5j3t1CvOtxU/wHIDX4u6FpAl98KD2Md1NGNoElMMU4l7yVYJ\n"
1259 "p8M2RE4O0GJis4b66KGbNGeNUyIXPv2s7mcuQ+JdfzOE8qJwwG6Cl8A0/SXGI3/t\n"
1260 "5rDFV0OEst4t8dD2SB8UcVeyrDHhlyQjyRNddOVG7wl8nuGZMQoIeRuPcZ8XZsg4\n"
1261 "z+6Ml7YGuXNG5NOUweVgtSV1LdlpMezNlsOjdv3odESsErlNv1HoudRETifLriDR\n"
1262 "fip8tmNHnna6l9AW5wtsbfdDbzMLKTB3+p359U64drPNGLT5IO892+bKrZvQTtKH\n"
1263 "qQ2mRHNQ3XBb7a1+Srwi1agm5MKFIA3Z\n"
1264 "-----END CERTIFICATE-----\n";
1266 auto cert = CKM::Certificate::create(CKM::RawBuffer(ee.begin(), ee.end()), CKM::DataFormat::FORM_PEM);
1267 auto cert1 = CKM::Certificate::create(CKM::RawBuffer(im.begin(), im.end()), CKM::DataFormat::FORM_PEM);
1268 CKM::CertificateShPtrVector certVector = {cert1};
1269 CKM::CertificateShPtrVector certChain;
1272 auto manager = CKM::Manager::create();
1274 RUNNER_ASSERT_MSG(NULL != cert.get(), "Certificate should not be empty");
1275 RUNNER_ASSERT_MSG(NULL != cert1.get(), "Certificate should not be empty");
1278 CKM_API_ERROR_VERIFICATION_FAILED == (tmp = manager->getCertificateChain(cert, CKM::CertificateShPtrVector(), certChain)),
1279 "Error=" << CKM::ErrorToString(tmp));
1282 0 == certChain.size(),
1283 "Wrong size of certificate chain.");
1286 CKM_API_SUCCESS == (tmp = manager->getCertificateChain(cert, certVector, certChain)),
1287 "Error=" << CKM::ErrorToString(tmp));
1290 3 == certChain.size(),
1291 "Wrong size of certificate chain.");
1295 CKM_API_SUCCESS == (tmp = manager->ocspCheck(certChain, status)),
1296 "Error=" << CKM::ErrorToString(tmp));
1298 RUNNER_ASSERT_MSG(CKM_API_OCSP_STATUS_GOOD == status, "Verfication failed");
1301 RUNNER_TEST(T1315_deinit)
1304 auto control = CKM::Control::create();
1307 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
1308 "Error=" << CKM::ErrorToString(temp));
1310 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
1311 "Error=" << CKM::ErrorToString(temp));
1314 RUNNER_TEST_GROUP_INIT(T141_CREATE_AND_VERIFY_SIGNATURE);
1316 RUNNER_TEST(T1411_init)
1319 auto control = CKM::Control::create();
1321 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "test-pass")),
1322 "Error=" << CKM::ErrorToString(temp));
1325 RUNNER_TEST(T1412_rsa_key_create_verify)
1328 auto manager = CKM::Manager::create();
1330 std::string prv = "-----BEGIN RSA PRIVATE KEY-----\n"
1331 "Proc-Type: 4,ENCRYPTED\n"
1332 "DEK-Info: DES-EDE3-CBC,6C6507B11671DABC\n"
1334 "YiKNviNqc/V/i241CKtAVsNckesE0kcaka3VrY7ApXR+Va93YoEwVQ8gB9cE/eHH\n"
1335 "S0j3ZS1PAVFM/qo4ZnPdMzaSLvTQw0GAL90wWgF3XQ+feMnWyBObEoQdGXE828TB\n"
1336 "SLz4UOIQ55Dx6JSWTfEhwAlPs2cEWD14xvuxPzAEzBIYmWmBBsCN94YgFeRTzjH0\n"
1337 "TImoYVMN60GgOfZWw6rXq9RaV5dY0Y6F1piypCLGD35VaXAutdHIDvwUGECPm7SN\n"
1338 "w05jRro53E1vb4mYlZEY/bs4q7XEOI5+ZKT76Xn0oEJNX1KRL1h2q8fgUkm5j40M\n"
1339 "uQj71aLR9KyIoQARwGLeRy09tLVjH3fj66CCMqaPcxcIRIyWi5yYBB0s53ipm6A9\n"
1340 "CYuyc7MS2C0pOdWKsDvYsHR/36KUiIdPuhF4AbaTqqO0eWeuP7Na7dGK56Fl+ooi\n"
1341 "cUpJr7cIqMl2vL25B0jW7d4TB3zwCEkVVD1fBPeNoZWo30z4bILcBqjjPkQfHZ2e\n"
1342 "xNraG3qI4FHjoPT8JEE8p+PgwaMoINlICyIMKiCdvwz9yEnsHPy7FkmatpS+jFoS\n"
1343 "mg8R9vMwgK/HGEm0dmb/7/a0XsG2jCDm6cOmJdZJFQ8JW7hFs3eOHpNlQYDChG2D\n"
1344 "A1ExslqBtbpicywTZhzFdYU/hxeCr4UqcY27Zmhr4JlBPMyvadWKeOqCamWepjbT\n"
1345 "T/MhWJbmWgZbI5s5sbpu7cOYubQcUIEsTaQXGx/KEzGo1HLn9tzSeQfP/nqjAD/L\n"
1346 "T5t1Mb8o4LuV/fGIT33Q3i2FospJMqp2JINNzG18I6Fjo08PTvJ3row40Rb76+lJ\n"
1347 "wN1IBthgBgsgsOdB6XNc56sV+uq2TACsNNWw+JnFRCkCQgfF/KUrvN+WireWq88B\n"
1348 "9UPG+Hbans5A6K+y1a+bzfdYnKws7x8wNRyPxb7Vb2t9ZTl5PBorPLVGsjgf9N5X\n"
1349 "tCdBlfJsUdXot+EOxrIczV5zx0JIB1Y9hrDG07RYkzPuJKxkW7skqeLo8oWGVpaQ\n"
1350 "LGWvuebky1R75hcSuL3e4QHfjBHPdQ31fScB884tqkbhBAWr2nT9bYEmyT170bno\n"
1351 "8QkyOSb99xZBX55sLDHs9p61sTJr2C9Lz/KaWQs+3hTkpwSjSRyjEMH2n491qiQX\n"
1352 "G+kvLEnvtR8sl9zinorj/RfsxyPntAxudfY3qaYUu2QkLvVdfTVUVbxS/Fg8f7B3\n"
1353 "hEjCtpKgFjPxQuHE3didNOr5xM7mkmLN/QA7yHVgdpE64T5mFgC3JcVRpcR7zBPH\n"
1354 "3OeXHgjrhDfN8UIX/cq6gNgD8w7O0rhHa3mEXI1xP14ykPcJ7wlRuLm9P3fwx5A2\n"
1355 "jQrVKJKw1Nzummmspn4VOpJY3LkH4Sxo4e7Soo1l1cxJpzmERwgMF+vGz1L70+DG\n"
1356 "M0hVrz1PxlOsBBFgcdS4TB91DIs/RcFDqrJ4gOPNKCgBP+rgTXXLFcxUwJfE3lKg\n"
1357 "Kmpwdne6FuQYX3eyRVAmPgOHbJuRQCh/V4fYo51UxCcEKeKy6UgOPEJlXksWGbH5\n"
1358 "VFmlytYW6dFKJvjltSmK6L2r+TlyEQoXwTqe4bkfhB2LniDEq28hKQ==\n"
1359 "-----END RSA PRIVATE KEY-----\n";
1361 std::string pub = "-----BEGIN PUBLIC KEY-----\n"
1362 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
1363 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
1364 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
1365 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
1366 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
1367 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
1369 "-----END PUBLIC KEY-----\n";
1371 std::string message = "message test";
1373 CKM::Alias aliasPub = "pub1";
1374 CKM::Alias aliasPrv = "prv1";
1375 CKM::Password password = "1234";
1376 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
1377 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
1378 CKM::RawBuffer signature;
1380 auto keyPub = CKM::Key::create(CKM::RawBuffer(pub.begin(), pub.end()));
1381 auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()), password);
1383 RUNNER_ASSERT_MSG(NULL != keyPub.get(),
1384 "Key is empty. Failed to import public key.");
1385 RUNNER_ASSERT_MSG(NULL != keyPrv.get(),
1386 "Key is empty. Failed to import private key.");
1389 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPub, keyPub, CKM::Policy())),
1390 "Error=" << CKM::ErrorToString(temp));
1392 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
1393 "Error=" << CKM::ErrorToString(temp));
1396 CKM_API_SUCCESS == (temp = manager->createSignature(
1399 CKM::RawBuffer(message.begin(), message.end()),
1403 "Error=" << CKM::ErrorToString(temp));
1406 CKM_API_SUCCESS == (temp = manager->verifySignature(
1409 CKM::RawBuffer(message.begin(), message.end()),
1413 "Error=" << CKM::ErrorToString(temp));
1416 RUNNER_TEST(T1413_dsa_key_create_verify)
1419 auto manager = CKM::Manager::create();
1421 std::string prv = "-----BEGIN DSA PRIVATE KEY-----\n"
1422 "MIIBvAIBAAKBgQC3r3mg/xIXlvsLNWLlu+39+OPm65BM5gVXxWB6+7fo8Lup0Ht+\n"
1423 "NUqBEiRvjwoK64cu+ijQwn73osBKFrn1R5yOG2AVPwpczwN2pn+nOcrneOWUf2+j\n"
1424 "ogLnsOqIWNJkBp86noqPAWgrGWiehM4gkpZHSAyYrEnz4J5Vh6n+AMB1XQIVAOyN\n"
1425 "SUO7ARSfjdfcNzprvmjvBBtPAoGBAJXWoMvwnMYYeN3GbgGUMYCSwnKdY4OjXTzH\n"
1426 "ZGdk3Eoo72lcQbvoIxBjqjeTrNlelBe0v5P64x2JnF/bsYKY5At9ckzayshESABS\n"
1427 "GGbRtiuy1QVGauRYJuyPN0AVXISdjwO5gWroCRRITY24SjUYqeVB9/JXtWA2fyIg\n"
1428 "PrLxTqXqAoGAPT91aEgwFdulzmHlvr3k+GBCE9z+hq0c3FGUCtGbVOqg2KPqMBgw\n"
1429 "Sb4MC0msQys4DTVZhLJI+C5eIPEHgfBMqY1ZNJdOOSCQciDXnRfSqKbT6tjDTgR5\n"
1430 "jmh5bG1Q8QFeBTHCDsQHoQYWgx0nyu12lASN80rCYMYCBhubtrVaLmcCFQC0IB4m\n"
1431 "u1roOuaPY+Hl19BlTE2qdw==\n"
1432 "-----END DSA PRIVATE KEY-----";
1434 std::string pub = "-----BEGIN PUBLIC KEY-----\n"
1435 "MIIBtzCCASwGByqGSM44BAEwggEfAoGBALeveaD/EheW+ws1YuW77f344+brkEzm\n"
1436 "BVfFYHr7t+jwu6nQe341SoESJG+PCgrrhy76KNDCfveiwEoWufVHnI4bYBU/ClzP\n"
1437 "A3amf6c5yud45ZR/b6OiAuew6ohY0mQGnzqeio8BaCsZaJ6EziCSlkdIDJisSfPg\n"
1438 "nlWHqf4AwHVdAhUA7I1JQ7sBFJ+N19w3Omu+aO8EG08CgYEAldagy/Ccxhh43cZu\n"
1439 "AZQxgJLCcp1jg6NdPMdkZ2TcSijvaVxBu+gjEGOqN5Os2V6UF7S/k/rjHYmcX9ux\n"
1440 "gpjkC31yTNrKyERIAFIYZtG2K7LVBUZq5Fgm7I83QBVchJ2PA7mBaugJFEhNjbhK\n"
1441 "NRip5UH38le1YDZ/IiA+svFOpeoDgYQAAoGAPT91aEgwFdulzmHlvr3k+GBCE9z+\n"
1442 "hq0c3FGUCtGbVOqg2KPqMBgwSb4MC0msQys4DTVZhLJI+C5eIPEHgfBMqY1ZNJdO\n"
1443 "OSCQciDXnRfSqKbT6tjDTgR5jmh5bG1Q8QFeBTHCDsQHoQYWgx0nyu12lASN80rC\n"
1444 "YMYCBhubtrVaLmc=\n"
1445 "-----END PUBLIC KEY-----";
1447 std::string message = "message test";
1449 CKM::Alias aliasPub = "pub2";
1450 CKM::Alias aliasPrv = "prv2";
1451 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
1452 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
1453 CKM::RawBuffer signature;
1455 auto keyPub = CKM::Key::create(CKM::RawBuffer(pub.begin(), pub.end()));
1456 auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()), CKM::Password());
1458 RUNNER_ASSERT_MSG(NULL != keyPub.get(),
1459 "Key is empty. Failed to import public key.");
1460 RUNNER_ASSERT_MSG(NULL != keyPrv.get(),
1461 "Key is empty. Failed to import private key.");
1464 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPub, keyPub, CKM::Policy())),
1465 "Error=" << CKM::ErrorToString(temp));
1467 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
1468 "Error=" << CKM::ErrorToString(temp));
1471 CKM_API_SUCCESS == (temp = manager->createSignature(
1474 CKM::RawBuffer(message.begin(), message.end()),
1478 "Error=" << CKM::ErrorToString(temp));
1481 CKM_API_SUCCESS == (temp = manager->verifySignature(
1484 CKM::RawBuffer(message.begin(), message.end()),
1488 "Error=" << CKM::ErrorToString(temp));
1491 RUNNER_TEST(T1414_ec_key_create_verify)
1494 auto manager = CKM::Manager::create();
1496 std::string prv = "-----BEGIN EC PRIVATE KEY-----\n"
1497 "MHQCAQEEIJNud6U4h8EM1rASn4W5vQOJELTaVPQTUiESaBULvQUVoAcGBSuBBAAK\n"
1498 "oUQDQgAEL1R+hgjiFrdjbUKRNOxUG8ze9nveD9zT05YHeT7vK0w08AUL1HCH5nFV\n"
1499 "ljePBYSxe6CybFiseayaxRxjA+iF1g==\n"
1500 "-----END EC PRIVATE KEY-----\n";
1502 std::string pub = "-----BEGIN PUBLIC KEY-----\n"
1503 "MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEL1R+hgjiFrdjbUKRNOxUG8ze9nveD9zT\n"
1504 "05YHeT7vK0w08AUL1HCH5nFVljePBYSxe6CybFiseayaxRxjA+iF1g==\n"
1505 "-----END PUBLIC KEY-----\n";
1507 std::string message = "message test";
1509 CKM::Alias aliasPub = "ecpub2";
1510 CKM::Alias aliasPrv = "ecprv2";
1511 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
1512 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
1513 CKM::RawBuffer signature;
1515 auto keyPub = CKM::Key::create(CKM::RawBuffer(pub.begin(), pub.end()));
1516 auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()));
1518 RUNNER_ASSERT_MSG(NULL != keyPub.get(),
1519 "Key is empty. Failed to import public key.");
1520 RUNNER_ASSERT_MSG(NULL != keyPrv.get(),
1521 "Key is empty. Failed to import private key.");
1524 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPub, keyPub, CKM::Policy())),
1525 "Error=" << CKM::ErrorToString(temp));
1527 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
1528 "Error=" << CKM::ErrorToString(temp));
1531 CKM_API_SUCCESS == (temp = manager->createSignature(
1534 CKM::RawBuffer(message.begin(), message.end()),
1538 "Error=" << CKM::ErrorToString(temp));
1541 CKM_API_SUCCESS == (temp = manager->verifySignature(
1544 CKM::RawBuffer(message.begin(), message.end()),
1548 "Error=" << CKM::ErrorToString(temp));
1550 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
1552 memcpy((void*)signature.data(), "BROKEN", 6);
1555 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
1558 CKM::RawBuffer(message.begin(), message.end()),
1562 "Error=" << CKM::ErrorToString(temp));
1565 RUNNER_TEST(T1415_rsa_key_create_verify_negative)
1568 auto manager = CKM::Manager::create();
1569 std::string message = "message asdfaslkdfjlksadjf test";
1571 CKM::Alias aliasPub = "pub1";
1572 CKM::Alias aliasPrv = "prv1";
1574 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
1575 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
1576 CKM::RawBuffer signature;
1579 CKM_API_SUCCESS == (temp = manager->createSignature(
1582 CKM::RawBuffer(message.begin(), message.end()),
1586 "Error=" << CKM::ErrorToString(temp));
1589 CKM_API_SUCCESS == (temp = manager->verifySignature(
1592 CKM::RawBuffer(message.begin(), message.end()),
1596 "Error=" << CKM::ErrorToString(temp));
1598 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
1599 memcpy((void*)signature.data(), "BROKEN", 6);
1602 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
1605 CKM::RawBuffer(message.begin(), message.end()),
1609 "Error=" << CKM::ErrorToString(temp));
1612 RUNNER_TEST(T1416_dsa_key_create_verify_negative)
1615 auto manager = CKM::Manager::create();
1616 std::string message = "message asdfaslkdfjlksadjf test";
1618 CKM::Alias aliasPub = "pub2";
1619 CKM::Alias aliasPrv = "prv2";
1621 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
1622 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
1623 CKM::RawBuffer signature;
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");
1646 memcpy((void*)signature.data(), "BROKEN", 6);
1649 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
1652 CKM::RawBuffer(message.begin(), message.end()),
1656 "Error=" << CKM::ErrorToString(temp));
1659 RUNNER_TEST(T1417_rsa_cert_create_verify_signature)
1662 auto manager = CKM::Manager::create();
1665 "-----BEGIN RSA PRIVATE KEY-----\n"
1666 "MIICXQIBAAKBgQDCKb9BkTdOjCTXKPi/H5FSGuyrgzORBtR3nCTg7SRnL47zNGEj\n"
1667 "l2wkgsY9ZO3UJHm0gy5KMjWeCuUVkSD3G46J9obg1bYJivCQBJKxfieA8sWOtNq1\n"
1668 "M8emHGK8o3sjaRklrngmk2xSCs5vFJVlCluzAYUmrPDm64C3+n4yW4pBCQIDAQAB\n"
1669 "AoGAd1IWgiHO3kuLvFome7XXpaB8P27SutZ6rcLcewnhLDRy4g0XgTrmL43abBJh\n"
1670 "gdSkooVXZity/dvuKpHUs2dQ8W8zYiFFsHfu9qqLmLP6SuBPyUCvlUDH5BGfjjxI\n"
1671 "5qGWIowj/qGHKpbQ7uB+Oe2BHwbHao0zFZIkfKqY0mX9U00CQQDwF/4zQcGS1RX/\n"
1672 "229gowTsvSGVmm8cy1jGst6xkueEuOEZ/AVPO1fjavz+nTziUk4E5lZHAj18L6Hl\n"
1673 "iO29LRujAkEAzwbEWVhfTJewCZIFf3sY3ifXhGZhVKDHVzPBNyoft8Z+09DMHTJb\n"
1674 "EYg85MIbR73aUyIWsEci/CPk6LPRNv47YwJAHtQF2NEFqPPhakPjzjXAaSFz0YDN\n"
1675 "6ZWWpZTMEWL6hUkz5iE9EUpeY54WNB8+dRT6XZix1VZNTMfU8uMdG6BSHwJBAKYM\n"
1676 "gm47AGz5eVujwD8op6CACk+KomRzdI+P1lh9s+T+E3mnDiAY5IxiXp0Ix0K6lyN4\n"
1677 "wwPuerQLwi2XFKZsMYsCQQDOiSQFP9PfXh9kFzN6e89LxOdnqC/r9i5GDB3ea8eL\n"
1678 "SCRprpzqOXZvOP1HBAEjsJ6k4f8Dqj1fm+y8ZcgAZUPr\n"
1679 "-----END RSA PRIVATE KEY-----\n";
1682 "-----BEGIN CERTIFICATE-----\n"
1683 "MIICijCCAfOgAwIBAgIJAMvaNHQ1ozT8MA0GCSqGSIb3DQEBBQUAMF4xCzAJBgNV\n"
1684 "BAYTAlBMMQ0wCwYDVQQIDARMb2R6MQ0wCwYDVQQHDARMb2R6MRAwDgYDVQQKDAdT\n"
1685 "YW1zdW5nMREwDwYDVQQLDAhTZWN1cml0eTEMMAoGA1UEAwwDQ0tNMB4XDTE0MDcw\n"
1686 "MjEyNDE0N1oXDTE3MDcwMTEyNDE0N1owXjELMAkGA1UEBhMCUEwxDTALBgNVBAgM\n"
1687 "BExvZHoxDTALBgNVBAcMBExvZHoxEDAOBgNVBAoMB1NhbXN1bmcxETAPBgNVBAsM\n"
1688 "CFNlY3VyaXR5MQwwCgYDVQQDDANDS00wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ\n"
1689 "AoGBAMIpv0GRN06MJNco+L8fkVIa7KuDM5EG1HecJODtJGcvjvM0YSOXbCSCxj1k\n"
1690 "7dQkebSDLkoyNZ4K5RWRIPcbjon2huDVtgmK8JAEkrF+J4DyxY602rUzx6YcYryj\n"
1691 "eyNpGSWueCaTbFIKzm8UlWUKW7MBhSas8ObrgLf6fjJbikEJAgMBAAGjUDBOMB0G\n"
1692 "A1UdDgQWBBQuW9DuITahZJ6saVZZI0aBlis5vzAfBgNVHSMEGDAWgBQuW9DuITah\n"
1693 "ZJ6saVZZI0aBlis5vzAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBAB2X\n"
1694 "GNtJopBJR3dCpzDONknr/c6qcsPVa3nH4c7qzy6F+4bgqa5IObnoF8zUrvD2sMAO\n"
1695 "km3C/N+Qzt8Rb7ORM6U4tlPp1kZ5t6PKjghhNaiYwVm9A/Zm+wyAmRIkQiYDr4MX\n"
1696 "e+bRAkPmJeEWpaav1lvvBnFzGSGJrnSSeWUegGyn\n"
1697 "-----END CERTIFICATE-----\n";
1699 std::string message = "message test";
1701 CKM::Alias aliasPub = "pub1-cert";
1702 CKM::Alias aliasPrv = "prv1-cert";
1703 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
1704 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
1705 CKM::RawBuffer signature;
1707 auto cert = CKM::Certificate::create(CKM::RawBuffer(pub.begin(), pub.end()), CKM::DataFormat::FORM_PEM);
1708 auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()));
1710 RUNNER_ASSERT_MSG(NULL != cert.get(),
1711 "Key is empty. Failed to import public key.");
1712 RUNNER_ASSERT_MSG(NULL != keyPrv.get(),
1713 "Key is empty. Failed to import private key.");
1716 CKM_API_SUCCESS == (temp = manager->saveCertificate(aliasPub, cert, CKM::Policy())),
1717 "Error=" << CKM::ErrorToString(temp));
1719 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
1720 "Error=" << CKM::ErrorToString(temp));
1723 CKM_API_SUCCESS == (temp = manager->createSignature(
1726 CKM::RawBuffer(message.begin(), message.end()),
1730 "Error=" << CKM::ErrorToString(temp));
1733 CKM_API_SUCCESS == (temp = manager->verifySignature(
1736 CKM::RawBuffer(message.begin(), message.end()),
1740 "Error=" << CKM::ErrorToString(temp));
1742 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
1744 memcpy((void*)signature.data(), "BROKEN", 6);
1747 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
1750 CKM::RawBuffer(message.begin(), message.end()),
1754 "Error=" << CKM::ErrorToString(temp));
1757 RUNNER_TEST(T1418_dsa_cert_create_verify_signature)
1760 auto manager = CKM::Manager::create();
1762 const std::string pub = "-----BEGIN CERTIFICATE-----\n"
1763 "MIIDUzCCAxECCQCer/fKcXtJgTALBglghkgBZQMEAwIwgYsxCzAJBgNVBAYTAlBM\n"
1764 "MQ8wDQYDVQQIDAZQb2xhbmQxDzANBgNVBAcMBldhcnNhdzEQMA4GA1UECgwHU2Ft\n"
1765 "c3VuZzEMMAoGA1UECwwDS1NGMRMwEQYDVQQDDAptLmthcnBpdWsyMSUwIwYJKoZI\n"
1766 "hvcNAQkBFhZtLmthcnBpdWsyQHNhbXN1bmcuY29tMCAXDTE0MDkyNjEzNTQwN1oY\n"
1767 "DzIxNDAwOTA1MTM1NDA3WjCBizELMAkGA1UEBhMCUEwxDzANBgNVBAgMBlBvbGFu\n"
1768 "ZDEPMA0GA1UEBwwGV2Fyc2F3MRAwDgYDVQQKDAdTYW1zdW5nMQwwCgYDVQQLDANL\n"
1769 "U0YxEzARBgNVBAMMCm0ua2FycGl1azIxJTAjBgkqhkiG9w0BCQEWFm0ua2FycGl1\n"
1770 "azJAc2Ftc3VuZy5jb20wggG3MIIBKwYHKoZIzjgEATCCAR4CgYEA9Bhh7ZA4onkY\n"
1771 "uDNQbYR4EwkJ6RpD505hB0GF6yppUNp2LanvNcQXcyXY88MB6OdP7Rikbu1H2zP4\n"
1772 "gONCtdxKW58Za7h9bFzYjxcObZsS52F9DP7sv3C4sX4xNWApfhUgbfzKaRCJOkOs\n"
1773 "06tV7teu3G/v26PdI8dlykIuQXQZmH8CFQCHsIV0njb2yC3ggfKz+exH+g5jAQKB\n"
1774 "gBVLYfVCMjUz5XJH+xYU3A8W8rpSLqZKIK2d9mbXqhpz8QK1bvNQUlSRZo+o1ZYV\n"
1775 "mJn3Mx2YuiifHZNKdBNweCqe5a+HV2RSl1Yv/TV9famZKlogGslsmPHUOJMlSIdh\n"
1776 "MfMwVny4/rNtjEtEFE1WnaTr1W6MKH1EBbizVo8fmWFrA4GFAAKBgQCaPjrlkAyX\n"
1777 "kBitWo+w0xZN4OSk13SsCzZ/PG+5zOgMRaFm2XbiC04YsGCi4NFOd9kaiP7w1CsP\n"
1778 "iqG6Vwv0T/VcoxBl/hp6jEqTDSrM6z0ungjDO9wGOdI+jZS0UjVahgC4ZLDHhrOa\n"
1779 "CjfxcHruO3e416b/Rm2CjhOzjKdoSFUWVzALBglghkgBZQMEAwIDLwAwLAIUHa+A\n"
1780 "5xo8O/tPuH9gXkr1mee6kRYCFGNycJ1xkc3nIJaEQOtGfDe7S71A\n"
1781 "-----END CERTIFICATE-----\n";
1783 const std::string prv = "-----BEGIN DSA PRIVATE KEY-----\n"
1784 "MIIBuwIBAAKBgQD0GGHtkDiieRi4M1BthHgTCQnpGkPnTmEHQYXrKmlQ2nYtqe81\n"
1785 "xBdzJdjzwwHo50/tGKRu7UfbM/iA40K13EpbnxlruH1sXNiPFw5tmxLnYX0M/uy/\n"
1786 "cLixfjE1YCl+FSBt/MppEIk6Q6zTq1Xu167cb+/bo90jx2XKQi5BdBmYfwIVAIew\n"
1787 "hXSeNvbILeCB8rP57Ef6DmMBAoGAFUth9UIyNTPlckf7FhTcDxbyulIupkogrZ32\n"
1788 "ZteqGnPxArVu81BSVJFmj6jVlhWYmfczHZi6KJ8dk0p0E3B4Kp7lr4dXZFKXVi/9\n"
1789 "NX19qZkqWiAayWyY8dQ4kyVIh2Ex8zBWfLj+s22MS0QUTVadpOvVbowofUQFuLNW\n"
1790 "jx+ZYWsCgYEAmj465ZAMl5AYrVqPsNMWTeDkpNd0rAs2fzxvuczoDEWhZtl24gtO\n"
1791 "GLBgouDRTnfZGoj+8NQrD4qhulcL9E/1XKMQZf4aeoxKkw0qzOs9Lp4IwzvcBjnS\n"
1792 "Po2UtFI1WoYAuGSwx4azmgo38XB67jt3uNem/0Ztgo4Ts4ynaEhVFlcCFGMH+Z9l\n"
1793 "vonbjii3BYe4AIdkzOvp\n"
1794 "-----END DSA PRIVATE KEY-----\n";
1796 std::string message = "message test";
1798 CKM::Alias aliasPub = "pub2-cert";
1799 CKM::Alias aliasPrv = "prv2-cert";
1800 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
1801 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
1802 CKM::RawBuffer signature;
1804 auto cert = CKM::Certificate::create(CKM::RawBuffer(pub.begin(), pub.end()), CKM::DataFormat::FORM_PEM);
1805 auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()));
1807 RUNNER_ASSERT_MSG(NULL != cert.get(),
1808 "Key is empty. Failed to import public key.");
1809 RUNNER_ASSERT_MSG(NULL != keyPrv.get(),
1810 "Key is empty. Failed to import private key.");
1813 CKM_API_SUCCESS == (temp = manager->saveCertificate(aliasPub, cert, CKM::Policy())),
1814 "Error=" << CKM::ErrorToString(temp));
1816 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
1817 "Error=" << CKM::ErrorToString(temp));
1820 CKM_API_SUCCESS == (temp = manager->createSignature(
1823 CKM::RawBuffer(message.begin(), message.end()),
1827 "Error=" << CKM::ErrorToString(temp));
1830 CKM_API_SUCCESS == (temp = manager->verifySignature(
1833 CKM::RawBuffer(message.begin(), message.end()),
1837 "Error=" << CKM::ErrorToString(temp));
1839 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
1841 memcpy((void*)signature.data(), "BROKEN", 6);
1844 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
1847 CKM::RawBuffer(message.begin(), message.end()),
1851 "Error=" << CKM::ErrorToString(temp));
1854 RUNNER_TEST(T1419_ecdsa_cert_create_verify_signature)
1857 auto manager = CKM::Manager::create();
1860 "-----BEGIN EC PRIVATE KEY-----\n"
1861 "MIH8AgEBBBRPb/2utS5aCtyuwmzIHpU6LH3mc6CBsjCBrwIBATAgBgcqhkjOPQEB\n"
1862 "AhUA/////////////////////3////8wQwQU/////////////////////3////wE\n"
1863 "FByXvvxUvXqLZaz4n4HU1K3FZfpFAxUAEFPN5CwU1pbmdodWFRdTO/P4M0UEKQRK\n"
1864 "lrVojvVzKEZkaYlow4u5E8v8giOmKFUxaJR9WdzJEgQjUTd6xfsyAhUBAAAAAAAA\n"
1865 "AAAAAfTI+Seu08p1IlcCAQGhLAMqAATehLqu61gKC3Tgr4wQMVoguAhhG3Uwwz8u\n"
1866 "ELyhe7yPCAuOoLZlTLgf\n"
1867 "-----END EC PRIVATE KEY-----\n";
1870 "-----BEGIN CERTIFICATE-----\n"
1871 "MIICfDCCAjqgAwIBAgIJANIytpeTKlXBMAkGByqGSM49BAEwXjELMAkGA1UEBhMC\n"
1872 "UEwxDTALBgNVBAgMBExvZHoxDTALBgNVBAcMBExvZHoxEDAOBgNVBAoMB1NhbXN1\n"
1873 "bmcxETAPBgNVBAsMCFNlY3VyaXR5MQwwCgYDVQQDDANDS00wHhcNMTQwNzAyMTI0\n"
1874 "MTQ3WhcNMTcwNzAxMTI0MTQ3WjBeMQswCQYDVQQGEwJQTDENMAsGA1UECAwETG9k\n"
1875 "ejENMAsGA1UEBwwETG9kejEQMA4GA1UECgwHU2Ftc3VuZzERMA8GA1UECwwIU2Vj\n"
1876 "dXJpdHkxDDAKBgNVBAMMA0NLTTCB6jCBuwYHKoZIzj0CATCBrwIBATAgBgcqhkjO\n"
1877 "PQEBAhUA/////////////////////3////8wQwQU/////////////////////3//\n"
1878 "//wEFByXvvxUvXqLZaz4n4HU1K3FZfpFAxUAEFPN5CwU1pbmdodWFRdTO/P4M0UE\n"
1879 "KQRKlrVojvVzKEZkaYlow4u5E8v8giOmKFUxaJR9WdzJEgQjUTd6xfsyAhUBAAAA\n"
1880 "AAAAAAAAAfTI+Seu08p1IlcCAQEDKgAE3oS6rutYCgt04K+MEDFaILgIYRt1MMM/\n"
1881 "LhC8oXu8jwgLjqC2ZUy4H6NQME4wHQYDVR0OBBYEFELElWx3kbLo55Cfn1vywsEZ\n"
1882 "ccsmMB8GA1UdIwQYMBaAFELElWx3kbLo55Cfn1vywsEZccsmMAwGA1UdEwQFMAMB\n"
1883 "Af8wCQYHKoZIzj0EAQMxADAuAhUAumC4mGoyK97SxTvVBQ+ELfCbxEECFQCbMJ72\n"
1884 "Q1oBry6NEc+lLFmWMDesAA==\n"
1885 "-----END CERTIFICATE-----\n";
1887 std::string message = "message test";
1889 CKM::Alias aliasPub = "pub3";
1890 CKM::Alias aliasPrv = "prv3";
1891 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
1892 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
1893 CKM::RawBuffer signature;
1895 auto cert = CKM::Certificate::create(CKM::RawBuffer(pub.begin(), pub.end()), CKM::DataFormat::FORM_PEM);
1896 auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()));
1898 RUNNER_ASSERT_MSG(NULL != cert.get(),
1899 "Key is empty. Failed to import public key.");
1900 RUNNER_ASSERT_MSG(NULL != keyPrv.get(),
1901 "Key is empty. Failed to import private key.");
1904 CKM_API_SUCCESS == (temp = manager->saveCertificate(aliasPub, cert, CKM::Policy())),
1905 "Error=" << CKM::ErrorToString(temp));
1907 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
1908 "Error=" << CKM::ErrorToString(temp));
1911 CKM_API_SUCCESS == (temp = manager->createSignature(
1914 CKM::RawBuffer(message.begin(), message.end()),
1918 "Error=" << CKM::ErrorToString(temp));
1921 CKM_API_SUCCESS == (temp = manager->verifySignature(
1924 CKM::RawBuffer(message.begin(), message.end()),
1928 "Error=" << CKM::ErrorToString(temp));
1930 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
1932 memcpy((void*)signature.data(), "BROKEN", 6);
1935 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
1938 CKM::RawBuffer(message.begin(), message.end()),
1942 "Error=" << CKM::ErrorToString(temp));
1945 RUNNER_TEST(T1420_deinit)
1948 auto control = CKM::Control::create();
1951 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
1952 "Error=" << CKM::ErrorToString(temp));
1954 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
1955 "Error=" << CKM::ErrorToString(temp));
1958 RUNNER_TEST_GROUP_INIT(T151_CKM_STORAGE_PERNAMENT_TESTS);
1960 RUNNER_CHILD_TEST(T1510_init_unlock_key)
1963 SecurityServer::AccessProvider ap("my-label");
1964 ap.allowAPI("key-manager::api-control", "rw");
1965 ap.applyAndSwithToUser(USER_TEST, GROUP_APP);
1967 auto control = CKM::Control::create();
1969 CKM_API_SUCCESS == (tmp = control->unlockUserKey(USER_TEST, "strong-password")),
1970 "Error=" << CKM::ErrorToString(tmp));
1973 RUNNER_CHILD_TEST(T1511_init_insert_data)
1975 SecurityServer::AccessProvider ap("my-label");
1976 ap.allowAPI("key-manager::api-storage", "rw");
1977 ap.applyAndSwithToUser(USER_TEST, GROUP_APP);
1979 std::string ee = "-----BEGIN CERTIFICATE-----\n"
1980 "MIIF0TCCBLmgAwIBAgIQaPGTP4aS7Ut/WDNaBzdQrDANBgkqhkiG9w0BAQUFADCB\n"
1981 "ujELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
1982 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n"
1983 "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMr\n"
1984 "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTAeFw0x\n"
1985 "NDAyMjAwMDAwMDBaFw0xNTAyMjAyMzU5NTlaMIHmMRMwEQYLKwYBBAGCNzwCAQMT\n"
1986 "AlBMMR0wGwYDVQQPExRQcml2YXRlIE9yZ2FuaXphdGlvbjETMBEGA1UEBRMKMDAw\n"
1987 "MDAyNTIzNzELMAkGA1UEBhMCUEwxDzANBgNVBBEUBjAwLTk1MDEUMBIGA1UECBML\n"
1988 "bWF6b3dpZWNraWUxETAPBgNVBAcUCFdhcnN6YXdhMRYwFAYDVQQJFA1TZW5hdG9y\n"
1989 "c2thIDE4MRMwEQYDVQQKFAptQmFuayBTLkEuMQwwCgYDVQQLFANESU4xGTAXBgNV\n"
1990 "BAMUEHd3dy5tYmFuay5jb20ucGwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n"
1991 "AoIBAQDph6x8V6xUW/+651+qHF+UmorH9uaz2ZrX2bIWiMKIJFmpDDHlxcapKkqE\n"
1992 "BV04is83aiCpqKtc2ZHy2g4Hpj1eSF5BP2+OAlo0YUQZPIeRRdiMjmeAxw/ncBDx\n"
1993 "9rQBuCJ4XTD6cqQox5SI0TASOZ+wyAEjbDRXzL73XqRAFZ1LOpb2ONkolS+RutMB\n"
1994 "vshvCsWPeNe7eGLuOh6DyC6r1vX9xhw3xnjM2mTSvmtimgzSLacNGKqRrsucUgcb\n"
1995 "0+O5C2jZAtAMLyZksL92cxmWbtVzUYzem4chjHu5cRxUlPNzUJWrrczueB7Ip4A8\n"
1996 "aQuFMfNXYc0x+WLWjy//urypMKjhAgMBAAGjggGjMIIBnzAbBgNVHREEFDASghB3\n"
1997 "d3cubWJhbmsuY29tLnBsMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgWgMB0GA1Ud\n"
1998 "JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBEBgNVHSAEPTA7MDkGC2CGSAGG+EUB\n"
1999 "BxcGMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9jcHMw\n"
2000 "HQYDVR0OBBYEFN37iGaS7mZnENxZ9FGqNLR+QgoMMB8GA1UdIwQYMBaAFPyKULqe\n"
2001 "uSVae1WFT5UAY4/pWGtDMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9FVlNlY3Vy\n"
2002 "ZS1jcmwudmVyaXNpZ24uY29tL0VWU2VjdXJlMjAwNi5jcmwwfAYIKwYBBQUHAQEE\n"
2003 "cDBuMC0GCCsGAQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC52ZXJpc2lnbi5j\n"
2004 "b20wPQYIKwYBBQUHMAKGMWh0dHA6Ly9FVlNlY3VyZS1haWEudmVyaXNpZ24uY29t\n"
2005 "L0VWU2VjdXJlMjAwNi5jZXIwDQYJKoZIhvcNAQEFBQADggEBAD0wO+rooUrIM4qp\n"
2006 "PHhp+hkXK6WMQ2qzGOmbMcZjw0govg5vkzkefPDryIXXbrF8mRagiJNMSfNaWWeh\n"
2007 "Cj41OV24EdUl0OLbFxNzcvub599zRs/apfaRLTfsmlmOgi0/YP305i+3tJ2ll946\n"
2008 "P+qV1wXnXqTqEdIl4Ys3+1HmDCdTB1hoDwAAzqRVUXZ5+iiwPAU7R/LTHfMjV1ke\n"
2009 "8jtNFfrorlZMCfVH/7eEnHJvVjOJt+YFe4aFMzE+DfuYIK7MH+olC2v79kBwbnEQ\n"
2010 "fvHMA9gFwOYLUBBdSfcocp8EKZ+mRlNPGR/3LBrPeaQQ0GZEkxzRK+v/aNTuiYfr\n"
2012 "-----END CERTIFICATE-----\n";
2015 "-----BEGIN CERTIFICATE-----\n"
2016 "MIIF5DCCBMygAwIBAgIQW3dZxheE4V7HJ8AylSkoazANBgkqhkiG9w0BAQUFADCB\n"
2017 "yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
2018 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\n"
2019 "U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\n"
2020 "ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\n"
2021 "aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMTYxMTA3MjM1OTU5WjCBujEL\n"
2022 "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\n"
2023 "ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg\n"
2024 "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMrVmVy\n"
2025 "aVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTCCASIwDQYJ\n"
2026 "KoZIhvcNAQEBBQADggEPADCCAQoCggEBAJjboFXrnP0XeeOabhQdsVuYI4cWbod2\n"
2027 "nLU4O7WgerQHYwkZ5iqISKnnnbYwWgiXDOyq5BZpcmIjmvt6VCiYxQwtt9citsj5\n"
2028 "OBfH3doxRpqUFI6e7nigtyLUSVSXTeV0W5K87Gws3+fBthsaVWtmCAN/Ra+aM/EQ\n"
2029 "wGyZSpIkMQht3QI+YXZ4eLbtfjeubPOJ4bfh3BXMt1afgKCxBX9ONxX/ty8ejwY4\n"
2030 "P1C3aSijtWZfNhpSSENmUt+ikk/TGGC+4+peGXEFv54cbGhyJW+ze3PJbb0S/5tB\n"
2031 "Ml706H7FC6NMZNFOvCYIZfsZl1h44TO/7Wg+sSdFb8Di7Jdp91zT91ECAwEAAaOC\n"
2032 "AdIwggHOMB0GA1UdDgQWBBT8ilC6nrklWntVhU+VAGOP6VhrQzASBgNVHRMBAf8E\n"
2033 "CDAGAQH/AgEAMD0GA1UdIAQ2MDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRw\n"
2034 "czovL3d3dy52ZXJpc2lnbi5jb20vY3BzMD0GA1UdHwQ2MDQwMqAwoC6GLGh0dHA6\n"
2035 "Ly9FVlNlY3VyZS1jcmwudmVyaXNpZ24uY29tL3BjYTMtZzUuY3JsMA4GA1UdDwEB\n"
2036 "/wQEAwIBBjARBglghkgBhvhCAQEEBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZ\n"
2037 "MFcwVRYJaW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7\n"
2038 "GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwKQYDVR0R\n"
2039 "BCIwIKQeMBwxGjAYBgNVBAMTEUNsYXNzM0NBMjA0OC0xLTQ3MD0GCCsGAQUFBwEB\n"
2040 "BDEwLzAtBggrBgEFBQcwAYYhaHR0cDovL0VWU2VjdXJlLW9jc3AudmVyaXNpZ24u\n"
2041 "Y29tMB8GA1UdIwQYMBaAFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqGSIb3DQEB\n"
2042 "BQUAA4IBAQCWovp/5j3t1CvOtxU/wHIDX4u6FpAl98KD2Md1NGNoElMMU4l7yVYJ\n"
2043 "p8M2RE4O0GJis4b66KGbNGeNUyIXPv2s7mcuQ+JdfzOE8qJwwG6Cl8A0/SXGI3/t\n"
2044 "5rDFV0OEst4t8dD2SB8UcVeyrDHhlyQjyRNddOVG7wl8nuGZMQoIeRuPcZ8XZsg4\n"
2045 "z+6Ml7YGuXNG5NOUweVgtSV1LdlpMezNlsOjdv3odESsErlNv1HoudRETifLriDR\n"
2046 "fip8tmNHnna6l9AW5wtsbfdDbzMLKTB3+p359U64drPNGLT5IO892+bKrZvQTtKH\n"
2047 "qQ2mRHNQ3XBb7a1+Srwi1agm5MKFIA3Z\n"
2048 "-----END CERTIFICATE-----\n";
2050 auto manager = CKM::Manager::create();
2051 auto certee = CKM::Certificate::create(CKM::RawBuffer(ee.begin(), ee.end()), CKM::DataFormat::FORM_PEM);
2052 auto certim = CKM::Certificate::create(CKM::RawBuffer(im.begin(), im.end()), CKM::DataFormat::FORM_PEM);
2054 int status1 = manager->saveCertificate(CKM::Alias("CertEE"), certee, CKM::Policy());
2055 int status2 = manager->saveCertificate(CKM::Alias("CertIM"), certim, CKM::Policy());
2058 CKM_API_ERROR_DB_ALIAS_EXISTS == status1,
2059 "Certificate should be in database already. Error=" << CKM::ErrorToString(status1));
2062 CKM_API_ERROR_DB_ALIAS_EXISTS == status2,
2063 "Certificate should be in database already. Error=" << CKM::ErrorToString(status2));
2066 RUNNER_CHILD_TEST(T1519_deinit)
2069 SecurityServer::AccessProvider ap("my-label");
2070 ap.allowAPI("key-manager::api-control", "rw");
2071 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
2073 auto control = CKM::Control::create();
2075 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_TEST)),
2076 "Error=" << CKM::ErrorToString(tmp));
2080 RUNNER_TEST_GROUP_INIT(T161_CKM_LOCKTYPE_TESTS);
2082 RUNNER_CHILD_TEST(T1610_init_lock_key)
2085 SecurityServer::AccessProvider ap("my-label");
2086 ap.allowAPI("key-manager::api-control", "rw");
2087 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
2089 auto control = CKM::Control::create();
2091 CKM_API_SUCCESS == (tmp = control->changeUserPassword(USER_APP,"user-pass","")),
2092 "Error=" << CKM::ErrorToString(tmp));
2094 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_APP)),
2095 "Error=" << CKM::ErrorToString(tmp));
2098 RUNNER_CHILD_TEST(T1611_unlock_default_passwd)
2100 SecurityServer::AccessProvider ap("my-label");
2101 ap.allowAPI("key-manager::api-storage", "rw");
2102 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
2105 auto manager = CKM::Manager::create();
2107 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
2108 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
2109 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
2110 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
2111 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
2112 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
2113 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
2115 "-----END PUBLIC KEY-----";
2117 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
2118 auto key = CKM::Key::create(buffer, CKM::Password());
2120 CKM::Alias alias = "mykey_defpasswd";
2123 CKM_API_SUCCESS == (temp = manager->saveKey(alias, key, CKM::Policy())),
2124 "Error=" << CKM::ErrorToString(temp));
2126 CKM_API_SUCCESS == (temp = manager->getKey(alias, CKM::Password(), key2)),
2127 "Error=" << CKM::ErrorToString(temp));
2129 key->getDER() == key2->getDER(),
2130 "Key value has been changed by service");
2132 CKM_API_SUCCESS == (temp = manager->removeKey(alias)),
2133 "Error=" << CKM::ErrorToString(temp));
2136 RUNNER_CHILD_TEST(T1612_init_change_user_password)
2139 SecurityServer::AccessProvider ap("my-label");
2140 ap.allowAPI("key-manager::api-control", "rw");
2141 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
2143 auto control = CKM::Control::create();
2145 CKM_API_SUCCESS == (tmp = control->changeUserPassword(USER_APP,"","user-pass")),
2146 "Error=" << CKM::ErrorToString(tmp));
2148 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_APP)),
2149 "Error=" << CKM::ErrorToString(tmp));
2152 RUNNER_CHILD_TEST(T1613_unlock_default_passwd_negative)
2154 SecurityServer::AccessProvider ap("my-label");
2155 ap.allowAPI("key-manager::api-storage", "rw");
2156 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
2159 auto manager = CKM::Manager::create();
2161 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
2162 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
2163 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
2164 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
2165 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
2166 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
2167 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
2169 "-----END PUBLIC KEY-----";
2171 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
2172 auto key = CKM::Key::create(buffer, CKM::Password());
2174 CKM::Alias alias = "mykey_defpasswd";
2177 CKM_API_ERROR_DB_LOCKED == (temp = manager->saveKey(alias, key, CKM::Policy())),
2178 "Error=" << CKM::ErrorToString(temp));
2180 CKM_API_ERROR_DB_LOCKED == (temp = manager->getKey(alias, CKM::Password(), key2)),
2181 "Error=" << CKM::ErrorToString(temp));
2183 CKM_API_ERROR_DB_LOCKED == (temp = manager->removeKey(alias)),
2184 "Error=" << CKM::ErrorToString(temp));
2187 RUNNER_CHILD_TEST(T1619_deinit)
2189 SecurityServer::AccessProvider ap("my-label");
2190 ap.allowAPI("key-manager::api-control", "rw");
2191 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
2194 RUNNER_TEST_GROUP_INIT(T170_CKM_STORAGE_PERNAMENT_TESTS);
2196 RUNNER_TEST(T1701_init_unlock_key)
2199 auto control = CKM::Control::create();
2201 CKM_API_SUCCESS == (tmp = control->unlockUserKey(USER_TEST+1, "t170-special-password")),
2202 "Error=" << CKM::ErrorToString(tmp));
2205 RUNNER_CHILD_TEST(T1702_init_insert_data)
2208 SecurityServer::AccessProvider ap("t170-special-label");
2209 ap.allowAPI("key-manager::api-storage", "rw");
2210 ap.applyAndSwithToUser(USER_TEST+1, GROUP_APP);
2212 std::string ee = "-----BEGIN CERTIFICATE-----\n"
2213 "MIIF0TCCBLmgAwIBAgIQaPGTP4aS7Ut/WDNaBzdQrDANBgkqhkiG9w0BAQUFADCB\n"
2214 "ujELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
2215 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n"
2216 "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMr\n"
2217 "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTAeFw0x\n"
2218 "NDAyMjAwMDAwMDBaFw0xNTAyMjAyMzU5NTlaMIHmMRMwEQYLKwYBBAGCNzwCAQMT\n"
2219 "AlBMMR0wGwYDVQQPExRQcml2YXRlIE9yZ2FuaXphdGlvbjETMBEGA1UEBRMKMDAw\n"
2220 "MDAyNTIzNzELMAkGA1UEBhMCUEwxDzANBgNVBBEUBjAwLTk1MDEUMBIGA1UECBML\n"
2221 "bWF6b3dpZWNraWUxETAPBgNVBAcUCFdhcnN6YXdhMRYwFAYDVQQJFA1TZW5hdG9y\n"
2222 "c2thIDE4MRMwEQYDVQQKFAptQmFuayBTLkEuMQwwCgYDVQQLFANESU4xGTAXBgNV\n"
2223 "BAMUEHd3dy5tYmFuay5jb20ucGwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n"
2224 "AoIBAQDph6x8V6xUW/+651+qHF+UmorH9uaz2ZrX2bIWiMKIJFmpDDHlxcapKkqE\n"
2225 "BV04is83aiCpqKtc2ZHy2g4Hpj1eSF5BP2+OAlo0YUQZPIeRRdiMjmeAxw/ncBDx\n"
2226 "9rQBuCJ4XTD6cqQox5SI0TASOZ+wyAEjbDRXzL73XqRAFZ1LOpb2ONkolS+RutMB\n"
2227 "vshvCsWPeNe7eGLuOh6DyC6r1vX9xhw3xnjM2mTSvmtimgzSLacNGKqRrsucUgcb\n"
2228 "0+O5C2jZAtAMLyZksL92cxmWbtVzUYzem4chjHu5cRxUlPNzUJWrrczueB7Ip4A8\n"
2229 "aQuFMfNXYc0x+WLWjy//urypMKjhAgMBAAGjggGjMIIBnzAbBgNVHREEFDASghB3\n"
2230 "d3cubWJhbmsuY29tLnBsMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgWgMB0GA1Ud\n"
2231 "JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBEBgNVHSAEPTA7MDkGC2CGSAGG+EUB\n"
2232 "BxcGMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9jcHMw\n"
2233 "HQYDVR0OBBYEFN37iGaS7mZnENxZ9FGqNLR+QgoMMB8GA1UdIwQYMBaAFPyKULqe\n"
2234 "uSVae1WFT5UAY4/pWGtDMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9FVlNlY3Vy\n"
2235 "ZS1jcmwudmVyaXNpZ24uY29tL0VWU2VjdXJlMjAwNi5jcmwwfAYIKwYBBQUHAQEE\n"
2236 "cDBuMC0GCCsGAQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC52ZXJpc2lnbi5j\n"
2237 "b20wPQYIKwYBBQUHMAKGMWh0dHA6Ly9FVlNlY3VyZS1haWEudmVyaXNpZ24uY29t\n"
2238 "L0VWU2VjdXJlMjAwNi5jZXIwDQYJKoZIhvcNAQEFBQADggEBAD0wO+rooUrIM4qp\n"
2239 "PHhp+hkXK6WMQ2qzGOmbMcZjw0govg5vkzkefPDryIXXbrF8mRagiJNMSfNaWWeh\n"
2240 "Cj41OV24EdUl0OLbFxNzcvub599zRs/apfaRLTfsmlmOgi0/YP305i+3tJ2ll946\n"
2241 "P+qV1wXnXqTqEdIl4Ys3+1HmDCdTB1hoDwAAzqRVUXZ5+iiwPAU7R/LTHfMjV1ke\n"
2242 "8jtNFfrorlZMCfVH/7eEnHJvVjOJt+YFe4aFMzE+DfuYIK7MH+olC2v79kBwbnEQ\n"
2243 "fvHMA9gFwOYLUBBdSfcocp8EKZ+mRlNPGR/3LBrPeaQQ0GZEkxzRK+v/aNTuiYfr\n"
2245 "-----END CERTIFICATE-----\n";
2247 auto manager = CKM::Manager::create();
2248 auto certee = CKM::Certificate::create(CKM::RawBuffer(ee.begin(), ee.end()), CKM::DataFormat::FORM_PEM);
2250 int status1 = manager->saveCertificate(CKM::Alias("CertEEE"), certee, CKM::Policy());
2253 CKM_API_SUCCESS == status1,
2254 "Could not put certificate in datbase. Error=" << CKM::ErrorToString(status1));
2256 CKM::AliasVector av;
2259 CKM_API_SUCCESS == (temp = manager->getCertificateAliasVector(av)),
2260 "Error=" << CKM::ErrorToString(temp));
2262 1 == (temp = av.size()),
2263 "Vector size: " << temp << ". Expected: 1");
2266 RUNNER_TEST(T1703_removeApplicationData)
2269 auto control = CKM::Control::create();
2271 CKM_API_SUCCESS == (tmp = control->removeApplicationData("t170-special-label")),
2272 "Error=" << CKM::ErrorToString(tmp));
2275 RUNNER_CHILD_TEST(T1704_data_test)
2278 SecurityServer::AccessProvider ap("t170-special-label");
2279 ap.allowAPI("key-manager::api-storage", "rw");
2280 ap.applyAndSwithToUser(USER_TEST+1, GROUP_APP);
2282 CKM::AliasVector av;
2283 auto manager = CKM::Manager::create();
2286 CKM_API_SUCCESS == (temp = manager->getCertificateAliasVector(av)),
2287 "Error=" << CKM::ErrorToString(temp));
2289 0 == (temp = av.size()),
2290 "Vector size: " << temp << ". Expected: 0");
2293 RUNNER_TEST(T1705_deinit)
2297 auto control = CKM::Control::create();
2299 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_TEST+1)),
2300 "Error=" << CKM::ErrorToString(tmp));
2302 CKM_API_SUCCESS == (tmp = control->removeUserData(USER_TEST+1)),
2303 "Error=" << CKM::ErrorToString(tmp));
2306 RUNNER_TEST(T17101_init)
2310 auto control = CKM::Control::create();
2312 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_TEST+2)),
2313 "Error=" << CKM::ErrorToString(tmp));
2315 CKM_API_SUCCESS == (tmp = control->removeUserData(USER_TEST+2)),
2316 "Error=" << CKM::ErrorToString(tmp));
2318 CKM_API_SUCCESS == (tmp = control->unlockUserKey(USER_TEST+2, "t1706-special-password")),
2319 "Error=" << CKM::ErrorToString(tmp));
2322 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_TEST+3)),
2323 "Error=" << CKM::ErrorToString(tmp));
2325 CKM_API_SUCCESS == (tmp = control->removeUserData(USER_TEST+3)),
2326 "Error=" << CKM::ErrorToString(tmp));
2328 CKM_API_SUCCESS == (tmp = control->unlockUserKey(USER_TEST+3, "t1706-special-password")),
2329 "Error=" << CKM::ErrorToString(tmp));
2332 RUNNER_CHILD_TEST(T17102_prep_data_01)
2335 SecurityServer::AccessProvider ap("t1706-special-label");
2336 ap.allowAPI("key-manager::api-storage", "rw");
2337 ap.applyAndSwithToUser(USER_TEST+2, GROUP_APP);
2339 CKM::AliasVector av;
2340 auto manager = CKM::Manager::create();
2342 std::string data = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4";
2344 CKM::RawBuffer buffer(data.begin(), data.end());
2345 CKM::Policy exportable(CKM::Password(), true);
2348 CKM_API_SUCCESS == (temp = manager->saveData("data1", buffer, exportable)),
2349 "Error=" << CKM::ErrorToString(temp));
2352 RUNNER_CHILD_TEST(T17103_prep_data_02)
2355 SecurityServer::AccessProvider ap("t1706-special-label2");
2356 ap.allowAPI("key-manager::api-storage", "rw");
2357 ap.applyAndSwithToUser(USER_TEST+2, GROUP_APP);
2359 CKM::AliasVector av;
2360 auto manager = CKM::Manager::create();
2362 std::string data = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4";
2364 CKM::RawBuffer buffer(data.begin(), data.end());
2365 CKM::Policy exportable(CKM::Password(), true);
2368 CKM_API_SUCCESS == (temp = manager->saveData("data2", buffer, exportable)),
2369 "Error=" << CKM::ErrorToString(temp));
2372 RUNNER_CHILD_TEST(T17104_prep_data_03)
2375 SecurityServer::AccessProvider ap("t1706-special-label");
2376 ap.allowAPI("key-manager::api-storage", "rw");
2377 ap.applyAndSwithToUser(USER_TEST+3, GROUP_APP);
2379 CKM::AliasVector av;
2380 auto manager = CKM::Manager::create();
2382 std::string data = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4";
2384 CKM::RawBuffer buffer(data.begin(), data.end());
2385 CKM::Policy exportable(CKM::Password(), true);
2388 CKM_API_SUCCESS == (temp = manager->saveData("data3", buffer, exportable)),
2389 "Error=" << CKM::ErrorToString(temp));
2392 RUNNER_CHILD_TEST(T17105_prep_data_04)
2395 SecurityServer::AccessProvider ap("t1706-special-label2");
2396 ap.allowAPI("key-manager::api-storage", "rw");
2397 ap.applyAndSwithToUser(USER_TEST+3, GROUP_APP);
2399 CKM::AliasVector av;
2400 auto manager = CKM::Manager::create();
2402 std::string data = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4";
2404 CKM::RawBuffer buffer(data.begin(), data.end());
2405 CKM::Policy exportable(CKM::Password(), true);
2408 CKM_API_SUCCESS == (temp = manager->saveData("data4", buffer, exportable)),
2409 "Error=" << CKM::ErrorToString(temp));
2412 RUNNER_TEST(T17106_remove_application)
2416 auto control = CKM::Control::create();
2418 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_TEST+3)),
2419 "Error=" << CKM::ErrorToString(tmp));
2421 CKM_API_SUCCESS == (tmp = control->removeApplicationData("t1706-special-label")),
2422 "Error=" << CKM::ErrorToString(tmp));
2425 RUNNER_CHILD_TEST(T17107_check_data_01)
2428 SecurityServer::AccessProvider ap("t1706-special-label");
2429 ap.allowAPI("key-manager::api-storage", "rw");
2430 ap.applyAndSwithToUser(USER_TEST+2, GROUP_APP);
2432 CKM::AliasVector av;
2433 auto manager = CKM::Manager::create();
2436 CKM_API_SUCCESS == (temp = manager->getDataAliasVector(av)),
2437 "Error=" << CKM::ErrorToString(temp));
2439 0 == (temp = av.size()),
2440 "Vector size: " << temp << ". Expected: 0");
2443 RUNNER_CHILD_TEST(T17108_check_data_02)
2446 SecurityServer::AccessProvider ap("t1706-special-label2");
2447 ap.allowAPI("key-manager::api-storage", "rw");
2448 ap.applyAndSwithToUser(USER_TEST+2, GROUP_APP);
2450 CKM::AliasVector av;
2451 auto manager = CKM::Manager::create();
2454 CKM_API_SUCCESS == (temp = manager->getDataAliasVector(av)),
2455 "Error=" << CKM::ErrorToString(temp));
2457 1 == (temp = av.size()),
2458 "Vector size: " << temp << ". Expected: 1");
2461 RUNNER_TEST(T17109_unlock_user2)
2465 auto control = CKM::Control::create();
2467 CKM_API_SUCCESS == (tmp = control->unlockUserKey(USER_TEST+3, "t1706-special-password")),
2468 "Error=" << CKM::ErrorToString(tmp));
2471 RUNNER_CHILD_TEST(T17110_check_data_03)
2474 SecurityServer::AccessProvider ap("t1706-special-label");
2475 ap.allowAPI("key-manager::api-storage", "rw");
2476 ap.applyAndSwithToUser(USER_TEST+3, GROUP_APP);
2478 CKM::AliasVector av;
2479 auto manager = CKM::Manager::create();
2482 CKM_API_SUCCESS == (temp = manager->getDataAliasVector(av)),
2483 "Error=" << CKM::ErrorToString(temp));
2485 0 == (temp = av.size()),
2486 "Vector size: " << temp << ". Expected: 0");
2489 RUNNER_CHILD_TEST(T17111_check_data_04)
2492 SecurityServer::AccessProvider ap("t1706-special-label2");
2493 ap.allowAPI("key-manager::api-storage", "rw");
2494 ap.applyAndSwithToUser(USER_TEST+3, GROUP_APP);
2496 CKM::AliasVector av;
2497 auto manager = CKM::Manager::create();
2500 CKM_API_SUCCESS == (temp = manager->getDataAliasVector(av)),
2501 "Error=" << CKM::ErrorToString(temp));
2503 1 == (temp = av.size()),
2504 "Vector size: " << temp << ". Expected: 1");
2507 RUNNER_TEST(T17112_deinit)
2511 auto control = CKM::Control::create();
2513 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_TEST+2)),
2514 "Error=" << CKM::ErrorToString(tmp));
2516 CKM_API_SUCCESS == (tmp = control->removeUserData(USER_TEST+2)),
2517 "Error=" << CKM::ErrorToString(tmp));
2520 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_TEST+3)),
2521 "Error=" << CKM::ErrorToString(tmp));
2523 CKM_API_SUCCESS == (tmp = control->removeUserData(USER_TEST+3)),
2524 "Error=" << CKM::ErrorToString(tmp));
2527 RUNNER_TEST_GROUP_INIT(T180_PKCS12);
2529 RUNNER_TEST(T1801) {
2530 std::ifstream is("/usr/share/ckm-test/test1801.pkcs12");
2531 std::istreambuf_iterator<char> begin(is), end;
2532 std::vector<char> buff(begin, end);
2534 CKM::RawBuffer buffer(buff.size());
2535 memcpy(buffer.data(), buff.data(), buff.size());
2537 auto pkcs = CKM::PKCS12::create(buffer, "secret");
2540 "Error in PKCS12::create()");
2542 auto cert = pkcs->getCertificate();
2545 "Error in PKCS12::getCertificate()");
2547 auto key = pkcs->getKey();
2550 "Error in PKCS12::getKey()");
2552 auto caVector = pkcs->getCaCertificateShPtrVector();
2554 0 == caVector.size(),
2555 "Wrong size of vector");
2558 RUNNER_TEST(T1802_negative_wrong_password) {
2559 std::ifstream is("/usr/share/ckm-test/test1801.pkcs12");
2560 std::istreambuf_iterator<char> begin(is), end;
2561 std::vector<char> buff(begin, end);
2563 CKM::RawBuffer buffer(buff.size());
2564 memcpy(buffer.data(), buff.data(), buff.size());
2566 auto pkcs = CKM::PKCS12::create(buffer, "error");
2569 "Expected error in PKCS12::create()");
2572 RUNNER_TEST(T1803_negative_broken_buffer) {
2573 std::ifstream is("/usr/share/ckm-test/test1801.pkcs12");
2574 std::istreambuf_iterator<char> begin(is), end;
2575 std::vector<char> buff(begin, end);
2577 CKM::RawBuffer buffer(buff.size());
2578 memcpy(buffer.data(), buff.data(), buff.size());
2580 RUNNER_ASSERT_MSG(buffer.size() > 5, "PKCS file is too small.");
2583 auto pkcs = CKM::PKCS12::create(buffer, "secret");
2586 "Expected error in PKCS12::create()");
2589 RUNNER_TEST_GROUP_INIT(T190_CKM_EMPTY_STORAGE_TESTS);
2591 RUNNER_TEST(T1901_init_unlock_key)
2594 auto control = CKM::Control::create();
2596 CKM_API_SUCCESS == (tmp = control->lockUserKey(0)),
2597 "Error=" << CKM::ErrorToString(tmp));
2599 CKM_API_SUCCESS == (tmp = control->removeUserData(0)),
2600 "Error=" << CKM::ErrorToString(tmp));
2602 CKM_API_SUCCESS == (tmp = control->unlockUserKey(0, "t190-special-password")),
2603 "Error=" << CKM::ErrorToString(tmp));
2606 RUNNER_TEST(T1902_get_data)
2608 auto manager = CKM::Manager::create();
2611 int status1 = manager->getKey(CKM::Alias("CertEEE"), CKM::Password(), ptr);
2614 CKM_API_ERROR_DB_ALIAS_UNKNOWN == status1,
2615 "Could not put certificate in datbase. Error=" << CKM::ErrorToString(status1));
2618 RUNNER_TEST(T1903_lock_database)
2621 auto control = CKM::Control::create();
2623 CKM_API_SUCCESS == (tmp = control->lockUserKey(0)),
2624 "Error=" << CKM::ErrorToString(tmp));
2627 RUNNER_TEST(T1904_get_data_from_locked_database)
2629 auto manager = CKM::Manager::create();
2632 int status1 = manager->getKey(CKM::Alias("CertEEE"), CKM::Password(), ptr);
2635 CKM_API_ERROR_DB_LOCKED == status1,
2636 "Could not get key from locked database. Error=" << CKM::ErrorToString(status1));
2639 RUNNER_TEST(T1905_deinit)
2642 auto control = CKM::Control::create();
2644 CKM_API_SUCCESS == (tmp = control->removeUserData(0)),
2645 "Error=" << CKM::ErrorToString(tmp));
2648 int main(int argc, char *argv[])
2650 DPL::Log::LogSystemSingleton::Instance().SetTag("CKM_TESTS");
2651 return DPL::Test::TestRunnerSingleton::Instance().ExecTestRunner(argc, argv);