OpenCoverage

rsa_pmeth.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/rsa/rsa_pmeth.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/*-
2 * Copyright 2006-2018 The OpenSSL Project Authors. All Rights Reserved.-
3 *-
4 * Licensed under the OpenSSL license (the "License"). You may not use-
5 * this file except in compliance with the License. You can obtain a copy-
6 * in the file LICENSE in the source distribution or at-
7 * https://www.openssl.org/source/license.html-
8 */-
9-
10#include <stdio.h>-
11#include "internal/cryptlib.h"-
12#include <openssl/asn1t.h>-
13#include <openssl/x509.h>-
14#include <openssl/rsa.h>-
15#include <openssl/bn.h>-
16#include <openssl/evp.h>-
17#include <openssl/x509v3.h>-
18#include <openssl/cms.h>-
19#include "internal/evp_int.h"-
20#include "rsa_locl.h"-
21-
22/* RSA pkey context structure */-
23-
24typedef struct {-
25 /* Key gen parameters */-
26 int nbits;-
27 BIGNUM *pub_exp;-
28 int primes;-
29 /* Keygen callback info */-
30 int gentmp[2];-
31 /* RSA padding mode */-
32 int pad_mode;-
33 /* message digest */-
34 const EVP_MD *md;-
35 /* message digest for MGF1 */-
36 const EVP_MD *mgf1md;-
37 /* PSS salt length */-
38 int saltlen;-
39 /* Minimum salt length or -1 if no PSS parameter restriction */-
40 int min_saltlen;-
41 /* Temp buffer */-
42 unsigned char *tbuf;-
43 /* OAEP label */-
44 unsigned char *oaep_label;-
45 size_t oaep_labellen;-
46} RSA_PKEY_CTX;-
47-
48/* True if PSS parameters are restricted */-
49#define rsa_pss_restricted(rctx) (rctx->min_saltlen != -1)-
50-
51static int pkey_rsa_init(EVP_PKEY_CTX *ctx)-
52{-
53 RSA_PKEY_CTX *rctx = OPENSSL_zalloc(sizeof(*rctx));-
54-
55 if (rctx == NULL)
rctx == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 9344 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-9344
56 return 0;
never executed: return 0;
0
57 rctx->nbits = 1024;-
58 rctx->primes = RSA_DEFAULT_PRIME_NUM;-
59 if (pkey_ctx_is_pss(ctx))
(ctx->pmeth->pkey_id == 912)Description
TRUEevaluated 28 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 9316 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
28-9316
60 rctx->pad_mode = RSA_PKCS1_PSS_PADDING;
executed 28 times by 1 test: rctx->pad_mode = 6;
Executed by:
  • libcrypto.so.1.1
28
61 else-
62 rctx->pad_mode = RSA_PKCS1_PADDING;
executed 9316 times by 1 test: rctx->pad_mode = 1;
Executed by:
  • libcrypto.so.1.1
9316
63 /* Maximum for sign, auto for verify */-
64 rctx->saltlen = RSA_PSS_SALTLEN_AUTO;-
65 rctx->min_saltlen = -1;-
66 ctx->data = rctx;-
67 ctx->keygen_info = rctx->gentmp;-
68 ctx->keygen_info_count = 2;-
69-
70 return 1;
executed 9344 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
9344
71}-
72-
73static int pkey_rsa_copy(EVP_PKEY_CTX *dst, EVP_PKEY_CTX *src)-
74{-
75 RSA_PKEY_CTX *dctx, *sctx;-
76-
77 if (!pkey_rsa_init(dst))
!pkey_rsa_init(dst)Description
TRUEnever evaluated
FALSEevaluated 4304 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-4304
78 return 0;
never executed: return 0;
0
79 sctx = src->data;-
80 dctx = dst->data;-
81 dctx->nbits = sctx->nbits;-
82 if (sctx->pub_exp) {
sctx->pub_expDescription
TRUEnever evaluated
FALSEevaluated 4304 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-4304
83 dctx->pub_exp = BN_dup(sctx->pub_exp);-
84 if (!dctx->pub_exp)
!dctx->pub_expDescription
TRUEnever evaluated
FALSEnever evaluated
0
85 return 0;
never executed: return 0;
0
86 }
never executed: end of block
0
87 dctx->pad_mode = sctx->pad_mode;-
88 dctx->md = sctx->md;-
89 dctx->mgf1md = sctx->mgf1md;-
90 if (sctx->oaep_label) {
sctx->oaep_labelDescription
TRUEnever evaluated
FALSEevaluated 4304 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-4304
91 OPENSSL_free(dctx->oaep_label);-
92 dctx->oaep_label = OPENSSL_memdup(sctx->oaep_label, sctx->oaep_labellen);-
93 if (!dctx->oaep_label)
!dctx->oaep_labelDescription
TRUEnever evaluated
FALSEnever evaluated
0
94 return 0;
never executed: return 0;
0
95 dctx->oaep_labellen = sctx->oaep_labellen;-
96 }
never executed: end of block
0
97 return 1;
executed 4304 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
4304
98}-
99-
100static int setup_tbuf(RSA_PKEY_CTX *ctx, EVP_PKEY_CTX *pk)-
101{-
102 if (ctx->tbuf != NULL)
ctx->tbuf != ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2170 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-2170
103 return 1;
never executed: return 1;
0
104 if ((ctx->tbuf = OPENSSL_malloc(EVP_PKEY_size(pk->pkey))) == NULL) {
(ctx->tbuf = C...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2170 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-2170
105 RSAerr(RSA_F_SETUP_TBUF, ERR_R_MALLOC_FAILURE);-
106 return 0;
never executed: return 0;
0
107 }-
108 return 1;
executed 2170 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
2170
109}-
110-
111static void pkey_rsa_cleanup(EVP_PKEY_CTX *ctx)-
112{-
113 RSA_PKEY_CTX *rctx = ctx->data;-
114 if (rctx) {
rctxDescription
TRUEevaluated 9344 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-9344
115 BN_free(rctx->pub_exp);-
116 OPENSSL_free(rctx->tbuf);-
117 OPENSSL_free(rctx->oaep_label);-
118 OPENSSL_free(rctx);-
119 }
executed 9344 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
9344
120}
executed 9344 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
9344
121-
122static int pkey_rsa_sign(EVP_PKEY_CTX *ctx, unsigned char *sig,-
123 size_t *siglen, const unsigned char *tbs,-
124 size_t tbslen)-
125{-
126 int ret;-
127 RSA_PKEY_CTX *rctx = ctx->data;-
128 RSA *rsa = ctx->pkey->pkey.rsa;-
129-
130 if (rctx->md) {
rctx->mdDescription
TRUEevaluated 1655 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-1655
131 if (tbslen != (size_t)EVP_MD_size(rctx->md)) {
tbslen != (siz...size(rctx->md)Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 1653 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
2-1653
132 RSAerr(RSA_F_PKEY_RSA_SIGN, RSA_R_INVALID_DIGEST_LENGTH);-
133 return -1;
executed 2 times by 1 test: return -1;
Executed by:
  • libcrypto.so.1.1
2
134 }-
135-
136 if (EVP_MD_type(rctx->md) == NID_mdc2) {
EVP_MD_type(rctx->md) == 95Description
TRUEnever evaluated
FALSEevaluated 1653 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-1653
137 unsigned int sltmp;-
138 if (rctx->pad_mode != RSA_PKCS1_PADDING)
rctx->pad_mode != 1Description
TRUEnever evaluated
FALSEnever evaluated
0
139 return -1;
never executed: return -1;
0
140 ret = RSA_sign_ASN1_OCTET_STRING(0,-
141 tbs, tbslen, sig, &sltmp, rsa);-
142-
143 if (ret <= 0)
ret <= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
144 return ret;
never executed: return ret;
0
145 ret = sltmp;-
146 } else if (rctx->pad_mode == RSA_X931_PADDING) {
never executed: end of block
rctx->pad_mode == 5Description
TRUEnever evaluated
FALSEevaluated 1653 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-1653
147 if ((size_t)EVP_PKEY_size(ctx->pkey) < tbslen + 1) {
(size_t)EVP_PK...) < tbslen + 1Description
TRUEnever evaluated
FALSEnever evaluated
0
148 RSAerr(RSA_F_PKEY_RSA_SIGN, RSA_R_KEY_SIZE_TOO_SMALL);-
149 return -1;
never executed: return -1;
0
150 }-
151 if (!setup_tbuf(rctx, ctx)) {
!setup_tbuf(rctx, ctx)Description
TRUEnever evaluated
FALSEnever evaluated
0
152 RSAerr(RSA_F_PKEY_RSA_SIGN, ERR_R_MALLOC_FAILURE);-
153 return -1;
never executed: return -1;
0
154 }-
155 memcpy(rctx->tbuf, tbs, tbslen);-
156 rctx->tbuf[tbslen] = RSA_X931_hash_id(EVP_MD_type(rctx->md));-
157 ret = RSA_private_encrypt(tbslen + 1, rctx->tbuf,-
158 sig, rsa, RSA_X931_PADDING);-
159 } else if (rctx->pad_mode == RSA_PKCS1_PADDING) {
never executed: end of block
rctx->pad_mode == 1Description
TRUEevaluated 559 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 1094 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-1094
160 unsigned int sltmp;-
161 ret = RSA_sign(EVP_MD_type(rctx->md),-
162 tbs, tbslen, sig, &sltmp, rsa);-
163 if (ret <= 0)
ret <= 0Description
TRUEnever evaluated
FALSEevaluated 559 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-559
164 return ret;
never executed: return ret;
0
165 ret = sltmp;-
166 } else if (rctx->pad_mode == RSA_PKCS1_PSS_PADDING) {
executed 559 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
rctx->pad_mode == 6Description
TRUEevaluated 1094 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-1094
167 if (!setup_tbuf(rctx, ctx))
!setup_tbuf(rctx, ctx)Description
TRUEnever evaluated
FALSEevaluated 1094 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-1094
168 return -1;
never executed: return -1;
0
169 if (!RSA_padding_add_PKCS1_PSS_mgf1(rsa,
!RSA_padding_a...rctx->saltlen)Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 1092 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
2-1092
170 rctx->tbuf, tbs,
!RSA_padding_a...rctx->saltlen)Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 1092 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
2-1092
171 rctx->md, rctx->mgf1md,
!RSA_padding_a...rctx->saltlen)Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 1092 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
2-1092
172 rctx->saltlen))
!RSA_padding_a...rctx->saltlen)Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 1092 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
2-1092
173 return -1;
executed 2 times by 1 test: return -1;
Executed by:
  • libcrypto.so.1.1
2
174 ret = RSA_private_encrypt(RSA_size(rsa), rctx->tbuf,-
175 sig, rsa, RSA_NO_PADDING);-
176 } else {
executed 1092 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
1092
177 return -1;
never executed: return -1;
0
178 }-
179 } else {-
180 ret = RSA_private_encrypt(tbslen, tbs, sig, ctx->pkey->pkey.rsa,-
181 rctx->pad_mode);-
182 }
never executed: end of block
0
183 if (ret < 0)
ret < 0Description
TRUEnever evaluated
FALSEevaluated 1651 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-1651
184 return ret;
never executed: return ret;
0
185 *siglen = ret;-
186 return 1;
executed 1651 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
1651
187}-
188-
189static int pkey_rsa_verifyrecover(EVP_PKEY_CTX *ctx,-
190 unsigned char *rout, size_t *routlen,-
191 const unsigned char *sig, size_t siglen)-
192{-
193 int ret;-
194 RSA_PKEY_CTX *rctx = ctx->data;-
195-
196 if (rctx->md) {
rctx->mdDescription
TRUEevaluated 11 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-11
197 if (rctx->pad_mode == RSA_X931_PADDING) {
rctx->pad_mode == 5Description
TRUEnever evaluated
FALSEevaluated 11 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-11
198 if (!setup_tbuf(rctx, ctx))
!setup_tbuf(rctx, ctx)Description
TRUEnever evaluated
FALSEnever evaluated
0
199 return -1;
never executed: return -1;
0
200 ret = RSA_public_decrypt(siglen, sig,-
201 rctx->tbuf, ctx->pkey->pkey.rsa,-
202 RSA_X931_PADDING);-
203 if (ret < 1)
ret < 1Description
TRUEnever evaluated
FALSEnever evaluated
0
204 return 0;
never executed: return 0;
0
205 ret--;-
206 if (rctx->tbuf[ret] != RSA_X931_hash_id(EVP_MD_type(rctx->md))) {
rctx->tbuf[ret...ype(rctx->md))Description
TRUEnever evaluated
FALSEnever evaluated
0
207 RSAerr(RSA_F_PKEY_RSA_VERIFYRECOVER,-
208 RSA_R_ALGORITHM_MISMATCH);-
209 return 0;
never executed: return 0;
0
210 }-
211 if (ret != EVP_MD_size(rctx->md)) {
ret != EVP_MD_size(rctx->md)Description
TRUEnever evaluated
FALSEnever evaluated
0
212 RSAerr(RSA_F_PKEY_RSA_VERIFYRECOVER,-
213 RSA_R_INVALID_DIGEST_LENGTH);-
214 return 0;
never executed: return 0;
0
215 }-
216 if (rout)
routDescription
TRUEnever evaluated
FALSEnever evaluated
0
217 memcpy(rout, rctx->tbuf, ret);
never executed: memcpy(rout, rctx->tbuf, ret);
0
218 } else if (rctx->pad_mode == RSA_PKCS1_PADDING) {
never executed: end of block
rctx->pad_mode == 1Description
TRUEevaluated 11 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-11
219 size_t sltmp;-
220 ret = int_rsa_verify(EVP_MD_type(rctx->md),-
221 NULL, 0, rout, &sltmp,-
222 sig, siglen, ctx->pkey->pkey.rsa);-
223 if (ret <= 0)
ret <= 0Description
TRUEevaluated 7 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 4 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
4-7
224 return 0;
executed 7 times by 1 test: return 0;
Executed by:
  • libcrypto.so.1.1
7
225 ret = sltmp;-
226 } else {
executed 4 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
4
227 return -1;
never executed: return -1;
0
228 }-
229 } else {-
230 ret = RSA_public_decrypt(siglen, sig, rout, ctx->pkey->pkey.rsa,-
231 rctx->pad_mode);-
232 }
never executed: end of block
0
233 if (ret < 0)
ret < 0Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-4
234 return ret;
never executed: return ret;
0
235 *routlen = ret;-
236 return 1;
executed 4 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
4
237}-
238-
239static int pkey_rsa_verify(EVP_PKEY_CTX *ctx,-
240 const unsigned char *sig, size_t siglen,-
241 const unsigned char *tbs, size_t tbslen)-
242{-
243 RSA_PKEY_CTX *rctx = ctx->data;-
244 RSA *rsa = ctx->pkey->pkey.rsa;-
245 size_t rslen;-
246-
247 if (rctx->md) {
rctx->mdDescription
TRUEevaluated 2770 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-2770
248 if (rctx->pad_mode == RSA_PKCS1_PADDING)
rctx->pad_mode == 1Description
TRUEevaluated 1758 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 1012 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
1012-1758
249 return RSA_verify(EVP_MD_type(rctx->md), tbs, tbslen,
executed 1758 times by 1 test: return RSA_verify(EVP_MD_type(rctx->md), tbs, tbslen, sig, siglen, rsa);
Executed by:
  • libcrypto.so.1.1
1758
250 sig, siglen, rsa);
executed 1758 times by 1 test: return RSA_verify(EVP_MD_type(rctx->md), tbs, tbslen, sig, siglen, rsa);
Executed by:
  • libcrypto.so.1.1
1758
251 if (tbslen != (size_t)EVP_MD_size(rctx->md)) {
tbslen != (siz...size(rctx->md)Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 1010 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
2-1010
252 RSAerr(RSA_F_PKEY_RSA_VERIFY, RSA_R_INVALID_DIGEST_LENGTH);-
253 return -1;
executed 2 times by 1 test: return -1;
Executed by:
  • libcrypto.so.1.1
2
254 }-
255 if (rctx->pad_mode == RSA_X931_PADDING) {
rctx->pad_mode == 5Description
TRUEnever evaluated
FALSEevaluated 1010 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-1010
256 if (pkey_rsa_verifyrecover(ctx, NULL, &rslen, sig, siglen) <= 0)
pkey_rsa_verif..., siglen) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
257 return 0;
never executed: return 0;
0
258 } else if (rctx->pad_mode == RSA_PKCS1_PSS_PADDING) {
never executed: end of block
rctx->pad_mode == 6Description
TRUEevaluated 1010 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-1010
259 int ret;-
260 if (!setup_tbuf(rctx, ctx))
!setup_tbuf(rctx, ctx)Description
TRUEnever evaluated
FALSEevaluated 1010 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-1010
261 return -1;
never executed: return -1;
0
262 ret = RSA_public_decrypt(siglen, sig, rctx->tbuf,-
263 rsa, RSA_NO_PADDING);-
264 if (ret <= 0)
ret <= 0Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 1009 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
1-1009
265 return 0;
executed 1 time by 1 test: return 0;
Executed by:
  • libcrypto.so.1.1
1
266 ret = RSA_verify_PKCS1_PSS_mgf1(rsa, tbs,-
267 rctx->md, rctx->mgf1md,-
268 rctx->tbuf, rctx->saltlen);-
269 if (ret <= 0)
ret <= 0Description
TRUEevaluated 20 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 989 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
20-989
270 return 0;
executed 20 times by 1 test: return 0;
Executed by:
  • libcrypto.so.1.1
20
271 return 1;
executed 989 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
989
272 } else {-
273 return -1;
never executed: return -1;
0
274 }-
275 } else {-
276 if (!setup_tbuf(rctx, ctx))
!setup_tbuf(rctx, ctx)Description
TRUEnever evaluated
FALSEnever evaluated
0
277 return -1;
never executed: return -1;
0
278 rslen = RSA_public_decrypt(siglen, sig, rctx->tbuf,-
279 rsa, rctx->pad_mode);-
280 if (rslen == 0)
rslen == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
281 return 0;
never executed: return 0;
0
282 }
never executed: end of block
0
283-
284 if ((rslen != tbslen) || memcmp(tbs, rctx->tbuf, rslen))
(rslen != tbslen)Description
TRUEnever evaluated
FALSEnever evaluated
memcmp(tbs, rctx->tbuf, rslen)Description
TRUEnever evaluated
FALSEnever evaluated
0
285 return 0;
never executed: return 0;
0
286-
287 return 1;
never executed: return 1;
0
288-
289}-
290-
291static int pkey_rsa_encrypt(EVP_PKEY_CTX *ctx,-
292 unsigned char *out, size_t *outlen,-
293 const unsigned char *in, size_t inlen)-
294{-
295 int ret;-
296 RSA_PKEY_CTX *rctx = ctx->data;-
297-
298 if (rctx->pad_mode == RSA_PKCS1_OAEP_PADDING) {
rctx->pad_mode == 4Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 486 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
2-486
299 int klen = RSA_size(ctx->pkey->pkey.rsa);-
300 if (!setup_tbuf(rctx, ctx))
!setup_tbuf(rctx, ctx)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-2
301 return -1;
never executed: return -1;
0
302 if (!RSA_padding_add_PKCS1_OAEP_mgf1(rctx->tbuf, klen,
!RSA_padding_a... rctx->mgf1md)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-2
303 in, inlen,
!RSA_padding_a... rctx->mgf1md)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-2
304 rctx->oaep_label,
!RSA_padding_a... rctx->mgf1md)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-2
305 rctx->oaep_labellen,
!RSA_padding_a... rctx->mgf1md)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-2
306 rctx->md, rctx->mgf1md))
!RSA_padding_a... rctx->mgf1md)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-2
307 return -1;
never executed: return -1;
0
308 ret = RSA_public_encrypt(klen, rctx->tbuf, out,-
309 ctx->pkey->pkey.rsa, RSA_NO_PADDING);-
310 } else {
executed 2 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
2
311 ret = RSA_public_encrypt(inlen, in, out, ctx->pkey->pkey.rsa,-
312 rctx->pad_mode);-
313 }
executed 486 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
486
314 if (ret < 0)
ret < 0Description
TRUEevaluated 17 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 471 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
17-471
315 return ret;
executed 17 times by 1 test: return ret;
Executed by:
  • libcrypto.so.1.1
17
316 *outlen = ret;-
317 return 1;
executed 471 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
471
318}-
319-
320static int pkey_rsa_decrypt(EVP_PKEY_CTX *ctx,-
321 unsigned char *out, size_t *outlen,-
322 const unsigned char *in, size_t inlen)-
323{-
324 int ret;-
325 RSA_PKEY_CTX *rctx = ctx->data;-
326-
327 if (rctx->pad_mode == RSA_PKCS1_OAEP_PADDING) {
rctx->pad_mode == 4Description
TRUEevaluated 64 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 25 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
25-64
328 if (!setup_tbuf(rctx, ctx))
!setup_tbuf(rctx, ctx)Description
TRUEnever evaluated
FALSEevaluated 64 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-64
329 return -1;
never executed: return -1;
0
330 ret = RSA_private_decrypt(inlen, in, rctx->tbuf,-
331 ctx->pkey->pkey.rsa, RSA_NO_PADDING);-
332 if (ret <= 0)
ret <= 0Description
TRUEnever evaluated
FALSEevaluated 64 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-64
333 return ret;
never executed: return ret;
0
334 ret = RSA_padding_check_PKCS1_OAEP_mgf1(out, ret, rctx->tbuf,-
335 ret, ret,-
336 rctx->oaep_label,-
337 rctx->oaep_labellen,-
338 rctx->md, rctx->mgf1md);-
339 } else {
executed 64 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
64
340 ret = RSA_private_decrypt(inlen, in, out, ctx->pkey->pkey.rsa,-
341 rctx->pad_mode);-
342 }
executed 25 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
25
343 if (ret < 0)
ret < 0Description
TRUEevaluated 8 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 81 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
8-81
344 return ret;
executed 8 times by 1 test: return ret;
Executed by:
  • libcrypto.so.1.1
8
345 *outlen = ret;-
346 return 1;
executed 81 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
81
347}-
348-
349static int check_padding_md(const EVP_MD *md, int padding)-
350{-
351 int mdnid;-
352-
353 if (!md)
!mdDescription
TRUEevaluated 133 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 6412 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
133-6412
354 return 1;
executed 133 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
133
355-
356 mdnid = EVP_MD_type(md);-
357-
358 if (padding == RSA_NO_PADDING) {
padding == 3Description
TRUEnever evaluated
FALSEevaluated 6412 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-6412
359 RSAerr(RSA_F_CHECK_PADDING_MD, RSA_R_INVALID_PADDING_MODE);-
360 return 0;
never executed: return 0;
0
361 }-
362-
363 if (padding == RSA_X931_PADDING) {
padding == 5Description
TRUEnever evaluated
FALSEevaluated 6412 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-6412
364 if (RSA_X931_hash_id(mdnid) == -1) {
RSA_X931_hash_id(mdnid) == -1Description
TRUEnever evaluated
FALSEnever evaluated
0
365 RSAerr(RSA_F_CHECK_PADDING_MD, RSA_R_INVALID_X931_DIGEST);-
366 return 0;
never executed: return 0;
0
367 }-
368 } else {
never executed: end of block
0
369 switch(mdnid) {-
370 /* List of all supported RSA digests */-
371 case NID_sha1:
executed 273 times by 1 test: case 64:
Executed by:
  • libcrypto.so.1.1
273
372 case NID_sha224:
executed 3 times by 1 test: case 675:
Executed by:
  • libcrypto.so.1.1
3
373 case NID_sha256:
executed 5321 times by 1 test: case 672:
Executed by:
  • libcrypto.so.1.1
5321
374 case NID_sha384:
executed 31 times by 1 test: case 673:
Executed by:
  • libcrypto.so.1.1
31
375 case NID_sha512:
executed 37 times by 1 test: case 674:
Executed by:
  • libcrypto.so.1.1
37
376 case NID_md5:
executed 3 times by 1 test: case 4:
Executed by:
  • libcrypto.so.1.1
3
377 case NID_md5_sha1:
executed 735 times by 1 test: case 114:
Executed by:
  • libcrypto.so.1.1
735
378 case NID_md2:
never executed: case 3:
0
379 case NID_md4:
never executed: case 257:
0
380 case NID_mdc2:
executed 9 times by 1 test: case 95:
Executed by:
  • libcrypto.so.1.1
9
381 case NID_ripemd160:
never executed: case 117:
0
382 case NID_sha3_224:
never executed: case 1096:
0
383 case NID_sha3_256:
never executed: case 1097:
0
384 case NID_sha3_384:
never executed: case 1098:
0
385 case NID_sha3_512:
never executed: case 1099:
0
386 return 1;
executed 6412 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
6412
387-
388 default:
never executed: default:
0
389 RSAerr(RSA_F_CHECK_PADDING_MD, RSA_R_INVALID_DIGEST);-
390 return 0;
never executed: return 0;
0
391-
392 }-
393 }-
394-
395 return 1;
never executed: return 1;
0
396}-
397-
398static int pkey_rsa_ctrl(EVP_PKEY_CTX *ctx, int type, int p1, void *p2)-
399{-
400 RSA_PKEY_CTX *rctx = ctx->data;-
401-
402 switch (type) {-
403 case EVP_PKEY_CTRL_RSA_PADDING:
executed 2169 times by 1 test: case (0x1000 + 1):
Executed by:
  • libcrypto.so.1.1
2169
404 if ((p1 >= RSA_PKCS1_PADDING) && (p1 <= RSA_PKCS1_PSS_PADDING)) {
(p1 >= 1)Description
TRUEevaluated 2169 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
(p1 <= 6)Description
TRUEevaluated 2169 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-2169
405 if (!check_padding_md(rctx->md, p1))
!check_padding...(rctx->md, p1)Description
TRUEnever evaluated
FALSEevaluated 2169 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-2169
406 return 0;
never executed: return 0;
0
407 if (p1 == RSA_PKCS1_PSS_PADDING) {
p1 == 6Description
TRUEevaluated 2102 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 67 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
67-2102
408 if (!(ctx->operation &
!(ctx->operati...<3) | (1<<4)))Description
TRUEnever evaluated
FALSEevaluated 2102 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-2102
409 (EVP_PKEY_OP_SIGN | EVP_PKEY_OP_VERIFY)))
!(ctx->operati...<3) | (1<<4)))Description
TRUEnever evaluated
FALSEevaluated 2102 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-2102
410 goto bad_pad;
never executed: goto bad_pad;
0
411 if (!rctx->md)
!rctx->mdDescription
TRUEevaluated 67 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 2035 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
67-2035
412 rctx->md = EVP_sha1();
executed 67 times by 1 test: rctx->md = EVP_sha1();
Executed by:
  • libcrypto.so.1.1
67
413 } else if (pkey_ctx_is_pss(ctx)) {
executed 2102 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
(ctx->pmeth->pkey_id == 912)Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 66 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
1-2102
414 goto bad_pad;
executed 1 time by 1 test: goto bad_pad;
Executed by:
  • libcrypto.so.1.1
1
415 }-
416 if (p1 == RSA_PKCS1_OAEP_PADDING) {
p1 == 4Description
TRUEevaluated 66 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 2102 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
66-2102
417 if (!(ctx->operation & EVP_PKEY_OP_TYPE_CRYPT))
!(ctx->operati...<8) | (1<<9)))Description
TRUEnever evaluated
FALSEevaluated 66 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-66
418 goto bad_pad;
never executed: goto bad_pad;
0
419 if (!rctx->md)
!rctx->mdDescription
TRUEevaluated 66 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-66
420 rctx->md = EVP_sha1();
executed 66 times by 1 test: rctx->md = EVP_sha1();
Executed by:
  • libcrypto.so.1.1
66
421 }
executed 66 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
66
422 rctx->pad_mode = p1;-
423 return 1;
executed 2168 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
2168
424 }-
425 bad_pad:
code before this statement never executed: bad_pad:
0
426 RSAerr(RSA_F_PKEY_RSA_CTRL,-
427 RSA_R_ILLEGAL_OR_UNSUPPORTED_PADDING_MODE);-
428 return -2;
executed 1 time by 1 test: return -2;
Executed by:
  • libcrypto.so.1.1
1
429-
430 case EVP_PKEY_CTRL_GET_RSA_PADDING:
executed 25 times by 1 test: case (0x1000 + 6):
Executed by:
  • libcrypto.so.1.1
25
431 *(int *)p2 = rctx->pad_mode;-
432 return 1;
executed 25 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
25
433-
434 case EVP_PKEY_CTRL_RSA_PSS_SALTLEN:
executed 2042 times by 1 test: case (0x1000 + 2):
Executed by:
  • libcrypto.so.1.1
2042
435 case EVP_PKEY_CTRL_GET_RSA_PSS_SALTLEN:
executed 3 times by 1 test: case (0x1000 + 7):
Executed by:
  • libcrypto.so.1.1
3
436 if (rctx->pad_mode != RSA_PKCS1_PSS_PADDING) {
rctx->pad_mode != 6Description
TRUEnever evaluated
FALSEevaluated 2045 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-2045
437 RSAerr(RSA_F_PKEY_RSA_CTRL, RSA_R_INVALID_PSS_SALTLEN);-
438 return -2;
never executed: return -2;
0
439 }-
440 if (type == EVP_PKEY_CTRL_GET_RSA_PSS_SALTLEN) {
type == (0x1000 + 7)Description
TRUEevaluated 3 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 2042 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
3-2042
441 *(int *)p2 = rctx->saltlen;-
442 } else {
executed 3 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
3
443 if (p1 < RSA_PSS_SALTLEN_MAX)
p1 < -3Description
TRUEnever evaluated
FALSEevaluated 2042 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-2042
444 return -2;
never executed: return -2;
0
445 if (rsa_pss_restricted(rctx)) {
(rctx->min_saltlen != -1)Description
TRUEevaluated 5 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 2037 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
5-2037
446 if (p1 == RSA_PSS_SALTLEN_AUTO
p1 == -2Description
TRUEnever evaluated
FALSEevaluated 5 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-5
447 && ctx->operation == EVP_PKEY_OP_VERIFY) {
ctx->operation == (1<<4)Description
TRUEnever evaluated
FALSEnever evaluated
0
448 RSAerr(RSA_F_PKEY_RSA_CTRL, RSA_R_INVALID_PSS_SALTLEN);-
449 return -2;
never executed: return -2;
0
450 }-
451 if ((p1 == RSA_PSS_SALTLEN_DIGEST
p1 == -1Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 4 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
1-4
452 && rctx->min_saltlen > EVP_MD_size(rctx->md))
rctx->min_salt...size(rctx->md)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-1
453 || (p1 >= 0 && p1 < rctx->min_saltlen)) {
p1 >= 0Description
TRUEevaluated 3 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
p1 < rctx->min_saltlenDescription
TRUEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
1-3
454 RSAerr(RSA_F_PKEY_RSA_CTRL, RSA_R_PSS_SALTLEN_TOO_SMALL);-
455 return 0;
executed 1 time by 1 test: return 0;
Executed by:
  • libcrypto.so.1.1
1
456 }-
457 }
executed 4 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
4
458 rctx->saltlen = p1;-
459 }
executed 2041 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
2041
460 return 1;
executed 2044 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
2044
461-
462 case EVP_PKEY_CTRL_RSA_KEYGEN_BITS:
executed 13 times by 1 test: case (0x1000 + 3):
Executed by:
  • libcrypto.so.1.1
13
463 if (p1 < RSA_MIN_MODULUS_BITS) {
p1 < 512Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 12 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
1-12
464 RSAerr(RSA_F_PKEY_RSA_CTRL, RSA_R_KEY_SIZE_TOO_SMALL);-
465 return -2;
executed 1 time by 1 test: return -2;
Executed by:
  • libcrypto.so.1.1
1
466 }-
467 rctx->nbits = p1;-
468 return 1;
executed 12 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
12
469-
470 case EVP_PKEY_CTRL_RSA_KEYGEN_PUBEXP:
never executed: case (0x1000 + 4):
0
471 if (p2 == NULL || !BN_is_odd((BIGNUM *)p2) || BN_is_one((BIGNUM *)p2)) {
p2 == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
!BN_is_odd((BIGNUM *)p2)Description
TRUEnever evaluated
FALSEnever evaluated
BN_is_one((BIGNUM *)p2)Description
TRUEnever evaluated
FALSEnever evaluated
0
472 RSAerr(RSA_F_PKEY_RSA_CTRL, RSA_R_BAD_E_VALUE);-
473 return -2;
never executed: return -2;
0
474 }-
475 BN_free(rctx->pub_exp);-
476 rctx->pub_exp = p2;-
477 return 1;
never executed: return 1;
0
478-
479 case EVP_PKEY_CTRL_RSA_KEYGEN_PRIMES:
executed 3 times by 1 test: case (0x1000 + 13):
Executed by:
  • libcrypto.so.1.1
3
480 if (p1 < RSA_DEFAULT_PRIME_NUM || p1 > RSA_MAX_PRIME_NUM) {
p1 < 2Description
TRUEnever evaluated
FALSEevaluated 3 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
p1 > 5Description
TRUEnever evaluated
FALSEevaluated 3 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-3
481 RSAerr(RSA_F_PKEY_RSA_CTRL, RSA_R_KEY_PRIME_NUM_INVALID);-
482 return -2;
never executed: return -2;
0
483 }-
484 rctx->primes = p1;-
485 return 1;
executed 3 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
3
486-
487 case EVP_PKEY_CTRL_RSA_OAEP_MD:
executed 3 times by 1 test: case (0x1000 + 9):
Executed by:
  • libcrypto.so.1.1
3
488 case EVP_PKEY_CTRL_GET_RSA_OAEP_MD:
executed 2 times by 1 test: case (0x1000 + 11):
Executed by:
  • libcrypto.so.1.1
2
489 if (rctx->pad_mode != RSA_PKCS1_OAEP_PADDING) {
rctx->pad_mode != 4Description
TRUEnever evaluated
FALSEevaluated 5 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-5
490 RSAerr(RSA_F_PKEY_RSA_CTRL, RSA_R_INVALID_PADDING_MODE);-
491 return -2;
never executed: return -2;
0
492 }-
493 if (type == EVP_PKEY_CTRL_GET_RSA_OAEP_MD)
type == (0x1000 + 11)Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 3 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
2-3
494 *(const EVP_MD **)p2 = rctx->md;
executed 2 times by 1 test: *(const EVP_MD **)p2 = rctx->md;
Executed by:
  • libcrypto.so.1.1
2
495 else-
496 rctx->md = p2;
executed 3 times by 1 test: rctx->md = p2;
Executed by:
  • libcrypto.so.1.1
3
497 return 1;
executed 5 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
5
498-
499 case EVP_PKEY_CTRL_MD:
executed 4376 times by 1 test: case 1:
Executed by:
  • libcrypto.so.1.1
4376
500 if (!check_padding_md(p2, rctx->pad_mode))
!check_padding...ctx->pad_mode)Description
TRUEnever evaluated
FALSEevaluated 4376 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-4376
501 return 0;
never executed: return 0;
0
502 if (rsa_pss_restricted(rctx)) {
(rctx->min_saltlen != -1)Description
TRUEevaluated 6 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 4370 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
6-4370
503 if (EVP_MD_type(rctx->md) == EVP_MD_type(p2))
EVP_MD_type(rc...VP_MD_type(p2)Description
TRUEevaluated 5 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
1-5
504 return 1;
executed 5 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
5
505 RSAerr(RSA_F_PKEY_RSA_CTRL, RSA_R_DIGEST_NOT_ALLOWED);-
506 return 0;
executed 1 time by 1 test: return 0;
Executed by:
  • libcrypto.so.1.1
1
507 }-
508 rctx->md = p2;-
509 return 1;
executed 4370 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
4370
510-
511 case EVP_PKEY_CTRL_GET_MD:
executed 6 times by 1 test: case 13:
Executed by:
  • libcrypto.so.1.1
6
512 *(const EVP_MD **)p2 = rctx->md;-
513 return 1;
executed 6 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
6
514-
515 case EVP_PKEY_CTRL_RSA_MGF1_MD:
executed 140 times by 1 test: case (0x1000 + 5):
Executed by:
  • libcrypto.so.1.1
140
516 case EVP_PKEY_CTRL_GET_RSA_MGF1_MD:
executed 5 times by 1 test: case (0x1000 + 8):
Executed by:
  • libcrypto.so.1.1
5
517 if (rctx->pad_mode != RSA_PKCS1_PSS_PADDING
rctx->pad_mode != 6Description
TRUEevaluated 65 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 80 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
65-80
518 && rctx->pad_mode != RSA_PKCS1_OAEP_PADDING) {
rctx->pad_mode != 4Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 64 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
1-64
519 RSAerr(RSA_F_PKEY_RSA_CTRL, RSA_R_INVALID_MGF1_MD);-
520 return -2;
executed 1 time by 1 test: return -2;
Executed by:
  • libcrypto.so.1.1
1
521 }-
522 if (type == EVP_PKEY_CTRL_GET_RSA_MGF1_MD) {
type == (0x1000 + 8)Description
TRUEevaluated 5 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 139 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
5-139
523 if (rctx->mgf1md)
rctx->mgf1mdDescription
TRUEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 4 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
1-4
524 *(const EVP_MD **)p2 = rctx->mgf1md;
executed 1 time by 1 test: *(const EVP_MD **)p2 = rctx->mgf1md;
Executed by:
  • libcrypto.so.1.1
1
525 else-
526 *(const EVP_MD **)p2 = rctx->md;
executed 4 times by 1 test: *(const EVP_MD **)p2 = rctx->md;
Executed by:
  • libcrypto.so.1.1
4
527 } else {-
528 if (rsa_pss_restricted(rctx)) {
(rctx->min_saltlen != -1)Description
TRUEevaluated 3 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 136 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
3-136
529 if (EVP_MD_type(rctx->mgf1md) == EVP_MD_type(p2))
EVP_MD_type(rc...VP_MD_type(p2)Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
1-2
530 return 1;
executed 1 time by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
1
531 RSAerr(RSA_F_PKEY_RSA_CTRL, RSA_R_MGF1_DIGEST_NOT_ALLOWED);-
532 return 0;
executed 2 times by 1 test: return 0;
Executed by:
  • libcrypto.so.1.1
2
533 }-
534 rctx->mgf1md = p2;-
535 }
executed 136 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
136
536 return 1;
executed 141 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
141
537-
538 case EVP_PKEY_CTRL_RSA_OAEP_LABEL:
executed 2 times by 1 test: case (0x1000 + 10):
Executed by:
  • libcrypto.so.1.1
2
539 if (rctx->pad_mode != RSA_PKCS1_OAEP_PADDING) {
rctx->pad_mode != 4Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-2
540 RSAerr(RSA_F_PKEY_RSA_CTRL, RSA_R_INVALID_PADDING_MODE);-
541 return -2;
never executed: return -2;
0
542 }-
543 OPENSSL_free(rctx->oaep_label);-
544 if (p2 && p1 > 0) {
p2Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
p1 > 0Description
TRUEnever evaluated
FALSEnever evaluated
0-2
545 rctx->oaep_label = p2;-
546 rctx->oaep_labellen = p1;-
547 } else {
never executed: end of block
0
548 rctx->oaep_label = NULL;-
549 rctx->oaep_labellen = 0;-
550 }
executed 2 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
2
551 return 1;
executed 2 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
2
552-
553 case EVP_PKEY_CTRL_GET_RSA_OAEP_LABEL:
executed 2 times by 1 test: case (0x1000 + 12):
Executed by:
  • libcrypto.so.1.1
2
554 if (rctx->pad_mode != RSA_PKCS1_OAEP_PADDING) {
rctx->pad_mode != 4Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-2
555 RSAerr(RSA_F_PKEY_RSA_CTRL, RSA_R_INVALID_PADDING_MODE);-
556 return -2;
never executed: return -2;
0
557 }-
558 *(unsigned char **)p2 = rctx->oaep_label;-
559 return rctx->oaep_labellen;
executed 2 times by 1 test: return rctx->oaep_labellen;
Executed by:
  • libcrypto.so.1.1
2
560-
561 case EVP_PKEY_CTRL_DIGESTINIT:
executed 4311 times by 1 test: case 7:
Executed by:
  • libcrypto.so.1.1
4311
562 case EVP_PKEY_CTRL_PKCS7_SIGN:
executed 22 times by 1 test: case 5:
Executed by:
  • libcrypto.so.1.1
22
563#ifndef OPENSSL_NO_CMS-
564 case EVP_PKEY_CTRL_CMS_SIGN:
executed 60 times by 1 test: case 11:
Executed by:
  • libcrypto.so.1.1
60
565#endif-
566 return 1;
executed 4393 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
4393
567-
568 case EVP_PKEY_CTRL_PKCS7_ENCRYPT:
executed 12 times by 1 test: case 3:
Executed by:
  • libcrypto.so.1.1
12
569 case EVP_PKEY_CTRL_PKCS7_DECRYPT:
executed 6 times by 1 test: case 4:
Executed by:
  • libcrypto.so.1.1
6
570#ifndef OPENSSL_NO_CMS-
571 case EVP_PKEY_CTRL_CMS_DECRYPT:
executed 16 times by 1 test: case 10:
Executed by:
  • libcrypto.so.1.1
16
572 case EVP_PKEY_CTRL_CMS_ENCRYPT:
executed 30 times by 1 test: case 9:
Executed by:
  • libcrypto.so.1.1
30
573#endif-
574 if (!pkey_ctx_is_pss(ctx))
!(ctx->pmeth->pkey_id == 912)Description
TRUEevaluated 64 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-64
575 return 1;
executed 64 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
64
576 /* fall through */-
577 case EVP_PKEY_CTRL_PEER_KEY:
code before this statement never executed: case 2:
never executed: case 2:
0
578 RSAerr(RSA_F_PKEY_RSA_CTRL,-
579 RSA_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);-
580 return -2;
never executed: return -2;
0
581-
582 default:
never executed: default:
0
583 return -2;
never executed: return -2;
0
584-
585 }-
586}-
587-
588static int pkey_rsa_ctrl_str(EVP_PKEY_CTX *ctx,-
589 const char *type, const char *value)-
590{-
591 if (value == NULL) {
value == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 302 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-302
592 RSAerr(RSA_F_PKEY_RSA_CTRL_STR, RSA_R_VALUE_MISSING);-
593 return 0;
never executed: return 0;
0
594 }-
595 if (strcmp(type, "rsa_padding_mode") == 0) {
never executed: __result = (((const unsigned char *) (const char *) ( type ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "rsa_padding_mode" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
__extension__ ... )))); }) == 0Description
TRUEevaluated 143 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 159 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0-159
596 int pm;-
597-
598 if (strcmp(value, "pkcs1") == 0) {
never executed: __result = (((const unsigned char *) (const char *) ( value ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "pkcs1" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
__extension__ ... )))); }) == 0Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 142 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0-142
599 pm = RSA_PKCS1_PADDING;-
600 } else if (strcmp(value, "sslv23") == 0) {
executed 1 time by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
never executed: __result = (((const unsigned char *) (const char *) ( value ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "sslv23" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
__extension__ ... )))); }) == 0Description
TRUEnever evaluated
FALSEevaluated 142 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0-142
601 pm = RSA_SSLV23_PADDING;-
602 } else if (strcmp(value, "none") == 0) {
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( value ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "none" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
__extension__ ... )))); }) == 0Description
TRUEnever evaluated
FALSEevaluated 142 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0-142
603 pm = RSA_NO_PADDING;-
604 } else if (strcmp(value, "oeap") == 0) {
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( value ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "oeap" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
__extension__ ... )))); }) == 0Description
TRUEnever evaluated
FALSEevaluated 142 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0-142
605 pm = RSA_PKCS1_OAEP_PADDING;-
606 } else if (strcmp(value, "oaep") == 0) {
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( value ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "oaep" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
__extension__ ... )))); }) == 0Description
TRUEevaluated 64 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 78 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0-78
607 pm = RSA_PKCS1_OAEP_PADDING;-
608 } else if (strcmp(value, "x931") == 0) {
executed 64 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
never executed: __result = (((const unsigned char *) (const char *) ( value ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "x931" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
__extension__ ... )))); }) == 0Description
TRUEnever evaluated
FALSEevaluated 78 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0-78
609 pm = RSA_X931_PADDING;-
610 } else if (strcmp(value, "pss") == 0) {
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( value ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
executed 78 times by 1 test: __result = (((const unsigned char *) (const char *) ( "pss" ))[3] - __s2[3]);
Executed by:
  • libcrypto.so.1.1
executed 78 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
executed 78 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
__extension__ ... )))); }) == 0Description
TRUEevaluated 78 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEevaluated 78 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
__result == 0Description
TRUEevaluated 78 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
__s2_len > 1Description
TRUEevaluated 78 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
__result == 0Description
TRUEevaluated 78 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
__s2_len > 2Description
TRUEevaluated 78 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
__result == 0Description
TRUEevaluated 78 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-78
611 pm = RSA_PKCS1_PSS_PADDING;-
612 } else {
executed 78 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
78
613 RSAerr(RSA_F_PKEY_RSA_CTRL_STR, RSA_R_UNKNOWN_PADDING_TYPE);-
614 return -2;
never executed: return -2;
0
615 }-
616 return EVP_PKEY_CTX_set_rsa_padding(ctx, pm);
executed 143 times by 1 test: return RSA_pkey_ctx_ctrl(ctx, -1, (0x1000 + 1), pm, ((void *)0) );
Executed by:
  • libcrypto.so.1.1
143
617 }-
618-
619 if (strcmp(type, "rsa_pss_saltlen") == 0) {
never executed: __result = (((const unsigned char *) (const char *) ( type ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "rsa_pss_saltlen" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
__extension__ ... )))); }) == 0Description
TRUEevaluated 18 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 141 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0-141
620 int saltlen;-
621-
622 if (!strcmp(value, "digest"))
never executed: __result = (((const unsigned char *) (const char *) ( value ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "digest" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
! __extension_...gest" )))); })Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 17 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0-17
623 saltlen = RSA_PSS_SALTLEN_DIGEST;
executed 1 time by 1 test: saltlen = -1;
Executed by:
  • libcrypto.so.1.1
1
624 else if (!strcmp(value, "max"))
never executed: __result = (((const unsigned char *) (const char *) ( value ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
executed 1 time by 1 test: __result = (((const unsigned char *) (const char *) ( "max" ))[3] - __s2[3]);
Executed by:
  • libcrypto.so.1.1
executed 1 time by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
executed 1 time by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
! __extension_..."max" )))); })Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 16 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEevaluated 17 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
__result == 0Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 16 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
__s2_len > 1Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
__result == 0Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
__s2_len > 2Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
__result == 0Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-17
625 saltlen = RSA_PSS_SALTLEN_MAX;
executed 1 time by 1 test: saltlen = -3;
Executed by:
  • libcrypto.so.1.1
1
626 else if (!strcmp(value, "auto"))
never executed: __result = (((const unsigned char *) (const char *) ( value ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "auto" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
! __extension_...auto" )))); })Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 15 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0-15
627 saltlen = RSA_PSS_SALTLEN_AUTO;
executed 1 time by 1 test: saltlen = -2;
Executed by:
  • libcrypto.so.1.1
1
628 else-
629 saltlen = atoi(value);
executed 15 times by 1 test: saltlen = atoi(value);
Executed by:
  • libcrypto.so.1.1
15
630 return EVP_PKEY_CTX_set_rsa_pss_saltlen(ctx, saltlen);
executed 18 times by 1 test: return RSA_pkey_ctx_ctrl(ctx, ((1<<3)|(1<<4)), (0x1000 + 2), saltlen, ((void *)0) );
Executed by:
  • libcrypto.so.1.1
18
631 }-
632-
633 if (strcmp(type, "rsa_keygen_bits") == 0) {
never executed: __result = (((const unsigned char *) (const char *) ( type ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "rsa_keygen_bits" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
__extension__ ... )))); }) == 0Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 137 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0-137
634 int nbits = atoi(value);-
635-
636 return EVP_PKEY_CTX_set_rsa_keygen_bits(ctx, nbits);
executed 4 times by 1 test: return RSA_pkey_ctx_ctrl(ctx, (1<<2), (0x1000 + 3), nbits, ((void *)0) );
Executed by:
  • libcrypto.so.1.1
4
637 }-
638-
639 if (strcmp(type, "rsa_keygen_pubexp") == 0) {
never executed: __result = (((const unsigned char *) (const char *) ( type ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "rsa_keygen_pubexp" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
__extension__ ... )))); }) == 0Description
TRUEnever evaluated
FALSEevaluated 137 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0-137
640 int ret;-
641-
642 BIGNUM *pubexp = NULL;-
643 if (!BN_asc2bn(&pubexp, value))
!BN_asc2bn(&pubexp, value)Description
TRUEnever evaluated
FALSEnever evaluated
0
644 return 0;
never executed: return 0;
0
645 ret = EVP_PKEY_CTX_set_rsa_keygen_pubexp(ctx, pubexp);-
646 if (ret <= 0)
ret <= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
647 BN_free(pubexp);
never executed: BN_free(pubexp);
0
648 return ret;
never executed: return ret;
0
649 }-
650-
651 if (strcmp(type, "rsa_keygen_primes") == 0) {
never executed: __result = (((const unsigned char *) (const char *) ( type ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "rsa_keygen_primes" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
__extension__ ... )))); }) == 0Description
TRUEevaluated 3 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 134 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0-134
652 int nprimes = atoi(value);-
653-
654 return EVP_PKEY_CTX_set_rsa_keygen_primes(ctx, nprimes);
executed 3 times by 1 test: return RSA_pkey_ctx_ctrl(ctx, (1<<2), (0x1000 + 13), nprimes, ((void *)0) );
Executed by:
  • libcrypto.so.1.1
3
655 }-
656-
657 if (strcmp(type, "rsa_mgf1_md") == 0)
never executed: __result = (((const unsigned char *) (const char *) ( type ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "rsa_mgf1_md" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
__extension__ ... )))); }) == 0Description
TRUEevaluated 131 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 3 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0-131
658 return EVP_PKEY_CTX_md(ctx,
executed 131 times by 1 test: return EVP_PKEY_CTX_md(ctx, ((1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7)) | ((1<<8) | (1<<9)), (0x1000 + 5), value);
Executed by:
  • libcrypto.so.1.1
131
659 EVP_PKEY_OP_TYPE_SIG | EVP_PKEY_OP_TYPE_CRYPT,
executed 131 times by 1 test: return EVP_PKEY_CTX_md(ctx, ((1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7)) | ((1<<8) | (1<<9)), (0x1000 + 5), value);
Executed by:
  • libcrypto.so.1.1
131
660 EVP_PKEY_CTRL_RSA_MGF1_MD, value);
executed 131 times by 1 test: return EVP_PKEY_CTX_md(ctx, ((1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7)) | ((1<<8) | (1<<9)), (0x1000 + 5), value);
Executed by:
  • libcrypto.so.1.1
131
661-
662 if (pkey_ctx_is_pss(ctx)) {
(ctx->pmeth->pkey_id == 912)Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
1-2
663-
664 if (strcmp(type, "rsa_pss_keygen_mgf1_md") == 0)
never executed: __result = (((const unsigned char *) (const char *) ( type ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "rsa_pss_keygen_mgf1_md" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
__extension__ ... )))); }) == 0Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0-1
665 return EVP_PKEY_CTX_md(ctx, EVP_PKEY_OP_KEYGEN,
executed 1 time by 1 test: return EVP_PKEY_CTX_md(ctx, (1<<2), (0x1000 + 5), value);
Executed by:
  • libcrypto.so.1.1
1
666 EVP_PKEY_CTRL_RSA_MGF1_MD, value);
executed 1 time by 1 test: return EVP_PKEY_CTX_md(ctx, (1<<2), (0x1000 + 5), value);
Executed by:
  • libcrypto.so.1.1
1
667-
668 if (strcmp(type, "rsa_pss_keygen_md") == 0)
never executed: __result = (((const unsigned char *) (const char *) ( type ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "rsa_pss_keygen_md" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
__extension__ ... )))); }) == 0Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0-1
669 return EVP_PKEY_CTX_md(ctx, EVP_PKEY_OP_KEYGEN,
executed 1 time by 1 test: return EVP_PKEY_CTX_md(ctx, (1<<2), 1, value);
Executed by:
  • libcrypto.so.1.1
1
670 EVP_PKEY_CTRL_MD, value);
executed 1 time by 1 test: return EVP_PKEY_CTX_md(ctx, (1<<2), 1, value);
Executed by:
  • libcrypto.so.1.1
1
671-
672 if (strcmp(type, "rsa_pss_keygen_saltlen") == 0) {
never executed: __result = (((const unsigned char *) (const char *) ( type ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "rsa_pss_keygen_saltlen" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
__extension__ ... )))); }) == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
673 int saltlen = atoi(value);-
674-
675 return EVP_PKEY_CTX_set_rsa_pss_keygen_saltlen(ctx, saltlen);
never executed: return EVP_PKEY_CTX_ctrl(ctx, 912, (1<<2), (0x1000 + 2), saltlen, ((void *)0) );
0
676 }-
677 }
never executed: end of block
0
678-
679 if (strcmp(type, "rsa_oaep_md") == 0)
never executed: __result = (((const unsigned char *) (const char *) ( type ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "rsa_oaep_md" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
__extension__ ... )))); }) == 0Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0-1
680 return EVP_PKEY_CTX_md(ctx, EVP_PKEY_OP_TYPE_CRYPT,
executed 1 time by 1 test: return EVP_PKEY_CTX_md(ctx, ((1<<8) | (1<<9)), (0x1000 + 9), value);
Executed by:
  • libcrypto.so.1.1
1
681 EVP_PKEY_CTRL_RSA_OAEP_MD, value);
executed 1 time by 1 test: return EVP_PKEY_CTX_md(ctx, ((1<<8) | (1<<9)), (0x1000 + 9), value);
Executed by:
  • libcrypto.so.1.1
1
682-
683 if (strcmp(type, "rsa_oaep_label") == 0) {
never executed: __result = (((const unsigned char *) (const char *) ( type ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "rsa_oaep_label" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
__extension__ ... )))); }) == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
684 unsigned char *lab;-
685 long lablen;-
686 int ret;-
687-
688 lab = OPENSSL_hexstr2buf(value, &lablen);-
689 if (!lab)
!labDescription
TRUEnever evaluated
FALSEnever evaluated
0
690 return 0;
never executed: return 0;
0
691 ret = EVP_PKEY_CTX_set0_rsa_oaep_label(ctx, lab, lablen);-
692 if (ret <= 0)
ret <= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
693 OPENSSL_free(lab);
never executed: CRYPTO_free(lab, __FILE__, 693);
0
694 return ret;
never executed: return ret;
0
695 }-
696-
697 return -2;
never executed: return -2;
0
698}-
699-
700/* Set PSS parameters when generating a key, if necessary */-
701static int rsa_set_pss_param(RSA *rsa, EVP_PKEY_CTX *ctx)-
702{-
703 RSA_PKEY_CTX *rctx = ctx->data;-
704-
705 if (!pkey_ctx_is_pss(ctx))
!(ctx->pmeth->pkey_id == 912)Description
TRUEevaluated 12 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
1-12
706 return 1;
executed 12 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
12
707 /* If all parameters are default values don't set pss */-
708 if (rctx->md == NULL && rctx->mgf1md == NULL && rctx->saltlen == -2)
rctx->md == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
rctx->mgf1md == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
rctx->saltlen == -2Description
TRUEnever evaluated
FALSEnever evaluated
0-1
709 return 1;
never executed: return 1;
0
710 rsa->pss = rsa_pss_params_create(rctx->md, rctx->mgf1md,-
711 rctx->saltlen == -2 ? 0 : rctx->saltlen);-
712 if (rsa->pss == NULL)
rsa->pss == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-1
713 return 0;
never executed: return 0;
0
714 return 1;
executed 1 time by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
1
715}-
716-
717static int pkey_rsa_keygen(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey)-
718{-
719 RSA *rsa = NULL;-
720 RSA_PKEY_CTX *rctx = ctx->data;-
721 BN_GENCB *pcb;-
722 int ret;-
723-
724 if (rctx->pub_exp == NULL) {
rctx->pub_exp == ((void *)0)Description
TRUEevaluated 13 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-13
725 rctx->pub_exp = BN_new();-
726 if (rctx->pub_exp == NULL || !BN_set_word(rctx->pub_exp, RSA_F4))
rctx->pub_exp == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 13 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
!BN_set_word(r...exp, 0x10001L)Description
TRUEnever evaluated
FALSEevaluated 13 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-13
727 return 0;
never executed: return 0;
0
728 }
executed 13 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
13
729 rsa = RSA_new();-
730 if (rsa == NULL)
rsa == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 13 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-13
731 return 0;
never executed: return 0;
0
732 if (ctx->pkey_gencb) {
ctx->pkey_gencbDescription
TRUEevaluated 12 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
1-12
733 pcb = BN_GENCB_new();-
734 if (pcb == NULL) {
pcb == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 12 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-12
735 RSA_free(rsa);-
736 return 0;
never executed: return 0;
0
737 }-
738 evp_pkey_set_cb_translate(pcb, ctx);-
739 } else {
executed 12 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
12
740 pcb = NULL;-
741 }
executed 1 time by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
1
742 ret = RSA_generate_multi_prime_key(rsa, rctx->nbits, rctx->primes,-
743 rctx->pub_exp, pcb);-
744 BN_GENCB_free(pcb);-
745 if (ret > 0 && !rsa_set_pss_param(rsa, ctx)) {
ret > 0Description
TRUEevaluated 13 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
!rsa_set_pss_param(rsa, ctx)Description
TRUEnever evaluated
FALSEevaluated 13 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-13
746 RSA_free(rsa);-
747 return 0;
never executed: return 0;
0
748 }-
749 if (ret > 0)
ret > 0Description
TRUEevaluated 13 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEnever evaluated
0-13
750 EVP_PKEY_assign(pkey, ctx->pmeth->pkey_id, rsa);
executed 13 times by 1 test: EVP_PKEY_assign(pkey, ctx->pmeth->pkey_id, rsa);
Executed by:
  • libcrypto.so.1.1
13
751 else-
752 RSA_free(rsa);
never executed: RSA_free(rsa);
0
753 return ret;
executed 13 times by 1 test: return ret;
Executed by:
  • libcrypto.so.1.1
13
754}-
755-
756const EVP_PKEY_METHOD rsa_pkey_meth = {-
757 EVP_PKEY_RSA,-
758 EVP_PKEY_FLAG_AUTOARGLEN,-
759 pkey_rsa_init,-
760 pkey_rsa_copy,-
761 pkey_rsa_cleanup,-
762-
763 0, 0,-
764-
765 0,-
766 pkey_rsa_keygen,-
767-
768 0,-
769 pkey_rsa_sign,-
770-
771 0,-
772 pkey_rsa_verify,-
773-
774 0,-
775 pkey_rsa_verifyrecover,-
776-
777 0, 0, 0, 0,-
778-
779 0,-
780 pkey_rsa_encrypt,-
781-
782 0,-
783 pkey_rsa_decrypt,-
784-
785 0, 0,-
786-
787 pkey_rsa_ctrl,-
788 pkey_rsa_ctrl_str-
789};-
790-
791/*-
792 * Called for PSS sign or verify initialisation: checks PSS parameter-
793 * sanity and sets any restrictions on key usage.-
794 */-
795-
796static int pkey_pss_init(EVP_PKEY_CTX *ctx)-
797{-
798 RSA *rsa;-
799 RSA_PKEY_CTX *rctx = ctx->data;-
800 const EVP_MD *md;-
801 const EVP_MD *mgf1md;-
802 int min_saltlen, max_saltlen;-
803-
804 /* Should never happen */-
805 if (!pkey_ctx_is_pss(ctx))
!(ctx->pmeth->pkey_id == 912)Description
TRUEnever evaluated
FALSEevaluated 19 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-19
806 return 0;
never executed: return 0;
0
807 rsa = ctx->pkey->pkey.rsa;-
808 /* If no restrictions just return */-
809 if (rsa->pss == NULL)
rsa->pss == ((void *)0)Description
TRUEevaluated 6 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 13 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
6-13
810 return 1;
executed 6 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
6
811 /* Get and check parameters */-
812 if (!rsa_pss_get_param(rsa->pss, &md, &mgf1md, &min_saltlen))
!rsa_pss_get_p... &min_saltlen)Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 12 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
1-12
813 return 0;
executed 1 time by 1 test: return 0;
Executed by:
  • libcrypto.so.1.1
1
814-
815 /* See if minimum salt length exceeds maximum possible */-
816 max_saltlen = RSA_size(rsa) - EVP_MD_size(md);-
817 if ((RSA_bits(rsa) & 0x7) == 1)
(RSA_bits(rsa) & 0x7) == 1Description
TRUEnever evaluated
FALSEevaluated 12 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-12
818 max_saltlen--;
never executed: max_saltlen--;
0
819 if (min_saltlen > max_saltlen) {
min_saltlen > max_saltlenDescription
TRUEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 11 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
1-11
820 RSAerr(RSA_F_PKEY_PSS_INIT, RSA_R_INVALID_SALT_LENGTH);-
821 return 0;
executed 1 time by 1 test: return 0;
Executed by:
  • libcrypto.so.1.1
1
822 }-
823-
824 rctx->min_saltlen = min_saltlen;-
825-
826 /*-
827 * Set PSS restrictions as defaults: we can then block any attempt to-
828 * use invalid values in pkey_rsa_ctrl-
829 */-
830-
831 rctx->md = md;-
832 rctx->mgf1md = mgf1md;-
833 rctx->saltlen = min_saltlen;-
834-
835 return 1;
executed 11 times by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
11
836}-
837-
838const EVP_PKEY_METHOD rsa_pss_pkey_meth = {-
839 EVP_PKEY_RSA_PSS,-
840 EVP_PKEY_FLAG_AUTOARGLEN,-
841 pkey_rsa_init,-
842 pkey_rsa_copy,-
843 pkey_rsa_cleanup,-
844-
845 0, 0,-
846-
847 0,-
848 pkey_rsa_keygen,-
849-
850 pkey_pss_init,-
851 pkey_rsa_sign,-
852-
853 pkey_pss_init,-
854 pkey_rsa_verify,-
855-
856 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-
857-
858 pkey_rsa_ctrl,-
859 pkey_rsa_ctrl_str-
860};-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2