| 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) |