3 #include <dpl/test/test_runner.h>
4 #include <dpl/test/test_runner_child.h>
6 #include <tests_common.h>
7 #include <access_provider2.h>
9 #include <ckm-common.h>
10 #include <ckm/ckm-manager.h>
11 #include <ckm/ckm-control.h>
12 #include <ckm/ckm-password.h>
13 #include <ckm/ckm-type.h>
14 #include <ckm/ckm-pkcs12.h>
18 #include <openssl/x509.h>
19 #include <openssl/x509v3.h>
21 #include <dpl/log/log.h>
23 static const int USER_APP = 5000;
24 static const int GROUP_APP = 5000;
25 static const int USER_TEST = 5001;
28 * How to numerate tests:
30 * T - test case (always T)
31 * AB - number of test group (always two digits)
32 * C - test number in group (all tests with same TABC must be run in the same time).
37 RUNNER_TEST_GROUP_INIT(T0010_CKM_CONTROL);
39 RUNNER_TEST(T0011_Control)
42 auto control = CKM::Control::create();
44 control->removeUserData(0);
45 control->removeUserData(20);
46 control->removeUserData(USER_APP);
49 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "simple-password")),
50 "Error=" << CKM::ErrorToString(temp));
53 RUNNER_TEST(T0012_Control)
56 auto control = CKM::Control::create();
58 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "simple-password")),
59 "Error=" << CKM::ErrorToString(temp));
61 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
62 "Error=" << CKM::ErrorToString(temp));
65 RUNNER_TEST(T0013_Control)
68 auto control = CKM::Control::create();
70 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "simple-password")),
71 "Error=" << CKM::ErrorToString(temp));
74 RUNNER_TEST(T0014_Control)
77 auto control = CKM::Control::create();
79 CKM_API_ERROR_BAD_REQUEST == (temp = control->resetUserPassword(14, "simple-password")),
80 "Error=" << CKM::ErrorToString(temp));
83 RUNNER_TEST(T0015_Control)
86 auto control = CKM::Control::create();
88 CKM_API_SUCCESS == (temp = control->unlockUserKey(20, "test-pass")),
89 "Error=" << CKM::ErrorToString(temp));
91 CKM_API_SUCCESS == (temp = control->changeUserPassword(20, "test-pass", "new-pass")),
92 "Error=" << CKM::ErrorToString(temp));
94 CKM_API_SUCCESS == (temp = control->lockUserKey(20)),
95 "Error=" << CKM::ErrorToString(temp));
97 CKM_API_SUCCESS == (temp = control->removeUserData(20)),
98 "Error=" << CKM::ErrorToString(temp));
101 RUNNER_TEST_GROUP_INIT(T101_CKM_QUICK_SET_GET_TESTS);
103 RUNNER_TEST(T1010_init)
106 auto control = CKM::Control::create();
108 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "test-pass")),
109 "Error=" << CKM::ErrorToString(temp));
111 CKM_API_SUCCESS == (temp = control->unlockUserKey(USER_APP, "user-pass")),
112 "Error=" << CKM::ErrorToString(temp));
115 RUNNER_TEST(T1011_key)
118 auto manager = CKM::Manager::create();
120 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
121 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
122 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
123 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
124 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
125 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
126 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
128 "-----END PUBLIC KEY-----";
130 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
131 auto key = CKM::Key::create(buffer, CKM::Password());
133 CKM::Alias alias = "mykey";
136 CKM_API_SUCCESS == (temp = manager->saveKey(alias, key, CKM::Policy())),
137 "Error=" << CKM::ErrorToString(temp));
139 CKM_API_SUCCESS == (temp = manager->getKey(alias, CKM::Password(), key2)),
140 "Error=" << CKM::ErrorToString(temp));
142 key->getDER() == key2->getDER(),
143 "Key value has been changed by service");
146 RUNNER_TEST(T1012_certificate)
149 auto manager = CKM::Manager::create();
151 std::string certPem =
152 "-----BEGIN CERTIFICATE-----\n"
153 "MIIEgDCCA2igAwIBAgIIcjtBYJGQtOAwDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UE\n"
154 "BhMCVVMxEzARBgNVBAoTCkdvb2dsZSBJbmMxJTAjBgNVBAMTHEdvb2dsZSBJbnRl\n"
155 "cm5ldCBBdXRob3JpdHkgRzIwHhcNMTQwNTIyMTEyOTQyWhcNMTQwODIwMDAwMDAw\n"
156 "WjBtMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwN\n"
157 "TW91bnRhaW4gVmlldzETMBEGA1UECgwKR29vZ2xlIEluYzEcMBoGA1UEAwwTYWNj\n"
158 "b3VudHMuZ29vZ2xlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB\n"
159 "ALtlLWVWPN3q3bSEQl1Z97gPdgl5vbgJOZSAr0ZY0tJCuFLBbUKetJWryyE+5KpG\n"
160 "gMMpLS4v8/bvXaZc6mAs+RfAqGM24C3vQg5hPnj4dflnhL0WiOCZBurm1tV4oexk\n"
161 "HLXs3jr/jpnb738AQpj8zZ9a4VEBuHJRZALnWZ/XhqU+dvYomAoRQNuL5OhkT7uu\n"
162 "d0NKJL9JjYLyQglGgE2sVsWv2kj7EO/P9Q6NEKt9BGmhMsFvtfeKUaymynaxpR1g\n"
163 "wEPlqYvB38goh1dIOgVLT0OVyLImeg5Mdwar/8c1U0OYhLOc6PJapOZAfUkE+3+w\n"
164 "xYt8AChLN1b5szOwInrCVpECAwEAAaOCAUYwggFCMB0GA1UdJQQWMBQGCCsGAQUF\n"
165 "BwMBBggrBgEFBQcDAjAeBgNVHREEFzAVghNhY2NvdW50cy5nb29nbGUuY29tMGgG\n"
166 "CCsGAQUFBwEBBFwwWjArBggrBgEFBQcwAoYfaHR0cDovL3BraS5nb29nbGUuY29t\n"
167 "L0dJQUcyLmNydDArBggrBgEFBQcwAYYfaHR0cDovL2NsaWVudHMxLmdvb2dsZS5j\n"
168 "b20vb2NzcDAdBgNVHQ4EFgQU0/UtToEtNIfwDwHuYGuVKcj0xK8wDAYDVR0TAQH/\n"
169 "BAIwADAfBgNVHSMEGDAWgBRK3QYWG7z2aLV29YG2u2IaulqBLzAXBgNVHSAEEDAO\n"
170 "MAwGCisGAQQB1nkCBQEwMAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL3BraS5nb29n\n"
171 "bGUuY29tL0dJQUcyLmNybDANBgkqhkiG9w0BAQUFAAOCAQEAcGNI/X9f0g+7ij0o\n"
172 "ehLpk6vxSMQGrmOZ4+PG/MC9SLClCkt7zJkfU7erZnyVXyxCpwlljq+Wk9YTPUOq\n"
173 "xD/V2ikQVSAANoxGJFO9UoL5jzWusPhKKv8CcM7fuiERz8K+CfBcqfxbgI5rH0g5\n"
174 "dYclmLC81cJ/08i+9Nltvxv69Y3hGfEICT6K+EdSxwnQzOhpMZmvxZsIj+d6CVNa\n"
175 "9ICYgUthsNQVWzrIs5wknpjjZ9liDMwJX0vu8A0rce4X/Lna5hh2bW9igz2iP5WM\n"
176 "9fuwdbTw4y3jfPQgszU4YZxWxhMzccxe058Qx1tLndAknBQEBesQjXytVQpuM1SV\n"
178 "-----END CERTIFICATE-----\n";
180 CKM::RawBuffer buffer(certPem.begin(), certPem.end());
181 auto cert = CKM::Certificate::create(buffer, CKM::DataFormat::FORM_PEM);
182 CKM::CertificateShPtr cert2;
183 CKM::Alias alias = "myCert";
186 CKM_API_SUCCESS == (temp = manager->saveCertificate(alias, cert, CKM::Policy())),
187 "Error=" << CKM::ErrorToString(temp));
189 CKM_API_SUCCESS == (temp = manager->getCertificate(alias, CKM::Password(), cert2)),
190 "Error=" << CKM::ErrorToString(temp));
192 cert->getDER() == cert2->getDER(),
193 "Data has been modified in key manager");
196 RUNNER_CHILD_TEST(T1013_user_app_save_key)
198 AccessProvider ap("mylabel");
199 ap.allowAPI("key-manager::api-storage", "rw");
200 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
202 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
203 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
204 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
205 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
206 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
207 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
208 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
210 "-----END PUBLIC KEY-----";
213 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
214 auto key = CKM::Key::create(buffer, CKM::Password());
216 CKM::Alias alias = "mykey";
217 auto manager = CKM::Manager::create();
220 CKM_API_SUCCESS == (temp = manager->saveKey(alias, key, CKM::Policy("x"))),
221 "Error=" << CKM::ErrorToString(temp));
223 CKM_API_SUCCESS == (temp = manager->getKey(alias, CKM::Password("x"), key2)),
224 "Error=" << CKM::ErrorToString(temp));
226 key->getDER() == key2->getDER(), "Key value has been changed by service");
229 RUNNER_TEST(T1014_save_with_label)
232 auto manager = CKM::Manager::create();
234 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
235 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
236 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
237 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
238 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
239 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
240 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
242 "-----END PUBLIC KEY-----";
244 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
245 auto key = CKM::Key::create(buffer, CKM::Password());
246 CKM::KeyShPtr key_name, key_full_addr;
247 CKM::Alias alias = "mykey-2";
248 CharPtr top_label = get_label();
249 std::string full_address = aliasWithLabel(top_label.get(), alias.c_str());
252 CKM_API_SUCCESS == (temp = manager->saveKey(full_address, key, CKM::Policy())),
253 "Error=" << CKM::ErrorToString(temp));
257 CKM_API_SUCCESS == (temp = manager->getKey(alias, CKM::Password(), key_name)),
258 "Error=" << CKM::ErrorToString(temp));
260 key->getDER() == key_name->getDER(),
261 "Key value has been changed by service");
263 // lookup by full address
265 CKM_API_SUCCESS == (temp = manager->getKey(full_address, CKM::Password(), key_full_addr)),
266 "Error=" << CKM::ErrorToString(temp));
268 key->getDER() == key_full_addr->getDER(),
269 "Key value has been changed by service");
272 RUNNER_TEST(T1015_deinit)
275 auto control = CKM::Control::create();
278 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
279 "Error=" << CKM::ErrorToString(temp));
281 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
282 "Error=" << CKM::ErrorToString(temp));
284 CKM_API_SUCCESS == (temp = control->lockUserKey(USER_APP)),
285 "Error=" << CKM::ErrorToString(temp));
287 CKM_API_SUCCESS == (temp = control->removeUserData(USER_APP)),
288 "Error=" << CKM::ErrorToString(temp));
291 RUNNER_TEST_GROUP_INIT(T102_CKM_QUICK_GET_ALIAS_TESTS);
293 RUNNER_TEST(T1020_init)
296 auto control = CKM::Control::create();
298 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "test-pass")),
299 "Error=" << CKM::ErrorToString(temp));
301 CKM_API_SUCCESS == (temp = control->unlockUserKey(USER_APP, "user-pass")),
302 "Error=" << CKM::ErrorToString(temp));
305 RUNNER_TEST(T1021_save_keys_get_alias)
308 auto manager = CKM::Manager::create();
310 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
311 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
312 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
313 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
314 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
315 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
316 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
318 "-----END PUBLIC KEY-----";
320 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
321 auto key = CKM::Key::create(buffer, CKM::Password());
322 CKM::AliasVector labelAliasVector;
325 CKM_API_SUCCESS == (temp = manager->saveKey("rootkey1", key, CKM::Policy())),
326 "Error=" << CKM::ErrorToString(temp));
328 CKM_API_SUCCESS == (temp = manager->saveKey("rootkey2", key, CKM::Policy())),
329 "Error=" << CKM::ErrorToString(temp));
331 CKM_API_SUCCESS == (temp = manager->saveKey("rootkey3", key, CKM::Policy(CKM::Password(), false))),
332 "Error=" << CKM::ErrorToString(temp));
334 CKM_API_SUCCESS == (temp = manager->getKeyAliasVector(labelAliasVector)),
335 "Error=" << CKM::ErrorToString(temp));
337 labelAliasVector.size() == 3,
338 "Wrong size of list: " << labelAliasVector.size() << " Expected: 3");
341 RUNNER_CHILD_TEST(T1022_app_user_save_keys_get_alias)
343 AccessProvider ap("mylabel");
344 ap.allowAPI("key-manager::api-storage", "rw");
345 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
348 auto manager = CKM::Manager::create();
350 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
351 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
352 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
353 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
354 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
355 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
356 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
358 "-----END PUBLIC KEY-----";
360 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
361 auto key = CKM::Key::create(buffer, CKM::Password());
362 CKM::AliasVector labelAliasVector;
365 CKM_API_SUCCESS == (temp = manager->saveKey("appkey1", key, CKM::Policy())),
366 "Error=" << CKM::ErrorToString(temp));
368 CKM_API_SUCCESS == (temp = manager->saveKey("appkey2", key, CKM::Policy())),
369 "Error=" << CKM::ErrorToString(temp));
371 CKM_API_SUCCESS == (temp = manager->saveKey("appkey3", key, CKM::Policy(CKM::Password(), false))),
372 "Error=" << CKM::ErrorToString(temp));
374 CKM_API_SUCCESS == (temp = manager->getKeyAliasVector(labelAliasVector)),
375 "Error=" << CKM::ErrorToString(temp));
377 labelAliasVector.size() == 3,
378 "Wrong size of list: " << labelAliasVector.size() << " Expected: 3");
381 RUNNER_CHILD_TEST(T1023_app_user_save_keys_exportable_flag)
383 AccessProvider ap("mylabel");
384 ap.allowAPI("key-manager::api-storage", "rw");
385 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
388 auto manager = CKM::Manager::create();
390 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
391 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
392 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
393 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
394 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
395 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
396 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
398 "-----END PUBLIC KEY-----";
400 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
401 auto key = CKM::Key::create(buffer, CKM::Password());
402 CKM::AliasVector aliasVector;
403 CKM::Policy notExportable(CKM::Password(), false);
406 CKM_API_SUCCESS == (temp = manager->saveKey("appkey4", key, notExportable)),
407 "Error=" << CKM::ErrorToString(temp));
409 CKM_API_ERROR_NOT_EXPORTABLE == (temp = manager->getKey("appkey4", CKM::Password(), key)),
410 "Error=" << CKM::ErrorToString(temp));
412 CKM_API_ERROR_INPUT_PARAM == (temp = manager->saveData("data3", buffer, notExportable)),
413 "Error=" << CKM::ErrorToString(temp));
416 RUNNER_TEST(T1029_deinit)
419 auto control = CKM::Control::create();
422 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
423 "Error=" << CKM::ErrorToString(temp));
425 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
426 "Error=" << CKM::ErrorToString(temp));
428 CKM_API_SUCCESS == (temp = control->lockUserKey(USER_APP)),
429 "Error=" << CKM::ErrorToString(temp));
431 CKM_API_SUCCESS == (temp = control->removeUserData(USER_APP)),
432 "Error=" << CKM::ErrorToString(temp));
435 RUNNER_TEST_GROUP_INIT(T103_CKM_QUICK_REMOVE_BIN_DATA_TEST);
437 RUNNER_TEST(T1030_init)
440 auto control = CKM::Control::create();
442 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "test-pass")),
443 "Error=" << CKM::ErrorToString(temp));
445 CKM_API_SUCCESS == (temp = control->unlockUserKey(USER_APP, "user-pass")),
446 "Error=" << CKM::ErrorToString(temp));
449 RUNNER_TEST(T1031_save_get_bin_data)
452 auto manager = CKM::Manager::create();
454 std::string binData1 = "My bin data1";
455 std::string binData2 = "My bin data2";
456 std::string binData3 = "My bin data3";
458 CKM::RawBuffer buffer1(binData1.begin(), binData1.end());
459 CKM::RawBuffer buffer2(binData2.begin(), binData2.end());
460 CKM::RawBuffer buffer3(binData3.begin(), binData3.end());
462 CKM::AliasVector labelAliasVector;
465 CKM_API_SUCCESS == (temp = manager->saveData("data1", buffer1, CKM::Policy())),
466 "Error=" << CKM::ErrorToString(temp));
468 CKM_API_SUCCESS == (temp = manager->saveData("data2", buffer2, CKM::Policy())),
469 "Error=" << CKM::ErrorToString(temp));
471 CKM_API_SUCCESS == (temp = manager->saveData("data3", buffer3, CKM::Policy(CKM::Password(), true))),
472 "Error=" << CKM::ErrorToString(temp));
474 CKM_API_ERROR_INPUT_PARAM == (temp = manager->saveData("data4", buffer3, CKM::Policy(CKM::Password(), false))),
475 "Error=" << CKM::ErrorToString(temp));
477 CKM_API_SUCCESS == (temp = manager->getDataAliasVector(labelAliasVector)),
478 "Error=" << CKM::ErrorToString(temp));
480 labelAliasVector.size() == 3,
481 "Wrong size of list: " << labelAliasVector.size() << " Expected: 3");
483 CKM::RawBuffer buffer;
485 CKM_API_SUCCESS == (temp = manager->getData("data2", CKM::Password(), buffer)),
486 "Error=" << CKM::ErrorToString(temp));
492 RUNNER_CHILD_TEST(T1032_app_user_save_bin_data)
494 AccessProvider ap("mylabel");
495 ap.allowAPI("key-manager::api-storage", "rw");
496 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
499 auto manager = CKM::Manager::create();
501 std::string binData = "My bin data";
503 CKM::RawBuffer buffer(binData.begin(), binData.end());
505 CKM::AliasVector labelAliasVector;
508 CKM_API_SUCCESS == (temp = manager->saveData("appdata1", buffer, CKM::Policy())),
509 "Error=" << CKM::ErrorToString(temp));
511 CKM_API_SUCCESS == (temp = manager->saveData("appdata2", buffer, CKM::Policy())),
512 "Error=" << CKM::ErrorToString(temp));
514 CKM_API_SUCCESS == (temp = manager->saveData("appdata3", buffer, CKM::Policy(CKM::Password(), true))),
515 "Error=" << CKM::ErrorToString(temp));
517 CKM_API_SUCCESS == (temp = manager->getDataAliasVector(labelAliasVector)),
518 "Error=" << CKM::ErrorToString(temp));
520 labelAliasVector.size() == 3,
521 "Wrong size of list: " << labelAliasVector.size() << " Expected: 3");
524 RUNNER_TEST(T1033_remove_bin_data)
527 auto manager = CKM::Manager::create();
529 std::string binData2 = "My bin data2";
530 CKM::RawBuffer buffer2(binData2.begin(), binData2.end());
532 CKM::AliasVector labelAliasVector;
534 std::string invalid_address = aliasWithLabel("i-do-not-exist", "data1");
536 CKM_API_ERROR_DB_ALIAS_UNKNOWN == (temp = manager->removeAlias(invalid_address.c_str())),
537 "Error=" << CKM::ErrorToString(temp));
539 CKM_API_SUCCESS == (temp = manager->removeAlias("data1")),
540 "Error=" << CKM::ErrorToString(temp));
542 CKM_API_SUCCESS == (temp = manager->removeAlias("data3")),
543 "Error=" << CKM::ErrorToString(temp));
545 CKM_API_SUCCESS == (temp = manager->getDataAliasVector(labelAliasVector)),
546 "Error=" << CKM::ErrorToString(temp));
548 labelAliasVector.size() == 1,
549 "Wrong size of list: " << labelAliasVector.size() << " Expected: 1");
551 CKM::RawBuffer buffer;
553 CKM_API_SUCCESS == (temp = manager->getData("data2", CKM::Password(), buffer)),
554 "Error=" << CKM::ErrorToString(temp));
559 CKM_API_ERROR_DB_ALIAS_UNKNOWN == (temp = manager->getData("data3", CKM::Password(), buffer)),
560 "Error=" << CKM::ErrorToString(temp));
563 RUNNER_TEST(T1039_deinit)
566 auto control = CKM::Control::create();
569 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
570 "Error=" << CKM::ErrorToString(temp));
572 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
573 "Error=" << CKM::ErrorToString(temp));
575 CKM_API_SUCCESS == (temp = control->lockUserKey(USER_APP)),
576 "Error=" << CKM::ErrorToString(temp));
578 CKM_API_SUCCESS == (temp = control->removeUserData(USER_APP)),
579 "Error=" << CKM::ErrorToString(temp));
582 RUNNER_TEST_GROUP_INIT(T104_CKM_QUICK_CREATE_PAIR);
584 RUNNER_TEST(T1040_init)
587 auto control = CKM::Control::create();
590 CKM_API_SUCCESS == (temp = control->unlockUserKey(USER_APP, "user-pass")),
591 "Error=" << CKM::ErrorToString(temp));
594 RUNNER_CHILD_TEST(T1041_create_rsa_key)
597 auto manager = CKM::Manager::create();
600 AccessProvider ap("mylabel-rsa");
601 ap.allowAPI("key-manager::api-storage", "rw");
602 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
605 CKM_API_SUCCESS == (temp = manager->createKeyPairRSA(2048, CKM::Alias("PRV_KEY1_RSA"), CKM::Alias("PUB_KEY1_RSA"), CKM::Policy(), CKM::Policy())),
606 "Error=" << CKM::ErrorToString(temp));
608 CKM_API_SUCCESS == (temp = manager->getKeyAliasVector(av)),
609 "Error=" << CKM::ErrorToString(temp));
611 2 == (temp = av.size()),
612 "Vector size: " << temp << ". Expected: 2");
615 RUNNER_CHILD_TEST(T1042_create_rsa_key_foreign_label)
618 auto manager = CKM::Manager::create();
621 AccessProvider ap("mylabel-rsa");
622 ap.allowAPI("key-manager::api-storage", "rw");
623 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
626 CKM_API_ERROR_ACCESS_DENIED == (temp = manager->createKeyPairRSA(2048, CKM::Alias("iamsomebodyelse PRV_KEY2_RSA"), CKM::Alias("PUB_KEY2_RSA"), CKM::Policy(), CKM::Policy())),
627 "Error=" << CKM::ErrorToString(temp));
629 CKM_API_ERROR_ACCESS_DENIED == (temp = manager->createKeyPairRSA(2048, CKM::Alias("PRV_KEY2_RSA"), CKM::Alias("iamsomebodyelse PUB_KEY2_RSA"), CKM::Policy(), CKM::Policy())),
630 "Error=" << CKM::ErrorToString(temp));
633 RUNNER_CHILD_TEST(T1043_create_dsa_key)
636 auto manager = CKM::Manager::create();
639 AccessProvider ap("mylabel-dsa");
640 ap.allowAPI("key-manager::api-storage", "rw");
641 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
644 CKM_API_SUCCESS == (temp = manager->createKeyPairDSA(1024, CKM::Alias("PRV_KEY1_DSA"), CKM::Alias("PUB_KEY1_DSA"), CKM::Policy(), CKM::Policy())),
645 "Error=" << CKM::ErrorToString(temp));
647 CKM_API_SUCCESS == (temp = manager->getKeyAliasVector(av)),
648 "Error=" << CKM::ErrorToString(temp));
650 2 == (temp = av.size()),
651 "Vector size: " << temp << ". Expected: 2");
654 RUNNER_TEST(T1049_deinit)
657 auto control = CKM::Control::create();
660 CKM_API_SUCCESS == (temp = control->lockUserKey(USER_APP)),
661 "Error=" << CKM::ErrorToString(temp));
663 CKM_API_SUCCESS == (temp = control->removeUserData(USER_APP)),
664 "Error=" << CKM::ErrorToString(temp));
668 RUNNER_TEST_GROUP_INIT(T111_CKM_CreateKeyPair);
670 RUNNER_TEST(T1110_init)
673 auto control = CKM::Control::create();
675 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "test-pass")),
676 "Error=" << CKM::ErrorToString(temp));
678 CKM_API_SUCCESS == (temp = control->unlockUserKey(USER_APP, "user-pass")),
679 "Error=" << CKM::ErrorToString(temp));
682 RUNNER_TEST(T1111_CreateKeyPairRSA)
685 auto manager = CKM::Manager::create();
686 CKM::Alias a1("rsa-test-1");
687 CKM::Alias a2("rsa-test-2");
691 CKM_API_SUCCESS == (temp = manager->createKeyPairRSA(1024, a1, a2, p1, p2)),
692 "Error=" << CKM::ErrorToString(temp));
694 CKM_API_ERROR_DB_ALIAS_EXISTS == (temp = manager->createKeyPairRSA(1024, a1, a2, p1, p2)),
695 "Error=" << CKM::ErrorToString(temp));
698 RUNNER_TEST(T1112_CreateKeyPairDSA)
701 auto manager = CKM::Manager::create();
702 CKM::Alias a1("dsa-test-1");
703 CKM::Alias a2("dsa-test-2");
707 CKM_API_SUCCESS == (temp = manager->createKeyPairDSA(1024, a1, a2, p1, p2)),
708 "Error=" << CKM::ErrorToString(temp));
710 CKM_API_ERROR_DB_ALIAS_EXISTS == (temp = manager->createKeyPairDSA(1024, a1, a2, p1, p2)),
711 "Error=" << CKM::ErrorToString(temp));
714 RUNNER_TEST(T1113_CreateKeyPairECDSA)
717 auto manager = CKM::Manager::create();
718 CKM::Alias a1("ecdsa-test-1");
719 CKM::Alias a2("ecdsa-test-2");
723 CKM_API_SUCCESS == (temp = manager->createKeyPairECDSA(CKM::ElipticCurve::prime192v1, a1, a2, p1, p2)),
724 "Error=" << CKM::ErrorToString(temp));
727 RUNNER_TEST(T1114_deinit)
730 auto control = CKM::Control::create();
733 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
734 "Error=" << CKM::ErrorToString(temp));
736 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
737 "Error=" << CKM::ErrorToString(temp));
740 RUNNER_TEST_GROUP_INIT(T120_NEGATIVE_TESTS);
742 RUNNER_TEST(T12100_init)
745 auto control = CKM::Control::create();
747 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "test-pass")),
748 "Error=" << CKM::ErrorToString(temp));
750 CKM_API_SUCCESS == (temp = control->unlockUserKey(USER_APP, "user-pass")),
751 "Error=" << CKM::ErrorToString(temp));
754 RUNNER_TEST(T12101_key_exist)
757 auto manager = CKM::Manager::create();
759 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
760 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
761 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
762 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
763 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
764 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
765 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
767 "-----END PUBLIC KEY-----";
769 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
770 auto key = CKM::Key::create(buffer);
771 CKM::Alias alias = "rsa-alias-duplication";
774 CKM_API_SUCCESS == (ret = manager->saveKey(alias, key, CKM::Policy())),
775 "Error=" << CKM::ErrorToString(ret));
777 CKM_API_ERROR_DB_ALIAS_EXISTS == (ret = manager->saveKey(alias, key, CKM::Policy())),
778 "Error=" << CKM::ErrorToString(ret));
782 * These test cases tests API when empty parameters are passed to functions
785 RUNNER_TEST(T12102_saveKey_empty_alias)
787 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
788 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
789 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
790 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLc\n"
791 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
792 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
793 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
794 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
796 "-----END PUBLIC KEY-----";
798 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
799 auto key = CKM::Key::create(buffer);
800 CKM::Alias alias; //alias is not initialized
803 auto manager = CKM::Manager::create();
805 CKM_API_ERROR_INPUT_PARAM == (ret = manager->saveKey(alias, key, CKM::Policy())),
806 "Error=" << CKM::ErrorToString(ret));
809 RUNNER_TEST(T12103_saveKey_foreign_label)
811 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
812 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
813 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
814 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
815 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
816 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
817 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
819 "-----END PUBLIC KEY-----";
821 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
822 auto key = CKM::Key::create(buffer);
823 CKM::Alias alias = "iamsomebodyelse alias";
826 auto manager = CKM::Manager::create();
828 CKM_API_ERROR_ACCESS_DENIED == (ret = manager->saveKey(alias, key, CKM::Policy())),
829 "Error=" << CKM::ErrorToString(ret));
832 RUNNER_TEST(T12104_saveKey_empty_key)
834 CKM::KeyShPtr key; //key is not initialized
835 CKM::Alias alias = "empty-key";
838 auto manager = CKM::Manager::create();
840 CKM_API_ERROR_INPUT_PARAM == (ret = manager->saveKey(alias, key, CKM::Policy())),
841 "Error=" << CKM::ErrorToString(ret));
844 RUNNER_TEST(T12105_saveCertificate_empty_alias)
846 std::string certPem =
847 "-----BEGIN CERTIFICATE-----\n"
848 "MIIEgDCCA2igAwIBAgIIcjtBYJGQtOAwDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UE\n"
849 "BhMCVVMxEzARBgNVBAoTCkdvb2dsZSBJbmMxJTAjBgNVBAMTHEdvb2dsZSBJbnRl\n"
850 "cm5ldCBBdXRob3JpdHkgRzIwHhcNMTQwNTIyMTEyOTQyWhcNMTQwODIwMDAwMDAw\n"
851 "WjBtMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwN\n"
852 "TW91bnRhaW4gVmlldzETMBEGA1UECgwKR29vZ2xlIEluYzEcMBoGA1UEAwwTYWNj\n"
853 "b3VudHMuZ29vZ2xlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB\n"
854 "ALtlLWVWPN3q3bSEQl1Z97gPdgl5vbgJOZSAr0ZY0tJCuFLBbUKetJWryyE+5KpG\n"
855 "gMMpLS4v8/bvXaZc6mAs+RfAqGM24C3vQg5hPnj4dflnhL0WiOCZBurm1tV4oexk\n"
856 "HLXs3jr/jpnb738AQpj8zZ9a4VEBuHJRZALnWZ/XhqU+dvYomAoRQNuL5OhkT7uu\n"
857 "d0NKJL9JjYLyQglGgE2sVsWv2kj7EO/P9Q6NEKt9BGmhMsFvtfeKUaymynaxpR1g\n"
858 "wEPlqYvB38goh1dIOgVLT0OVyLImeg5Mdwar/8c1U0OYhLOc6PJapOZAfUkE+3+w\n"
859 "xYt8AChLN1b5szOwInrCVpECAwEAAaOCAUYwggFCMB0GA1UdJQQWMBQGCCsGAQUF\n"
860 "BwMBBggrBgEFBQcDAjAeBgNVHREEFzAVghNhY2NvdW50cy5nb29nbGUuY29tMGgG\n"
861 "CCsGAQUFBwEBBFwwWjArBggrBgEFBQcwAoYfaHR0cDovL3BraS5nb29nbGUuY29t\n"
862 "L0dJQUcyLmNydDArBggrBgEFBQcwAYYfaHR0cDovL2NsaWVudHMxLmdvb2dsZS5j\n"
863 "b20vb2NzcDAdBgNVHQ4EFgQU0/UtToEtNIfwDwHuYGuVKcj0xK8wDAYDVR0TAQH/\n"
864 "BAIwADAfBgNVHSMEGDAWgBRK3QYWG7z2aLV29YG2u2IaulqBLzAXBgNVHSAEEDAO\n"
865 "MAwGCisGAQQB1nkCBQEwMAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL3BraS5nb29n\n"
866 "bGUuY29tL0dJQUcyLmNybDANBgkqhkiG9w0BAQUFAAOCAQEAcGNI/X9f0g+7ij0o\n"
867 "ehLpk6vxSMQGrmOZ4+PG/MC9SLClCkt7zJkfU7erZnyVXyxCpwlljq+Wk9YTPUOq\n"
868 "xD/V2ikQVSAANoxGJFO9UoL5jzWusPhKKv8CcM7fuiERz8K+CfBcqfxbgI5rH0g5\n"
869 "dYclmLC81cJ/08i+9Nltvxv69Y3hGfEICT6K+EdSxwnQzOhpMZmvxZsIj+d6CVNa\n"
870 "9ICYgUthsNQVWzrIs5wknpjjZ9liDMwJX0vu8A0rce4X/Lna5hh2bW9igz2iP5WM\n"
871 "9fuwdbTw4y3jfPQgszU4YZxWxhMzccxe058Qx1tLndAknBQEBesQjXytVQpuM1SV\n"
873 "-----END CERTIFICATE-----\n";
875 CKM::RawBuffer buffer(certPem.begin(), certPem.end());
876 auto cert = CKM::Certificate::create(buffer, CKM::DataFormat::FORM_PEM);
877 CKM::Alias alias; //alias is not initialized
880 auto manager = CKM::Manager::create();
882 CKM_API_ERROR_INPUT_PARAM == (temp = manager->saveCertificate(alias, cert, CKM::Policy())),
883 "Error=" << CKM::ErrorToString(temp));
886 RUNNER_TEST(T12106_saveCertificate_foreign_label)
888 std::string certPem =
889 "-----BEGIN CERTIFICATE-----\n"
890 "MIIEgDCCA2igAwIBAgIIcjtBYJGQtOAwDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UE\n"
891 "BhMCVVMxEzARBgNVBAoTCkdvb2dsZSBJbmMxJTAjBgNVBAMTHEdvb2dsZSBJbnRl\n"
892 "cm5ldCBBdXRob3JpdHkgRzIwHhcNMTQwNTIyMTEyOTQyWhcNMTQwODIwMDAwMDAw\n"
893 "WjBtMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwN\n"
894 "TW91bnRhaW4gVmlldzETMBEGA1UECgwKR29vZ2xlIEluYzEcMBoGA1UEAwwTYWNj\n"
895 "b3VudHMuZ29vZ2xlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB\n"
896 "ALtlLWVWPN3q3bSEQl1Z97gPdgl5vbgJOZSAr0ZY0tJCuFLBbUKetJWryyE+5KpG\n"
897 "gMMpLS4v8/bvXaZc6mAs+RfAqGM24C3vQg5hPnj4dflnhL0WiOCZBurm1tV4oexk\n"
898 "HLXs3jr/jpnb738AQpj8zZ9a4VEBuHJRZALnWZ/XhqU+dvYomAoRQNuL5OhkT7uu\n"
899 "d0NKJL9JjYLyQglGgE2sVsWv2kj7EO/P9Q6NEKt9BGmhMsFvtfeKUaymynaxpR1g\n"
900 "wEPlqYvB38goh1dIOgVLT0OVyLImeg5Mdwar/8c1U0OYhLOc6PJapOZAfUkE+3+w\n"
901 "xYt8AChLN1b5szOwInrCVpECAwEAAaOCAUYwggFCMB0GA1UdJQQWMBQGCCsGAQUF\n"
902 "BwMBBggrBgEFBQcDAjAeBgNVHREEFzAVghNhY2NvdW50cy5nb29nbGUuY29tMGgG\n"
903 "CCsGAQUFBwEBBFwwWjArBggrBgEFBQcwAoYfaHR0cDovL3BraS5nb29nbGUuY29t\n"
904 "L0dJQUcyLmNydDArBggrBgEFBQcwAYYfaHR0cDovL2NsaWVudHMxLmdvb2dsZS5j\n"
905 "b20vb2NzcDAdBgNVHQ4EFgQU0/UtToEtNIfwDwHuYGuVKcj0xK8wDAYDVR0TAQH/\n"
906 "BAIwADAfBgNVHSMEGDAWgBRK3QYWG7z2aLV29YG2u2IaulqBLzAXBgNVHSAEEDAO\n"
907 "MAwGCisGAQQB1nkCBQEwMAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL3BraS5nb29n\n"
908 "bGUuY29tL0dJQUcyLmNybDANBgkqhkiG9w0BAQUFAAOCAQEAcGNI/X9f0g+7ij0o\n"
909 "ehLpk6vxSMQGrmOZ4+PG/MC9SLClCkt7zJkfU7erZnyVXyxCpwlljq+Wk9YTPUOq\n"
910 "xD/V2ikQVSAANoxGJFO9UoL5jzWusPhKKv8CcM7fuiERz8K+CfBcqfxbgI5rH0g5\n"
911 "dYclmLC81cJ/08i+9Nltvxv69Y3hGfEICT6K+EdSxwnQzOhpMZmvxZsIj+d6CVNa\n"
912 "9ICYgUthsNQVWzrIs5wknpjjZ9liDMwJX0vu8A0rce4X/Lna5hh2bW9igz2iP5WM\n"
913 "9fuwdbTw4y3jfPQgszU4YZxWxhMzccxe058Qx1tLndAknBQEBesQjXytVQpuM1SV\n"
915 "-----END CERTIFICATE-----\n";
917 CKM::RawBuffer buffer(certPem.begin(), certPem.end());
918 auto cert = CKM::Certificate::create(buffer, CKM::DataFormat::FORM_PEM);
919 CKM::Alias alias = "iamsomebodyelse alias";
922 auto manager = CKM::Manager::create();
924 CKM_API_ERROR_ACCESS_DENIED == (temp = manager->saveCertificate(alias, cert, CKM::Policy())),
925 "Error=" << CKM::ErrorToString(temp));
928 RUNNER_TEST(T12107_saveCertificate_empty_cert)
930 CKM::CertificateShPtr cert; //cert is not initialized
931 CKM::Alias alias = "empty-cert";
934 auto manager = CKM::Manager::create();
936 CKM_API_ERROR_INPUT_PARAM == (temp = manager->saveCertificate(alias, cert, CKM::Policy())),
937 "Error=" << CKM::ErrorToString(temp));
940 RUNNER_TEST(T12108_saveData_empty_alias)
942 std::string testData = "test data test data test data";
943 CKM::RawBuffer buffer(testData.begin(), testData.end());
947 auto manager = CKM::Manager::create();
949 CKM_API_ERROR_INPUT_PARAM == (temp = manager->saveData(alias, buffer, CKM::Policy())),
950 "Error=" << CKM::ErrorToString(temp));
953 RUNNER_TEST(T12109_saveData_foreign_label)
955 std::string testData = "test data test data test data";
956 CKM::RawBuffer buffer(testData.begin(), testData.end());
957 CKM::Alias alias = "iamsomebodyelse alias";
960 auto manager = CKM::Manager::create();
962 CKM_API_ERROR_ACCESS_DENIED == (temp = manager->saveData(alias, buffer, CKM::Policy())),
963 "Error=" << CKM::ErrorToString(temp));
966 RUNNER_TEST(T12110_saveData_empty_data)
968 CKM::RawBuffer buffer;
969 CKM::Alias alias = "empty-data";
972 auto manager = CKM::Manager::create();
974 CKM_API_ERROR_INPUT_PARAM == (temp = manager->saveData(alias, buffer, CKM::Policy())),
975 "Error=" << CKM::ErrorToString(temp));
979 * These test cases tests API when trying to get data from not existing alias
982 RUNNER_TEST(T12111_getKey_alias_not_exist)
985 CKM::Alias alias = "this-alias-not-exist";
988 auto manager = CKM::Manager::create();
990 CKM_API_ERROR_DB_ALIAS_UNKNOWN == (temp = manager->getKey(alias, "", key)),
991 "Error=" << CKM::ErrorToString(temp));
994 RUNNER_TEST(T12112_getCertificate_alias_not_exist)
996 CKM::CertificateShPtr certificate;
997 CKM::Alias alias = "this-alias-not-exist";
1000 auto manager = CKM::Manager::create();
1002 CKM_API_ERROR_DB_ALIAS_UNKNOWN == (temp = manager->getCertificate(alias, CKM::Password(), certificate)),
1003 "Error=" << CKM::ErrorToString(temp));
1006 RUNNER_TEST(T12113_getData_alias_not_exist)
1009 auto manager = CKM::Manager::create();
1010 CKM::RawBuffer buffer;
1011 CKM::Alias alias("some alias");
1013 CKM_API_ERROR_DB_ALIAS_UNKNOWN == (temp = manager->getData(alias, "", buffer)),
1014 "Error=" << CKM::ErrorToString(temp));
1018 * These test cases tests API when damaged keys are used
1020 RUNNER_TEST(T12114_rsa_key_damaged)
1023 auto manager = CKM::Manager::create();
1025 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
1026 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
1027 // "BROKENBROKENBROKENBROKENBROKENTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT\n"
1028 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
1029 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
1030 // "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
1031 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
1033 "-----END PUBLIC KEY-----";
1035 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
1036 auto key = CKM::Key::create(buffer);
1037 CKM::Alias alias = "damaged-rsa";
1040 NULL == key.get(), "Key is broken. It should be empty");
1043 CKM_API_ERROR_INPUT_PARAM == (ret = manager->saveKey(alias, key, CKM::Policy())),
1044 "Error=" << CKM::ErrorToString(ret));
1047 RUNNER_TEST(T12115_rsa_key_too_short)
1050 auto manager = CKM::Manager::create();
1052 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
1053 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
1054 //"T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
1055 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
1056 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
1057 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
1058 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
1060 "-----END PUBLIC KEY-----";
1062 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
1063 auto key = CKM::Key::create(buffer);
1064 CKM::Alias alias = "short-rsa";
1067 CKM_API_ERROR_INPUT_PARAM == (ret = manager->saveKey(alias, key, CKM::Policy())),
1068 "Error=" << CKM::ErrorToString(ret));
1071 RUNNER_TEST(T12116_dsa_key_too_short)
1074 auto manager = CKM::Manager::create();
1076 const std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
1077 "MIIBtzCCASwGByqGSM44BAEwggEfAoGBALeveaD/EheW+ws1YuW77f344+brkEzm\n"
1078 "BVfFYHr7t+jwu6nQe341SoESJG+PCgrrhy76KNDCfveiwEoWufVHnI4bYBU/ClzP\n"
1079 //"A3amf6c5yud45ZR/b6OiAuew6ohY0mQGnzqeio8BaCsZaJ6EziCSlkdIDJisSfPg\n"
1080 "nlWHqf4AwHVdAhUA7I1JQ7sBFJ+N19w3Omu+aO8EG08CgYEAldagy/Ccxhh43cZu\n"
1081 //"AZQxgJLCcp1jg6NdPMdkZ2TcSijvaVxBu+gjEGOqN5Os2V6UF7S/k/rjHYmcX9ux\n"
1082 "gpjkC31yTNrKyERIAFIYZtG2K7LVBUZq5Fgm7I83QBVchJ2PA7mBaugJFEhNjbhK\n"
1083 "NRip5UH38le1YDZ/IiA+svFOpeoDgYQAAoGAPT91aEgwFdulzmHlvr3k+GBCE9z+\n"
1084 "hq0c3FGUCtGbVOqg2KPqMBgwSb4MC0msQys4DTVZhLJI+C5eIPEHgfBMqY1ZNJdO\n"
1085 "OSCQciDXnRfSqKbT6tjDTgR5jmh5bG1Q8QFeBTHCDsQHoQYWgx0nyu12lASN80rC\n"
1086 "YMYCBhubtrVaLmc=\n"
1087 "-----END PUBLIC KEY-----";
1089 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
1090 auto key = CKM::Key::create(buffer);
1091 CKM::Alias alias = "short-dsa";
1094 CKM_API_ERROR_INPUT_PARAM == (ret = manager->saveKey(alias, key, CKM::Policy())),
1095 "Error=" << CKM::ErrorToString(ret));
1100 * These test cases tests CKM service if malicious data is provided over the socket.
1103 RUNNER_TEST(T12117_rsa_key_damaged_serviceTest)
1106 auto manager = CKM::Manager::create();
1108 // fake the client - let the service detect the problem
1109 class WrongKeyImpl : public CKM::Key
1112 WrongKeyImpl(CKM::RawBuffer & dummy_content) : m_dummy(dummy_content) {
1115 virtual bool empty() const {
1119 virtual CKM::KeyType getType() const {
1120 return CKM::KeyType::KEY_RSA_PUBLIC;
1122 virtual int getSize() const {
1125 virtual CKM::ElipticCurve getCurve() const {
1126 return CKM::ElipticCurve::prime192v1;
1128 virtual CKM::RawBuffer getDER() const {
1131 virtual ~WrongKeyImpl() {}
1133 CKM::RawBuffer & m_dummy;
1135 std::string dummyData = "my_cat_Berta\n";
1136 CKM::RawBuffer buffer(dummyData.begin(), dummyData.end());
1137 auto key = std::make_shared<WrongKeyImpl>(buffer);
1138 CKM::Alias alias = "damaged-rsa";
1141 CKM_API_ERROR_INPUT_PARAM == (ret = manager->saveKey(alias, key, CKM::Policy())),
1142 "Error=" << CKM::ErrorToString(ret));
1145 RUNNER_TEST(T12118_saveCertificate_damaged_serviceTest)
1147 // fake the client - let the service detect the problem
1148 class WrongCertImpl : public CKM::Certificate
1151 WrongCertImpl(CKM::RawBuffer & dummy_content) : m_dummy(dummy_content) {
1152 m_x509 = X509_new();
1155 bool empty() const {
1159 virtual X509 *getX509() const {
1163 virtual CKM::RawBuffer getDER() const {
1167 virtual ~WrongCertImpl() {
1172 CKM::RawBuffer & m_dummy;
1174 std::string dummyData = "my_cat_Stefan\n";
1175 CKM::RawBuffer buffer(dummyData.begin(), dummyData.end());
1176 auto cert = std::make_shared<WrongCertImpl>(buffer);
1177 CKM::Alias alias = "damaged-cert";
1180 auto manager = CKM::Manager::create();
1182 CKM_API_ERROR_INPUT_PARAM == (temp = manager->saveCertificate(alias, cert, CKM::Policy())),
1183 "Error=" << CKM::ErrorToString(temp));
1186 RUNNER_TEST(T12119_deinit)
1189 auto control = CKM::Control::create();
1192 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
1193 "Error=" << CKM::ErrorToString(temp));
1195 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
1196 "Error=" << CKM::ErrorToString(temp));
1199 RUNNER_TEST_GROUP_INIT(T131_CKM_QUICK_SET_GET_TESTS);
1201 RUNNER_TEST(T1311_init)
1204 auto control = CKM::Control::create();
1206 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "test-pass")),
1207 "Error=" << CKM::ErrorToString(temp));
1208 RUNNER_ASSERT_MSG(time(0) > 1405343457,
1209 "Time error. Device date is before 14th of July 2014. You must set proper time on device before run this tests!");
1211 struct hostent* he = gethostbyname("google.com");
1213 RUNNER_ASSERT_MSG(he != NULL, "There is problem with translate domain google.com into ip address. Probably network "
1214 "is not woking on the device. OCSP tests requires network access!");
1217 RUNNER_TEST(T1312_get_chain)
1219 std::string ee = "-----BEGIN CERTIFICATE-----\n"
1220 "MIIF0TCCBLmgAwIBAgIQaPGTP4aS7Ut/WDNaBzdQrDANBgkqhkiG9w0BAQUFADCB\n"
1221 "ujELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
1222 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n"
1223 "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMr\n"
1224 "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTAeFw0x\n"
1225 "NDAyMjAwMDAwMDBaFw0xNTAyMjAyMzU5NTlaMIHmMRMwEQYLKwYBBAGCNzwCAQMT\n"
1226 "AlBMMR0wGwYDVQQPExRQcml2YXRlIE9yZ2FuaXphdGlvbjETMBEGA1UEBRMKMDAw\n"
1227 "MDAyNTIzNzELMAkGA1UEBhMCUEwxDzANBgNVBBEUBjAwLTk1MDEUMBIGA1UECBML\n"
1228 "bWF6b3dpZWNraWUxETAPBgNVBAcUCFdhcnN6YXdhMRYwFAYDVQQJFA1TZW5hdG9y\n"
1229 "c2thIDE4MRMwEQYDVQQKFAptQmFuayBTLkEuMQwwCgYDVQQLFANESU4xGTAXBgNV\n"
1230 "BAMUEHd3dy5tYmFuay5jb20ucGwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n"
1231 "AoIBAQDph6x8V6xUW/+651+qHF+UmorH9uaz2ZrX2bIWiMKIJFmpDDHlxcapKkqE\n"
1232 "BV04is83aiCpqKtc2ZHy2g4Hpj1eSF5BP2+OAlo0YUQZPIeRRdiMjmeAxw/ncBDx\n"
1233 "9rQBuCJ4XTD6cqQox5SI0TASOZ+wyAEjbDRXzL73XqRAFZ1LOpb2ONkolS+RutMB\n"
1234 "vshvCsWPeNe7eGLuOh6DyC6r1vX9xhw3xnjM2mTSvmtimgzSLacNGKqRrsucUgcb\n"
1235 "0+O5C2jZAtAMLyZksL92cxmWbtVzUYzem4chjHu5cRxUlPNzUJWrrczueB7Ip4A8\n"
1236 "aQuFMfNXYc0x+WLWjy//urypMKjhAgMBAAGjggGjMIIBnzAbBgNVHREEFDASghB3\n"
1237 "d3cubWJhbmsuY29tLnBsMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgWgMB0GA1Ud\n"
1238 "JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBEBgNVHSAEPTA7MDkGC2CGSAGG+EUB\n"
1239 "BxcGMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9jcHMw\n"
1240 "HQYDVR0OBBYEFN37iGaS7mZnENxZ9FGqNLR+QgoMMB8GA1UdIwQYMBaAFPyKULqe\n"
1241 "uSVae1WFT5UAY4/pWGtDMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9FVlNlY3Vy\n"
1242 "ZS1jcmwudmVyaXNpZ24uY29tL0VWU2VjdXJlMjAwNi5jcmwwfAYIKwYBBQUHAQEE\n"
1243 "cDBuMC0GCCsGAQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC52ZXJpc2lnbi5j\n"
1244 "b20wPQYIKwYBBQUHMAKGMWh0dHA6Ly9FVlNlY3VyZS1haWEudmVyaXNpZ24uY29t\n"
1245 "L0VWU2VjdXJlMjAwNi5jZXIwDQYJKoZIhvcNAQEFBQADggEBAD0wO+rooUrIM4qp\n"
1246 "PHhp+hkXK6WMQ2qzGOmbMcZjw0govg5vkzkefPDryIXXbrF8mRagiJNMSfNaWWeh\n"
1247 "Cj41OV24EdUl0OLbFxNzcvub599zRs/apfaRLTfsmlmOgi0/YP305i+3tJ2ll946\n"
1248 "P+qV1wXnXqTqEdIl4Ys3+1HmDCdTB1hoDwAAzqRVUXZ5+iiwPAU7R/LTHfMjV1ke\n"
1249 "8jtNFfrorlZMCfVH/7eEnHJvVjOJt+YFe4aFMzE+DfuYIK7MH+olC2v79kBwbnEQ\n"
1250 "fvHMA9gFwOYLUBBdSfcocp8EKZ+mRlNPGR/3LBrPeaQQ0GZEkxzRK+v/aNTuiYfr\n"
1252 "-----END CERTIFICATE-----\n";
1255 "-----BEGIN CERTIFICATE-----\n"
1256 "MIIF5DCCBMygAwIBAgIQW3dZxheE4V7HJ8AylSkoazANBgkqhkiG9w0BAQUFADCB\n"
1257 "yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
1258 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\n"
1259 "U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\n"
1260 "ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\n"
1261 "aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMTYxMTA3MjM1OTU5WjCBujEL\n"
1262 "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\n"
1263 "ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg\n"
1264 "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMrVmVy\n"
1265 "aVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTCCASIwDQYJ\n"
1266 "KoZIhvcNAQEBBQADggEPADCCAQoCggEBAJjboFXrnP0XeeOabhQdsVuYI4cWbod2\n"
1267 "nLU4O7WgerQHYwkZ5iqISKnnnbYwWgiXDOyq5BZpcmIjmvt6VCiYxQwtt9citsj5\n"
1268 "OBfH3doxRpqUFI6e7nigtyLUSVSXTeV0W5K87Gws3+fBthsaVWtmCAN/Ra+aM/EQ\n"
1269 "wGyZSpIkMQht3QI+YXZ4eLbtfjeubPOJ4bfh3BXMt1afgKCxBX9ONxX/ty8ejwY4\n"
1270 "P1C3aSijtWZfNhpSSENmUt+ikk/TGGC+4+peGXEFv54cbGhyJW+ze3PJbb0S/5tB\n"
1271 "Ml706H7FC6NMZNFOvCYIZfsZl1h44TO/7Wg+sSdFb8Di7Jdp91zT91ECAwEAAaOC\n"
1272 "AdIwggHOMB0GA1UdDgQWBBT8ilC6nrklWntVhU+VAGOP6VhrQzASBgNVHRMBAf8E\n"
1273 "CDAGAQH/AgEAMD0GA1UdIAQ2MDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRw\n"
1274 "czovL3d3dy52ZXJpc2lnbi5jb20vY3BzMD0GA1UdHwQ2MDQwMqAwoC6GLGh0dHA6\n"
1275 "Ly9FVlNlY3VyZS1jcmwudmVyaXNpZ24uY29tL3BjYTMtZzUuY3JsMA4GA1UdDwEB\n"
1276 "/wQEAwIBBjARBglghkgBhvhCAQEEBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZ\n"
1277 "MFcwVRYJaW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7\n"
1278 "GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwKQYDVR0R\n"
1279 "BCIwIKQeMBwxGjAYBgNVBAMTEUNsYXNzM0NBMjA0OC0xLTQ3MD0GCCsGAQUFBwEB\n"
1280 "BDEwLzAtBggrBgEFBQcwAYYhaHR0cDovL0VWU2VjdXJlLW9jc3AudmVyaXNpZ24u\n"
1281 "Y29tMB8GA1UdIwQYMBaAFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqGSIb3DQEB\n"
1282 "BQUAA4IBAQCWovp/5j3t1CvOtxU/wHIDX4u6FpAl98KD2Md1NGNoElMMU4l7yVYJ\n"
1283 "p8M2RE4O0GJis4b66KGbNGeNUyIXPv2s7mcuQ+JdfzOE8qJwwG6Cl8A0/SXGI3/t\n"
1284 "5rDFV0OEst4t8dD2SB8UcVeyrDHhlyQjyRNddOVG7wl8nuGZMQoIeRuPcZ8XZsg4\n"
1285 "z+6Ml7YGuXNG5NOUweVgtSV1LdlpMezNlsOjdv3odESsErlNv1HoudRETifLriDR\n"
1286 "fip8tmNHnna6l9AW5wtsbfdDbzMLKTB3+p359U64drPNGLT5IO892+bKrZvQTtKH\n"
1287 "qQ2mRHNQ3XBb7a1+Srwi1agm5MKFIA3Z\n"
1288 "-----END CERTIFICATE-----\n";
1290 auto cert = CKM::Certificate::create(CKM::RawBuffer(ee.begin(), ee.end()), CKM::DataFormat::FORM_PEM);
1291 auto cert1 = CKM::Certificate::create(CKM::RawBuffer(im.begin(), im.end()), CKM::DataFormat::FORM_PEM);
1292 CKM::CertificateShPtrVector certVector = {cert1};
1293 CKM::CertificateShPtrVector certChain;
1296 auto manager = CKM::Manager::create();
1298 RUNNER_ASSERT_MSG(NULL != cert.get(), "Certificate should not be empty");
1299 RUNNER_ASSERT_MSG(false != cert1.get(), "Certificate should not be empty");
1302 CKM_API_ERROR_VERIFICATION_FAILED == (tmp = manager->getCertificateChain(cert, CKM::CertificateShPtrVector(), certChain)),
1303 "Error=" << CKM::ErrorToString(tmp));
1306 0 == certChain.size(),
1307 "Wrong size of certificate chain.");
1310 CKM_API_SUCCESS == (tmp = manager->getCertificateChain(cert, certVector, certChain)),
1311 "Error=" << CKM::ErrorToString(tmp));
1314 3 == certChain.size(),
1315 "Wrong size of certificate chain.");
1318 RUNNER_TEST(T1313_get_chain_with_alias)
1320 std::string ee = "-----BEGIN CERTIFICATE-----\n"
1321 "MIIF0TCCBLmgAwIBAgIQaPGTP4aS7Ut/WDNaBzdQrDANBgkqhkiG9w0BAQUFADCB\n"
1322 "ujELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
1323 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n"
1324 "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMr\n"
1325 "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTAeFw0x\n"
1326 "NDAyMjAwMDAwMDBaFw0xNTAyMjAyMzU5NTlaMIHmMRMwEQYLKwYBBAGCNzwCAQMT\n"
1327 "AlBMMR0wGwYDVQQPExRQcml2YXRlIE9yZ2FuaXphdGlvbjETMBEGA1UEBRMKMDAw\n"
1328 "MDAyNTIzNzELMAkGA1UEBhMCUEwxDzANBgNVBBEUBjAwLTk1MDEUMBIGA1UECBML\n"
1329 "bWF6b3dpZWNraWUxETAPBgNVBAcUCFdhcnN6YXdhMRYwFAYDVQQJFA1TZW5hdG9y\n"
1330 "c2thIDE4MRMwEQYDVQQKFAptQmFuayBTLkEuMQwwCgYDVQQLFANESU4xGTAXBgNV\n"
1331 "BAMUEHd3dy5tYmFuay5jb20ucGwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n"
1332 "AoIBAQDph6x8V6xUW/+651+qHF+UmorH9uaz2ZrX2bIWiMKIJFmpDDHlxcapKkqE\n"
1333 "BV04is83aiCpqKtc2ZHy2g4Hpj1eSF5BP2+OAlo0YUQZPIeRRdiMjmeAxw/ncBDx\n"
1334 "9rQBuCJ4XTD6cqQox5SI0TASOZ+wyAEjbDRXzL73XqRAFZ1LOpb2ONkolS+RutMB\n"
1335 "vshvCsWPeNe7eGLuOh6DyC6r1vX9xhw3xnjM2mTSvmtimgzSLacNGKqRrsucUgcb\n"
1336 "0+O5C2jZAtAMLyZksL92cxmWbtVzUYzem4chjHu5cRxUlPNzUJWrrczueB7Ip4A8\n"
1337 "aQuFMfNXYc0x+WLWjy//urypMKjhAgMBAAGjggGjMIIBnzAbBgNVHREEFDASghB3\n"
1338 "d3cubWJhbmsuY29tLnBsMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgWgMB0GA1Ud\n"
1339 "JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBEBgNVHSAEPTA7MDkGC2CGSAGG+EUB\n"
1340 "BxcGMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9jcHMw\n"
1341 "HQYDVR0OBBYEFN37iGaS7mZnENxZ9FGqNLR+QgoMMB8GA1UdIwQYMBaAFPyKULqe\n"
1342 "uSVae1WFT5UAY4/pWGtDMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9FVlNlY3Vy\n"
1343 "ZS1jcmwudmVyaXNpZ24uY29tL0VWU2VjdXJlMjAwNi5jcmwwfAYIKwYBBQUHAQEE\n"
1344 "cDBuMC0GCCsGAQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC52ZXJpc2lnbi5j\n"
1345 "b20wPQYIKwYBBQUHMAKGMWh0dHA6Ly9FVlNlY3VyZS1haWEudmVyaXNpZ24uY29t\n"
1346 "L0VWU2VjdXJlMjAwNi5jZXIwDQYJKoZIhvcNAQEFBQADggEBAD0wO+rooUrIM4qp\n"
1347 "PHhp+hkXK6WMQ2qzGOmbMcZjw0govg5vkzkefPDryIXXbrF8mRagiJNMSfNaWWeh\n"
1348 "Cj41OV24EdUl0OLbFxNzcvub599zRs/apfaRLTfsmlmOgi0/YP305i+3tJ2ll946\n"
1349 "P+qV1wXnXqTqEdIl4Ys3+1HmDCdTB1hoDwAAzqRVUXZ5+iiwPAU7R/LTHfMjV1ke\n"
1350 "8jtNFfrorlZMCfVH/7eEnHJvVjOJt+YFe4aFMzE+DfuYIK7MH+olC2v79kBwbnEQ\n"
1351 "fvHMA9gFwOYLUBBdSfcocp8EKZ+mRlNPGR/3LBrPeaQQ0GZEkxzRK+v/aNTuiYfr\n"
1353 "-----END CERTIFICATE-----\n";
1356 "-----BEGIN CERTIFICATE-----\n"
1357 "MIIF5DCCBMygAwIBAgIQW3dZxheE4V7HJ8AylSkoazANBgkqhkiG9w0BAQUFADCB\n"
1358 "yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
1359 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\n"
1360 "U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\n"
1361 "ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\n"
1362 "aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMTYxMTA3MjM1OTU5WjCBujEL\n"
1363 "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\n"
1364 "ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg\n"
1365 "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMrVmVy\n"
1366 "aVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTCCASIwDQYJ\n"
1367 "KoZIhvcNAQEBBQADggEPADCCAQoCggEBAJjboFXrnP0XeeOabhQdsVuYI4cWbod2\n"
1368 "nLU4O7WgerQHYwkZ5iqISKnnnbYwWgiXDOyq5BZpcmIjmvt6VCiYxQwtt9citsj5\n"
1369 "OBfH3doxRpqUFI6e7nigtyLUSVSXTeV0W5K87Gws3+fBthsaVWtmCAN/Ra+aM/EQ\n"
1370 "wGyZSpIkMQht3QI+YXZ4eLbtfjeubPOJ4bfh3BXMt1afgKCxBX9ONxX/ty8ejwY4\n"
1371 "P1C3aSijtWZfNhpSSENmUt+ikk/TGGC+4+peGXEFv54cbGhyJW+ze3PJbb0S/5tB\n"
1372 "Ml706H7FC6NMZNFOvCYIZfsZl1h44TO/7Wg+sSdFb8Di7Jdp91zT91ECAwEAAaOC\n"
1373 "AdIwggHOMB0GA1UdDgQWBBT8ilC6nrklWntVhU+VAGOP6VhrQzASBgNVHRMBAf8E\n"
1374 "CDAGAQH/AgEAMD0GA1UdIAQ2MDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRw\n"
1375 "czovL3d3dy52ZXJpc2lnbi5jb20vY3BzMD0GA1UdHwQ2MDQwMqAwoC6GLGh0dHA6\n"
1376 "Ly9FVlNlY3VyZS1jcmwudmVyaXNpZ24uY29tL3BjYTMtZzUuY3JsMA4GA1UdDwEB\n"
1377 "/wQEAwIBBjARBglghkgBhvhCAQEEBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZ\n"
1378 "MFcwVRYJaW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7\n"
1379 "GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwKQYDVR0R\n"
1380 "BCIwIKQeMBwxGjAYBgNVBAMTEUNsYXNzM0NBMjA0OC0xLTQ3MD0GCCsGAQUFBwEB\n"
1381 "BDEwLzAtBggrBgEFBQcwAYYhaHR0cDovL0VWU2VjdXJlLW9jc3AudmVyaXNpZ24u\n"
1382 "Y29tMB8GA1UdIwQYMBaAFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqGSIb3DQEB\n"
1383 "BQUAA4IBAQCWovp/5j3t1CvOtxU/wHIDX4u6FpAl98KD2Md1NGNoElMMU4l7yVYJ\n"
1384 "p8M2RE4O0GJis4b66KGbNGeNUyIXPv2s7mcuQ+JdfzOE8qJwwG6Cl8A0/SXGI3/t\n"
1385 "5rDFV0OEst4t8dD2SB8UcVeyrDHhlyQjyRNddOVG7wl8nuGZMQoIeRuPcZ8XZsg4\n"
1386 "z+6Ml7YGuXNG5NOUweVgtSV1LdlpMezNlsOjdv3odESsErlNv1HoudRETifLriDR\n"
1387 "fip8tmNHnna6l9AW5wtsbfdDbzMLKTB3+p359U64drPNGLT5IO892+bKrZvQTtKH\n"
1388 "qQ2mRHNQ3XBb7a1+Srwi1agm5MKFIA3Z\n"
1389 "-----END CERTIFICATE-----\n";
1391 auto cert = CKM::Certificate::create(CKM::RawBuffer(ee.begin(), ee.end()), CKM::DataFormat::FORM_PEM);
1392 auto cert1 = CKM::Certificate::create(CKM::RawBuffer(im.begin(), im.end()), CKM::DataFormat::FORM_PEM);
1393 CKM::CertificateShPtrVector certChain;
1394 CKM::AliasVector aliasVector;
1395 CKM::Alias alias("imcert");
1396 CharPtr top_label = get_label();
1397 std::string full_address = aliasWithLabel(top_label.get(), alias.c_str());
1400 auto manager = CKM::Manager::create();
1402 RUNNER_ASSERT_MSG(NULL != cert.get(), "Certificate should not be empty");
1403 RUNNER_ASSERT_MSG(NULL != cert1.get(), "Certificate should not be empty");
1406 CKM_API_ERROR_VERIFICATION_FAILED == (tmp = manager->getCertificateChain(cert, aliasVector, certChain)),
1407 "Error=" << CKM::ErrorToString(tmp));
1410 0 == certChain.size(),
1411 "Wrong size of certificate chain.");
1414 CKM_API_SUCCESS == (tmp = manager->saveCertificate(alias, cert1, CKM::Policy())),
1415 "Error=" << CKM::ErrorToString(tmp));
1417 aliasVector.push_back(full_address);
1420 CKM_API_SUCCESS == (tmp = manager->getCertificateChain(cert, aliasVector, certChain)),
1421 "Error=" << CKM::ErrorToString(tmp));
1424 3 == certChain.size(),
1425 "Wrong size of certificate chain.");
1428 RUNNER_TEST(T1314_ocsp_check)
1430 RUNNER_IGNORED_MSG("Fixed in next version of ckm!");
1432 std::string ee = "-----BEGIN CERTIFICATE-----\n"
1433 "MIIF0TCCBLmgAwIBAgIQaPGTP4aS7Ut/WDNaBzdQrDANBgkqhkiG9w0BAQUFADCB\n"
1434 "ujELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
1435 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n"
1436 "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMr\n"
1437 "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTAeFw0x\n"
1438 "NDAyMjAwMDAwMDBaFw0xNTAyMjAyMzU5NTlaMIHmMRMwEQYLKwYBBAGCNzwCAQMT\n"
1439 "AlBMMR0wGwYDVQQPExRQcml2YXRlIE9yZ2FuaXphdGlvbjETMBEGA1UEBRMKMDAw\n"
1440 "MDAyNTIzNzELMAkGA1UEBhMCUEwxDzANBgNVBBEUBjAwLTk1MDEUMBIGA1UECBML\n"
1441 "bWF6b3dpZWNraWUxETAPBgNVBAcUCFdhcnN6YXdhMRYwFAYDVQQJFA1TZW5hdG9y\n"
1442 "c2thIDE4MRMwEQYDVQQKFAptQmFuayBTLkEuMQwwCgYDVQQLFANESU4xGTAXBgNV\n"
1443 "BAMUEHd3dy5tYmFuay5jb20ucGwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n"
1444 "AoIBAQDph6x8V6xUW/+651+qHF+UmorH9uaz2ZrX2bIWiMKIJFmpDDHlxcapKkqE\n"
1445 "BV04is83aiCpqKtc2ZHy2g4Hpj1eSF5BP2+OAlo0YUQZPIeRRdiMjmeAxw/ncBDx\n"
1446 "9rQBuCJ4XTD6cqQox5SI0TASOZ+wyAEjbDRXzL73XqRAFZ1LOpb2ONkolS+RutMB\n"
1447 "vshvCsWPeNe7eGLuOh6DyC6r1vX9xhw3xnjM2mTSvmtimgzSLacNGKqRrsucUgcb\n"
1448 "0+O5C2jZAtAMLyZksL92cxmWbtVzUYzem4chjHu5cRxUlPNzUJWrrczueB7Ip4A8\n"
1449 "aQuFMfNXYc0x+WLWjy//urypMKjhAgMBAAGjggGjMIIBnzAbBgNVHREEFDASghB3\n"
1450 "d3cubWJhbmsuY29tLnBsMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgWgMB0GA1Ud\n"
1451 "JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBEBgNVHSAEPTA7MDkGC2CGSAGG+EUB\n"
1452 "BxcGMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9jcHMw\n"
1453 "HQYDVR0OBBYEFN37iGaS7mZnENxZ9FGqNLR+QgoMMB8GA1UdIwQYMBaAFPyKULqe\n"
1454 "uSVae1WFT5UAY4/pWGtDMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9FVlNlY3Vy\n"
1455 "ZS1jcmwudmVyaXNpZ24uY29tL0VWU2VjdXJlMjAwNi5jcmwwfAYIKwYBBQUHAQEE\n"
1456 "cDBuMC0GCCsGAQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC52ZXJpc2lnbi5j\n"
1457 "b20wPQYIKwYBBQUHMAKGMWh0dHA6Ly9FVlNlY3VyZS1haWEudmVyaXNpZ24uY29t\n"
1458 "L0VWU2VjdXJlMjAwNi5jZXIwDQYJKoZIhvcNAQEFBQADggEBAD0wO+rooUrIM4qp\n"
1459 "PHhp+hkXK6WMQ2qzGOmbMcZjw0govg5vkzkefPDryIXXbrF8mRagiJNMSfNaWWeh\n"
1460 "Cj41OV24EdUl0OLbFxNzcvub599zRs/apfaRLTfsmlmOgi0/YP305i+3tJ2ll946\n"
1461 "P+qV1wXnXqTqEdIl4Ys3+1HmDCdTB1hoDwAAzqRVUXZ5+iiwPAU7R/LTHfMjV1ke\n"
1462 "8jtNFfrorlZMCfVH/7eEnHJvVjOJt+YFe4aFMzE+DfuYIK7MH+olC2v79kBwbnEQ\n"
1463 "fvHMA9gFwOYLUBBdSfcocp8EKZ+mRlNPGR/3LBrPeaQQ0GZEkxzRK+v/aNTuiYfr\n"
1465 "-----END CERTIFICATE-----\n";
1468 "-----BEGIN CERTIFICATE-----\n"
1469 "MIIF5DCCBMygAwIBAgIQW3dZxheE4V7HJ8AylSkoazANBgkqhkiG9w0BAQUFADCB\n"
1470 "yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
1471 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\n"
1472 "U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\n"
1473 "ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\n"
1474 "aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMTYxMTA3MjM1OTU5WjCBujEL\n"
1475 "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\n"
1476 "ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg\n"
1477 "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMrVmVy\n"
1478 "aVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTCCASIwDQYJ\n"
1479 "KoZIhvcNAQEBBQADggEPADCCAQoCggEBAJjboFXrnP0XeeOabhQdsVuYI4cWbod2\n"
1480 "nLU4O7WgerQHYwkZ5iqISKnnnbYwWgiXDOyq5BZpcmIjmvt6VCiYxQwtt9citsj5\n"
1481 "OBfH3doxRpqUFI6e7nigtyLUSVSXTeV0W5K87Gws3+fBthsaVWtmCAN/Ra+aM/EQ\n"
1482 "wGyZSpIkMQht3QI+YXZ4eLbtfjeubPOJ4bfh3BXMt1afgKCxBX9ONxX/ty8ejwY4\n"
1483 "P1C3aSijtWZfNhpSSENmUt+ikk/TGGC+4+peGXEFv54cbGhyJW+ze3PJbb0S/5tB\n"
1484 "Ml706H7FC6NMZNFOvCYIZfsZl1h44TO/7Wg+sSdFb8Di7Jdp91zT91ECAwEAAaOC\n"
1485 "AdIwggHOMB0GA1UdDgQWBBT8ilC6nrklWntVhU+VAGOP6VhrQzASBgNVHRMBAf8E\n"
1486 "CDAGAQH/AgEAMD0GA1UdIAQ2MDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRw\n"
1487 "czovL3d3dy52ZXJpc2lnbi5jb20vY3BzMD0GA1UdHwQ2MDQwMqAwoC6GLGh0dHA6\n"
1488 "Ly9FVlNlY3VyZS1jcmwudmVyaXNpZ24uY29tL3BjYTMtZzUuY3JsMA4GA1UdDwEB\n"
1489 "/wQEAwIBBjARBglghkgBhvhCAQEEBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZ\n"
1490 "MFcwVRYJaW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7\n"
1491 "GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwKQYDVR0R\n"
1492 "BCIwIKQeMBwxGjAYBgNVBAMTEUNsYXNzM0NBMjA0OC0xLTQ3MD0GCCsGAQUFBwEB\n"
1493 "BDEwLzAtBggrBgEFBQcwAYYhaHR0cDovL0VWU2VjdXJlLW9jc3AudmVyaXNpZ24u\n"
1494 "Y29tMB8GA1UdIwQYMBaAFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqGSIb3DQEB\n"
1495 "BQUAA4IBAQCWovp/5j3t1CvOtxU/wHIDX4u6FpAl98KD2Md1NGNoElMMU4l7yVYJ\n"
1496 "p8M2RE4O0GJis4b66KGbNGeNUyIXPv2s7mcuQ+JdfzOE8qJwwG6Cl8A0/SXGI3/t\n"
1497 "5rDFV0OEst4t8dD2SB8UcVeyrDHhlyQjyRNddOVG7wl8nuGZMQoIeRuPcZ8XZsg4\n"
1498 "z+6Ml7YGuXNG5NOUweVgtSV1LdlpMezNlsOjdv3odESsErlNv1HoudRETifLriDR\n"
1499 "fip8tmNHnna6l9AW5wtsbfdDbzMLKTB3+p359U64drPNGLT5IO892+bKrZvQTtKH\n"
1500 "qQ2mRHNQ3XBb7a1+Srwi1agm5MKFIA3Z\n"
1501 "-----END CERTIFICATE-----\n";
1503 auto cert = CKM::Certificate::create(CKM::RawBuffer(ee.begin(), ee.end()), CKM::DataFormat::FORM_PEM);
1504 auto cert1 = CKM::Certificate::create(CKM::RawBuffer(im.begin(), im.end()), CKM::DataFormat::FORM_PEM);
1505 CKM::CertificateShPtrVector certVector = {cert1};
1506 CKM::CertificateShPtrVector certChain;
1509 auto manager = CKM::Manager::create();
1511 RUNNER_ASSERT_MSG(NULL != cert.get(), "Certificate should not be empty");
1512 RUNNER_ASSERT_MSG(NULL != cert1.get(), "Certificate should not be empty");
1515 CKM_API_ERROR_VERIFICATION_FAILED == (tmp = manager->getCertificateChain(cert, CKM::CertificateShPtrVector(), certChain)),
1516 "Error=" << CKM::ErrorToString(tmp));
1519 0 == certChain.size(),
1520 "Wrong size of certificate chain.");
1523 CKM_API_SUCCESS == (tmp = manager->getCertificateChain(cert, certVector, certChain)),
1524 "Error=" << CKM::ErrorToString(tmp));
1527 3 == certChain.size(),
1528 "Wrong size of certificate chain.");
1532 CKM_API_SUCCESS == (tmp = manager->ocspCheck(certChain, status)),
1533 "Error=" << CKM::ErrorToString(tmp));
1535 RUNNER_ASSERT_MSG(CKM_API_OCSP_STATUS_GOOD == status, "Verfication failed");
1538 RUNNER_TEST(T1315_deinit)
1541 auto control = CKM::Control::create();
1544 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
1545 "Error=" << CKM::ErrorToString(temp));
1547 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
1548 "Error=" << CKM::ErrorToString(temp));
1551 RUNNER_TEST_GROUP_INIT(T141_CREATE_AND_VERIFY_SIGNATURE);
1553 RUNNER_TEST(T1411_init)
1556 auto control = CKM::Control::create();
1558 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "test-pass")),
1559 "Error=" << CKM::ErrorToString(temp));
1562 RUNNER_TEST(T1412_rsa_key_create_verify)
1565 auto manager = CKM::Manager::create();
1567 std::string prv = "-----BEGIN RSA PRIVATE KEY-----\n"
1568 "Proc-Type: 4,ENCRYPTED\n"
1569 "DEK-Info: DES-EDE3-CBC,6C6507B11671DABC\n"
1571 "YiKNviNqc/V/i241CKtAVsNckesE0kcaka3VrY7ApXR+Va93YoEwVQ8gB9cE/eHH\n"
1572 "S0j3ZS1PAVFM/qo4ZnPdMzaSLvTQw0GAL90wWgF3XQ+feMnWyBObEoQdGXE828TB\n"
1573 "SLz4UOIQ55Dx6JSWTfEhwAlPs2cEWD14xvuxPzAEzBIYmWmBBsCN94YgFeRTzjH0\n"
1574 "TImoYVMN60GgOfZWw6rXq9RaV5dY0Y6F1piypCLGD35VaXAutdHIDvwUGECPm7SN\n"
1575 "w05jRro53E1vb4mYlZEY/bs4q7XEOI5+ZKT76Xn0oEJNX1KRL1h2q8fgUkm5j40M\n"
1576 "uQj71aLR9KyIoQARwGLeRy09tLVjH3fj66CCMqaPcxcIRIyWi5yYBB0s53ipm6A9\n"
1577 "CYuyc7MS2C0pOdWKsDvYsHR/36KUiIdPuhF4AbaTqqO0eWeuP7Na7dGK56Fl+ooi\n"
1578 "cUpJr7cIqMl2vL25B0jW7d4TB3zwCEkVVD1fBPeNoZWo30z4bILcBqjjPkQfHZ2e\n"
1579 "xNraG3qI4FHjoPT8JEE8p+PgwaMoINlICyIMKiCdvwz9yEnsHPy7FkmatpS+jFoS\n"
1580 "mg8R9vMwgK/HGEm0dmb/7/a0XsG2jCDm6cOmJdZJFQ8JW7hFs3eOHpNlQYDChG2D\n"
1581 "A1ExslqBtbpicywTZhzFdYU/hxeCr4UqcY27Zmhr4JlBPMyvadWKeOqCamWepjbT\n"
1582 "T/MhWJbmWgZbI5s5sbpu7cOYubQcUIEsTaQXGx/KEzGo1HLn9tzSeQfP/nqjAD/L\n"
1583 "T5t1Mb8o4LuV/fGIT33Q3i2FospJMqp2JINNzG18I6Fjo08PTvJ3row40Rb76+lJ\n"
1584 "wN1IBthgBgsgsOdB6XNc56sV+uq2TACsNNWw+JnFRCkCQgfF/KUrvN+WireWq88B\n"
1585 "9UPG+Hbans5A6K+y1a+bzfdYnKws7x8wNRyPxb7Vb2t9ZTl5PBorPLVGsjgf9N5X\n"
1586 "tCdBlfJsUdXot+EOxrIczV5zx0JIB1Y9hrDG07RYkzPuJKxkW7skqeLo8oWGVpaQ\n"
1587 "LGWvuebky1R75hcSuL3e4QHfjBHPdQ31fScB884tqkbhBAWr2nT9bYEmyT170bno\n"
1588 "8QkyOSb99xZBX55sLDHs9p61sTJr2C9Lz/KaWQs+3hTkpwSjSRyjEMH2n491qiQX\n"
1589 "G+kvLEnvtR8sl9zinorj/RfsxyPntAxudfY3qaYUu2QkLvVdfTVUVbxS/Fg8f7B3\n"
1590 "hEjCtpKgFjPxQuHE3didNOr5xM7mkmLN/QA7yHVgdpE64T5mFgC3JcVRpcR7zBPH\n"
1591 "3OeXHgjrhDfN8UIX/cq6gNgD8w7O0rhHa3mEXI1xP14ykPcJ7wlRuLm9P3fwx5A2\n"
1592 "jQrVKJKw1Nzummmspn4VOpJY3LkH4Sxo4e7Soo1l1cxJpzmERwgMF+vGz1L70+DG\n"
1593 "M0hVrz1PxlOsBBFgcdS4TB91DIs/RcFDqrJ4gOPNKCgBP+rgTXXLFcxUwJfE3lKg\n"
1594 "Kmpwdne6FuQYX3eyRVAmPgOHbJuRQCh/V4fYo51UxCcEKeKy6UgOPEJlXksWGbH5\n"
1595 "VFmlytYW6dFKJvjltSmK6L2r+TlyEQoXwTqe4bkfhB2LniDEq28hKQ==\n"
1596 "-----END RSA PRIVATE KEY-----\n";
1598 std::string pub = "-----BEGIN PUBLIC KEY-----\n"
1599 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
1600 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
1601 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
1602 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
1603 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
1604 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
1606 "-----END PUBLIC KEY-----\n";
1608 std::string message = "message test";
1610 CKM::Alias aliasPub = "pub1";
1611 CKM::Alias aliasPrv = "prv1";
1612 CKM::Password password = "1234";
1613 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
1614 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
1615 CKM::RawBuffer signature;
1617 auto keyPub = CKM::Key::create(CKM::RawBuffer(pub.begin(), pub.end()));
1618 auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()), password);
1620 RUNNER_ASSERT_MSG(NULL != keyPub.get(),
1621 "Key is empty. Failed to import public key.");
1622 RUNNER_ASSERT_MSG(NULL != keyPrv.get(),
1623 "Key is empty. Failed to import private key.");
1626 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPub, keyPub, CKM::Policy())),
1627 "Error=" << CKM::ErrorToString(temp));
1629 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
1630 "Error=" << CKM::ErrorToString(temp));
1633 CKM_API_SUCCESS == (temp = manager->createSignature(
1636 CKM::RawBuffer(message.begin(), message.end()),
1640 "Error=" << CKM::ErrorToString(temp));
1643 CKM_API_SUCCESS == (temp = manager->verifySignature(
1646 CKM::RawBuffer(message.begin(), message.end()),
1650 "Error=" << CKM::ErrorToString(temp));
1653 RUNNER_TEST(T1413_dsa_key_create_verify)
1656 auto manager = CKM::Manager::create();
1658 std::string prv = "-----BEGIN DSA PRIVATE KEY-----\n"
1659 "MIIBvAIBAAKBgQC3r3mg/xIXlvsLNWLlu+39+OPm65BM5gVXxWB6+7fo8Lup0Ht+\n"
1660 "NUqBEiRvjwoK64cu+ijQwn73osBKFrn1R5yOG2AVPwpczwN2pn+nOcrneOWUf2+j\n"
1661 "ogLnsOqIWNJkBp86noqPAWgrGWiehM4gkpZHSAyYrEnz4J5Vh6n+AMB1XQIVAOyN\n"
1662 "SUO7ARSfjdfcNzprvmjvBBtPAoGBAJXWoMvwnMYYeN3GbgGUMYCSwnKdY4OjXTzH\n"
1663 "ZGdk3Eoo72lcQbvoIxBjqjeTrNlelBe0v5P64x2JnF/bsYKY5At9ckzayshESABS\n"
1664 "GGbRtiuy1QVGauRYJuyPN0AVXISdjwO5gWroCRRITY24SjUYqeVB9/JXtWA2fyIg\n"
1665 "PrLxTqXqAoGAPT91aEgwFdulzmHlvr3k+GBCE9z+hq0c3FGUCtGbVOqg2KPqMBgw\n"
1666 "Sb4MC0msQys4DTVZhLJI+C5eIPEHgfBMqY1ZNJdOOSCQciDXnRfSqKbT6tjDTgR5\n"
1667 "jmh5bG1Q8QFeBTHCDsQHoQYWgx0nyu12lASN80rCYMYCBhubtrVaLmcCFQC0IB4m\n"
1668 "u1roOuaPY+Hl19BlTE2qdw==\n"
1669 "-----END DSA PRIVATE KEY-----";
1671 std::string pub = "-----BEGIN PUBLIC KEY-----\n"
1672 "MIIBtzCCASwGByqGSM44BAEwggEfAoGBALeveaD/EheW+ws1YuW77f344+brkEzm\n"
1673 "BVfFYHr7t+jwu6nQe341SoESJG+PCgrrhy76KNDCfveiwEoWufVHnI4bYBU/ClzP\n"
1674 "A3amf6c5yud45ZR/b6OiAuew6ohY0mQGnzqeio8BaCsZaJ6EziCSlkdIDJisSfPg\n"
1675 "nlWHqf4AwHVdAhUA7I1JQ7sBFJ+N19w3Omu+aO8EG08CgYEAldagy/Ccxhh43cZu\n"
1676 "AZQxgJLCcp1jg6NdPMdkZ2TcSijvaVxBu+gjEGOqN5Os2V6UF7S/k/rjHYmcX9ux\n"
1677 "gpjkC31yTNrKyERIAFIYZtG2K7LVBUZq5Fgm7I83QBVchJ2PA7mBaugJFEhNjbhK\n"
1678 "NRip5UH38le1YDZ/IiA+svFOpeoDgYQAAoGAPT91aEgwFdulzmHlvr3k+GBCE9z+\n"
1679 "hq0c3FGUCtGbVOqg2KPqMBgwSb4MC0msQys4DTVZhLJI+C5eIPEHgfBMqY1ZNJdO\n"
1680 "OSCQciDXnRfSqKbT6tjDTgR5jmh5bG1Q8QFeBTHCDsQHoQYWgx0nyu12lASN80rC\n"
1681 "YMYCBhubtrVaLmc=\n"
1682 "-----END PUBLIC KEY-----";
1684 std::string message = "message test";
1686 CKM::Alias aliasPub = "pub2";
1687 CKM::Alias aliasPrv = "prv2";
1688 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
1689 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
1690 CKM::RawBuffer signature;
1692 auto keyPub = CKM::Key::create(CKM::RawBuffer(pub.begin(), pub.end()));
1693 auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()), CKM::Password());
1695 RUNNER_ASSERT_MSG(NULL != keyPub.get(),
1696 "Key is empty. Failed to import public key.");
1697 RUNNER_ASSERT_MSG(NULL != keyPrv.get(),
1698 "Key is empty. Failed to import private key.");
1701 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPub, keyPub, CKM::Policy())),
1702 "Error=" << CKM::ErrorToString(temp));
1704 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
1705 "Error=" << CKM::ErrorToString(temp));
1708 CKM_API_SUCCESS == (temp = manager->createSignature(
1711 CKM::RawBuffer(message.begin(), message.end()),
1715 "Error=" << CKM::ErrorToString(temp));
1718 CKM_API_SUCCESS == (temp = manager->verifySignature(
1721 CKM::RawBuffer(message.begin(), message.end()),
1725 "Error=" << CKM::ErrorToString(temp));
1729 RUNNER_TEST(T1414_ec_key_create_verify)
1732 auto manager = CKM::Manager::create();
1734 std::string prv = "-----BEGIN EC PRIVATE KEY-----\n"
1735 "MHQCAQEEIJNud6U4h8EM1rASn4W5vQOJELTaVPQTUiESaBULvQUVoAcGBSuBBAAK\n"
1736 "oUQDQgAEL1R+hgjiFrdjbUKRNOxUG8ze9nveD9zT05YHeT7vK0w08AUL1HCH5nFV\n"
1737 "ljePBYSxe6CybFiseayaxRxjA+iF1g==\n"
1738 "-----END EC PRIVATE KEY-----\n";
1740 std::string pub = "-----BEGIN PUBLIC KEY-----\n"
1741 "MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEL1R+hgjiFrdjbUKRNOxUG8ze9nveD9zT\n"
1742 "05YHeT7vK0w08AUL1HCH5nFVljePBYSxe6CybFiseayaxRxjA+iF1g==\n"
1743 "-----END PUBLIC KEY-----\n";
1745 std::string message = "message test";
1747 CKM::Alias aliasPub = "ecpub2";
1748 CKM::Alias aliasPrv = "ecprv2";
1749 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
1750 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
1751 CKM::RawBuffer signature;
1753 auto keyPub = CKM::Key::create(CKM::RawBuffer(pub.begin(), pub.end()));
1754 auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()));
1756 RUNNER_ASSERT_MSG(NULL != keyPub.get(),
1757 "Key is empty. Failed to import public key.");
1758 RUNNER_ASSERT_MSG(NULL != keyPrv.get(),
1759 "Key is empty. Failed to import private key.");
1762 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPub, keyPub, CKM::Policy())),
1763 "Error=" << CKM::ErrorToString(temp));
1765 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
1766 "Error=" << CKM::ErrorToString(temp));
1769 CKM_API_SUCCESS == (temp = manager->createSignature(
1772 CKM::RawBuffer(message.begin(), message.end()),
1776 "Error=" << CKM::ErrorToString(temp));
1779 CKM_API_SUCCESS == (temp = manager->verifySignature(
1782 CKM::RawBuffer(message.begin(), message.end()),
1786 "Error=" << CKM::ErrorToString(temp));
1788 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
1790 memcpy((void*)signature.data(), "BROKEN", 6);
1793 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
1796 CKM::RawBuffer(message.begin(), message.end()),
1800 "Error=" << CKM::ErrorToString(temp));
1803 RUNNER_TEST(T1415_rsa_key_create_verify_negative)
1806 auto manager = CKM::Manager::create();
1807 std::string message = "message asdfaslkdfjlksadjf test";
1809 CKM::Alias aliasPub = "pub1";
1810 CKM::Alias aliasPrv = "prv1";
1812 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
1813 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
1814 CKM::RawBuffer signature;
1817 CKM_API_SUCCESS == (temp = manager->createSignature(
1820 CKM::RawBuffer(message.begin(), message.end()),
1824 "Error=" << CKM::ErrorToString(temp));
1827 CKM_API_SUCCESS == (temp = manager->verifySignature(
1830 CKM::RawBuffer(message.begin(), message.end()),
1834 "Error=" << CKM::ErrorToString(temp));
1836 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
1837 memcpy((void*)signature.data(), "BROKEN", 6);
1840 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
1843 CKM::RawBuffer(message.begin(), message.end()),
1847 "Error=" << CKM::ErrorToString(temp));
1850 RUNNER_TEST(T1416_dsa_key_create_verify_negative)
1853 auto manager = CKM::Manager::create();
1854 std::string message = "message asdfaslkdfjlksadjf test";
1856 CKM::Alias aliasPub = "pub2";
1857 CKM::Alias aliasPrv = "prv2";
1859 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
1860 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
1861 CKM::RawBuffer signature;
1864 CKM_API_SUCCESS == (temp = manager->createSignature(
1867 CKM::RawBuffer(message.begin(), message.end()),
1871 "Error=" << CKM::ErrorToString(temp));
1874 CKM_API_SUCCESS == (temp = manager->verifySignature(
1877 CKM::RawBuffer(message.begin(), message.end()),
1881 "Error=" << CKM::ErrorToString(temp));
1883 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
1884 memcpy((void*)signature.data(), "BROKEN", 6);
1887 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
1890 CKM::RawBuffer(message.begin(), message.end()),
1894 "Error=" << CKM::ErrorToString(temp));
1897 RUNNER_TEST(T1417_rsa_cert_create_verify_signature)
1900 auto manager = CKM::Manager::create();
1903 "-----BEGIN RSA PRIVATE KEY-----\n"
1904 "MIICXQIBAAKBgQDCKb9BkTdOjCTXKPi/H5FSGuyrgzORBtR3nCTg7SRnL47zNGEj\n"
1905 "l2wkgsY9ZO3UJHm0gy5KMjWeCuUVkSD3G46J9obg1bYJivCQBJKxfieA8sWOtNq1\n"
1906 "M8emHGK8o3sjaRklrngmk2xSCs5vFJVlCluzAYUmrPDm64C3+n4yW4pBCQIDAQAB\n"
1907 "AoGAd1IWgiHO3kuLvFome7XXpaB8P27SutZ6rcLcewnhLDRy4g0XgTrmL43abBJh\n"
1908 "gdSkooVXZity/dvuKpHUs2dQ8W8zYiFFsHfu9qqLmLP6SuBPyUCvlUDH5BGfjjxI\n"
1909 "5qGWIowj/qGHKpbQ7uB+Oe2BHwbHao0zFZIkfKqY0mX9U00CQQDwF/4zQcGS1RX/\n"
1910 "229gowTsvSGVmm8cy1jGst6xkueEuOEZ/AVPO1fjavz+nTziUk4E5lZHAj18L6Hl\n"
1911 "iO29LRujAkEAzwbEWVhfTJewCZIFf3sY3ifXhGZhVKDHVzPBNyoft8Z+09DMHTJb\n"
1912 "EYg85MIbR73aUyIWsEci/CPk6LPRNv47YwJAHtQF2NEFqPPhakPjzjXAaSFz0YDN\n"
1913 "6ZWWpZTMEWL6hUkz5iE9EUpeY54WNB8+dRT6XZix1VZNTMfU8uMdG6BSHwJBAKYM\n"
1914 "gm47AGz5eVujwD8op6CACk+KomRzdI+P1lh9s+T+E3mnDiAY5IxiXp0Ix0K6lyN4\n"
1915 "wwPuerQLwi2XFKZsMYsCQQDOiSQFP9PfXh9kFzN6e89LxOdnqC/r9i5GDB3ea8eL\n"
1916 "SCRprpzqOXZvOP1HBAEjsJ6k4f8Dqj1fm+y8ZcgAZUPr\n"
1917 "-----END RSA PRIVATE KEY-----\n";
1920 "-----BEGIN CERTIFICATE-----\n"
1921 "MIICijCCAfOgAwIBAgIJAMvaNHQ1ozT8MA0GCSqGSIb3DQEBBQUAMF4xCzAJBgNV\n"
1922 "BAYTAlBMMQ0wCwYDVQQIDARMb2R6MQ0wCwYDVQQHDARMb2R6MRAwDgYDVQQKDAdT\n"
1923 "YW1zdW5nMREwDwYDVQQLDAhTZWN1cml0eTEMMAoGA1UEAwwDQ0tNMB4XDTE0MDcw\n"
1924 "MjEyNDE0N1oXDTE3MDcwMTEyNDE0N1owXjELMAkGA1UEBhMCUEwxDTALBgNVBAgM\n"
1925 "BExvZHoxDTALBgNVBAcMBExvZHoxEDAOBgNVBAoMB1NhbXN1bmcxETAPBgNVBAsM\n"
1926 "CFNlY3VyaXR5MQwwCgYDVQQDDANDS00wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ\n"
1927 "AoGBAMIpv0GRN06MJNco+L8fkVIa7KuDM5EG1HecJODtJGcvjvM0YSOXbCSCxj1k\n"
1928 "7dQkebSDLkoyNZ4K5RWRIPcbjon2huDVtgmK8JAEkrF+J4DyxY602rUzx6YcYryj\n"
1929 "eyNpGSWueCaTbFIKzm8UlWUKW7MBhSas8ObrgLf6fjJbikEJAgMBAAGjUDBOMB0G\n"
1930 "A1UdDgQWBBQuW9DuITahZJ6saVZZI0aBlis5vzAfBgNVHSMEGDAWgBQuW9DuITah\n"
1931 "ZJ6saVZZI0aBlis5vzAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBAB2X\n"
1932 "GNtJopBJR3dCpzDONknr/c6qcsPVa3nH4c7qzy6F+4bgqa5IObnoF8zUrvD2sMAO\n"
1933 "km3C/N+Qzt8Rb7ORM6U4tlPp1kZ5t6PKjghhNaiYwVm9A/Zm+wyAmRIkQiYDr4MX\n"
1934 "e+bRAkPmJeEWpaav1lvvBnFzGSGJrnSSeWUegGyn\n"
1935 "-----END CERTIFICATE-----\n";
1937 std::string message = "message test";
1939 CKM::Alias aliasPub = "pub1-cert";
1940 CKM::Alias aliasPrv = "prv1-cert";
1941 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
1942 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
1943 CKM::RawBuffer signature;
1945 auto cert = CKM::Certificate::create(CKM::RawBuffer(pub.begin(), pub.end()), CKM::DataFormat::FORM_PEM);
1946 auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()));
1948 RUNNER_ASSERT_MSG(NULL != cert.get(),
1949 "Key is empty. Failed to import public key.");
1950 RUNNER_ASSERT_MSG(NULL != keyPrv.get(),
1951 "Key is empty. Failed to import private key.");
1954 CKM_API_SUCCESS == (temp = manager->saveCertificate(aliasPub, cert, CKM::Policy())),
1955 "Error=" << CKM::ErrorToString(temp));
1957 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
1958 "Error=" << CKM::ErrorToString(temp));
1961 CKM_API_SUCCESS == (temp = manager->createSignature(
1964 CKM::RawBuffer(message.begin(), message.end()),
1968 "Error=" << CKM::ErrorToString(temp));
1971 CKM_API_SUCCESS == (temp = manager->verifySignature(
1974 CKM::RawBuffer(message.begin(), message.end()),
1978 "Error=" << CKM::ErrorToString(temp));
1980 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
1982 memcpy((void*)signature.data(), "BROKEN", 6);
1985 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
1988 CKM::RawBuffer(message.begin(), message.end()),
1992 "Error=" << CKM::ErrorToString(temp));
1995 RUNNER_TEST(T1418_dsa_cert_create_verify_signature)
1998 auto manager = CKM::Manager::create();
2000 const std::string pub = "-----BEGIN CERTIFICATE-----\n"
2001 "MIIDUzCCAxECCQCer/fKcXtJgTALBglghkgBZQMEAwIwgYsxCzAJBgNVBAYTAlBM\n"
2002 "MQ8wDQYDVQQIDAZQb2xhbmQxDzANBgNVBAcMBldhcnNhdzEQMA4GA1UECgwHU2Ft\n"
2003 "c3VuZzEMMAoGA1UECwwDS1NGMRMwEQYDVQQDDAptLmthcnBpdWsyMSUwIwYJKoZI\n"
2004 "hvcNAQkBFhZtLmthcnBpdWsyQHNhbXN1bmcuY29tMCAXDTE0MDkyNjEzNTQwN1oY\n"
2005 "DzIxNDAwOTA1MTM1NDA3WjCBizELMAkGA1UEBhMCUEwxDzANBgNVBAgMBlBvbGFu\n"
2006 "ZDEPMA0GA1UEBwwGV2Fyc2F3MRAwDgYDVQQKDAdTYW1zdW5nMQwwCgYDVQQLDANL\n"
2007 "U0YxEzARBgNVBAMMCm0ua2FycGl1azIxJTAjBgkqhkiG9w0BCQEWFm0ua2FycGl1\n"
2008 "azJAc2Ftc3VuZy5jb20wggG3MIIBKwYHKoZIzjgEATCCAR4CgYEA9Bhh7ZA4onkY\n"
2009 "uDNQbYR4EwkJ6RpD505hB0GF6yppUNp2LanvNcQXcyXY88MB6OdP7Rikbu1H2zP4\n"
2010 "gONCtdxKW58Za7h9bFzYjxcObZsS52F9DP7sv3C4sX4xNWApfhUgbfzKaRCJOkOs\n"
2011 "06tV7teu3G/v26PdI8dlykIuQXQZmH8CFQCHsIV0njb2yC3ggfKz+exH+g5jAQKB\n"
2012 "gBVLYfVCMjUz5XJH+xYU3A8W8rpSLqZKIK2d9mbXqhpz8QK1bvNQUlSRZo+o1ZYV\n"
2013 "mJn3Mx2YuiifHZNKdBNweCqe5a+HV2RSl1Yv/TV9famZKlogGslsmPHUOJMlSIdh\n"
2014 "MfMwVny4/rNtjEtEFE1WnaTr1W6MKH1EBbizVo8fmWFrA4GFAAKBgQCaPjrlkAyX\n"
2015 "kBitWo+w0xZN4OSk13SsCzZ/PG+5zOgMRaFm2XbiC04YsGCi4NFOd9kaiP7w1CsP\n"
2016 "iqG6Vwv0T/VcoxBl/hp6jEqTDSrM6z0ungjDO9wGOdI+jZS0UjVahgC4ZLDHhrOa\n"
2017 "CjfxcHruO3e416b/Rm2CjhOzjKdoSFUWVzALBglghkgBZQMEAwIDLwAwLAIUHa+A\n"
2018 "5xo8O/tPuH9gXkr1mee6kRYCFGNycJ1xkc3nIJaEQOtGfDe7S71A\n"
2019 "-----END CERTIFICATE-----\n";
2021 const std::string prv = "-----BEGIN DSA PRIVATE KEY-----\n"
2022 "MIIBuwIBAAKBgQD0GGHtkDiieRi4M1BthHgTCQnpGkPnTmEHQYXrKmlQ2nYtqe81\n"
2023 "xBdzJdjzwwHo50/tGKRu7UfbM/iA40K13EpbnxlruH1sXNiPFw5tmxLnYX0M/uy/\n"
2024 "cLixfjE1YCl+FSBt/MppEIk6Q6zTq1Xu167cb+/bo90jx2XKQi5BdBmYfwIVAIew\n"
2025 "hXSeNvbILeCB8rP57Ef6DmMBAoGAFUth9UIyNTPlckf7FhTcDxbyulIupkogrZ32\n"
2026 "ZteqGnPxArVu81BSVJFmj6jVlhWYmfczHZi6KJ8dk0p0E3B4Kp7lr4dXZFKXVi/9\n"
2027 "NX19qZkqWiAayWyY8dQ4kyVIh2Ex8zBWfLj+s22MS0QUTVadpOvVbowofUQFuLNW\n"
2028 "jx+ZYWsCgYEAmj465ZAMl5AYrVqPsNMWTeDkpNd0rAs2fzxvuczoDEWhZtl24gtO\n"
2029 "GLBgouDRTnfZGoj+8NQrD4qhulcL9E/1XKMQZf4aeoxKkw0qzOs9Lp4IwzvcBjnS\n"
2030 "Po2UtFI1WoYAuGSwx4azmgo38XB67jt3uNem/0Ztgo4Ts4ynaEhVFlcCFGMH+Z9l\n"
2031 "vonbjii3BYe4AIdkzOvp\n"
2032 "-----END DSA PRIVATE KEY-----\n";
2034 std::string message = "message test";
2036 CKM::Alias aliasPub = "pub2-cert";
2037 CKM::Alias aliasPrv = "prv2-cert";
2038 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
2039 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
2040 CKM::RawBuffer signature;
2042 auto cert = CKM::Certificate::create(CKM::RawBuffer(pub.begin(), pub.end()), CKM::DataFormat::FORM_PEM);
2043 auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()));
2045 RUNNER_ASSERT_MSG(NULL != cert.get(),
2046 "Key is empty. Failed to import public key.");
2047 RUNNER_ASSERT_MSG(NULL != keyPrv.get(),
2048 "Key is empty. Failed to import private key.");
2051 CKM_API_SUCCESS == (temp = manager->saveCertificate(aliasPub, cert, CKM::Policy())),
2052 "Error=" << CKM::ErrorToString(temp));
2054 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
2055 "Error=" << CKM::ErrorToString(temp));
2058 CKM_API_SUCCESS == (temp = manager->createSignature(
2061 CKM::RawBuffer(message.begin(), message.end()),
2065 "Error=" << CKM::ErrorToString(temp));
2068 CKM_API_SUCCESS == (temp = manager->verifySignature(
2071 CKM::RawBuffer(message.begin(), message.end()),
2075 "Error=" << CKM::ErrorToString(temp));
2077 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
2079 memcpy((void*)signature.data(), "BROKEN", 6);
2082 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
2085 CKM::RawBuffer(message.begin(), message.end()),
2089 "Error=" << CKM::ErrorToString(temp));
2092 RUNNER_TEST(T1419_ecdsa_cert_create_verify_signature)
2095 auto manager = CKM::Manager::create();
2098 "-----BEGIN EC PRIVATE KEY-----\n"
2099 "MIH8AgEBBBRPb/2utS5aCtyuwmzIHpU6LH3mc6CBsjCBrwIBATAgBgcqhkjOPQEB\n"
2100 "AhUA/////////////////////3////8wQwQU/////////////////////3////wE\n"
2101 "FByXvvxUvXqLZaz4n4HU1K3FZfpFAxUAEFPN5CwU1pbmdodWFRdTO/P4M0UEKQRK\n"
2102 "lrVojvVzKEZkaYlow4u5E8v8giOmKFUxaJR9WdzJEgQjUTd6xfsyAhUBAAAAAAAA\n"
2103 "AAAAAfTI+Seu08p1IlcCAQGhLAMqAATehLqu61gKC3Tgr4wQMVoguAhhG3Uwwz8u\n"
2104 "ELyhe7yPCAuOoLZlTLgf\n"
2105 "-----END EC PRIVATE KEY-----\n";
2108 "-----BEGIN CERTIFICATE-----\n"
2109 "MIICfDCCAjqgAwIBAgIJANIytpeTKlXBMAkGByqGSM49BAEwXjELMAkGA1UEBhMC\n"
2110 "UEwxDTALBgNVBAgMBExvZHoxDTALBgNVBAcMBExvZHoxEDAOBgNVBAoMB1NhbXN1\n"
2111 "bmcxETAPBgNVBAsMCFNlY3VyaXR5MQwwCgYDVQQDDANDS00wHhcNMTQwNzAyMTI0\n"
2112 "MTQ3WhcNMTcwNzAxMTI0MTQ3WjBeMQswCQYDVQQGEwJQTDENMAsGA1UECAwETG9k\n"
2113 "ejENMAsGA1UEBwwETG9kejEQMA4GA1UECgwHU2Ftc3VuZzERMA8GA1UECwwIU2Vj\n"
2114 "dXJpdHkxDDAKBgNVBAMMA0NLTTCB6jCBuwYHKoZIzj0CATCBrwIBATAgBgcqhkjO\n"
2115 "PQEBAhUA/////////////////////3////8wQwQU/////////////////////3//\n"
2116 "//wEFByXvvxUvXqLZaz4n4HU1K3FZfpFAxUAEFPN5CwU1pbmdodWFRdTO/P4M0UE\n"
2117 "KQRKlrVojvVzKEZkaYlow4u5E8v8giOmKFUxaJR9WdzJEgQjUTd6xfsyAhUBAAAA\n"
2118 "AAAAAAAAAfTI+Seu08p1IlcCAQEDKgAE3oS6rutYCgt04K+MEDFaILgIYRt1MMM/\n"
2119 "LhC8oXu8jwgLjqC2ZUy4H6NQME4wHQYDVR0OBBYEFELElWx3kbLo55Cfn1vywsEZ\n"
2120 "ccsmMB8GA1UdIwQYMBaAFELElWx3kbLo55Cfn1vywsEZccsmMAwGA1UdEwQFMAMB\n"
2121 "Af8wCQYHKoZIzj0EAQMxADAuAhUAumC4mGoyK97SxTvVBQ+ELfCbxEECFQCbMJ72\n"
2122 "Q1oBry6NEc+lLFmWMDesAA==\n"
2123 "-----END CERTIFICATE-----\n";
2125 std::string message = "message test";
2127 CKM::Alias aliasPub = "pub3";
2128 CKM::Alias aliasPrv = "prv3";
2129 CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
2130 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
2131 CKM::RawBuffer signature;
2133 auto cert = CKM::Certificate::create(CKM::RawBuffer(pub.begin(), pub.end()), CKM::DataFormat::FORM_PEM);
2134 auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()));
2136 RUNNER_ASSERT_MSG(NULL != cert.get(),
2137 "Key is empty. Failed to import public key.");
2138 RUNNER_ASSERT_MSG(NULL != keyPrv.get(),
2139 "Key is empty. Failed to import private key.");
2142 CKM_API_SUCCESS == (temp = manager->saveCertificate(aliasPub, cert, CKM::Policy())),
2143 "Error=" << CKM::ErrorToString(temp));
2145 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
2146 "Error=" << CKM::ErrorToString(temp));
2149 CKM_API_SUCCESS == (temp = manager->createSignature(
2152 CKM::RawBuffer(message.begin(), message.end()),
2156 "Error=" << CKM::ErrorToString(temp));
2159 CKM_API_SUCCESS == (temp = manager->verifySignature(
2162 CKM::RawBuffer(message.begin(), message.end()),
2166 "Error=" << CKM::ErrorToString(temp));
2168 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
2170 memcpy((void*)signature.data(), "BROKEN", 6);
2173 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
2176 CKM::RawBuffer(message.begin(), message.end()),
2180 "Error=" << CKM::ErrorToString(temp));
2183 RUNNER_TEST(T1420_deinit)
2186 auto control = CKM::Control::create();
2189 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
2190 "Error=" << CKM::ErrorToString(temp));
2192 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
2193 "Error=" << CKM::ErrorToString(temp));
2196 RUNNER_TEST(T14180_init)
2199 auto control = CKM::Control::create();
2201 CKM_API_SUCCESS == (temp = control->unlockUserKey(0, "test-pass")),
2202 "Error=" << CKM::ErrorToString(temp));
2204 auto manager = CKM::Manager::create();
2206 // Prepare RSA Key Pair
2207 std::string prv = "-----BEGIN RSA PRIVATE KEY-----\n"
2208 "Proc-Type: 4,ENCRYPTED\n"
2209 "DEK-Info: DES-EDE3-CBC,6C6507B11671DABC\n"
2211 "YiKNviNqc/V/i241CKtAVsNckesE0kcaka3VrY7ApXR+Va93YoEwVQ8gB9cE/eHH\n"
2212 "S0j3ZS1PAVFM/qo4ZnPdMzaSLvTQw0GAL90wWgF3XQ+feMnWyBObEoQdGXE828TB\n"
2213 "SLz4UOIQ55Dx6JSWTfEhwAlPs2cEWD14xvuxPzAEzBIYmWmBBsCN94YgFeRTzjH0\n"
2214 "TImoYVMN60GgOfZWw6rXq9RaV5dY0Y6F1piypCLGD35VaXAutdHIDvwUGECPm7SN\n"
2215 "w05jRro53E1vb4mYlZEY/bs4q7XEOI5+ZKT76Xn0oEJNX1KRL1h2q8fgUkm5j40M\n"
2216 "uQj71aLR9KyIoQARwGLeRy09tLVjH3fj66CCMqaPcxcIRIyWi5yYBB0s53ipm6A9\n"
2217 "CYuyc7MS2C0pOdWKsDvYsHR/36KUiIdPuhF4AbaTqqO0eWeuP7Na7dGK56Fl+ooi\n"
2218 "cUpJr7cIqMl2vL25B0jW7d4TB3zwCEkVVD1fBPeNoZWo30z4bILcBqjjPkQfHZ2e\n"
2219 "xNraG3qI4FHjoPT8JEE8p+PgwaMoINlICyIMKiCdvwz9yEnsHPy7FkmatpS+jFoS\n"
2220 "mg8R9vMwgK/HGEm0dmb/7/a0XsG2jCDm6cOmJdZJFQ8JW7hFs3eOHpNlQYDChG2D\n"
2221 "A1ExslqBtbpicywTZhzFdYU/hxeCr4UqcY27Zmhr4JlBPMyvadWKeOqCamWepjbT\n"
2222 "T/MhWJbmWgZbI5s5sbpu7cOYubQcUIEsTaQXGx/KEzGo1HLn9tzSeQfP/nqjAD/L\n"
2223 "T5t1Mb8o4LuV/fGIT33Q3i2FospJMqp2JINNzG18I6Fjo08PTvJ3row40Rb76+lJ\n"
2224 "wN1IBthgBgsgsOdB6XNc56sV+uq2TACsNNWw+JnFRCkCQgfF/KUrvN+WireWq88B\n"
2225 "9UPG+Hbans5A6K+y1a+bzfdYnKws7x8wNRyPxb7Vb2t9ZTl5PBorPLVGsjgf9N5X\n"
2226 "tCdBlfJsUdXot+EOxrIczV5zx0JIB1Y9hrDG07RYkzPuJKxkW7skqeLo8oWGVpaQ\n"
2227 "LGWvuebky1R75hcSuL3e4QHfjBHPdQ31fScB884tqkbhBAWr2nT9bYEmyT170bno\n"
2228 "8QkyOSb99xZBX55sLDHs9p61sTJr2C9Lz/KaWQs+3hTkpwSjSRyjEMH2n491qiQX\n"
2229 "G+kvLEnvtR8sl9zinorj/RfsxyPntAxudfY3qaYUu2QkLvVdfTVUVbxS/Fg8f7B3\n"
2230 "hEjCtpKgFjPxQuHE3didNOr5xM7mkmLN/QA7yHVgdpE64T5mFgC3JcVRpcR7zBPH\n"
2231 "3OeXHgjrhDfN8UIX/cq6gNgD8w7O0rhHa3mEXI1xP14ykPcJ7wlRuLm9P3fwx5A2\n"
2232 "jQrVKJKw1Nzummmspn4VOpJY3LkH4Sxo4e7Soo1l1cxJpzmERwgMF+vGz1L70+DG\n"
2233 "M0hVrz1PxlOsBBFgcdS4TB91DIs/RcFDqrJ4gOPNKCgBP+rgTXXLFcxUwJfE3lKg\n"
2234 "Kmpwdne6FuQYX3eyRVAmPgOHbJuRQCh/V4fYo51UxCcEKeKy6UgOPEJlXksWGbH5\n"
2235 "VFmlytYW6dFKJvjltSmK6L2r+TlyEQoXwTqe4bkfhB2LniDEq28hKQ==\n"
2236 "-----END RSA PRIVATE KEY-----\n";
2238 std::string pub = "-----BEGIN PUBLIC KEY-----\n"
2239 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
2240 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
2241 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
2242 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
2243 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
2244 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
2246 "-----END PUBLIC KEY-----\n";
2248 CKM::Alias aliasPub = "pub_nohash1";
2249 CKM::Alias aliasPrv = "prv_nohash1";
2250 CKM::Password password = "1234";
2252 auto keyPub = CKM::Key::create(CKM::RawBuffer(pub.begin(), pub.end()));
2253 auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()), password);
2255 RUNNER_ASSERT_MSG(NULL != keyPub.get(),
2256 "Key is empty. Failed to import public key.");
2257 RUNNER_ASSERT_MSG(NULL != keyPrv.get(),
2258 "Key is empty. Failed to import private key.");
2261 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPub, keyPub, CKM::Policy())),
2262 "Error=" << CKM::ErrorToString(temp));
2264 CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
2265 "Error=" << CKM::ErrorToString(temp));
2267 // Prepare ECDSA Key Pair
2268 std::string ecprv = "-----BEGIN EC PRIVATE KEY-----\n"
2269 "MHQCAQEEIJNud6U4h8EM1rASn4W5vQOJELTaVPQTUiESaBULvQUVoAcGBSuBBAAK\n"
2270 "oUQDQgAEL1R+hgjiFrdjbUKRNOxUG8ze9nveD9zT05YHeT7vK0w08AUL1HCH5nFV\n"
2271 "ljePBYSxe6CybFiseayaxRxjA+iF1g==\n"
2272 "-----END EC PRIVATE KEY-----\n";
2274 std::string ecpub = "-----BEGIN PUBLIC KEY-----\n"
2275 "MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEL1R+hgjiFrdjbUKRNOxUG8ze9nveD9zT\n"
2276 "05YHeT7vK0w08AUL1HCH5nFVljePBYSxe6CybFiseayaxRxjA+iF1g==\n"
2277 "-----END PUBLIC KEY-----\n";
2279 CKM::Alias aliasEcPub = "ecpub_nohash1";
2280 CKM::Alias aliasEcPrv = "ecprv_nohash1";
2282 auto ecKeyPub = CKM::Key::create(CKM::RawBuffer(ecpub.begin(), ecpub.end()));
2283 auto ecKeyPrv = CKM::Key::create(CKM::RawBuffer(ecprv.begin(), ecprv.end()));
2285 RUNNER_ASSERT_MSG(NULL != ecKeyPub.get(),
2286 "Key is empty. Failed to import public key.");
2287 RUNNER_ASSERT_MSG(NULL != ecKeyPrv.get(),
2288 "Key is empty. Failed to import private key.");
2291 CKM_API_SUCCESS == (temp = manager->saveKey(aliasEcPub, ecKeyPub, CKM::Policy())),
2292 "Error=" << CKM::ErrorToString(temp));
2294 CKM_API_SUCCESS == (temp = manager->saveKey(aliasEcPrv, ecKeyPrv, CKM::Policy())),
2295 "Error=" << CKM::ErrorToString(temp));
2299 RUNNER_TEST(T14181_rsa_create_signatue_nohash)
2302 auto manager = CKM::Manager::create();
2303 std::string message = "message asdfaslkdfjlksadjf test";
2305 CKM::Alias aliasPub = "pub_nohash1";
2306 CKM::Alias aliasPrv = "prv_nohash1";
2308 CKM::HashAlgorithm hash = CKM::HashAlgorithm::NONE;
2309 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
2310 CKM::RawBuffer signature;
2313 CKM_API_SUCCESS == (temp = manager->createSignature(
2316 CKM::RawBuffer(message.begin(), message.end()),
2320 "Error=" << CKM::ErrorToString(temp));
2323 CKM_API_SUCCESS == (temp = manager->verifySignature(
2326 CKM::RawBuffer(message.begin(), message.end()),
2330 "Error=" << CKM::ErrorToString(temp));
2332 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
2333 memcpy((void*)signature.data(), "BROKEN", 6);
2336 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
2339 CKM::RawBuffer(message.begin(), message.end()),
2343 "Error=" << CKM::ErrorToString(temp));
2346 RUNNER_TEST(T14182_rsa_create_signatue_nohash_nopad)
2349 auto manager = CKM::Manager::create();
2350 std::string message = "message asdfaslkdfjlksadjf test";
2352 CKM::Alias aliasPub = "pub_nohash1";
2353 CKM::Alias aliasPrv = "prv_nohash1";
2355 CKM::HashAlgorithm hash = CKM::HashAlgorithm::NONE;
2356 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::NONE;
2357 CKM::RawBuffer signature;
2360 CKM_API_ERROR_INPUT_PARAM == (temp = manager->createSignature(
2363 CKM::RawBuffer(message.begin(), message.end()),
2367 "Error=" << CKM::ErrorToString(temp));
2370 RUNNER_TEST(T14183_rsa_create_signatue_nohash_bigmsg)
2373 auto manager = CKM::Manager::create();
2374 std::string message = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2375 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2376 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2377 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2378 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2379 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2380 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2381 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2382 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2383 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2384 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2385 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2386 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2387 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2388 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2389 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2390 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2391 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2392 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2393 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
2395 CKM::Alias aliasPub = "pub_nohash1";
2396 CKM::Alias aliasPrv = "prv_nohash1";
2398 CKM::HashAlgorithm hash = CKM::HashAlgorithm::NONE;
2399 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
2400 CKM::RawBuffer signature;
2403 CKM_API_ERROR_INPUT_PARAM == (temp = manager->createSignature(
2406 CKM::RawBuffer(message.begin(), message.end()),
2410 "Error=" << CKM::ErrorToString(temp));
2414 RUNNER_TEST(T14184_ec_create_signatue_nohash)
2417 auto manager = CKM::Manager::create();
2419 std::string message = "message test";
2421 CKM::Alias aliasPub = "ecpub_nohash1";
2422 CKM::Alias aliasPrv = "ecprv_nohash1";
2423 CKM::HashAlgorithm hash = CKM::HashAlgorithm::NONE;
2424 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
2425 CKM::RawBuffer signature;
2428 CKM_API_SUCCESS == (temp = manager->createSignature(
2431 CKM::RawBuffer(message.begin(), message.end()),
2435 "Error=" << CKM::ErrorToString(temp));
2438 CKM_API_SUCCESS == (temp = manager->verifySignature(
2441 CKM::RawBuffer(message.begin(), message.end()),
2445 "Error=" << CKM::ErrorToString(temp));
2447 RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
2449 memcpy((void*)signature.data(), "BROKEN", 6);
2452 CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
2455 CKM::RawBuffer(message.begin(), message.end()),
2459 "Error=" << CKM::ErrorToString(temp));
2462 RUNNER_TEST(T14185_ec_create_signatue_nohash_bigmsg)
2465 auto manager = CKM::Manager::create();
2467 int msgSize = 1024*1024;
2468 char big_msg[msgSize];
2469 for(int i =0; i<msgSize-1; i++) {
2472 big_msg[msgSize-1]=0x00;
2473 std::string message(big_msg);
2475 CKM::Alias aliasPub = "ecpub_nohash1";
2476 CKM::Alias aliasPrv = "ecprv_nohash1";
2477 CKM::HashAlgorithm hash = CKM::HashAlgorithm::NONE;
2478 CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::NONE;
2479 CKM::RawBuffer signature;
2482 CKM_API_SUCCESS == (temp = manager->createSignature(
2485 CKM::RawBuffer(message.begin(), message.end()),
2489 "Error=" << CKM::ErrorToString(temp));
2493 RUNNER_TEST(T14189_deinit)
2496 auto control = CKM::Control::create();
2499 CKM_API_SUCCESS == (temp = control->lockUserKey(0)),
2500 "Error=" << CKM::ErrorToString(temp));
2502 CKM_API_SUCCESS == (temp = control->removeUserData(0)),
2503 "Error=" << CKM::ErrorToString(temp));
2507 RUNNER_TEST_GROUP_INIT(T151_CKM_STORAGE_PERNAMENT_TESTS);
2509 RUNNER_CHILD_TEST(T1510_init_unlock_key)
2512 AccessProvider ap("my-label");
2513 ap.allowAPI("key-manager::api-control", "rw");
2514 ap.applyAndSwithToUser(USER_TEST, GROUP_APP);
2516 auto control = CKM::Control::create();
2518 CKM_API_SUCCESS == (tmp = control->unlockUserKey(USER_TEST, "strong-password")),
2519 "Error=" << CKM::ErrorToString(tmp));
2522 RUNNER_CHILD_TEST(T1511_init_insert_data)
2524 AccessProvider ap("my-label");
2525 ap.allowAPI("key-manager::api-storage", "rw");
2526 ap.applyAndSwithToUser(USER_TEST, GROUP_APP);
2528 std::string ee = "-----BEGIN CERTIFICATE-----\n"
2529 "MIIF0TCCBLmgAwIBAgIQaPGTP4aS7Ut/WDNaBzdQrDANBgkqhkiG9w0BAQUFADCB\n"
2530 "ujELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
2531 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n"
2532 "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMr\n"
2533 "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTAeFw0x\n"
2534 "NDAyMjAwMDAwMDBaFw0xNTAyMjAyMzU5NTlaMIHmMRMwEQYLKwYBBAGCNzwCAQMT\n"
2535 "AlBMMR0wGwYDVQQPExRQcml2YXRlIE9yZ2FuaXphdGlvbjETMBEGA1UEBRMKMDAw\n"
2536 "MDAyNTIzNzELMAkGA1UEBhMCUEwxDzANBgNVBBEUBjAwLTk1MDEUMBIGA1UECBML\n"
2537 "bWF6b3dpZWNraWUxETAPBgNVBAcUCFdhcnN6YXdhMRYwFAYDVQQJFA1TZW5hdG9y\n"
2538 "c2thIDE4MRMwEQYDVQQKFAptQmFuayBTLkEuMQwwCgYDVQQLFANESU4xGTAXBgNV\n"
2539 "BAMUEHd3dy5tYmFuay5jb20ucGwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n"
2540 "AoIBAQDph6x8V6xUW/+651+qHF+UmorH9uaz2ZrX2bIWiMKIJFmpDDHlxcapKkqE\n"
2541 "BV04is83aiCpqKtc2ZHy2g4Hpj1eSF5BP2+OAlo0YUQZPIeRRdiMjmeAxw/ncBDx\n"
2542 "9rQBuCJ4XTD6cqQox5SI0TASOZ+wyAEjbDRXzL73XqRAFZ1LOpb2ONkolS+RutMB\n"
2543 "vshvCsWPeNe7eGLuOh6DyC6r1vX9xhw3xnjM2mTSvmtimgzSLacNGKqRrsucUgcb\n"
2544 "0+O5C2jZAtAMLyZksL92cxmWbtVzUYzem4chjHu5cRxUlPNzUJWrrczueB7Ip4A8\n"
2545 "aQuFMfNXYc0x+WLWjy//urypMKjhAgMBAAGjggGjMIIBnzAbBgNVHREEFDASghB3\n"
2546 "d3cubWJhbmsuY29tLnBsMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgWgMB0GA1Ud\n"
2547 "JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBEBgNVHSAEPTA7MDkGC2CGSAGG+EUB\n"
2548 "BxcGMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9jcHMw\n"
2549 "HQYDVR0OBBYEFN37iGaS7mZnENxZ9FGqNLR+QgoMMB8GA1UdIwQYMBaAFPyKULqe\n"
2550 "uSVae1WFT5UAY4/pWGtDMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9FVlNlY3Vy\n"
2551 "ZS1jcmwudmVyaXNpZ24uY29tL0VWU2VjdXJlMjAwNi5jcmwwfAYIKwYBBQUHAQEE\n"
2552 "cDBuMC0GCCsGAQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC52ZXJpc2lnbi5j\n"
2553 "b20wPQYIKwYBBQUHMAKGMWh0dHA6Ly9FVlNlY3VyZS1haWEudmVyaXNpZ24uY29t\n"
2554 "L0VWU2VjdXJlMjAwNi5jZXIwDQYJKoZIhvcNAQEFBQADggEBAD0wO+rooUrIM4qp\n"
2555 "PHhp+hkXK6WMQ2qzGOmbMcZjw0govg5vkzkefPDryIXXbrF8mRagiJNMSfNaWWeh\n"
2556 "Cj41OV24EdUl0OLbFxNzcvub599zRs/apfaRLTfsmlmOgi0/YP305i+3tJ2ll946\n"
2557 "P+qV1wXnXqTqEdIl4Ys3+1HmDCdTB1hoDwAAzqRVUXZ5+iiwPAU7R/LTHfMjV1ke\n"
2558 "8jtNFfrorlZMCfVH/7eEnHJvVjOJt+YFe4aFMzE+DfuYIK7MH+olC2v79kBwbnEQ\n"
2559 "fvHMA9gFwOYLUBBdSfcocp8EKZ+mRlNPGR/3LBrPeaQQ0GZEkxzRK+v/aNTuiYfr\n"
2561 "-----END CERTIFICATE-----\n";
2564 "-----BEGIN CERTIFICATE-----\n"
2565 "MIIF5DCCBMygAwIBAgIQW3dZxheE4V7HJ8AylSkoazANBgkqhkiG9w0BAQUFADCB\n"
2566 "yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
2567 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\n"
2568 "U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\n"
2569 "ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\n"
2570 "aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMTYxMTA3MjM1OTU5WjCBujEL\n"
2571 "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\n"
2572 "ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg\n"
2573 "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMrVmVy\n"
2574 "aVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTCCASIwDQYJ\n"
2575 "KoZIhvcNAQEBBQADggEPADCCAQoCggEBAJjboFXrnP0XeeOabhQdsVuYI4cWbod2\n"
2576 "nLU4O7WgerQHYwkZ5iqISKnnnbYwWgiXDOyq5BZpcmIjmvt6VCiYxQwtt9citsj5\n"
2577 "OBfH3doxRpqUFI6e7nigtyLUSVSXTeV0W5K87Gws3+fBthsaVWtmCAN/Ra+aM/EQ\n"
2578 "wGyZSpIkMQht3QI+YXZ4eLbtfjeubPOJ4bfh3BXMt1afgKCxBX9ONxX/ty8ejwY4\n"
2579 "P1C3aSijtWZfNhpSSENmUt+ikk/TGGC+4+peGXEFv54cbGhyJW+ze3PJbb0S/5tB\n"
2580 "Ml706H7FC6NMZNFOvCYIZfsZl1h44TO/7Wg+sSdFb8Di7Jdp91zT91ECAwEAAaOC\n"
2581 "AdIwggHOMB0GA1UdDgQWBBT8ilC6nrklWntVhU+VAGOP6VhrQzASBgNVHRMBAf8E\n"
2582 "CDAGAQH/AgEAMD0GA1UdIAQ2MDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRw\n"
2583 "czovL3d3dy52ZXJpc2lnbi5jb20vY3BzMD0GA1UdHwQ2MDQwMqAwoC6GLGh0dHA6\n"
2584 "Ly9FVlNlY3VyZS1jcmwudmVyaXNpZ24uY29tL3BjYTMtZzUuY3JsMA4GA1UdDwEB\n"
2585 "/wQEAwIBBjARBglghkgBhvhCAQEEBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZ\n"
2586 "MFcwVRYJaW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7\n"
2587 "GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwKQYDVR0R\n"
2588 "BCIwIKQeMBwxGjAYBgNVBAMTEUNsYXNzM0NBMjA0OC0xLTQ3MD0GCCsGAQUFBwEB\n"
2589 "BDEwLzAtBggrBgEFBQcwAYYhaHR0cDovL0VWU2VjdXJlLW9jc3AudmVyaXNpZ24u\n"
2590 "Y29tMB8GA1UdIwQYMBaAFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqGSIb3DQEB\n"
2591 "BQUAA4IBAQCWovp/5j3t1CvOtxU/wHIDX4u6FpAl98KD2Md1NGNoElMMU4l7yVYJ\n"
2592 "p8M2RE4O0GJis4b66KGbNGeNUyIXPv2s7mcuQ+JdfzOE8qJwwG6Cl8A0/SXGI3/t\n"
2593 "5rDFV0OEst4t8dD2SB8UcVeyrDHhlyQjyRNddOVG7wl8nuGZMQoIeRuPcZ8XZsg4\n"
2594 "z+6Ml7YGuXNG5NOUweVgtSV1LdlpMezNlsOjdv3odESsErlNv1HoudRETifLriDR\n"
2595 "fip8tmNHnna6l9AW5wtsbfdDbzMLKTB3+p359U64drPNGLT5IO892+bKrZvQTtKH\n"
2596 "qQ2mRHNQ3XBb7a1+Srwi1agm5MKFIA3Z\n"
2597 "-----END CERTIFICATE-----\n";
2599 auto manager = CKM::Manager::create();
2600 auto certee = CKM::Certificate::create(CKM::RawBuffer(ee.begin(), ee.end()), CKM::DataFormat::FORM_PEM);
2601 auto certim = CKM::Certificate::create(CKM::RawBuffer(im.begin(), im.end()), CKM::DataFormat::FORM_PEM);
2603 int status1 = manager->saveCertificate(CKM::Alias("CertEE"), certee, CKM::Policy());
2604 int status2 = manager->saveCertificate(CKM::Alias("CertIM"), certim, CKM::Policy());
2607 CKM_API_ERROR_DB_ALIAS_EXISTS == status1,
2608 "Certificate should be in database already. Error=" << CKM::ErrorToString(status1));
2611 CKM_API_ERROR_DB_ALIAS_EXISTS == status2,
2612 "Certificate should be in database already. Error=" << CKM::ErrorToString(status2));
2615 RUNNER_CHILD_TEST(T1519_deinit)
2618 AccessProvider ap("my-label");
2619 ap.allowAPI("key-manager::api-control", "rw");
2620 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
2622 auto control = CKM::Control::create();
2624 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_TEST)),
2625 "Error=" << CKM::ErrorToString(tmp));
2629 RUNNER_TEST_GROUP_INIT(T161_CKM_LOCKTYPE_TESTS);
2631 RUNNER_CHILD_TEST(T1610_init_lock_key)
2634 AccessProvider ap("my-label");
2635 ap.allowAPI("key-manager::api-control", "rw");
2636 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
2638 auto control = CKM::Control::create();
2640 CKM_API_SUCCESS == (tmp = control->changeUserPassword(USER_APP,"user-pass","")),
2641 "Error=" << CKM::ErrorToString(tmp));
2643 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_APP)),
2644 "Error=" << CKM::ErrorToString(tmp));
2647 RUNNER_CHILD_TEST(T1611_unlock_default_passwd)
2649 AccessProvider ap("my-label");
2650 ap.allowAPI("key-manager::api-storage", "rw");
2651 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
2654 auto manager = CKM::Manager::create();
2656 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
2657 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
2658 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
2659 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
2660 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
2661 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
2662 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
2664 "-----END PUBLIC KEY-----";
2666 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
2667 auto key = CKM::Key::create(buffer, CKM::Password());
2669 CKM::Alias alias = "mykey_defpasswd";
2672 CKM_API_SUCCESS == (temp = manager->saveKey(alias, key, CKM::Policy())),
2673 "Error=" << CKM::ErrorToString(temp));
2675 CKM_API_SUCCESS == (temp = manager->getKey(alias, CKM::Password(), key2)),
2676 "Error=" << CKM::ErrorToString(temp));
2678 key->getDER() == key2->getDER(),
2679 "Key value has been changed by service");
2681 std::string invalid_address = aliasWithLabel("i-do-not-exist", alias.c_str());
2683 CKM_API_ERROR_DB_ALIAS_UNKNOWN == (temp = manager->removeAlias(invalid_address.c_str())),
2684 "Error=" << CKM::ErrorToString(temp));
2686 CKM_API_SUCCESS == (temp = manager->removeAlias(alias)),
2687 "Error=" << CKM::ErrorToString(temp));
2690 RUNNER_CHILD_TEST(T1612_init_change_user_password)
2693 AccessProvider ap("my-label");
2694 ap.allowAPI("key-manager::api-control", "rw");
2695 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
2697 auto control = CKM::Control::create();
2699 CKM_API_SUCCESS == (tmp = control->changeUserPassword(USER_APP,"","user-pass")),
2700 "Error=" << CKM::ErrorToString(tmp));
2701 // confirm changed password
2703 CKM_API_SUCCESS == (tmp = control->unlockUserKey(USER_APP,"user-pass")),
2704 CKM::ErrorToString(tmp));
2706 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_APP)),
2707 CKM::ErrorToString(tmp));
2710 RUNNER_CHILD_TEST(T1613_unlock_default_passwd_negative)
2712 AccessProvider ap("my-label");
2713 ap.allowAPI("key-manager::api-storage", "rw");
2714 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
2717 auto manager = CKM::Manager::create();
2719 std::string keyPem = "-----BEGIN PUBLIC KEY-----\n"
2720 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4\n"
2721 "T4tUddtZNi0NVjQn9RFH1NMa220GsRhRO56F77FlSVFKfSfVZKIiWg6C+DVCkcLf\n"
2722 "zXJ/Z0pvwOQYBAqVMFjV6efQGN0JzJ1Unu7pPRiZl7RKGEI+cyzzrcDyrLLrQ2W7\n"
2723 "0ZySkNEOv6Frx9JgC5NExuYY4lk2fQQa38JXiZkfyzif2em0px7mXbyf5LjccsKq\n"
2724 "v1e+XLtMsL0ZefRcqsP++NzQAI8fKX7WBT+qK0HJDLiHrKOTWYzx6CwJ66LD/vvf\n"
2725 "j55xtsKDLVDbsotvf8/m6VLMab+vqKk11TP4tq6yo0mwyTADvgl1zowQEO9I1W6o\n"
2727 "-----END PUBLIC KEY-----";
2729 CKM::RawBuffer buffer(keyPem.begin(), keyPem.end());
2730 auto key = CKM::Key::create(buffer, CKM::Password());
2732 CKM::Alias alias = "mykey_defpasswd";
2735 CKM_API_ERROR_DB_LOCKED == (temp = manager->saveKey(alias, key, CKM::Policy())),
2736 "Error=" << CKM::ErrorToString(temp));
2738 CKM_API_ERROR_DB_LOCKED == (temp = manager->getKey(alias, CKM::Password(), key2)),
2739 "Error=" << CKM::ErrorToString(temp));
2741 CKM_API_ERROR_DB_LOCKED == (temp = manager->removeAlias(alias)),
2742 "Error=" << CKM::ErrorToString(temp));
2745 RUNNER_CHILD_TEST(T1619_deinit)
2747 AccessProvider ap("my-label");
2748 ap.allowAPI("key-manager::api-control", "rw");
2749 ap.applyAndSwithToUser(USER_APP, GROUP_APP);
2752 RUNNER_TEST_GROUP_INIT(T170_CKM_STORAGE_PERNAMENT_TESTS);
2754 RUNNER_TEST(T1701_init_unlock_key)
2757 auto control = CKM::Control::create();
2759 CKM_API_SUCCESS == (tmp = control->unlockUserKey(USER_TEST+1, "t170-special-password")),
2760 "Error=" << CKM::ErrorToString(tmp));
2763 RUNNER_CHILD_TEST(T1702_init_insert_data)
2766 AccessProvider ap("t170-special-label");
2767 ap.allowAPI("key-manager::api-storage", "rw");
2768 ap.applyAndSwithToUser(USER_TEST+1, GROUP_APP);
2770 std::string ee = "-----BEGIN CERTIFICATE-----\n"
2771 "MIIF0TCCBLmgAwIBAgIQaPGTP4aS7Ut/WDNaBzdQrDANBgkqhkiG9w0BAQUFADCB\n"
2772 "ujELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
2773 "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n"
2774 "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMr\n"
2775 "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTAeFw0x\n"
2776 "NDAyMjAwMDAwMDBaFw0xNTAyMjAyMzU5NTlaMIHmMRMwEQYLKwYBBAGCNzwCAQMT\n"
2777 "AlBMMR0wGwYDVQQPExRQcml2YXRlIE9yZ2FuaXphdGlvbjETMBEGA1UEBRMKMDAw\n"
2778 "MDAyNTIzNzELMAkGA1UEBhMCUEwxDzANBgNVBBEUBjAwLTk1MDEUMBIGA1UECBML\n"
2779 "bWF6b3dpZWNraWUxETAPBgNVBAcUCFdhcnN6YXdhMRYwFAYDVQQJFA1TZW5hdG9y\n"
2780 "c2thIDE4MRMwEQYDVQQKFAptQmFuayBTLkEuMQwwCgYDVQQLFANESU4xGTAXBgNV\n"
2781 "BAMUEHd3dy5tYmFuay5jb20ucGwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n"
2782 "AoIBAQDph6x8V6xUW/+651+qHF+UmorH9uaz2ZrX2bIWiMKIJFmpDDHlxcapKkqE\n"
2783 "BV04is83aiCpqKtc2ZHy2g4Hpj1eSF5BP2+OAlo0YUQZPIeRRdiMjmeAxw/ncBDx\n"
2784 "9rQBuCJ4XTD6cqQox5SI0TASOZ+wyAEjbDRXzL73XqRAFZ1LOpb2ONkolS+RutMB\n"
2785 "vshvCsWPeNe7eGLuOh6DyC6r1vX9xhw3xnjM2mTSvmtimgzSLacNGKqRrsucUgcb\n"
2786 "0+O5C2jZAtAMLyZksL92cxmWbtVzUYzem4chjHu5cRxUlPNzUJWrrczueB7Ip4A8\n"
2787 "aQuFMfNXYc0x+WLWjy//urypMKjhAgMBAAGjggGjMIIBnzAbBgNVHREEFDASghB3\n"
2788 "d3cubWJhbmsuY29tLnBsMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgWgMB0GA1Ud\n"
2789 "JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBEBgNVHSAEPTA7MDkGC2CGSAGG+EUB\n"
2790 "BxcGMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9jcHMw\n"
2791 "HQYDVR0OBBYEFN37iGaS7mZnENxZ9FGqNLR+QgoMMB8GA1UdIwQYMBaAFPyKULqe\n"
2792 "uSVae1WFT5UAY4/pWGtDMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9FVlNlY3Vy\n"
2793 "ZS1jcmwudmVyaXNpZ24uY29tL0VWU2VjdXJlMjAwNi5jcmwwfAYIKwYBBQUHAQEE\n"
2794 "cDBuMC0GCCsGAQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC52ZXJpc2lnbi5j\n"
2795 "b20wPQYIKwYBBQUHMAKGMWh0dHA6Ly9FVlNlY3VyZS1haWEudmVyaXNpZ24uY29t\n"
2796 "L0VWU2VjdXJlMjAwNi5jZXIwDQYJKoZIhvcNAQEFBQADggEBAD0wO+rooUrIM4qp\n"
2797 "PHhp+hkXK6WMQ2qzGOmbMcZjw0govg5vkzkefPDryIXXbrF8mRagiJNMSfNaWWeh\n"
2798 "Cj41OV24EdUl0OLbFxNzcvub599zRs/apfaRLTfsmlmOgi0/YP305i+3tJ2ll946\n"
2799 "P+qV1wXnXqTqEdIl4Ys3+1HmDCdTB1hoDwAAzqRVUXZ5+iiwPAU7R/LTHfMjV1ke\n"
2800 "8jtNFfrorlZMCfVH/7eEnHJvVjOJt+YFe4aFMzE+DfuYIK7MH+olC2v79kBwbnEQ\n"
2801 "fvHMA9gFwOYLUBBdSfcocp8EKZ+mRlNPGR/3LBrPeaQQ0GZEkxzRK+v/aNTuiYfr\n"
2803 "-----END CERTIFICATE-----\n";
2805 auto manager = CKM::Manager::create();
2806 auto certee = CKM::Certificate::create(CKM::RawBuffer(ee.begin(), ee.end()), CKM::DataFormat::FORM_PEM);
2808 int status1 = manager->saveCertificate(CKM::Alias("CertEEE"), certee, CKM::Policy());
2811 CKM_API_SUCCESS == status1,
2812 "Could not put certificate in datbase. Error=" << CKM::ErrorToString(status1));
2814 CKM::AliasVector av;
2816 CKM_API_SUCCESS == (temp = manager->getCertificateAliasVector(av)),
2817 "Error=" << CKM::ErrorToString(temp));
2819 1 == (temp = av.size()),
2820 "Vector size: " << temp << ". Expected: 1");
2823 RUNNER_TEST(T1703_removeApplicationData)
2826 auto control = CKM::Control::create();
2828 CKM_API_SUCCESS == (tmp = control->removeApplicationData("t170-special-label")),
2829 "Error=" << CKM::ErrorToString(tmp));
2832 RUNNER_CHILD_TEST(T1704_data_test)
2835 AccessProvider ap("t170-special-label");
2836 ap.allowAPI("key-manager::api-storage", "rw");
2837 ap.applyAndSwithToUser(USER_TEST+1, GROUP_APP);
2839 CKM::AliasVector av;
2840 auto manager = CKM::Manager::create();
2843 CKM_API_SUCCESS == (temp = manager->getCertificateAliasVector(av)),
2844 "Error=" << CKM::ErrorToString(temp));
2846 0 == (temp = av.size()),
2847 "Vector size: " << temp << ". Expected: 0");
2850 RUNNER_TEST(T1705_deinit)
2854 auto control = CKM::Control::create();
2856 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_TEST+1)),
2857 "Error=" << CKM::ErrorToString(tmp));
2859 CKM_API_SUCCESS == (tmp = control->removeUserData(USER_TEST+1)),
2860 "Error=" << CKM::ErrorToString(tmp));
2863 RUNNER_TEST(T17101_init)
2867 auto control = CKM::Control::create();
2869 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_TEST+2)),
2870 "Error=" << CKM::ErrorToString(tmp));
2872 CKM_API_SUCCESS == (tmp = control->removeUserData(USER_TEST+2)),
2873 "Error=" << CKM::ErrorToString(tmp));
2875 CKM_API_SUCCESS == (tmp = control->unlockUserKey(USER_TEST+2, "t1706-special-password")),
2876 "Error=" << CKM::ErrorToString(tmp));
2879 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_TEST+3)),
2880 "Error=" << CKM::ErrorToString(tmp));
2882 CKM_API_SUCCESS == (tmp = control->removeUserData(USER_TEST+3)),
2883 "Error=" << CKM::ErrorToString(tmp));
2885 CKM_API_SUCCESS == (tmp = control->unlockUserKey(USER_TEST+3, "t1706-special-password")),
2886 "Error=" << CKM::ErrorToString(tmp));
2889 RUNNER_CHILD_TEST(T17102_prep_data_01)
2892 AccessProvider ap("t1706-special-label");
2893 ap.allowAPI("key-manager::api-storage", "rw");
2894 ap.applyAndSwithToUser(USER_TEST+2, GROUP_APP);
2896 CKM::AliasVector av;
2897 auto manager = CKM::Manager::create();
2899 std::string data = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4";
2901 CKM::RawBuffer buffer(data.begin(), data.end());
2902 CKM::Policy exportable(CKM::Password(), true);
2905 CKM_API_SUCCESS == (temp = manager->saveData("data1", buffer, exportable)),
2906 "Error=" << CKM::ErrorToString(temp));
2909 RUNNER_CHILD_TEST(T17103_prep_data_02)
2912 AccessProvider ap("t1706-special-label2");
2913 ap.allowAPI("key-manager::api-storage", "rw");
2914 ap.applyAndSwithToUser(USER_TEST+2, GROUP_APP);
2916 CKM::AliasVector av;
2917 auto manager = CKM::Manager::create();
2919 std::string data = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4";
2921 CKM::RawBuffer buffer(data.begin(), data.end());
2922 CKM::Policy exportable(CKM::Password(), true);
2925 CKM_API_SUCCESS == (temp = manager->saveData("data2", buffer, exportable)),
2926 "Error=" << CKM::ErrorToString(temp));
2929 RUNNER_CHILD_TEST(T17104_prep_data_03)
2932 AccessProvider ap("t1706-special-label");
2933 ap.allowAPI("key-manager::api-storage", "rw");
2934 ap.applyAndSwithToUser(USER_TEST+3, GROUP_APP);
2936 CKM::AliasVector av;
2937 auto manager = CKM::Manager::create();
2939 std::string data = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4";
2941 CKM::RawBuffer buffer(data.begin(), data.end());
2942 CKM::Policy exportable(CKM::Password(), true);
2945 CKM_API_SUCCESS == (temp = manager->saveData("data3", buffer, exportable)),
2946 "Error=" << CKM::ErrorToString(temp));
2949 RUNNER_CHILD_TEST(T17105_prep_data_04)
2952 AccessProvider ap("t1706-special-label2");
2953 ap.allowAPI("key-manager::api-storage", "rw");
2954 ap.applyAndSwithToUser(USER_TEST+3, GROUP_APP);
2956 CKM::AliasVector av;
2957 auto manager = CKM::Manager::create();
2959 std::string data = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2b1bXDa+S8/MGWnMkru4";
2961 CKM::RawBuffer buffer(data.begin(), data.end());
2962 CKM::Policy exportable(CKM::Password(), true);
2965 CKM_API_SUCCESS == (temp = manager->saveData("data4", buffer, exportable)),
2966 "Error=" << CKM::ErrorToString(temp));
2969 RUNNER_TEST(T17106_remove_application)
2973 auto control = CKM::Control::create();
2975 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_TEST+3)),
2976 "Error=" << CKM::ErrorToString(tmp));
2978 CKM_API_SUCCESS == (tmp = control->removeApplicationData("t1706-special-label")),
2979 "Error=" << CKM::ErrorToString(tmp));
2982 RUNNER_CHILD_TEST(T17107_check_data_01)
2985 AccessProvider ap("t1706-special-label");
2986 ap.allowAPI("key-manager::api-storage", "rw");
2987 ap.applyAndSwithToUser(USER_TEST+2, GROUP_APP);
2989 CKM::AliasVector av;
2990 auto manager = CKM::Manager::create();
2993 CKM_API_SUCCESS == (temp = manager->getDataAliasVector(av)),
2994 "Error=" << CKM::ErrorToString(temp));
2996 0 == (temp = av.size()),
2997 "Vector size: " << temp << ". Expected: 0");
3000 RUNNER_CHILD_TEST(T17108_check_data_02)
3003 AccessProvider ap("t1706-special-label2");
3004 ap.allowAPI("key-manager::api-storage", "rw");
3005 ap.applyAndSwithToUser(USER_TEST+2, GROUP_APP);
3007 CKM::AliasVector av;
3008 auto manager = CKM::Manager::create();
3011 CKM_API_SUCCESS == (temp = manager->getDataAliasVector(av)),
3012 "Error=" << CKM::ErrorToString(temp));
3014 1 == (temp = av.size()),
3015 "Vector size: " << temp << ". Expected: 1");
3018 RUNNER_TEST(T17109_unlock_user2)
3022 auto control = CKM::Control::create();
3024 CKM_API_SUCCESS == (tmp = control->unlockUserKey(USER_TEST+3, "t1706-special-password")),
3025 "Error=" << CKM::ErrorToString(tmp));
3028 RUNNER_CHILD_TEST(T17110_check_data_03)
3031 AccessProvider ap("t1706-special-label");
3032 ap.allowAPI("key-manager::api-storage", "rw");
3033 ap.applyAndSwithToUser(USER_TEST+3, GROUP_APP);
3035 CKM::AliasVector av;
3036 auto manager = CKM::Manager::create();
3039 CKM_API_SUCCESS == (temp = manager->getDataAliasVector(av)),
3040 "Error=" << CKM::ErrorToString(temp));
3042 0 == (temp = av.size()),
3043 "Vector size: " << temp << ". Expected: 0");
3046 RUNNER_CHILD_TEST(T17111_check_data_04)
3049 AccessProvider ap("t1706-special-label2");
3050 ap.allowAPI("key-manager::api-storage", "rw");
3051 ap.applyAndSwithToUser(USER_TEST+3, GROUP_APP);
3053 CKM::AliasVector av;
3054 auto manager = CKM::Manager::create();
3057 CKM_API_SUCCESS == (temp = manager->getDataAliasVector(av)),
3058 "Error=" << CKM::ErrorToString(temp));
3060 1 == (temp = av.size()),
3061 "Vector size: " << temp << ". Expected: 1");
3064 RUNNER_TEST(T17112_deinit)
3068 auto control = CKM::Control::create();
3070 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_TEST+2)),
3071 "Error=" << CKM::ErrorToString(tmp));
3073 CKM_API_SUCCESS == (tmp = control->removeUserData(USER_TEST+2)),
3074 "Error=" << CKM::ErrorToString(tmp));
3077 CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_TEST+3)),
3078 "Error=" << CKM::ErrorToString(tmp));
3080 CKM_API_SUCCESS == (tmp = control->removeUserData(USER_TEST+3)),
3081 "Error=" << CKM::ErrorToString(tmp));
3084 RUNNER_TEST_GROUP_INIT(T180_PKCS12);
3086 RUNNER_TEST(T1801) {
3087 std::ifstream is("/usr/share/ckm-test/test1801.pkcs12");
3088 std::istreambuf_iterator<char> begin(is), end;
3089 std::vector<char> buff(begin, end);
3091 CKM::RawBuffer buffer(buff.size());
3092 memcpy(buffer.data(), buff.data(), buff.size());
3094 auto pkcs = CKM::PKCS12::create(buffer, "secret");
3097 "Error in PKCS12::create()");
3099 auto cert = pkcs->getCertificate();
3102 "Error in PKCS12::getCertificate()");
3104 auto key = pkcs->getKey();
3107 "Error in PKCS12::getKey()");
3109 auto caVector = pkcs->getCaCertificateShPtrVector();
3111 0 == caVector.size(),
3112 "Wrong size of vector");
3115 RUNNER_TEST(T1802_negative_wrong_password) {
3116 std::ifstream is("/usr/share/ckm-test/test1801.pkcs12");
3117 std::istreambuf_iterator<char> begin(is), end;
3118 std::vector<char> buff(begin, end);
3120 CKM::RawBuffer buffer(buff.size());
3121 memcpy(buffer.data(), buff.data(), buff.size());
3123 auto pkcs = CKM::PKCS12::create(buffer, "error");
3126 "Expected error in PKCS12::create()");
3129 RUNNER_TEST(T1803_negative_broken_buffer) {
3130 std::ifstream is("/usr/share/ckm-test/test1801.pkcs12");
3131 std::istreambuf_iterator<char> begin(is), end;
3132 std::vector<char> buff(begin, end);
3134 CKM::RawBuffer buffer(buff.size());
3135 memcpy(buffer.data(), buff.data(), buff.size());
3137 RUNNER_ASSERT_MSG(buffer.size() > 5, "PKCS file is too small.");
3140 auto pkcs = CKM::PKCS12::create(buffer, "secret");
3143 "Expected error in PKCS12::create()");
3147 RUNNER_TEST_GROUP_INIT(T190_CKM_EMPTY_STORAGE_TESTS);
3149 RUNNER_TEST(T1901_init_unlock_key)
3152 auto control = CKM::Control::create();
3154 CKM_API_SUCCESS == (tmp = control->lockUserKey(0)),
3155 "Error=" << CKM::ErrorToString(tmp));
3157 CKM_API_SUCCESS == (tmp = control->removeUserData(0)),
3158 "Error=" << CKM::ErrorToString(tmp));
3160 CKM_API_SUCCESS == (tmp = control->unlockUserKey(0, "t190-special-password")),
3161 "Error=" << CKM::ErrorToString(tmp));
3164 RUNNER_TEST(T1902_get_data)
3166 auto manager = CKM::Manager::create();
3169 int status1 = manager->getKey(CKM::Alias("CertEEE"), CKM::Password(), ptr);
3172 CKM_API_ERROR_DB_ALIAS_UNKNOWN == status1,
3173 "Could not put certificate in datbase. Error=" << CKM::ErrorToString(status1));
3176 RUNNER_TEST(T1903_lock_database)
3179 auto control = CKM::Control::create();
3181 CKM_API_SUCCESS == (tmp = control->lockUserKey(0)),
3182 "Error=" << CKM::ErrorToString(tmp));
3185 RUNNER_TEST(T1904_get_data_from_locked_database)
3187 auto manager = CKM::Manager::create();
3190 int status1 = manager->getKey(CKM::Alias("CertEEE"), CKM::Password(), ptr);
3193 CKM_API_ERROR_DB_LOCKED == status1,
3194 "Could not get key from locked database. Error=" << CKM::ErrorToString(status1));
3197 RUNNER_TEST(T1905_deinit)
3200 auto control = CKM::Control::create();
3202 CKM_API_SUCCESS == (tmp = control->removeUserData(0)),
3203 "Error=" << CKM::ErrorToString(tmp));
3206 int main(int argc, char *argv[])
3208 DPL::Log::LogSystemSingleton::Instance().SetTag("CKM_TESTS");
3209 return DPL::Test::TestRunnerSingleton::Instance().ExecTestRunner(argc, argv);