Lines Matching refs:rctx

58 #define rsa_pss_restricted(rctx) (rctx->min_saltlen != -1)  argument
62 RSA_PKEY_CTX *rctx = OPENSSL_zalloc(sizeof(*rctx)); in pkey_rsa_init() local
64 if (rctx == NULL) in pkey_rsa_init()
66 rctx->nbits = 2048; in pkey_rsa_init()
67 rctx->primes = RSA_DEFAULT_PRIME_NUM; in pkey_rsa_init()
69 rctx->pad_mode = RSA_PKCS1_PSS_PADDING; in pkey_rsa_init()
71 rctx->pad_mode = RSA_PKCS1_PADDING; in pkey_rsa_init()
73 rctx->saltlen = RSA_PSS_SALTLEN_AUTO; in pkey_rsa_init()
74 rctx->min_saltlen = -1; in pkey_rsa_init()
75 ctx->data = rctx; in pkey_rsa_init()
76 ctx->keygen_info = rctx->gentmp; in pkey_rsa_init()
124 RSA_PKEY_CTX *rctx = ctx->data; in pkey_rsa_cleanup() local
125 if (rctx) { in pkey_rsa_cleanup()
126 BN_free(rctx->pub_exp); in pkey_rsa_cleanup()
127 OPENSSL_free(rctx->tbuf); in pkey_rsa_cleanup()
128 OPENSSL_free(rctx->oaep_label); in pkey_rsa_cleanup()
129 OPENSSL_free(rctx); in pkey_rsa_cleanup()
138 RSA_PKEY_CTX *rctx = ctx->data; in pkey_rsa_sign() local
146 if (rctx->md) { in pkey_rsa_sign()
147 if (tbslen != (size_t)EVP_MD_get_size(rctx->md)) { in pkey_rsa_sign()
152 if (EVP_MD_get_type(rctx->md) == NID_mdc2) { in pkey_rsa_sign()
154 if (rctx->pad_mode != RSA_PKCS1_PADDING) in pkey_rsa_sign()
161 } else if (rctx->pad_mode == RSA_X931_PADDING) { in pkey_rsa_sign()
166 if (!setup_tbuf(rctx, ctx)) { in pkey_rsa_sign()
170 memcpy(rctx->tbuf, tbs, tbslen); in pkey_rsa_sign()
171 rctx->tbuf[tbslen] = RSA_X931_hash_id(EVP_MD_get_type(rctx->md)); in pkey_rsa_sign()
172 ret = RSA_private_encrypt(tbslen + 1, rctx->tbuf, in pkey_rsa_sign()
174 } else if (rctx->pad_mode == RSA_PKCS1_PADDING) { in pkey_rsa_sign()
176 ret = RSA_sign(EVP_MD_get_type(rctx->md), in pkey_rsa_sign()
181 } else if (rctx->pad_mode == RSA_PKCS1_PSS_PADDING) { in pkey_rsa_sign()
182 if (!setup_tbuf(rctx, ctx)) in pkey_rsa_sign()
185 rctx->tbuf, tbs, in pkey_rsa_sign()
186 rctx->md, rctx->mgf1md, in pkey_rsa_sign()
187 rctx->saltlen)) in pkey_rsa_sign()
189 ret = RSA_private_encrypt(RSA_size(rsa), rctx->tbuf, in pkey_rsa_sign()
195 ret = RSA_private_encrypt(tbslen, tbs, sig, rsa, rctx->pad_mode); in pkey_rsa_sign()
208 RSA_PKEY_CTX *rctx = ctx->data; in pkey_rsa_verifyrecover() local
216 if (rctx->md) { in pkey_rsa_verifyrecover()
217 if (rctx->pad_mode == RSA_X931_PADDING) { in pkey_rsa_verifyrecover()
218 if (!setup_tbuf(rctx, ctx)) in pkey_rsa_verifyrecover()
220 ret = RSA_public_decrypt(siglen, sig, rctx->tbuf, rsa, in pkey_rsa_verifyrecover()
225 if (rctx->tbuf[ret] != RSA_X931_hash_id(EVP_MD_get_type(rctx->md))) { in pkey_rsa_verifyrecover()
229 if (ret != EVP_MD_get_size(rctx->md)) { in pkey_rsa_verifyrecover()
234 memcpy(rout, rctx->tbuf, ret); in pkey_rsa_verifyrecover()
235 } else if (rctx->pad_mode == RSA_PKCS1_PADDING) { in pkey_rsa_verifyrecover()
237 ret = ossl_rsa_verify(EVP_MD_get_type(rctx->md), in pkey_rsa_verifyrecover()
247 ret = RSA_public_decrypt(siglen, sig, rout, rsa, rctx->pad_mode); in pkey_rsa_verifyrecover()
259 RSA_PKEY_CTX *rctx = ctx->data; in pkey_rsa_verify() local
268 if (rctx->md) { in pkey_rsa_verify()
269 if (rctx->pad_mode == RSA_PKCS1_PADDING) in pkey_rsa_verify()
270 return RSA_verify(EVP_MD_get_type(rctx->md), tbs, tbslen, in pkey_rsa_verify()
272 if (tbslen != (size_t)EVP_MD_get_size(rctx->md)) { in pkey_rsa_verify()
276 if (rctx->pad_mode == RSA_X931_PADDING) { in pkey_rsa_verify()
279 } else if (rctx->pad_mode == RSA_PKCS1_PSS_PADDING) { in pkey_rsa_verify()
281 if (!setup_tbuf(rctx, ctx)) in pkey_rsa_verify()
283 ret = RSA_public_decrypt(siglen, sig, rctx->tbuf, in pkey_rsa_verify()
288 rctx->md, rctx->mgf1md, in pkey_rsa_verify()
289 rctx->tbuf, rctx->saltlen); in pkey_rsa_verify()
297 if (!setup_tbuf(rctx, ctx)) in pkey_rsa_verify()
299 rslen = RSA_public_decrypt(siglen, sig, rctx->tbuf, in pkey_rsa_verify()
300 rsa, rctx->pad_mode); in pkey_rsa_verify()
305 if ((rslen != tbslen) || memcmp(tbs, rctx->tbuf, rslen)) in pkey_rsa_verify()
317 RSA_PKEY_CTX *rctx = ctx->data; in pkey_rsa_encrypt() local
325 if (rctx->pad_mode == RSA_PKCS1_OAEP_PADDING) { in pkey_rsa_encrypt()
327 if (!setup_tbuf(rctx, ctx)) in pkey_rsa_encrypt()
329 if (!RSA_padding_add_PKCS1_OAEP_mgf1(rctx->tbuf, klen, in pkey_rsa_encrypt()
331 rctx->oaep_label, in pkey_rsa_encrypt()
332 rctx->oaep_labellen, in pkey_rsa_encrypt()
333 rctx->md, rctx->mgf1md)) in pkey_rsa_encrypt()
335 ret = RSA_public_encrypt(klen, rctx->tbuf, out, rsa, RSA_NO_PADDING); in pkey_rsa_encrypt()
337 ret = RSA_public_encrypt(inlen, in, out, rsa, rctx->pad_mode); in pkey_rsa_encrypt()
350 RSA_PKEY_CTX *rctx = ctx->data; in pkey_rsa_decrypt() local
358 if (rctx->pad_mode == RSA_PKCS1_OAEP_PADDING) { in pkey_rsa_decrypt()
359 if (!setup_tbuf(rctx, ctx)) in pkey_rsa_decrypt()
361 ret = RSA_private_decrypt(inlen, in, rctx->tbuf, rsa, RSA_NO_PADDING); in pkey_rsa_decrypt()
364 ret = RSA_padding_check_PKCS1_OAEP_mgf1(out, ret, rctx->tbuf, in pkey_rsa_decrypt()
366 rctx->oaep_label, in pkey_rsa_decrypt()
367 rctx->oaep_labellen, in pkey_rsa_decrypt()
368 rctx->md, rctx->mgf1md); in pkey_rsa_decrypt()
370 ret = RSA_private_decrypt(inlen, in, out, rsa, rctx->pad_mode); in pkey_rsa_decrypt()
430 RSA_PKEY_CTX *rctx = ctx->data; in pkey_rsa_ctrl() local
435 if (!check_padding_md(rctx->md, p1)) in pkey_rsa_ctrl()
441 if (!rctx->md) in pkey_rsa_ctrl()
442 rctx->md = EVP_sha1(); in pkey_rsa_ctrl()
449 if (!rctx->md) in pkey_rsa_ctrl()
450 rctx->md = EVP_sha1(); in pkey_rsa_ctrl()
452 rctx->pad_mode = p1; in pkey_rsa_ctrl()
460 *(int *)p2 = rctx->pad_mode; in pkey_rsa_ctrl()
465 if (rctx->pad_mode != RSA_PKCS1_PSS_PADDING) { in pkey_rsa_ctrl()
470 *(int *)p2 = rctx->saltlen; in pkey_rsa_ctrl()
474 if (rsa_pss_restricted(rctx)) { in pkey_rsa_ctrl()
481 && rctx->min_saltlen > EVP_MD_get_size(rctx->md)) in pkey_rsa_ctrl()
482 || (p1 >= 0 && p1 < rctx->min_saltlen)) { in pkey_rsa_ctrl()
487 rctx->saltlen = p1; in pkey_rsa_ctrl()
496 rctx->nbits = p1; in pkey_rsa_ctrl()
504 BN_free(rctx->pub_exp); in pkey_rsa_ctrl()
505 rctx->pub_exp = p2; in pkey_rsa_ctrl()
513 rctx->primes = p1; in pkey_rsa_ctrl()
518 if (rctx->pad_mode != RSA_PKCS1_OAEP_PADDING) { in pkey_rsa_ctrl()
523 *(const EVP_MD **)p2 = rctx->md; in pkey_rsa_ctrl()
525 rctx->md = p2; in pkey_rsa_ctrl()
529 if (!check_padding_md(p2, rctx->pad_mode)) in pkey_rsa_ctrl()
531 if (rsa_pss_restricted(rctx)) { in pkey_rsa_ctrl()
532 if (EVP_MD_get_type(rctx->md) == EVP_MD_get_type(p2)) in pkey_rsa_ctrl()
537 rctx->md = p2; in pkey_rsa_ctrl()
541 *(const EVP_MD **)p2 = rctx->md; in pkey_rsa_ctrl()
546 if (rctx->pad_mode != RSA_PKCS1_PSS_PADDING in pkey_rsa_ctrl()
547 && rctx->pad_mode != RSA_PKCS1_OAEP_PADDING) { in pkey_rsa_ctrl()
552 if (rctx->mgf1md) in pkey_rsa_ctrl()
553 *(const EVP_MD **)p2 = rctx->mgf1md; in pkey_rsa_ctrl()
555 *(const EVP_MD **)p2 = rctx->md; in pkey_rsa_ctrl()
557 if (rsa_pss_restricted(rctx)) { in pkey_rsa_ctrl()
558 if (EVP_MD_get_type(rctx->mgf1md) == EVP_MD_get_type(p2)) in pkey_rsa_ctrl()
563 rctx->mgf1md = p2; in pkey_rsa_ctrl()
568 if (rctx->pad_mode != RSA_PKCS1_OAEP_PADDING) { in pkey_rsa_ctrl()
572 OPENSSL_free(rctx->oaep_label); in pkey_rsa_ctrl()
574 rctx->oaep_label = p2; in pkey_rsa_ctrl()
575 rctx->oaep_labellen = p1; in pkey_rsa_ctrl()
577 rctx->oaep_label = NULL; in pkey_rsa_ctrl()
578 rctx->oaep_labellen = 0; in pkey_rsa_ctrl()
583 if (rctx->pad_mode != RSA_PKCS1_OAEP_PADDING) { in pkey_rsa_ctrl()
587 *(unsigned char **)p2 = rctx->oaep_label; in pkey_rsa_ctrl()
588 return rctx->oaep_labellen; in pkey_rsa_ctrl()
728 RSA_PKEY_CTX *rctx = ctx->data; in rsa_set_pss_param() local
733 if (rctx->md == NULL && rctx->mgf1md == NULL && rctx->saltlen == -2) in rsa_set_pss_param()
735 rsa->pss = ossl_rsa_pss_params_create(rctx->md, rctx->mgf1md, in rsa_set_pss_param()
736 rctx->saltlen == -2 in rsa_set_pss_param()
737 ? 0 : rctx->saltlen); in rsa_set_pss_param()
746 RSA_PKEY_CTX *rctx = ctx->data; in pkey_rsa_keygen() local
750 if (rctx->pub_exp == NULL) { in pkey_rsa_keygen()
751 rctx->pub_exp = BN_new(); in pkey_rsa_keygen()
752 if (rctx->pub_exp == NULL || !BN_set_word(rctx->pub_exp, RSA_F4)) in pkey_rsa_keygen()
768 ret = RSA_generate_multi_prime_key(rsa, rctx->nbits, rctx->primes, in pkey_rsa_keygen()
769 rctx->pub_exp, pcb); in pkey_rsa_keygen()
830 RSA_PKEY_CTX *rctx = ctx->data; in pkey_pss_init() local
855 rctx->min_saltlen = min_saltlen; in pkey_pss_init()
862 rctx->md = md; in pkey_pss_init()
863 rctx->mgf1md = mgf1md; in pkey_pss_init()
864 rctx->saltlen = min_saltlen; in pkey_pss_init()