OpenCoverage

rsa_oaep.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/rsa/rsa_oaep.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5-
6static int MGF1(unsigned char *mask, long len, const unsigned char *seed,-
7 long seedlen);-
8-
9int-
10RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen,-
11 const unsigned char *from, int flen, const unsigned char *param, int plen)-
12{-
13 int i, emlen = tlen - 1;-
14 unsigned char *db, *seed;-
15 unsigned char *dbmask, seedmask[20];-
16-
17 if (flen > emlen - 2 * 20 - 1
flen > emlen - 2 * 20 - 1Description
TRUEnever evaluated
FALSEevaluated 3 times by 1 test
Evaluated by:
  • rsa_test
) {
0-3
18 ERR_put_error(4,(0xfff),(110),__FILE__,47);-
19 return
never executed: return 0;
0;
never executed: return 0;
0
20 }-
21-
22 if (emlen < 2 * 20 + 1
emlen < 2 * 20 + 1Description
TRUEnever evaluated
FALSEevaluated 3 times by 1 test
Evaluated by:
  • rsa_test
) {
0-3
23 ERR_put_error(4,(0xfff),(120),__FILE__,52);-
24 return
never executed: return 0;
0;
never executed: return 0;
0
25 }-
26-
27 to[0] = 0;-
28 seed = to + 1;-
29 db = to + 20 + 1;-
30-
31 if (!EVP_Digest((void *)param, plen, db,
!EVP_Digest((v... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 3 times by 1 test
Evaluated by:
  • rsa_test
0-3
32 ((void *)0)
!EVP_Digest((v... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 3 times by 1 test
Evaluated by:
  • rsa_test
0-3
33 , EVP_sha1(),
!EVP_Digest((v... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 3 times by 1 test
Evaluated by:
  • rsa_test
0-3
34 ((void *)0)
!EVP_Digest((v... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 3 times by 1 test
Evaluated by:
  • rsa_test
0-3
35 )
!EVP_Digest((v... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 3 times by 1 test
Evaluated by:
  • rsa_test
)
0-3
36 return
never executed: return 0;
0;
never executed: return 0;
0
37 memset(db + 20, 0,-
38 emlen - flen - 2 * 20 - 1);-
39 db[emlen - flen - 20 - 1] = 0x01;-
40 memcpy(db + emlen - flen - 20, from, flen);-
41 arc4random_buf(seed, 20);-
42-
43 dbmask = malloc(emlen - 20);-
44 if (dbmask ==
dbmask == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 3 times by 1 test
Evaluated by:
  • rsa_test
0-3
45 ((void *)0)
dbmask == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 3 times by 1 test
Evaluated by:
  • rsa_test
0-3
46 ) {-
47 ERR_put_error(4,(0xfff),((1|64)),__FILE__,70);-
48 return
never executed: return 0;
0;
never executed: return 0;
0
49 }-
50-
51 if (MGF1(dbmask, emlen - 20, seed,
MGF1(dbmask, e... seed, 20) < 0Description
TRUEnever evaluated
FALSEevaluated 3 times by 1 test
Evaluated by:
  • rsa_test
0-3
52 20) < 0
MGF1(dbmask, e... seed, 20) < 0Description
TRUEnever evaluated
FALSEevaluated 3 times by 1 test
Evaluated by:
  • rsa_test
) {
0-3
53 free(dbmask);-
54 return
never executed: return 0;
0;
never executed: return 0;
0
55 }-
56 for (i = 0; i < emlen - 20
i < emlen - 20Description
TRUEevaluated 179 times by 1 test
Evaluated by:
  • rsa_test
FALSEevaluated 3 times by 1 test
Evaluated by:
  • rsa_test
; i++)
3-179
57 db[i] ^= dbmask[i];
executed 179 times by 1 test: db[i] ^= dbmask[i];
Executed by:
  • rsa_test
179
58-
59 if (MGF1(seedmask, 20, db,
MGF1(seedmask,...mlen - 20) < 0Description
TRUEnever evaluated
FALSEevaluated 3 times by 1 test
Evaluated by:
  • rsa_test
0-3
60 emlen - 20) < 0
MGF1(seedmask,...mlen - 20) < 0Description
TRUEnever evaluated
FALSEevaluated 3 times by 1 test
Evaluated by:
  • rsa_test
) {
0-3
61 free(dbmask);-
62 return
never executed: return 0;
0;
never executed: return 0;
0
63 }-
64 for (i = 0; i < 20
i < 20Description
TRUEevaluated 60 times by 1 test
Evaluated by:
  • rsa_test
FALSEevaluated 3 times by 1 test
Evaluated by:
  • rsa_test
; i++)
3-60
65 seed[i] ^= seedmask[i];
executed 60 times by 1 test: seed[i] ^= seedmask[i];
Executed by:
  • rsa_test
60
66-
67 free(dbmask);-
68 return
executed 3 times by 1 test: return 1;
Executed by:
  • rsa_test
1;
executed 3 times by 1 test: return 1;
Executed by:
  • rsa_test
3
69}-
70-
71int-
72RSA_padding_check_PKCS1_OAEP(unsigned char *to, int tlen,-
73 const unsigned char *from, int flen, int num, const unsigned char *param,-
74 int plen)-
75{-
76 int i, dblen, mlen = -1;-
77 const unsigned char *maskeddb;-
78 int lzero;-
79 unsigned char *db = -
80 ((void *)0)-
81 ;-
82 unsigned char seed[20], phash[20];-
83 unsigned char *padded_from;-
84 int bad = 0;-
85-
86 if (--
--num < 2 * 20 + 1Description
TRUEnever evaluated
FALSEevaluated 490 times by 1 test
Evaluated by:
  • rsa_test
num < 2 * 20 + 1
--num < 2 * 20 + 1Description
TRUEnever evaluated
FALSEevaluated 490 times by 1 test
Evaluated by:
  • rsa_test
)
0-490
87-
88-
89-
90-
91 goto
never executed: goto decoding_err;
decoding_err;
never executed: goto decoding_err;
0
92-
93 lzero = num - flen;-
94 if (lzero < 0
lzero < 0Description
TRUEevaluated 480 times by 1 test
Evaluated by:
  • rsa_test
FALSEevaluated 10 times by 1 test
Evaluated by:
  • rsa_test
) {
10-480
95-
96-
97-
98-
99-
100-
101-
102 bad = 1;-
103 lzero = 0;-
104 flen = num;-
105 }
executed 480 times by 1 test: end of block
Executed by:
  • rsa_test
480
106-
107 dblen = num - 20;-
108 if ((
(db = malloc(d...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 490 times by 1 test
Evaluated by:
  • rsa_test
db = malloc(dblen + num)) ==
(db = malloc(d...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 490 times by 1 test
Evaluated by:
  • rsa_test
0-490
109 ((void *)0)
(db = malloc(d...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 490 times by 1 test
Evaluated by:
  • rsa_test
0-490
110 ) {-
111 ERR_put_error(4,(0xfff),((1|64)),__FILE__,130);-
112 return
never executed: return -1;
-1;
never executed: return -1;
0
113 }-
114-
115-
116-
117-
118-
119 padded_from = db + dblen;-
120 memset(padded_from, 0, lzero);-
121 memcpy(padded_from + lzero, from, flen);-
122-
123 maskeddb = padded_from + 20;-
124-
125 if (MGF1(seed, 20, maskeddb, dblen)
MGF1(seed, 20,...skeddb, dblen)Description
TRUEnever evaluated
FALSEevaluated 490 times by 1 test
Evaluated by:
  • rsa_test
)
0-490
126 goto
never executed: goto err;
err;
never executed: goto err;
0
127 for (i = 0; i < 20
i < 20Description
TRUEevaluated 9800 times by 1 test
Evaluated by:
  • rsa_test
FALSEevaluated 490 times by 1 test
Evaluated by:
  • rsa_test
; i++)
490-9800
128 seed[i] ^= padded_from[i];
executed 9800 times by 1 test: seed[i] ^= padded_from[i];
Executed by:
  • rsa_test
9800
129-
130 if (MGF1(db, dblen, seed, 20)
MGF1(db, dblen, seed, 20)Description
TRUEnever evaluated
FALSEevaluated 490 times by 1 test
Evaluated by:
  • rsa_test
)
0-490
131 goto
never executed: goto err;
err;
never executed: goto err;
0
132 for (i = 0; i < dblen
i < dblenDescription
TRUEevaluated 36154 times by 1 test
Evaluated by:
  • rsa_test
FALSEevaluated 490 times by 1 test
Evaluated by:
  • rsa_test
; i++)
490-36154
133 db[i] ^= maskeddb[i];
executed 36154 times by 1 test: db[i] ^= maskeddb[i];
Executed by:
  • rsa_test
36154
134-
135 if (!EVP_Digest((void *)param, plen, phash,
!EVP_Digest((v... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 490 times by 1 test
Evaluated by:
  • rsa_test
0-490
136 ((void *)0)
!EVP_Digest((v... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 490 times by 1 test
Evaluated by:
  • rsa_test
0-490
137 , EVP_sha1(),
!EVP_Digest((v... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 490 times by 1 test
Evaluated by:
  • rsa_test
0-490
138 ((void *)0)
!EVP_Digest((v... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 490 times by 1 test
Evaluated by:
  • rsa_test
0-490
139 )
!EVP_Digest((v... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 490 times by 1 test
Evaluated by:
  • rsa_test
)
0-490
140 goto
never executed: goto err;
err;
never executed: goto err;
0
141-
142 if (timingsafe_memcmp(db, phash, 20) != 0
timingsafe_mem...hash, 20) != 0Description
TRUEevaluated 484 times by 1 test
Evaluated by:
  • rsa_test
FALSEevaluated 6 times by 1 test
Evaluated by:
  • rsa_test
|| bad
badDescription
TRUEnever evaluated
FALSEevaluated 6 times by 1 test
Evaluated by:
  • rsa_test
)
0-484
143 goto
executed 484 times by 1 test: goto decoding_err;
Executed by:
  • rsa_test
decoding_err;
executed 484 times by 1 test: goto decoding_err;
Executed by:
  • rsa_test
484
144 else {-
145 for (i = 20; i < dblen
i < dblenDescription
TRUEevaluated 190 times by 1 test
Evaluated by:
  • rsa_test
FALSEnever evaluated
; i++)
0-190
146 if (db[i] != 0x00
db[i] != 0x00Description
TRUEevaluated 6 times by 1 test
Evaluated by:
  • rsa_test
FALSEevaluated 184 times by 1 test
Evaluated by:
  • rsa_test
)
6-184
147 break;
executed 6 times by 1 test: break;
Executed by:
  • rsa_test
6
148 if (i == dblen
i == dblenDescription
TRUEnever evaluated
FALSEevaluated 6 times by 1 test
Evaluated by:
  • rsa_test
|| db[i] != 0x01
db[i] != 0x01Description
TRUEnever evaluated
FALSEevaluated 6 times by 1 test
Evaluated by:
  • rsa_test
)
0-6
149 goto
never executed: goto decoding_err;
decoding_err;
never executed: goto decoding_err;
0
150 else {-
151-
152-
153 mlen = dblen - ++i;-
154 if (tlen < mlen
tlen < mlenDescription
TRUEnever evaluated
FALSEevaluated 6 times by 1 test
Evaluated by:
  • rsa_test
) {
0-6
155 ERR_put_error(4,(0xfff),(109),__FILE__,170);-
156 mlen = -1;-
157 }
never executed: end of block
else
0
158 memcpy(to, db + i, mlen);
executed 6 times by 1 test: memcpy(to, db + i, mlen);
Executed by:
  • rsa_test
6
159 }-
160 }-
161 free(db);-
162 return
executed 6 times by 1 test: return mlen;
Executed by:
  • rsa_test
mlen;
executed 6 times by 1 test: return mlen;
Executed by:
  • rsa_test
6
163-
164 decoding_err:-
165-
166-
167-
168-
169 ERR_put_error(4,(0xfff),(121),__FILE__,184);-
170 err:
code before this statement executed 484 times by 1 test: err:
Executed by:
  • rsa_test
484
171 free(db);-
172 return
executed 484 times by 1 test: return -1;
Executed by:
  • rsa_test
-1;
executed 484 times by 1 test: return -1;
Executed by:
  • rsa_test
484
173}-
174-
175int-
176PKCS1_MGF1(unsigned char *mask, long len, const unsigned char *seed,-
177 long seedlen, const EVP_MD *dgst)-
178{-
179 long i, outlen = 0;-
180 unsigned char cnt[4];-
181 EVP_MD_CTX c;-
182 unsigned char md[64];-
183 int mdlen;-
184 int rv = -1;-
185-
186 EVP_MD_CTX_init(&c);-
187 mdlen = EVP_MD_size(dgst);-
188 if (mdlen < 0
mdlen < 0Description
TRUEnever evaluated
FALSEevaluated 986 times by 1 test
Evaluated by:
  • rsa_test
)
0-986
189 goto
never executed: goto err;
err;
never executed: goto err;
0
190 for (i = 0; outlen < len
outlen < lenDescription
TRUEevaluated 2646 times by 1 test
Evaluated by:
  • rsa_test
FALSEevaluated 986 times by 1 test
Evaluated by:
  • rsa_test
; i++) {
986-2646
191 cnt[0] = (unsigned char)((i >> 24) & 255);-
192 cnt[1] = (unsigned char)((i >> 16) & 255);-
193 cnt[2] = (unsigned char)((i >> 8)) & 255;-
194 cnt[3] = (unsigned char)(i & 255);-
195 if (!EVP_DigestInit_ex(&c, dgst,
!EVP_DigestIni... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 2646 times by 1 test
Evaluated by:
  • rsa_test
0-2646
196 ((void *)0)
!EVP_DigestIni... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 2646 times by 1 test
Evaluated by:
  • rsa_test
0-2646
197 )
!EVP_DigestIni... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 2646 times by 1 test
Evaluated by:
  • rsa_test
||
0-2646
198 !EVP_DigestUpdate(&c, seed, seedlen)
!EVP_DigestUpd...seed, seedlen)Description
TRUEnever evaluated
FALSEevaluated 2646 times by 1 test
Evaluated by:
  • rsa_test
||
0-2646
199 !EVP_DigestUpdate(&c, cnt, 4)
!EVP_DigestUpdate(&c, cnt, 4)Description
TRUEnever evaluated
FALSEevaluated 2646 times by 1 test
Evaluated by:
  • rsa_test
)
0-2646
200 goto
never executed: goto err;
err;
never executed: goto err;
0
201 if (outlen + mdlen <= len
outlen + mdlen <= lenDescription
TRUEevaluated 2153 times by 1 test
Evaluated by:
  • rsa_test
FALSEevaluated 493 times by 1 test
Evaluated by:
  • rsa_test
) {
493-2153
202 if (!EVP_DigestFinal_ex(&c, mask + outlen,
!EVP_DigestFin... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 2153 times by 1 test
Evaluated by:
  • rsa_test
0-2153
203 ((void *)0)
!EVP_DigestFin... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 2153 times by 1 test
Evaluated by:
  • rsa_test
0-2153
204 )
!EVP_DigestFin... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 2153 times by 1 test
Evaluated by:
  • rsa_test
)
0-2153
205 goto
never executed: goto err;
err;
never executed: goto err;
0
206 outlen += mdlen;-
207 }
executed 2153 times by 1 test: end of block
Executed by:
  • rsa_test
else {
2153
208 if (!EVP_DigestFinal_ex(&c, md,
!EVP_DigestFin... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 493 times by 1 test
Evaluated by:
  • rsa_test
0-493
209 ((void *)0)
!EVP_DigestFin... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 493 times by 1 test
Evaluated by:
  • rsa_test
0-493
210 )
!EVP_DigestFin... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 493 times by 1 test
Evaluated by:
  • rsa_test
)
0-493
211 goto
never executed: goto err;
err;
never executed: goto err;
0
212 memcpy(mask + outlen, md, len - outlen);-
213 outlen = len;-
214 }
executed 493 times by 1 test: end of block
Executed by:
  • rsa_test
493
215 }-
216 rv = 0;-
217 err:
code before this statement executed 986 times by 1 test: err:
Executed by:
  • rsa_test
986
218 EVP_MD_CTX_cleanup(&c);-
219 return
executed 986 times by 1 test: return rv;
Executed by:
  • rsa_test
rv;
executed 986 times by 1 test: return rv;
Executed by:
  • rsa_test
986
220}-
221-
222static int-
223MGF1(unsigned char *mask, long len, const unsigned char *seed, long seedlen)-
224{-
225 return
executed 986 times by 1 test: return PKCS1_MGF1(mask, len, seed, seedlen, EVP_sha1());
Executed by:
  • rsa_test
PKCS1_MGF1(mask, len, seed, seedlen, EVP_sha1());
executed 986 times by 1 test: return PKCS1_MGF1(mask, len, seed, seedlen, EVP_sha1());
Executed by:
  • rsa_test
986
226}-
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.2