Branch Coverage

lib/Crypt/OpenSSL3.xs
Criterion Covered Total %
branch 58 710 8.1


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);
139 0 0 if (!a)
145 0 0 if (type == V_ASN1_NULL || type == V_ASN1_BOOLEAN)
0 0 if (type == V_ASN1_NULL || type == V_ASN1_BOOLEAN)
147 0 0 else if (type == V_ASN1_OBJECT)
157 0 0 DUPLICATING_TYPE(ASN1_OBJECT, ASN1__Object, ASN1::Object)
0 0 DUPLICATING_TYPE(ASN1_OBJECT, ASN1__Object, ASN1::Object)
178 0 0 DUPLICATING_TYPE(X509, X509, X509)
0 0 DUPLICATING_TYPE(X509, X509, X509)
184 0 0 DUPLICATING_TYPE(X509_EXTENSION, X509__Extension, X509::Extension)
0 0 DUPLICATING_TYPE(X509_EXTENSION, X509__Extension, X509::Extension)
204 0 0 if (size < 0)
276 0 0 if (buf_len > 0) {
278 0 0 if (OBJ_obj2txt((char*)ptr, buf_len + 1, object, no_name) > 0)
302 0 0 int flags = type == V_ASN1_UTF8STRING ? SVf_UTF8 : 0;
310 0 0 const char* ptr = utf8 ? SvPVutf8(value, length) : SvPVbyte(value, length);
324 0 0 if ((bn = get_BN(aTHX_ value))) {
337 0 0 if (type == V_ASN1_NULL)
339 0 0 else if (type == V_ASN1_BOOLEAN)
340 0 0 return boolSV(a->value.boolean);
341 0 0 else if (type == V_ASN1_OBJECT)
343 0 0 else if (type == V_ASN1_INTEGER || type == V_ASN1_ENUMERATED)
0 0 else if (type == V_ASN1_INTEGER || type == V_ASN1_ENUMERATED)
345 0 0 else if (type == V_ASN1_SEQUENCE || type == V_ASN1_SET) {
0 0 else if (type == V_ASN1_SEQUENCE || type == V_ASN1_SET) {
380 0 0 if (edi->nameAssigner) {
633 0 0 if (algo)
639 0 0 if (algo)
695 7 0 if (!SvROK(input) || SvTYPE(SvRV(input)) != SVt_PVHV)
0 7 if (!SvROK(input) || SvTYPE(SvRV(input)) != SVt_PVHV)
706 12 7 while (sv = hv_iternextsv(hash, &name, &name_len)) {
709 11 1 if (found) {
711 0 11 if (found->data_type == OSSL_PARAM_INTEGER) {
712 0 0 if (big = get_BN(aTHX_ sv))
716 6 5 } else if (found->data_type == OSSL_PARAM_UNSIGNED_INTEGER) {
717 0 6 if (big = get_BN(aTHX_ sv))
721 0 5 } else if (found->data_type == OSSL_PARAM_REAL) {
723 4 1 } else if (found->data_type == OSSL_PARAM_UTF8_STRING) {
727 1 0 } else if (found->data_type == OSSL_PARAM_OCTET_STRING) {
743 0 1 if (iter->data_type == OSSL_PARAM_INTEGER) {
744 0 0 if (iter->data_size == 0)
746 0 0 else if (iter->data_size <= IVSIZE) {
756 1 0 else if (iter->data_type == OSSL_PARAM_UNSIGNED_INTEGER) {
757 0 1 if (iter->data_size == 0)
759 1 0 else if (iter->data_size <= UVSIZE) {
769 0 0 else if (iter->data_type == OSSL_PARAM_REAL) {
774 0 0 else if (iter->data_type == OSSL_PARAM_UTF8_STRING) {
777 0 0 else if (iter->data_type == OSSL_PARAM_OCTET_STRING) {
814 0 0 mXPUSHp(name, strlen(name));
827 0 0 DEFINE_PROVIDED_CALLBACK(EVP_RAND)
828 0 124 DEFINE_PROVIDED_CALLBACK(EVP_CIPHER)
829 0 22 DEFINE_PROVIDED_CALLBACK(EVP_MD)
830 0 9 DEFINE_PROVIDED_CALLBACK(EVP_MAC)
831 0 12 DEFINE_PROVIDED_CALLBACK(EVP_KDF)
832 0 0 DEFINE_PROVIDED_CALLBACK(EVP_SIGNATURE)
841 0 0 PUSHMARK(sp);
843 0 0 if (ret != 1) {
845 0 0 FREETMPS;
851 0 0 FREETMPS;
863 0 0 PUSHMARK(sp);
865 0 0 if (ret != 1 && ret != 2) {
0 0 if (ret != 1 && ret != 2) {
868 0 0 FREETMPS;
873 0 0 *usec = ret == 2 ? POPi : 0;
875 0 0 FREETMPS;
1151 0 1 if (!RETVAL)
1185 0 0 if (RETVAL >= 0)
1267 0 0 if (RETVAL)
1348 0 0 if (RETVAL >= 0)
1361 0 0 if (RETVAL >= 0)
1391 0 0 if (!RETVAL)
1525 0 0 if (type == V_ASN1_NULL)
1527 0 0 else if (type == V_ASN1_BOOLEAN)
1528 0 0 converted = SvTRUE(value) ? (void*)0xff : 0;
1529 0 0 else if (type == V_ASN1_OBJECT)
1531 0 0 else if (type == V_ASN1_INTEGER || type == V_ASN1_ENUMERATED)
0 0 else if (type == V_ASN1_INTEGER || type == V_ASN1_ENUMERATED)
1536 0 0 RETVAL = converted || type == V_ASN1_NULL || type == V_ASN1_BOOLEAN;
0 0 RETVAL = converted || type == V_ASN1_NULL || type == V_ASN1_BOOLEAN;
0 0 RETVAL = converted || type == V_ASN1_NULL || type == V_ASN1_BOOLEAN;
1537 0 0 if (RETVAL)
1544 0 0 if (!RETVAL)
1551 0 0 if (length > 0) {
1581 0 0 if (!RETVAL)
1588 0 0 if (length > 0) {
1618 0 0 if (!RETVAL)
1627 0 0 if (!RETVAL)
1636 0 0 if (!RETVAL)
1643 0 0 if (length > 0) {
1654 0 0 if (length > 0) {
1720 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);
1725 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);
1738 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);
1747 0 0 if (RETVAL)
1757 0 0 if (!RETVAL)
1795 0 0 if (!RETVAL)
1801 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);
1805 0 0 if (!RETVAL)
1819 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);
1823 0 0 if (RETVAL)
1830 0 0 if (RETVAL == -1)
1835 0 0 if (RETVAL == -1)
1840 0 0 if (RETVAL == -1)
1972 0 0 if (!RETVAL)
2056 0 0 if (!RETVAL)
2063 0 0 if (length > 0) {
2094 0 0 if (!RETVAL)
2101 0 0 if (length > 0) {
2141 0 0 if (!RETVAL)
2148 0 0 if (length > 0) {
2193 0 0 if (!RETVAL)
2200 0 0 if (length > 0) {
2228 0 0 if (RETVAL == -1)
2233 0 0 if (RETVAL == -1)
2240 0 0 if (RETVAL)
2248 0 0 if (RETVAL)
2257 0 0 if (RETVAL)
2279 0 0 if (!RETVAL)
2286 0 0 if (length > 0) {
2302 0 0 if (RETVAL)
2309 0 0 if (!RETVAL)
2350 0 0 STACK_TO_STACK(X509, stack);
0 0 STACK_TO_STACK(X509, stack);
0 0 STACK_TO_STACK(X509, stack);
0 0 STACK_TO_STACK(X509, stack);
2390 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);
2399 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);
2432 0 0 if (RETVAL)
2447 0 0 if (!RETVAL)
2456 0 0 if (!RETVAL)
2465 0 0 if (!RETVAL)
2472 0 0 if (length > 0) {
2483 0 0 if (length > 0) {
2495 0 0 if (RETVAL == -1)
2500 0 0 if (RETVAL == -1)
2505 0 0 if (!RETVAL)
2510 0 0 if (!RETVAL)
2524 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);
2542 0 0 if (RETVAL)
2707 0 0 if (!RETVAL)
2714 0 0 if (length > 0) {
2748 0 0 if (!RETVAL)
2757 0 0 if (!RETVAL)
2766 0 0 if (!RETVAL)
2773 0 0 if (length > 0) {
2795 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);
3064 0 0 if (!RETVAL)
3102 0 0 RETVAL = SSL_set_alpn_protos(ssl, (unsigned char*)raw, raw_len);
3137 0 0 if (!RETVAL)
3186 1 0 if (RETVAL > 0)
3215 0 0 if (RETVAL)
3226 0 0 if (RETVAL)
3238 0 0 if (RETVAL)
3245 0 0 if (RETVAL)
3253 0 0 if (!RETVAL)
3303 0 0 if (RETVAL)
3407 0 0 if (!RETVAL)
3417 0 0 if (RETVAL)
3426 0 0 if (RETVAL)
3451 0 0 if (!RETVAL)
3505 0 0 if (RETVAL)
3535 0 0 if (!RETVAL)
3542 0 0 if (length > 0) {
3565 0 0 if (RETVAL)
3575 0 0 if (RETVAL)
3584 0 0 if (!RETVAL)
3594 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);
3600 0 0 if (RETVAL == -1)
3605 0 0 if (RETVAL == -1)
3610 0 0 if (RETVAL == -1)
3615 0 0 if (RETVAL)
3622 0 0 if (!RETVAL)
3633 0 0 if (!RETVAL)
3642 0 0 if (!RETVAL)
3649 0 0 if (length > 0) {
3680 0 0 if (!RETVAL)
3689 0 0 if (!RETVAL)
3696 0 0 if (length > 0) {
3719 0 0 if (RETVAL)
3736 0 0 if (!RETVAL)
3747 0 0 if (RETVAL)
3761 0 0 if (RETVAL)
3770 0 0 if (RETVAL == -1)
3775 0 0 if (RETVAL == -1)
3780 0 0 if (RETVAL == -1)
3785 0 0 if (RETVAL)
3792 0 0 if (!RETVAL)
3802 0 0 if (!RETVAL)
3811 0 0 if (!RETVAL)
3818 0 0 if (length > 0) {
3837 0 0 if (RETVAL)
3844 0 0 if (RETVAL)
3854 0 0 if (!RETVAL)
3863 0 0 if (!RETVAL)
3870 0 0 if (length > 0) {
3891 0 0 if (stack) {
3893 0 0 EXTEND(SP, num);
0 0 EXTEND(SP, num);
3894 0 0 for (int i = 0; i < num; ++i) {
3914 0 0 if (!RETVAL)
3963 0 0 if (RETVAL)
3968 0 0 if (RETVAL)
3973 0 0 if (RETVAL)
4007 0 0 if (RETVAL)
4014 0 0 if (RETVAL)
4031 0 0 if (RETVAL == NID_undef)
4061 0 0 if (RETVAL == NULL)
4084 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)
4095 0 0 if (RETVAL > 0)
4133 0 0 if (RETVAL)
4159 0 1 if (RETVAL == NULL)
4194 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)
4211 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))
4221 2 0 if (RETVAL)
4230 2 0 if (RETVAL)
4237 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)
4265 0 0 if (RETVAL > 0)
4282 1 0 if (RETVAL)
4301 0 1 if (RETVAL == NULL)
4338 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)
4347 0 0 if (RETVAL)
4372 1 0 if (RETVAL)
4380 0 0 if (RETVAL)
4404 1 0 if (EVP_DigestSignFinal(ctx, NULL, &size) == 1) {
4406 1 0 if (EVP_DigestSignFinal(ctx, ptr, &size) == 1)
4415 0 0 if (EVP_DigestSign(ctx, NULL, &size, tbs, XSauto_length_of_tbs) == 1) {
4417 0 0 if (EVP_DigestSign(ctx, ptr, &size, tbs, XSauto_length_of_tbs) == 1)
4436 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)
4465 0 1 if (RETVAL == NULL)
4488 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)
4512 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)
4526 1 0 if (EVP_MAC_final(ctx, NULL, &outsize, 0)) {
4529 1 0 if (result)
4540 0 0 if (RETVAL)
4550 0 1 if (RETVAL == NULL)
4573 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)
4592 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)
4607 1 0 if (RETVAL)
4617 0 0 if (RETVAL == NULL)
4655 0 0 if (RETVAL == NULL)
4661 0 0 if (RETVAL == NULL)
4674 0 0 if (!result)
4678 0 0 if (result)
4686 0 0 if (!result)
4690 0 0 if (result)
4696 0 0 if (!RETVAL)
4701 0 0 const EVP_CIPHER* cipher = SvOK(cipher_sv) ? get_EVP_CIPHER(aTHX_ cipher_sv) : NULL;
4704 0 0 if (SvOK(key))
4711 0 0 if (!RETVAL)
4720 0 0 if (!RETVAL)
4726 0 0 if (!RETVAL)
4736 0 0 if (!RETVAL)
4743 0 0 if (length > 0) {
4754 0 0 if (!RETVAL)
4761 0 0 if (length > 0) {
4771 0 0 if (RETVAL == -1)
4810 0 0 if (RETVAL > 0)
4815 0 0 if (RETVAL <= 0)
4827 0 0 if (RETVAL)
4837 0 0 result = RETVAL > 0 ? newSVpvn((char*)ptr, RETVAL) : &PL_sv_undef;
4842 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)
4878 0 0 if (!RETVAL)
4890 0 0 if (!RETVAL)
4896 0 0 if (!RETVAL)
4902 0 2 if (!RETVAL)
4908 0 2 if (!RETVAL)
4917 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)
4938 0 0 if (RETVAL)
4951 0 0 if (!RETVAL)
4962 0 2 if (RETVAL <= 0)
4971 0 1 if (EVP_PKEY_encapsulate(ctx, NULL, &wrapped_length, NULL, &gen_length) != 1)
4977 1 0 if (EVP_PKEY_encapsulate(ctx, wrapped_ptr, &wrapped_length, gen_ptr, &gen_length)) {
4993 1 0 if (result == 1) {
4996 1 0 if (EVP_PKEY_decapsulate(ctx, unwrapped_ptr, &unwrapped_length, wrapped, XSauto_length_of_wrapped) == 1)
5017 0 0 if (result == 1) {
5021 0 0 if (result == 1)
5033 0 0 if (EVP_PKEY_decrypt(ctx, NULL, &out_length, in, XSauto_length_of_in) == 1) {
5036 0 0 if (EVP_PKEY_decrypt(ctx, out_ptr, &out_length, in, XSauto_length_of_in) == 1)
5050 0 0 if (EVP_PKEY_derive(ctx, NULL, &key_length) == 1) {
5053 0 0 if (EVP_PKEY_derive(ctx, key_ptr, &key_length) == 1)
5064 0 0 if (EVP_PKEY_sign(ctx, NULL, &sig_length, tbs, XSauto_length_of_tbs) == 1) {
5067 0 0 if (EVP_PKEY_sign(ctx, sig_ptr, &sig_length, tbs, XSauto_length_of_tbs) == 1)