Lines Matching defs:prsactx
113 #define rsa_pss_restricted(prsactx) (prsactx->min_saltlen != -1)
115 static size_t rsa_get_md_size(const PROV_RSA_CTX *prsactx)
117 if (prsactx->md != NULL)
118 return EVP_MD_get_size(prsactx->md);
122 static int rsa_check_padding(const PROV_RSA_CTX *prsactx,
126 switch(prsactx->pad_mode) {
140 if (rsa_pss_restricted(prsactx))
141 if ((mdname != NULL && !EVP_MD_is_a(prsactx->md, mdname))
143 && !EVP_MD_is_a(prsactx->mgf1_md, mgf1_mdname))) {
155 static int rsa_check_parameters(PROV_RSA_CTX *prsactx, int min_saltlen)
157 if (prsactx->pad_mode == RSA_PKCS1_PSS_PADDING) {
161 max_saltlen = RSA_size(prsactx->rsa) - EVP_MD_get_size(prsactx->md);
162 if ((RSA_bits(prsactx->rsa) & 0x7) == 1)
168 prsactx->min_saltlen = min_saltlen;
175 PROV_RSA_CTX *prsactx = NULL;
181 if ((prsactx = OPENSSL_zalloc(sizeof(PROV_RSA_CTX))) == NULL
184 OPENSSL_free(prsactx);
189 prsactx->libctx = PROV_LIBCTX_OF(provctx);
190 prsactx->flag_allow_md = 1;
191 prsactx->propq = propq_copy;
193 prsactx->saltlen = RSA_PSS_SALTLEN_AUTO;
194 prsactx->min_saltlen = -1;
195 return prsactx;
389 PROV_RSA_CTX *prsactx = (PROV_RSA_CTX *)vprsactx;
391 if (!ossl_prov_is_running() || prsactx == NULL)
394 if (vrsa == NULL && prsactx->rsa == NULL) {
400 if (!ossl_rsa_check_key(prsactx->libctx, vrsa, operation))
405 RSA_free(prsactx->rsa);
406 prsactx->rsa = vrsa;
409 prsactx->operation = operation;
412 prsactx->saltlen = RSA_PSS_SALTLEN_AUTO;
413 prsactx->min_saltlen = -1;
415 switch (RSA_test_flags(prsactx->rsa, RSA_FLAG_TYPE_MASK)) {
417 prsactx->pad_mode = RSA_PKCS1_PADDING;
420 prsactx->pad_mode = RSA_PKCS1_PSS_PADDING;
424 ossl_rsa_get0_pss_params_30(prsactx->rsa);
447 len = OPENSSL_strlcpy(prsactx->mdname, mdname,
448 sizeof(prsactx->mdname));
449 if (len >= sizeof(prsactx->mdname)) {
454 len = OPENSSL_strlcpy(prsactx->mgf1_mdname, mgf1mdname,
455 sizeof(prsactx->mgf1_mdname));
456 if (len >= sizeof(prsactx->mgf1_mdname)) {
461 prsactx->saltlen = min_saltlen;
464 if (!rsa_setup_mgf1_md(prsactx, mgf1mdname, prsactx->propq)
465 || !rsa_setup_md(prsactx, mdname, prsactx->propq)
466 || !rsa_check_parameters(prsactx, min_saltlen))
477 if (!rsa_set_ctx_params(prsactx, params))
517 PROV_RSA_CTX *prsactx = (PROV_RSA_CTX *)vprsactx;
519 size_t rsasize = RSA_size(prsactx->rsa);
520 size_t mdsize = rsa_get_md_size(prsactx);
543 if (EVP_MD_is_a(prsactx->md, OSSL_DIGEST_NAME_MDC2)) {
546 if (prsactx->pad_mode != RSA_PKCS1_PADDING) {
552 prsactx->rsa);
562 switch (prsactx->pad_mode) {
564 if ((size_t)RSA_size(prsactx->rsa) < tbslen + 1) {
567 RSA_size(prsactx->rsa), tbslen + 1);
570 if (!setup_tbuf(prsactx)) {
574 memcpy(prsactx->tbuf, tbs, tbslen);
575 prsactx->tbuf[tbslen] = RSA_X931_hash_id(prsactx->mdnid);
576 ret = RSA_private_encrypt(tbslen + 1, prsactx->tbuf,
577 sig, prsactx->rsa, RSA_X931_PADDING);
578 clean_tbuf(prsactx);
585 ret = RSA_sign(prsactx->mdnid, tbs, tbslen, sig, &sltmp,
586 prsactx->rsa);
597 if (rsa_pss_restricted(prsactx)) {
598 switch (prsactx->saltlen) {
600 if (prsactx->min_saltlen > EVP_MD_get_size(prsactx->md)) {
605 prsactx->min_saltlen,
606 EVP_MD_get_size(prsactx->md));
611 if (prsactx->saltlen >= 0
612 && prsactx->saltlen < prsactx->min_saltlen) {
617 prsactx->min_saltlen,
618 prsactx->saltlen);
624 if (!setup_tbuf(prsactx))
626 if (!RSA_padding_add_PKCS1_PSS_mgf1(prsactx->rsa,
627 prsactx->tbuf, tbs,
628 prsactx->md, prsactx->mgf1_md,
629 prsactx->saltlen)) {
633 ret = RSA_private_encrypt(RSA_size(prsactx->rsa), prsactx->tbuf,
634 sig, prsactx->rsa, RSA_NO_PADDING);
635 clean_tbuf(prsactx);
644 ret = RSA_private_encrypt(tbslen, tbs, sig, prsactx->rsa,
645 prsactx->pad_mode);
676 PROV_RSA_CTX *prsactx = (PROV_RSA_CTX *)vprsactx;
683 *routlen = RSA_size(prsactx->rsa);
687 if (prsactx->md != NULL) {
688 switch (prsactx->pad_mode) {
690 if (!setup_tbuf(prsactx))
692 ret = RSA_public_decrypt(siglen, sig, prsactx->tbuf, prsactx->rsa,
699 if (prsactx->tbuf[ret] != RSA_X931_hash_id(prsactx->mdnid)) {
703 if (ret != EVP_MD_get_size(prsactx->md)) {
706 EVP_MD_get_size(prsactx->md), ret);
711 if (rout != prsactx->tbuf) {
718 memcpy(rout, prsactx->tbuf, ret);
726 ret = ossl_rsa_verify(prsactx->mdnid, NULL, 0, rout, &sltmp,
727 sig, siglen, prsactx->rsa);
742 ret = RSA_public_decrypt(siglen, sig, rout, prsactx->rsa,
743 prsactx->pad_mode);
764 PROV_RSA_CTX *prsactx = (PROV_RSA_CTX *)vprsactx;
769 if (prsactx->md != NULL) {
770 switch (prsactx->pad_mode) {
772 if (!RSA_verify(prsactx->mdnid, tbs, tbslen, sig, siglen,
773 prsactx->rsa)) {
779 if (!setup_tbuf(prsactx))
781 if (rsa_verify_recover(prsactx, prsactx->tbuf, &rslen, 0,
794 mdsize = rsa_get_md_size(prsactx);
802 if (!setup_tbuf(prsactx))
804 ret = RSA_public_decrypt(siglen, sig, prsactx->tbuf,
805 prsactx->rsa, RSA_NO_PADDING);
810 ret = RSA_verify_PKCS1_PSS_mgf1(prsactx->rsa, tbs,
811 prsactx->md, prsactx->mgf1_md,
812 prsactx->tbuf,
813 prsactx->saltlen);
828 if (!setup_tbuf(prsactx))
830 ret = RSA_public_decrypt(siglen, sig, prsactx->tbuf, prsactx->rsa,
831 prsactx->pad_mode);
839 if ((rslen != tbslen) || memcmp(tbs, prsactx->tbuf, rslen))
849 PROV_RSA_CTX *prsactx = (PROV_RSA_CTX *)vprsactx;
859 && (mdname[0] == '\0' || OPENSSL_strcasecmp(prsactx->mdname, mdname) != 0)
860 && !rsa_setup_md(prsactx, mdname, prsactx->propq))
863 prsactx->flag_allow_md = 0;
865 if (prsactx->mdctx == NULL) {
866 prsactx->mdctx = EVP_MD_CTX_new();
867 if (prsactx->mdctx == NULL)
871 if (!EVP_DigestInit_ex2(prsactx->mdctx, prsactx->md, params))
877 EVP_MD_CTX_free(prsactx->mdctx);
878 prsactx->mdctx = NULL;
886 PROV_RSA_CTX *prsactx = (PROV_RSA_CTX *)vprsactx;
888 if (prsactx == NULL || prsactx->mdctx == NULL)
891 return EVP_DigestUpdate(prsactx->mdctx, data, datalen);
906 PROV_RSA_CTX *prsactx = (PROV_RSA_CTX *)vprsactx;
910 if (!ossl_prov_is_running() || prsactx == NULL)
912 prsactx->flag_allow_md = 1;
913 if (prsactx->mdctx == NULL)
924 if (!EVP_DigestFinal_ex(prsactx->mdctx, digest, &dlen))
943 PROV_RSA_CTX *prsactx = (PROV_RSA_CTX *)vprsactx;
950 if (prsactx == NULL)
952 prsactx->flag_allow_md = 1;
953 if (prsactx->mdctx == NULL)
960 if (!EVP_DigestFinal_ex(prsactx->mdctx, digest, &dlen))
968 PROV_RSA_CTX *prsactx = (PROV_RSA_CTX *)vprsactx;
970 if (prsactx == NULL)
973 EVP_MD_CTX_free(prsactx->mdctx);
974 EVP_MD_free(prsactx->md);
975 EVP_MD_free(prsactx->mgf1_md);
976 OPENSSL_free(prsactx->propq);
977 free_tbuf(prsactx);
978 RSA_free(prsactx->rsa);
980 OPENSSL_clear_free(prsactx, sizeof(*prsactx));
1037 PROV_RSA_CTX *prsactx = (PROV_RSA_CTX *)vprsactx;
1040 if (prsactx == NULL)
1050 aid = rsa_generate_signature_aid(prsactx, aid_buf,
1060 if (!OSSL_PARAM_set_int(p, prsactx->pad_mode))
1069 if (prsactx->pad_mode == (int)padding_item[i].id) {
1088 if (p != NULL && !OSSL_PARAM_set_utf8_string(p, prsactx->mdname))
1092 if (p != NULL && !OSSL_PARAM_set_utf8_string(p, prsactx->mgf1_mdname))
1098 if (!OSSL_PARAM_set_int(p, prsactx->saltlen))
1103 switch (prsactx->saltlen) {
1116 prsactx->saltlen);
1150 PROV_RSA_CTX *prsactx = (PROV_RSA_CTX *)vprsactx;
1159 if (prsactx == NULL)
1164 pad_mode = prsactx->pad_mode;
1165 saltlen = prsactx->saltlen;
1222 if ((prsactx->operation
1238 if (RSA_test_flags(prsactx->rsa,
1293 if (rsa_pss_restricted(prsactx)) {
1296 if (prsactx->operation == EVP_PKEY_OP_VERIFY) {
1303 if (prsactx->min_saltlen > EVP_MD_get_size(prsactx->md)) {
1308 prsactx->min_saltlen,
1309 EVP_MD_get_size(prsactx->md));
1314 if (saltlen >= 0 && saltlen < prsactx->min_saltlen) {
1319 prsactx->min_saltlen, saltlen);
1349 prsactx->saltlen = saltlen;
1350 prsactx->pad_mode = pad_mode;
1352 if (prsactx->md == NULL && pmdname == NULL
1357 && !rsa_setup_mgf1_md(prsactx, pmgf1mdname, pmgf1mdprops))
1361 if (!rsa_setup_md(prsactx, pmdname, pmdprops))
1364 if (!rsa_check_padding(prsactx, NULL, NULL, prsactx->mdnid))
1391 PROV_RSA_CTX *prsactx = (PROV_RSA_CTX *)vprsactx;
1393 if (prsactx != NULL && !prsactx->flag_allow_md)
1400 PROV_RSA_CTX *prsactx = (PROV_RSA_CTX *)vprsactx;
1402 if (prsactx->mdctx == NULL)
1405 return EVP_MD_CTX_get_params(prsactx->mdctx, params);
1410 PROV_RSA_CTX *prsactx = (PROV_RSA_CTX *)vprsactx;
1412 if (prsactx->md == NULL)
1415 return EVP_MD_gettable_ctx_params(prsactx->md);
1420 PROV_RSA_CTX *prsactx = (PROV_RSA_CTX *)vprsactx;
1422 if (prsactx->mdctx == NULL)
1425 return EVP_MD_CTX_set_params(prsactx->mdctx, params);
1430 PROV_RSA_CTX *prsactx = (PROV_RSA_CTX *)vprsactx;
1432 if (prsactx->md == NULL)
1435 return EVP_MD_settable_ctx_params(prsactx->md);