Branch Coverage

lib/Crypt/OpenSSL3.xs
Criterion Covered Total %
branch 57 536 10.6


line true false branch
27 12 0 char* ptr = SvGROW(*retval, size);
7 5 char* ptr = SvGROW(*retval, size);
33 1 0 SvUPGRADE(buffer, SVt_PV);
34 0 1 SV_CHECK_THINKFIRST(buffer);
35 1 0 return SvGROW(buffer, size);
1 0 return SvGROW(buffer, size);
121 0 0 COUNTING_TYPE(EVP_CIPHER, Cipher, Cipher)
0 0 COUNTING_TYPE(EVP_CIPHER, Cipher, Cipher)
134 6 0 DUPLICATING_TYPE(BN, BigNum, BigNum);
0 0 DUPLICATING_TYPE(BN, BigNum, BigNum);
140 0 0 DUPLICATING_TYPE(ASN1_OBJECT, ASN1__Object, ASN1::Object)
0 0 DUPLICATING_TYPE(ASN1_OBJECT, ASN1__Object, ASN1::Object)
141 0 0 DUPLICATING_TYPE(X509, X509, X509)
0 0 DUPLICATING_TYPE(X509, X509, X509)
161 0 0 if (size < 0)
232 0 0 if (buf_len > 0) {
234 0 0 if (OBJ_obj2txt((char*)ptr, buf_len + 1, object, no_name) > 0)
244 0 0 int flags = type == V_ASN1_UTF8STRING ? SVf_UTF8 : 0;
252 0 0 const char* ptr = utf8 ? SvPVutf8(value, length) : SvPVbyte(value, length);
266 0 0 if ((bn = get_BN(aTHX_ value))) {
540 0 0 if (algo)
546 0 0 if (algo)
601 7 0 if (!SvROK(input) || SvTYPE(SvRV(input)) != SVt_PVHV)
0 7 if (!SvROK(input) || SvTYPE(SvRV(input)) != SVt_PVHV)
612 12 7 while (sv = hv_iternextsv(hash, &name, &name_len)) {
615 11 1 if (found) {
617 0 11 if (found->data_type == OSSL_PARAM_INTEGER) {
618 0 0 if (big = get_BN(aTHX_ sv))
622 6 5 } else if (found->data_type == OSSL_PARAM_UNSIGNED_INTEGER) {
623 0 6 if (big = get_BN(aTHX_ sv))
627 0 5 } else if (found->data_type == OSSL_PARAM_REAL) {
629 4 1 } else if (found->data_type == OSSL_PARAM_UTF8_STRING) {
633 1 0 } else if (found->data_type == OSSL_PARAM_OCTET_STRING) {
649 0 1 if (iter->data_type == OSSL_PARAM_INTEGER) {
650 0 0 if (iter->data_size == 0)
652 0 0 else if (iter->data_size <= IVSIZE) {
662 1 0 else if (iter->data_type == OSSL_PARAM_UNSIGNED_INTEGER) {
663 0 1 if (iter->data_size == 0)
665 1 0 else if (iter->data_size <= UVSIZE) {
675 0 0 else if (iter->data_type == OSSL_PARAM_REAL) {
680 0 0 else if (iter->data_type == OSSL_PARAM_UTF8_STRING) {
683 0 0 else if (iter->data_type == OSSL_PARAM_OCTET_STRING) {
718 0 0 mXPUSHp(name, strlen(name));
731 0 0 DEFINE_PROVIDED_CALLBACK(EVP_RAND)
732 0 124 DEFINE_PROVIDED_CALLBACK(EVP_CIPHER)
733 0 22 DEFINE_PROVIDED_CALLBACK(EVP_MD)
734 0 9 DEFINE_PROVIDED_CALLBACK(EVP_MAC)
735 0 12 DEFINE_PROVIDED_CALLBACK(EVP_KDF)
736 0 0 DEFINE_PROVIDED_CALLBACK(EVP_SIGNATURE)
745 0 0 PUSHMARK(sp);
747 0 0 if (ret != 1) {
753 0 0 FREETMPS;
765 0 0 PUSHMARK(sp);
767 0 0 if (ret != 1 && ret != 2) {
0 0 if (ret != 1 && ret != 2) {
773 0 0 *usec = ret == 2 ? POPi : 0;
1018 0 1 if (!RETVAL)
1052 0 0 if (RETVAL >= 0)
1195 0 0 if (RETVAL >= 0)
1208 0 0 if (RETVAL >= 0)
1238 0 0 if (!RETVAL)
1392 0 0 if (!RETVAL)
1401 0 0 if (!RETVAL)
1465 0 0 STACK_TO_STACK(GENERAL_NAME, gens);
0 0 STACK_TO_STACK(GENERAL_NAME, gens);
0 0 STACK_TO_STACK(GENERAL_NAME, gens);
0 0 STACK_TO_STACK(GENERAL_NAME, gens);
1470 0 0 STACK_TO_STACK(GENERAL_NAME, gens);
0 0 STACK_TO_STACK(GENERAL_NAME, gens);
0 0 STACK_TO_STACK(GENERAL_NAME, gens);
0 0 STACK_TO_STACK(GENERAL_NAME, gens);
1483 0 0 STACK_TO_STACK(SCT, scts);
0 0 STACK_TO_STACK(SCT, scts);
0 0 STACK_TO_STACK(SCT, scts);
0 0 STACK_TO_STACK(SCT, scts);
1492 0 0 if (RETVAL)
1502 0 0 if (!RETVAL)
1540 0 0 if (!RETVAL)
1546 0 0 CSTACK_TO_STACK(GENERAL_NAME, gns);
0 0 CSTACK_TO_STACK(GENERAL_NAME, gns);
0 0 CSTACK_TO_STACK(GENERAL_NAME, gns);
0 0 CSTACK_TO_STACK(GENERAL_NAME, gns);
1550 0 0 if (RETVAL)
1564 0 0 CSTACK_TO_STACK(X509_EXTENSION, exts);
0 0 CSTACK_TO_STACK(X509_EXTENSION, exts);
0 0 CSTACK_TO_STACK(X509_EXTENSION, exts);
0 0 CSTACK_TO_STACK(X509_EXTENSION, exts);
1568 0 0 if (RETVAL)
1575 0 0 if (RETVAL == -1)
1580 0 0 if (RETVAL == -1)
1585 0 0 if (RETVAL == -1)
1885 0 0 if (RETVAL == -1)
1890 0 0 if (RETVAL == -1)
1897 0 0 if (RETVAL)
1905 0 0 if (RETVAL)
1914 0 0 if (RETVAL)
1940 0 0 if (RETVAL)
1947 0 0 if (!RETVAL)
2021 0 0 CSTACK_TO_STACK(X509, stack);
0 0 CSTACK_TO_STACK(X509, stack);
0 0 CSTACK_TO_STACK(X509, stack);
0 0 CSTACK_TO_STACK(X509, stack);
2030 0 0 CSTACK_TO_STACK(X509, stack);
0 0 CSTACK_TO_STACK(X509, stack);
0 0 CSTACK_TO_STACK(X509, stack);
0 0 CSTACK_TO_STACK(X509, stack);
2062 0 0 if (RETVAL)
2077 0 0 if (!RETVAL)
2086 0 0 if (!RETVAL)
2096 0 0 if (RETVAL == -1)
2101 0 0 if (RETVAL == -1)
2106 0 0 if (!RETVAL)
2127 0 0 if (RETVAL)
2314 0 0 if (!RETVAL)
2323 0 0 if (!RETVAL)
2339 0 0 CSTACK_TO_STACK(X509, stack);
0 0 CSTACK_TO_STACK(X509, stack);
0 0 CSTACK_TO_STACK(X509, stack);
0 0 CSTACK_TO_STACK(X509, stack);
2605 0 0 if (!RETVAL)
2643 0 0 RETVAL = SSL_set_alpn_protos(ssl, (unsigned char*)raw, raw_len);
2678 0 0 if (!RETVAL)
2727 1 0 if (RETVAL > 0)
2756 0 0 if (RETVAL)
2767 0 0 if (RETVAL)
2779 0 0 if (RETVAL)
2786 0 0 if (RETVAL)
2794 0 0 if (!RETVAL)
2844 0 0 if (RETVAL)
2948 0 0 if (!RETVAL)
2958 0 0 if (RETVAL)
2967 0 0 if (RETVAL)
2992 0 0 if (!RETVAL)
3046 0 0 if (RETVAL)
3086 0 0 if (RETVAL)
3096 0 0 if (RETVAL)
3105 0 0 if (!RETVAL)
3115 0 0 CSTACK_TO_STACK(X509_EXTENSION, exts);
0 0 CSTACK_TO_STACK(X509_EXTENSION, exts);
0 0 CSTACK_TO_STACK(X509_EXTENSION, exts);
0 0 CSTACK_TO_STACK(X509_EXTENSION, exts);
3121 0 0 if (RETVAL == -1)
3126 0 0 if (RETVAL == -1)
3131 0 0 if (RETVAL == -1)
3136 0 0 if (RETVAL)
3143 0 0 if (!RETVAL)
3154 0 0 if (!RETVAL)
3183 0 0 if (!RETVAL)
3204 0 0 if (RETVAL)
3221 0 0 if (!RETVAL)
3244 0 0 if (RETVAL)
3253 0 0 if (RETVAL == -1)
3258 0 0 if (RETVAL == -1)
3263 0 0 if (RETVAL == -1)
3268 0 0 if (RETVAL)
3275 0 0 if (!RETVAL)
3285 0 0 if (!RETVAL)
3313 0 0 if (!RETVAL)
3331 0 0 if (stack) {
3333 0 0 EXTEND(SP, num);
0 0 EXTEND(SP, num);
3334 0 0 for (int i = 0; i < num; ++i) {
3354 0 0 if (!RETVAL)
3436 0 0 if (RETVAL)
3445 0 0 if (RETVAL)
3462 0 0 if (RETVAL == NID_undef)
3492 0 0 if (RETVAL == NULL)
3515 0 0 GENERATE_GET_PARAM(EVP_RAND, rand, name)
0 0 GENERATE_GET_PARAM(EVP_RAND, rand, name)
0 0 GENERATE_GET_PARAM(EVP_RAND, rand, name)
0 0 GENERATE_GET_PARAM(EVP_RAND, rand, name)
3526 0 0 if (RETVAL > 0)
3564 0 0 if (RETVAL)
3590 0 1 if (RETVAL == NULL)
3625 0 0 GENERATE_GET_PARAM(EVP_CIPHER, cipher, name)
0 0 GENERATE_GET_PARAM(EVP_CIPHER, cipher, name)
0 0 GENERATE_GET_PARAM(EVP_CIPHER, cipher, name)
0 0 GENERATE_GET_PARAM(EVP_CIPHER, cipher, name)
3642 2 0 if (XSauto_length_of_key != EVP_CIPHER_get_key_length(type) || XSauto_length_of_iv != EVP_CIPHER_get_iv_length(type))
0 2 if (XSauto_length_of_key != EVP_CIPHER_get_key_length(type) || XSauto_length_of_iv != EVP_CIPHER_get_iv_length(type))
3652 2 0 if (RETVAL)
3661 2 0 if (RETVAL)
3668 1 0 GENERATE_GET_PARAM(EVP_CIPHER_CTX, ctx, name)
1 0 GENERATE_GET_PARAM(EVP_CIPHER_CTX, ctx, name)
1 0 GENERATE_GET_PARAM(EVP_CIPHER_CTX, ctx, name)
1 0 GENERATE_GET_PARAM(EVP_CIPHER_CTX, ctx, name)
3696 0 0 if (RETVAL > 0)
3713 1 0 if (RETVAL)
3732 0 1 if (RETVAL == NULL)
3769 0 0 GENERATE_GET_PARAM(EVP_MD, md, name)
0 0 GENERATE_GET_PARAM(EVP_MD, md, name)
0 0 GENERATE_GET_PARAM(EVP_MD, md, name)
0 0 GENERATE_GET_PARAM(EVP_MD, md, name)
3778 0 0 if (RETVAL)
3803 1 0 if (RETVAL)
3811 0 0 if (RETVAL)
3835 1 0 if (EVP_DigestSignFinal(ctx, NULL, &size) == 1) {
3837 1 0 if (EVP_DigestSignFinal(ctx, ptr, &size) == 1)
3846 0 0 if (EVP_DigestSign(ctx, NULL, &size, tbs, XSauto_length_of_tbs) == 1) {
3848 0 0 if (EVP_DigestSign(ctx, ptr, &size, tbs, XSauto_length_of_tbs) == 1)
3867 0 0 GENERATE_GET_PARAM(EVP_MD_CTX, ctx, name)
0 0 GENERATE_GET_PARAM(EVP_MD_CTX, ctx, name)
0 0 GENERATE_GET_PARAM(EVP_MD_CTX, ctx, name)
0 0 GENERATE_GET_PARAM(EVP_MD_CTX, ctx, name)
3896 0 1 if (RETVAL == NULL)
3919 0 0 GENERATE_GET_PARAM(EVP_MAC, mac, name)
0 0 GENERATE_GET_PARAM(EVP_MAC, mac, name)
0 0 GENERATE_GET_PARAM(EVP_MAC, mac, name)
0 0 GENERATE_GET_PARAM(EVP_MAC, mac, name)
3943 0 0 GENERATE_GET_PARAM(EVP_MAC_CTX, ctx, name)
0 0 GENERATE_GET_PARAM(EVP_MAC_CTX, ctx, name)
0 0 GENERATE_GET_PARAM(EVP_MAC_CTX, ctx, name)
0 0 GENERATE_GET_PARAM(EVP_MAC_CTX, ctx, name)
3960 1 0 if (result)
3969 0 0 if (RETVAL)
3979 0 1 if (RETVAL == NULL)
4002 0 0 GENERATE_GET_PARAM(EVP_KDF, kdf, name)
0 0 GENERATE_GET_PARAM(EVP_KDF, kdf, name)
0 0 GENERATE_GET_PARAM(EVP_KDF, kdf, name)
0 0 GENERATE_GET_PARAM(EVP_KDF, kdf, name)
4021 0 0 GENERATE_GET_PARAM(EVP_KDF_CTX, ctx, name)
0 0 GENERATE_GET_PARAM(EVP_KDF_CTX, ctx, name)
0 0 GENERATE_GET_PARAM(EVP_KDF_CTX, ctx, name)
0 0 GENERATE_GET_PARAM(EVP_KDF_CTX, ctx, name)
4036 1 0 if (RETVAL)
4046 0 0 if (RETVAL == NULL)
4076 0 0 if (RETVAL == NULL)
4082 0 0 if (RETVAL == NULL)
4095 0 0 if (!result)
4099 0 0 if (result)
4107 0 0 if (!result)
4111 0 0 if (result)
4117 0 0 if (!RETVAL)
4122 0 0 const EVP_CIPHER* cipher = SvOK(cipher_sv) ? get_EVP_CIPHER(aTHX_ cipher_sv) : NULL;
4125 0 0 if (SvOK(key))
4132 0 0 if (!RETVAL)
4141 0 0 if (!RETVAL)
4147 0 0 if (!RETVAL)
4156 0 0 if (RETVAL == -1)
4195 0 0 if (RETVAL > 0)
4200 0 0 if (RETVAL <= 0)
4212 0 0 if (RETVAL)
4222 0 0 result = RETVAL > 0 ? newSVpvn((char*)ptr, RETVAL) : &PL_sv_undef;
4227 0 0 GENERATE_GET_PARAM(EVP_PKEY, pkey, name)
0 0 GENERATE_GET_PARAM(EVP_PKEY, pkey, name)
0 0 GENERATE_GET_PARAM(EVP_PKEY, pkey, name)
0 0 GENERATE_GET_PARAM(EVP_PKEY, pkey, name)
4267 0 0 if (!RETVAL)
4273 0 0 if (!RETVAL)
4279 0 2 if (!RETVAL)
4285 0 2 if (!RETVAL)
4294 0 0 GENERATE_GET_PARAM(EVP_PKEY_CTX, ctx, name)
0 0 GENERATE_GET_PARAM(EVP_PKEY_CTX, ctx, name)
0 0 GENERATE_GET_PARAM(EVP_PKEY_CTX, ctx, name)
0 0 GENERATE_GET_PARAM(EVP_PKEY_CTX, ctx, name)
4323 0 2 if (RETVAL <= 0)
4332 0 1 if (EVP_PKEY_encapsulate(ctx, NULL, &wrapped_length, NULL, &gen_length) != 1)
4338 1 0 if (EVP_PKEY_encapsulate(ctx, wrapped_ptr, &wrapped_length, gen_ptr, &gen_length)) {
4351 1 0 if (result == 1) {
4354 1 0 if (EVP_PKEY_decapsulate(ctx, unwrapped_ptr, &unwrapped_length, wrapped, XSauto_length_of_wrapped) == 1)
4375 0 0 if (result == 1) {
4379 0 0 if (result == 1)
4391 0 0 if (EVP_PKEY_decrypt(ctx, NULL, &out_length, in, XSauto_length_of_in) == 1) {
4394 0 0 if (EVP_PKEY_decrypt(ctx, out_ptr, &out_length, in, XSauto_length_of_in) == 1)
4408 0 0 if (EVP_PKEY_derive(ctx, NULL, &key_length) == 1) {
4411 0 0 if (EVP_PKEY_derive(ctx, key_ptr, &key_length) == 1)
4422 0 0 if (EVP_PKEY_sign(ctx, NULL, &sig_length, tbs, XSauto_length_of_tbs) == 1) {
4425 0 0 if (EVP_PKEY_sign(ctx, sig_ptr, &sig_length, tbs, XSauto_length_of_tbs) == 1)