line |
true |
false |
branch |
236
|
1 |
0 |
if (trace && SvIOK(trace) && SvIV(trace)>=level) { |
|
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) { |
424
|
50 |
39 |
if (!m) return; /* Skip aliases */ |
426
|
18 |
21 |
if (strcmp(from, mname)) return; /* Skip shortnames */ |
428
|
5 |
16 |
if (EVP_MD_flags(m) & EVP_MD_FLAG_PKEY_DIGEST) return; /* Skip clones */ |
430
|
0 |
16 |
if (strchr(mname, ' ')) mname= EVP_MD_name(m); |
486
|
10 |
0 |
if (cb) { |
490
|
1 |
9 |
cb->data = (data == &PL_sv_undef) ? NULL : data; |
497
|
9 |
0 |
if (cb) { |
498
|
9 |
0 |
if (cb->func) { |
502
|
1 |
8 |
if (cb->data) { |
518
|
0 |
353 |
len = my_snprintf(key_name, sizeof(key_name), "ptr_%p", ptr); |
519
|
0 |
353 |
if (len == sizeof(key_name)) return 0; /* error - key_name too short*/ |
523
|
178 |
175 |
if (svtmp == NULL) { |
528
|
0 |
175 |
if (!SvOK(*svtmp) || !SvROK(*svtmp)) return 0; |
|
0 |
0 |
if (!SvOK(*svtmp) || !SvROK(*svtmp)) return 0; |
|
0 |
0 |
if (!SvOK(*svtmp) || !SvROK(*svtmp)) return 0; |
|
0 |
175 |
if (!SvOK(*svtmp) || !SvROK(*svtmp)) return 0; |
538
|
344 |
9 |
if (data!=NULL) { |
539
|
150 |
194 |
if (SvOK(data)) |
|
150 |
0 |
if (SvOK(data)) |
|
0 |
150 |
if (SvOK(data)) |
557
|
0 |
1113 |
len = my_snprintf(key_name, sizeof(key_name), "ptr_%p", ptr); |
558
|
0 |
1113 |
if (len == sizeof(key_name)) return &PL_sv_undef; /* return undef on error - key_name too short*/ |
562
|
3 |
1110 |
if (svtmp == NULL) return &PL_sv_undef; |
563
|
0 |
1110 |
if (!SvOK(*svtmp)) return &PL_sv_undef; |
|
0 |
0 |
if (!SvOK(*svtmp)) return &PL_sv_undef; |
|
0 |
0 |
if (!SvOK(*svtmp)) return &PL_sv_undef; |
564
|
0 |
1110 |
if (!SvROK(*svtmp)) return &PL_sv_undef; |
573
|
480 |
630 |
if (svtmp == NULL) return &PL_sv_undef; |
574
|
0 |
630 |
if (!SvOK(*svtmp)) return &PL_sv_undef; |
|
0 |
0 |
if (!SvOK(*svtmp)) return &PL_sv_undef; |
|
0 |
0 |
if (!SvOK(*svtmp)) return &PL_sv_undef; |
585
|
0 |
350 |
len = my_snprintf(key_name, sizeof(key_name), "ptr_%p", ptr); |
586
|
0 |
350 |
if (len == sizeof(key_name)) return 0; /* error - key_name too short*/ |
605
|
3 |
18 |
if (!SvOK(cb_func)) { |
|
3 |
0 |
if (!SvOK(cb_func)) { |
|
3 |
0 |
if (!SvOK(cb_func)) { |
610
|
0 |
21 |
if (!SvOK(cb_func)) |
|
0 |
0 |
if (!SvOK(cb_func)) |
|
0 |
0 |
if (!SvOK(cb_func)) |
618
|
0 |
21 |
PUSHMARK(sp); |
619
|
0 |
21 |
EXTEND( sp, 2 ); |
630
|
0 |
21 |
if (count != 1) |
633
|
21 |
0 |
res = POPi; |
636
|
21 |
0 |
FREETMPS; |
653
|
0 |
5 |
if(!SvOK(cb_func)) |
|
0 |
0 |
if(!SvOK(cb_func)) |
|
0 |
0 |
if(!SvOK(cb_func)) |
659
|
0 |
5 |
PUSHMARK(sp); |
660
|
0 |
5 |
XPUSHs(sv_2mortal(newSViv(rwflag))); |
661
|
0 |
5 |
XPUSHs(sv_2mortal(newSVsv(cb_data))); |
668
|
0 |
5 |
if (count != 1) |
671
|
5 |
0 |
res = POPp; |
673
|
0 |
5 |
if (res == NULL) { |
681
|
5 |
0 |
FREETMPS; |
759
|
0 |
1 |
if(!SvOK(cb_func)) |
|
0 |
0 |
if(!SvOK(cb_func)) |
|
0 |
0 |
if(!SvOK(cb_func)) |
765
|
0 |
1 |
PUSHMARK(SP); |
766
|
0 |
1 |
XPUSHs(sv_2mortal(newSViv(PTR2IV(x509_store_ctx)))); |
767
|
0 |
1 |
XPUSHs(sv_2mortal(newSVsv(cb_data))); |
774
|
0 |
1 |
if (count != 1) |
777
|
1 |
0 |
res = POPi; |
780
|
1 |
0 |
FREETMPS; |
800
|
0 |
0 |
if(!SvOK(cb_func)) |
|
0 |
0 |
if(!SvOK(cb_func)) |
|
0 |
0 |
if(!SvOK(cb_func)) |
806
|
0 |
0 |
PUSHMARK(SP); |
807
|
0 |
0 |
XPUSHs(sv_2mortal(newSViv(PTR2IV(ssl)))); |
808
|
0 |
0 |
XPUSHs(sv_2mortal(newSVsv(cb_data))); |
815
|
0 |
0 |
if (count != 1) |
818
|
0 |
0 |
res = POPi; |
821
|
0 |
0 |
FREETMPS; |
843
|
0 |
0 |
if ( ! SvROK(cb_func) || (SvTYPE(SvRV(cb_func)) != SVt_PVCV)) |
|
0 |
0 |
if ( ! SvROK(cb_func) || (SvTYPE(SvRV(cb_func)) != SVt_PVCV)) |
847
|
0 |
0 |
if (p) ocsp_response = d2i_OCSP_RESPONSE(NULL, &p, len); |
852
|
0 |
0 |
PUSHMARK(SP); |
853
|
0 |
0 |
XPUSHs(sv_2mortal(newSViv(PTR2IV(ssl)))); |
855
|
0 |
0 |
XPUSHs(sv_2mortal(newSVsv(cb_data))); |
859
|
0 |
0 |
if (ocsp_response) OCSP_RESPONSE_free(ocsp_response); |
863
|
0 |
0 |
if (nres != 1) |
866
|
0 |
0 |
res = POPi; |
869
|
0 |
0 |
FREETMPS; |
884
|
1 |
0 |
if ( ! SvROK(cb_func) || (SvTYPE(SvRV(cb_func)) != SVt_PVCV)) |
|
0 |
1 |
if ( ! SvROK(cb_func) || (SvTYPE(SvRV(cb_func)) != SVt_PVCV)) |
890
|
0 |
1 |
PUSHMARK(SP); |
891
|
0 |
1 |
XPUSHs(sv_2mortal(newSViv(PTR2IV(ssl)))); |
892
|
0 |
1 |
XPUSHs(sv_2mortal(newSVpvn((const char *)data, len))); |
893
|
0 |
1 |
XPUSHs(sv_2mortal(newSVsv(cb_data))); |
900
|
0 |
1 |
if (nres != 1) |
903
|
1 |
0 |
res = POPi; |
906
|
1 |
0 |
FREETMPS; |
931
|
0 |
0 |
if(!SvOK(cb_func)) |
|
0 |
0 |
if(!SvOK(cb_func)) |
|
0 |
0 |
if(!SvOK(cb_func)) |
937
|
0 |
0 |
PUSHMARK(SP); |
939
|
0 |
0 |
XPUSHs(secretsv); |
940
|
0 |
0 |
for (i=0; i
|
944
|
0 |
0 |
XPUSHs(sv_2mortal(newRV_inc((SV*)ciphers))); |
945
|
0 |
0 |
XPUSHs(sv_2mortal(newRV_inc(pref_cipher))); |
946
|
0 |
0 |
XPUSHs(sv_2mortal(newSVsv(cb_data))); |
954
|
0 |
0 |
if (count != 1) |
957
|
0 |
0 |
res = POPi; |
958
|
0 |
0 |
if (res) { |
960
|
0 |
0 |
if (SvIOK(pref_cipher)) |
961
|
0 |
0 |
*cipher = sk_SSL_CIPHER_value(peer_ciphers, SvIV(pref_cipher)); |
974
|
0 |
0 |
FREETMPS; |
1002
|
0 |
0 |
if(!SvOK(cb_func)) |
|
0 |
0 |
if(!SvOK(cb_func)) |
|
0 |
0 |
if(!SvOK(cb_func)) |
1008
|
0 |
0 |
PUSHMARK(SP); |
1009
|
0 |
0 |
if (hint != NULL) { |
1011
|
0 |
0 |
XPUSHs(hintsv); |
1020
|
0 |
0 |
if (count != 2) |
1023
|
0 |
0 |
psk_val = POPpx; |
1024
|
0 |
0 |
identity_val = POPpx; |
1026
|
0 |
0 |
my_snprintf(identity, max_identity_len, "%s", identity_val); |
|
0 |
0 |
my_snprintf(identity, max_identity_len, "%s", identity_val); |
1028
|
0 |
0 |
if (BN_hex2bn(&psk_bn, psk_val) > 0) { |
1029
|
0 |
0 |
if (BN_num_bytes(psk_bn) <= max_psk_len) { |
1036
|
0 |
0 |
FREETMPS; |
1062
|
0 |
0 |
if(!SvOK(cb_func)) |
|
0 |
0 |
if(!SvOK(cb_func)) |
|
0 |
0 |
if(!SvOK(cb_func)) |
1068
|
0 |
0 |
PUSHMARK(SP); |
1069
|
0 |
0 |
if (hint != NULL) { |
1071
|
0 |
0 |
XPUSHs(hintsv); |
1080
|
0 |
0 |
if (count != 2) |
1083
|
0 |
0 |
psk_val = POPpx; |
1084
|
0 |
0 |
identity_val = POPpx; |
1086
|
0 |
0 |
my_snprintf(identity, max_identity_len, "%s", identity_val); |
|
0 |
0 |
my_snprintf(identity, max_identity_len, "%s", identity_val); |
1088
|
0 |
0 |
if (BN_hex2bn(&psk_bn, psk_val) > 0) { |
1089
|
0 |
0 |
if (BN_num_bytes(psk_bn) <= max_psk_len) { |
1096
|
0 |
0 |
FREETMPS; |
1110
|
0 |
8 |
if (last_index<0) return 0; |
1111
|
16 |
8 |
for(i=0; i<=last_index; i++) { |
1112
|
16 |
0 |
char *p = SvPV_nolen(*av_fetch(list, i, 0)); |
1114
|
0 |
16 |
if (len>255) return 0; |
1115
|
8 |
8 |
if (out) { |
1129
|
0 |
0 |
if (!list || inlen<2) return 0; |
|
0 |
0 |
if (!list || inlen<2) return 0; |
1130
|
0 |
0 |
while (i
|
1132
|
0 |
0 |
if (i+il > inlen) return 0; |
1161
|
0 |
1 |
if (SvROK(cb_func) && (SvTYPE(SvRV(cb_func)) == SVt_PVCV)) { |
|
0 |
0 |
if (SvROK(cb_func) && (SvTYPE(SvRV(cb_func)) == SVt_PVCV)) { |
1167
|
0 |
0 |
if (!next_proto_helper_protodata2AV(list, in, inlen)) return SSL_TLSEXT_ERR_ALERT_FATAL; |
1171
|
0 |
0 |
PUSHMARK(SP); |
1172
|
0 |
0 |
XPUSHs(sv_2mortal(newSViv(PTR2IV(ssl)))); |
1173
|
0 |
0 |
XPUSHs(sv_2mortal(newRV_inc((SV*)list))); |
1174
|
0 |
0 |
XPUSHs(sv_2mortal(newSVsv(cb_data))); |
1178
|
0 |
0 |
if (count != 2) |
1180
|
0 |
0 |
next_proto_data = (unsigned char*)POPpx; |
1181
|
0 |
0 |
next_proto_status = POPi; |
1184
|
0 |
0 |
if (next_proto_len<=255) { |
1194
|
0 |
0 |
FREETMPS; |
1197
|
0 |
0 |
return next_proto_len>255 ? SSL_TLSEXT_ERR_ALERT_FATAL : SSL_TLSEXT_ERR_OK; |
1199
|
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)) { |
1202
|
0 |
1 |
if (!next_proto_data) return SSL_TLSEXT_ERR_ALERT_FATAL; |
1207
|
0 |
1 |
if (next_proto_status != OPENSSL_NPN_NEGOTIATED) { |
1233
|
0 |
1 |
if (SvROK(cb_func) && (SvTYPE(SvRV(cb_func)) == SVt_PVCV)) { |
|
0 |
0 |
if (SvROK(cb_func) && (SvTYPE(SvRV(cb_func)) == SVt_PVCV)) { |
1238
|
0 |
0 |
PUSHMARK(SP); |
1239
|
0 |
0 |
XPUSHs(sv_2mortal(newSViv(PTR2IV(ssl)))); |
1240
|
0 |
0 |
XPUSHs(sv_2mortal(newSVsv(cb_data))); |
1244
|
0 |
0 |
if (count != 1) |
1247
|
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)) { |
|
0 |
0 |
if (SvOK(tmpsv) && SvROK(tmpsv) && (SvTYPE(SvRV(tmpsv)) == SVt_PVAV)) { |
|
0 |
0 |
if (SvOK(tmpsv) && SvROK(tmpsv) && (SvTYPE(SvRV(tmpsv)) == SVt_PVAV)) { |
1251
|
0 |
0 |
if (protodata) next_proto_helper_AV2protodata(tmpav, protodata); |
1254
|
0 |
0 |
FREETMPS; |
1257
|
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)) { |
1261
|
1 |
0 |
if (protodata) next_proto_helper_AV2protodata(tmpav, protodata); |
1263
|
1 |
0 |
if (protodata) { |
1290
|
0 |
1 |
if (SvROK(cb_func) && (SvTYPE(SvRV(cb_func)) == SVt_PVCV)) { |
|
0 |
0 |
if (SvROK(cb_func) && (SvTYPE(SvRV(cb_func)) == SVt_PVCV)) { |
1297
|
0 |
0 |
if (!next_proto_helper_protodata2AV(list, in, inlen)) return SSL_TLSEXT_ERR_ALERT_FATAL; |
1301
|
0 |
0 |
PUSHMARK(SP); |
1302
|
0 |
0 |
XPUSHs(sv_2mortal(newSViv(PTR2IV(ssl)))); |
1303
|
0 |
0 |
XPUSHs(sv_2mortal(newRV_inc((SV*)list))); |
1304
|
0 |
0 |
XPUSHs(sv_2mortal(newSVsv(cb_data))); |
1308
|
0 |
0 |
if (count != 1) |
1311
|
0 |
0 |
if (SvOK(alpn_data_sv)) { |
|
0 |
0 |
if (SvOK(alpn_data_sv)) { |
|
0 |
0 |
if (SvOK(alpn_data_sv)) { |
1312
|
0 |
0 |
alpn_data = (unsigned char*)SvPV_nolen(alpn_data_sv); |
1314
|
0 |
0 |
if (alpn_len <= 255) { |
1324
|
0 |
0 |
FREETMPS; |
1327
|
0 |
0 |
if (alpn_len>255) return SSL_TLSEXT_ERR_ALERT_FATAL; |
1328
|
0 |
0 |
return alpn_data ? SSL_TLSEXT_ERR_OK : SSL_TLSEXT_ERR_NOACK; |
1330
|
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)) { |
1335
|
0 |
1 |
if (!alpn_data) return SSL_TLSEXT_ERR_ALERT_FATAL; |
1341
|
0 |
1 |
if (status != OPENSSL_NPN_NEGOTIATED) { |
1345
|
1 |
0 |
return status == OPENSSL_NPN_NEGOTIATED ? SSL_TLSEXT_ERR_OK : SSL_TLSEXT_ERR_NOACK; |
1362
|
2 |
0 |
if (cb->func && SvOK(cb->func)) { |
|
0 |
2 |
if (cb->func && SvOK(cb->func)) { |
|
0 |
0 |
if (cb->func && SvOK(cb->func)) { |
|
0 |
0 |
if (cb->func && SvOK(cb->func)) { |
1366
|
0 |
2 |
PUSHMARK(sp); |
1368
|
0 |
2 |
XPUSHs(sv_2mortal( newSViv(bufsize-1) )); |
1369
|
0 |
2 |
XPUSHs(sv_2mortal( newSViv(rwflag) )); |
1370
|
0 |
2 |
if (cb->data) XPUSHs( cb->data ); |
|
0 |
0 |
if (cb->data) XPUSHs( cb->data ); |
1379
|
0 |
2 |
if (count != 1) { |
1383
|
2 |
0 |
str = POPpx; |
1385
|
2 |
0 |
if (str_len+1 < bufsize) { |
1395
|
2 |
0 |
FREETMPS; |
1408
|
608 |
0 |
if (cb->func && SvOK(cb->func)) { |
|
453 |
155 |
if (cb->func && SvOK(cb->func)) { |
|
453 |
0 |
if (cb->func && SvOK(cb->func)) { |
|
0 |
453 |
if (cb->func && SvOK(cb->func)) { |
1412
|
0 |
155 |
PUSHMARK(sp); |
1414
|
0 |
155 |
XPUSHs(sv_2mortal( newSViv(i) )); |
1415
|
0 |
155 |
XPUSHs(sv_2mortal( newSViv(n) )); |
1416
|
16 |
139 |
if (cb->data) XPUSHs( cb->data ); |
|
0 |
16 |
if (cb->data) XPUSHs( cb->data ); |
1422
|
0 |
154 |
if (count != 0) |
1427
|
154 |
0 |
FREETMPS; |
1440
|
16 |
0 |
if ( ! SvROK(cb_func) || (SvTYPE(SvRV(cb_func)) != SVt_PVCV)) |
|
0 |
16 |
if ( ! SvROK(cb_func) || (SvTYPE(SvRV(cb_func)) != SVt_PVCV)) |
1446
|
0 |
16 |
PUSHMARK(SP); |
1447
|
0 |
16 |
XPUSHs(sv_2mortal(newSViv(PTR2IV(ssl)))); |
1448
|
0 |
16 |
XPUSHs(sv_2mortal(newSViv(where)) ); |
1449
|
0 |
16 |
XPUSHs(sv_2mortal(newSViv(ret)) ); |
1450
|
0 |
16 |
XPUSHs(sv_2mortal(newSVsv(cb_data))); |
1457
|
16 |
0 |
FREETMPS; |
1470
|
457 |
0 |
if ( ! SvROK(cb_func) || (SvTYPE(SvRV(cb_func)) != SVt_PVCV)) |
|
0 |
457 |
if ( ! SvROK(cb_func) || (SvTYPE(SvRV(cb_func)) != SVt_PVCV)) |
1476
|
0 |
457 |
PUSHMARK(SP); |
1477
|
0 |
457 |
XPUSHs(sv_2mortal(newSViv(PTR2IV(ssl)))); |
1478
|
0 |
457 |
XPUSHs(sv_2mortal(newSViv(where)) ); |
1479
|
0 |
457 |
XPUSHs(sv_2mortal(newSViv(ret)) ); |
1480
|
0 |
457 |
XPUSHs(sv_2mortal(newSVsv(cb_data))); |
1487
|
457 |
0 |
FREETMPS; |
1499
|
24 |
0 |
if ( ! SvROK(cb_func) || (SvTYPE(SvRV(cb_func)) != SVt_PVCV)) |
|
0 |
24 |
if ( ! SvROK(cb_func) || (SvTYPE(SvRV(cb_func)) != SVt_PVCV)) |
1505
|
0 |
24 |
PUSHMARK(SP); |
1506
|
0 |
24 |
XPUSHs(sv_2mortal(newSViv(write_p))); |
1507
|
0 |
24 |
XPUSHs(sv_2mortal(newSViv(version))); |
1508
|
0 |
24 |
XPUSHs(sv_2mortal(newSViv(content_type))); |
1509
|
0 |
24 |
XPUSHs(sv_2mortal(newSVpv((const char*)buf, len))); |
1510
|
0 |
24 |
XPUSHs(sv_2mortal(newSViv(len))); |
1511
|
0 |
24 |
XPUSHs(sv_2mortal(newSViv(PTR2IV(ssl)))); |
1512
|
0 |
24 |
XPUSHs(sv_2mortal(newSVsv(cb_data))); |
1519
|
24 |
0 |
FREETMPS; |
1532
|
24 |
0 |
if ( ! SvROK(cb_func) || (SvTYPE(SvRV(cb_func)) != SVt_PVCV)) |
|
0 |
24 |
if ( ! SvROK(cb_func) || (SvTYPE(SvRV(cb_func)) != SVt_PVCV)) |
1538
|
0 |
24 |
PUSHMARK(SP); |
1539
|
0 |
24 |
XPUSHs(sv_2mortal(newSViv(write_p))); |
1540
|
0 |
24 |
XPUSHs(sv_2mortal(newSViv(version))); |
1541
|
0 |
24 |
XPUSHs(sv_2mortal(newSViv(content_type))); |
1542
|
0 |
24 |
XPUSHs(sv_2mortal(newSVpv((const char*)buf, len))); |
1543
|
0 |
24 |
XPUSHs(sv_2mortal(newSViv(len))); |
1544
|
0 |
24 |
XPUSHs(sv_2mortal(newSViv(PTR2IV(ssl)))); |
1545
|
0 |
24 |
XPUSHs(sv_2mortal(newSVsv(cb_data))); |
1552
|
24 |
0 |
FREETMPS; |
1585
|
7 |
0 |
if (!SvROK(cb_func) || (SvTYPE(SvRV(cb_func)) != SVt_PVCV)) |
|
0 |
7 |
if (!SvROK(cb_func) || (SvTYPE(SvRV(cb_func)) != SVt_PVCV)) |
1590
|
0 |
7 |
PUSHMARK(SP); |
1592
|
0 |
7 |
XPUSHs(sv_2mortal(newSVsv(cb_data))); |
1594
|
4 |
3 |
if (!enc) { |
1596
|
0 |
4 |
XPUSHs(sv_2mortal(newSVpv((const char *)key_name,16))); |
1607
|
0 |
7 |
if (count>2) |
1611
|
6 |
1 |
if (count>0) { |
1613
|
0 |
6 |
if (SvOK(sname)) { |
|
0 |
0 |
if (SvOK(sname)) { |
|
0 |
0 |
if (SvOK(sname)) { |
1614
|
6 |
0 |
unsigned char *pname = (unsigned char *)SvPV(sname,svlen); |
1615
|
0 |
6 |
if (svlen > 16) |
1617
|
0 |
6 |
if (svlen == 0) |
1624
|
6 |
1 |
if (count>1) { |
1626
|
0 |
6 |
if (SvOK(skey)) { |
|
0 |
0 |
if (SvOK(skey)) { |
|
0 |
0 |
if (SvOK(skey)) { |
1627
|
6 |
0 |
unsigned char *pkey = (unsigned char *)SvPV(skey,svlen); |
1628
|
0 |
6 |
if (svlen != 32 && svlen != 48) |
|
0 |
0 |
if (svlen != 32 && svlen != 48) |
1637
|
7 |
0 |
FREETMPS; |
1640
|
4 |
3 |
if (!enc && usable_rv_count == 0) { |
|
1 |
3 |
if (!enc && usable_rv_count == 0) { |
1644
|
0 |
6 |
if (usable_rv_count != 2) |
1647
|
3 |
3 |
if (enc) { |
1659
|
2 |
1 |
if (memcmp(name,key_name,16) == 0) |
1679
|
0 |
6 |
if(!SvOK(cb_func)) |
|
0 |
0 |
if(!SvOK(cb_func)) |
|
0 |
0 |
if(!SvOK(cb_func)) |
1685
|
0 |
6 |
PUSHMARK(sp); |
1686
|
0 |
6 |
XPUSHs(sv_2mortal(newSViv(PTR2IV(ssl)))); |
1687
|
0 |
6 |
XPUSHs(sv_2mortal(newSViv(PTR2IV(sess)))); |
1694
|
0 |
6 |
if (count != 1) |
1697
|
6 |
0 |
remove = POPi; |
1700
|
6 |
0 |
FREETMPS; |
1714
|
0 |
6 |
if(!SvOK(cb_func)) |
|
0 |
0 |
if(!SvOK(cb_func)) |
|
0 |
0 |
if(!SvOK(cb_func)) |
1720
|
0 |
6 |
PUSHMARK(sp); |
1721
|
0 |
6 |
XPUSHs(sv_2mortal(newSViv(PTR2IV(ctx)))); |
1722
|
0 |
6 |
XPUSHs(sv_2mortal(newSViv(PTR2IV(sess)))); |
1730
|
6 |
0 |
FREETMPS; |
1812
|
0 |
0 |
if (asn1t->type == V_ASN1_UTCTIME) { |
1813
|
0 |
0 |
if (asn1t->length<12 || asn1t->length>17) return 0; |
|
0 |
0 |
if (asn1t->length<12 || asn1t->length>17) return 0; |
1814
|
0 |
0 |
if (asn1t->length>12) tz = 12; |
1816
|
0 |
0 |
if (asn1t->length<14) return 0; |
1817
|
0 |
0 |
if (asn1t->length>14) { |
1818
|
0 |
0 |
if (p[14] == '.') { |
1820
|
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++) ; |
1821
|
0 |
0 |
if (ilength) tz = i; |
1828
|
0 |
0 |
l = msec ? msec : tz ? tz : asn1t->length; |
|
0 |
0 |
l = msec ? msec : tz ? tz : asn1t->length; |
1829
|
0 |
0 |
for(i=0;i
|
1830
|
0 |
0 |
if (p[i]<'0' || p[i]>'9') return 0; |
|
0 |
0 |
if (p[i]<'0' || p[i]>'9') return 0; |
1835
|
0 |
0 |
if (asn1t->type == V_ASN1_UTCTIME) { /* YY - two digit year */ |
1837
|
0 |
0 |
if (t.tm_year < 70) t.tm_year += 100; |
1852
|
0 |
0 |
if (tz) { |
1854
|
0 |
0 |
if (p[tz] == 'Z') { |
1855
|
0 |
0 |
if (asn1t->length>tz+1 ) return 0; |
1856
|
0 |
0 |
} else if (asn1t->length
|
|
0 |
0 |
} else if (asn1t->length
|
|
0 |
0 |
} else if (asn1t->length
|
1859
|
0 |
0 |
if (asn1t->length>tz+5 ) return 0; |
1860
|
0 |
0 |
for(i=tz+1;i
|
1861
|
0 |
0 |
if (p[i]<'0' || p[i]>'9') return 0; |
|
0 |
0 |
if (p[i]<'0' || p[i]>'9') return 0; |
1865
|
0 |
0 |
if (p[tz]=='+') adj*= -1; /* +0500: subtract 5 hours to get UTC */ |
1870
|
0 |
0 |
if (result == -1) return 0; /* broken time */ |
1872
|
0 |
0 |
if (gmtoff && *gmtoff == -1) { |
|
0 |
0 |
if (gmtoff && *gmtoff == -1) { |
1886
|
0 |
0 |
if (chain) { |
1887
|
0 |
0 |
for(i=0;i
|
1888
|
0 |
0 |
if ( X509_check_issued(sk_X509_value(chain,i),cert) == X509_V_OK ) { |
1895
|
0 |
0 |
if ( !issuer && store ) { |
|
0 |
0 |
if ( !issuer && store ) { |
1897
|
0 |
0 |
if (stx && X509_STORE_CTX_init(stx,store,cert,NULL)) { |
|
0 |
0 |
if (stx && X509_STORE_CTX_init(stx,store,cert,NULL)) { |
1899
|
0 |
0 |
if (ok<0) { |
1901
|
0 |
0 |
if(err) { |
1906
|
0 |
0 |
} else if (ok == 0 ) { |
1912
|
0 |
0 |
if (stx) X509_STORE_CTX_free(stx); |
1921
|
8 |
0 |
: &PL_sv_undef; |
2154
|
7 |
0 |
RETVAL = SSL_CTX_load_verify_locations (ctx, |
|
7 |
0 |
RETVAL = SSL_CTX_load_verify_locations (ctx, |
2155
|
7 |
0 |
CAfile?(*CAfile?CAfile:NULL):NULL, |
2156
|
0 |
7 |
CApath?(*CApath?CApath:NULL):NULL |
2175
|
1 |
0 |
if (callback==NULL || !SvOK(callback) || !SvTRUE(callback)) { |
|
0 |
1 |
if (callback==NULL || !SvOK(callback) || !SvTRUE(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback) || !SvTRUE(callback)) { |
|
0 |
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)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback) || !SvTRUE(callback)) { |
|
0 |
1 |
if (callback==NULL || !SvOK(callback) || !SvTRUE(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback) || !SvTRUE(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback) || !SvTRUE(callback)) { |
|
0 |
1 |
if (callback==NULL || !SvOK(callback) || !SvTRUE(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback) || !SvTRUE(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback) || !SvTRUE(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback) || !SvTRUE(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback) || !SvTRUE(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback) || !SvTRUE(callback)) { |
|
0 |
1 |
if (callback==NULL || !SvOK(callback) || !SvTRUE(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback) || !SvTRUE(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback) || !SvTRUE(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback) || !SvTRUE(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback) || !SvTRUE(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback) || !SvTRUE(callback)) { |
|
0 |
1 |
if (callback==NULL || !SvOK(callback) || !SvTRUE(callback)) { |
2222
|
6 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
6 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
2236
|
6 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
6 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
2347
|
18 |
288 |
if (got <= 0 && SSL_ERROR_ZERO_RETURN != SSL_get_error(s, got)) |
|
6 |
12 |
if (got <= 0 && SSL_ERROR_ZERO_RETURN != SSL_get_error(s, got)) |
2354
|
306 |
0 |
if (GIMME_V==G_ARRAY) { |
|
286 |
20 |
if (GIMME_V==G_ARRAY) { |
2355
|
0 |
286 |
EXTEND(SP, 2); |
2356
|
281 |
5 |
PUSHs(sv_2mortal(succeeded ? newSVpvn(buf, got) : newSV(0))); |
2361
|
0 |
20 |
EXTEND(SP, 1); |
2362
|
19 |
1 |
PUSHs(sv_2mortal(succeeded ? newSVpvn(buf, got) : newSV(0))); |
2379
|
2 |
3 |
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)) |
2386
|
5 |
0 |
if (GIMME_V==G_ARRAY) { |
|
2 |
3 |
if (GIMME_V==G_ARRAY) { |
2387
|
0 |
2 |
EXTEND(SP, 2); |
2388
|
1 |
1 |
PUSHs(sv_2mortal(succeeded ? newSVpvn(buf, got) : newSV(0))); |
2393
|
0 |
3 |
EXTEND(SP, 1); |
2394
|
2 |
1 |
PUSHs(sv_2mortal(succeeded ? newSVpvn(buf, got) : newSV(0))); |
2503
|
0 |
22 |
if (len < 0) { |
2656
|
2 |
2 |
if( sk == NULL ) { |
2659
|
194 |
2 |
for (i=0; i
|
2661
|
0 |
194 |
XPUSHs(sv_2mortal(newSViv(PTR2IV(c)))); |
2687
|
7 |
0 |
if(SSL_get_shared_ciphers(s, buf, sizeof(buf))) |
2703
|
0 |
0 |
if( chain == NULL ) { |
2706
|
0 |
0 |
for (i=0; i
|
2708
|
0 |
0 |
XPUSHs(sv_2mortal(newSViv(PTR2IV(x)))); |
2717
|
7 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
7 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
2780
|
0 |
3 |
if (!(len = i2d_SSL_SESSION(sess,NULL))) croak("invalid SSL_SESSION"); |
2782
|
0 |
3 |
if (!pc) croak("out of memory"); |
2785
|
0 |
3 |
XPUSHs(sv_2mortal(newSVpv((char*)pc,len))); |
2794
|
7 |
0 |
if (SvPOK(pv)) { |
2797
|
7 |
0 |
p = (unsigned char*)SvPV(pv,len); |
3069
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
3219
|
43 |
1 |
if (!LIB_initialized) { |
3317
|
0 |
0 |
RAND_add((const void *)SvPV(buf, len), num, entropy); |
3332
|
0 |
3 |
if (!RAND_file_name(buf, num)) { |
3371
|
0 |
0 |
RETVAL = X509_check_host(cert, name, 0, flags, (items == 4) ? &c_peername : NULL); |
3372
|
0 |
0 |
if (items == 4) |
3377
|
0 |
0 |
if (c_peername) |
3393
|
0 |
0 |
c_address = (unsigned char *)SvPV(address, addresslen); |
3500
|
17 |
0 |
if ((buf = X509_NAME_oneline(name, NULL, 0))) { |
3517
|
13 |
0 |
if (bp) { |
3518
|
13 |
0 |
if (X509_NAME_print_ex(bp, name, ident, flags)) { |
3521
|
13 |
0 |
if (buf) { |
3523
|
13 |
0 |
if (i>=0 && i<=n) { |
|
13 |
0 |
if (i>=0 && i<=n) { |
3525
|
0 |
13 |
if (utf8_decode) sv_utf8_decode(ST(0)); |
3544
|
1 |
0 |
if (length>=0) { |
3546
|
1 |
0 |
if (X509_NAME_get_text_by_NID(name, nid, buf, length + 1)>=0) |
3672
|
1 |
0 |
if (crl && crl_number) |
|
1 |
0 |
if (crl && crl_number) |
3673
|
1 |
0 |
if (X509_CRL_add1_ext_i2d(crl, NID_crl_number, crl_number, 0, 0)) RETVAL = 1; |
3684
|
1 |
0 |
if (!RETVAL || i==-1) XSRETURN_UNDEF; |
|
0 |
1 |
if (!RETVAL || i==-1) XSRETURN_UNDEF; |
3704
|
2 |
0 |
if (rev) { |
3705
|
2 |
0 |
if (BN_hex2bn(&bn, serial_hex)) { |
3707
|
2 |
0 |
if (sn) { |
3715
|
0 |
2 |
if (!rv) XSRETURN_IV(0); |
3717
|
0 |
2 |
if (!rev_time) XSRETURN_IV(0); |
3718
|
0 |
2 |
if (!X509_REVOKED_set_revocationDate(rev, rev_time)) XSRETURN_IV(0); |
3720
|
2 |
0 |
if(reason_code) { |
3723
|
2 |
0 |
if (rsn) { |
3724
|
2 |
0 |
if (ASN1_ENUMERATED_set(rsn, reason_code)) |
3725
|
2 |
0 |
if (X509_REVOKED_add1_ext_i2d(rev, NID_crl_reason, rsn, 0, 0)) |
3729
|
0 |
2 |
if (!rv) XSRETURN_IV(0); |
3732
|
2 |
0 |
if(comp_time) { |
3736
|
0 |
2 |
if(!X509_CRL_add0_revoked(crl, rev)) XSRETURN_IV(0); |
3809
|
1 |
1 |
for (i=0; i
|
3812
|
0 |
1 |
XPUSHs(sv_2mortal(newSViv(PTR2IV(s)))); |
3827
|
1 |
0 |
if (items>1) { |
3830
|
6 |
1 |
while(i+1
|
3831
|
6 |
0 |
nid = SvIV(ST(i)); |
3832
|
6 |
0 |
data = SvPV_nolen(ST(i+1)); |
3835
|
6 |
0 |
if (ex) |
3859
|
1 |
0 |
if (items>1) { |
3861
|
6 |
1 |
while(i+1
|
3862
|
6 |
0 |
nid = SvIV(ST(i)); |
3863
|
6 |
0 |
data = SvPV_nolen(ST(i+1)); |
3867
|
6 |
0 |
if (ex) { |
3894
|
1 |
0 |
if (items>1) { |
3896
|
1 |
1 |
while(i+1
|
3897
|
1 |
0 |
nid = SvIV(ST(i)); |
3898
|
1 |
0 |
data = SvPV_nolen(ST(i+1)); |
3902
|
1 |
0 |
if (ex) { |
3929
|
1 |
0 |
if (!x509 || !x509_req) XSRETURN_IV(0); |
|
0 |
1 |
if (!x509 || !x509_req) XSRETURN_IV(0); |
3931
|
6 |
1 |
for(i = 0; i < sk_X509_EXTENSION_num(exts); i++) { |
3936
|
0 |
6 |
if (idx != -1) { |
3937
|
0 |
0 |
if (override) continue; /* don't override existing extension */ |
3944
|
0 |
0 |
} while (idx != -1); |
3946
|
0 |
6 |
if (!X509_add_ext(x509, ext, -1)) ret = 0; |
4000
|
9 |
0 |
if (!k && !strcmp(type,"md5")) { |
|
4 |
5 |
if (!k && !strcmp(type,"md5")) { |
4004
|
5 |
4 |
if (!k && !strcmp(type,"sha1")) { |
|
4 |
1 |
if (!k && !strcmp(type,"sha1")) { |
4009
|
1 |
8 |
if (!k && !strcmp(type,"sha256")) { |
|
0 |
1 |
if (!k && !strcmp(type,"sha256")) { |
4014
|
1 |
8 |
if (!k && !strcmp(type,"ripemd160")) { |
|
0 |
1 |
if (!k && !strcmp(type,"ripemd160")) { |
4017
|
1 |
8 |
if (!k) /* Default digest */ |
4019
|
0 |
9 |
if ( digest_tp == NULL ) { |
4023
|
0 |
9 |
if (!X509_digest(cert, digest_tp, digest, &dsz)) { |
4028
|
164 |
9 |
for(k=0; k
|
4044
|
3 |
2 |
if ( (i = X509_get_ext_by_NID(cert, NID_subject_alt_name, -1)) >= 0 |
4045
|
3 |
0 |
&& (subjAltNameExt = X509_get_ext(cert, i)) |
4046
|
3 |
0 |
&& (subjAltNameDNs = X509V3_EXT_d2i(subjAltNameExt))) |
4050
|
16 |
3 |
for (j = 0; j < num_gnames; j++) |
4057
|
0 |
2 |
EXTEND(SP, 2); |
4066
|
0 |
8 |
EXTEND(SP, 2); |
4075
|
0 |
0 |
EXTEND(SP, 2); |
4086
|
2 |
0 |
if (len < 0 || len > (int)((sizeof(buf) - 1))) |
|
2 |
0 |
if (len < 0 || len > (int)((sizeof(buf) - 1))) |
4088
|
0 |
2 |
EXTEND(SP, 2); |
4096
|
0 |
4 |
EXTEND(SP, 2); |
4121
|
1 |
3 |
if (points) |
4122
|
2 |
1 |
for (i = 0; i < sk_DIST_POINT_num(points); i++) { |
4124
|
0 |
2 |
if (!p->distpoint) |
4126
|
2 |
0 |
if (p->distpoint->type == 0) { |
4129
|
2 |
2 |
for (j = 0; j < sk_GENERAL_NAME_num(gnames); j++) { |
4132
|
2 |
0 |
if (gn->type == GEN_URI) { |
4133
|
0 |
2 |
XPUSHs(sv_2mortal(newSVpv((char*)ASN1_STRING_data(gn->d.ia5),ASN1_STRING_length(gn->d.ia5)))); |
4168
|
0 |
0 |
if (!info) XSRETURN_UNDEF; |
4170
|
0 |
0 |
for (i = 0; i < sk_ACCESS_DESCRIPTION_num(info); i++) { |
4172
|
0 |
0 |
if (OBJ_obj2nid(ad->method) == NID_ad_OCSP |
4173
|
0 |
0 |
&& ad->location->type == GEN_URI) { |
4174
|
0 |
0 |
XPUSHs(sv_2mortal(newSVpv( |
4178
|
0 |
0 |
if (GIMME == G_SCALAR) break; /* get only first */ |
|
0 |
0 |
if (GIMME == G_SCALAR) break; /* get only first */ |
4194
|
76 |
16 |
for(i = 0; i < sk_ASN1_OBJECT_num(extusage); i++) { |
4198
|
19 |
57 |
if(format==0) |
4199
|
0 |
19 |
XPUSHs(sv_2mortal(newSVpv(buffer,0))); /* format 0: oid */ |
4200
|
19 |
38 |
else if(format==1 && nid>0) |
|
16 |
3 |
else if(format==1 && nid>0) |
4201
|
0 |
16 |
XPUSHs(sv_2mortal(newSViv(nid))); /* format 1: nid */ |
4202
|
19 |
22 |
else if(format==2 && nid>0) |
|
16 |
3 |
else if(format==2 && nid>0) |
4203
|
0 |
16 |
XPUSHs(sv_2mortal(newSVpv(OBJ_nid2sn(nid),0))); /* format 2: shortname */ |
4204
|
19 |
6 |
else if(format==3 && nid>0) |
|
16 |
3 |
else if(format==3 && nid>0) |
4205
|
0 |
16 |
XPUSHs(sv_2mortal(newSVpv(OBJ_nid2ln(nid),0))); /* format 3: longname */ |
4217
|
4 |
0 |
if (u) { |
4218
|
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))); |
4219
|
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))); |
4220
|
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))); |
4221
|
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))); |
4222
|
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))); |
4223
|
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))); |
4224
|
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))); |
4225
|
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))); |
4226
|
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))); |
4236
|
0 |
4 |
if (u) { |
4237
|
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))); |
4238
|
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))); |
4239
|
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))); |
4240
|
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))); |
4241
|
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))); |
4242
|
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))); |
4243
|
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))); |
4244
|
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))); |
4297
|
21 |
0 |
if (bp) { |
4298
|
21 |
0 |
if(X509V3_EXT_print(bp,ext,flags,indent)) { |
4301
|
21 |
0 |
if (buf) { |
4303
|
21 |
0 |
if (i>=0 && i<=n) { |
|
21 |
0 |
if (i>=0 && i<=n) { |
4305
|
0 |
21 |
if (utf8_decode) sv_utf8_decode(ST(0)); |
4466
|
0 |
3 |
if (!BN_hex2bn(&bn, str)) XSRETURN_IV(0); |
4467
|
0 |
3 |
if (!BN_to_ASN1_INTEGER(bn, i)) rv = 0; |
4480
|
0 |
1 |
if (!BN_dec2bn(&bn, str)) XSRETURN_IV(0); |
4481
|
0 |
1 |
if (!BN_to_ASN1_INTEGER(bn, i)) rv = 0; |
4493
|
0 |
6 |
if (!bn) XSRETURN_UNDEF; |
4497
|
0 |
6 |
if (!result) XSRETURN_UNDEF; |
4498
|
0 |
6 |
XPUSHs(sv_2mortal(newSVpv((const char*)result, strlen(result)))); |
4509
|
0 |
5 |
if (!bn) XSRETURN_UNDEF; |
4513
|
0 |
5 |
if (!result) XSRETURN_UNDEF; |
4514
|
0 |
5 |
XPUSHs(sv_2mortal(newSVpv((const char*)result, strlen(result)))); |
4525
|
43 |
44 |
if (utf8_decode) sv_utf8_decode(u8); |
4526
|
0 |
87 |
XPUSHs(sv_2mortal(u8)); |
4572
|
4 |
0 |
if (tm) { |
4574
|
4 |
0 |
if (bp) { |
4578
|
4 |
0 |
if (i>0) |
4597
|
14 |
0 |
if (tmp) { |
4598
|
14 |
0 |
if (ASN1_GENERALIZEDTIME_check(tmp)) { |
4599
|
14 |
0 |
if (strlen((char*)tmp->data)>=14 && strlen((char*)tmp->data)<200) { |
|
14 |
0 |
if (strlen((char*)tmp->data)>=14 && strlen((char*)tmp->data)<200) { |
4607
|
14 |
0 |
if (strlen((char*)tmp->data)>14) strcat(buf+19,(char*)tmp->data+14); |
4624
|
1 |
10 |
if (!tm) XSRETURN_UNDEF; |
4626
|
0 |
10 |
if (strlen(str) < 19) XSRETURN_UNDEF; |
4627
|
40 |
0 |
for (i=0; i<4; i++) if ((str[i] > '9') || (str[i] < '0')) XSRETURN_UNDEF; |
|
0 |
40 |
for (i=0; i<4; i++) if ((str[i] > '9') || (str[i] < '0')) XSRETURN_UNDEF; |
|
40 |
10 |
for (i=0; i<4; i++) if ((str[i] > '9') || (str[i] < '0')) XSRETURN_UNDEF; |
4628
|
20 |
0 |
for (i=5; i<7; i++) if ((str[i] > '9') || (str[i] < '0')) XSRETURN_UNDEF; |
|
0 |
20 |
for (i=5; i<7; i++) if ((str[i] > '9') || (str[i] < '0')) XSRETURN_UNDEF; |
|
20 |
10 |
for (i=5; i<7; i++) if ((str[i] > '9') || (str[i] < '0')) XSRETURN_UNDEF; |
4629
|
20 |
0 |
for (i=8; i<10; i++) if ((str[i] > '9') || (str[i] < '0')) XSRETURN_UNDEF; |
|
0 |
20 |
for (i=8; i<10; i++) if ((str[i] > '9') || (str[i] < '0')) XSRETURN_UNDEF; |
|
20 |
10 |
for (i=8; i<10; i++) if ((str[i] > '9') || (str[i] < '0')) XSRETURN_UNDEF; |
4630
|
20 |
0 |
for (i=11; i<13; i++) if ((str[i] > '9') || (str[i] < '0')) XSRETURN_UNDEF; |
|
0 |
20 |
for (i=11; i<13; i++) if ((str[i] > '9') || (str[i] < '0')) XSRETURN_UNDEF; |
|
20 |
10 |
for (i=11; i<13; i++) if ((str[i] > '9') || (str[i] < '0')) XSRETURN_UNDEF; |
4631
|
20 |
0 |
for (i=14; i<16; i++) if ((str[i] > '9') || (str[i] < '0')) XSRETURN_UNDEF; |
|
0 |
20 |
for (i=14; i<16; i++) if ((str[i] > '9') || (str[i] < '0')) XSRETURN_UNDEF; |
|
20 |
10 |
for (i=14; i<16; i++) if ((str[i] > '9') || (str[i] < '0')) XSRETURN_UNDEF; |
4632
|
20 |
0 |
for (i=17; i<19; i++) if ((str[i] > '9') || (str[i] < '0')) XSRETURN_UNDEF; |
|
0 |
20 |
for (i=17; i<19; i++) if ((str[i] > '9') || (str[i] < '0')) XSRETURN_UNDEF; |
|
20 |
10 |
for (i=17; i<19; i++) if ((str[i] > '9') || (str[i] < '0')) XSRETURN_UNDEF; |
4640
|
10 |
0 |
if (strlen(str)>19 && strlen(str)<200) strcat(buf,str+19); |
|
10 |
0 |
if (strlen(str)>19 && strlen(str)<200) strcat(buf,str+19); |
4648
|
10 |
0 |
if (!ASN1_TIME_check(&t)) { |
4650
|
0 |
10 |
if (!ASN1_TIME_check(&t)) XSRETURN_UNDEF; |
4654
|
0 |
10 |
if (!ASN1_STRING_set(tm,t.data,t.length)) XSRETURN_UNDEF; |
4701
|
3 |
0 |
if (bp && x509) { |
|
3 |
0 |
if (bp && x509) { |
4705
|
3 |
0 |
if (buf) { |
4707
|
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); |
4723
|
1 |
0 |
if (bp && x509_req) { |
|
1 |
0 |
if (bp && x509_req) { |
4727
|
1 |
0 |
if (buf) { |
4729
|
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); |
4745
|
1 |
0 |
if (bp && x509_crl) { |
|
1 |
0 |
if (bp && x509_crl) { |
4749
|
1 |
0 |
if (buf) { |
4751
|
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); |
4772
|
6 |
0 |
if (bp && pk) { |
|
6 |
0 |
if (bp && pk) { |
4773
|
2 |
4 |
if (passwd) passwd_len = strlen(passwd); |
4774
|
2 |
4 |
if (passwd_len>0) { |
4776
|
1 |
1 |
if (!enc_alg) |
4787
|
6 |
0 |
if (buf) { |
4789
|
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); |
4807
|
0 |
0 |
if ((fp = fopen (file, "rb"))) { |
4813
|
0 |
0 |
if ((p12 = d2i_PKCS12_fp(fp, NULL))) { |
4814
|
0 |
0 |
if (PKCS12_parse(p12, password, &private_key, &certificate, NULL)) { |
4815
|
0 |
0 |
if (private_key) { |
4816
|
0 |
0 |
if (SSL_CTX_use_PrivateKey(ctx, private_key)) RETVAL = 1; |
4819
|
0 |
0 |
if (certificate) { |
4820
|
0 |
0 |
if (SSL_CTX_use_certificate(ctx, certificate)) RETVAL = 1; |
4826
|
0 |
0 |
if (!RETVAL) ERR_print_errors_fp(stderr); |
4846
|
4 |
0 |
if ((fp = fopen (file, "rb"))) { |
4852
|
4 |
0 |
if ((p12 = d2i_PKCS12_fp(fp, NULL))) { |
4853
|
3 |
1 |
if(load_chain) |
4857
|
4 |
0 |
if (result) { |
4858
|
4 |
0 |
if (private_key) |
4859
|
0 |
4 |
XPUSHs(sv_2mortal(newSViv(PTR2IV(private_key)))); |
4861
|
0 |
0 |
XPUSHs(sv_2mortal(newSVpv(NULL,0))); /* undef */ |
4862
|
4 |
0 |
if (certificate) |
4863
|
0 |
4 |
XPUSHs(sv_2mortal(newSViv(PTR2IV(certificate)))); |
4865
|
0 |
0 |
XPUSHs(sv_2mortal(newSVpv(NULL,0))); /* undef */ |
4866
|
1 |
3 |
if (cachain) { |
4867
|
2 |
1 |
for (i=0; i
|
4869
|
0 |
2 |
XPUSHs(sv_2mortal(newSViv(PTR2IV(x)))); |
4909
|
9 |
0 |
if (MD4(data,len,md)) { |
4927
|
9 |
0 |
if (MD5(data,len,md)) { |
4945
|
9 |
0 |
if (RIPEMD160(data,len,md)) { |
4963
|
8 |
0 |
if (SHA1(data,len,md)) { |
4980
|
8 |
0 |
if (SHA256(data,len,md)) { |
4997
|
8 |
0 |
if (SHA512(data,len,md)) { |
5184
|
55 |
83 |
if ((got = BIO_read(s, buf, max)) >= 0) |
5261
|
0 |
194 |
if(description == NULL) { |
5264
|
0 |
194 |
XPUSHs(sv_2mortal(newSVpv(description, 0))); |
5275
|
0 |
390 |
if (items > 2) croak("SSL_CIPHER_get_bits: Need to call with one or two parameters"); |
5276
|
194 |
196 |
if (items > 1) sv_setsv(ST(1), sv_2mortal(newSViv(alg_bits))); |
5343
|
1 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
1 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
5372
|
4 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
4 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
5389
|
2 |
0 |
if (data==NULL || !SvOK(data)) { |
|
0 |
2 |
if (data==NULL || !SvOK(data)) { |
|
0 |
0 |
if (data==NULL || !SvOK(data)) { |
|
0 |
0 |
if (data==NULL || !SvOK(data)) { |
5505
|
3 |
1 |
if (count > finished_len) |
5524
|
3 |
1 |
if (count > finished_len) |
5642
|
1 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
1 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
5658
|
148 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
148 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
5674
|
2 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
1 |
1 |
if (callback==NULL || !SvOK(callback)) { |
|
1 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
1 |
0 |
if (callback==NULL || !SvOK(callback)) { |
5690
|
2 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
1 |
1 |
if (callback==NULL || !SvOK(callback)) { |
|
1 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
1 |
0 |
if (callback==NULL || !SvOK(callback)) { |
6005
|
0 |
1 |
if (SvIOK(curve)) { |
6006
|
0 |
0 |
nid = SvIV(curve); |
6008
|
1 |
0 |
nid = OBJ_sn2nid(SvPV_nolen(curve)); |
6010
|
0 |
1 |
if (!nid) nid = EC_curve_nist2nid(SvPV_nolen(curve)); |
|
0 |
0 |
if (!nid) nid = EC_curve_nist2nid(SvPV_nolen(curve)); |
6012
|
0 |
1 |
if (!nid) croak("unknown curve %s",SvPV_nolen(curve)); |
|
0 |
0 |
if (!nid) croak("unknown curve %s",SvPV_nolen(curve)); |
6016
|
0 |
1 |
if (!group) croak("unknown curve nid=%d",nid); |
6020
|
1 |
0 |
if ( eckey |
6021
|
1 |
0 |
&& EC_KEY_set_group(eckey, group) |
6022
|
1 |
0 |
&& EC_KEY_generate_key(eckey)) { |
6025
|
0 |
0 |
if (eckey) EC_KEY_free(eckey); |
6027
|
1 |
0 |
if (group) EC_GROUP_free(group); |
6223
|
0 |
8 |
if(!e) |
6229
|
0 |
8 |
if(!ret) { |
6253
|
7 |
0 |
if (rc == -1 || ret == NULL) { |
|
0 |
7 |
if (rc == -1 || ret == NULL) { |
6254
|
0 |
0 |
if (ret) RSA_free(ret); |
6289
|
0 |
1 |
XPUSHs(bn2sv(rsa->n)); |
6290
|
0 |
1 |
XPUSHs(bn2sv(rsa->e)); |
6291
|
0 |
1 |
XPUSHs(bn2sv(rsa->d)); |
6292
|
0 |
1 |
XPUSHs(bn2sv(rsa->p)); |
6293
|
0 |
1 |
XPUSHs(bn2sv(rsa->q)); |
6294
|
0 |
1 |
XPUSHs(bn2sv(rsa->dmp1)); |
6295
|
0 |
1 |
XPUSHs(bn2sv(rsa->dmq1)); |
6296
|
0 |
1 |
XPUSHs(bn2sv(rsa->iqmp)); |
6423
|
6 |
2 |
if (SvOK(perl_cb)) { |
|
6 |
0 |
if (SvOK(perl_cb)) { |
|
0 |
6 |
if (SvOK(perl_cb)) { |
6429
|
6 |
0 |
else if (!SvOK(perl_cb) && SvOK(perl_data) && SvPOK(perl_data)) { |
|
6 |
0 |
else if (!SvOK(perl_cb) && SvOK(perl_data) && SvPOK(perl_data)) { |
|
6 |
0 |
else if (!SvOK(perl_cb) && SvOK(perl_data) && SvPOK(perl_data)) { |
|
4 |
2 |
else if (!SvOK(perl_cb) && SvOK(perl_data) && SvPOK(perl_data)) { |
|
4 |
0 |
else if (!SvOK(perl_cb) && SvOK(perl_data) && SvPOK(perl_data)) { |
|
0 |
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)) { |
6433
|
4 |
0 |
else if (!SvOK(perl_cb) && !SvOK(perl_data)) { |
|
4 |
0 |
else if (!SvOK(perl_cb) && !SvOK(perl_data)) { |
|
4 |
0 |
else if (!SvOK(perl_cb) && !SvOK(perl_data)) { |
|
4 |
0 |
else if (!SvOK(perl_cb) && !SvOK(perl_data)) { |
|
4 |
0 |
else if (!SvOK(perl_cb) && !SvOK(perl_data)) { |
|
4 |
0 |
else if (!SvOK(perl_cb) && !SvOK(perl_data)) { |
6574
|
1 |
0 |
if (s == NULL || |
|
1 |
0 |
if (s == NULL || |
6575
|
1 |
0 |
s->enc_read_ctx == NULL || |
6576
|
0 |
1 |
s->enc_read_ctx->cipher == NULL || |
6589
|
1 |
0 |
if (s->s3) |
6602
|
1 |
0 |
: -1; |
6635
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
6655
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
6669
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
6688
|
3 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
3 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
6782
|
57 |
0 |
if (EVP_DigestFinal(ctx,md,&md_size)) |
6794
|
9 |
0 |
if (EVP_DigestFinal_ex(ctx,md,&md_size)) |
6810
|
48 |
0 |
if (EVP_Digest(data,len,md,&md_size,type,impl)) |
7132
|
4 |
0 |
if (X509_pubkey_digest(data,type,md,&md_size)) |
7147
|
4 |
0 |
if (X509_digest(data,type,md,&md_size)) |
7159
|
1 |
0 |
if (X509_CRL_digest(data,type,md,&md_size)) |
7171
|
1 |
0 |
if (X509_REQ_digest(data,type,md,&md_size)) |
7183
|
0 |
0 |
if (X509_NAME_digest(data,type,md,&md_size)) |
7232
|
0 |
1 |
if (!(pkey = X509_get_X509_PUBKEY(x))) croak("invalid certificate"); |
7233
|
0 |
1 |
if (!(len = i2d_X509_PUBKEY(pkey, NULL))) croak("invalid certificate public key"); |
7235
|
0 |
1 |
if (!pc) croak("out of memory"); |
7238
|
0 |
1 |
if (pi-pc != len) croak("invalid encoded length"); |
7239
|
0 |
1 |
XPUSHs(sv_2mortal(newSVpv((char*)pc,len))); |
7251
|
1 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
1 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
7257
|
1 |
0 |
else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVAV)) { |
|
1 |
0 |
else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVAV)) { |
7264
|
0 |
0 |
else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVCV)) { |
|
0 |
0 |
else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVCV)) { |
7283
|
1 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
1 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
7289
|
1 |
0 |
else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVAV)) { |
|
1 |
0 |
else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVAV)) { |
7296
|
0 |
0 |
else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVCV)) { |
|
0 |
0 |
else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVCV)) { |
7316
|
0 |
2 |
XPUSHs(sv_2mortal(newSVpv((char *)data, len))); |
7322
|
0 |
1 |
XPUSHs(sv_2mortal(newSVsv(cb_data_advanced_get((void*)s, "next_proto_select_cb!!last_status")))); |
7356
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
7360
|
0 |
0 |
} else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVCV)) { |
|
0 |
0 |
} else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVCV)) { |
7377
|
1 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
1 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
7381
|
1 |
0 |
} else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVCV)) { |
|
1 |
0 |
} else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVCV)) { |
7401
|
1 |
0 |
if (ticketlen > 0) { |
7403
|
0 |
1 |
if (!p) |
7419
|
0 |
0 |
if (SvPOK(pv)) { |
7422
|
0 |
0 |
p = (unsigned char*)SvPV(pv,len); |
7434
|
0 |
0 |
if (!(len = i2d_OCSP_RESPONSE(r,NULL))) croak("invalid OCSP response"); |
7436
|
0 |
0 |
if (!pc) croak("out of memory"); |
7439
|
0 |
0 |
XPUSHs(sv_2mortal(newSVpv((char*)pc,len))); |
7452
|
0 |
0 |
if (SvPOK(pv)) { |
7455
|
0 |
0 |
p = (unsigned char*)SvPV(pv,len); |
7467
|
0 |
0 |
if (!(len = i2d_OCSP_REQUEST(r,NULL))) croak("invalid OCSP request"); |
7469
|
0 |
0 |
if (!pc) croak("out of memory"); |
7472
|
0 |
0 |
XPUSHs(sv_2mortal(newSVpv((char*)pc,len))); |
7500
|
0 |
0 |
if (!ssl) croak("not a SSL object"); |
7502
|
0 |
0 |
if (!ctx) croak("invalid SSL object - no context"); |
7506
|
0 |
0 |
for(i=0;i
|
7507
|
0 |
0 |
cert = INT2PTR(X509*,SvIV(ST(i+1))); |
7508
|
0 |
0 |
if (X509_check_issued(cert,cert) == X509_V_OK) |
7510
|
0 |
0 |
if (!(issuer = find_issuer(cert,store,chain))) |
7514
|
0 |
0 |
if (!id) |
7518
|
0 |
0 |
if (!(len = i2d_OCSP_CERTID(id,&pi))) |
7520
|
0 |
0 |
XPUSHs(sv_2mortal(newSVpvn((char *)pi, len))); |
7535
|
0 |
0 |
if (!req) croak("out of memory"); |
7538
|
0 |
0 |
for(i=0;i
|
7540
|
0 |
0 |
const unsigned char *p = (unsigned char*)SvPV(ST(i),len); |
7542
|
0 |
0 |
if (!id) { |
7567
|
0 |
0 |
if (!ssl) croak("not a SSL object"); |
7569
|
0 |
0 |
if (!ctx) croak("invalid SSL object - no context"); |
7572
|
0 |
0 |
if (!bsr) croak("invalid OCSP response"); |
7576
|
0 |
0 |
if (svreq && SvOK(svreq) && |
|
0 |
0 |
if (svreq && SvOK(svreq) && |
|
0 |
0 |
if (svreq && SvOK(svreq) && |
|
0 |
0 |
if (svreq && SvOK(svreq) && |
|
0 |
0 |
if (svreq && SvOK(svreq) && |
7577
|
0 |
0 |
(req = INT2PTR(OCSP_REQUEST*,SvIV(svreq)))) { |
7579
|
0 |
0 |
if ( i <= 0 ) { |
7580
|
0 |
0 |
if (i == -1) { |
7590
|
0 |
0 |
if ((store = SSL_CTX_get_cert_store(ctx))) { |
7595
|
0 |
0 |
for(i=0;i
|
7600
|
0 |
0 |
if (chain && !RETVAL) { |
|
0 |
0 |
if (chain && !RETVAL) { |
7608
|
0 |
0 |
if (last && (issuer = find_issuer(last,store,chain))) { |
|
0 |
0 |
if (last && (issuer = find_issuer(last,store,chain))) { |
7632
|
0 |
0 |
if (!bsr) croak("invalid OCSP response"); |
7634
|
0 |
0 |
want_array = (GIMME == G_ARRAY); |
7638
|
0 |
0 |
for(i=0; i < (getall ? sksn : items-1); i++) { |
|
0 |
0 |
for(i=0; i < (getall ? sksn : items-1); i++) { |
7646
|
0 |
0 |
if(getall) { |
7653
|
0 |
0 |
if (!SvOK(idsv)) croak("undefined certid in arguments"); |
|
0 |
0 |
if (!SvOK(idsv)) croak("undefined certid in arguments"); |
|
0 |
0 |
if (!SvOK(idsv)) croak("undefined certid in arguments"); |
7654
|
0 |
0 |
p = (unsigned char*)SvPV(idsv,len); |
7655
|
0 |
0 |
if (!(certid = d2i_OCSP_CERTID(NULL,&p,len))) { |
7660
|
0 |
0 |
if (first >= 0) |
7664
|
0 |
0 |
if (sir) |
7670
|
0 |
0 |
if (status == V_OCSP_CERTSTATUS_REVOKED) |
7675
|
0 |
0 |
if (status == V_OCSP_CERTSTATUS_REVOKED) { |
7677
|
0 |
0 |
} else if (status != V_OCSP_CERTSTATUS_GOOD) { |
7680
|
0 |
0 |
else if (!OCSP_check_validity(thisupdate, nextupdate, 0, -1)) { |
7688
|
0 |
0 |
if (want_array) { |
7690
|
0 |
0 |
if (!idsv) { |
7698
|
0 |
0 |
if(!len) continue; |
7700
|
0 |
0 |
if (!pc) croak("out of memory"); |
7714
|
0 |
0 |
av_push(idav, error ? newSVpv(error,0) : newSV(0)); |
7715
|
0 |
0 |
if (sir) { |
7720
|
0 |
0 |
if (nextupdate) hv_store(details,"nextUpdate",10, |
7722
|
0 |
0 |
if (thisupdate) hv_store(details,"thisUpdate",10, |
7724
|
0 |
0 |
if (status == V_OCSP_CERTSTATUS_REVOKED) { |
7735
|
0 |
0 |
XPUSHs(sv_2mortal(newRV_noinc((SV*)idav))); |
7736
|
0 |
0 |
} else if (!error) { |
7739
|
0 |
0 |
if (!nextupd || nextupd>nu) nextupd = nu; |
|
0 |
0 |
if (!nextupd || nextupd>nu) nextupd = nu; |
7742
|
0 |
0 |
if (certid) OCSP_CERTID_free(certid); |
7743
|
0 |
0 |
if (error && !want_array) { |
|
0 |
0 |
if (error && !want_array) { |
7749
|
0 |
0 |
if (!want_array) |
7750
|
0 |
0 |
XPUSHs(sv_2mortal(newSViv(nextupd))); |
7765
|
1 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
1 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
|
0 |
0 |
if (callback==NULL || !SvOK(callback)) { |
7771
|
1 |
0 |
else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVAV)) { |
|
1 |
0 |
else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVAV)) { |
7778
|
0 |
0 |
else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVCV)) { |
|
0 |
0 |
else if (SvROK(callback) && (SvTYPE(SvRV(callback)) == SVt_PVCV)) { |
7801
|
1 |
0 |
if (!SvROK(data) || (SvTYPE(SvRV(data)) != SVt_PVAV)) |
|
0 |
1 |
if (!SvROK(data) || (SvTYPE(SvRV(data)) != SVt_PVAV)) |
7805
|
0 |
1 |
if (!alpn_data) |
7825
|
0 |
0 |
if (!SvROK(data) || (SvTYPE(SvRV(data)) != SVt_PVAV)) |
|
0 |
0 |
if (!SvROK(data) || (SvTYPE(SvRV(data)) != SVt_PVAV)) |
7829
|
0 |
0 |
if (!alpn_data) |
7846
|
0 |
2 |
XPUSHs(sv_2mortal(newSVpv((char *)data, len))); |
7869
|
9 |
6 |
if (context != &PL_sv_undef) { |
7871
|
9 |
0 |
context_arg = SvPV( ST(3), contextlen); |
7874
|
15 |
0 |
PUSHs(sv_2mortal(ret>0 ? newSVpvn((const char *)out, outlen) : newSV(0))); |
7875
|
0 |
15 |
EXTEND(SP, 1); |