2 * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 * @file new_test_cases.cpp
18 * @author Madhan A K (madhan.ak@samsung.com)
20 * @brief PKCS#12 test cases.
26 #include <sys/types.h>
28 #include <dpl/test/test_runner.h>
29 #include <cert-svc/cinstance.h>
30 #include <cert-svc/ccert.h>
31 #include <cert-svc/cpkcs12.h>
32 #include <cert-svc/cerror.h>
33 #include <cert-svc/cprimitives.h>
34 #include <cert-service.h>
35 #include <cert-service-debug.h>
36 #include <openssl/err.h>
37 #include <openssl/pkcs12.h>
38 #include <openssl/sha.h>
39 #include <openssl/x509.h>
40 #include <openssl/pem.h>
43 static CertSvcInstance instance;
45 #define CREATE_INSTANCE \
46 certsvc_instance_new(&instance);
47 #define FREE_INSTANCE \
48 certsvc_instance_free(instance);
50 /* Getting the certificate list from system_store */
51 RUNNER_TEST(CERTSVC_PKCS12_1001_certsvc_get_root_cert_list) {
53 CertStoreType storeType = SYSTEM_STORE;
54 CertSvcStoreCertList* certList = NULL;
55 CertSvcStoreCertList* tmpNode = NULL;
61 result = certsvc_pkcs12_get_certificate_list_from_store(instance, storeType, DISABLED, &certList, &length);
62 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Getting certificate list from system store failed");
63 if(result == CERTSVC_SUCCESS)
66 while(tmpNode != NULL)
69 tmpNode = tmpNode->next;
72 result = certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certList);
73 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Freeing certificate list from system store failed");
79 /* Set the status of the certificate to disabled/enabled in system store and get the status */
80 RUNNER_TEST(CERTSVC_PKCS12_1002_certsvc_set_cert_to_disabled_and_get_status_for_system_store)
82 CertStoreType storeType = SYSTEM_STORE;
90 result = certsvc_string_new(instance, "Certum_Root_CA.pem", strlen("Certum_Root_CA.pem"), &Alias);
91 RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "certsvc_string_new failed. result : " << result);
93 result = certsvc_pkcs12_get_certificate_status_from_store(instance, storeType, Alias, &status);
94 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Get certificate status from system store failed.");
96 // if status is already disabled, roll it back to enable and go on
97 if (status == DISABLED) {
98 result = certsvc_pkcs12_set_certificate_status_to_store(instance, storeType, DISABLED, Alias, ENABLED);
99 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Roll back certificate status to system store failed.");
103 result = certsvc_pkcs12_set_certificate_status_to_store(instance, storeType, DISABLED, Alias, Status);
104 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Set certificate status to system store failed.");
106 result = certsvc_pkcs12_get_certificate_status_from_store(instance, storeType, Alias, &status);
107 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Get certificate status from system store failed.");
110 result = certsvc_pkcs12_set_certificate_status_to_store(instance, storeType, DISABLED, Alias, Status);
111 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Set certificate status to system store failed.");
113 result = certsvc_pkcs12_get_certificate_status_from_store(instance, storeType, Alias, &status);
114 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Get certificate status from system store failed.");
116 certsvc_string_free(Alias);
121 /* Install a CRT file to individual stores */
122 RUNNER_TEST(CERTSVC_PKCS12_1003_add_pem_file_in_individual_store)
124 CertSvcStoreCertList* certList = NULL;
125 CertSvcStoreCertList* tmpNode = NULL;
126 CertSvcStoreCertList* tmp = NULL;
132 CertSvcStoreCertList* certList1 = NULL;
133 CertSvcString buffer1, gname;
134 CertSvcString buffer2;
135 const char *temp = NULL;
136 CertSvcCertificate certificate;
144 Pass.privateHandler = NULL;
146 const char *path = "/usr/share/cert-svc/tests/wifi-server.pem";
147 result = certsvc_string_new(instance, path, strlen(path), &Path);
148 RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "certsvc_string_new failed. result : " << result);
151 const char *cAlias = "PEM-wifi-server-1";
152 result = certsvc_string_new(instance, cAlias, strlen(cAlias), &Alias);
153 RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "certsvc_string_new failed. result : " << result);
155 result = certsvc_pkcs12_import_from_file_to_store(instance, type, Path, Pass, Alias);
156 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Importing PEM file to WIFI store failed.");
157 certsvc_string_free(Alias);
160 cAlias = "PEM-wifi-server-2";
161 result = certsvc_string_new(instance, cAlias, strlen(cAlias), &Alias);
162 RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "certsvc_string_new failed. result : " << result);
163 result = certsvc_pkcs12_import_from_file_to_store(instance, type, Path, Pass, Alias);
164 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Importing PEM file to VPN store failed.");
165 certsvc_string_free(Alias);
168 cAlias = "PEM-wifi-server-3";
169 result = certsvc_string_new(instance, cAlias, strlen(cAlias), &Alias);
170 RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "certsvc_string_new failed. result : " << result);
172 result = certsvc_pkcs12_import_from_file_to_store(instance, type, Path, Pass, Alias);
173 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Importing PEM file to EMAIL store failed.");
174 certsvc_string_free(Alias);
176 type = (CertStoreType) (WIFI_STORE | VPN_STORE | EMAIL_STORE);
177 result = certsvc_pkcs12_get_certificate_list_from_store(instance, type, DISABLED, &certList, &length);
178 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Getting certificate list from system store failed");
180 if(result == CERTSVC_SUCCESS)
184 while(tmpNode != NULL)
188 tmpNode = tmpNode->next;
190 result = certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certList);
191 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Freeing certificate list from system store failed");
196 type = (CertStoreType) (WIFI_STORE | VPN_STORE | EMAIL_STORE);
197 result = certsvc_pkcs12_get_certificate_list_from_store(instance, type, DISABLED, &certList, &length);
198 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Getting certificate list from store failed.");
202 result = certsvc_pkcs12_get_certificate_from_store(instance, certList->storeType, certList->gname, &certificate);
203 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Failed to get certificate from store.");
205 result = certsvc_certificate_get_string_field(certificate, CERTSVC_SUBJECT, &buffer1);
206 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Failed to get string field.");
208 result = certsvc_certificate_get_string_field(certificate, CERTSVC_ISSUER_COMMON_NAME, &buffer2);
209 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Failed to get string field.");
211 certsvc_string_to_cstring(buffer1, &temp, &length);
212 certsvc_string_to_cstring(buffer2, &temp, &length);
214 certsvc_string_free(buffer1);
215 certsvc_string_free(buffer2);
216 certsvc_certificate_free(certificate);
217 certList = certList->next;
220 certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certList1);
221 if (certList1 != NULL)
226 certsvc_string_free(Path);
231 /* Installing pem file in all store at once */
232 RUNNER_TEST(CERTSVC_PKCS12_1004_add_pem_file_in_all_store) {
234 const char path[] = "/usr/share/cert-svc/tests/wifi-server.pem";
235 CertSvcStoreCertList* certList = NULL;
236 CertSvcStoreCertList* tmpNode = NULL;
237 CertSvcStoreCertList* tmp = NULL;
239 char *alias = "PEM-wifi-server-all-store";
246 CertSvcString Alias, Path, Pass;
248 Alias.privateHandler = alias;
249 Alias.privateLength = strlen(alias);
250 Pass.privateHandler = pass;
251 Path.privateHandler = (char *)path;
252 Path.privateLength = strlen(path);
254 type = (CertStoreType) (VPN_STORE | EMAIL_STORE | WIFI_STORE);
255 result = certsvc_pkcs12_import_from_file_to_store(instance, type, Path, Pass, Alias);
256 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Importing PEM file to all store failed.");
258 type = (CertStoreType) (WIFI_STORE | VPN_STORE | EMAIL_STORE);
259 result = certsvc_pkcs12_get_certificate_list_from_store(instance, type, DISABLED, &certList, &length);
260 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Getting certificate list from system store failed");
262 if(result == CERTSVC_SUCCESS)
265 while(tmpNode != NULL)
269 tmpNode = tmpNode->next;
271 result = certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certList);
272 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Freeing certificate list from system store failed");
278 /* Install a CRT file to individual stores */
279 RUNNER_TEST(CERTSVC_PKCS12_1005_add_crt_file_in_individual_store) {
281 const char path[] = "/usr/share/cert-svc/tests/Testing.crt";
282 CertSvcStoreCertList* certList = NULL;
283 CertSvcStoreCertList* tmpNode = NULL;
284 CertSvcStoreCertList* tmp = NULL;
286 char *alias = "CRT-TestingCRT1";
292 CertSvcStoreCertList* certList1 = NULL;
293 CertSvcString buffer1, gname;
294 CertSvcString buffer2;
295 const char *temp = NULL;
296 CertSvcCertificate certificate;
299 CertSvcString Alias, Path, Pass;
301 Alias.privateHandler = alias;
302 Alias.privateLength = strlen(alias);
303 Pass.privateHandler = pass;
304 Path.privateHandler = (char *)path;
305 Path.privateLength = strlen(path);
308 result = certsvc_pkcs12_import_from_file_to_store(instance, type, Path, Pass, Alias);
309 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Importing CRT file to WIFI store failed.");
312 result = certsvc_pkcs12_import_from_file_to_store(instance, type, Path, Pass, Alias);
313 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Importing CRT file to VPN store failed.");
316 result = certsvc_pkcs12_import_from_file_to_store(instance, type, Path, Pass, Alias);
317 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Importing CRT file to EMAIL store failed.");
319 type = (CertStoreType) (WIFI_STORE | VPN_STORE | EMAIL_STORE);
320 result = certsvc_pkcs12_get_certificate_list_from_store(instance, type, DISABLED, &certList, &length);
321 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Getting certificate list from system store failed");
323 if(result == CERTSVC_SUCCESS)
326 while(tmpNode != NULL)
330 tmpNode = tmpNode->next;
332 result = certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certList);
333 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Freeing certificate list from system store failed");
337 type = (CertStoreType) (WIFI_STORE | VPN_STORE | EMAIL_STORE);
338 result = certsvc_pkcs12_get_certificate_list_from_store(instance, type, DISABLED, &certList, &length);
339 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Getting certificate list from store failed.");
342 while(certList!=NULL)
344 gname.privateHandler = (char *)certList->gname;
345 gname.privateLength = strlen(certList->gname);
346 result = certsvc_pkcs12_get_certificate_from_store(instance, certList->storeType, certList->gname, &certificate);
347 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Failed to get certificate from store.");
349 result = certsvc_certificate_get_string_field(certificate, CERTSVC_SUBJECT, &buffer1);
350 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Failed to get string field.");
352 result = certsvc_certificate_get_string_field(certificate, CERTSVC_ISSUER_COMMON_NAME, &buffer2);
353 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Failed to get string field.");
355 certsvc_string_to_cstring(buffer1, &temp, &length);
356 certsvc_string_to_cstring(buffer2, &temp, &length);
358 certsvc_string_free(buffer1);
359 certsvc_string_free(buffer2);
360 certsvc_certificate_free(certificate);
361 certList = certList->next;
364 certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certList1);
371 /* Install a CRT file to all store at once */
372 RUNNER_TEST(CERTSVC_PKCS12_1006_add_crt_file_in_all_store) {
374 const char path[] = "/usr/share/cert-svc/tests/Testing.crt";
375 CertSvcStoreCertList* certList = NULL;
376 CertSvcStoreCertList* tmpNode = NULL;
377 CertSvcStoreCertList* tmp = NULL;
379 char *alias = "CRT-TestingCRT1-all-store";
386 CertSvcString Alias, Path, Pass;
388 Alias.privateHandler = alias;
389 Alias.privateLength = strlen(alias);
390 Pass.privateHandler = pass;
391 Path.privateHandler = (char *)path;
392 Path.privateLength = strlen(path);
394 type = (CertStoreType )(WIFI_STORE | VPN_STORE | EMAIL_STORE);
395 result = certsvc_pkcs12_import_from_file_to_store(instance, type, Path, Pass, Alias);
396 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Importing CRT file to all store failed.");
398 type = (CertStoreType) (WIFI_STORE | VPN_STORE | EMAIL_STORE);
399 result = certsvc_pkcs12_get_certificate_list_from_store(instance, type, DISABLED, &certList, &length);
400 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Getting certificate list from system store failed");
402 if(result == CERTSVC_SUCCESS)
405 while(tmpNode != NULL)
409 tmpNode = tmpNode->next;
411 result = certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certList);
412 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Freeing certificate list from system store failed");
419 /* Import a P12 file to individual store */
420 RUNNER_TEST(CERTSVC_PKCS12_1007_install_p12_file_to_individual_store) {
422 const char path[] = "/usr/share/cert-svc/tests/wifiuser.p12";
423 CertSvcStoreCertList* certList = NULL;
424 CertSvcStoreCertList* tmpNode = NULL;
425 CertSvcStoreCertList* tmp = NULL;
426 const char pass[] = "wifi";
427 char *alias = "P12-WifiUser";
428 CertStoreType storeType;
434 CertSvcString Alias, Path, Pass;
436 Alias.privateHandler = (char *)alias;
437 Alias.privateLength = strlen(alias);
438 Pass.privateHandler = (char *)pass;
439 Pass.privateLength = strlen(pass);
440 Path.privateHandler = (char *)path;
441 Path.privateLength = strlen(path);
444 result = certsvc_pkcs12_import_from_file(instance, Path, Pass, Alias);
445 RUNNER_ASSERT_MSG(result == CERTSVC_SUCCESS, "certsvc_pkcs12_import_from_file failed.");
448 storeType = WIFI_STORE;
449 result = certsvc_pkcs12_import_from_file_to_store(instance, storeType, Path, Pass, Alias);
450 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Importing p12 file to WIFI store failed.");
452 storeType = VPN_STORE;
453 result = certsvc_pkcs12_import_from_file_to_store(instance, storeType, Path, Pass, Alias);
454 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Importing p12 file to VPN store failed.");
456 storeType = EMAIL_STORE;
457 result = certsvc_pkcs12_import_from_file_to_store(instance, storeType, Path, Pass, Alias);
458 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Importing p12 file to EMAIL store failed.");
460 storeType = (CertStoreType) (WIFI_STORE | VPN_STORE | EMAIL_STORE);
461 result = certsvc_pkcs12_get_certificate_list_from_store(instance, storeType, DISABLED, &certList, &length);
462 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Getting certificate list from system store failed");
464 if(result == CERTSVC_SUCCESS)
467 while(tmpNode != NULL)
471 tmpNode = tmpNode->next;
473 result = certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certList);
474 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Freeing certificate list from system store failed");
480 /* Import a P12 file to all store */
481 RUNNER_TEST(CERTSVC_PKCS12_1008_install_p12_file_to_all_store) {
483 const char path[] = "/usr/share/cert-svc/tests/wifiuser.p12";
484 CertSvcStoreCertList* certList = NULL;
485 CertSvcStoreCertList* tmpNode = NULL;
486 CertSvcStoreCertList* tmp = NULL;
487 const char pass[] = "wifi";
488 char *alias = "P12-WifiUser-all-store";
489 CertStoreType storeType;
495 CertSvcString Alias, Path, Pass;
497 Alias.privateHandler = (char *)alias;
498 Alias.privateLength = strlen(alias);
499 Pass.privateHandler = (char *)pass;
500 Pass.privateLength = strlen(pass);
501 Path.privateHandler = (char *)path;
502 Path.privateLength = strlen(path);
504 storeType = (CertStoreType )(WIFI_STORE | VPN_STORE | EMAIL_STORE);
505 result = certsvc_pkcs12_import_from_file_to_store(instance, storeType, Path, Pass, Alias);
506 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Importing p12 file to WIFI store failed.");
508 storeType = (CertStoreType) (WIFI_STORE | VPN_STORE | EMAIL_STORE);
509 result = certsvc_pkcs12_get_certificate_list_from_store(instance, storeType, DISABLED, &certList, &length);
510 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Getting certificate list from system store failed");
512 if(result == CERTSVC_SUCCESS)
515 while(tmpNode != NULL)
519 tmpNode = tmpNode->next;
521 result = certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certList);
522 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Freeing certificate list from system store failed");
528 /* Import a P12 file to individual store */
529 RUNNER_TEST(CERTSVC_PKCS12_1009_install_pfx_file_to_individual_store) {
531 const char path[] = "/usr/share/cert-svc/tests/wifiserver.pfx";
532 CertSvcStoreCertList* certList = NULL;
533 CertSvcStoreCertList* tmpNode = NULL;
534 CertSvcStoreCertList* tmp = NULL;
535 const char pass[] = "wifi";
536 char *alias = "PFX-WifiServer";
537 CertStoreType storeType;
543 CertSvcString Alias, Path, Pass;
545 Alias.privateHandler = (char *)alias;
546 Alias.privateLength = strlen(alias);
547 Pass.privateHandler = (char *)pass;
548 Pass.privateLength = strlen(pass);
549 Path.privateHandler = (char *)path;
550 Path.privateLength = strlen(path);
552 storeType = WIFI_STORE;
553 result = certsvc_pkcs12_import_from_file_to_store(instance, storeType, Path, Pass, Alias);
554 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Importing PFX file to WIFI store failed.");
556 storeType = VPN_STORE;
557 result = certsvc_pkcs12_import_from_file_to_store(instance, storeType, Path, Pass, Alias);
558 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Importing PFX file to VPN store failed.");
560 storeType = EMAIL_STORE;
561 result = certsvc_pkcs12_import_from_file_to_store(instance, storeType, Path, Pass, Alias);
562 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Importing PFX file to EMAIL store failed.");
564 storeType = (CertStoreType) (WIFI_STORE | VPN_STORE | EMAIL_STORE);
565 result = certsvc_pkcs12_get_certificate_list_from_store(instance, storeType, DISABLED, &certList, &length);
566 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Getting certificate list from system store failed");
568 if(result == CERTSVC_SUCCESS)
571 while(tmpNode != NULL)
575 tmpNode = tmpNode->next;
577 result = certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certList);
578 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Freeing certificate list from system store failed");
584 RUNNER_TEST(CERTSVC_PKCS12_1010_install_pfx_file_to_all_store) {
586 const char path[] = "/usr/share/cert-svc/tests/wifiserver.pfx";
587 const char pass[] = "wifi";
588 char *alias = "PFX-WifiServer-all-store";
589 CertStoreType storeType;
590 CertSvcStoreCertList* certList = NULL;
591 CertSvcStoreCertList* tmpNode = NULL;
592 CertSvcStoreCertList* tmp = NULL;
598 CertSvcString Alias, Path, Pass;
600 Alias.privateHandler = (char *)alias;
601 Alias.privateLength = strlen(alias);
602 Pass.privateHandler = (char *)pass;
603 Pass.privateLength = strlen(pass);
604 Path.privateHandler = (char *)path;
605 Path.privateLength = strlen(path);
607 storeType = (CertStoreType) (VPN_STORE | EMAIL_STORE | WIFI_STORE);
608 result = certsvc_pkcs12_import_from_file_to_store(instance, storeType, Path, Pass, Alias);
609 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Importing PFX file to WIFI store failed.");
611 storeType = (CertStoreType) (WIFI_STORE | VPN_STORE | EMAIL_STORE);
612 result = certsvc_pkcs12_get_certificate_list_from_store(instance, storeType, DISABLED, &certList, &length);
613 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Getting certificate list from system store failed");
615 if(result == CERTSVC_SUCCESS)
619 while(tmpNode != NULL)
623 tmpNode = tmpNode->next;
625 result = certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certList);
626 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Freeing certificate list from system store failed");
632 /* Getting all end user & root certificate list from WIFI,VPN,EMAIL store */
633 RUNNER_TEST(CERTSVC_PKCS12_1011_get_all_end_user_certificate_from_store) {
635 CertSvcStoreCertList* certList = NULL;
636 CertSvcStoreCertList* tmpNode = NULL;
637 CertStoreType storeType = (CertStoreType) (WIFI_STORE);
643 result = certsvc_pkcs12_get_end_user_certificate_list_from_store(instance, storeType, &certList, &length);
644 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Getting end user certificate list from store failed.");
648 tmpNode = tmpNode->next;
650 certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certList);
654 storeType = (CertStoreType) (VPN_STORE);
655 result = certsvc_pkcs12_get_end_user_certificate_list_from_store(instance, storeType, &certList, &length);
656 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Getting end user certificate list from store failed.");
660 tmpNode = tmpNode->next;
662 certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certList);
666 storeType = (CertStoreType) (EMAIL_STORE);
667 result = certsvc_pkcs12_get_end_user_certificate_list_from_store(instance, storeType, &certList, &length);
668 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Getting end user certificate list from store failed.");
672 tmpNode = tmpNode->next;
674 certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certList);
678 storeType = (CertStoreType) (WIFI_STORE);
679 result = certsvc_pkcs12_get_root_certificate_list_from_store(instance, storeType, &certList, &length);
680 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Getting end user certificate list from store failed.");
684 tmpNode = tmpNode->next;
686 certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certList);
690 storeType = (CertStoreType) (VPN_STORE);
691 result = certsvc_pkcs12_get_root_certificate_list_from_store(instance, storeType, &certList, &length);
692 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Getting end user certificate list from store failed.");
696 tmpNode = tmpNode->next;
698 certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certList);
702 storeType = (CertStoreType) (EMAIL_STORE);
703 result = certsvc_pkcs12_get_root_certificate_list_from_store(instance, storeType, &certList, &length);
704 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Getting end user certificate list from store failed.");
708 tmpNode = tmpNode->next;
710 certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certList);
717 /* Delete all certificate from WIFI,VPN,EMAIL store */
718 RUNNER_TEST(CERTSVC_PKCS12_1012_delete_all_cert_from_multiple_store) {
720 CertSvcStoreCertList* certList = NULL;
721 CertSvcStoreCertList* certList1 = NULL;
722 CertStoreType storeType = (CertStoreType) (WIFI_STORE | VPN_STORE | EMAIL_STORE);
729 result = certsvc_pkcs12_get_certificate_list_from_store(instance, storeType, DISABLED, &certList, &length);
730 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Getting certificate list from store failed.");
732 while(certList1!=NULL)
734 gname.privateHandler = (char *)certList1->gname;
735 gname.privateLength = strlen(certList1->gname);
736 result = certsvc_pkcs12_delete_certificate_from_store(instance, (CertStoreType) certList1->storeType, gname);
737 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Deleting certificate from store failed.");
738 certList1 = certList1->next;
740 certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certList);
746 /* Import the file to one store and try to get the certlist from all store */
747 RUNNER_TEST(CERTSVC_PKCS12_1013_install_pfx_file_to_one_store_and_get_list_from_multiple_store) {
749 const char path[] = "/usr/share/cert-svc/tests/wifiserver.pfx";
750 const char pass[] = "wifi";
751 char *alias = "PFX-WifiServer-one-store";
752 CertStoreType storeType;
753 CertSvcStoreCertList* certList = NULL;
754 CertSvcStoreCertList* tmpNode = NULL;
755 CertSvcStoreCertList* tmp = NULL;
759 gboolean exists = FALSE;
762 CertSvcString Alias, Path, Pass;
764 Alias.privateHandler = (char *)alias;
765 Alias.privateLength = strlen(alias);
766 Pass.privateHandler = (char *)pass;
767 Pass.privateLength = strlen(pass);
768 Path.privateHandler = (char *)path;
769 Path.privateLength = strlen(path);
771 storeType = (CertStoreType) (VPN_STORE | WIFI_STORE | EMAIL_STORE);
772 result = certsvc_pkcs12_check_alias_exists_in_store(instance, storeType, Alias, &exists);
774 /* installing the pfx in one store and getting the list from multiple store */
775 storeType = (CertStoreType) ( EMAIL_STORE );
776 result = certsvc_pkcs12_import_from_file_to_store(instance, storeType, Path, Pass, Alias);
777 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Importing PFX file to WIFI store failed.");
779 storeType = (CertStoreType) ( VPN_STORE | WIFI_STORE );
780 result = certsvc_pkcs12_import_from_file_to_store(instance, storeType, Path, Pass, Alias);
781 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Importing PFX file to WIFI store failed.");
783 storeType = (CertStoreType) ( VPN_STORE | WIFI_STORE | EMAIL_STORE);
784 result = certsvc_pkcs12_get_certificate_list_from_store(instance, storeType, DISABLED, &certList, &length);
785 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Getting certificate list from system store failed");
787 if(result == CERTSVC_SUCCESS)
790 while(tmpNode != NULL)
794 tmpNode = tmpNode->next;
796 result = certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certList);
797 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Freeing certificate list from system store failed");
804 /* Set the status of the certificate to disabled and trying to delete store */
805 RUNNER_TEST(CERTSVC_PKCS12_1014_installing_pfx_without_password_to_individual_store) {
807 const char path[] = "/usr/share/cert-svc/tests/without_pass.p12";
808 const char pass[] = "";
809 char *alias = "PFX-WifiServer-without-password";
810 CertStoreType storeType;
815 CertSvcString Alias, Path, Pass;
817 Alias.privateHandler = (char *)alias;
818 Alias.privateLength = strlen(alias);
819 Pass.privateHandler = (char *)pass;
820 Pass.privateLength = strlen(pass);
821 Path.privateHandler = (char *)path;
822 Path.privateLength = strlen(path);
824 storeType = (CertStoreType) (VPN_STORE | WIFI_STORE | EMAIL_STORE);
825 result = certsvc_pkcs12_check_alias_exists_in_store(instance, storeType, Alias, &exists);
827 storeType = (CertStoreType) (VPN_STORE | WIFI_STORE | EMAIL_STORE);
828 result = certsvc_pkcs12_import_from_file_to_store(instance, storeType, Path, Pass, Alias);
829 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Importing PFX file to WIFI store failed.");
835 /* Get certificate from WIFI,VPN,EMAIL store */
836 RUNNER_TEST(CERTSVC_PKCS12_1015_get_certificate_from_store) {
838 CertSvcStoreCertList* certList = NULL;
839 CertSvcStoreCertList* certList1 = NULL;
840 CertStoreType storeType = (CertStoreType) (WIFI_STORE | VPN_STORE | EMAIL_STORE);
843 CertSvcString buffer1, gname;
844 CertSvcString buffer2;
845 const char *temp = NULL;
846 CertSvcCertificate certificate;
850 result = certsvc_pkcs12_get_certificate_list_from_store(instance, storeType, DISABLED, &certList, &length);
851 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Getting certificate list from store failed.");
853 while(certList!=NULL)
855 gname.privateHandler = (char *)certList->gname;
856 gname.privateLength = strlen(certList->gname);
857 result = certsvc_pkcs12_get_certificate_from_store(instance, certList->storeType, certList->gname, &certificate);
858 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Failed to get certificate from store.");
860 result = certsvc_certificate_get_string_field(certificate, CERTSVC_SUBJECT, &buffer1);
861 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Failed to get string field.");
863 certsvc_string_to_cstring(buffer1, &temp, &length);
865 result = certsvc_certificate_get_string_field(certificate, CERTSVC_ISSUER_COMMON_NAME, &buffer2);
866 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Failed to get string field.");
868 certsvc_string_to_cstring(buffer2, &temp, &length);
870 certsvc_string_free(buffer1);
871 certsvc_string_free(buffer2);
872 certsvc_certificate_free(certificate);
873 certList = certList->next;
875 certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certList1);
882 /* Get certificate from system store */
883 RUNNER_TEST(CERTSVC_PKCS12_1016_get_certificate_from_system_store) {
885 CertSvcStoreCertList* certList = NULL;
886 CertSvcStoreCertList* certList1 = NULL;
887 CertStoreType storeType = (CertStoreType) (SYSTEM_STORE);
888 int result = CERTSVC_SUCCESS;
891 CertSvcString buffer1, gname;
892 CertSvcString buffer2;
893 const char *temp = NULL;
894 CertSvcCertificate certificate;
898 result = certsvc_pkcs12_get_certificate_list_from_store(instance, storeType, DISABLED, &certList, &length);
899 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Getting certificate list from store failed.");
901 while(certList!=NULL)
903 gname.privateHandler = (char *)certList->gname;
904 gname.privateLength = strlen(certList->gname);
905 result = certsvc_pkcs12_get_certificate_from_store(instance, certList->storeType, certList->gname, &certificate);
906 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Failed to get certificate from store.");
908 result = certsvc_certificate_get_string_field(certificate, CERTSVC_SUBJECT, &buffer1);
909 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Failed to get string field.");
911 result = certsvc_certificate_get_string_field(certificate, CERTSVC_ISSUER_COMMON_NAME, &buffer2);
912 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Failed to get string field.");
914 certsvc_string_to_cstring(buffer1, &temp, &length);
915 certsvc_string_to_cstring(buffer2, &temp, &length);
917 certsvc_string_free(buffer1);
918 certsvc_string_free(buffer2);
919 certsvc_certificate_free(certificate);
920 certList = certList->next;
923 certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &certList1);
931 /* Load certificate list form store for a certificate */
932 RUNNER_TEST(CERTSVC_PKCS12_1017_load_cert_list_from_store) {
934 CertStoreType storeType;
935 CertSvcCertificateList certList;
936 CertSvcStoreCertList* certList1 = NULL;
937 CertSvcCertificate cert;
938 int result = CERTSVC_SUCCESS;
941 size_t certListlength = 0;
942 const char *temp = NULL;
943 CertSvcString buffer1,buffer2, gname;
947 storeType = (CertStoreType) (VPN_STORE);
948 result = certsvc_pkcs12_get_certificate_list_from_store(instance, storeType, DISABLED, &certList1, &length);
949 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Getting certificate list from store failed.");
950 while(certList1!=NULL)
952 gname.privateHandler = (char *)certList1->gname;
953 gname.privateLength = strlen(certList1->gname);
955 result = certsvc_pkcs12_load_certificate_list_from_store(instance, storeType, gname, &certList);
956 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Load certificate list form store failed.");
958 result = certsvc_certificate_list_get_length(certList, &certListlength);
959 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Get certificate list get length failed.");
961 for(i=0; i<certListlength; i++)
963 result = certsvc_certificate_list_get_one(certList, i, &cert);
964 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "certsvc_certificate_list_get_one returned not CERTSVC_SUCCESS");
966 result = certsvc_certificate_get_string_field(cert, CERTSVC_SUBJECT, &buffer1);
967 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Failed to get string field.");
969 certsvc_string_to_cstring(buffer1, &temp, &length);
971 result = certsvc_certificate_get_string_field(cert, CERTSVC_ISSUER_COMMON_NAME, &buffer2);
972 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Failed to get string field.");
974 certsvc_string_to_cstring(buffer2, &temp, &length);
976 break; // Should run for only one time //
982 /* Load certificate list form store for a certificate */
983 RUNNER_TEST(CERTSVC_PKCS12_1018_get_duplicate_private_key) {
985 CertStoreType storeType;
986 CertSvcStoreCertList* certList1 = NULL;
988 int result = CERTSVC_SUCCESS;
991 const char *privatekey_path = "/usr/share/cert-svc/pkcs12/temp.txt";
992 EVP_PKEY *privatekey = NULL;
996 storeType = (CertStoreType) (VPN_STORE);
997 result = certsvc_pkcs12_get_certificate_list_from_store(instance, storeType, DISABLED, &certList1, &length);
998 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Getting certificate list from store failed.");
999 while(certList1!=NULL)
1001 gname.privateHandler = (char *)certList1->gname;
1002 gname.privateLength = strlen(certList1->gname);
1003 result = certsvc_pkcs12_dup_evp_pkey_from_store(instance, storeType, gname, &privatekey);
1004 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Getting duplicate private key from store failed.");
1006 if ((fp = fopen(privatekey_path, "w")) == NULL) {
1007 result = CERTSVC_FAIL;
1008 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Failed to open file for writing.");
1011 result = PEM_write_PrivateKey(fp, privatekey, NULL, NULL, 0, NULL, NULL);
1012 RUNNER_ASSERT_MSG(result!=0, "Failed to write private key onto file.");
1015 certsvc_pkcs12_free_evp_pkey(privatekey);
1017 break; // Should run for only one time //
1023 /* Get certificate from system store */
1024 RUNNER_TEST(CERTSVC_PKCS12_1019_check_alias_exists) {
1026 char *alias = "PFX-WifiServer-without-password";
1027 CertStoreType storeType;
1028 int result = CERTSVC_SUCCESS;
1029 gboolean exists = FALSE;
1032 CertSvcString Alias;
1034 Alias.privateHandler = (char *)alias;
1035 Alias.privateLength = strlen(alias);
1036 storeType = (CertStoreType) (VPN_STORE | WIFI_STORE | EMAIL_STORE);
1037 result = certsvc_pkcs12_check_alias_exists_in_store(instance, storeType, Alias, &exists);
1038 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Getting certificate list from store failed.");
1043 /* Set the status of the certificate to disabled/enabled in wifi,vpn,email store */
1044 RUNNER_TEST(CERTSVC_PKCS12_1020_certsvc_set_cert_to_disabled_and_get_status_for_individual_store) {
1046 CertSvcStoreCertList* certList = NULL;
1047 CertSvcStoreCertList* tmpNode = NULL;
1048 int array[3]={VPN_STORE,WIFI_STORE,EMAIL_STORE};
1049 int result = CERTSVC_SUCCESS;
1050 CertSvcString Alias;
1059 for(int j=0;j<3;j++)
1063 result = certsvc_pkcs12_get_certificate_list_from_store(instance, (CertStoreType)i, DISABLED, &certList, &length);
1064 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Getting certificate list from store failed.");
1066 while(certList!=NULL)
1069 Alias.privateHandler = certList->gname;
1070 Alias.privateLength = strlen((const char*)certList->gname);
1072 result = certsvc_pkcs12_get_certificate_status_from_store(instance, (CertStoreType)i, Alias, &status);
1073 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Get certificate status from system store failed.");
1076 result = certsvc_pkcs12_set_certificate_status_to_store(instance, (CertStoreType)i, DISABLED, Alias, Status);
1077 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Set certificate status to system store failed.");
1079 result = certsvc_pkcs12_get_certificate_status_from_store(instance, (CertStoreType)i, Alias, &status);
1080 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Get certificate status from system store failed.");
1083 result = certsvc_pkcs12_set_certificate_status_to_store(instance, (CertStoreType)i, DISABLED, Alias, Status);
1084 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Set certificate status to system store failed.");
1086 result = certsvc_pkcs12_get_certificate_status_from_store(instance, (CertStoreType)i, Alias, &status);
1087 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Get certificate status from system store failed.");
1089 certList = certList->next;
1092 certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &tmpNode);
1098 /* Negative test case */
1099 /* Install a PEM file to invalid store */
1100 RUNNER_TEST(CERTSVC_PKCS12_1021_add_pem_file_to_invalid_store) {
1102 const char path[] = "/usr/share/cert-svc/tests/wifi-server.pem";
1104 char *alias = "PFX-WifiServer-one-store";
1106 CertStoreType storeType = (CertStoreType) (-1);
1107 CertSvcString Alias, Path, Pass;
1111 Alias.privateHandler = alias;
1112 Alias.privateLength = strlen(alias);
1113 Pass.privateHandler = pass;
1114 Path.privateHandler = (char *)path;
1115 Path.privateLength = strlen(path);
1117 result = certsvc_pkcs12_import_from_file_to_store(instance, storeType, Path, Pass, Alias);
1118 RUNNER_ASSERT_MSG(result==CERTSVC_INVALID_STORE_TYPE, "Importing certifcate with existing alias to WIFI store failed.");
1120 result = certsvc_pkcs12_import_from_file_to_store(instance, storeType, Path, Pass, Alias);
1121 RUNNER_ASSERT_MSG(result==CERTSVC_INVALID_STORE_TYPE, "Importing certifcate with existing alias to VPN store failed.");
1123 result = certsvc_pkcs12_import_from_file_to_store(instance, storeType, Path, Pass, Alias);
1124 RUNNER_ASSERT_MSG(result==CERTSVC_INVALID_STORE_TYPE, "Importing certifcate with existing alias to EMAIL store failed.");
1126 /* Installing a PEM certificate to system store should fail */
1127 storeType = SYSTEM_STORE;
1128 result = certsvc_pkcs12_import_from_file_to_store(instance, storeType, Path, Pass, Alias);
1129 RUNNER_ASSERT_MSG(result!=CERTSVC_SUCCESS, "Importing PEM file to EMAIL store failed.");
1131 /* Removing certificate to system store should fail */
1132 result = certsvc_pkcs12_delete_certificate_from_store(instance, storeType, Alias);
1133 RUNNER_ASSERT_MSG(result!=CERTSVC_SUCCESS, "Deleting certificate from store failed.");
1139 /* Set the status of the certificate to disabled/enabled from invalid store */
1140 RUNNER_TEST(CERTSVC_PKCS12_1022_certsvc_set_cert_to_disabled_and_get_status_for_invalid_store) {
1142 char* gname = "eb375c3e.0";
1143 CertStoreType storeType = (CertStoreType) (DISABLED);
1147 CertSvcString Alias;
1151 Alias.privateHandler = gname;
1152 Alias.privateLength = strlen((const char*)gname);
1154 /* getting status from a invalid store should fail */
1155 result = certsvc_pkcs12_get_certificate_status_from_store(instance, storeType, Alias, &status);
1156 RUNNER_ASSERT_MSG(result!=CERTSVC_SUCCESS, "Get certificate status from system store failed.");
1158 /* setting status to a invalid store should fail */
1160 result = certsvc_pkcs12_set_certificate_status_to_store(instance, storeType, DISABLED, Alias, Status);
1161 RUNNER_ASSERT_MSG(result!=CERTSVC_SUCCESS, "Set certificate status to system store failed.");
1163 /* getting status from a invalid store should fail */
1164 result = certsvc_pkcs12_get_certificate_status_from_store(instance, storeType, Alias, &status);
1165 RUNNER_ASSERT_MSG(result!=CERTSVC_SUCCESS, "Get certificate status from system store failed.");
1167 /* setting status to a invalid store should fail */
1169 result = certsvc_pkcs12_set_certificate_status_to_store(instance, storeType, DISABLED, Alias, Status);
1170 RUNNER_ASSERT_MSG(result!=CERTSVC_SUCCESS, "Set certificate status to system store failed.");
1172 /* setting status to a invalid store should fail */
1173 result = certsvc_pkcs12_get_certificate_status_from_store(instance, storeType, Alias, &status);
1174 RUNNER_ASSERT_MSG(result!=CERTSVC_SUCCESS, "Get certificate status from system store failed.");
1180 /* Set the status of the certificate to disabled/enabled in wifi,vpn,email store */
1181 RUNNER_TEST(CERTSVC_PKCS12_1023_certsvc_set_cert_to_disabled_and_get_status_for_invalid_store) {
1183 CertStoreType storeType = (CertStoreType) (0);
1184 CertSvcStoreCertList* certList = NULL;
1189 CertSvcString Alias;
1193 /* Getting certificate list from invalid store should fail */
1194 result = certsvc_pkcs12_get_certificate_list_from_store(instance, storeType, DISABLED, &certList, &length);
1195 RUNNER_ASSERT_MSG(result!=CERTSVC_SUCCESS, "Getting certificate list from store failed.");
1196 while(certList!=NULL)
1198 Alias.privateHandler = certList->gname;
1199 Alias.privateLength = strlen((const char*)certList->gname);
1201 result = certsvc_pkcs12_get_certificate_status_from_store(instance, storeType, Alias, &status);
1202 RUNNER_ASSERT_MSG(result!=CERTSVC_SUCCESS, "Get certificate status from system store failed.");
1205 result = certsvc_pkcs12_set_certificate_status_to_store(instance, storeType, DISABLED, Alias, Status);
1206 RUNNER_ASSERT_MSG(result!=CERTSVC_SUCCESS, "Set certificate status to system store failed.");
1208 result = certsvc_pkcs12_get_certificate_status_from_store(instance, storeType, Alias, &status);
1209 RUNNER_ASSERT_MSG(result!=CERTSVC_SUCCESS, "Get certificate status from system store failed.");
1212 result = certsvc_pkcs12_set_certificate_status_to_store(instance, storeType, DISABLED, Alias, Status);
1213 RUNNER_ASSERT_MSG(result!=CERTSVC_SUCCESS, "Set certificate status to system store failed.");
1215 result = certsvc_pkcs12_get_certificate_status_from_store(instance, storeType, Alias, &status);
1216 RUNNER_ASSERT_MSG(result!=CERTSVC_SUCCESS, "Get certificate status from system store failed.");
1218 certList = certList->next;
1224 /* Intsalling an invalid crt file to valid store & invalid store*/
1225 RUNNER_TEST(CERTSVC_PKCS12_1024_certsvc_set_and_get_for_invalid_store) {
1227 const char path[] = "/usr/share/cert-svc/tests/Invalidcrt.crt";
1229 char *alias = "TestingCRT1";
1234 CertSvcString Alias, Path, Pass;
1236 Alias.privateHandler = alias;
1237 Alias.privateLength = strlen(alias);
1238 Pass.privateHandler = pass;
1239 Path.privateHandler = (char *)path;
1240 Path.privateLength = strlen(path);
1242 /* Installing an invalid CRT file to valid store should fail */
1244 result = certsvc_pkcs12_import_from_file_to_store(instance, type, Path, Pass, Alias);
1245 RUNNER_ASSERT_MSG(result!=CERTSVC_SUCCESS, "Importing CRT file to WIFI store failed.");
1247 /* Installing an invalid CRT file to valid store should fail */
1249 result = certsvc_pkcs12_import_from_file_to_store(instance, type, Path, Pass, Alias);
1250 RUNNER_ASSERT_MSG(result!=CERTSVC_SUCCESS, "Importing CRT file to VPN store failed.");
1252 /* Installing an invalid CRT file to valid store should fail */
1254 result = certsvc_pkcs12_import_from_file_to_store(instance, type, Path, Pass, Alias);
1255 RUNNER_ASSERT_MSG(result!=CERTSVC_SUCCESS, "Importing CRT file to EMAIL store failed.");
1257 /* Installing an invalid CRT file to valid store should fail */
1258 type = (CertStoreType) 0;
1259 result = certsvc_pkcs12_import_from_file_to_store(instance, type, Path, Pass, Alias);
1260 RUNNER_ASSERT_MSG(result!=CERTSVC_SUCCESS, "Importing CRT file to EMAIL store failed.");
1265 /* Import a invalid P12 file to individual and all store */
1266 RUNNER_TEST(CERTSVC_PKCS12_1025_install_invalid_pfx_file_to_individual_and_all_store) {
1268 const char path[] = "/usr/share/cert-svc/tests/test.pfx";
1269 const char pass[] = "wifi";
1270 char *alias = "WifiServer-123";
1271 CertStoreType storeType;
1275 CertSvcString Alias, Path, Pass;
1277 Alias.privateHandler = (char *)alias;
1278 Alias.privateLength = strlen(alias);
1279 Pass.privateHandler = (char *)pass;
1280 Pass.privateLength = strlen(pass);
1281 Path.privateHandler = (char *)path;
1282 Path.privateLength = strlen(path);
1284 /* importing p12/pfx to system store should fail */
1285 storeType = SYSTEM_STORE;
1286 result = certsvc_pkcs12_import_from_file_to_store(instance, storeType, Path, Pass, Alias);
1287 RUNNER_ASSERT_MSG(result!=CERTSVC_SUCCESS, "Importing PFX file to WIFI store failed.");
1289 /* Importing invalid pfx file to valid store should fail */
1290 storeType = WIFI_STORE;
1291 result = certsvc_pkcs12_import_from_file_to_store(instance, storeType, Path, Pass, Alias);
1292 RUNNER_ASSERT_MSG(result!=CERTSVC_SUCCESS, "Importing PFX file to WIFI store failed.");
1294 /* Importing invalid pfx file to valid store should fail */
1295 storeType = VPN_STORE;
1296 result = certsvc_pkcs12_import_from_file_to_store(instance, storeType, Path, Pass, Alias);
1297 RUNNER_ASSERT_MSG(result!=CERTSVC_SUCCESS, "Importing PFX file to VPN store failed.");
1299 /* Importing invalid pfx file to valid store should fail */
1300 storeType = EMAIL_STORE;
1301 result = certsvc_pkcs12_import_from_file_to_store(instance, storeType, Path, Pass, Alias);
1302 RUNNER_ASSERT_MSG(result!=CERTSVC_SUCCESS, "Importing PFX file to EMAIL store failed.");
1304 /* Importing invalid pfx file to valid store should fail */
1305 storeType = (CertStoreType) (EMAIL_STORE | VPN_STORE | WIFI_STORE);
1306 result = certsvc_pkcs12_import_from_file_to_store(instance, storeType, Path, Pass, Alias);
1307 RUNNER_ASSERT_MSG(result!=CERTSVC_SUCCESS, "Importing PFX file to EMAIL store failed.");
1312 /* Set the status of the certificate to disabled/enabled in wifi,vpn,email store */
1313 RUNNER_TEST(CERTSVC_PKCS12_1026_deleting_a_certificate_from_invalid_store) {
1315 CertStoreType storeType = (CertStoreType) (WIFI_STORE);
1316 CertSvcStoreCertList* certList = NULL;
1321 CertSvcString Alias;
1325 /* Getting certificate list from invalid store should fail */
1326 result = certsvc_pkcs12_get_certificate_list_from_store(instance, storeType, DISABLED, &certList, &length);
1327 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Getting certificate list from store failed.");
1328 while(certList!=NULL)
1330 Alias.privateHandler = certList->gname;
1331 Alias.privateLength = strlen((const char*)certList->gname);
1333 result = certsvc_pkcs12_get_certificate_status_from_store(instance, (CertStoreType)-1, Alias, &status);
1334 RUNNER_ASSERT_MSG(result!=CERTSVC_SUCCESS, "Get certificate status from system store failed.");
1337 result = certsvc_pkcs12_set_certificate_status_to_store(instance, (CertStoreType)-1, DISABLED, Alias, Status);
1338 RUNNER_ASSERT_MSG(result!=CERTSVC_SUCCESS, "Set certificate status to system store failed.");
1340 result = certsvc_pkcs12_get_certificate_status_from_store(instance, (CertStoreType)-1, Alias, &status);
1341 RUNNER_ASSERT_MSG(result!=CERTSVC_SUCCESS, "Get certificate status from system store failed.");
1344 result = certsvc_pkcs12_set_certificate_status_to_store(instance, (CertStoreType)-1, DISABLED, Alias, Status);
1345 RUNNER_ASSERT_MSG(result!=CERTSVC_SUCCESS, "Set certificate status to system store failed.");
1347 result = certsvc_pkcs12_get_certificate_status_from_store(instance, (CertStoreType)-1, Alias, &status);
1348 RUNNER_ASSERT_MSG(result!=CERTSVC_SUCCESS, "Get certificate status from system store failed.");
1350 certList = certList->next;
1356 #define EAP_TLS_USER_CERT_PATH "user_cert.pem"
1357 #define EAP_TLS_PATH "/tmp/"
1358 #define EAP_TLS_CA_CERT_PATH "ca_cert.pem"
1359 #define EAP_TLS_PRIVATEKEY_PATH "privatekey.pem"
1361 /* Set the status of the certificate to disabled/enabled in wifi,vpn,email store */
1362 RUNNER_TEST(CERTSVC_PKCS12_1027_get_alias_name_from_gname_from_store) {
1364 CertStoreType storeType = (CertStoreType) (WIFI_STORE);
1365 CertSvcStoreCertList* certList = NULL;
1366 CertSvcCertificate user_certificate;
1367 CertSvcCertificateList cert_list;
1368 CertSvcCertificate ca_certificate;
1369 CertSvcCertificate *selected_certificate = NULL;
1374 size_t cert_counts = 0;
1375 CertSvcString Alias;
1379 EVP_PKEY *privatekey = NULL;
1380 char privatekey_path[512];
1381 char ca_cert_path[512];
1382 char user_cert_path[512];
1387 /* Getting certificate list from invalid store should fail */
1388 result = certsvc_pkcs12_get_certificate_list_from_store(instance, storeType, DISABLED, &certList, &length);
1389 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Getting certificate list from store failed.");
1390 while(certList!=NULL) {
1391 Alias.privateHandler = certList->gname;
1392 Alias.privateLength = strlen((const char*)certList->gname);
1394 result = certsvc_pkcs12_get_alias_name_for_certificate_in_store(instance, certList->storeType, Alias, &alias);
1395 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Getting alias name from gname failed.");
1397 result = certsvc_pkcs12_load_certificate_list_from_store(instance, certList->storeType, Alias, &cert_list);
1398 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "failed to certsvc_pkcs12_load_certificate_list");
1400 result = certsvc_certificate_list_get_length(cert_list, &cert_counts);
1401 RUNNER_ASSERT_MSG(cert_counts >= 1, "there is no certificates");
1403 selected_certificate = new CertSvcCertificate[cert_counts];
1404 RUNNER_ASSERT_MSG(selected_certificate != NULL, "failed to allocate memory");
1406 result = certsvc_certificate_list_get_one(cert_list, 0, &user_certificate);
1407 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "failed to certsvc_certificate_list_get_one");
1409 result = certsvc_certificate_dup_x509(user_certificate, &x509);
1411 sprintf(user_cert_path, "/usr/share/cert-svc/pkcs12/file_%d", count++);
1412 fp = fopen(user_cert_path, "w");
1413 RUNNER_ASSERT_MSG(fp != NULL, "Failed to open the file for writing");
1415 if (count==5) break;
1417 result = PEM_write_X509(fp, x509);
1419 certsvc_certificate_free_x509(x509);
1420 certList = certList->next;
1422 cert_index = cert_counts - 1;
1423 selected_certificate[0] = user_certificate;
1425 sprintf(ca_cert_path, "%s%s_%s", EAP_TLS_PATH, certList->gname, EAP_TLS_CA_CERT_PATH);
1426 while (cert_index) {
1427 result = certsvc_certificate_list_get_one(cert_list, cert_index, &ca_certificate);
1428 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Failed to certsvc_certificate_list_get_one");
1430 selected_certificate[cert_counts-cert_index] = ca_certificate;
1433 result = certsvc_certificate_dup_x509(ca_certificate, &x509);
1435 fp = fopen(ca_cert_path, "a");
1436 RUNNER_ASSERT_MSG(fp != NULL, "Failed to open the file for writing");
1438 result = PEM_write_X509(fp, x509);
1440 certsvc_certificate_free_x509(x509);
1442 result = certsvc_certificate_verify(selected_certificate[0], selected_certificate, cert_counts, NULL, 0, &validity);
1443 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Failed to verify ca_certificate");
1444 RUNNER_ASSERT_MSG(validity != 0, "Invalid certificate");
1446 result = certsvc_pkcs12_dup_evp_pkey_from_store(instance, WIFI_STORE, Alias, &privatekey);
1447 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Failed to duplicate the private key for a certificate from wifi store");
1449 sprintf(privatekey_path, "%s%s_%s", EAP_TLS_PATH, certList->gname, EAP_TLS_PRIVATEKEY_PATH);
1450 fp = fopen(privatekey_path, "w");
1451 RUNNER_ASSERT_MSG(fp != NULL, "Failed to open the file for writing");
1453 result = PEM_write_PrivateKey(fp, privatekey, NULL, NULL, 0, NULL, NULL);
1455 certsvc_pkcs12_free_evp_pkey(privatekey);
1458 delete []selected_certificate;
1463 /* Set the status of the certificate to disabled/enabled in wifi,vpn,email store */
1464 RUNNER_TEST(CERTSVC_PKCS12_1028_certsvc_set_cert_to_disabled_and_get_status_for_individual_store) {
1466 CertSvcStoreCertList* certList = NULL;
1467 CertSvcStoreCertList* tmpNode = NULL;
1468 int array[3]={VPN_STORE,WIFI_STORE,EMAIL_STORE};
1469 int result = CERTSVC_SUCCESS;
1470 CertSvcString Alias;
1479 for(int j=0;j<3;j++)
1483 result = certsvc_pkcs12_get_certificate_list_from_store(instance, (CertStoreType)i, ENABLED, &certList, &length);
1484 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Getting certificate list from store failed.");
1486 while(certList!=NULL)
1489 Alias.privateHandler = certList->gname;
1490 Alias.privateLength = strlen((const char*)certList->gname);
1492 result = certsvc_pkcs12_get_certificate_status_from_store(instance, (CertStoreType)i, Alias, &status);
1493 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Get certificate status from store failed.");
1496 result = certsvc_pkcs12_set_certificate_status_to_store(instance, (CertStoreType)i, ENABLED, Alias, Status);
1497 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Set certificate status to store failed.");
1500 result = certsvc_pkcs12_get_certificate_status_from_store(instance, (CertStoreType)i, Alias, &status);
1501 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Get certificate status from store failed.");
1504 result = certsvc_pkcs12_set_certificate_status_to_store(instance, (CertStoreType)i, ENABLED, Alias, Status);
1505 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Set certificate status to store failed.");
1508 result = certsvc_pkcs12_get_certificate_status_from_store(instance, (CertStoreType)i, Alias, &status);
1509 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Get certificate status from store failed.");
1512 result = certsvc_pkcs12_set_certificate_status_to_store(instance, (CertStoreType)i, DISABLED, Alias, Status);
1513 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Set certificate status to store failed.");
1516 result = certsvc_pkcs12_get_certificate_status_from_store(instance, (CertStoreType)i, Alias, &status);
1517 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Get certificate status from store failed.");
1520 result = certsvc_pkcs12_set_certificate_status_to_store(instance, (CertStoreType)i, DISABLED, Alias, Status);
1521 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Set certificate status to store failed.");
1524 result = certsvc_pkcs12_get_certificate_status_from_store(instance, (CertStoreType)i, Alias, &status);
1525 RUNNER_ASSERT_MSG(result==CERTSVC_SUCCESS, "Get certificate status from store failed.");
1527 certList = certList->next;
1530 certsvc_pkcs12_free_certificate_list_loaded_from_store(instance, &tmpNode);