Branch Coverage

SSLeay.xs
Criterion Covered Total %
branch 691 1788 38.6


line true false branch
231 1 0 if (trace && SvIOK(trace) && SvIV(trace)>=level) {
1 0 if (trace && SvIOK(trace) && SvIV(trace)>=level) {
0 1 if (trace && SvIOK(trace) && SvIV(trace)>=level) {
419 70 42 if (!m) return; /* Skip aliases */
421 0 42 if (strcmp(from, mname)) return; /* Skip shortnames */
425 0 42 if (strchr(mname, ' ')) mname= EVP_MD_name(m);
481 10 0 if (cb) {
485 2 8 cb->data = (data == &PL_sv_undef) ? NULL : data;
492 9 0 if (cb) {
493 9 0 if (cb->func) {
497 2 7 if (cb->data) {
514 0 575 if (len == sizeof(key_name)) return 0; /* error - key_name too short*/
518 292 283 if (svtmp == NULL) {
523 283 0 if (!SvOK(*svtmp) || !SvROK(*svtmp)) return 0;
0 283 if (!SvOK(*svtmp) || !SvROK(*svtmp)) return 0;
533 565 10 if (data!=NULL) {
534 316 249 if (SvOK(data))
553 0 1614 if (len == sizeof(key_name)) return &PL_sv_undef; /* return undef on error - key_name too short*/
557 4 1610 if (svtmp == NULL) return &PL_sv_undef;
558 0 1610 if (!SvOK(*svtmp)) return &PL_sv_undef;
559 0 1610 if (!SvROK(*svtmp)) return &PL_sv_undef;
568 688 922 if (svtmp == NULL) return &PL_sv_undef;
569 0 922 if (!SvOK(*svtmp)) return &PL_sv_undef;
581 0 568 if (len == sizeof(key_name)) return 0; /* error - key_name too short*/
600 3 18 if (!SvOK(cb_func)) {
605 0 21 if (!SvOK(cb_func))
613 0 21 PUSHMARK(sp);
614 0 21 EXTEND( sp, 2 );
625 0 21 if (count != 1)
631 21 0 FREETMPS;
648 0 5 if(!SvOK(cb_func))
654 0 5 PUSHMARK(sp);
655 0 5 XPUSHs(sv_2mortal(newSViv(rwflag)));
656 0 5 XPUSHs(sv_2mortal(newSVsv(cb_data)));
663 0 5 if (count != 1)
668 0 5 if (res == NULL) {
676 5 0 FREETMPS;
695 0 6 if(!SvOK(cb_func))
701 0 6 PUSHMARK(sp);
702 0 6 XPUSHs(sv_2mortal(newSViv(rwflag)));
703 0 6 XPUSHs(sv_2mortal(newSVsv(cb_data)));
710 0 6 if (count != 1)
715 0 6 if (res == NULL) {
723 6 0 FREETMPS;
743 0 1 if(!SvOK(cb_func))
749 0 1 PUSHMARK(SP);
750 0 1 XPUSHs(sv_2mortal(newSViv(PTR2IV(x509_store_ctx))));
751 0 1 XPUSHs(sv_2mortal(newSVsv(cb_data)));
758 0 1 if (count != 1)
764 1 0 FREETMPS;
784 0 0 if(!SvOK(cb_func))
790 0 0 PUSHMARK(SP);
791 0 0 XPUSHs(sv_2mortal(newSViv(PTR2IV(ssl))));
792 0 0 XPUSHs(sv_2mortal(newSVsv(cb_data)));
799 0 0 if (count != 1)
805 0 0 FREETMPS;
827 0 0 if ( ! SvROK(cb_func) || (SvTYPE(SvRV(cb_func)) != SVt_PVCV))
0 0 if ( ! SvROK(cb_func) || (SvTYPE(SvRV(cb_func)) != SVt_PVCV))
831 0 0 if (p) ocsp_response = d2i_OCSP_RESPONSE(NULL, &p, len);
836 0 0 PUSHMARK(SP);
837 0 0 XPUSHs(sv_2mortal(newSViv(PTR2IV(ssl))));
839 0 0 XPUSHs(sv_2mortal(newSVsv(cb_data)));
843 0 0 if (ocsp_response) OCSP_RESPONSE_free(ocsp_response);
847 0 0 if (nres != 1)
853 0 0 FREETMPS;
868 1 0 if ( ! SvROK(cb_func) || (SvTYPE(SvRV(cb_func)) != SVt_PVCV))
0 1 if ( ! SvROK(cb_func) || (SvTYPE(SvRV(cb_func)) != SVt_PVCV))
874 0 1 PUSHMARK(SP);
875 0 1 XPUSHs(sv_2mortal(newSViv(PTR2IV(ssl))));
876 0 1 XPUSHs(sv_2mortal(newSVpvn((const char *)data, len)));
877 0 1 XPUSHs(sv_2mortal(newSVsv(cb_data)));
884 0 1 if (nres != 1)
890 1 0 FREETMPS;
915 0 0 if(!SvOK(cb_func))
921 0 0 PUSHMARK(SP);
923 0 0 XPUSHs(secretsv);
924 0 0 for (i=0; i
928 0 0 XPUSHs(sv_2mortal(newRV_inc((SV*)ciphers)));
929 0 0 XPUSHs(sv_2mortal(newRV_inc(pref_cipher)));
930 0 0 XPUSHs(sv_2mortal(newSVsv(cb_data)));
938 0 0 if (count != 1)
942 0 0 if (res) {
944 0 0 if (SvIOK(pref_cipher))
952 0 0 if (*secret_len < 0 || newsecretlen > (STRLEN)*secret_len)
0 0 if (*secret_len < 0 || newsecretlen > (STRLEN)*secret_len)
961 0 0 FREETMPS;
989 0 0 if(!SvOK(cb_func))
995 0 0 PUSHMARK(SP);
996 0 0 if (hint != NULL) {
998 0 0 XPUSHs(hintsv);
1007 0 0 if (count != 2)
1015 0 0 if (BN_hex2bn(&psk_bn, psk_val) > 0) {
1016 0 0 if (BN_num_bytes(psk_bn) <= max_psk_len) {
1023 0 0 FREETMPS;
1049 0 0 if(!SvOK(cb_func))
1055 0 0 PUSHMARK(SP);
1056 0 0 if (hint != NULL) {
1058 0 0 XPUSHs(hintsv);
1067 0 0 if (count != 2)
1075 0 0 if (BN_hex2bn(&psk_bn, psk_val) > 0) {
1076 0 0 if (BN_num_bytes(psk_bn) <= max_psk_len) {
1083 0 0 FREETMPS;
1100 0 0 if(!SvOK(cb_func))
1106 0 0 PUSHMARK(SP);
1107 0 0 EXTEND(SP, 3);
1118 0 0 if (count != 1)
1122 0 0 if (SvOK(psk_sv)) {
1126 0 0 if (!SvPOK(psk_sv))
1129 0 0 if (new_psk_len > max_psk_len)
1136 0 0 FREETMPS;
1155 0 0 if(!SvOK(cb_func))
1161 0 0 PUSHMARK(SP);
1162 0 0 EXTEND(SP, 3);
1173 0 0 if (count != 1)
1177 0 0 if (SvOK(psk_sv)) {
1181 0 0 if (!SvPOK(psk_sv))
1184 0 0 if (new_psk_len > max_psk_len)
1191 0 0 FREETMPS;
1211 0 0 if(!SvOK(cb_func))
1217 0 0 PUSHMARK(SP);
1218 0 0 EXTEND(SP, 2);
1228 0 0 if (count != 2)
1233 0 0 if (SvOK(sess_sv))
1239 0 0 FREETMPS;
1259 0 0 if(!SvOK(cb_func))
1265 0 0 PUSHMARK(SP);
1266 0 0 EXTEND(SP, 2);
1276 0 0 if (count != 2)
1281 0 0 if (SvOK(sess_sv))
1287 0 0 FREETMPS;
1305 0 0 if(!SvOK(cb_func))
1311 0 0 PUSHMARK(SP);
1312 0 0 EXTEND(SP, 2);
1322 0 0 if (count != 3)
1331 0 0 if (ret && SvOK(sess_sv)) {
0 0 if (ret && SvOK(sess_sv)) {
1346 0 0 FREETMPS;
1367 0 0 if(!SvOK(cb_func))
1373 0 0 PUSHMARK(SP);
1374 0 0 EXTEND(SP, 2);
1384 0 0 if (count != 3)
1393 0 0 if (ret && SvOK(sess_sv)) {
0 0 if (ret && SvOK(sess_sv)) {
1408 0 0 FREETMPS;
1423 0 20 if (last_index<0) return 0;
1424 40 20 for(i=0; i<=last_index; i++) {
1427 0 40 if (len>255) return 0;
1428 20 20 if (out) {
1442 0 0 if (!list || inlen<2) return 0;
0 0 if (!list || inlen<2) return 0;
1443 0 0 while (i
1445 0 0 if (i+il > inlen) return 0;
1474 0 1 if (SvROK(cb_func) && (SvTYPE(SvRV(cb_func)) == SVt_PVCV)) {
0 0 if (SvROK(cb_func) && (SvTYPE(SvRV(cb_func)) == SVt_PVCV)) {
1480 0 0 if (!next_proto_helper_protodata2AV(list, in, inlen)) return SSL_TLSEXT_ERR_ALERT_FATAL;
1484 0 0 PUSHMARK(SP);
1485 0 0 XPUSHs(sv_2mortal(newSViv(PTR2IV(ssl))));
1486 0 0 XPUSHs(sv_2mortal(newRV_inc((SV*)list)));
1487 0 0 XPUSHs(sv_2mortal(newSVsv(cb_data)));
1491 0 0 if (count != 2)
1497 0 0 if (next_proto_len<=255) {
1507 0 0 FREETMPS;
1510 0 0 return next_proto_len>255 ? SSL_TLSEXT_ERR_ALERT_FATAL : SSL_TLSEXT_ERR_OK;
1512 1 0 else if (SvROK(cb_data) && (SvTYPE(SvRV(cb_data)) == SVt_PVAV)) {
1 0 else if (SvROK(cb_data) && (SvTYPE(SvRV(cb_data)) == SVt_PVAV)) {
1515 0 1 if (!next_proto_data) return SSL_TLSEXT_ERR_ALERT_FATAL;
1520 0 1 if (next_proto_status != OPENSSL_NPN_NEGOTIATED) {
1546 0 1 if (SvROK(cb_func) && (SvTYPE(SvRV(cb_func)) == SVt_PVCV)) {
0 0 if (SvROK(cb_func) && (SvTYPE(SvRV(cb_func)) == SVt_PVCV)) {
1551 0 0 PUSHMARK(SP);
1552 0 0 XPUSHs(sv_2mortal(newSViv(PTR2IV(ssl))));
1553 0 0 XPUSHs(sv_2mortal(newSVsv(cb_data)));
1557 0 0 if (count != 1)
1560 0 0 if (SvOK(tmpsv) && SvROK(tmpsv) && (SvTYPE(SvRV(tmpsv)) == SVt_PVAV)) {
0 0 if (SvOK(tmpsv) && SvROK(tmpsv) && (SvTYPE(SvRV(tmpsv)) == SVt_PVAV)) {
0 0 if (SvOK(tmpsv) && SvROK(tmpsv) && (SvTYPE(SvRV(tmpsv)) == SVt_PVAV)) {
1564 0 0 if (protodata) next_proto_helper_AV2protodata(tmpav, protodata);
1567 0 0 FREETMPS;
1570 1 0 else if (SvROK(cb_data) && (SvTYPE(SvRV(cb_data)) == SVt_PVAV)) {
1 0 else if (SvROK(cb_data) && (SvTYPE(SvRV(cb_data)) == SVt_PVAV)) {
1574 1 0 if (protodata) next_proto_helper_AV2protodata(tmpav, protodata);
1576 1 0 if (protodata) {
1603 0 1 if (SvROK(cb_func) && (SvTYPE(SvRV(cb_func)) == SVt_PVCV)) {
0 0 if (SvROK(cb_func) && (SvTYPE(SvRV(cb_func)) == SVt_PVCV)) {
1610 0 0 if (!next_proto_helper_protodata2AV(list, in, inlen)) return SSL_TLSEXT_ERR_ALERT_FATAL;
1614 0 0 PUSHMARK(SP);
1615 0 0 XPUSHs(sv_2mortal(newSViv(PTR2IV(ssl))));
1616 0 0 XPUSHs(sv_2mortal(newRV_inc((SV*)list)));
1617 0 0 XPUSHs(sv_2mortal(newSVsv(cb_data)));
1621 0 0 if (count != 1)
1624 0 0 if (SvOK(alpn_data_sv)) {
1627 0 0 if (alpn_len <= 255) {
1637 0 0 FREETMPS;
1640 0 0 if (alpn_len>255) return SSL_TLSEXT_ERR_ALERT_FATAL;
1641 0 0 return alpn_data ? SSL_TLSEXT_ERR_OK : SSL_TLSEXT_ERR_NOACK;
1643 1 0 else if (SvROK(cb_data) && (SvTYPE(SvRV(cb_data)) == SVt_PVAV)) {
1 0 else if (SvROK(cb_data) && (SvTYPE(SvRV(cb_data)) == SVt_PVAV)) {
1648 0 1 if (!alpn_data) return SSL_TLSEXT_ERR_ALERT_FATAL;
1654 0 1 if (status != OPENSSL_NPN_NEGOTIATED) {
1658 1 0 return status == OPENSSL_NPN_NEGOTIATED ? SSL_TLSEXT_ERR_OK : SSL_TLSEXT_ERR_NOACK;
1675 2 0 if (cb->func && SvOK(cb->func)) {
2 0 if (cb->func && SvOK(cb->func)) {
1679 0 2 PUSHMARK(sp);
1681 0 2 XPUSHs(sv_2mortal( newSViv(bufsize-1) ));
1682 0 2 XPUSHs(sv_2mortal( newSViv(rwflag) ));
1683 0 2 if (cb->data) XPUSHs( cb->data );
0 0 if (cb->data) XPUSHs( cb->data );
1692 0 2 if (count != 1) {
1698 2 0 if (str_len+1 < bufsize) {
1708 2 0 FREETMPS;
1721 11572 0 if (cb->func && SvOK(cb->func)) {
2974 8598 if (cb->func && SvOK(cb->func)) {
1725 0 2974 PUSHMARK(sp);
1727 0 2974 XPUSHs(sv_2mortal( newSViv(i) ));
1728 0 2974 XPUSHs(sv_2mortal( newSViv(n) ));
1729 995 1979 if (cb->data) XPUSHs( cb->data );
0 995 if (cb->data) XPUSHs( cb->data );
1735 0 2973 if (count != 0)
1740 2973 0 FREETMPS;
1753 23 0 if ( ! SvROK(cb_func) || (SvTYPE(SvRV(cb_func)) != SVt_PVCV))
0 23 if ( ! SvROK(cb_func) || (SvTYPE(SvRV(cb_func)) != SVt_PVCV))
1759 0 23 PUSHMARK(SP);
1760 0 23 XPUSHs(sv_2mortal(newSViv(PTR2IV(ssl))));
1761 0 23 XPUSHs(sv_2mortal(newSViv(where)) );
1762 0 23 XPUSHs(sv_2mortal(newSViv(ret)) );
1763 0 23 XPUSHs(sv_2mortal(newSVsv(cb_data)));
1770 23 0 FREETMPS;
1783 648 0 if ( ! SvROK(cb_func) || (SvTYPE(SvRV(cb_func)) != SVt_PVCV))
0 648 if ( ! SvROK(cb_func) || (SvTYPE(SvRV(cb_func)) != SVt_PVCV))
1789 0 648 PUSHMARK(SP);
1790 0 648 XPUSHs(sv_2mortal(newSViv(PTR2IV(ssl))));
1791 0 648 XPUSHs(sv_2mortal(newSViv(where)) );
1792 0 648 XPUSHs(sv_2mortal(newSViv(ret)) );
1793 0 648 XPUSHs(sv_2mortal(newSVsv(cb_data)));
1800 648 0 FREETMPS;
1812 34 0 if ( ! SvROK(cb_func) || (SvTYPE(SvRV(cb_func)) != SVt_PVCV))
0 34 if ( ! SvROK(cb_func) || (SvTYPE(SvRV(cb_func)) != SVt_PVCV))
1818 0 34 PUSHMARK(SP);
1819 0 34 XPUSHs(sv_2mortal(newSViv(write_p)));
1820 0 34 XPUSHs(sv_2mortal(newSViv(version)));
1821 0 34 XPUSHs(sv_2mortal(newSViv(content_type)));
1822 0 34 XPUSHs(sv_2mortal(newSVpv((const char*)buf, len)));
1823 0 34 XPUSHs(sv_2mortal(newSViv(len)));
1824 0 34 XPUSHs(sv_2mortal(newSViv(PTR2IV(ssl))));
1825 0 34 XPUSHs(sv_2mortal(newSVsv(cb_data)));
1832 34 0 FREETMPS;
1845 34 0 if ( ! SvROK(cb_func) || (SvTYPE(SvRV(cb_func)) != SVt_PVCV))
0 34 if ( ! SvROK(cb_func) || (SvTYPE(SvRV(cb_func)) != SVt_PVCV))
1851 0 34 PUSHMARK(SP);
1852 0 34 XPUSHs(sv_2mortal(newSViv(write_p)));
1853 0 34 XPUSHs(sv_2mortal(newSViv(version)));
1854 0 34 XPUSHs(sv_2mortal(newSViv(content_type)));
1855 0 34 XPUSHs(sv_2mortal(newSVpv((const char*)buf, len)));
1856 0 34 XPUSHs(sv_2mortal(newSViv(len)));
1857 0 34 XPUSHs(sv_2mortal(newSViv(PTR2IV(ssl))));
1858 0 34 XPUSHs(sv_2mortal(newSVsv(cb_data)));
1865 34 0 FREETMPS;
1898 7 0 if (!SvROK(cb_func) || (SvTYPE(SvRV(cb_func)) != SVt_PVCV))
0 7 if (!SvROK(cb_func) || (SvTYPE(SvRV(cb_func)) != SVt_PVCV))
1903 0 7 PUSHMARK(SP);
1905 0 7 XPUSHs(sv_2mortal(newSVsv(cb_data)));
1907 4 3 if (!enc) {
1909 0 4 XPUSHs(sv_2mortal(newSVpv((const char *)key_name,16)));
1920 0 7 if (count>2)
1924 6 1 if (count>0) {
1926 6 0 if (SvOK(sname)) {
1928 0 6 if (svlen > 16)
1930 0 6 if (svlen == 0)
1937 6 1 if (count>1) {
1939 6 0 if (SvOK(skey)) {
1941 0 6 if (svlen != 32 && svlen != 48)
0 0 if (svlen != 32 && svlen != 48)
1950 7 0 FREETMPS;
1953 4 3 if (!enc && usable_rv_count == 0) {
1 3 if (!enc && usable_rv_count == 0) {
1957 0 6 if (usable_rv_count != 2)
1960 3 3 if (enc) {
1972 2 1 if (memcmp(name,key_name,16) == 0)
1992 0 26 if(!SvOK(cb_func))
1998 0 26 PUSHMARK(sp);
1999 0 26 XPUSHs(sv_2mortal(newSViv(PTR2IV(ssl))));
2000 0 26 XPUSHs(sv_2mortal(newSViv(PTR2IV(sess))));
2007 0 26 if (count != 1)
2013 26 0 FREETMPS;
2027 0 8 if(!SvOK(cb_func))
2033 0 8 PUSHMARK(sp);
2034 0 8 XPUSHs(sv_2mortal(newSViv(PTR2IV(ctx))));
2035 0 8 XPUSHs(sv_2mortal(newSViv(PTR2IV(sess))));
2043 8 0 FREETMPS;
2055 2 0 if (cb->func && SvOK(cb->func)) {
2 0 if (cb->func && SvOK(cb->func)) {
2059 0 2 PUSHMARK(SP);
2060 0 2 XPUSHs(sv_2mortal(newSViv(PTR2IV(provider))));
2061 2 0 if (cb->data) XPUSHs(cb->data);
0 2 if (cb->data) XPUSHs(cb->data);
2069 0 2 if (count != 1)
2075 2 0 FREETMPS;
2093 0 12 if(!SvOK(cb_func))
2099 0 12 PUSHMARK(SP);
2100 0 12 XPUSHs(sv_2mortal(newSViv(PTR2IV(ssl))));
2101 0 12 XPUSHs(sv_2mortal(newSVpv(line, 0)));
2109 12 0 FREETMPS;
2127 0 8 if(!SvOK(cb_func))
2133 0 8 PUSHMARK(SP);
2134 0 8 XPUSHs(sv_2mortal(newSViv(PTR2IV(ssl))));
2135 0 8 XPUSHs(sv_2mortal(newSVsv(cb_arg)));
2143 7 1 if (count < 1 || count > 2)
1 6 if (count < 1 || count > 2)
2145 5 1 if (count == 2)
2150 6 0 FREETMPS;
2166 0 0 if (asn1t->type == V_ASN1_UTCTIME) {
2167 0 0 if (asn1t->length<12 || asn1t->length>17) return 0;
0 0 if (asn1t->length<12 || asn1t->length>17) return 0;
2168 0 0 if (asn1t->length>12) tz = 12;
2170 0 0 if (asn1t->length<14) return 0;
2171 0 0 if (asn1t->length>14) {
2172 0 0 if (p[14] == '.') {
2174 0 0 for(i=msec+1;ilength && p[i]>='0' && p[i]<='9';i++) ;
0 0 for(i=msec+1;ilength && p[i]>='0' && p[i]<='9';i++) ;
0 0 for(i=msec+1;ilength && p[i]>='0' && p[i]<='9';i++) ;
2175 0 0 if (ilength) tz = i;
2182 0 0 l = msec ? msec : tz ? tz : asn1t->length;
0 0 l = msec ? msec : tz ? tz : asn1t->length;
2183 0 0 for(i=0;i
2184 0 0 if (p[i]<'0' || p[i]>'9') return 0;
0 0 if (p[i]<'0' || p[i]>'9') return 0;
2189 0 0 if (asn1t->type == V_ASN1_UTCTIME) { /* YY - two digit year */
2191 0 0 if (t.tm_year < 70) t.tm_year += 100;
2206 0 0 if (tz) {
2208 0 0 if (p[tz] == 'Z') {
2209 0 0 if (asn1t->length>tz+1 ) return 0;
2210 0 0 } else if (asn1t->length
0 0 } else if (asn1t->length
0 0 } else if (asn1t->length
2213 0 0 if (asn1t->length>tz+5 ) return 0;
2214 0 0 for(i=tz+1;i
2215 0 0 if (p[i]<'0' || p[i]>'9') return 0;
0 0 if (p[i]<'0' || p[i]>'9') return 0;
2219 0 0 if (p[tz]=='+') adj*= -1; /* +0500: subtract 5 hours to get UTC */
2224 0 0 if (result == -1) return 0; /* broken time */
2226 0 0 if (gmtoff && *gmtoff == -1) {
0 0 if (gmtoff && *gmtoff == -1) {
2240 0 0 if (chain) {
2241 0 0 for(i=0;i
2242 0 0 if ( X509_check_issued(sk_X509_value(chain,i),cert) == X509_V_OK ) {
2249 0 0 if ( !issuer && store ) {
0 0 if ( !issuer && store ) {
2251 0 0 if (stx && X509_STORE_CTX_init(stx,store,cert,NULL)) {
0 0 if (stx && X509_STORE_CTX_init(stx,store,cert,NULL)) {
2253 0 0 if (ok<0) {
2255 0 0 if(err) {
2260 0 0 } else if (ok == 0 ) {
2266 0 0 if (stx) X509_STORE_CTX_free(stx);
2275 8 0 : &PL_sv_undef;
2353 0 1 RETVAL = 1;
2512 7 0 RETVAL = SSL_CTX_load_verify_locations (ctx,
7 0 RETVAL = SSL_CTX_load_verify_locations (ctx,
2513 7 0 CAfile?(*CAfile?CAfile:NULL):NULL,
2514 0 7 CApath?(*CApath?CApath:NULL):NULL
2533 1 0 if (callback==NULL || !SvOK(callback) || !SvTRUE(callback)) {
1 0 if (callback==NULL || !SvOK(callback) || !SvTRUE(callback)) {
0 1 if (callback==NULL || !SvOK(callback) || !SvTRUE(callback)) {
2580 10 0 if (callback==NULL || !SvOK(callback)) {
0 10 if (callback==NULL || !SvOK(callback)) {
2594 10 0 if (callback==NULL || !SvOK(callback)) {
0 10 if (callback==NULL || !SvOK(callback)) {
2693 49 284 int succeeded = 1;
2698 21 312 if (got <= 0 && SSL_ERROR_ZERO_RETURN != SSL_get_error(s, got))
7 14 if (got <= 0 && SSL_ERROR_ZERO_RETURN != SSL_get_error(s, got))
2705 287 46 if (GIMME_V==G_LIST) {
2706 0 287 EXTEND(SP, 2);
2707 281 6 PUSHs(sv_2mortal(succeeded ? newSVpvn(buf, got) : newSV(0)));
2712 0 46 EXTEND(SP, 1);
2713 45 1 PUSHs(sv_2mortal(succeeded ? newSVpvn(buf, got) : newSV(0)));
2725 6 0 int succeeded = 1;
2730 2 4 if (got <= 0 && SSL_ERROR_ZERO_RETURN != SSL_get_error(s, got))
2 0 if (got <= 0 && SSL_ERROR_ZERO_RETURN != SSL_get_error(s, got))
2737 2 4 if (GIMME_V==G_LIST) {
2738 0 2 EXTEND(SP, 2);
2739 1 1 PUSHs(sv_2mortal(succeeded ? newSVpvn(buf, got) : newSV(0)));
2744 0 4 EXTEND(SP, 1);
2745 3 1 PUSHs(sv_2mortal(succeeded ? newSVpvn(buf, got) : newSV(0)));
2768 0 4 EXTEND(SP, 2);
2769 3 1 PUSHs(sv_2mortal(succeeded ? newSVpvn(buf, readbytes) : newSV(0)));
2792 0 2 EXTEND(SP, 2);
2793 1 1 PUSHs(sv_2mortal(succeeded ? newSVpvn(buf, readbytes) : newSV(0)));
2814 0 1 EXTEND(SP, 2);
2854 0 22 if (len < 0) {
3027 1 0 const OPENSSL_INIT_SETTINGS *settings = NULL;
3029 1 0 if (sv_settings != &PL_sv_undef)
3038 1 0 const OPENSSL_INIT_SETTINGS *settings = NULL;
3040 1 0 if (sv_settings != &PL_sv_undef)
3098 2 2 if( sk == NULL ) {
3101 120 2 for (i=0; i
3103 0 120 XPUSHs(sv_2mortal(newSViv(PTR2IV(c))));
3129 7 0 if(SSL_get_shared_ciphers(s, buf, sizeof(buf)))
3145 0 0 if( chain == NULL ) {
3148 0 0 for (i=0; i
3150 0 0 XPUSHs(sv_2mortal(newSViv(PTR2IV(x))));
3159 7 0 if (callback==NULL || !SvOK(callback)) {
0 7 if (callback==NULL || !SvOK(callback)) {
3223 0 3 if (!(len = i2d_SSL_SESSION(sess,NULL))) croak("invalid SSL_SESSION");
3225 0 3 if (!pc) croak("out of memory");
3228 0 3 XPUSHs(sv_2mortal(newSVpv((char*)pc,len)));
3237 7 0 if (SvPOK(pv)) {
3430 6 1 RETVAL = SSL_in_before(s) == 0 ? 0 : 1;
3438 6 1 RETVAL = SSL_is_init_finished(s) == 0 ? 0 : 1;
3446 6 1 RETVAL = SSL_in_init(s) == 0 ? 0 : 1;
3454 2 0 RETVAL = SSL_in_connect_init(s) == 0 ? 0 : 1;
1 1 RETVAL = SSL_in_connect_init(s) == 0 ? 0 : 1;
0 2 RETVAL = SSL_in_connect_init(s) == 0 ? 0 : 1;
3462 2 0 RETVAL = SSL_in_accept_init(s) == 0 ? 0 : 1;
1 1 RETVAL = SSL_in_accept_init(s) == 0 ? 0 : 1;
0 2 RETVAL = SSL_in_accept_init(s) == 0 ? 0 : 1;
3485 0 0 RETVAL = SSL_get_state(s);
3512 0 0 if (callback==NULL || !SvOK(callback)) {
0 0 if (callback==NULL || !SvOK(callback)) {
3533 4 0 if (callback==NULL || !SvOK(callback)) {
0 4 if (callback==NULL || !SvOK(callback)) {
3550 2 0 if (data==NULL || !SvOK(data)) {
0 2 if (data==NULL || !SvOK(data)) {
3660 47 1 if (!LIB_initialized) {
3707 4 3 RETVAL = rc;
3725 4 1 RETVAL = rc;
3743 4 1 RETVAL = rc;
3770 1 2 if (!RAND_file_name(buf, num)) {
3807 0 0 char *c_peername = NULL;
3809 0 0 RETVAL = X509_check_host(cert, name, 0, flags, (items == 4) ? &c_peername : NULL);
3810 0 0 if (items == 4)
3815 0 0 if (c_peername)
3938 17 0 if ((buf = X509_NAME_oneline(name, NULL, 0))) {
3951 13 0 int n, i, ident=0;
3955 13 0 if (bp) {
3956 13 0 if (X509_NAME_print_ex(bp, name, ident, flags)) {
3959 13 0 if (buf) {
3961 13 0 if (i>=0 && i<=n) {
13 0 if (i>=0 && i<=n) {
3963 0 13 if (utf8_decode) sv_utf8_decode(ST(0));
3982 1 0 if (length>=0) {
3984 1 0 if (X509_NAME_get_text_by_NID(name, nid, buf, length + 1)>=0)
4131 1 0 if (crl && crl_number)
1 0 if (crl && crl_number)
4132 1 0 if (X509_CRL_add1_ext_i2d(crl, NID_crl_number, crl_number, 0, 0)) RETVAL = 1;
4143 1 0 if (!RETVAL || i==-1) XSRETURN_UNDEF;
0 1 if (!RETVAL || i==-1) XSRETURN_UNDEF;
4158 0 2 ASN1_ENUMERATED *rsn = NULL;
4163 2 0 if (rev) {
4164 2 0 if (BN_hex2bn(&bn, serial_hex)) {
4166 2 0 if (sn) {
4174 0 2 if (!rv) XSRETURN_IV(0);
4176 0 2 if (!rev_time) XSRETURN_IV(0);
4177 0 2 if (!X509_REVOKED_set_revocationDate(rev, rev_time)) XSRETURN_IV(0);
4179 2 0 if(reason_code) {
4182 2 0 if (rsn) {
4183 2 0 if (ASN1_ENUMERATED_set(rsn, reason_code))
4184 2 0 if (X509_REVOKED_add1_ext_i2d(rev, NID_crl_reason, rsn, 0, 0))
4188 0 2 if (!rv) XSRETURN_IV(0);
4191 2 0 if(comp_time) {
4195 0 2 if(!X509_CRL_add0_revoked(crl, rev)) XSRETURN_IV(0);
4263 1 1 for (i=0; i
4266 0 1 XPUSHs(sv_2mortal(newSViv(PTR2IV(s))));
4273 1 0 int i=1;
4279 1 0 if (items>1) {
4282 6 1 while(i+1
4287 6 0 if (ex)
4305 1 0 int i=2;
4311 1 0 if (items>1) {
4313 6 1 while(i+1
4319 6 0 if (ex) {
4340 1 0 int i=2;
4346 1 0 if (items>1) {
4348 1 1 while(i+1
4354 1 0 if (ex) {
4379 1 0 int i, idx, ret = 1;
4381 1 0 if (!x509 || !x509_req) XSRETURN_IV(0);
0 1 if (!x509 || !x509_req) XSRETURN_IV(0);
4383 6 1 for(i = 0; i < sk_X509_EXTENSION_num(exts); i++) {
4388 0 6 if (idx != -1) {
4389 0 0 if (override) continue; /* don't override existing extension */
4396 0 0 } while (idx != -1);
4398 0 6 if (!X509_add_ext(x509, ext, -1)) ret = 0;
4452 9 0 if (!k && !strcmp(type,"md5")) {
4 5 if (!k && !strcmp(type,"md5")) {
4456 5 4 if (!k && !strcmp(type,"sha1")) {
4 1 if (!k && !strcmp(type,"sha1")) {
4461 1 8 if (!k && !strcmp(type,"sha256")) {
0 1 if (!k && !strcmp(type,"sha256")) {
4466 1 8 if (!k && !strcmp(type,"ripemd160")) {
0 1 if (!k && !strcmp(type,"ripemd160")) {
4469 1 8 if (!k) /* Default digest */
4471 0 9 if ( digest_tp == NULL ) {
4475 0 9 if (!X509_digest(cert, digest_tp, digest, &dsz)) {
4480 164 9 for(k=0; k
4497 3 2 if ( (i = X509_get_ext_by_NID(cert, NID_subject_alt_name, -1)) >= 0
4498 3 0 && (subjAltNameExt = X509_get_ext(cert, i))
4499 3 0 && (subjAltNameDNs = (STACK_OF(GENERAL_NAME) *)X509V3_EXT_d2i(subjAltNameExt)))
4503 16 3 for (j = 0; j < num_gnames; j++)
4510 0 2 EXTEND(SP, 2);
4523 0 8 EXTEND(SP, 2);
4536 0 0 EXTEND(SP, 2);
4547 2 0 if (len < 0 || len > (int)((sizeof(buf) - 1)))
2 0 if (len < 0 || len > (int)((sizeof(buf) - 1)))
4549 0 2 EXTEND(SP, 2);
4557 0 4 EXTEND(SP, 2);
4580 2 4 for (i = 0; i < sk_DIST_POINT_num(points); i++) {
4582 0 2 if (!p->distpoint)
4584 2 0 if (p->distpoint->type == 0) {
4587 2 2 for (j = 0; j < sk_GENERAL_NAME_num(gnames); j++) {
4590 2 0 if (gn->type == GEN_URI) {
4592 0 2 XPUSHs(sv_2mortal(newSVpv((char*)ASN1_STRING_get0_data(gn->d.ia5),ASN1_STRING_length(gn->d.ia5))));
4632 0 0 if (!info) XSRETURN_UNDEF;
4634 0 0 for (i = 0; i < sk_ACCESS_DESCRIPTION_num(info); i++) {
4636 0 0 if (OBJ_obj2nid(ad->method) == NID_ad_OCSP
4637 0 0 && ad->location->type == GEN_URI) {
4639 0 0 XPUSHs(sv_2mortal(newSVpv(
4649 0 0 if (GIMME_V == G_SCALAR) break; /* get only first */
4666 76 16 for(i = 0; i < sk_ASN1_OBJECT_num(extusage); i++) {
4670 19 57 if(format==0)
4671 0 19 XPUSHs(sv_2mortal(newSVpv(buffer,0))); /* format 0: oid */
4672 19 38 else if(format==1 && nid>0)
17 2 else if(format==1 && nid>0)
4673 0 17 XPUSHs(sv_2mortal(newSViv(nid))); /* format 1: nid */
4674 19 21 else if(format==2 && nid>0)
17 2 else if(format==2 && nid>0)
4675 0 17 XPUSHs(sv_2mortal(newSVpv(OBJ_nid2sn(nid),0))); /* format 2: shortname */
4676 19 4 else if(format==3 && nid>0)
17 2 else if(format==3 && nid>0)
4677 0 17 XPUSHs(sv_2mortal(newSVpv(OBJ_nid2ln(nid),0))); /* format 3: longname */
4688 4 0 if (u) {
4689 4 0 if (ASN1_BIT_STRING_get_bit(u,0)) XPUSHs(sv_2mortal(newSVpv("digitalSignature",0)));
0 4 if (ASN1_BIT_STRING_get_bit(u,0)) XPUSHs(sv_2mortal(newSVpv("digitalSignature",0)));
4690 1 3 if (ASN1_BIT_STRING_get_bit(u,1)) XPUSHs(sv_2mortal(newSVpv("nonRepudiation",0)));
0 1 if (ASN1_BIT_STRING_get_bit(u,1)) XPUSHs(sv_2mortal(newSVpv("nonRepudiation",0)));
4691 4 0 if (ASN1_BIT_STRING_get_bit(u,2)) XPUSHs(sv_2mortal(newSVpv("keyEncipherment",0)));
0 4 if (ASN1_BIT_STRING_get_bit(u,2)) XPUSHs(sv_2mortal(newSVpv("keyEncipherment",0)));
4692 1 3 if (ASN1_BIT_STRING_get_bit(u,3)) XPUSHs(sv_2mortal(newSVpv("dataEncipherment",0)));
0 1 if (ASN1_BIT_STRING_get_bit(u,3)) XPUSHs(sv_2mortal(newSVpv("dataEncipherment",0)));
4693 1 3 if (ASN1_BIT_STRING_get_bit(u,4)) XPUSHs(sv_2mortal(newSVpv("keyAgreement",0)));
0 1 if (ASN1_BIT_STRING_get_bit(u,4)) XPUSHs(sv_2mortal(newSVpv("keyAgreement",0)));
4694 1 3 if (ASN1_BIT_STRING_get_bit(u,5)) XPUSHs(sv_2mortal(newSVpv("keyCertSign",0)));
0 1 if (ASN1_BIT_STRING_get_bit(u,5)) XPUSHs(sv_2mortal(newSVpv("keyCertSign",0)));
4695 1 3 if (ASN1_BIT_STRING_get_bit(u,6)) XPUSHs(sv_2mortal(newSVpv("cRLSign",0)));
0 1 if (ASN1_BIT_STRING_get_bit(u,6)) XPUSHs(sv_2mortal(newSVpv("cRLSign",0)));
4696 0 4 if (ASN1_BIT_STRING_get_bit(u,7)) XPUSHs(sv_2mortal(newSVpv("encipherOnly",0)));
0 0 if (ASN1_BIT_STRING_get_bit(u,7)) XPUSHs(sv_2mortal(newSVpv("encipherOnly",0)));
4697 1 3 if (ASN1_BIT_STRING_get_bit(u,8)) XPUSHs(sv_2mortal(newSVpv("decipherOnly",0)));
0 1 if (ASN1_BIT_STRING_get_bit(u,8)) XPUSHs(sv_2mortal(newSVpv("decipherOnly",0)));
4708 0 4 if (u) {
4709 0 0 if (ASN1_BIT_STRING_get_bit(u,0)) XPUSHs(sv_2mortal(newSVpv("client",0)));
0 0 if (ASN1_BIT_STRING_get_bit(u,0)) XPUSHs(sv_2mortal(newSVpv("client",0)));
4710 0 0 if (ASN1_BIT_STRING_get_bit(u,1)) XPUSHs(sv_2mortal(newSVpv("server",0)));
0 0 if (ASN1_BIT_STRING_get_bit(u,1)) XPUSHs(sv_2mortal(newSVpv("server",0)));
4711 0 0 if (ASN1_BIT_STRING_get_bit(u,2)) XPUSHs(sv_2mortal(newSVpv("email",0)));
0 0 if (ASN1_BIT_STRING_get_bit(u,2)) XPUSHs(sv_2mortal(newSVpv("email",0)));
4712 0 0 if (ASN1_BIT_STRING_get_bit(u,3)) XPUSHs(sv_2mortal(newSVpv("objsign",0)));
0 0 if (ASN1_BIT_STRING_get_bit(u,3)) XPUSHs(sv_2mortal(newSVpv("objsign",0)));
4713 0 0 if (ASN1_BIT_STRING_get_bit(u,4)) XPUSHs(sv_2mortal(newSVpv("reserved",0)));
0 0 if (ASN1_BIT_STRING_get_bit(u,4)) XPUSHs(sv_2mortal(newSVpv("reserved",0)));
4714 0 0 if (ASN1_BIT_STRING_get_bit(u,5)) XPUSHs(sv_2mortal(newSVpv("sslCA",0)));
0 0 if (ASN1_BIT_STRING_get_bit(u,5)) XPUSHs(sv_2mortal(newSVpv("sslCA",0)));
4715 0 0 if (ASN1_BIT_STRING_get_bit(u,6)) XPUSHs(sv_2mortal(newSVpv("emailCA",0)));
0 0 if (ASN1_BIT_STRING_get_bit(u,6)) XPUSHs(sv_2mortal(newSVpv("emailCA",0)));
4716 0 0 if (ASN1_BIT_STRING_get_bit(u,7)) XPUSHs(sv_2mortal(newSVpv("objCA",0)));
0 0 if (ASN1_BIT_STRING_get_bit(u,7)) XPUSHs(sv_2mortal(newSVpv("objCA",0)));
4766 21 0 int indent=0;
4770 21 0 if (bp) {
4771 21 0 if(X509V3_EXT_print(bp,ext,flags,indent)) {
4774 21 0 if (buf) {
4776 21 0 if (i>=0 && i<=n) {
21 0 if (i>=0 && i<=n) {
4778 0 21 if (utf8_decode) sv_utf8_decode(ST(0));
4939 0 3 if (!BN_hex2bn(&bn, str)) XSRETURN_IV(0);
4940 0 3 if (!BN_to_ASN1_INTEGER(bn, i)) rv = 0;
4953 0 1 if (!BN_dec2bn(&bn, str)) XSRETURN_IV(0);
4954 0 1 if (!BN_to_ASN1_INTEGER(bn, i)) rv = 0;
4966 0 10 if (!bn) XSRETURN_UNDEF;
4970 0 10 if (!result) XSRETURN_UNDEF;
4971 0 10 XPUSHs(sv_2mortal(newSVpv((const char*)result, strlen(result))));
4982 0 9 if (!bn) XSRETURN_UNDEF;
4986 0 9 if (!result) XSRETURN_UNDEF;
4987 0 9 XPUSHs(sv_2mortal(newSVpv((const char*)result, strlen(result))));
5002 43 44 if (utf8_decode) sv_utf8_decode(u8);
5003 0 87 XPUSHs(sv_2mortal(u8));
5075 4 0 if (tm) {
5077 4 0 if (bp) {
5081 4 0 if (i>0)
5097 34 0 if (tmp) {
5098 34 0 if (ASN1_GENERALIZEDTIME_check(tmp)) {
5099 34 0 if (strlen((char*)tmp->data)>=14 && strlen((char*)tmp->data)<200) {
34 0 if (strlen((char*)tmp->data)>=14 && strlen((char*)tmp->data)<200) {
5107 34 0 if (strlen((char*)tmp->data)>14) strcat(buf+19,(char*)tmp->data+14);
5124 0 13 if (!tm) XSRETURN_UNDEF;
5126 0 13 if (strlen(str) < 19) XSRETURN_UNDEF;
5127 52 0 for (i=0; i<4; i++) if ((str[i] > '9') || (str[i] < '0')) XSRETURN_UNDEF;
0 52 for (i=0; i<4; i++) if ((str[i] > '9') || (str[i] < '0')) XSRETURN_UNDEF;
52 13 for (i=0; i<4; i++) if ((str[i] > '9') || (str[i] < '0')) XSRETURN_UNDEF;
5128 26 0 for (i=5; i<7; i++) if ((str[i] > '9') || (str[i] < '0')) XSRETURN_UNDEF;
0 26 for (i=5; i<7; i++) if ((str[i] > '9') || (str[i] < '0')) XSRETURN_UNDEF;
26 13 for (i=5; i<7; i++) if ((str[i] > '9') || (str[i] < '0')) XSRETURN_UNDEF;
5129 26 0 for (i=8; i<10; i++) if ((str[i] > '9') || (str[i] < '0')) XSRETURN_UNDEF;
0 26 for (i=8; i<10; i++) if ((str[i] > '9') || (str[i] < '0')) XSRETURN_UNDEF;
26 13 for (i=8; i<10; i++) if ((str[i] > '9') || (str[i] < '0')) XSRETURN_UNDEF;
5130 26 0 for (i=11; i<13; i++) if ((str[i] > '9') || (str[i] < '0')) XSRETURN_UNDEF;
0 26 for (i=11; i<13; i++) if ((str[i] > '9') || (str[i] < '0')) XSRETURN_UNDEF;
26 13 for (i=11; i<13; i++) if ((str[i] > '9') || (str[i] < '0')) XSRETURN_UNDEF;
5131 26 0 for (i=14; i<16; i++) if ((str[i] > '9') || (str[i] < '0')) XSRETURN_UNDEF;
0 26 for (i=14; i<16; i++) if ((str[i] > '9') || (str[i] < '0')) XSRETURN_UNDEF;
26 13 for (i=14; i<16; i++) if ((str[i] > '9') || (str[i] < '0')) XSRETURN_UNDEF;
5132 26 0 for (i=17; i<19; i++) if ((str[i] > '9') || (str[i] < '0')) XSRETURN_UNDEF;
0 26 for (i=17; i<19; i++) if ((str[i] > '9') || (str[i] < '0')) XSRETURN_UNDEF;
26 13 for (i=17; i<19; i++) if ((str[i] > '9') || (str[i] < '0')) XSRETURN_UNDEF;
5140 13 0 if (strlen(str)>19 && strlen(str)<200) strcat(buf,str+19);
13 0 if (strlen(str)>19 && strlen(str)<200) strcat(buf,str+19);
5148 13 0 if (!ASN1_TIME_check(&t)) {
5150 0 13 if (!ASN1_TIME_check(&t)) XSRETURN_UNDEF;
5154 0 13 if (!ASN1_STRING_set(tm,t.data,t.length)) XSRETURN_UNDEF;
5206 3 0 if (bp && x509) {
3 0 if (bp && x509) {
5210 3 0 if (buf) {
5212 3 0 if (i>=0 && i<=n) sv_setpvn(ST(0), buf, i);
3 0 if (i>=0 && i<=n) sv_setpvn(ST(0), buf, i);
5228 1 0 if (bp && x509_req) {
1 0 if (bp && x509_req) {
5232 1 0 if (buf) {
5234 1 0 if (i>=0 && i<=n) sv_setpvn(ST(0), buf, i);
1 0 if (i>=0 && i<=n) sv_setpvn(ST(0), buf, i);
5250 1 0 if (bp && x509_crl) {
1 0 if (bp && x509_crl) {
5254 1 0 if (buf) {
5256 1 0 if (i>=0 && i<=n) sv_setpvn(ST(0), buf, i);
1 0 if (i>=0 && i<=n) sv_setpvn(ST(0), buf, i);
5273 4 2 void * u = NULL;
5277 6 0 if (bp && pk) {
6 0 if (bp && pk) {
5278 2 4 if (passwd) passwd_len = strlen(passwd);
5279 2 4 if (passwd_len>0) {
5281 1 1 if (!enc_alg)
5292 6 0 if (buf) {
5294 6 0 if (i>=0 && i<=n) sv_setpvn(ST(0), buf, i);
6 0 if (i>=0 && i<=n) sv_setpvn(ST(0), buf, i);
5313 0 0 if (bio) {
5315 0 0 if ((p12 = d2i_PKCS12_bio(bio, NULL))) {
5316 0 0 if (PKCS12_parse(p12, password, &private_key, &certificate, NULL)) {
5317 0 0 if (private_key) {
5318 0 0 if (SSL_CTX_use_PrivateKey(ctx, private_key)) RETVAL = 1;
5321 0 0 if (certificate) {
5322 0 0 if (SSL_CTX_use_certificate(ctx, certificate)) RETVAL = 1;
5328 0 0 if (!RETVAL) ERR_print_errors_fp(stderr);
5343 0 4 STACK_OF(X509) *cachain = NULL;
5349 4 0 if (bio) {
5351 4 0 if ((p12 = d2i_PKCS12_bio(bio, NULL))) {
5352 3 1 if(load_chain)
5356 4 0 if (result) {
5357 4 0 if (private_key)
5358 0 4 XPUSHs(sv_2mortal(newSViv(PTR2IV(private_key))));
5360 0 0 XPUSHs(sv_2mortal(newSVpv(NULL,0))); /* undef */
5361 4 0 if (certificate)
5362 0 4 XPUSHs(sv_2mortal(newSViv(PTR2IV(certificate))));
5364 0 0 XPUSHs(sv_2mortal(newSVpv(NULL,0))); /* undef */
5365 1 3 if (cachain) {
5366 2 1 for (i=0; i
5368 0 2 XPUSHs(sv_2mortal(newSViv(PTR2IV(x))));
5408 0 0 if (MD4(data,len,md)) {
5426 9 0 if (MD5(data,len,md)) {
5442 9 0 if (RIPEMD160(data,len,md)) {
5458 8 0 if (SHA1(data,len,md)) {
5475 8 0 if (SHA256(data,len,md)) {
5492 8 0 if (SHA512(data,len,md)) {
5678 161 1 char *buf = NULL;
5683 69 93 if ((got = BIO_read(s, buf, max)) >= 0)
5760 0 120 if(description == NULL) {
5763 0 120 XPUSHs(sv_2mortal(newSVpv(description, 0)));
5774 0 242 if (items > 2) croak("SSL_CIPHER_get_bits: Need to call with one or two parameters");
5775 120 122 if (items > 1) sv_setsv(ST(1), sv_2mortal(newSViv(alg_bits)));
5856 1 0 if (callback==NULL || !SvOK(callback)) {
0 1 if (callback==NULL || !SvOK(callback)) {
5881 5 0 if (callback==NULL || !SvOK(callback)) {
0 5 if (callback==NULL || !SvOK(callback)) {
5898 3 0 if (data==NULL || !SvOK(data)) {
0 3 if (data==NULL || !SvOK(data)) {
6014 3 1 if (count > finished_len)
6018 0 4 RETVAL = finished_len;
6033 3 1 if (count > finished_len)
6037 0 4 RETVAL = finished_len;
6151 1 0 if (callback==NULL || !SvOK(callback)) {
0 1 if (callback==NULL || !SvOK(callback)) {
6167 240 0 if (callback==NULL || !SvOK(callback)) {
0 240 if (callback==NULL || !SvOK(callback)) {
6183 2 0 if (callback==NULL || !SvOK(callback)) {
1 1 if (callback==NULL || !SvOK(callback)) {
6199 2 0 if (callback==NULL || !SvOK(callback)) {
1 1 if (callback==NULL || !SvOK(callback)) {
6215 6 0 if (callback==NULL || !SvOK(callback)) {
1 5 if (callback==NULL || !SvOK(callback)) {
6240 8 0 if (callback==NULL || !SvOK(callback)) {
0 8 if (callback==NULL || !SvOK(callback)) {
6263 0 2 if (outlen == 0) XSRETURN_PV("");
6274 1 1 if (outlen == 0) XSRETURN_PV("");
6285 0 2 if (outlen == 0) XSRETURN_PV("");
6296 0 2 if (outlen == 0) XSRETURN_PV("");
6308 0 2 if (ret != 1) XSRETURN_UNDEF;
6311 0 2 mXPUSHs(newRV_noinc((SV*)av));
6312 9 2 for (i=0; i < outlen; i++) {
6354 1 2 if (ret != 1) XSRETURN_UNDEF;
6638 1 0 EC_KEY *eckey = NULL;
6642 0 1 if (SvIOK(curve)) {
6647 0 1 if (!nid) nid = EC_curve_nist2nid(SvPV_nolen(curve));
6649 0 1 if (!nid) croak("unknown curve %s",SvPV_nolen(curve));
6653 0 1 if (!group) croak("unknown curve nid=%d",nid);
6657 1 0 if ( eckey
6658 1 0 && EC_KEY_set_group(eckey, group)
6659 1 0 && EC_KEY_generate_key(eckey)) {
6662 0 0 if (eckey) EC_KEY_free(eckey);
6664 1 0 if (group) EC_GROUP_free(group);
6860 7 0 simple_cb_data_t* cb_data = NULL;
6877 0 7 if(!e)
6883 0 7 if(!ret) {
6890 0 7 if(!new_cb) {
6905 6 0 if (rc == -1 || ret == NULL) {
0 6 if (rc == -1 || ret == NULL) {
6906 0 0 if (ret) RSA_free(ret);
6910 0 6 RETVAL = ret;
6949 0 1 XPUSHs(bn2sv(n));
6950 0 1 XPUSHs(bn2sv(e));
6951 0 1 XPUSHs(bn2sv(d));
6952 0 1 XPUSHs(bn2sv(p));
6953 0 1 XPUSHs(bn2sv(q));
6954 0 1 XPUSHs(bn2sv(dmp1));
6955 0 1 XPUSHs(bn2sv(dmq1));
6956 0 1 XPUSHs(bn2sv(iqmp));
7076 2 1 RETVAL = info->x509;
7089 8 0 simple_cb_data_t* cb = NULL;
7092 2 6 if (SvOK(perl_cb)) {
7098 6 0 else if (!SvOK(perl_cb) && SvOK(perl_data) && SvPOK(perl_data)) {
2 4 else if (!SvOK(perl_cb) && SvOK(perl_data) && SvPOK(perl_data)) {
2 0 else if (!SvOK(perl_cb) && SvOK(perl_data) && SvPOK(perl_data)) {
7102 4 0 else if (!SvOK(perl_cb) && !SvOK(perl_data)) {
4 0 else if (!SvOK(perl_cb) && !SvOK(perl_data)) {
7258 1 0 const EVP_MD *h = NULL;
7264 1 0 if (ssl_cipher)
7266 1 0 if (cipher != NID_undef)
7269 1 0 if (ssl_cipher)
7271 0 1 if (digest != NID_undef) /* No digest if e.g., AEAD cipher */
7273 0 1 if (h)
7277 1 0 if (c) {
7336 0 0 if (callback==NULL || !SvOK(callback)) {
0 0 if (callback==NULL || !SvOK(callback)) {
7356 0 0 if (callback==NULL || !SvOK(callback)) {
0 0 if (callback==NULL || !SvOK(callback)) {
7370 0 0 if (callback==NULL || !SvOK(callback)) {
0 0 if (callback==NULL || !SvOK(callback)) {
7390 0 0 if (cb==NULL || !SvOK(cb)) {
0 0 if (cb==NULL || !SvOK(cb)) {
7404 0 0 if (cb==NULL || !SvOK(cb)) {
0 0 if (cb==NULL || !SvOK(cb)) {
7420 0 0 if (cb==NULL || !SvOK(cb)) {
0 0 if (cb==NULL || !SvOK(cb)) {
7434 0 0 if (cb==NULL || !SvOK(cb)) {
0 0 if (cb==NULL || !SvOK(cb)) {
7448 0 0 if (cb==NULL || !SvOK(cb)) {
0 0 if (cb==NULL || !SvOK(cb)) {
7462 0 0 if (cb==NULL || !SvOK(cb)) {
0 0 if (cb==NULL || !SvOK(cb)) {
7482 3 0 if (callback==NULL || !SvOK(callback)) {
0 3 if (callback==NULL || !SvOK(callback)) {
7576 46 0 if (EVP_DigestFinal(ctx,md,&md_size))
7588 6 0 if (EVP_DigestFinal_ex(ctx,md,&md_size))
7604 40 0 if (EVP_Digest(data,len,md,&md_size,type,impl))
7909 4 0 if (X509_pubkey_digest(data,type,md,&md_size))
7922 4 0 if (X509_digest(data,type,md,&md_size))
7934 1 0 if (X509_CRL_digest(data,type,md,&md_size))
7946 1 0 if (X509_REQ_digest(data,type,md,&md_size))
7958 0 0 if (X509_NAME_digest(data,type,md,&md_size))
7976 3 1 RETVAL = (X509_get0_tbs_sigalg(x)->algorithm);
7992 3 1 RETVAL = (algor->algorithm);
8008 0 1 if (!(pkey = X509_get_X509_PUBKEY(x))) croak("invalid certificate");
8009 0 1 if (!(len = i2d_X509_PUBKEY(pkey, NULL))) croak("invalid certificate public key");
8011 0 1 if (!pc) croak("out of memory");
8014 0 1 if (pi-pc != len) croak("invalid encoded length");
8015 0 1 XPUSHs(sv_2mortal(newSVpv((char*)pc,len)));
8027 1 0 if (callback==NULL || !SvOK(callback)) {
0 1 if (callback==NULL || !SvOK(callback)) {
8033 1 0 else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVAV)) {
1 0 else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVAV)) {
8040 0 0 else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVCV)) {
0 0 else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVCV)) {
8059 1 0 if (callback==NULL || !SvOK(callback)) {
0 1 if (callback==NULL || !SvOK(callback)) {
8065 1 0 else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVAV)) {
1 0 else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVAV)) {
8072 0 0 else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVCV)) {
0 0 else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVCV)) {
8092 0 2 XPUSHs(sv_2mortal(newSVpv((char *)data, len)));
8098 0 1 XPUSHs(sv_2mortal(newSVsv(cb_data_advanced_get((void*)s, "next_proto_select_cb!!last_status"))));
8132 0 0 if (callback==NULL || !SvOK(callback)) {
0 0 if (callback==NULL || !SvOK(callback)) {
8136 0 0 } else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVCV)) {
0 0 } else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVCV)) {
8153 1 0 if (callback==NULL || !SvOK(callback)) {
0 1 if (callback==NULL || !SvOK(callback)) {
8157 1 0 } else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVCV)) {
1 0 } else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVCV)) {
8177 1 0 if (ticketlen > 0) {
8179 0 1 if (!p)
8195 0 0 if (SvPOK(pv)) {
8211 0 0 if (!(len = i2d_OCSP_RESPONSE(r,NULL))) croak("invalid OCSP response");
8213 0 0 if (!pc) croak("out of memory");
8216 0 0 XPUSHs(sv_2mortal(newSVpv((char*)pc,len)));
8229 0 0 if (SvPOK(pv)) {
8245 0 0 if (!(len = i2d_OCSP_REQUEST(r,NULL))) croak("invalid OCSP request");
8247 0 0 if (!pc) croak("out of memory");
8250 0 0 XPUSHs(sv_2mortal(newSVpv((char*)pc,len)));
8279 0 0 if (!ssl) croak("not a SSL object");
8281 0 0 if (!ctx) croak("invalid SSL object - no context");
8285 0 0 for(i=0;i
8287 0 0 if (X509_check_issued(cert,cert) == X509_V_OK)
8289 0 0 if (!(issuer = find_issuer(cert,store,chain)))
8293 0 0 if (!id)
8297 0 0 if (!(len = i2d_OCSP_CERTID(id,&pi)))
8299 0 0 XPUSHs(sv_2mortal(newSVpvn((char *)pi, len)));
8315 0 0 if (!req) croak("out of memory");
8318 0 0 for(i=0;i
8322 0 0 if (!id) {
8328 0 0 RETVAL = req;
8344 0 0 OCSP_REQUEST *req = NULL;
8347 0 0 if (!ssl) croak("not a SSL object");
8349 0 0 if (!ctx) croak("invalid SSL object - no context");
8352 0 0 if (!bsr) croak("invalid OCSP response");
8356 0 0 if (svreq && SvOK(svreq) &&
0 0 if (svreq && SvOK(svreq) &&
8357 0 0 (req = INT2PTR(OCSP_REQUEST*,SvIV(svreq)))) {
8359 0 0 if ( i <= 0 ) {
8360 0 0 if (i == -1) {
8370 0 0 if ((store = SSL_CTX_get_cert_store(ctx))) {
8375 0 0 for(i=0;i
8380 0 0 if (chain && !RETVAL) {
0 0 if (chain && !RETVAL) {
8388 0 0 if (last && (issuer = find_issuer(last,store,chain))) {
0 0 if (last && (issuer = find_issuer(last,store,chain))) {
8413 0 0 if (!bsr) croak("invalid OCSP response");
8419 0 0 for(i=0; i < (getall ? sksn : items-1); i++) {
0 0 for(i=0; i < (getall ? sksn : items-1); i++) {
8427 0 0 if(getall) {
8434 0 0 if (!SvOK(idsv)) croak("undefined certid in arguments");
8436 0 0 if (!(certid = d2i_OCSP_CERTID(NULL,&p,len))) {
8441 0 0 if (first >= 0)
8445 0 0 if (sir)
8456 0 0 if (status == V_OCSP_CERTSTATUS_REVOKED) {
8458 0 0 } else if (status != V_OCSP_CERTSTATUS_GOOD) {
8461 0 0 else if (!OCSP_check_validity(thisupdate, nextupdate, 0, -1)) {
8469 0 0 if (want_array) {
8471 0 0 if (!idsv) {
8479 0 0 if(!len) continue;
8481 0 0 if (!pc) croak("out of memory");
8495 0 0 av_push(idav, error ? newSVpv(error,0) : newSV(0));
8496 0 0 if (sir) {
8501 0 0 if (nextupdate) hv_store(details,"nextUpdate",10,
8503 0 0 if (thisupdate) hv_store(details,"thisUpdate",10,
8505 0 0 if (status == V_OCSP_CERTSTATUS_REVOKED) {
8516 0 0 XPUSHs(sv_2mortal(newRV_noinc((SV*)idav)));
8517 0 0 } else if (!error) {
8520 0 0 if (!nextupd || nextupd>nu) nextupd = nu;
0 0 if (!nextupd || nextupd>nu) nextupd = nu;
8523 0 0 if (certid) OCSP_CERTID_free(certid);
8524 0 0 if (error && !want_array) {
0 0 if (error && !want_array) {
8530 0 0 if (!want_array)
8531 0 0 XPUSHs(sv_2mortal(newSViv(nextupd)));
8546 1 0 if (callback==NULL || !SvOK(callback)) {
0 1 if (callback==NULL || !SvOK(callback)) {
8552 1 0 else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVAV)) {
1 0 else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVAV)) {
8559 0 0 else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVCV)) {
0 0 else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVCV)) {
8582 7 0 if (!SvROK(data) || (SvTYPE(SvRV(data)) != SVt_PVAV))
0 7 if (!SvROK(data) || (SvTYPE(SvRV(data)) != SVt_PVAV))
8586 0 7 if (!alpn_data)
8606 0 0 if (!SvROK(data) || (SvTYPE(SvRV(data)) != SVt_PVAV))
0 0 if (!SvROK(data) || (SvTYPE(SvRV(data)) != SVt_PVAV))
8610 0 0 if (!alpn_data)
8627 0 2 XPUSHs(sv_2mortal(newSVpv((char *)data, len)));
8650 6 4 if (context != &PL_sv_undef) {
8655 10 0 PUSHs(sv_2mortal(ret>0 ? newSVpvn((const char *)out, outlen) : newSV(0)));
8656 0 10 EXTEND(SP, 1);
8670 8 0 OSSL_LIB_CTX *ctx = NULL;
8672 1 7 if (libctx != &PL_sv_undef)
8675 0 8 if (RETVAL == NULL)
8683 2 0 OSSL_LIB_CTX *ctx = NULL;
8685 0 2 if (libctx != &PL_sv_undef)
8688 0 2 if (RETVAL == NULL)
8699 8 0 OSSL_LIB_CTX *ctx = NULL;
8701 0 8 if (libctx != &PL_sv_undef)
8711 1 0 OSSL_LIB_CTX *ctx = NULL;
8713 0 1 if (libctx != &PL_sv_undef)