Lines Matching refs:rctx

60 #define rsa_pss_restricted(rctx) (rctx->min_saltlen != -1)  argument
64 RSA_PKEY_CTX *rctx = OPENSSL_zalloc(sizeof(*rctx)); in pkey_rsa_init() local
66 if (rctx == NULL) in pkey_rsa_init()
68 rctx->nbits = 2048; in pkey_rsa_init()
69 rctx->primes = RSA_DEFAULT_PRIME_NUM; in pkey_rsa_init()
71 rctx->pad_mode = RSA_PKCS1_PSS_PADDING; in pkey_rsa_init()
73 rctx->pad_mode = RSA_PKCS1_PADDING; in pkey_rsa_init()
75 rctx->saltlen = RSA_PSS_SALTLEN_AUTO; in pkey_rsa_init()
76 rctx->min_saltlen = -1; in pkey_rsa_init()
77 rctx->implicit_rejection = 1; in pkey_rsa_init()
78 ctx->data = rctx; in pkey_rsa_init()
79 ctx->keygen_info = rctx->gentmp; in pkey_rsa_init()
126 RSA_PKEY_CTX *rctx = ctx->data; in pkey_rsa_cleanup() local
127 if (rctx) { in pkey_rsa_cleanup()
128 BN_free(rctx->pub_exp); in pkey_rsa_cleanup()
129 OPENSSL_free(rctx->tbuf); in pkey_rsa_cleanup()
130 OPENSSL_free(rctx->oaep_label); in pkey_rsa_cleanup()
131 OPENSSL_free(rctx); in pkey_rsa_cleanup()
140 RSA_PKEY_CTX *rctx = ctx->data; in pkey_rsa_sign() local
149 if (rctx->md) { in pkey_rsa_sign()
150 md_size = EVP_MD_get_size(rctx->md); in pkey_rsa_sign()
161 if (EVP_MD_get_type(rctx->md) == NID_mdc2) { in pkey_rsa_sign()
163 if (rctx->pad_mode != RSA_PKCS1_PADDING) in pkey_rsa_sign()
170 } else if (rctx->pad_mode == RSA_X931_PADDING) { in pkey_rsa_sign()
175 if (!setup_tbuf(rctx, ctx)) { in pkey_rsa_sign()
179 memcpy(rctx->tbuf, tbs, tbslen); in pkey_rsa_sign()
180 rctx->tbuf[tbslen] = RSA_X931_hash_id(EVP_MD_get_type(rctx->md)); in pkey_rsa_sign()
181 ret = RSA_private_encrypt(tbslen + 1, rctx->tbuf, in pkey_rsa_sign()
183 } else if (rctx->pad_mode == RSA_PKCS1_PADDING) { in pkey_rsa_sign()
185 ret = RSA_sign(EVP_MD_get_type(rctx->md), in pkey_rsa_sign()
190 } else if (rctx->pad_mode == RSA_PKCS1_PSS_PADDING) { in pkey_rsa_sign()
191 if (!setup_tbuf(rctx, ctx)) in pkey_rsa_sign()
194 rctx->tbuf, tbs, in pkey_rsa_sign()
195 rctx->md, rctx->mgf1md, in pkey_rsa_sign()
196 rctx->saltlen)) in pkey_rsa_sign()
198 ret = RSA_private_encrypt(RSA_size(rsa), rctx->tbuf, in pkey_rsa_sign()
204 ret = RSA_private_encrypt(tbslen, tbs, sig, rsa, rctx->pad_mode); in pkey_rsa_sign()
217 RSA_PKEY_CTX *rctx = ctx->data; in pkey_rsa_verifyrecover() local
225 if (rctx->md) { in pkey_rsa_verifyrecover()
226 if (rctx->pad_mode == RSA_X931_PADDING) { in pkey_rsa_verifyrecover()
227 if (!setup_tbuf(rctx, ctx)) in pkey_rsa_verifyrecover()
229 ret = RSA_public_decrypt(siglen, sig, rctx->tbuf, rsa, in pkey_rsa_verifyrecover()
234 if (rctx->tbuf[ret] != RSA_X931_hash_id(EVP_MD_get_type(rctx->md))) { in pkey_rsa_verifyrecover()
238 if (ret != EVP_MD_get_size(rctx->md)) { in pkey_rsa_verifyrecover()
243 memcpy(rout, rctx->tbuf, ret); in pkey_rsa_verifyrecover()
244 } else if (rctx->pad_mode == RSA_PKCS1_PADDING) { in pkey_rsa_verifyrecover()
246 ret = ossl_rsa_verify(EVP_MD_get_type(rctx->md), in pkey_rsa_verifyrecover()
256 ret = RSA_public_decrypt(siglen, sig, rout, rsa, rctx->pad_mode); in pkey_rsa_verifyrecover()
268 RSA_PKEY_CTX *rctx = ctx->data; in pkey_rsa_verify() local
278 if (rctx->md) { in pkey_rsa_verify()
279 if (rctx->pad_mode == RSA_PKCS1_PADDING) in pkey_rsa_verify()
280 return RSA_verify(EVP_MD_get_type(rctx->md), tbs, tbslen, in pkey_rsa_verify()
282 md_size = EVP_MD_get_size(rctx->md); in pkey_rsa_verify()
291 if (rctx->pad_mode == RSA_X931_PADDING) { in pkey_rsa_verify()
294 } else if (rctx->pad_mode == RSA_PKCS1_PSS_PADDING) { in pkey_rsa_verify()
296 if (!setup_tbuf(rctx, ctx)) in pkey_rsa_verify()
298 ret = RSA_public_decrypt(siglen, sig, rctx->tbuf, in pkey_rsa_verify()
303 rctx->md, rctx->mgf1md, in pkey_rsa_verify()
304 rctx->tbuf, rctx->saltlen); in pkey_rsa_verify()
312 if (!setup_tbuf(rctx, ctx)) in pkey_rsa_verify()
314 rslen = RSA_public_decrypt(siglen, sig, rctx->tbuf, in pkey_rsa_verify()
315 rsa, rctx->pad_mode); in pkey_rsa_verify()
320 if ((rslen != tbslen) || memcmp(tbs, rctx->tbuf, rslen)) in pkey_rsa_verify()
332 RSA_PKEY_CTX *rctx = ctx->data; in pkey_rsa_encrypt() local
340 if (rctx->pad_mode == RSA_PKCS1_OAEP_PADDING) { in pkey_rsa_encrypt()
342 if (!setup_tbuf(rctx, ctx)) in pkey_rsa_encrypt()
344 if (!RSA_padding_add_PKCS1_OAEP_mgf1(rctx->tbuf, klen, in pkey_rsa_encrypt()
346 rctx->oaep_label, in pkey_rsa_encrypt()
347 rctx->oaep_labellen, in pkey_rsa_encrypt()
348 rctx->md, rctx->mgf1md)) in pkey_rsa_encrypt()
350 ret = RSA_public_encrypt(klen, rctx->tbuf, out, rsa, RSA_NO_PADDING); in pkey_rsa_encrypt()
352 ret = RSA_public_encrypt(inlen, in, out, rsa, rctx->pad_mode); in pkey_rsa_encrypt()
366 RSA_PKEY_CTX *rctx = ctx->data; in pkey_rsa_decrypt() local
374 if (rctx->pad_mode == RSA_PKCS1_OAEP_PADDING) { in pkey_rsa_decrypt()
375 if (!setup_tbuf(rctx, ctx)) in pkey_rsa_decrypt()
377 ret = RSA_private_decrypt(inlen, in, rctx->tbuf, rsa, RSA_NO_PADDING); in pkey_rsa_decrypt()
380 ret = RSA_padding_check_PKCS1_OAEP_mgf1(out, ret, rctx->tbuf, in pkey_rsa_decrypt()
382 rctx->oaep_label, in pkey_rsa_decrypt()
383 rctx->oaep_labellen, in pkey_rsa_decrypt()
384 rctx->md, rctx->mgf1md); in pkey_rsa_decrypt()
386 if (rctx->pad_mode == RSA_PKCS1_PADDING && in pkey_rsa_decrypt()
387 rctx->implicit_rejection == 0) in pkey_rsa_decrypt()
390 pad_mode = rctx->pad_mode; in pkey_rsa_decrypt()
451 RSA_PKEY_CTX *rctx = ctx->data; in pkey_rsa_ctrl() local
457 if (!check_padding_md(rctx->md, p1)) in pkey_rsa_ctrl()
463 if (!rctx->md) in pkey_rsa_ctrl()
464 rctx->md = EVP_sha1(); in pkey_rsa_ctrl()
471 if (!rctx->md) in pkey_rsa_ctrl()
472 rctx->md = EVP_sha1(); in pkey_rsa_ctrl()
474 rctx->pad_mode = p1; in pkey_rsa_ctrl()
482 *(int *)p2 = rctx->pad_mode; in pkey_rsa_ctrl()
487 if (rctx->pad_mode != RSA_PKCS1_PSS_PADDING) { in pkey_rsa_ctrl()
492 *(int *)p2 = rctx->saltlen; in pkey_rsa_ctrl()
496 if (rsa_pss_restricted(rctx)) { in pkey_rsa_ctrl()
502 md_size = EVP_MD_get_size(rctx->md); in pkey_rsa_ctrl()
508 && rctx->min_saltlen > md_size) in pkey_rsa_ctrl()
509 || (p1 >= 0 && p1 < rctx->min_saltlen)) { in pkey_rsa_ctrl()
514 rctx->saltlen = p1; in pkey_rsa_ctrl()
523 rctx->nbits = p1; in pkey_rsa_ctrl()
531 BN_free(rctx->pub_exp); in pkey_rsa_ctrl()
532 rctx->pub_exp = p2; in pkey_rsa_ctrl()
540 rctx->primes = p1; in pkey_rsa_ctrl()
545 if (rctx->pad_mode != RSA_PKCS1_OAEP_PADDING) { in pkey_rsa_ctrl()
550 *(const EVP_MD **)p2 = rctx->md; in pkey_rsa_ctrl()
552 rctx->md = p2; in pkey_rsa_ctrl()
556 if (!check_padding_md(p2, rctx->pad_mode)) in pkey_rsa_ctrl()
558 if (rsa_pss_restricted(rctx)) { in pkey_rsa_ctrl()
559 if (EVP_MD_get_type(rctx->md) == EVP_MD_get_type(p2)) in pkey_rsa_ctrl()
564 rctx->md = p2; in pkey_rsa_ctrl()
568 *(const EVP_MD **)p2 = rctx->md; in pkey_rsa_ctrl()
573 if (rctx->pad_mode != RSA_PKCS1_PSS_PADDING in pkey_rsa_ctrl()
574 && rctx->pad_mode != RSA_PKCS1_OAEP_PADDING) { in pkey_rsa_ctrl()
579 if (rctx->mgf1md) in pkey_rsa_ctrl()
580 *(const EVP_MD **)p2 = rctx->mgf1md; in pkey_rsa_ctrl()
582 *(const EVP_MD **)p2 = rctx->md; in pkey_rsa_ctrl()
584 if (rsa_pss_restricted(rctx)) { in pkey_rsa_ctrl()
585 if (EVP_MD_get_type(rctx->mgf1md) == EVP_MD_get_type(p2)) in pkey_rsa_ctrl()
590 rctx->mgf1md = p2; in pkey_rsa_ctrl()
595 if (rctx->pad_mode != RSA_PKCS1_OAEP_PADDING) { in pkey_rsa_ctrl()
599 OPENSSL_free(rctx->oaep_label); in pkey_rsa_ctrl()
601 rctx->oaep_label = p2; in pkey_rsa_ctrl()
602 rctx->oaep_labellen = p1; in pkey_rsa_ctrl()
604 rctx->oaep_label = NULL; in pkey_rsa_ctrl()
605 rctx->oaep_labellen = 0; in pkey_rsa_ctrl()
610 if (rctx->pad_mode != RSA_PKCS1_OAEP_PADDING) { in pkey_rsa_ctrl()
618 *(unsigned char **)p2 = rctx->oaep_label; in pkey_rsa_ctrl()
619 return rctx->oaep_labellen; in pkey_rsa_ctrl()
622 if (rctx->pad_mode != RSA_PKCS1_PADDING) { in pkey_rsa_ctrl()
626 rctx->implicit_rejection = p1; in pkey_rsa_ctrl()
767 RSA_PKEY_CTX *rctx = ctx->data; in rsa_set_pss_param() local
772 if (rctx->md == NULL && rctx->mgf1md == NULL && rctx->saltlen == -2) in rsa_set_pss_param()
774 rsa->pss = ossl_rsa_pss_params_create(rctx->md, rctx->mgf1md, in rsa_set_pss_param()
775 rctx->saltlen == -2 in rsa_set_pss_param()
776 ? 0 : rctx->saltlen); in rsa_set_pss_param()
785 RSA_PKEY_CTX *rctx = ctx->data; in pkey_rsa_keygen() local
789 if (rctx->pub_exp == NULL) { in pkey_rsa_keygen()
790 rctx->pub_exp = BN_new(); in pkey_rsa_keygen()
791 if (rctx->pub_exp == NULL || !BN_set_word(rctx->pub_exp, RSA_F4)) in pkey_rsa_keygen()
807 ret = RSA_generate_multi_prime_key(rsa, rctx->nbits, rctx->primes, in pkey_rsa_keygen()
808 rctx->pub_exp, pcb); in pkey_rsa_keygen()
869 RSA_PKEY_CTX *rctx = ctx->data; in pkey_pss_init() local
899 rctx->min_saltlen = min_saltlen; in pkey_pss_init()
906 rctx->md = md; in pkey_pss_init()
907 rctx->mgf1md = mgf1md; in pkey_pss_init()
908 rctx->saltlen = min_saltlen; in pkey_pss_init()