Branch Coverage

lib/Crypt/OpenSSL3.xs
Criterion Covered Total %
branch 55 480 11.4


line true false branch
92 0 0 COUNTING_TYPE(EVP_RAND, Random, Random)
0 0 COUNTING_TYPE(EVP_RAND, Random, Random)
93 0 0 COUNTING_TYPE(EVP_RAND_CTX, Random__Context, Random::Context)
0 0 COUNTING_TYPE(EVP_RAND_CTX, Random__Context, Random::Context)
94 0 0 COUNTING_TYPE(EVP_CIPHER, Cipher, Cipher)
0 0 COUNTING_TYPE(EVP_CIPHER, Cipher, Cipher)
95 0 0 DUPLICATING_TYPE(EVP_CIPHER_CTX, Cipher__Context, Cipher::Context)
0 0 DUPLICATING_TYPE(EVP_CIPHER_CTX, Cipher__Context, Cipher::Context)
96 0 0 COUNTING_TYPE(EVP_MD, MD, MD)
0 0 COUNTING_TYPE(EVP_MD, MD, MD)
97 0 0 DUPLICATING_TYPE(EVP_MD_CTX, MD__Context, MD::Context)
0 0 DUPLICATING_TYPE(EVP_MD_CTX, MD__Context, MD::Context)
98 0 0 COUNTING_TYPE(EVP_MAC, MAC, MAC)
0 0 COUNTING_TYPE(EVP_MAC, MAC, MAC)
99 0 0 DUPLICATING_TYPE(EVP_MAC_CTX, MAC__Context, MAC::Context)
0 0 DUPLICATING_TYPE(EVP_MAC_CTX, MAC__Context, MAC::Context)
100 0 0 COUNTING_TYPE(EVP_KDF, KDF, KDF)
0 0 COUNTING_TYPE(EVP_KDF, KDF, KDF)
101 0 0 DUPLICATING_TYPE(EVP_KDF_CTX, KDF__Context, KDF::Context)
0 0 DUPLICATING_TYPE(EVP_KDF_CTX, KDF__Context, KDF::Context)
102 0 0 COUNTING_TYPE(EVP_SIGNATURE, Signature, Signature)
0 0 COUNTING_TYPE(EVP_SIGNATURE, Signature, Signature)
103 0 0 DUPLICATING_TYPE(EVP_PKEY, PKey, PKey)
0 0 DUPLICATING_TYPE(EVP_PKEY, PKey, PKey)
104 0 0 DUPLICATING_TYPE(EVP_PKEY_CTX, PKey__Context, PKey::Context)
0 0 DUPLICATING_TYPE(EVP_PKEY_CTX, PKey__Context, PKey::Context)
107 6 0 DUPLICATING_TYPE(BN, BigNum, BigNum);
0 0 DUPLICATING_TYPE(BN, BigNum, BigNum);
109 0 0 DUPLICATING_TYPE(BN_CTX, BigNum__Context, BigNum::Context)
0 0 DUPLICATING_TYPE(BN_CTX, BigNum__Context, BigNum::Context)
111 0 0 SIMPLE_TYPE(ASN1_OBJECT, ASN1__Object, ASN1::Object, const)
0 0 SIMPLE_TYPE(ASN1_OBJECT, ASN1__Object, ASN1::Object, const)
112 0 0 DUPLICATING_TYPE(ASN1_INTEGER, ASN1__Integer, ASN1::Integer)
0 0 DUPLICATING_TYPE(ASN1_INTEGER, ASN1__Integer, ASN1::Integer)
114 0 0 DUPLICATING_TYPE(ASN1_ENUMERATED, ASN1__Enumerated, ASN1::Enumerated)
0 0 DUPLICATING_TYPE(ASN1_ENUMERATED, ASN1__Enumerated, ASN1::Enumerated)
115 0 0 DUPLICATING_TYPE(ASN1_STRING, ASN1__String, ASN1::String)
0 0 DUPLICATING_TYPE(ASN1_STRING, ASN1__String, ASN1::String)
116 0 0 DUPLICATING_TYPE(ASN1_OCTET_STRING, ASN1__String__Octet, ASN1::String::Octet)
0 0 DUPLICATING_TYPE(ASN1_OCTET_STRING, ASN1__String__Octet, ASN1::String::Octet)
117 0 0 DUPLICATING_TYPE(ASN1_TIME, ASN1__Time, ASN1::Time)
0 0 DUPLICATING_TYPE(ASN1_TIME, ASN1__Time, ASN1::Time)
118 0 0 DUPLICATING_TYPE(ASN1_GENERALIZEDTIME, ASN1__Time__Generalized, ASN1::Time::Generalized)
0 0 DUPLICATING_TYPE(ASN1_GENERALIZEDTIME, ASN1__Time__Generalized, ASN1::Time::Generalized)
119 0 0 DUPLICATING_TYPE(ASN1_UTCTIME, ASN1__Time__UTC, ASN1::Time::UTC)
0 0 DUPLICATING_TYPE(ASN1_UTCTIME, ASN1__Time__UTC, ASN1::Time::UTC)
120 0 0 DUPLICATING_TYPE(X509, X509, X509)
0 0 DUPLICATING_TYPE(X509, X509, X509)
121 0 0 COUNTING_TYPE(X509_STORE, X509__Store, X509::Store)
0 0 COUNTING_TYPE(X509_STORE, X509__Store, X509::Store)
122 0 0 DUPLICATING_TYPE(X509_NAME, X509__Name, X509::Name)
0 0 DUPLICATING_TYPE(X509_NAME, X509__Name, X509::Name)
123 0 0 DUPLICATING_TYPE(X509_NAME_ENTRY, X509__Name__Entry, X509::Name::Entry)
0 0 DUPLICATING_TYPE(X509_NAME_ENTRY, X509__Name__Entry, X509::Name::Entry)
124 0 0 DUPLICATING_TYPE(X509_ALGOR, X509__Algorithm, X509::Algoritm)
0 0 DUPLICATING_TYPE(X509_ALGOR, X509__Algorithm, X509::Algoritm)
125 0 0 DUPLICATING_TYPE(X509_EXTENSION, X509__Extension, X509::Extension)
0 0 DUPLICATING_TYPE(X509_EXTENSION, X509__Extension, X509::Extension)
126 0 0 SIMPLE_TYPE(X509_VERIFY_PARAM, X509__VerifyParam, X509::VerifyParam, )
0 0 SIMPLE_TYPE(X509_VERIFY_PARAM, X509__VerifyParam, X509::VerifyParam, )
127 0 0 DUPLICATING_TYPE(GENERAL_NAME, X509__GeneralName, X509::GeneralName)
0 0 DUPLICATING_TYPE(GENERAL_NAME, X509__GeneralName, X509::GeneralName)
130 0 0 COUNTING_TYPE(BIO, BIO, BIO)
0 0 COUNTING_TYPE(BIO, BIO, BIO)
136 0 0 SIMPLE_TYPE(SSL_METHOD, SSL__Method, SSL::Method, const)
0 0 SIMPLE_TYPE(SSL_METHOD, SSL__Method, SSL::Method, const)
137 0 0 COUNTING_TYPE(SSL_CTX, SSL__Context, SSL::Context)
0 0 COUNTING_TYPE(SSL_CTX, SSL__Context, SSL::Context)
138 0 0 COUNTING_TYPE(SSL, SSL, SSL)
0 0 COUNTING_TYPE(SSL, SSL, SSL)
139 0 0 DUPLICATING_TYPE(SSL_SESSION, SSL__Session, SSL::Session)
0 0 DUPLICATING_TYPE(SSL_SESSION, SSL__Session, SSL::Session)
140 0 0 SIMPLE_TYPE(SSL_CIPHER, SSL__Cipher, SSL::Context, const)
0 0 SIMPLE_TYPE(SSL_CIPHER, SSL__Cipher, SSL::Context, const)
320 0 0 if (algo)
326 0 0 if (algo)
338 12 0 char* ptr = SvGROW(*retval, size);
7 5 char* ptr = SvGROW(*retval, size);
344 1 0 SvUPGRADE(buffer, SVt_PV);
345 0 1 SV_CHECK_THINKFIRST(buffer);
346 1 0 return SvGROW(buffer, size);
1 0 return SvGROW(buffer, size);
357 7 0 if (!SvROK(input) || SvTYPE(SvRV(input)) != SVt_PVHV)
0 7 if (!SvROK(input) || SvTYPE(SvRV(input)) != SVt_PVHV)
368 12 7 while (sv = hv_iternextsv(hash, &name, &name_len)) {
371 11 1 if (found) {
373 0 11 if (found->data_type == OSSL_PARAM_INTEGER) {
374 0 0 if (big = get_BN(aTHX_ sv))
378 6 5 } else if (found->data_type == OSSL_PARAM_UNSIGNED_INTEGER) {
379 0 6 if (big = get_BN(aTHX_ sv))
383 0 5 } else if (found->data_type == OSSL_PARAM_REAL) {
385 4 1 } else if (found->data_type == OSSL_PARAM_UTF8_STRING) {
389 1 0 } else if (found->data_type == OSSL_PARAM_OCTET_STRING) {
405 0 1 if (iter->data_type == OSSL_PARAM_INTEGER) {
406 0 0 if (iter->data_size == 0)
408 0 0 else if (iter->data_size <= IVSIZE) {
418 1 0 else if (iter->data_type == OSSL_PARAM_UNSIGNED_INTEGER) {
419 0 1 if (iter->data_size == 0)
421 1 0 else if (iter->data_size <= UVSIZE) {
431 0 0 else if (iter->data_type == OSSL_PARAM_REAL) {
436 0 0 else if (iter->data_type == OSSL_PARAM_UTF8_STRING) {
439 0 0 else if (iter->data_type == OSSL_PARAM_OCTET_STRING) {
474 0 0 mXPUSHp(name, strlen(name));
487 0 0 DEFINE_PROVIDED_CALLBACK(EVP_RAND)
488 0 124 DEFINE_PROVIDED_CALLBACK(EVP_CIPHER)
489 0 22 DEFINE_PROVIDED_CALLBACK(EVP_MD)
490 0 9 DEFINE_PROVIDED_CALLBACK(EVP_MAC)
491 0 12 DEFINE_PROVIDED_CALLBACK(EVP_KDF)
492 0 0 DEFINE_PROVIDED_CALLBACK(EVP_SIGNATURE)
674 0 1 if (!RETVAL)
708 0 0 if (RETVAL >= 0)
851 0 0 if (RETVAL >= 0)
863 0 0 if (RETVAL >= 0)
875 0 0 if (RETVAL >= 0)
1001 0 0 if (RETVAL == NID_undef)
1019 0 0 if (buf_len > 0) {
1021 0 0 if (OBJ_obj2txt(ptr, buf_len, a, no_name) > 0)
1034 0 0 if (!RETVAL)
1042 0 0 if (!RETVAL)
1059 0 0 if (!RETVAL)
1107 0 0 if (result > 0) {
1146 0 0 if (!RETVAL)
1153 0 0 if (RETVAL == -2)
1159 0 0 if (ASN1_TIME_to_tm(s, &tm)) {
1160 0 0 EXTEND(SP, 9);
1175 0 0 if (!RETVAL)
1238 0 0 if (!RETVAL)
1317 0 0 if (RETVAL)
1472 0 0 switch (gn->type) {
1553 0 0 if (RETVAL)
1562 0 0 if (RETVAL)
1827 0 0 if (!RETVAL)
1865 0 0 RETVAL = SSL_set_alpn_protos(ssl, SvPV_nolen(buffer), raw_len);
1900 0 0 if (!RETVAL)
1949 1 0 if (RETVAL > 0)
1978 0 0 if (RETVAL)
1989 0 0 if (RETVAL)
2001 0 0 if (RETVAL)
2008 0 0 if (RETVAL)
2016 0 0 if (!RETVAL)
2064 0 0 if (RETVAL)
2072 0 0 if (RETVAL)
2176 0 0 if (!RETVAL)
2186 0 0 if (RETVAL)
2195 0 0 if (RETVAL)
2265 0 0 if (RETVAL)
2296 0 0 if (RETVAL == NULL)
2319 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)
2366 0 0 if (RETVAL)
2392 0 1 if (RETVAL == NULL)
2427 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)
2444 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))
2454 2 0 if (RETVAL)
2463 2 0 if (RETVAL)
2470 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)
2498 0 0 if (RETVAL > 0)
2515 1 0 if (RETVAL)
2526 0 1 if (RETVAL == NULL)
2563 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)
2572 0 0 if (RETVAL)
2597 1 0 if (RETVAL)
2605 0 0 if (RETVAL)
2629 1 0 if (EVP_DigestSignFinal(ctx, NULL, &size) == 1) {
2631 1 0 if (EVP_DigestSignFinal(ctx, ptr, &size) == 1)
2640 0 0 if (EVP_DigestSign(ctx, NULL, &size, tbs, XSauto_length_of_tbs) == 1) {
2642 0 0 if (EVP_DigestSign(ctx, ptr, &size, tbs, XSauto_length_of_tbs) == 1)
2661 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)
2690 0 1 if (RETVAL == NULL)
2713 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)
2737 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)
2754 1 0 if (result)
2762 0 0 if (RETVAL)
2772 0 1 if (RETVAL == NULL)
2795 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)
2814 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)
2829 1 0 if (RETVAL)
2839 0 0 if (RETVAL == NULL)
2869 0 0 if (RETVAL == NULL)
2875 0 0 if (RETVAL == NULL)
2888 0 0 if (!result)
2892 0 0 if (result)
2900 0 0 if (!result)
2904 0 0 if (result)
2910 0 0 if (!RETVAL)
2915 0 0 const EVP_CIPHER* cipher = SvOK(cipher_sv) ? get_EVP_CIPHER(aTHX_ cipher_sv) : NULL;
2918 0 0 if (SvOK(key))
2925 0 0 if (!RETVAL)
2969 0 0 if (RETVAL > 0)
2974 0 0 if (RETVAL <= 0)
2986 0 0 if (RETVAL)
2996 0 0 result = RETVAL > 0 ? newSVpvn((char*)ptr, RETVAL) : &PL_sv_undef;
3001 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)
3056 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)
3077 0 2 if (RETVAL <= 0)
3086 0 1 if (EVP_PKEY_encapsulate(ctx, NULL, &wrapped_length, NULL, &gen_length) != 1)
3092 1 0 if (EVP_PKEY_encapsulate(ctx, wrapped_ptr, &wrapped_length, gen_ptr, &gen_length)) {
3105 1 0 if (result == 1) {
3108 1 0 if (EVP_PKEY_decapsulate(ctx, unwrapped_ptr, &unwrapped_length, wrapped, XSauto_length_of_wrapped) == 1)
3129 0 0 if (result == 1) {
3133 0 0 if (result == 1)
3145 0 0 if (EVP_PKEY_decrypt(ctx, NULL, &out_length, in, XSauto_length_of_in) == 1) {
3148 0 0 if (EVP_PKEY_decrypt(ctx, out_ptr, &out_length, in, XSauto_length_of_in) == 1)
3162 0 0 if (EVP_PKEY_derive(ctx, NULL, &key_length) == 1) {
3165 0 0 if (EVP_PKEY_derive(ctx, key_ptr, &key_length) == 1)
3176 0 0 if (EVP_PKEY_sign(ctx, NULL, &sig_length, tbs, XSauto_length_of_tbs) == 1) {
3179 0 0 if (EVP_PKEY_sign(ctx, sig_ptr, &sig_length, tbs, XSauto_length_of_tbs) == 1)