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));
1492 RUNNER_TEST(T1414_ec_key_create_verify)
1495 auto manager = CKM::Manager::create();
1497 std::string prv = "-----BEGIN EC PRIVATE KEY-----\n"
1498 "MHQCAQEEIJNud6U4h8EM1rASn4W5vQOJELTaVPQTUiESaBULvQUVoAcGBSuBBAAK\n"
1499 "oUQDQgAEL1R+hgjiFrdjbUKRNOxUG8ze9nveD9zT05YHeT7vK0w08AUL1HCH5nFV\n"
1500 "ljePBYSxe6CybFiseayaxRxjA+iF1g==\n"
1501 "-----END EC PRIVATE KEY-----\n";
1503 std::string pub = "-----BEGIN PUBLIC KEY-----\n"
1504 "MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEL1R+hgjiFrdjbUKRNOxUG8ze9nveD9zT\n"
1505 "05YHeT7vK0w08AUL1HCH5nFVljePBYSxe6CybFiseayaxRxjA+iF1g==\n"
1506 "-----END PUBLIC KEY-----\n";
1508 std::string message = "message test";
1510 CKM::Alias aliasPub = "ecpub2";
1511 CKM::Alias aliasPrv = "ecprv2";
1512 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
1513 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
1514 CKM::RawBuffer signature;
1516 auto keyPub = CKM::Key::create(CKM::RawBuffer(pub.begin(), pub.end()));
1517 auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()));
1519 RUNNER_ASSERT_MSG(NULL != keyPub.get(),
1520 "Key is empty. Failed to import public key.");
1521 RUNNER_ASSERT_MSG(NULL != keyPrv.get(),
1522 "Key is empty. Failed to import private key.");
1525 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPub, keyPub, CKM::Policy())),
1526 "Error=" << CKM::ErrorToString(temp));
1528 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
1529 "Error=" << CKM::ErrorToString(temp));
1532 CKM_API_SUCCESS == (temp = manager->createSignature(
1535 CKM::RawBuffer(message.begin(), message.end()),
1539 "Error=" << CKM::ErrorToString(temp));
1542 CKM_API_SUCCESS == (temp = manager->verifySignature(
1545 CKM::RawBuffer(message.begin(), message.end()),
1549 "Error=" << CKM::ErrorToString(temp));
1551 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
1553 memcpy((void*)signature.data(), "BROKEN", 6);
1556 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
1559 CKM::RawBuffer(message.begin(), message.end()),
1563 "Error=" << CKM::ErrorToString(temp));
1566 RUNNER_TEST(T1415_rsa_key_create_verify_negative)
1569 auto manager = CKM::Manager::create();
1570 std::string message = "message asdfaslkdfjlksadjf test";
1572 CKM::Alias aliasPub = "pub1";
1573 CKM::Alias aliasPrv = "prv1";
1575 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
1576 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
1577 CKM::RawBuffer signature;
1580 CKM_API_SUCCESS == (temp = manager->createSignature(
1583 CKM::RawBuffer(message.begin(), message.end()),
1587 "Error=" << CKM::ErrorToString(temp));
1590 CKM_API_SUCCESS == (temp = manager->verifySignature(
1593 CKM::RawBuffer(message.begin(), message.end()),
1597 "Error=" << CKM::ErrorToString(temp));
1599 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
1600 memcpy((void*)signature.data(), "BROKEN", 6);
1603 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
1606 CKM::RawBuffer(message.begin(), message.end()),
1610 "Error=" << CKM::ErrorToString(temp));
1613 RUNNER_TEST(T1416_dsa_key_create_verify_negative)
1616 auto manager = CKM::Manager::create();
1617 std::string message = "message asdfaslkdfjlksadjf test";
1619 CKM::Alias aliasPub = "pub2";
1620 CKM::Alias aliasPrv = "prv2";
1622 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
1623 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
1624 CKM::RawBuffer signature;
1627 CKM_API_SUCCESS == (temp = manager->createSignature(
1630 CKM::RawBuffer(message.begin(), message.end()),
1634 "Error=" << CKM::ErrorToString(temp));
1637 CKM_API_SUCCESS == (temp = manager->verifySignature(
1640 CKM::RawBuffer(message.begin(), message.end()),
1644 "Error=" << CKM::ErrorToString(temp));
1646 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
1647 memcpy((void*)signature.data(), "BROKEN", 6);
1650 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
1653 CKM::RawBuffer(message.begin(), message.end()),
1657 "Error=" << CKM::ErrorToString(temp));
1660 RUNNER_TEST(T1417_rsa_cert_create_verify_signature)
1663 auto manager = CKM::Manager::create();
1666 "-----BEGIN RSA PRIVATE KEY-----\n"
1667 "MIICXQIBAAKBgQDCKb9BkTdOjCTXKPi/H5FSGuyrgzORBtR3nCTg7SRnL47zNGEj\n"
1668 "l2wkgsY9ZO3UJHm0gy5KMjWeCuUVkSD3G46J9obg1bYJivCQBJKxfieA8sWOtNq1\n"
1669 "M8emHGK8o3sjaRklrngmk2xSCs5vFJVlCluzAYUmrPDm64C3+n4yW4pBCQIDAQAB\n"
1670 "AoGAd1IWgiHO3kuLvFome7XXpaB8P27SutZ6rcLcewnhLDRy4g0XgTrmL43abBJh\n"
1671 "gdSkooVXZity/dvuKpHUs2dQ8W8zYiFFsHfu9qqLmLP6SuBPyUCvlUDH5BGfjjxI\n"
1672 "5qGWIowj/qGHKpbQ7uB+Oe2BHwbHao0zFZIkfKqY0mX9U00CQQDwF/4zQcGS1RX/\n"
1673 "229gowTsvSGVmm8cy1jGst6xkueEuOEZ/AVPO1fjavz+nTziUk4E5lZHAj18L6Hl\n"
1674 "iO29LRujAkEAzwbEWVhfTJewCZIFf3sY3ifXhGZhVKDHVzPBNyoft8Z+09DMHTJb\n"
1675 "EYg85MIbR73aUyIWsEci/CPk6LPRNv47YwJAHtQF2NEFqPPhakPjzjXAaSFz0YDN\n"
1676 "6ZWWpZTMEWL6hUkz5iE9EUpeY54WNB8+dRT6XZix1VZNTMfU8uMdG6BSHwJBAKYM\n"
1677 "gm47AGz5eVujwD8op6CACk+KomRzdI+P1lh9s+T+E3mnDiAY5IxiXp0Ix0K6lyN4\n"
1678 "wwPuerQLwi2XFKZsMYsCQQDOiSQFP9PfXh9kFzN6e89LxOdnqC/r9i5GDB3ea8eL\n"
1679 "SCRprpzqOXZvOP1HBAEjsJ6k4f8Dqj1fm+y8ZcgAZUPr\n"
1680 "-----END RSA PRIVATE KEY-----\n";
1683 "-----BEGIN CERTIFICATE-----\n"
1684 "MIICijCCAfOgAwIBAgIJAMvaNHQ1ozT8MA0GCSqGSIb3DQEBBQUAMF4xCzAJBgNV\n"
1685 "BAYTAlBMMQ0wCwYDVQQIDARMb2R6MQ0wCwYDVQQHDARMb2R6MRAwDgYDVQQKDAdT\n"
1686 "YW1zdW5nMREwDwYDVQQLDAhTZWN1cml0eTEMMAoGA1UEAwwDQ0tNMB4XDTE0MDcw\n"
1687 "MjEyNDE0N1oXDTE3MDcwMTEyNDE0N1owXjELMAkGA1UEBhMCUEwxDTALBgNVBAgM\n"
1688 "BExvZHoxDTALBgNVBAcMBExvZHoxEDAOBgNVBAoMB1NhbXN1bmcxETAPBgNVBAsM\n"
1689 "CFNlY3VyaXR5MQwwCgYDVQQDDANDS00wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ\n"
1690 "AoGBAMIpv0GRN06MJNco+L8fkVIa7KuDM5EG1HecJODtJGcvjvM0YSOXbCSCxj1k\n"
1691 "7dQkebSDLkoyNZ4K5RWRIPcbjon2huDVtgmK8JAEkrF+J4DyxY602rUzx6YcYryj\n"
1692 "eyNpGSWueCaTbFIKzm8UlWUKW7MBhSas8ObrgLf6fjJbikEJAgMBAAGjUDBOMB0G\n"
1693 "A1UdDgQWBBQuW9DuITahZJ6saVZZI0aBlis5vzAfBgNVHSMEGDAWgBQuW9DuITah\n"
1694 "ZJ6saVZZI0aBlis5vzAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBAB2X\n"
1695 "GNtJopBJR3dCpzDONknr/c6qcsPVa3nH4c7qzy6F+4bgqa5IObnoF8zUrvD2sMAO\n"
1696 "km3C/N+Qzt8Rb7ORM6U4tlPp1kZ5t6PKjghhNaiYwVm9A/Zm+wyAmRIkQiYDr4MX\n"
1697 "e+bRAkPmJeEWpaav1lvvBnFzGSGJrnSSeWUegGyn\n"
1698 "-----END CERTIFICATE-----\n";
1700 std::string message = "message test";
1702 CKM::Alias aliasPub = "pub1-cert";
1703 CKM::Alias aliasPrv = "prv1-cert";
1704 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
1705 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
1706 CKM::RawBuffer signature;
1708 auto cert = CKM::Certificate::create(CKM::RawBuffer(pub.begin(), pub.end()), CKM::DataFormat::FORM_PEM);
1709 auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()));
1711 RUNNER_ASSERT_MSG(NULL != cert.get(),
1712 "Key is empty. Failed to import public key.");
1713 RUNNER_ASSERT_MSG(NULL != keyPrv.get(),
1714 "Key is empty. Failed to import private key.");
1717 CKM_API_SUCCESS == (temp = manager->saveCertificate(aliasPub, cert, CKM::Policy())),
1718 "Error=" << CKM::ErrorToString(temp));
1720 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
1721 "Error=" << CKM::ErrorToString(temp));
1724 CKM_API_SUCCESS == (temp = manager->createSignature(
1727 CKM::RawBuffer(message.begin(), message.end()),
1731 "Error=" << CKM::ErrorToString(temp));
1734 CKM_API_SUCCESS == (temp = manager->verifySignature(
1737 CKM::RawBuffer(message.begin(), message.end()),
1741 "Error=" << CKM::ErrorToString(temp));
1743 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
1745 memcpy((void*)signature.data(), "BROKEN", 6);
1748 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
1751 CKM::RawBuffer(message.begin(), message.end()),
1755 "Error=" << CKM::ErrorToString(temp));
1758 RUNNER_TEST(T1418_dsa_cert_create_verify_signature)
1761 auto manager = CKM::Manager::create();
1763 const std::string pub = "-----BEGIN CERTIFICATE-----\n"
1764 "MIIDUzCCAxECCQCer/fKcXtJgTALBglghkgBZQMEAwIwgYsxCzAJBgNVBAYTAlBM\n"
1765 "MQ8wDQYDVQQIDAZQb2xhbmQxDzANBgNVBAcMBldhcnNhdzEQMA4GA1UECgwHU2Ft\n"
1766 "c3VuZzEMMAoGA1UECwwDS1NGMRMwEQYDVQQDDAptLmthcnBpdWsyMSUwIwYJKoZI\n"
1767 "hvcNAQkBFhZtLmthcnBpdWsyQHNhbXN1bmcuY29tMCAXDTE0MDkyNjEzNTQwN1oY\n"
1768 "DzIxNDAwOTA1MTM1NDA3WjCBizELMAkGA1UEBhMCUEwxDzANBgNVBAgMBlBvbGFu\n"
1769 "ZDEPMA0GA1UEBwwGV2Fyc2F3MRAwDgYDVQQKDAdTYW1zdW5nMQwwCgYDVQQLDANL\n"
1770 "U0YxEzARBgNVBAMMCm0ua2FycGl1azIxJTAjBgkqhkiG9w0BCQEWFm0ua2FycGl1\n"
1771 "azJAc2Ftc3VuZy5jb20wggG3MIIBKwYHKoZIzjgEATCCAR4CgYEA9Bhh7ZA4onkY\n"
1772 "uDNQbYR4EwkJ6RpD505hB0GF6yppUNp2LanvNcQXcyXY88MB6OdP7Rikbu1H2zP4\n"
1773 "gONCtdxKW58Za7h9bFzYjxcObZsS52F9DP7sv3C4sX4xNWApfhUgbfzKaRCJOkOs\n"
1774 "06tV7teu3G/v26PdI8dlykIuQXQZmH8CFQCHsIV0njb2yC3ggfKz+exH+g5jAQKB\n"
1775 "gBVLYfVCMjUz5XJH+xYU3A8W8rpSLqZKIK2d9mbXqhpz8QK1bvNQUlSRZo+o1ZYV\n"
1776 "mJn3Mx2YuiifHZNKdBNweCqe5a+HV2RSl1Yv/TV9famZKlogGslsmPHUOJMlSIdh\n"
1777 "MfMwVny4/rNtjEtEFE1WnaTr1W6MKH1EBbizVo8fmWFrA4GFAAKBgQCaPjrlkAyX\n"
1778 "kBitWo+w0xZN4OSk13SsCzZ/PG+5zOgMRaFm2XbiC04YsGCi4NFOd9kaiP7w1CsP\n"
1779 "iqG6Vwv0T/VcoxBl/hp6jEqTDSrM6z0ungjDO9wGOdI+jZS0UjVahgC4ZLDHhrOa\n"
1780 "CjfxcHruO3e416b/Rm2CjhOzjKdoSFUWVzALBglghkgBZQMEAwIDLwAwLAIUHa+A\n"
1781 "5xo8O/tPuH9gXkr1mee6kRYCFGNycJ1xkc3nIJaEQOtGfDe7S71A\n"
1782 "-----END CERTIFICATE-----\n";
1784 const std::string prv = "-----BEGIN DSA PRIVATE KEY-----\n"
1785 "MIIBuwIBAAKBgQD0GGHtkDiieRi4M1BthHgTCQnpGkPnTmEHQYXrKmlQ2nYtqe81\n"
1786 "xBdzJdjzwwHo50/tGKRu7UfbM/iA40K13EpbnxlruH1sXNiPFw5tmxLnYX0M/uy/\n"
1787 "cLixfjE1YCl+FSBt/MppEIk6Q6zTq1Xu167cb+/bo90jx2XKQi5BdBmYfwIVAIew\n"
1788 "hXSeNvbILeCB8rP57Ef6DmMBAoGAFUth9UIyNTPlckf7FhTcDxbyulIupkogrZ32\n"
1789 "ZteqGnPxArVu81BSVJFmj6jVlhWYmfczHZi6KJ8dk0p0E3B4Kp7lr4dXZFKXVi/9\n"
1790 "NX19qZkqWiAayWyY8dQ4kyVIh2Ex8zBWfLj+s22MS0QUTVadpOvVbowofUQFuLNW\n"
1791 "jx+ZYWsCgYEAmj465ZAMl5AYrVqPsNMWTeDkpNd0rAs2fzxvuczoDEWhZtl24gtO\n"
1792 "GLBgouDRTnfZGoj+8NQrD4qhulcL9E/1XKMQZf4aeoxKkw0qzOs9Lp4IwzvcBjnS\n"
1793 "Po2UtFI1WoYAuGSwx4azmgo38XB67jt3uNem/0Ztgo4Ts4ynaEhVFlcCFGMH+Z9l\n"
1794 "vonbjii3BYe4AIdkzOvp\n"
1795 "-----END DSA PRIVATE KEY-----\n";
1797 std::string message = "message test";
1799 CKM::Alias aliasPub = "pub2-cert";
1800 CKM::Alias aliasPrv = "prv2-cert";
1801 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
1802 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
1803 CKM::RawBuffer signature;
1805 auto cert = CKM::Certificate::create(CKM::RawBuffer(pub.begin(), pub.end()), CKM::DataFormat::FORM_PEM);
1806 auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()));
1808 RUNNER_ASSERT_MSG(NULL != cert.get(),
1809 "Key is empty. Failed to import public key.");
1810 RUNNER_ASSERT_MSG(NULL != keyPrv.get(),
1811 "Key is empty. Failed to import private key.");
1814 CKM_API_SUCCESS == (temp = manager->saveCertificate(aliasPub, cert, CKM::Policy())),
1815 "Error=" << CKM::ErrorToString(temp));
1817 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
1818 "Error=" << CKM::ErrorToString(temp));
1821 CKM_API_SUCCESS == (temp = manager->createSignature(
1824 CKM::RawBuffer(message.begin(), message.end()),
1828 "Error=" << CKM::ErrorToString(temp));
1831 CKM_API_SUCCESS == (temp = manager->verifySignature(
1834 CKM::RawBuffer(message.begin(), message.end()),
1838 "Error=" << CKM::ErrorToString(temp));
1840 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
1842 memcpy((void*)signature.data(), "BROKEN", 6);
1845 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
1848 CKM::RawBuffer(message.begin(), message.end()),
1852 "Error=" << CKM::ErrorToString(temp));
1855 RUNNER_TEST(T1419_ecdsa_cert_create_verify_signature)
1858 auto manager = CKM::Manager::create();
1861 "-----BEGIN EC PRIVATE KEY-----\n"
1862 "MIH8AgEBBBRPb/2utS5aCtyuwmzIHpU6LH3mc6CBsjCBrwIBATAgBgcqhkjOPQEB\n"
1863 "AhUA/////////////////////3////8wQwQU/////////////////////3////wE\n"
1864 "FByXvvxUvXqLZaz4n4HU1K3FZfpFAxUAEFPN5CwU1pbmdodWFRdTO/P4M0UEKQRK\n"
1865 "lrVojvVzKEZkaYlow4u5E8v8giOmKFUxaJR9WdzJEgQjUTd6xfsyAhUBAAAAAAAA\n"
1866 "AAAAAfTI+Seu08p1IlcCAQGhLAMqAATehLqu61gKC3Tgr4wQMVoguAhhG3Uwwz8u\n"
1867 "ELyhe7yPCAuOoLZlTLgf\n"
1868 "-----END EC PRIVATE KEY-----\n";
1871 "-----BEGIN CERTIFICATE-----\n"
1872 "MIICfDCCAjqgAwIBAgIJANIytpeTKlXBMAkGByqGSM49BAEwXjELMAkGA1UEBhMC\n"
1873 "UEwxDTALBgNVBAgMBExvZHoxDTALBgNVBAcMBExvZHoxEDAOBgNVBAoMB1NhbXN1\n"
1874 "bmcxETAPBgNVBAsMCFNlY3VyaXR5MQwwCgYDVQQDDANDS00wHhcNMTQwNzAyMTI0\n"
1875 "MTQ3WhcNMTcwNzAxMTI0MTQ3WjBeMQswCQYDVQQGEwJQTDENMAsGA1UECAwETG9k\n"
1876 "ejENMAsGA1UEBwwETG9kejEQMA4GA1UECgwHU2Ftc3VuZzERMA8GA1UECwwIU2Vj\n"
1877 "dXJpdHkxDDAKBgNVBAMMA0NLTTCB6jCBuwYHKoZIzj0CATCBrwIBATAgBgcqhkjO\n"
1878 "PQEBAhUA/////////////////////3////8wQwQU/////////////////////3//\n"
1879 "//wEFByXvvxUvXqLZaz4n4HU1K3FZfpFAxUAEFPN5CwU1pbmdodWFRdTO/P4M0UE\n"
1880 "KQRKlrVojvVzKEZkaYlow4u5E8v8giOmKFUxaJR9WdzJEgQjUTd6xfsyAhUBAAAA\n"
1881 "AAAAAAAAAfTI+Seu08p1IlcCAQEDKgAE3oS6rutYCgt04K+MEDFaILgIYRt1MMM/\n"
1882 "LhC8oXu8jwgLjqC2ZUy4H6NQME4wHQYDVR0OBBYEFELElWx3kbLo55Cfn1vywsEZ\n"
1883 "ccsmMB8GA1UdIwQYMBaAFELElWx3kbLo55Cfn1vywsEZccsmMAwGA1UdEwQFMAMB\n"
1884 "Af8wCQYHKoZIzj0EAQMxADAuAhUAumC4mGoyK97SxTvVBQ+ELfCbxEECFQCbMJ72\n"
1885 "Q1oBry6NEc+lLFmWMDesAA==\n"
1886 "-----END CERTIFICATE-----\n";
1888 std::string message = "message test";
1890 CKM::Alias aliasPub = "pub3";
1891 CKM::Alias aliasPrv = "prv3";
1892 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
1893 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
1894 CKM::RawBuffer signature;
1896 auto cert = CKM::Certificate::create(CKM::RawBuffer(pub.begin(), pub.end()), CKM::DataFormat::FORM_PEM);
1897 auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()));
1899 RUNNER_ASSERT_MSG(NULL != cert.get(),
1900 "Key is empty. Failed to import public key.");
1901 RUNNER_ASSERT_MSG(NULL != keyPrv.get(),
1902 "Key is empty. Failed to import private key.");
1905 CKM_API_SUCCESS == (temp = manager->saveCertificate(aliasPub, cert, CKM::Policy())),
1906 "Error=" << CKM::ErrorToString(temp));
1908 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
1909 "Error=" << CKM::ErrorToString(temp));
1912 CKM_API_SUCCESS == (temp = manager->createSignature(
1915 CKM::RawBuffer(message.begin(), message.end()),
1919 "Error=" << CKM::ErrorToString(temp));
1922 CKM_API_SUCCESS == (temp = manager->verifySignature(
1925 CKM::RawBuffer(message.begin(), message.end()),
1929 "Error=" << CKM::ErrorToString(temp));
1931 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
1933 memcpy((void*)signature.data(), "BROKEN", 6);
1936 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
1939 CKM::RawBuffer(message.begin(), message.end()),
1943 "Error=" << CKM::ErrorToString(temp));
1946 RUNNER_TEST(T1420_deinit)
1949 auto control = CKM::Control::create();
1952 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
1953 "Error=" << CKM::ErrorToString(temp));
1955 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
1956 "Error=" << CKM::ErrorToString(temp));
1959 RUNNER_TEST(T14180_init)
1962 auto control = CKM::Control::create();
1964 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "test-pass")),
1965 "Error=" << CKM::ErrorToString(temp));
1967 auto manager = CKM::Manager::create();
1969 // Prepare RSA Key Pair
1970 std::string prv = "-----BEGIN RSA PRIVATE KEY-----\n"
1971 "Proc-Type: 4,ENCRYPTED\n"
1972 "DEK-Info: DES-EDE3-CBC,6C6507B11671DABC\n"
1974 "YiKNviNqc/V/i241CKtAVsNckesE0kcaka3VrY7ApXR+Va93YoEwVQ8gB9cE/eHH\n"
1975 "S0j3ZS1PAVFM/qo4ZnPdMzaSLvTQw0GAL90wWgF3XQ+feMnWyBObEoQdGXE828TB\n"
1976 "SLz4UOIQ55Dx6JSWTfEhwAlPs2cEWD14xvuxPzAEzBIYmWmBBsCN94YgFeRTzjH0\n"
1977 "TImoYVMN60GgOfZWw6rXq9RaV5dY0Y6F1piypCLGD35VaXAutdHIDvwUGECPm7SN\n"
1978 "w05jRro53E1vb4mYlZEY/bs4q7XEOI5+ZKT76Xn0oEJNX1KRL1h2q8fgUkm5j40M\n"
1979 "uQj71aLR9KyIoQARwGLeRy09tLVjH3fj66CCMqaPcxcIRIyWi5yYBB0s53ipm6A9\n"
1980 "CYuyc7MS2C0pOdWKsDvYsHR/36KUiIdPuhF4AbaTqqO0eWeuP7Na7dGK56Fl+ooi\n"
1981 "cUpJr7cIqMl2vL25B0jW7d4TB3zwCEkVVD1fBPeNoZWo30z4bILcBqjjPkQfHZ2e\n"
1982 "xNraG3qI4FHjoPT8JEE8p+PgwaMoINlICyIMKiCdvwz9yEnsHPy7FkmatpS+jFoS\n"
1983 "mg8R9vMwgK/HGEm0dmb/7/a0XsG2jCDm6cOmJdZJFQ8JW7hFs3eOHpNlQYDChG2D\n"
1984 "A1ExslqBtbpicywTZhzFdYU/hxeCr4UqcY27Zmhr4JlBPMyvadWKeOqCamWepjbT\n"
1985 "T/MhWJbmWgZbI5s5sbpu7cOYubQcUIEsTaQXGx/KEzGo1HLn9tzSeQfP/nqjAD/L\n"
1986 "T5t1Mb8o4LuV/fGIT33Q3i2FospJMqp2JINNzG18I6Fjo08PTvJ3row40Rb76+lJ\n"
1987 "wN1IBthgBgsgsOdB6XNc56sV+uq2TACsNNWw+JnFRCkCQgfF/KUrvN+WireWq88B\n"
1988 "9UPG+Hbans5A6K+y1a+bzfdYnKws7x8wNRyPxb7Vb2t9ZTl5PBorPLVGsjgf9N5X\n"
1989 "tCdBlfJsUdXot+EOxrIczV5zx0JIB1Y9hrDG07RYkzPuJKxkW7skqeLo8oWGVpaQ\n"
1990 "LGWvuebky1R75hcSuL3e4QHfjBHPdQ31fScB884tqkbhBAWr2nT9bYEmyT170bno\n"
1991 "8QkyOSb99xZBX55sLDHs9p61sTJr2C9Lz/KaWQs+3hTkpwSjSRyjEMH2n491qiQX\n"
1992 "G+kvLEnvtR8sl9zinorj/RfsxyPntAxudfY3qaYUu2QkLvVdfTVUVbxS/Fg8f7B3\n"
1993 "hEjCtpKgFjPxQuHE3didNOr5xM7mkmLN/QA7yHVgdpE64T5mFgC3JcVRpcR7zBPH\n"
1994 "3OeXHgjrhDfN8UIX/cq6gNgD8w7O0rhHa3mEXI1xP14ykPcJ7wlRuLm9P3fwx5A2\n"
1995 "jQrVKJKw1Nzummmspn4VOpJY3LkH4Sxo4e7Soo1l1cxJpzmERwgMF+vGz1L70+DG\n"
1996 "M0hVrz1PxlOsBBFgcdS4TB91DIs/RcFDqrJ4gOPNKCgBP+rgTXXLFcxUwJfE3lKg\n"
1997 "Kmpwdne6FuQYX3eyRVAmPgOHbJuRQCh/V4fYo51UxCcEKeKy6UgOPEJlXksWGbH5\n"
1998 "VFmlytYW6dFKJvjltSmK6L2r+TlyEQoXwTqe4bkfhB2LniDEq28hKQ==\n"
1999 "-----END RSA PRIVATE KEY-----\n";
2001 std::string pub = "-----BEGIN PUBLIC KEY-----\n"
2002 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
2003 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
2004 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
2005 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
2006 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
2007 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
2009 "-----END PUBLIC KEY-----\n";
2011 CKM::Alias aliasPub = "pub_nohash1";
2012 CKM::Alias aliasPrv = "prv_nohash1";
2013 CKM::Password password = "1234";
2015 auto keyPub = CKM::Key::create(CKM::RawBuffer(pub.begin(), pub.end()));
2016 auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()), password);
2018 RUNNER_ASSERT_MSG(NULL != keyPub.get(),
2019 "Key is empty. Failed to import public key.");
2020 RUNNER_ASSERT_MSG(NULL != keyPrv.get(),
2021 "Key is empty. Failed to import private key.");
2024 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPub, keyPub, CKM::Policy())),
2025 "Error=" << CKM::ErrorToString(temp));
2027 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
2028 "Error=" << CKM::ErrorToString(temp));
2030 // Prepare ECDSA Key Pair
2031 std::string ecprv = "-----BEGIN EC PRIVATE KEY-----\n"
2032 "MHQCAQEEIJNud6U4h8EM1rASn4W5vQOJELTaVPQTUiESaBULvQUVoAcGBSuBBAAK\n"
2033 "oUQDQgAEL1R+hgjiFrdjbUKRNOxUG8ze9nveD9zT05YHeT7vK0w08AUL1HCH5nFV\n"
2034 "ljePBYSxe6CybFiseayaxRxjA+iF1g==\n"
2035 "-----END EC PRIVATE KEY-----\n";
2037 std::string ecpub = "-----BEGIN PUBLIC KEY-----\n"
2038 "MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEL1R+hgjiFrdjbUKRNOxUG8ze9nveD9zT\n"
2039 "05YHeT7vK0w08AUL1HCH5nFVljePBYSxe6CybFiseayaxRxjA+iF1g==\n"
2040 "-----END PUBLIC KEY-----\n";
2042 CKM::Alias aliasEcPub = "ecpub_nohash1";
2043 CKM::Alias aliasEcPrv = "ecprv_nohash1";
2045 auto ecKeyPub = CKM::Key::create(CKM::RawBuffer(ecpub.begin(), ecpub.end()));
2046 auto ecKeyPrv = CKM::Key::create(CKM::RawBuffer(ecprv.begin(), ecprv.end()));
2048 RUNNER_ASSERT_MSG(NULL != ecKeyPub.get(),
2049 "Key is empty. Failed to import public key.");
2050 RUNNER_ASSERT_MSG(NULL != ecKeyPrv.get(),
2051 "Key is empty. Failed to import private key.");
2054 CKM_API_SUCCESS == (temp = manager->saveKey(aliasEcPub, ecKeyPub, CKM::Policy())),
2055 "Error=" << CKM::ErrorToString(temp));
2057 CKM_API_SUCCESS == (temp = manager->saveKey(aliasEcPrv, ecKeyPrv, CKM::Policy())),
2058 "Error=" << CKM::ErrorToString(temp));
2062 RUNNER_TEST(T14181_rsa_create_signatue_nohash)
2065 auto manager = CKM::Manager::create();
2066 std::string message = "message asdfaslkdfjlksadjf test";
2068 CKM::Alias aliasPub = "pub_nohash1";
2069 CKM::Alias aliasPrv = "prv_nohash1";
2071 CKM::HashAlgorithm hash = CKM::HashAlgorithm::NONE;
2072 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
2073 CKM::RawBuffer signature;
2076 CKM_API_SUCCESS == (temp = manager->createSignature(
2079 CKM::RawBuffer(message.begin(), message.end()),
2083 "Error=" << CKM::ErrorToString(temp));
2086 CKM_API_SUCCESS == (temp = manager->verifySignature(
2089 CKM::RawBuffer(message.begin(), message.end()),
2093 "Error=" << CKM::ErrorToString(temp));
2095 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
2096 memcpy((void*)signature.data(), "BROKEN", 6);
2099 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
2102 CKM::RawBuffer(message.begin(), message.end()),
2106 "Error=" << CKM::ErrorToString(temp));
2109 RUNNER_TEST(T14182_rsa_create_signatue_nohash_nopad)
2112 auto manager = CKM::Manager::create();
2113 std::string message = "message asdfaslkdfjlksadjf test";
2115 CKM::Alias aliasPub = "pub_nohash1";
2116 CKM::Alias aliasPrv = "prv_nohash1";
2118 CKM::HashAlgorithm hash = CKM::HashAlgorithm::NONE;
2119 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::NONE;
2120 CKM::RawBuffer signature;
2123 CKM_API_ERROR_INPUT_PARAM == (temp = manager->createSignature(
2126 CKM::RawBuffer(message.begin(), message.end()),
2130 "Error=" << CKM::ErrorToString(temp));
2133 RUNNER_TEST(T14183_rsa_create_signatue_nohash_bigmsg)
2136 auto manager = CKM::Manager::create();
2137 std::string message = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2138 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2139 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2140 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2141 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2142 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2143 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2144 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2145 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2146 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2147 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2148 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2149 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2150 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2151 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2152 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2153 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2154 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2155 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2156 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
2158 CKM::Alias aliasPub = "pub_nohash1";
2159 CKM::Alias aliasPrv = "prv_nohash1";
2161 CKM::HashAlgorithm hash = CKM::HashAlgorithm::NONE;
2162 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
2163 CKM::RawBuffer signature;
2166 CKM_API_ERROR_INPUT_PARAM == (temp = manager->createSignature(
2169 CKM::RawBuffer(message.begin(), message.end()),
2173 "Error=" << CKM::ErrorToString(temp));
2177 RUNNER_TEST(T14184_ec_create_signatue_nohash)
2180 auto manager = CKM::Manager::create();
2182 std::string message = "message test";
2184 CKM::Alias aliasPub = "ecpub_nohash1";
2185 CKM::Alias aliasPrv = "ecprv_nohash1";
2186 CKM::HashAlgorithm hash = CKM::HashAlgorithm::NONE;
2187 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
2188 CKM::RawBuffer signature;
2191 CKM_API_SUCCESS == (temp = manager->createSignature(
2194 CKM::RawBuffer(message.begin(), message.end()),
2198 "Error=" << CKM::ErrorToString(temp));
2201 CKM_API_SUCCESS == (temp = manager->verifySignature(
2204 CKM::RawBuffer(message.begin(), message.end()),
2208 "Error=" << CKM::ErrorToString(temp));
2210 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
2212 memcpy((void*)signature.data(), "BROKEN", 6);
2215 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
2218 CKM::RawBuffer(message.begin(), message.end()),
2222 "Error=" << CKM::ErrorToString(temp));
2225 RUNNER_TEST(T14185_ec_create_signatue_nohash_bigmsg)
2228 auto manager = CKM::Manager::create();
2230 int msgSize = 1024*1024;
2231 char big_msg[msgSize];
2232 for(int i =0; i<msgSize-1; i++) {
2235 big_msg[msgSize-1]=0x00;
2236 std::string message(big_msg);
2238 CKM::Alias aliasPub = "ecpub_nohash1";
2239 CKM::Alias aliasPrv = "ecprv_nohash1";
2240 CKM::HashAlgorithm hash = CKM::HashAlgorithm::NONE;
2241 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::NONE;
2242 CKM::RawBuffer signature;
2245 CKM_API_SUCCESS == (temp = manager->createSignature(
2248 CKM::RawBuffer(message.begin(), message.end()),
2252 "Error=" << CKM::ErrorToString(temp));
2256 RUNNER_TEST(T14189_deinit)
2259 auto control = CKM::Control::create();
2262 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
2263 "Error=" << CKM::ErrorToString(temp));
2265 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
2266 "Error=" << CKM::ErrorToString(temp));
2270 RUNNER_TEST_GROUP_INIT(T151_CKM_STORAGE_PERNAMENT_TESTS);
2272 RUNNER_CHILD_TEST(T1510_init_unlock_key)
2275 SecurityServer::AccessProvider ap("my-label");
2276 ap.allowAPI("key-manager::api-control", "rw");
2277 ap.applyAndSwithToUser(USER_TEST, GROUP_APP);
2279 auto control = CKM::Control::create();
2281 CKM_API_SUCCESS == (tmp = control->unlockUserKey(USER_TEST, "strong-password")),
2282 "Error=" << CKM::ErrorToString(tmp));
2285 RUNNER_CHILD_TEST(T1511_init_insert_data)
2287 SecurityServer::AccessProvider ap("my-label");
2288 ap.allowAPI("key-manager::api-storage", "rw");
2289 ap.applyAndSwithToUser(USER_TEST, GROUP_APP);
2291 std::string ee = "-----BEGIN CERTIFICATE-----\n"
2292 "MIIF0TCCBLmgAwIBAgIQaPGTP4aS7Ut/WDNaBzdQrDANBgkqhkiG9w0BAQUFADCB\n"
2293 "ujELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
2294 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n"
2295 "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMr\n"
2296 "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTAeFw0x\n"
2297 "NDAyMjAwMDAwMDBaFw0xNTAyMjAyMzU5NTlaMIHmMRMwEQYLKwYBBAGCNzwCAQMT\n"
2298 "AlBMMR0wGwYDVQQPExRQcml2YXRlIE9yZ2FuaXphdGlvbjETMBEGA1UEBRMKMDAw\n"
2299 "MDAyNTIzNzELMAkGA1UEBhMCUEwxDzANBgNVBBEUBjAwLTk1MDEUMBIGA1UECBML\n"
2300 "bWF6b3dpZWNraWUxETAPBgNVBAcUCFdhcnN6YXdhMRYwFAYDVQQJFA1TZW5hdG9y\n"
2301 "c2thIDE4MRMwEQYDVQQKFAptQmFuayBTLkEuMQwwCgYDVQQLFANESU4xGTAXBgNV\n"
2302 "BAMUEHd3dy5tYmFuay5jb20ucGwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n"
2303 "AoIBAQDph6x8V6xUW/+651+qHF+UmorH9uaz2ZrX2bIWiMKIJFmpDDHlxcapKkqE\n"
2304 "BV04is83aiCpqKtc2ZHy2g4Hpj1eSF5BP2+OAlo0YUQZPIeRRdiMjmeAxw/ncBDx\n"
2305 "9rQBuCJ4XTD6cqQox5SI0TASOZ+wyAEjbDRXzL73XqRAFZ1LOpb2ONkolS+RutMB\n"
2306 "vshvCsWPeNe7eGLuOh6DyC6r1vX9xhw3xnjM2mTSvmtimgzSLacNGKqRrsucUgcb\n"
2307 "0+O5C2jZAtAMLyZksL92cxmWbtVzUYzem4chjHu5cRxUlPNzUJWrrczueB7Ip4A8\n"
2308 "aQuFMfNXYc0x+WLWjy//urypMKjhAgMBAAGjggGjMIIBnzAbBgNVHREEFDASghB3\n"
2309 "d3cubWJhbmsuY29tLnBsMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgWgMB0GA1Ud\n"
2310 "JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBEBgNVHSAEPTA7MDkGC2CGSAGG+EUB\n"
2311 "BxcGMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9jcHMw\n"
2312 "HQYDVR0OBBYEFN37iGaS7mZnENxZ9FGqNLR+QgoMMB8GA1UdIwQYMBaAFPyKULqe\n"
2313 "uSVae1WFT5UAY4/pWGtDMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9FVlNlY3Vy\n"
2314 "ZS1jcmwudmVyaXNpZ24uY29tL0VWU2VjdXJlMjAwNi5jcmwwfAYIKwYBBQUHAQEE\n"
2315 "cDBuMC0GCCsGAQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC52ZXJpc2lnbi5j\n"
2316 "b20wPQYIKwYBBQUHMAKGMWh0dHA6Ly9FVlNlY3VyZS1haWEudmVyaXNpZ24uY29t\n"
2317 "L0VWU2VjdXJlMjAwNi5jZXIwDQYJKoZIhvcNAQEFBQADggEBAD0wO+rooUrIM4qp\n"
2318 "PHhp+hkXK6WMQ2qzGOmbMcZjw0govg5vkzkefPDryIXXbrF8mRagiJNMSfNaWWeh\n"
2319 "Cj41OV24EdUl0OLbFxNzcvub599zRs/apfaRLTfsmlmOgi0/YP305i+3tJ2ll946\n"
2320 "P+qV1wXnXqTqEdIl4Ys3+1HmDCdTB1hoDwAAzqRVUXZ5+iiwPAU7R/LTHfMjV1ke\n"
2321 "8jtNFfrorlZMCfVH/7eEnHJvVjOJt+YFe4aFMzE+DfuYIK7MH+olC2v79kBwbnEQ\n"
2322 "fvHMA9gFwOYLUBBdSfcocp8EKZ+mRlNPGR/3LBrPeaQQ0GZEkxzRK+v/aNTuiYfr\n"
2324 "-----END CERTIFICATE-----\n";
2327 "-----BEGIN CERTIFICATE-----\n"
2328 "MIIF5DCCBMygAwIBAgIQW3dZxheE4V7HJ8AylSkoazANBgkqhkiG9w0BAQUFADCB\n"
2329 "yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
2330 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\n"
2331 "U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\n"
2332 "ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\n"
2333 "aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMTYxMTA3MjM1OTU5WjCBujEL\n"
2334 "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\n"
2335 "ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg\n"
2336 "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMrVmVy\n"
2337 "aVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTCCASIwDQYJ\n"
2338 "KoZIhvcNAQEBBQADggEPADCCAQoCggEBAJjboFXrnP0XeeOabhQdsVuYI4cWbod2\n"
2339 "nLU4O7WgerQHYwkZ5iqISKnnnbYwWgiXDOyq5BZpcmIjmvt6VCiYxQwtt9citsj5\n"
2340 "OBfH3doxRpqUFI6e7nigtyLUSVSXTeV0W5K87Gws3+fBthsaVWtmCAN/Ra+aM/EQ\n"
2341 "wGyZSpIkMQht3QI+YXZ4eLbtfjeubPOJ4bfh3BXMt1afgKCxBX9ONxX/ty8ejwY4\n"
2342 "P1C3aSijtWZfNhpSSENmUt+ikk/TGGC+4+peGXEFv54cbGhyJW+ze3PJbb0S/5tB\n"
2343 "Ml706H7FC6NMZNFOvCYIZfsZl1h44TO/7Wg+sSdFb8Di7Jdp91zT91ECAwEAAaOC\n"
2344 "AdIwggHOMB0GA1UdDgQWBBT8ilC6nrklWntVhU+VAGOP6VhrQzASBgNVHRMBAf8E\n"
2345 "CDAGAQH/AgEAMD0GA1UdIAQ2MDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRw\n"
2346 "czovL3d3dy52ZXJpc2lnbi5jb20vY3BzMD0GA1UdHwQ2MDQwMqAwoC6GLGh0dHA6\n"
2347 "Ly9FVlNlY3VyZS1jcmwudmVyaXNpZ24uY29tL3BjYTMtZzUuY3JsMA4GA1UdDwEB\n"
2348 "/wQEAwIBBjARBglghkgBhvhCAQEEBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZ\n"
2349 "MFcwVRYJaW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7\n"
2350 "GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwKQYDVR0R\n"
2351 "BCIwIKQeMBwxGjAYBgNVBAMTEUNsYXNzM0NBMjA0OC0xLTQ3MD0GCCsGAQUFBwEB\n"
2352 "BDEwLzAtBggrBgEFBQcwAYYhaHR0cDovL0VWU2VjdXJlLW9jc3AudmVyaXNpZ24u\n"
2353 "Y29tMB8GA1UdIwQYMBaAFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqGSIb3DQEB\n"
2354 "BQUAA4IBAQCWovp/5j3t1CvOtxU/wHIDX4u6FpAl98KD2Md1NGNoElMMU4l7yVYJ\n"
2355 "p8M2RE4O0GJis4b66KGbNGeNUyIXPv2s7mcuQ+JdfzOE8qJwwG6Cl8A0/SXGI3/t\n"
2356 "5rDFV0OEst4t8dD2SB8UcVeyrDHhlyQjyRNddOVG7wl8nuGZMQoIeRuPcZ8XZsg4\n"
2357 "z+6Ml7YGuXNG5NOUweVgtSV1LdlpMezNlsOjdv3odESsErlNv1HoudRETifLriDR\n"
2358 "fip8tmNHnna6l9AW5wtsbfdDbzMLKTB3+p359U64drPNGLT5IO892+bKrZvQTtKH\n"
2359 "qQ2mRHNQ3XBb7a1+Srwi1agm5MKFIA3Z\n"
2360 "-----END CERTIFICATE-----\n";
2362 auto manager = CKM::Manager::create();
2363 auto certee = CKM::Certificate::create(CKM::RawBuffer(ee.begin(), ee.end()), CKM::DataFormat::FORM_PEM);
2364 auto certim = CKM::Certificate::create(CKM::RawBuffer(im.begin(), im.end()), CKM::DataFormat::FORM_PEM);
2366 int status1 = manager->saveCertificate(CKM::Alias("CertEE"), certee, CKM::Policy());
2367 int status2 = manager->saveCertificate(CKM::Alias("CertIM"), certim, CKM::Policy());
2370 CKM_API_ERROR_DB_ALIAS_EXISTS == status1,
2371 "Certificate should be in database already. Error=" << CKM::ErrorToString(status1));
2374 CKM_API_ERROR_DB_ALIAS_EXISTS == status2,
2375 "Certificate should be in database already. Error=" << CKM::ErrorToString(status2));
2378 RUNNER_CHILD_TEST(T1519_deinit)
2381 SecurityServer::AccessProvider ap("my-label");
2382 ap.allowAPI("key-manager::api-control", "rw");
2383 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
2385 auto control = CKM::Control::create();
2387 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_TEST)),
2388 "Error=" << CKM::ErrorToString(tmp));
2392 RUNNER_TEST_GROUP_INIT(T161_CKM_LOCKTYPE_TESTS);
2394 RUNNER_CHILD_TEST(T1610_init_lock_key)
2397 SecurityServer::AccessProvider ap("my-label");
2398 ap.allowAPI("key-manager::api-control", "rw");
2399 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
2401 auto control = CKM::Control::create();
2403 CKM_API_SUCCESS == (tmp = control->changeUserPassword(USER_APP,"user-pass","")),
2404 "Error=" << CKM::ErrorToString(tmp));
2406 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_APP)),
2407 "Error=" << CKM::ErrorToString(tmp));
2410 RUNNER_CHILD_TEST(T1611_unlock_default_passwd)
2412 SecurityServer::AccessProvider ap("my-label");
2413 ap.allowAPI("key-manager::api-storage", "rw");
2414 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
2417 auto manager = CKM::Manager::create();
2419 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
2420 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
2421 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
2422 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
2423 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
2424 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
2425 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
2427 "-----END PUBLIC KEY-----";
2429 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
2430 auto key = CKM::Key::create(buffer, CKM::Password());
2432 CKM::Alias alias = "mykey_defpasswd";
2435 CKM_API_SUCCESS == (temp = manager->saveKey(alias, key, CKM::Policy())),
2436 "Error=" << CKM::ErrorToString(temp));
2438 CKM_API_SUCCESS == (temp = manager->getKey(alias, CKM::Password(), key2)),
2439 "Error=" << CKM::ErrorToString(temp));
2441 key->getDER() == key2->getDER(),
2442 "Key value has been changed by service");
2444 CKM_API_SUCCESS == (temp = manager->removeKey(alias)),
2445 "Error=" << CKM::ErrorToString(temp));
2448 RUNNER_CHILD_TEST(T1612_init_change_user_password)
2451 SecurityServer::AccessProvider ap("my-label");
2452 ap.allowAPI("key-manager::api-control", "rw");
2453 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
2455 auto control = CKM::Control::create();
2457 CKM_API_SUCCESS == (tmp = control->changeUserPassword(USER_APP,"","user-pass")),
2458 "Error=" << CKM::ErrorToString(tmp));
2460 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_APP)),
2461 "Error=" << CKM::ErrorToString(tmp));
2464 RUNNER_CHILD_TEST(T1613_unlock_default_passwd_negative)
2466 SecurityServer::AccessProvider ap("my-label");
2467 ap.allowAPI("key-manager::api-storage", "rw");
2468 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
2471 auto manager = CKM::Manager::create();
2473 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
2474 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
2475 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
2476 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
2477 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
2478 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
2479 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
2481 "-----END PUBLIC KEY-----";
2483 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
2484 auto key = CKM::Key::create(buffer, CKM::Password());
2486 CKM::Alias alias = "mykey_defpasswd";
2489 CKM_API_ERROR_DB_LOCKED == (temp = manager->saveKey(alias, key, CKM::Policy())),
2490 "Error=" << CKM::ErrorToString(temp));
2492 CKM_API_ERROR_DB_LOCKED == (temp = manager->getKey(alias, CKM::Password(), key2)),
2493 "Error=" << CKM::ErrorToString(temp));
2495 CKM_API_ERROR_DB_LOCKED == (temp = manager->removeKey(alias)),
2496 "Error=" << CKM::ErrorToString(temp));
2499 RUNNER_CHILD_TEST(T1619_deinit)
2501 SecurityServer::AccessProvider ap("my-label");
2502 ap.allowAPI("key-manager::api-control", "rw");
2503 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
2506 RUNNER_TEST_GROUP_INIT(T170_CKM_STORAGE_PERNAMENT_TESTS);
2508 RUNNER_TEST(T1701_init_unlock_key)
2511 auto control = CKM::Control::create();
2513 CKM_API_SUCCESS == (tmp = control->unlockUserKey(USER_TEST+1, "t170-special-password")),
2514 "Error=" << CKM::ErrorToString(tmp));
2517 RUNNER_CHILD_TEST(T1702_init_insert_data)
2520 SecurityServer::AccessProvider ap("t170-special-label");
2521 ap.allowAPI("key-manager::api-storage", "rw");
2522 ap.applyAndSwithToUser(USER_TEST+1, GROUP_APP);
2524 std::string ee = "-----BEGIN CERTIFICATE-----\n"
2525 "MIIF0TCCBLmgAwIBAgIQaPGTP4aS7Ut/WDNaBzdQrDANBgkqhkiG9w0BAQUFADCB\n"
2526 "ujELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
2527 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n"
2528 "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMr\n"
2529 "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTAeFw0x\n"
2530 "NDAyMjAwMDAwMDBaFw0xNTAyMjAyMzU5NTlaMIHmMRMwEQYLKwYBBAGCNzwCAQMT\n"
2531 "AlBMMR0wGwYDVQQPExRQcml2YXRlIE9yZ2FuaXphdGlvbjETMBEGA1UEBRMKMDAw\n"
2532 "MDAyNTIzNzELMAkGA1UEBhMCUEwxDzANBgNVBBEUBjAwLTk1MDEUMBIGA1UECBML\n"
2533 "bWF6b3dpZWNraWUxETAPBgNVBAcUCFdhcnN6YXdhMRYwFAYDVQQJFA1TZW5hdG9y\n"
2534 "c2thIDE4MRMwEQYDVQQKFAptQmFuayBTLkEuMQwwCgYDVQQLFANESU4xGTAXBgNV\n"
2535 "BAMUEHd3dy5tYmFuay5jb20ucGwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n"
2536 "AoIBAQDph6x8V6xUW/+651+qHF+UmorH9uaz2ZrX2bIWiMKIJFmpDDHlxcapKkqE\n"
2537 "BV04is83aiCpqKtc2ZHy2g4Hpj1eSF5BP2+OAlo0YUQZPIeRRdiMjmeAxw/ncBDx\n"
2538 "9rQBuCJ4XTD6cqQox5SI0TASOZ+wyAEjbDRXzL73XqRAFZ1LOpb2ONkolS+RutMB\n"
2539 "vshvCsWPeNe7eGLuOh6DyC6r1vX9xhw3xnjM2mTSvmtimgzSLacNGKqRrsucUgcb\n"
2540 "0+O5C2jZAtAMLyZksL92cxmWbtVzUYzem4chjHu5cRxUlPNzUJWrrczueB7Ip4A8\n"
2541 "aQuFMfNXYc0x+WLWjy//urypMKjhAgMBAAGjggGjMIIBnzAbBgNVHREEFDASghB3\n"
2542 "d3cubWJhbmsuY29tLnBsMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgWgMB0GA1Ud\n"
2543 "JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBEBgNVHSAEPTA7MDkGC2CGSAGG+EUB\n"
2544 "BxcGMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9jcHMw\n"
2545 "HQYDVR0OBBYEFN37iGaS7mZnENxZ9FGqNLR+QgoMMB8GA1UdIwQYMBaAFPyKULqe\n"
2546 "uSVae1WFT5UAY4/pWGtDMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9FVlNlY3Vy\n"
2547 "ZS1jcmwudmVyaXNpZ24uY29tL0VWU2VjdXJlMjAwNi5jcmwwfAYIKwYBBQUHAQEE\n"
2548 "cDBuMC0GCCsGAQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC52ZXJpc2lnbi5j\n"
2549 "b20wPQYIKwYBBQUHMAKGMWh0dHA6Ly9FVlNlY3VyZS1haWEudmVyaXNpZ24uY29t\n"
2550 "L0VWU2VjdXJlMjAwNi5jZXIwDQYJKoZIhvcNAQEFBQADggEBAD0wO+rooUrIM4qp\n"
2551 "PHhp+hkXK6WMQ2qzGOmbMcZjw0govg5vkzkefPDryIXXbrF8mRagiJNMSfNaWWeh\n"
2552 "Cj41OV24EdUl0OLbFxNzcvub599zRs/apfaRLTfsmlmOgi0/YP305i+3tJ2ll946\n"
2553 "P+qV1wXnXqTqEdIl4Ys3+1HmDCdTB1hoDwAAzqRVUXZ5+iiwPAU7R/LTHfMjV1ke\n"
2554 "8jtNFfrorlZMCfVH/7eEnHJvVjOJt+YFe4aFMzE+DfuYIK7MH+olC2v79kBwbnEQ\n"
2555 "fvHMA9gFwOYLUBBdSfcocp8EKZ+mRlNPGR/3LBrPeaQQ0GZEkxzRK+v/aNTuiYfr\n"
2557 "-----END CERTIFICATE-----\n";
2559 auto manager = CKM::Manager::create();
2560 auto certee = CKM::Certificate::create(CKM::RawBuffer(ee.begin(), ee.end()), CKM::DataFormat::FORM_PEM);
2562 int status1 = manager->saveCertificate(CKM::Alias("CertEEE"), certee, CKM::Policy());
2565 CKM_API_SUCCESS == status1,
2566 "Could not put certificate in datbase. Error=" << CKM::ErrorToString(status1));
2568 CKM::AliasVector av;
2571 CKM_API_SUCCESS == (temp = manager->getCertificateAliasVector(av)),
2572 "Error=" << CKM::ErrorToString(temp));
2574 1 == (temp = av.size()),
2575 "Vector size: " << temp << ". Expected: 1");
2578 RUNNER_TEST(T1703_removeApplicationData)
2581 auto control = CKM::Control::create();
2583 CKM_API_SUCCESS == (tmp = control->removeApplicationData("t170-special-label")),
2584 "Error=" << CKM::ErrorToString(tmp));
2587 RUNNER_CHILD_TEST(T1704_data_test)
2590 SecurityServer::AccessProvider ap("t170-special-label");
2591 ap.allowAPI("key-manager::api-storage", "rw");
2592 ap.applyAndSwithToUser(USER_TEST+1, GROUP_APP);
2594 CKM::AliasVector av;
2595 auto manager = CKM::Manager::create();
2598 CKM_API_SUCCESS == (temp = manager->getCertificateAliasVector(av)),
2599 "Error=" << CKM::ErrorToString(temp));
2601 0 == (temp = av.size()),
2602 "Vector size: " << temp << ". Expected: 0");
2605 RUNNER_TEST(T1705_deinit)
2609 auto control = CKM::Control::create();
2611 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_TEST+1)),
2612 "Error=" << CKM::ErrorToString(tmp));
2614 CKM_API_SUCCESS == (tmp = control->removeUserData(USER_TEST+1)),
2615 "Error=" << CKM::ErrorToString(tmp));
2618 RUNNER_TEST(T17101_init)
2622 auto control = CKM::Control::create();
2624 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_TEST+2)),
2625 "Error=" << CKM::ErrorToString(tmp));
2627 CKM_API_SUCCESS == (tmp = control->removeUserData(USER_TEST+2)),
2628 "Error=" << CKM::ErrorToString(tmp));
2630 CKM_API_SUCCESS == (tmp = control->unlockUserKey(USER_TEST+2, "t1706-special-password")),
2631 "Error=" << CKM::ErrorToString(tmp));
2634 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_TEST+3)),
2635 "Error=" << CKM::ErrorToString(tmp));
2637 CKM_API_SUCCESS == (tmp = control->removeUserData(USER_TEST+3)),
2638 "Error=" << CKM::ErrorToString(tmp));
2640 CKM_API_SUCCESS == (tmp = control->unlockUserKey(USER_TEST+3, "t1706-special-password")),
2641 "Error=" << CKM::ErrorToString(tmp));
2644 RUNNER_CHILD_TEST(T17102_prep_data_01)
2647 SecurityServer::AccessProvider ap("t1706-special-label");
2648 ap.allowAPI("key-manager::api-storage", "rw");
2649 ap.applyAndSwithToUser(USER_TEST+2, GROUP_APP);
2651 CKM::AliasVector av;
2652 auto manager = CKM::Manager::create();
2654 std::string data = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4";
2656 CKM::RawBuffer buffer(data.begin(), data.end());
2657 CKM::Policy exportable(CKM::Password(), true);
2660 CKM_API_SUCCESS == (temp = manager->saveData("data1", buffer, exportable)),
2661 "Error=" << CKM::ErrorToString(temp));
2664 RUNNER_CHILD_TEST(T17103_prep_data_02)
2667 SecurityServer::AccessProvider ap("t1706-special-label2");
2668 ap.allowAPI("key-manager::api-storage", "rw");
2669 ap.applyAndSwithToUser(USER_TEST+2, GROUP_APP);
2671 CKM::AliasVector av;
2672 auto manager = CKM::Manager::create();
2674 std::string data = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4";
2676 CKM::RawBuffer buffer(data.begin(), data.end());
2677 CKM::Policy exportable(CKM::Password(), true);
2680 CKM_API_SUCCESS == (temp = manager->saveData("data2", buffer, exportable)),
2681 "Error=" << CKM::ErrorToString(temp));
2684 RUNNER_CHILD_TEST(T17104_prep_data_03)
2687 SecurityServer::AccessProvider ap("t1706-special-label");
2688 ap.allowAPI("key-manager::api-storage", "rw");
2689 ap.applyAndSwithToUser(USER_TEST+3, GROUP_APP);
2691 CKM::AliasVector av;
2692 auto manager = CKM::Manager::create();
2694 std::string data = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4";
2696 CKM::RawBuffer buffer(data.begin(), data.end());
2697 CKM::Policy exportable(CKM::Password(), true);
2700 CKM_API_SUCCESS == (temp = manager->saveData("data3", buffer, exportable)),
2701 "Error=" << CKM::ErrorToString(temp));
2704 RUNNER_CHILD_TEST(T17105_prep_data_04)
2707 SecurityServer::AccessProvider ap("t1706-special-label2");
2708 ap.allowAPI("key-manager::api-storage", "rw");
2709 ap.applyAndSwithToUser(USER_TEST+3, GROUP_APP);
2711 CKM::AliasVector av;
2712 auto manager = CKM::Manager::create();
2714 std::string data = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4";
2716 CKM::RawBuffer buffer(data.begin(), data.end());
2717 CKM::Policy exportable(CKM::Password(), true);
2720 CKM_API_SUCCESS == (temp = manager->saveData("data4", buffer, exportable)),
2721 "Error=" << CKM::ErrorToString(temp));
2724 RUNNER_TEST(T17106_remove_application)
2728 auto control = CKM::Control::create();
2730 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_TEST+3)),
2731 "Error=" << CKM::ErrorToString(tmp));
2733 CKM_API_SUCCESS == (tmp = control->removeApplicationData("t1706-special-label")),
2734 "Error=" << CKM::ErrorToString(tmp));
2737 RUNNER_CHILD_TEST(T17107_check_data_01)
2740 SecurityServer::AccessProvider ap("t1706-special-label");
2741 ap.allowAPI("key-manager::api-storage", "rw");
2742 ap.applyAndSwithToUser(USER_TEST+2, GROUP_APP);
2744 CKM::AliasVector av;
2745 auto manager = CKM::Manager::create();
2748 CKM_API_SUCCESS == (temp = manager->getDataAliasVector(av)),
2749 "Error=" << CKM::ErrorToString(temp));
2751 0 == (temp = av.size()),
2752 "Vector size: " << temp << ". Expected: 0");
2755 RUNNER_CHILD_TEST(T17108_check_data_02)
2758 SecurityServer::AccessProvider ap("t1706-special-label2");
2759 ap.allowAPI("key-manager::api-storage", "rw");
2760 ap.applyAndSwithToUser(USER_TEST+2, GROUP_APP);
2762 CKM::AliasVector av;
2763 auto manager = CKM::Manager::create();
2766 CKM_API_SUCCESS == (temp = manager->getDataAliasVector(av)),
2767 "Error=" << CKM::ErrorToString(temp));
2769 1 == (temp = av.size()),
2770 "Vector size: " << temp << ". Expected: 1");
2773 RUNNER_TEST(T17109_unlock_user2)
2777 auto control = CKM::Control::create();
2779 CKM_API_SUCCESS == (tmp = control->unlockUserKey(USER_TEST+3, "t1706-special-password")),
2780 "Error=" << CKM::ErrorToString(tmp));
2783 RUNNER_CHILD_TEST(T17110_check_data_03)
2786 SecurityServer::AccessProvider ap("t1706-special-label");
2787 ap.allowAPI("key-manager::api-storage", "rw");
2788 ap.applyAndSwithToUser(USER_TEST+3, GROUP_APP);
2790 CKM::AliasVector av;
2791 auto manager = CKM::Manager::create();
2794 CKM_API_SUCCESS == (temp = manager->getDataAliasVector(av)),
2795 "Error=" << CKM::ErrorToString(temp));
2797 0 == (temp = av.size()),
2798 "Vector size: " << temp << ". Expected: 0");
2801 RUNNER_CHILD_TEST(T17111_check_data_04)
2804 SecurityServer::AccessProvider ap("t1706-special-label2");
2805 ap.allowAPI("key-manager::api-storage", "rw");
2806 ap.applyAndSwithToUser(USER_TEST+3, GROUP_APP);
2808 CKM::AliasVector av;
2809 auto manager = CKM::Manager::create();
2812 CKM_API_SUCCESS == (temp = manager->getDataAliasVector(av)),
2813 "Error=" << CKM::ErrorToString(temp));
2815 1 == (temp = av.size()),
2816 "Vector size: " << temp << ". Expected: 1");
2819 RUNNER_TEST(T17112_deinit)
2823 auto control = CKM::Control::create();
2825 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_TEST+2)),
2826 "Error=" << CKM::ErrorToString(tmp));
2828 CKM_API_SUCCESS == (tmp = control->removeUserData(USER_TEST+2)),
2829 "Error=" << CKM::ErrorToString(tmp));
2832 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_TEST+3)),
2833 "Error=" << CKM::ErrorToString(tmp));
2835 CKM_API_SUCCESS == (tmp = control->removeUserData(USER_TEST+3)),
2836 "Error=" << CKM::ErrorToString(tmp));
2839 RUNNER_TEST_GROUP_INIT(T180_PKCS12);
2841 RUNNER_TEST(T1801) {
2842 std::ifstream is("/usr/share/ckm-test/test1801.pkcs12");
2843 std::istreambuf_iterator<char> begin(is), end;
2844 std::vector<char> buff(begin, end);
2846 CKM::RawBuffer buffer(buff.size());
2847 memcpy(buffer.data(), buff.data(), buff.size());
2849 auto pkcs = CKM::PKCS12::create(buffer, "secret");
2852 "Error in PKCS12::create()");
2854 auto cert = pkcs->getCertificate();
2857 "Error in PKCS12::getCertificate()");
2859 auto key = pkcs->getKey();
2862 "Error in PKCS12::getKey()");
2864 auto caVector = pkcs->getCaCertificateShPtrVector();
2866 0 == caVector.size(),
2867 "Wrong size of vector");
2870 RUNNER_TEST(T1802_negative_wrong_password) {
2871 std::ifstream is("/usr/share/ckm-test/test1801.pkcs12");
2872 std::istreambuf_iterator<char> begin(is), end;
2873 std::vector<char> buff(begin, end);
2875 CKM::RawBuffer buffer(buff.size());
2876 memcpy(buffer.data(), buff.data(), buff.size());
2878 auto pkcs = CKM::PKCS12::create(buffer, "error");
2881 "Expected error in PKCS12::create()");
2884 RUNNER_TEST(T1803_negative_broken_buffer) {
2885 std::ifstream is("/usr/share/ckm-test/test1801.pkcs12");
2886 std::istreambuf_iterator<char> begin(is), end;
2887 std::vector<char> buff(begin, end);
2889 CKM::RawBuffer buffer(buff.size());
2890 memcpy(buffer.data(), buff.data(), buff.size());
2892 RUNNER_ASSERT_MSG(buffer.size() > 5, "PKCS file is too small.");
2895 auto pkcs = CKM::PKCS12::create(buffer, "secret");
2898 "Expected error in PKCS12::create()");
2901 RUNNER_TEST_GROUP_INIT(T190_CKM_EMPTY_STORAGE_TESTS);
2903 RUNNER_TEST(T1901_init_unlock_key)
2906 auto control = CKM::Control::create();
2908 CKM_API_SUCCESS == (tmp = control->lockUserKey(0)),
2909 "Error=" << CKM::ErrorToString(tmp));
2911 CKM_API_SUCCESS == (tmp = control->removeUserData(0)),
2912 "Error=" << CKM::ErrorToString(tmp));
2914 CKM_API_SUCCESS == (tmp = control->unlockUserKey(0, "t190-special-password")),
2915 "Error=" << CKM::ErrorToString(tmp));
2918 RUNNER_TEST(T1902_get_data)
2920 auto manager = CKM::Manager::create();
2923 int status1 = manager->getKey(CKM::Alias("CertEEE"), CKM::Password(), ptr);
2926 CKM_API_ERROR_DB_ALIAS_UNKNOWN == status1,
2927 "Could not put certificate in datbase. Error=" << CKM::ErrorToString(status1));
2930 RUNNER_TEST(T1903_lock_database)
2933 auto control = CKM::Control::create();
2935 CKM_API_SUCCESS == (tmp = control->lockUserKey(0)),
2936 "Error=" << CKM::ErrorToString(tmp));
2939 RUNNER_TEST(T1904_get_data_from_locked_database)
2941 auto manager = CKM::Manager::create();
2944 int status1 = manager->getKey(CKM::Alias("CertEEE"), CKM::Password(), ptr);
2947 CKM_API_ERROR_DB_LOCKED == status1,
2948 "Could not get key from locked database. Error=" << CKM::ErrorToString(status1));
2951 RUNNER_TEST(T1905_deinit)
2954 auto control = CKM::Control::create();
2956 CKM_API_SUCCESS == (tmp = control->removeUserData(0)),
2957 "Error=" << CKM::ErrorToString(tmp));
2960 int main(int argc, char *argv[])
2962 DPL::Log::LogSystemSingleton::Instance().SetTag("CKM_TESTS");
2963 return DPL::Test::TestRunnerSingleton::Instance().ExecTestRunner(argc, argv);