OpenCoverage

evp_pbe.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/evp/evp_pbe.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5-
6-
7-
8struct stack_st_EVP_PBE_CTL { _STACK stack; };-
9static struct stack_st_EVP_PBE_CTL *pbe_algs;-
10-
11-
12-
13typedef struct {-
14 int pbe_type;-
15 int pbe_nid;-
16 int cipher_nid;-
17 int md_nid;-
18 EVP_PBE_KEYGEN *keygen;-
19} EVP_PBE_CTL;-
20-
21static const EVP_PBE_CTL builtin_pbe[] = {-
22 {0x0, 9, 31, 3, PKCS5_PBE_keyivgen},-
23 {0x0, 10, 31, 4, PKCS5_PBE_keyivgen},-
24 {0x0, 68, 166, 64, PKCS5_PBE_keyivgen},-
25-
26-
27 {0x0, 69, -1, -1, PKCS5_v2_PBKDF2_keyivgen},-
28-
29-
30 {0x0, 144, 5, 64, PKCS12_PBE_keyivgen},-
31 {0x0, 145, 97, 64, PKCS12_PBE_keyivgen},-
32 {0x0, 146, 44, 64, PKCS12_PBE_keyivgen},-
33 {0x0, 147, 43, 64, PKCS12_PBE_keyivgen},-
34 {0x0, 148, 37, 64, PKCS12_PBE_keyivgen},-
35 {0x0, 149, 98, 64, PKCS12_PBE_keyivgen},-
36-
37-
38 {0x0, 161, -1, -1, PKCS5_v2_PBE_keyivgen},-
39-
40 {0x0, 168, 166, 3, PKCS5_PBE_keyivgen},-
41 {0x0, 169, 166, 4, PKCS5_PBE_keyivgen},-
42 {0x0, 170, 31, 64, PKCS5_PBE_keyivgen},-
43-
44-
45 {0x1, 163, -1, 64, 0},-
46 {0x1, 797, -1, 4, 0},-
47 {0x1, 798, -1, 675, 0},-
48 {0x1, 799, -1, 672, 0},-
49 {0x1, 800, -1, 673, 0},-
50 {0x1, 801, -1, 674, 0},-
51 {0x1, 810, -1, 809, 0},-
52};-
53-
54int-
55EVP_PBE_CipherInit(ASN1_OBJECT *pbe_obj, const char *pass, int passlen,-
56 ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de)-
57{-
58 const EVP_CIPHER *cipher;-
59 const EVP_MD *md;-
60 int cipher_nid, md_nid;-
61 EVP_PBE_KEYGEN *keygen;-
62-
63 if (!EVP_PBE_find(0x0, OBJ_obj2nid(pbe_obj),
!EVP_PBE_find(..._nid, &keygen)Description
TRUEnever evaluated
FALSEnever evaluated
0
64 &cipher_nid, &md_nid, &keygen)
!EVP_PBE_find(..._nid, &keygen)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
65 char obj_tmp[80];-
66 ERR_put_error(6,(0xfff),(121),__FILE__,131);-
67 if (!pbe_obj
!pbe_objDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
68 strlcpy(obj_tmp, "NULL", sizeof obj_tmp);
never executed: strlcpy(obj_tmp, "NULL", sizeof obj_tmp);
0
69 else-
70 i2t_ASN1_OBJECT(obj_tmp, sizeof obj_tmp, pbe_obj);
never executed: i2t_ASN1_OBJECT(obj_tmp, sizeof obj_tmp, pbe_obj);
0
71 ERR_asprintf_error_data("TYPE=%s", obj_tmp);-
72 return
never executed: return 0;
0;
never executed: return 0;
0
73 }-
74-
75 if (!pass
!passDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
76 passlen = 0;
never executed: passlen = 0;
0
77 else if (passlen == -1
passlen == -1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
78 passlen = strlen(pass);
never executed: passlen = strlen(pass);
0
79-
80 if (cipher_nid == -1
cipher_nid == -1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
81 cipher =
never executed: cipher = ((void *)0) ;
0
82 ((void *)0)
never executed: cipher = ((void *)0) ;
0
83 ;
never executed: cipher = ((void *)0) ;
0
84 else {-
85 cipher = EVP_get_cipherbyname(OBJ_nid2sn(cipher_nid));-
86 if (!cipher
!cipherDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
87 ERR_put_error(6,(0xfff),(160),__FILE__,150);-
88 return
never executed: return 0;
0;
never executed: return 0;
0
89 }-
90 }
never executed: end of block
0
91-
92 if (md_nid == -1
md_nid == -1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
93 md =
never executed: md = ((void *)0) ;
0
94 ((void *)0)
never executed: md = ((void *)0) ;
0
95 ;
never executed: md = ((void *)0) ;
0
96 else {-
97 md = EVP_get_digestbyname(OBJ_nid2sn(md_nid));-
98 if (!md
!mdDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
99 ERR_put_error(6,(0xfff),(161),__FILE__,160);-
100 return
never executed: return 0;
0;
never executed: return 0;
0
101 }-
102 }
never executed: end of block
0
103-
104 if (!keygen(ctx, pass, passlen, param, cipher, md, en_de)
!keygen(ctx, p...er, md, en_de)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
105 ERR_put_error(6,(0xfff),(120),__FILE__,166);-
106 return
never executed: return 0;
0;
never executed: return 0;
0
107 }-
108 return
never executed: return 1;
1;
never executed: return 1;
0
109}-
110-
111static int pbe2_cmp_BSEARCH_CMP_FN(const void *, const void *);-
112static int pbe2_cmp(EVP_PBE_CTL const *, EVP_PBE_CTL const *);-
113static EVP_PBE_CTL *OBJ_bsearch_pbe2(EVP_PBE_CTL *key, EVP_PBE_CTL const *base, int num);-
114-
115static int-
116pbe2_cmp(const EVP_PBE_CTL *pbe1, const EVP_PBE_CTL *pbe2)-
117{-
118 int ret = pbe1->pbe_type - pbe2->pbe_type;-
119-
120 if (ret
retDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
121 return
never executed: return ret;
ret;
never executed: return ret;
0
122 else-
123 return
never executed: return pbe1->pbe_nid - pbe2->pbe_nid;
pbe1->pbe_nid - pbe2->pbe_nid;
never executed: return pbe1->pbe_nid - pbe2->pbe_nid;
0
124}-
125-
126-
127static int-
128pbe2_cmp_BSEARCH_CMP_FN(const void *a_, const void *b_)-
129{-
130 EVP_PBE_CTL const *a = a_;-
131 EVP_PBE_CTL const *b = b_;-
132 return
never executed: return pbe2_cmp(a, b);
pbe2_cmp(a, b);
never executed: return pbe2_cmp(a, b);
0
133}-
134-
135static EVP_PBE_CTL *-
136OBJ_bsearch_pbe2(EVP_PBE_CTL *key, EVP_PBE_CTL const *base, int num)-
137{-
138 return
never executed: return (EVP_PBE_CTL *)OBJ_bsearch_(key, base, num, sizeof(EVP_PBE_CTL), pbe2_cmp_BSEARCH_CMP_FN);
(EVP_PBE_CTL *)OBJ_bsearch_(key, base, num, sizeof(EVP_PBE_CTL),
never executed: return (EVP_PBE_CTL *)OBJ_bsearch_(key, base, num, sizeof(EVP_PBE_CTL), pbe2_cmp_BSEARCH_CMP_FN);
0
139 pbe2_cmp_BSEARCH_CMP_FN);
never executed: return (EVP_PBE_CTL *)OBJ_bsearch_(key, base, num, sizeof(EVP_PBE_CTL), pbe2_cmp_BSEARCH_CMP_FN);
0
140}-
141-
142static int-
143pbe_cmp(const EVP_PBE_CTL * const *a, const EVP_PBE_CTL * const *b)-
144{-
145 int ret = (*a)->pbe_type - (*b)->pbe_type;-
146-
147 if (ret
retDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
148 return
never executed: return ret;
ret;
never executed: return ret;
0
149 else-
150 return
never executed: return (*a)->pbe_nid - (*b)->pbe_nid;
(*a)->pbe_nid - (*b)->pbe_nid;
never executed: return (*a)->pbe_nid - (*b)->pbe_nid;
0
151}-
152-
153-
154-
155int-
156EVP_PBE_alg_add_type(int pbe_type, int pbe_nid, int cipher_nid, int md_nid,-
157 EVP_PBE_KEYGEN *keygen)-
158{-
159 EVP_PBE_CTL *pbe_tmp;-
160-
161 if (pbe_algs ==
pbe_algs == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
162 ((void *)0)
pbe_algs == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
163 ) {-
164 pbe_algs = ((struct stack_st_EVP_PBE_CTL *)sk_new(((int (*)(const void *, const void *)) ((1 ? (pbe_cmp) : (int (*)(const EVP_PBE_CTL * const *, const EVP_PBE_CTL * const *))0)))));-
165 if (pbe_algs ==
pbe_algs == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
166 ((void *)0)
pbe_algs == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
167 ) {-
168 ERR_put_error(6,(0xfff),((1|64)),__FILE__,225);-
169 return
never executed: return 0;
0;
never executed: return 0;
0
170 }-
171 }
never executed: end of block
0
172 pbe_tmp = malloc(sizeof(EVP_PBE_CTL));-
173 if (pbe_tmp ==
pbe_tmp == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
174 ((void *)0)
pbe_tmp == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
175 ) {-
176 ERR_put_error(6,(0xfff),((1|64)),__FILE__,231);-
177 return
never executed: return 0;
0;
never executed: return 0;
0
178 }-
179 pbe_tmp->pbe_type = pbe_type;-
180 pbe_tmp->pbe_nid = pbe_nid;-
181 pbe_tmp->cipher_nid = cipher_nid;-
182 pbe_tmp->md_nid = md_nid;-
183 pbe_tmp->keygen = keygen;-
184-
185 if (sk_push(((_STACK*) (1 ? (pbe_algs) : (struct stack_st_EVP_PBE_CTL*)0)), ((void*) (1 ? (pbe_tmp) : (EVP_PBE_CTL*)0))) == 0
sk_push(((_STA...CTL*)0))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
186 free(pbe_tmp);-
187 ERR_put_error(6,(0xfff),((1|64)),__FILE__,242);-
188 return
never executed: return 0;
0;
never executed: return 0;
0
189 }-
190 return
never executed: return 1;
1;
never executed: return 1;
0
191}-
192-
193int-
194EVP_PBE_alg_add(int nid, const EVP_CIPHER *cipher, const EVP_MD *md,-
195 EVP_PBE_KEYGEN *keygen)-
196{-
197 int cipher_nid, md_nid;-
198-
199 if (cipher
cipherDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
200 cipher_nid = EVP_CIPHER_nid(cipher);
never executed: cipher_nid = EVP_CIPHER_nid(cipher);
0
201 else-
202 cipher_nid = -1;
never executed: cipher_nid = -1;
0
203 if (md
mdDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
204 md_nid = EVP_MD_type(md);
never executed: md_nid = EVP_MD_type(md);
0
205 else-
206 md_nid = -1;
never executed: md_nid = -1;
0
207-
208 return
never executed: return EVP_PBE_alg_add_type(0x0, nid, cipher_nid, md_nid, keygen);
EVP_PBE_alg_add_type(0x0, nid,
never executed: return EVP_PBE_alg_add_type(0x0, nid, cipher_nid, md_nid, keygen);
0
209 cipher_nid, md_nid, keygen);
never executed: return EVP_PBE_alg_add_type(0x0, nid, cipher_nid, md_nid, keygen);
0
210}-
211-
212int-
213EVP_PBE_find(int type, int pbe_nid,-
214 int *pcnid, int *pmnid, EVP_PBE_KEYGEN **pkeygen)-
215{-
216 EVP_PBE_CTL *pbetmp = -
217 ((void *)0)-
218 , pbelu;-
219 int i;-
220 if (pbe_nid == 0
pbe_nid == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
221 return
never executed: return 0;
0;
never executed: return 0;
0
222-
223 pbelu.pbe_type = type;-
224 pbelu.pbe_nid = pbe_nid;-
225-
226 if (pbe_algs
pbe_algsDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
227 i = sk_find(((_STACK*) (1 ? (pbe_algs) : (struct stack_st_EVP_PBE_CTL*)0)), ((void*) (1 ? (&pbelu) : (EVP_PBE_CTL*)0)));-
228 if (i != -1
i != -1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
229 pbetmp = ((EVP_PBE_CTL *)sk_value(((_STACK*) (1 ? (pbe_algs) : (struct stack_st_EVP_PBE_CTL*)0)), (i)));
never executed: pbetmp = ((EVP_PBE_CTL *)sk_value(((_STACK*) (1 ? (pbe_algs) : (struct stack_st_EVP_PBE_CTL*)0)), (i)));
0
230 }
never executed: end of block
0
231 if (pbetmp ==
pbetmp == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
232 ((void *)0)
pbetmp == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
233 ) {-
234 pbetmp = OBJ_bsearch_pbe2(&pbelu, builtin_pbe,-
235 sizeof(builtin_pbe)/sizeof(EVP_PBE_CTL));-
236 }
never executed: end of block
0
237 if (pbetmp ==
pbetmp == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
238 ((void *)0)
pbetmp == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
239 )-
240 return
never executed: return 0;
0;
never executed: return 0;
0
241 if (pcnid
pcnidDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
242 *
never executed: *pcnid = pbetmp->cipher_nid;
pcnid = pbetmp->cipher_nid;
never executed: *pcnid = pbetmp->cipher_nid;
0
243 if (pmnid
pmnidDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
244 *
never executed: *pmnid = pbetmp->md_nid;
pmnid = pbetmp->md_nid;
never executed: *pmnid = pbetmp->md_nid;
0
245 if (pkeygen
pkeygenDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
246 *
never executed: *pkeygen = pbetmp->keygen;
pkeygen = pbetmp->keygen;
never executed: *pkeygen = pbetmp->keygen;
0
247 return
never executed: return 1;
1;
never executed: return 1;
0
248}-
249-
250static void-
251free_evp_pbe_ctl(EVP_PBE_CTL *pbe)-
252{-
253 free(pbe);-
254}
never executed: end of block
0
255-
256void-
257EVP_PBE_cleanup(void)-
258{-
259 sk_pop_free(((_STACK*) (1 ? (pbe_algs) : (struct stack_st_EVP_PBE_CTL*)0)), ((void (*)(void *)) ((1 ? (free_evp_pbe_ctl) : (void (*)(EVP_PBE_CTL *))0))));-
260 pbe_algs = -
261 ((void *)0)-
262 ;-
263}
executed 263 times by 4 tests: end of block
Executed by:
  • evptest
  • libcrypto.so.44.0.1
  • pbkdf2
  • ssltest
263
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.2