Branch Coverage

SSLeay.xs
Criterion Covered Total %
branch 702 1806 38.8


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 606 if (len == sizeof(key_name)) return 0; /* error - key_name too short*/
518 306 300 if (svtmp == NULL) {
523 300 0 if (!SvOK(*svtmp) || !SvROK(*svtmp)) return 0;
0 300 if (!SvOK(*svtmp) || !SvROK(*svtmp)) return 0;
533 593 13 if (data!=NULL) {
534 332 261 if (SvOK(data))
553 0 1682 if (len == sizeof(key_name)) return &PL_sv_undef; /* return undef on error - key_name too short*/
557 4 1678 if (svtmp == NULL) return &PL_sv_undef;
558 0 1678 if (!SvOK(*svtmp)) return &PL_sv_undef;
559 0 1678 if (!SvROK(*svtmp)) return &PL_sv_undef;
568 720 958 if (svtmp == NULL) return &PL_sv_undef;
569 0 958 if (!SvOK(*svtmp)) return &PL_sv_undef;
581 0 592 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 7541 0 if (cb->func && SvOK(cb->func)) {
2471 5070 if (cb->func && SvOK(cb->func)) {
1725 0 2471 PUSHMARK(sp);
1727 0 2471 XPUSHs(sv_2mortal( newSViv(i) ));
1728 0 2471 XPUSHs(sv_2mortal( newSViv(n) ));
1729 748 1723 if (cb->data) XPUSHs( cb->data );
0 748 if (cb->data) XPUSHs( cb->data );
1735 0 2470 if (count != 0)
1740 2470 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 680 0 if ( ! SvROK(cb_func) || (SvTYPE(SvRV(cb_func)) != SVt_PVCV))
0 680 if ( ! SvROK(cb_func) || (SvTYPE(SvRV(cb_func)) != SVt_PVCV))
1789 0 680 PUSHMARK(SP);
1790 0 680 XPUSHs(sv_2mortal(newSViv(PTR2IV(ssl))));
1791 0 680 XPUSHs(sv_2mortal(newSViv(where)) );
1792 0 680 XPUSHs(sv_2mortal(newSViv(ret)) );
1793 0 680 XPUSHs(sv_2mortal(newSVsv(cb_data)));
1800 680 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;
2167 0 2 if(!SvOK(cb_func))
2173 0 2 PUSHMARK(SP);
2174 0 2 EXTEND(SP, 2);
2182 0 2 if (count != 1)
2187 2 0 FREETMPS;
2202 0 0 if (asn1t->type == V_ASN1_UTCTIME) {
2203 0 0 if (asn1t->length<12 || asn1t->length>17) return 0;
0 0 if (asn1t->length<12 || asn1t->length>17) return 0;
2204 0 0 if (asn1t->length>12) tz = 12;
2206 0 0 if (asn1t->length<14) return 0;
2207 0 0 if (asn1t->length>14) {
2208 0 0 if (p[14] == '.') {
2210 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++) ;
2211 0 0 if (ilength) tz = i;
2218 0 0 l = msec ? msec : tz ? tz : asn1t->length;
0 0 l = msec ? msec : tz ? tz : asn1t->length;
2219 0 0 for(i=0;i
2220 0 0 if (p[i]<'0' || p[i]>'9') return 0;
0 0 if (p[i]<'0' || p[i]>'9') return 0;
2225 0 0 if (asn1t->type == V_ASN1_UTCTIME) { /* YY - two digit year */
2227 0 0 if (t.tm_year < 70) t.tm_year += 100;
2242 0 0 if (tz) {
2244 0 0 if (p[tz] == 'Z') {
2245 0 0 if (asn1t->length>tz+1 ) return 0;
2246 0 0 } else if (asn1t->length
0 0 } else if (asn1t->length
0 0 } else if (asn1t->length
2249 0 0 if (asn1t->length>tz+5 ) return 0;
2250 0 0 for(i=tz+1;i
2251 0 0 if (p[i]<'0' || p[i]>'9') return 0;
0 0 if (p[i]<'0' || p[i]>'9') return 0;
2255 0 0 if (p[tz]=='+') adj*= -1; /* +0500: subtract 5 hours to get UTC */
2260 0 0 if (result == -1) return 0; /* broken time */
2262 0 0 if (gmtoff && *gmtoff == -1) {
0 0 if (gmtoff && *gmtoff == -1) {
2276 0 0 if (chain) {
2277 0 0 for(i=0;i
2278 0 0 if ( X509_check_issued(sk_X509_value(chain,i),cert) == X509_V_OK ) {
2285 0 0 if ( !issuer && store ) {
0 0 if ( !issuer && store ) {
2287 0 0 if (stx && X509_STORE_CTX_init(stx,store,cert,NULL)) {
0 0 if (stx && X509_STORE_CTX_init(stx,store,cert,NULL)) {
2289 0 0 if (ok<0) {
2291 0 0 if(err) {
2296 0 0 } else if (ok == 0 ) {
2302 0 0 if (stx) X509_STORE_CTX_free(stx);
2311 8 0 : &PL_sv_undef;
2389 0 1 RETVAL = 1;
2548 8 0 RETVAL = SSL_CTX_load_verify_locations (ctx,
8 0 RETVAL = SSL_CTX_load_verify_locations (ctx,
2549 8 0 CAfile?(*CAfile?CAfile:NULL):NULL,
2550 0 8 CApath?(*CApath?CApath:NULL):NULL
2569 2 0 if (callback==NULL || !SvOK(callback) || !SvTRUE(callback)) {
1 1 if (callback==NULL || !SvOK(callback) || !SvTRUE(callback)) {
0 1 if (callback==NULL || !SvOK(callback) || !SvTRUE(callback)) {
2626 10 0 if (callback==NULL || !SvOK(callback)) {
0 10 if (callback==NULL || !SvOK(callback)) {
2640 10 0 if (callback==NULL || !SvOK(callback)) {
0 10 if (callback==NULL || !SvOK(callback)) {
2739 50 284 int succeeded = 1;
2744 21 313 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))
2751 287 47 if (GIMME_V==G_LIST) {
2752 0 287 EXTEND(SP, 2);
2753 281 6 PUSHs(sv_2mortal(succeeded ? newSVpvn(buf, got) : newSV(0)));
2758 0 47 EXTEND(SP, 1);
2759 46 1 PUSHs(sv_2mortal(succeeded ? newSVpvn(buf, got) : newSV(0)));
2771 6 0 int succeeded = 1;
2776 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))
2783 2 4 if (GIMME_V==G_LIST) {
2784 0 2 EXTEND(SP, 2);
2785 1 1 PUSHs(sv_2mortal(succeeded ? newSVpvn(buf, got) : newSV(0)));
2790 0 4 EXTEND(SP, 1);
2791 3 1 PUSHs(sv_2mortal(succeeded ? newSVpvn(buf, got) : newSV(0)));
2814 0 4 EXTEND(SP, 2);
2815 3 1 PUSHs(sv_2mortal(succeeded ? newSVpvn(buf, readbytes) : newSV(0)));
2838 0 2 EXTEND(SP, 2);
2839 1 1 PUSHs(sv_2mortal(succeeded ? newSVpvn(buf, readbytes) : newSV(0)));
2860 0 1 EXTEND(SP, 2);
2900 0 22 if (len < 0) {
3073 1 0 const OPENSSL_INIT_SETTINGS *settings = NULL;
3075 1 0 if (sv_settings != &PL_sv_undef)
3084 1 0 const OPENSSL_INIT_SETTINGS *settings = NULL;
3086 1 0 if (sv_settings != &PL_sv_undef)
3144 2 2 if( sk == NULL ) {
3147 120 2 for (i=0; i
3149 0 120 XPUSHs(sv_2mortal(newSViv(PTR2IV(c))));
3175 7 0 if(SSL_get_shared_ciphers(s, buf, sizeof(buf)))
3191 0 0 if( chain == NULL ) {
3194 0 0 for (i=0; i
3196 0 0 XPUSHs(sv_2mortal(newSViv(PTR2IV(x))));
3205 7 0 if (callback==NULL || !SvOK(callback)) {
0 7 if (callback==NULL || !SvOK(callback)) {
3269 0 3 if (!(len = i2d_SSL_SESSION(sess,NULL))) croak("invalid SSL_SESSION");
3271 0 3 if (!pc) croak("out of memory");
3274 0 3 XPUSHs(sv_2mortal(newSVpv((char*)pc,len)));
3283 7 0 if (SvPOK(pv)) {
3476 6 1 RETVAL = SSL_in_before(s) == 0 ? 0 : 1;
3484 6 1 RETVAL = SSL_is_init_finished(s) == 0 ? 0 : 1;
3492 6 1 RETVAL = SSL_in_init(s) == 0 ? 0 : 1;
3500 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;
3508 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;
3531 0 0 RETVAL = SSL_get_state(s);
3558 0 0 if (callback==NULL || !SvOK(callback)) {
0 0 if (callback==NULL || !SvOK(callback)) {
3579 4 0 if (callback==NULL || !SvOK(callback)) {
0 4 if (callback==NULL || !SvOK(callback)) {
3596 2 0 if (data==NULL || !SvOK(data)) {
0 2 if (data==NULL || !SvOK(data)) {
3652 0 18 EXTEND(SP, 6);
3671 0 3 EXTEND(SP, 6);
3754 49 1 if (!LIB_initialized) {
3801 4 3 RETVAL = rc;
3819 4 1 RETVAL = rc;
3837 4 1 RETVAL = rc;
3864 1 2 if (!RAND_file_name(buf, num)) {
3901 0 0 char *c_peername = NULL;
3903 0 0 RETVAL = X509_check_host(cert, name, 0, flags, (items == 4) ? &c_peername : NULL);
3904 0 0 if (items == 4)
3909 0 0 if (c_peername)
4032 17 0 if ((buf = X509_NAME_oneline(name, NULL, 0))) {
4045 13 0 int n, i, ident=0;
4049 13 0 if (bp) {
4050 13 0 if (X509_NAME_print_ex(bp, name, ident, flags)) {
4053 13 0 if (buf) {
4055 13 0 if (i>=0 && i<=n) {
13 0 if (i>=0 && i<=n) {
4057 0 13 if (utf8_decode) sv_utf8_decode(ST(0));
4076 1 0 if (length>=0) {
4078 1 0 if (X509_NAME_get_text_by_NID(name, nid, buf, length + 1)>=0)
4225 1 0 if (crl && crl_number)
1 0 if (crl && crl_number)
4226 1 0 if (X509_CRL_add1_ext_i2d(crl, NID_crl_number, crl_number, 0, 0)) RETVAL = 1;
4237 1 0 if (!RETVAL || i==-1) XSRETURN_UNDEF;
0 1 if (!RETVAL || i==-1) XSRETURN_UNDEF;
4252 0 2 ASN1_ENUMERATED *rsn = NULL;
4257 2 0 if (rev) {
4258 2 0 if (BN_hex2bn(&bn, serial_hex)) {
4260 2 0 if (sn) {
4268 0 2 if (!rv) XSRETURN_IV(0);
4270 0 2 if (!rev_time) XSRETURN_IV(0);
4271 0 2 if (!X509_REVOKED_set_revocationDate(rev, rev_time)) XSRETURN_IV(0);
4273 2 0 if(reason_code) {
4276 2 0 if (rsn) {
4277 2 0 if (ASN1_ENUMERATED_set(rsn, reason_code))
4278 2 0 if (X509_REVOKED_add1_ext_i2d(rev, NID_crl_reason, rsn, 0, 0))
4282 0 2 if (!rv) XSRETURN_IV(0);
4285 2 0 if(comp_time) {
4289 0 2 if(!X509_CRL_add0_revoked(crl, rev)) XSRETURN_IV(0);
4357 1 1 for (i=0; i
4360 0 1 XPUSHs(sv_2mortal(newSViv(PTR2IV(s))));
4367 1 0 int i=1;
4373 1 0 if (items>1) {
4376 6 1 while(i+1
4381 6 0 if (ex)
4399 1 0 int i=2;
4405 1 0 if (items>1) {
4407 6 1 while(i+1
4413 6 0 if (ex) {
4434 1 0 int i=2;
4440 1 0 if (items>1) {
4442 1 1 while(i+1
4448 1 0 if (ex) {
4473 1 0 int i, idx, ret = 1;
4475 1 0 if (!x509 || !x509_req) XSRETURN_IV(0);
0 1 if (!x509 || !x509_req) XSRETURN_IV(0);
4477 6 1 for(i = 0; i < sk_X509_EXTENSION_num(exts); i++) {
4482 0 6 if (idx != -1) {
4483 0 0 if (override) continue; /* don't override existing extension */
4490 0 0 } while (idx != -1);
4492 0 6 if (!X509_add_ext(x509, ext, -1)) ret = 0;
4546 9 0 if (!k && !strcmp(type,"md5")) {
4 5 if (!k && !strcmp(type,"md5")) {
4550 5 4 if (!k && !strcmp(type,"sha1")) {
4 1 if (!k && !strcmp(type,"sha1")) {
4555 1 8 if (!k && !strcmp(type,"sha256")) {
0 1 if (!k && !strcmp(type,"sha256")) {
4560 1 8 if (!k && !strcmp(type,"ripemd160")) {
0 1 if (!k && !strcmp(type,"ripemd160")) {
4563 1 8 if (!k) /* Default digest */
4565 0 9 if ( digest_tp == NULL ) {
4569 0 9 if (!X509_digest(cert, digest_tp, digest, &dsz)) {
4574 164 9 for(k=0; k
4591 3 2 if ( (i = X509_get_ext_by_NID(cert, NID_subject_alt_name, -1)) >= 0
4592 3 0 && (subjAltNameExt = X509_get_ext(cert, i))
4593 3 0 && (subjAltNameDNs = (STACK_OF(GENERAL_NAME) *)X509V3_EXT_d2i(subjAltNameExt)))
4597 16 3 for (j = 0; j < num_gnames; j++)
4604 0 2 EXTEND(SP, 2);
4617 0 8 EXTEND(SP, 2);
4630 0 0 EXTEND(SP, 2);
4641 2 0 if (len < 0 || len > (int)((sizeof(buf) - 1)))
2 0 if (len < 0 || len > (int)((sizeof(buf) - 1)))
4643 0 2 EXTEND(SP, 2);
4651 0 4 EXTEND(SP, 2);
4674 2 4 for (i = 0; i < sk_DIST_POINT_num(points); i++) {
4676 0 2 if (!p->distpoint)
4678 2 0 if (p->distpoint->type == 0) {
4681 2 2 for (j = 0; j < sk_GENERAL_NAME_num(gnames); j++) {
4684 2 0 if (gn->type == GEN_URI) {
4686 0 2 XPUSHs(sv_2mortal(newSVpv((char*)ASN1_STRING_get0_data(gn->d.ia5),ASN1_STRING_length(gn->d.ia5))));
4726 0 0 if (!info) XSRETURN_UNDEF;
4728 0 0 for (i = 0; i < sk_ACCESS_DESCRIPTION_num(info); i++) {
4730 0 0 if (OBJ_obj2nid(ad->method) == NID_ad_OCSP
4731 0 0 && ad->location->type == GEN_URI) {
4733 0 0 XPUSHs(sv_2mortal(newSVpv(
4743 0 0 if (GIMME_V == G_SCALAR) break; /* get only first */
4760 76 16 for(i = 0; i < sk_ASN1_OBJECT_num(extusage); i++) {
4764 19 57 if(format==0)
4765 0 19 XPUSHs(sv_2mortal(newSVpv(buffer,0))); /* format 0: oid */
4766 19 38 else if(format==1 && nid>0)
17 2 else if(format==1 && nid>0)
4767 0 17 XPUSHs(sv_2mortal(newSViv(nid))); /* format 1: nid */
4768 19 21 else if(format==2 && nid>0)
17 2 else if(format==2 && nid>0)
4769 0 17 XPUSHs(sv_2mortal(newSVpv(OBJ_nid2sn(nid),0))); /* format 2: shortname */
4770 19 4 else if(format==3 && nid>0)
17 2 else if(format==3 && nid>0)
4771 0 17 XPUSHs(sv_2mortal(newSVpv(OBJ_nid2ln(nid),0))); /* format 3: longname */
4782 4 0 if (u) {
4783 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)));
4784 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)));
4785 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)));
4786 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)));
4787 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)));
4788 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)));
4789 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)));
4790 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)));
4791 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)));
4802 0 4 if (u) {
4803 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)));
4804 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)));
4805 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)));
4806 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)));
4807 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)));
4808 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)));
4809 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)));
4810 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)));
4860 21 0 int indent=0;
4864 21 0 if (bp) {
4865 21 0 if(X509V3_EXT_print(bp,ext,flags,indent)) {
4868 21 0 if (buf) {
4870 21 0 if (i>=0 && i<=n) {
21 0 if (i>=0 && i<=n) {
4872 0 21 if (utf8_decode) sv_utf8_decode(ST(0));
5033 0 3 if (!BN_hex2bn(&bn, str)) XSRETURN_IV(0);
5034 0 3 if (!BN_to_ASN1_INTEGER(bn, i)) rv = 0;
5047 0 1 if (!BN_dec2bn(&bn, str)) XSRETURN_IV(0);
5048 0 1 if (!BN_to_ASN1_INTEGER(bn, i)) rv = 0;
5060 0 10 if (!bn) XSRETURN_UNDEF;
5064 0 10 if (!result) XSRETURN_UNDEF;
5065 0 10 XPUSHs(sv_2mortal(newSVpv((const char*)result, strlen(result))));
5076 0 9 if (!bn) XSRETURN_UNDEF;
5080 0 9 if (!result) XSRETURN_UNDEF;
5081 0 9 XPUSHs(sv_2mortal(newSVpv((const char*)result, strlen(result))));
5096 43 44 if (utf8_decode) sv_utf8_decode(u8);
5097 0 87 XPUSHs(sv_2mortal(u8));
5169 4 0 if (tm) {
5171 4 0 if (bp) {
5175 4 0 if (i>0)
5191 34 0 if (tmp) {
5192 34 0 if (ASN1_GENERALIZEDTIME_check(tmp)) {
5193 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) {
5201 34 0 if (strlen((char*)tmp->data)>14) strcat(buf+19,(char*)tmp->data+14);
5218 0 13 if (!tm) XSRETURN_UNDEF;
5220 0 13 if (strlen(str) < 19) XSRETURN_UNDEF;
5221 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;
5222 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;
5223 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;
5224 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;
5225 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;
5226 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;
5234 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);
5242 13 0 if (!ASN1_TIME_check(&t)) {
5244 0 13 if (!ASN1_TIME_check(&t)) XSRETURN_UNDEF;
5248 0 13 if (!ASN1_STRING_set(tm,t.data,t.length)) XSRETURN_UNDEF;
5300 3 0 if (bp && x509) {
3 0 if (bp && x509) {
5304 3 0 if (buf) {
5306 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);
5322 1 0 if (bp && x509_req) {
1 0 if (bp && x509_req) {
5326 1 0 if (buf) {
5328 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);
5344 1 0 if (bp && x509_crl) {
1 0 if (bp && x509_crl) {
5348 1 0 if (buf) {
5350 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);
5367 4 2 void * u = NULL;
5371 6 0 if (bp && pk) {
6 0 if (bp && pk) {
5372 2 4 if (passwd) passwd_len = strlen(passwd);
5373 2 4 if (passwd_len>0) {
5375 1 1 if (!enc_alg)
5386 6 0 if (buf) {
5388 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);
5407 0 0 if (bio) {
5409 0 0 if ((p12 = d2i_PKCS12_bio(bio, NULL))) {
5410 0 0 if (PKCS12_parse(p12, password, &private_key, &certificate, NULL)) {
5411 0 0 if (private_key) {
5412 0 0 if (SSL_CTX_use_PrivateKey(ctx, private_key)) RETVAL = 1;
5415 0 0 if (certificate) {
5416 0 0 if (SSL_CTX_use_certificate(ctx, certificate)) RETVAL = 1;
5422 0 0 if (!RETVAL) ERR_print_errors_fp(stderr);
5437 0 4 STACK_OF(X509) *cachain = NULL;
5443 4 0 if (bio) {
5445 4 0 if ((p12 = d2i_PKCS12_bio(bio, NULL))) {
5446 3 1 if(load_chain)
5450 4 0 if (result) {
5451 4 0 if (private_key)
5452 0 4 XPUSHs(sv_2mortal(newSViv(PTR2IV(private_key))));
5454 0 0 XPUSHs(sv_2mortal(newSVpv(NULL,0))); /* undef */
5455 4 0 if (certificate)
5456 0 4 XPUSHs(sv_2mortal(newSViv(PTR2IV(certificate))));
5458 0 0 XPUSHs(sv_2mortal(newSVpv(NULL,0))); /* undef */
5459 1 3 if (cachain) {
5460 2 1 for (i=0; i
5462 0 2 XPUSHs(sv_2mortal(newSViv(PTR2IV(x))));
5502 0 0 if (MD4(data,len,md)) {
5520 9 0 if (MD5(data,len,md)) {
5536 9 0 if (RIPEMD160(data,len,md)) {
5552 8 0 if (SHA1(data,len,md)) {
5569 8 0 if (SHA256(data,len,md)) {
5586 8 0 if (SHA512(data,len,md)) {
5772 161 1 char *buf = NULL;
5777 69 93 if ((got = BIO_read(s, buf, max)) >= 0)
5854 0 120 if(description == NULL) {
5857 0 120 XPUSHs(sv_2mortal(newSVpv(description, 0)));
5868 0 242 if (items > 2) croak("SSL_CIPHER_get_bits: Need to call with one or two parameters");
5869 120 122 if (items > 1) sv_setsv(ST(1), sv_2mortal(newSViv(alg_bits)));
5950 1 0 if (callback==NULL || !SvOK(callback)) {
0 1 if (callback==NULL || !SvOK(callback)) {
5975 5 0 if (callback==NULL || !SvOK(callback)) {
0 5 if (callback==NULL || !SvOK(callback)) {
5992 3 0 if (data==NULL || !SvOK(data)) {
0 3 if (data==NULL || !SvOK(data)) {
6108 3 1 if (count > finished_len)
6112 0 4 RETVAL = finished_len;
6127 3 1 if (count > finished_len)
6131 0 4 RETVAL = finished_len;
6245 1 0 if (callback==NULL || !SvOK(callback)) {
0 1 if (callback==NULL || !SvOK(callback)) {
6261 252 0 if (callback==NULL || !SvOK(callback)) {
0 252 if (callback==NULL || !SvOK(callback)) {
6277 2 0 if (callback==NULL || !SvOK(callback)) {
1 1 if (callback==NULL || !SvOK(callback)) {
6293 2 0 if (callback==NULL || !SvOK(callback)) {
1 1 if (callback==NULL || !SvOK(callback)) {
6309 6 0 if (callback==NULL || !SvOK(callback)) {
1 5 if (callback==NULL || !SvOK(callback)) {
6334 3 0 if (callback==NULL || !SvOK(callback)) {
1 2 if (callback==NULL || !SvOK(callback)) {
6351 8 0 if (callback==NULL || !SvOK(callback)) {
0 8 if (callback==NULL || !SvOK(callback)) {
6374 0 2 if (outlen == 0) XSRETURN_PV("");
6385 1 1 if (outlen == 0) XSRETURN_PV("");
6396 0 2 if (outlen == 0) XSRETURN_PV("");
6407 0 2 if (outlen == 0) XSRETURN_PV("");
6419 0 2 if (ret != 1) XSRETURN_UNDEF;
6422 0 2 mXPUSHs(newRV_noinc((SV*)av));
6423 9 2 for (i=0; i < outlen; i++) {
6465 1 2 if (ret != 1) XSRETURN_UNDEF;
6749 1 0 EC_KEY *eckey = NULL;
6753 0 1 if (SvIOK(curve)) {
6758 0 1 if (!nid) nid = EC_curve_nist2nid(SvPV_nolen(curve));
6760 0 1 if (!nid) croak("unknown curve %s",SvPV_nolen(curve));
6764 0 1 if (!group) croak("unknown curve nid=%d",nid);
6768 1 0 if ( eckey
6769 1 0 && EC_KEY_set_group(eckey, group)
6770 1 0 && EC_KEY_generate_key(eckey)) {
6773 0 0 if (eckey) EC_KEY_free(eckey);
6775 1 0 if (group) EC_GROUP_free(group);
6971 7 0 simple_cb_data_t* cb_data = NULL;
6988 0 7 if(!e)
6994 0 7 if(!ret) {
7001 0 7 if(!new_cb) {
7016 6 0 if (rc == -1 || ret == NULL) {
0 6 if (rc == -1 || ret == NULL) {
7017 0 0 if (ret) RSA_free(ret);
7021 0 6 RETVAL = ret;
7060 0 1 XPUSHs(bn2sv(n));
7061 0 1 XPUSHs(bn2sv(e));
7062 0 1 XPUSHs(bn2sv(d));
7063 0 1 XPUSHs(bn2sv(p));
7064 0 1 XPUSHs(bn2sv(q));
7065 0 1 XPUSHs(bn2sv(dmp1));
7066 0 1 XPUSHs(bn2sv(dmq1));
7067 0 1 XPUSHs(bn2sv(iqmp));
7187 2 1 RETVAL = info->x509;
7200 8 0 simple_cb_data_t* cb = NULL;
7203 2 6 if (SvOK(perl_cb)) {
7209 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)) {
7213 4 0 else if (!SvOK(perl_cb) && !SvOK(perl_data)) {
4 0 else if (!SvOK(perl_cb) && !SvOK(perl_data)) {
7369 1 0 const EVP_MD *h = NULL;
7375 1 0 if (ssl_cipher)
7377 1 0 if (cipher != NID_undef)
7380 1 0 if (ssl_cipher)
7382 0 1 if (digest != NID_undef) /* No digest if e.g., AEAD cipher */
7384 0 1 if (h)
7388 1 0 if (c) {
7447 0 0 if (callback==NULL || !SvOK(callback)) {
0 0 if (callback==NULL || !SvOK(callback)) {
7467 0 0 if (callback==NULL || !SvOK(callback)) {
0 0 if (callback==NULL || !SvOK(callback)) {
7481 0 0 if (callback==NULL || !SvOK(callback)) {
0 0 if (callback==NULL || !SvOK(callback)) {
7501 0 0 if (cb==NULL || !SvOK(cb)) {
0 0 if (cb==NULL || !SvOK(cb)) {
7515 0 0 if (cb==NULL || !SvOK(cb)) {
0 0 if (cb==NULL || !SvOK(cb)) {
7531 0 0 if (cb==NULL || !SvOK(cb)) {
0 0 if (cb==NULL || !SvOK(cb)) {
7545 0 0 if (cb==NULL || !SvOK(cb)) {
0 0 if (cb==NULL || !SvOK(cb)) {
7559 0 0 if (cb==NULL || !SvOK(cb)) {
0 0 if (cb==NULL || !SvOK(cb)) {
7573 0 0 if (cb==NULL || !SvOK(cb)) {
0 0 if (cb==NULL || !SvOK(cb)) {
7593 3 0 if (callback==NULL || !SvOK(callback)) {
0 3 if (callback==NULL || !SvOK(callback)) {
7691 46 0 if (EVP_DigestFinal(ctx,md,&md_size))
7703 6 0 if (EVP_DigestFinal_ex(ctx,md,&md_size))
7719 40 0 if (EVP_Digest(data,len,md,&md_size,type,impl))
8024 4 0 if (X509_pubkey_digest(data,type,md,&md_size))
8037 4 0 if (X509_digest(data,type,md,&md_size))
8049 1 0 if (X509_CRL_digest(data,type,md,&md_size))
8061 1 0 if (X509_REQ_digest(data,type,md,&md_size))
8073 0 0 if (X509_NAME_digest(data,type,md,&md_size))
8091 3 1 RETVAL = (X509_get0_tbs_sigalg(x)->algorithm);
8107 3 1 RETVAL = (algor->algorithm);
8123 0 1 if (!(pkey = X509_get_X509_PUBKEY(x))) croak("invalid certificate");
8124 0 1 if (!(len = i2d_X509_PUBKEY(pkey, NULL))) croak("invalid certificate public key");
8126 0 1 if (!pc) croak("out of memory");
8129 0 1 if (pi-pc != len) croak("invalid encoded length");
8130 0 1 XPUSHs(sv_2mortal(newSVpv((char*)pc,len)));
8142 1 0 if (callback==NULL || !SvOK(callback)) {
0 1 if (callback==NULL || !SvOK(callback)) {
8148 1 0 else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVAV)) {
1 0 else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVAV)) {
8155 0 0 else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVCV)) {
0 0 else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVCV)) {
8174 1 0 if (callback==NULL || !SvOK(callback)) {
0 1 if (callback==NULL || !SvOK(callback)) {
8180 1 0 else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVAV)) {
1 0 else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVAV)) {
8187 0 0 else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVCV)) {
0 0 else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVCV)) {
8207 0 2 XPUSHs(sv_2mortal(newSVpv((char *)data, len)));
8213 0 1 XPUSHs(sv_2mortal(newSVsv(cb_data_advanced_get((void*)s, "next_proto_select_cb!!last_status"))));
8247 0 0 if (callback==NULL || !SvOK(callback)) {
0 0 if (callback==NULL || !SvOK(callback)) {
8251 0 0 } else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVCV)) {
0 0 } else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVCV)) {
8268 1 0 if (callback==NULL || !SvOK(callback)) {
0 1 if (callback==NULL || !SvOK(callback)) {
8272 1 0 } else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVCV)) {
1 0 } else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVCV)) {
8292 1 0 if (ticketlen > 0) {
8294 0 1 if (!p)
8310 0 0 if (SvPOK(pv)) {
8326 0 0 if (!(len = i2d_OCSP_RESPONSE(r,NULL))) croak("invalid OCSP response");
8328 0 0 if (!pc) croak("out of memory");
8331 0 0 XPUSHs(sv_2mortal(newSVpv((char*)pc,len)));
8344 0 0 if (SvPOK(pv)) {
8360 0 0 if (!(len = i2d_OCSP_REQUEST(r,NULL))) croak("invalid OCSP request");
8362 0 0 if (!pc) croak("out of memory");
8365 0 0 XPUSHs(sv_2mortal(newSVpv((char*)pc,len)));
8394 0 0 if (!ssl) croak("not a SSL object");
8396 0 0 if (!ctx) croak("invalid SSL object - no context");
8400 0 0 for(i=0;i
8402 0 0 if (X509_check_issued(cert,cert) == X509_V_OK)
8404 0 0 if (!(issuer = find_issuer(cert,store,chain)))
8408 0 0 if (!id)
8412 0 0 if (!(len = i2d_OCSP_CERTID(id,&pi)))
8414 0 0 XPUSHs(sv_2mortal(newSVpvn((char *)pi, len)));
8430 0 0 if (!req) croak("out of memory");
8433 0 0 for(i=0;i
8437 0 0 if (!id) {
8443 0 0 RETVAL = req;
8459 0 0 OCSP_REQUEST *req = NULL;
8462 0 0 if (!ssl) croak("not a SSL object");
8464 0 0 if (!ctx) croak("invalid SSL object - no context");
8467 0 0 if (!bsr) croak("invalid OCSP response");
8471 0 0 if (svreq && SvOK(svreq) &&
0 0 if (svreq && SvOK(svreq) &&
8472 0 0 (req = INT2PTR(OCSP_REQUEST*,SvIV(svreq)))) {
8474 0 0 if ( i <= 0 ) {
8475 0 0 if (i == -1) {
8485 0 0 if ((store = SSL_CTX_get_cert_store(ctx))) {
8490 0 0 for(i=0;i
8495 0 0 if (chain && !RETVAL) {
0 0 if (chain && !RETVAL) {
8503 0 0 if (last && (issuer = find_issuer(last,store,chain))) {
0 0 if (last && (issuer = find_issuer(last,store,chain))) {
8528 0 0 if (!bsr) croak("invalid OCSP response");
8534 0 0 for(i=0; i < (getall ? sksn : items-1); i++) {
0 0 for(i=0; i < (getall ? sksn : items-1); i++) {
8542 0 0 if(getall) {
8549 0 0 if (!SvOK(idsv)) croak("undefined certid in arguments");
8551 0 0 if (!(certid = d2i_OCSP_CERTID(NULL,&p,len))) {
8556 0 0 if (first >= 0)
8560 0 0 if (sir)
8571 0 0 if (status == V_OCSP_CERTSTATUS_REVOKED) {
8573 0 0 } else if (status != V_OCSP_CERTSTATUS_GOOD) {
8576 0 0 else if (!OCSP_check_validity(thisupdate, nextupdate, 0, -1)) {
8584 0 0 if (want_array) {
8586 0 0 if (!idsv) {
8594 0 0 if(!len) continue;
8596 0 0 if (!pc) croak("out of memory");
8610 0 0 av_push(idav, error ? newSVpv(error,0) : newSV(0));
8611 0 0 if (sir) {
8616 0 0 if (nextupdate) hv_store(details,"nextUpdate",10,
8618 0 0 if (thisupdate) hv_store(details,"thisUpdate",10,
8620 0 0 if (status == V_OCSP_CERTSTATUS_REVOKED) {
8631 0 0 XPUSHs(sv_2mortal(newRV_noinc((SV*)idav)));
8632 0 0 } else if (!error) {
8635 0 0 if (!nextupd || nextupd>nu) nextupd = nu;
0 0 if (!nextupd || nextupd>nu) nextupd = nu;
8638 0 0 if (certid) OCSP_CERTID_free(certid);
8639 0 0 if (error && !want_array) {
0 0 if (error && !want_array) {
8645 0 0 if (!want_array)
8646 0 0 XPUSHs(sv_2mortal(newSViv(nextupd)));
8661 1 0 if (callback==NULL || !SvOK(callback)) {
0 1 if (callback==NULL || !SvOK(callback)) {
8667 1 0 else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVAV)) {
1 0 else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVAV)) {
8674 0 0 else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVCV)) {
0 0 else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVCV)) {
8697 7 0 if (!SvROK(data) || (SvTYPE(SvRV(data)) != SVt_PVAV))
0 7 if (!SvROK(data) || (SvTYPE(SvRV(data)) != SVt_PVAV))
8701 0 7 if (!alpn_data)
8721 0 0 if (!SvROK(data) || (SvTYPE(SvRV(data)) != SVt_PVAV))
0 0 if (!SvROK(data) || (SvTYPE(SvRV(data)) != SVt_PVAV))
8725 0 0 if (!alpn_data)
8742 0 2 XPUSHs(sv_2mortal(newSVpv((char *)data, len)));
8765 6 4 if (context != &PL_sv_undef) {
8770 10 0 PUSHs(sv_2mortal(ret>0 ? newSVpvn((const char *)out, outlen) : newSV(0)));
8771 0 10 EXTEND(SP, 1);
8785 8 0 OSSL_LIB_CTX *ctx = NULL;
8787 1 7 if (libctx != &PL_sv_undef)
8790 0 8 if (RETVAL == NULL)
8798 2 0 OSSL_LIB_CTX *ctx = NULL;
8800 0 2 if (libctx != &PL_sv_undef)
8803 0 2 if (RETVAL == NULL)
8814 8 0 OSSL_LIB_CTX *ctx = NULL;
8816 0 8 if (libctx != &PL_sv_undef)
8826 1 0 OSSL_LIB_CTX *ctx = NULL;
8828 0 1 if (libctx != &PL_sv_undef)