Branch Coverage

RSA.xs
Criterion Covered Total %
branch 147 258 56.9


line true false branch
115 0 20 CHECK_NEW(rsa, 1, rsaData);
119 0 20 return sv_bless(
214 8 0 return EVP_Q_digest(NULL, "MD5", NULL, text, text_length, md, NULL) ? md : NULL;
238 7 0 return EVP_Q_digest(NULL, "RIPEMD160", NULL, text, text_length, md, NULL) ? md : NULL;
258 41 23 : &PL_sv_undef;
267 0 17 CHECK_OPEN_SSL(BIO_flush(p_stringBio) == 1);
272 0 17 CHECK_OPEN_SSL(BIO_set_close(p_stringBio, BIO_CLOSE) == 1);
290 4 7 if (SvPOK(p_passphaseSv)) {
294 0 11 CHECK_OPEN_SSL(stringBIO = BIO_new_mem_buf(keyString, keyStringLength));
298 0 11 CHECK_OPEN_SSL(BIO_set_close(stringBIO, BIO_CLOSE) == 1);
301 0 11 CHECK_OPEN_SSL(rsa);
324 0 15 CHECK_NEW(to, size, UNSIGNED_CHAR);
327 0 15 if(p_rsa->padding == RSA_PKCS1_PSS_PADDING)
333 8 7 if (public) {
339 0 15 CHECK_OPEN_SSL(ctx);
341 0 15 CHECK_OPEN_SSL(init_crypt(ctx) == 1);
342 0 15 CHECK_OPEN_SSL(EVP_PKEY_CTX_set_rsa_padding(ctx, p_rsa->padding) > 0);
343 0 15 CHECK_OPEN_SSL(p_crypt(ctx, NULL, &to_length, from, from_length) == 1);
344 0 15 CHECK_OPEN_SSL(p_crypt(ctx, to, &to_length, from, from_length) == 1);
422 9 0 const EVP_CIPHER* enc = NULL;
424 2 7 if (SvPOK(cipher_name_SV) && !SvPOK(passphase_SV)) {
0 2 if (SvPOK(cipher_name_SV) && !SvPOK(passphase_SV)) {
427 3 6 if (SvPOK(passphase_SV)) {
429 2 1 if (SvPOK(cipher_name_SV)) {
436 0 3 if (enc == NULL) {
441 0 9 CHECK_OPEN_SSL(stringBIO = BIO_new(BIO_s_mem()));
455 0 5 CHECK_OPEN_SSL(stringBIO = BIO_new(BIO_s_mem()));
461 5 0 CHECK_OPEN_SSL(ctx != NULL && OSSL_ENCODER_CTX_get_num_encoders(ctx));
0 5 CHECK_OPEN_SSL(ctx != NULL && OSSL_ENCODER_CTX_get_num_encoders(ctx));
463 0 5 CHECK_OPEN_SSL(OSSL_ENCODER_to_bio(ctx, stringBIO) == 1);
480 0 3 CHECK_OPEN_SSL(stringBIO = BIO_new(BIO_s_mem()));
493 3 0 EVP_PKEY* rsa = NULL;
515 0 3 CHECK_OPEN_SSL(ctx);
516 0 3 CHECK_OPEN_SSL(EVP_PKEY_keygen_init(ctx) == 1);
517 0 3 CHECK_OPEN_SSL(EVP_PKEY_CTX_set_rsa_keygen_bits(ctx, SvIV(bitsSV)) > 0);
518 0 3 CHECK_OPEN_SSL(EVP_PKEY_CTX_set1_rsa_keygen_pubexp(ctx, e) >0);
519 0 3 CHECK_OPEN_SSL(EVP_PKEY_generate(ctx, &rsa) == 1);
520 0 3 CHECK_OPEN_SSL(rsa != NULL);
526 0 3 CHECK_OPEN_SSL(rsa);
551 8 0 if (!(n && e))
0 8 if (!(n && e))
558 0 8 CHECK_OPEN_SSL(pctx != NULL);
559 0 8 CHECK_OPEN_SSL(EVP_PKEY_fromdata_init(pctx) > 0);
561 0 8 CHECK_OPEN_SSL(params_build)
570 0 8 CHECK_OPEN_SSL(OSSL_PARAM_BLD_push_BN(params_build, OSSL_PKEY_PARAM_RSA_N, n));
571 0 8 CHECK_OPEN_SSL(OSSL_PARAM_BLD_push_BN(params_build, OSSL_PKEY_PARAM_RSA_E, e));
573 5 3 if (p || q)
3 2 if (p || q)
576 0 6 THROW(ctx = BN_CTX_new());
577 3 3 if (!p)
579 0 3 THROW(p = BN_new());
580 0 3 THROW(BN_div(p, NULL, n, q, ctx));
582 2 1 else if (!q)
585 0 2 THROW(BN_div(q, NULL, n, p, ctx));
596 0 6 THROW(p_minus_1 = BN_new());
597 0 6 THROW(BN_sub(p_minus_1, p, BN_value_one()));
598 0 6 THROW(q_minus_1 = BN_new());
599 0 6 THROW(BN_sub(q_minus_1, q, BN_value_one()));
600 1 5 if (!d)
602 0 1 THROW(d = BN_new());
603 0 1 THROW(BN_mul(d, p_minus_1, q_minus_1, ctx));
604 0 1 THROW(BN_mod_inverse(d, e, d, ctx));
610 0 6 THROW(OSSL_PARAM_BLD_push_BN(params_build, OSSL_PKEY_PARAM_RSA_D, d));
611 0 6 THROW(OSSL_PARAM_BLD_push_BN(params_build, OSSL_PKEY_PARAM_RSA_FACTOR1, p));
612 0 6 THROW(OSSL_PARAM_BLD_push_BN(params_build, OSSL_PKEY_PARAM_RSA_FACTOR2, q));
617 0 6 THROW(dmp1 = BN_new());
618 0 6 THROW(BN_mod(dmp1, d, p_minus_1, ctx));
619 0 6 THROW(dmq1 = BN_new());
620 0 6 THROW(BN_mod(dmq1, d, q_minus_1, ctx));
621 0 6 THROW(iqmp = BN_new());
622 0 6 THROW(BN_mod_inverse(iqmp, q, p, ctx));
629 0 6 THROW(OSSL_PARAM_BLD_push_BN(params_build, OSSL_PKEY_PARAM_RSA_EXPONENT1, dmp1));
630 0 6 THROW(OSSL_PARAM_BLD_push_BN(params_build, OSSL_PKEY_PARAM_RSA_EXPONENT2, dmq1));
631 0 6 THROW(OSSL_PARAM_BLD_push_BN(params_build, OSSL_PKEY_PARAM_RSA_COEFFICIENT1, iqmp));
634 0 6 THROW(params != NULL);
637 6 0 THROW( status > 0 && rsa != NULL );
0 6 THROW( status > 0 && rsa != NULL );
639 2 4 THROW(EVP_PKEY_check(test_ctx) == 1);
658 1 1 if(d != NULL)
659 0 1 THROW(OSSL_PARAM_BLD_push_BN(params_build, OSSL_PKEY_PARAM_RSA_D, d));
661 0 2 THROW(params != NULL);
664 2 0 THROW( status > 0 && rsa != NULL );
0 2 THROW( status > 0 && rsa != NULL );
672 6 0 if(RETVAL)
677 2 0 if (p_minus_1) BN_clear_free(p_minus_1);
680 2 0 if (q_minus_1) BN_clear_free(q_minus_1);
681 2 0 if (dmp1) BN_clear_free(dmp1);
682 2 0 if (dmq1) BN_clear_free(dmq1);
683 2 0 if (iqmp) BN_clear_free(iqmp);
684 2 0 if (ctx) BN_CTX_free(ctx);
685 0 2 if (error)
708 8 0 BIGNUM* iqmp = NULL;
748 0 8 XPUSHs(cor_bn2sv(n));
749 0 8 XPUSHs(cor_bn2sv(e));
750 0 8 XPUSHs(cor_bn2sv(d));
751 0 8 XPUSHs(cor_bn2sv(p));
752 0 8 XPUSHs(cor_bn2sv(q));
753 0 8 XPUSHs(cor_bn2sv(dmp1));
754 0 8 XPUSHs(cor_bn2sv(dmq1));
755 0 8 XPUSHs(cor_bn2sv(iqmp));
776 1 5 if (!_is_private(p_rsa))
793 1 2 if (!_is_private(p_rsa))
830 1 1 if (!_is_private(p_rsa))
970 1 20 if (!_is_private(p_rsa))
974 0 20 CHECK_NEW(signature, EVP_PKEY_get_size(p_rsa->rsa), UNSIGNED_CHAR);
976 0 20 CHECK_OPEN_SSL(digest = get_message_digest(text_SV, p_rsa->hashMode));
980 0 20 CHECK_OPEN_SSL(ctx);
981 0 20 CHECK_OPEN_SSL(EVP_PKEY_sign_init(ctx));
983 6 14 CHECK_OPEN_SSL(EVP_PKEY_CTX_set_rsa_padding(ctx, p_rsa->padding) > 0);
986 0 14 CHECK_OPEN_SSL(md != NULL);
989 0 14 CHECK_OPEN_SSL((md_status = EVP_PKEY_CTX_set_signature_md(ctx, md)) > 0);
990 14 0 if (p_rsa->padding == RSA_PKCS1_PSS_PADDING) {
991 0 14 CHECK_OPEN_SSL((md_status = EVP_PKEY_CTX_set_rsa_mgf1_md(ctx, md)) > 0);
992 0 14 CHECK_OPEN_SSL(EVP_PKEY_CTX_set_rsa_pss_saltlen(ctx, RSA_PSS_SALTLEN_DIGEST) > 0);
994 0 14 CHECK_OPEN_SSL(EVP_PKEY_sign(ctx, NULL, &signature_length, digest, get_digest_length(p_rsa->hashMode)) == 1);
999 0 14 CHECK_OPEN_SSL(signature);
1001 0 14 CHECK_OPEN_SSL(EVP_PKEY_sign(ctx, signature, &signature_length, digest, get_digest_length(p_rsa->hashMode)) == 1);
1002 0 14 CHECK_OPEN_SSL(signature);
1031 0 35 if (EVP_PKEY_get_size(p_rsa->rsa) < sig_length)
1036 0 35 CHECK_OPEN_SSL(digest = get_message_digest(text_SV, p_rsa->hashMode));
1040 0 35 CHECK_OPEN_SSL(ctx);
1041 0 35 CHECK_OPEN_SSL(EVP_PKEY_verify_init(ctx) == 1);
1043 0 35 CHECK_OPEN_SSL(EVP_PKEY_CTX_set_rsa_padding(ctx, p_rsa->padding) > 0);
1046 0 35 CHECK_OPEN_SSL(md != NULL);
1049 0 35 CHECK_OPEN_SSL((md_status = EVP_PKEY_CTX_set_signature_md(ctx, md)) > 0);
1050 35 0 if (p_rsa->padding == RSA_PKCS1_PSS_PADDING) {
1051 0 35 CHECK_OPEN_SSL((md_status = EVP_PKEY_CTX_set_rsa_mgf1_md(ctx, md)) > 0);
1052 0 35 CHECK_OPEN_SSL(EVP_PKEY_CTX_set_rsa_pss_saltlen(ctx, RSA_PSS_SALTLEN_DIGEST) > 0);
1082 0 2 RETVAL = _is_private(p_rsa);