OpenCoverage

rsa_chk.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/rsa/rsa_chk.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3int-
4RSA_check_key(const RSA *key)-
5{-
6 BIGNUM *i, *j, *k, *l, *m;-
7 BN_CTX *ctx;-
8 int r;-
9 int ret = 1;-
10-
11 if (!key->p
!key->pDescription
TRUEnever evaluated
FALSEnever evaluated
|| !key->q
!key->qDescription
TRUEnever evaluated
FALSEnever evaluated
|| !key->n
!key->nDescription
TRUEnever evaluated
FALSEnever evaluated
|| !key->e
!key->eDescription
TRUEnever evaluated
FALSEnever evaluated
|| !key->d
!key->dDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
12 ERR_put_error(4,(0xfff),(147),__FILE__,66);-
13 return
never executed: return 0;
0;
never executed: return 0;
0
14 }-
15-
16 i = BN_new();-
17 j = BN_new();-
18 k = BN_new();-
19 l = BN_new();-
20 m = BN_new();-
21 ctx = BN_CTX_new();-
22 if (i ==
i == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
23 ((void *)0)
i == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
24 || j ==
j == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
25 ((void *)0)
j == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
26 || k ==
k == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
27 ((void *)0)
k == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
28 || l ==
l == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
29 ((void *)0)
l == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
30 || m ==
m == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
31 ((void *)0)
m == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
32 ||-
33 ctx ==
ctx == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
34 ((void *)0)
ctx == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
35 ) {-
36 ret = -1;-
37 ERR_put_error(4,(0xfff),((1|64)),__FILE__,79);-
38 goto
never executed: goto err;
err;
never executed: goto err;
0
39 }-
40-
41-
42 r = BN_is_prime_ex(key->p, 0, -
43 ((void *)0)-
44 , -
45 ((void *)0)-
46 );-
47 if (r != 1
r != 1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
48 ret = r;-
49 if (r != 0
r != 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
50 goto
never executed: goto err;
err;
never executed: goto err;
0
51 ERR_put_error(4,(0xfff),(128),__FILE__,89);-
52 }
never executed: end of block
0
53-
54-
55 r = BN_is_prime_ex(key->q, 0, -
56 ((void *)0)-
57 , -
58 ((void *)0)-
59 );-
60 if (r != 1
r != 1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
61 ret = r;-
62 if (r != 0
r != 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
63 goto
never executed: goto err;
err;
never executed: goto err;
0
64 ERR_put_error(4,(0xfff),(129),__FILE__,98);-
65 }
never executed: end of block
0
66-
67-
68 r = BN_mul(i, key->p, key->q, ctx);-
69 if (!r
!rDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
70 ret = -1;-
71 goto
never executed: goto err;
err;
never executed: goto err;
0
72 }-
73-
74 if (BN_cmp(i, key->n) != 0
BN_cmp(i, key->n) != 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
75 ret = 0;-
76 ERR_put_error(4,(0xfff),(127),__FILE__,110);-
77 }
never executed: end of block
0
78-
79-
80-
81 r = BN_sub(i, key->p, BN_value_one());-
82 if (!r
!rDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
83 ret = -1;-
84 goto
never executed: goto err;
err;
never executed: goto err;
0
85 }-
86 r = BN_sub(j, key->q, BN_value_one());-
87 if (!r
!rDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
88 ret = -1;-
89 goto
never executed: goto err;
err;
never executed: goto err;
0
90 }-
91-
92-
93 r = BN_mul(l, i, j, ctx);-
94 if (!r
!rDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
95 ret = -1;-
96 goto
never executed: goto err;
err;
never executed: goto err;
0
97 }-
98 r = BN_gcd_ct(m, i, j, ctx);-
99 if (!r
!rDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
100 ret = -1;-
101 goto
never executed: goto err;
err;
never executed: goto err;
0
102 }-
103 r = BN_div_ct(k, -
104 ((void *)0)-
105 , l, m, ctx);-
106 if (!r
!rDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
107 ret = -1;-
108 goto
never executed: goto err;
err;
never executed: goto err;
0
109 }-
110-
111 r = BN_mod_mul(i, key->d, key->e, k, ctx);-
112 if (!r
!rDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
113 ret = -1;-
114 goto
never executed: goto err;
err;
never executed: goto err;
0
115 }-
116-
117 if (!((((((
(((i))->top == 1)Description
TRUEnever evaluated
FALSEnever evaluated
i))->top == 1)
(((i))->top == 1)Description
TRUEnever evaluated
FALSEnever evaluated
&& (((
(((i))->d[0] =...gned long)(1))Description
TRUEnever evaluated
FALSEnever evaluated
i))->d[0] == (unsigned long)(1))
(((i))->d[0] =...gned long)(1))Description
TRUEnever evaluated
FALSEnever evaluated
) || (((
((1) == 0)Description
TRUEnever evaluated
FALSEnever evaluated
1) == 0)
((1) == 0)Description
TRUEnever evaluated
FALSEnever evaluated
&& (((
(((i))->top == 0)Description
TRUEnever evaluated
FALSEnever evaluated
i))->top == 0)
(((i))->top == 0)Description
TRUEnever evaluated
FALSEnever evaluated
)) && !(i)->neg
!(i)->negDescription
TRUEnever evaluated
FALSEnever evaluated
)) {
0
118 ret = 0;-
119 ERR_put_error(4,(0xfff),(123),__FILE__,151);-
120 }
never executed: end of block
0
121-
122 if (key->dmp1 !=
key->dmp1 != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
123 ((void *)0)
key->dmp1 != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
124 && key->dmq1 !=
key->dmq1 != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
125 ((void *)0)
key->dmq1 != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
126 && key->iqmp !=
key->iqmp != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
127 ((void *)0)
key->iqmp != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
128 ) {-
129-
130 r = BN_sub(i, key->p, BN_value_one());-
131 if (!r
!rDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
132 ret = -1;-
133 goto
never executed: goto err;
err;
never executed: goto err;
0
134 }-
135-
136 r = BN_div_ct(-
137 ((void *)0)-
138 ,(j),(key->d),(i),(ctx));-
139 if (!r
!rDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
140 ret = -1;-
141 goto
never executed: goto err;
err;
never executed: goto err;
0
142 }-
143-
144 if (BN_cmp(j, key->dmp1) != 0
BN_cmp(j, key->dmp1) != 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
145 ret = 0;-
146 ERR_put_error(4,(0xfff),(124),__FILE__,170);-
147 }
never executed: end of block
0
148-
149-
150 r = BN_sub(i, key->q, BN_value_one());-
151 if (!r
!rDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
152 ret = -1;-
153 goto
never executed: goto err;
err;
never executed: goto err;
0
154 }-
155-
156 r = BN_div_ct(-
157 ((void *)0)-
158 ,(j),(key->d),(i),(ctx));-
159 if (!r
!rDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
160 ret = -1;-
161 goto
never executed: goto err;
err;
never executed: goto err;
0
162 }-
163-
164 if (BN_cmp(j, key->dmq1) != 0
BN_cmp(j, key->dmq1) != 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
165 ret = 0;-
166 ERR_put_error(4,(0xfff),(125),__FILE__,188);-
167 }
never executed: end of block
0
168-
169-
170 if (!BN_mod_inverse_ct(i, key->q, key->p, ctx)
!BN_mod_invers..., key->p, ctx)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
171 ret = -1;-
172 goto
never executed: goto err;
err;
never executed: goto err;
0
173 }-
174-
175 if (BN_cmp(i, key->iqmp) != 0
BN_cmp(i, key->iqmp) != 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
176 ret = 0;-
177 ERR_put_error(4,(0xfff),(126),__FILE__,199);-
178 }
never executed: end of block
0
179 }
never executed: end of block
0
180-
181err:
code before this statement never executed: err:
0
182 BN_free(i);-
183 BN_free(j);-
184 BN_free(k);-
185 BN_free(l);-
186 BN_free(m);-
187 BN_CTX_free(ctx);-
188-
189 return
never executed: return (ret);
(ret);
never executed: return (ret);
0
190}-
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.2