• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * This file is part of the openHiTLS project.
3  *
4  * openHiTLS is licensed under the Mulan PSL v2.
5  * You can use this software according to the terms and conditions of the Mulan PSL v2.
6  * You may obtain a copy of Mulan PSL v2 at:
7  *
8  *     http://license.coscl.org.cn/MulanPSL2
9  *
10  * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11  * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12  * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
13  * See the Mulan PSL v2 for more details.
14  */
15 /* BEGIN_HEADER */
16 
17 #include <stdio.h>
18 #include <stdint.h>
19 #include <stdlib.h>
20 #include <string.h>
21 #include "securec.h"
22 #include "bsl_errno.h"
23 #include "bsl_sal.h"
24 #include "bsl_pem_internal.h"
25 
26 /* END_HEADER */
27 
28 /* BEGIN_CASE */
SDV_BSL_PEM_ISPEM_FUNC_TC001(char * data,int expflag)29 void SDV_BSL_PEM_ISPEM_FUNC_TC001(char *data, int expflag)
30 {
31     char *encode = data;
32     uint32_t encodeLen = strlen(data);
33     bool isPem = BSL_PEM_IsPemFormat(encode, encodeLen);
34     ASSERT_TRUE(isPem == (bool)expflag);
35 EXIT:
36     return;
37 }
38 /* END_CASE */
39 
40 /* BEGIN_CASE */
SDV_BSL_PEM_ISPEM_FUNC_TC002(void)41 void SDV_BSL_PEM_ISPEM_FUNC_TC002(void)
42 {
43     char *aa = "aaaaaaaa";
44     ASSERT_TRUE(BSL_PEM_IsPemFormat(NULL, 0) == false);
45     ASSERT_TRUE(BSL_PEM_IsPemFormat(aa, strlen(aa)) == false);
46 EXIT:
47     return;
48 }
49 /* END_CASE */
50 
51 /* BEGIN_CASE */
SDV_BSL_PEM_PARSE_FUNC_TC001(char * encode,char * head,char * tail,int expRes)52 void SDV_BSL_PEM_PARSE_FUNC_TC001(char *encode, char *head, char *tail, int expRes)
53 {
54     BSL_PEM_Symbol sym = {head, tail};
55     char *pemdata = encode;
56     uint32_t len = strlen(encode);
57     uint8_t *asn1Encode = NULL;
58     uint32_t asn1Len;
59     TestMemInit();
60     ASSERT_EQ(BSL_PEM_DecodePemToAsn1(&pemdata, &len, &sym, &asn1Encode, &asn1Len), expRes);
61 EXIT:
62     BSL_SAL_Free(asn1Encode);
63     return;
64 }
65 /* END_CASE */
66 
67 /* BEGIN_CASE */
SDV_BSL_PEM_PARSE_FUNC_TC002(void)68 void SDV_BSL_PEM_PARSE_FUNC_TC002(void)
69 {
70     BSL_PEM_Symbol sym = {BSL_PEM_EC_PRI_KEY_BEGIN_STR, BSL_PEM_EC_PRI_KEY_END_STR};
71     char *pemdata = "-----BEGIN EC PRIVATE KEY-----\n"
72                     "MHcCAQEEIAadtjyegBKXLH9xvNDvH24j7cn3PsaNSXSMIVmvJZM7oAoGCCqGSM49\n"
73                     "AwEHoUQDQgAEPFKNDGyE7HES1hPd8mXydX4QunGvk37ISPOhXJStzxTt8sWdcEtV\n"
74                     "gaXhArNx9Dz8pKIhoGcviy8xML3wPICv9Q==\n"
75                     "-----END EC PRIVATE KEY-----\n"
76                     "-----BEGIN EC PRIVATE KEY-----\n"
77                     "MHcCAQEEIAadtjyegBKXLH9xvNDvH24j7cn3PsaNSXSMIVmvJZM7oAoGCCqGSM49\n"
78                     "AwEHoUQDQgAEPFKNDGyE7HES1hPd8mXydX4QunGvk37ISPOhXJStzxTt8sWdcEtV\n"
79                     "gaXhArNx9Dz8pKIhoGcviy8xML3wPICv9Q==\n"
80                     "-----END EC PRIVATE KEY-----\n";
81     int32_t len = strlen(pemdata);
82     char *next = pemdata;
83     uint32_t nextLen = len;
84     uint8_t *asn1Encode = NULL;
85     uint32_t asn1Len;
86     TestMemInit();
87     ASSERT_TRUE(BSL_PEM_DecodePemToAsn1(&next, &nextLen, &sym, &asn1Encode, &asn1Len) == BSL_SUCCESS);
88     BSL_SAL_Free(asn1Encode);
89     ASSERT_TRUE(BSL_PEM_DecodePemToAsn1(&next, &nextLen, &sym, &asn1Encode, &asn1Len) == BSL_SUCCESS);
90 EXIT:
91     BSL_SAL_Free(asn1Encode);
92     return;
93 }
94 /* END_CASE */
95 
96 /* BEGIN_CASE */
SDV_BSL_PEM_PARSE_FUNC_TC003(void)97 void SDV_BSL_PEM_PARSE_FUNC_TC003(void)
98 {
99     BSL_PEM_Symbol sym = {BSL_PEM_EC_PRI_KEY_BEGIN_STR, BSL_PEM_EC_PRI_KEY_END_STR};
100     char *pemdata = "-----BEGIN EC PRIVATE KEY-----END EC PRIVATE KEY------------------END-----\n";
101     int32_t len = strlen(pemdata);
102     char *next = pemdata;
103     uint32_t nextLen = len;
104     uint8_t *asn1Encode = NULL;
105     uint32_t asn1Len;
106     ASSERT_TRUE(BSL_PEM_DecodePemToAsn1(&next, &nextLen, &sym, &asn1Encode, &asn1Len) == BSL_PEM_SYMBOL_NOT_FOUND);
107 EXIT:
108     BSL_SAL_Free(asn1Encode);
109     return;
110 }
111 /* END_CASE */
112