Branch Coverage

MatrixSSL3.xs
Criterion Covered Total %
branch 267 1066 25.0


line true false branch
142 17 233150 if (!matrixssl_initialized) {
146 0 17 if (rc != PS_SUCCESS)
201 120 119 for (; certInfo != NULL; certInfo=certInfo->next) {
210 120 0 if (certInfo->subject.country != NULL)
213 119 1 if (certInfo->subject.state != NULL)
216 1 119 if (certInfo->subject.locality != NULL)
219 120 0 if (certInfo->subject.organization != NULL)
222 0 120 if (certInfo->subject.orgUnit != NULL)
225 120 0 if (certInfo->subject.commonName != NULL)
230 119 1 if (certInfo->issuer.country != NULL)
233 118 2 if (certInfo->issuer.state != NULL)
236 0 120 if (certInfo->issuer.locality != NULL)
239 120 0 if (certInfo->issuer.organization != NULL)
242 1 119 if (certInfo->issuer.orgUnit != NULL)
245 120 0 if (certInfo->issuer.commonName != NULL)
250 120 0 if (certInfo->notBefore != NULL)
253 120 0 if (certInfo->notAfter != NULL)
270 0 119 PUSHMARK(SP);
271 0 119 XPUSHs(sv_2mortal(newRV_inc((SV *)certs)));
272 0 119 XPUSHs(sv_2mortal(newSViv(alert)));
279 0 119 if (res != 1)
282 119 0 if (SvTRUE(ERRSV)) {
119 0 if (SvTRUE(ERRSV)) {
119 0 if (SvTRUE(ERRSV)) {
0 119 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
119 0 if (SvTRUE(ERRSV)) {
0 119 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
119 0 if (SvTRUE(ERRSV)) {
119 0 if (SvTRUE(ERRSV)) {
119 0 if (SvTRUE(ERRSV)) {
119 0 if (SvTRUE(ERRSV)) {
119 0 if (SvTRUE(ERRSV)) {
109 10 if (SvTRUE(ERRSV)) {
109 0 if (SvTRUE(ERRSV)) {
0 109 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
10 109 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
283 10 0 warn("%s", SvPV_nolen(ERRSV));
10 0 warn("%s", SvPV_nolen(ERRSV));
10 0 warn("%s", SvPV_nolen(ERRSV));
0 0 warn("%s", SvPV_nolen(ERRSV));
288 109 0 res = POPi;
292 119 0 FREETMPS;
320 0 0 PUSHMARK(SP);
321 0 0 XPUSHs(sv_2mortal(newSViv(type)));
322 0 0 XPUSHs(sv_2mortal(newSVpvn((const char*) data, len)));
329 0 0 if (res != 1)
332 0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
333 0 0 warn("%s", SvPV_nolen(ERRSV));
0 0 warn("%s", SvPV_nolen(ERRSV));
0 0 warn("%s", SvPV_nolen(ERRSV));
0 0 warn("%s", SvPV_nolen(ERRSV));
338 0 0 res = POPi;
342 0 0 FREETMPS;
392 0 0 if (pssl->expectedName != NULL) {
393 0 0 for (i = 0; i < ss->SNI_entries_number; i++)
395 0 0 if ((regex_res = regexec(&(ss->SNI_entries[i]->regex_hostname), (const char *) pssl->expectedName, 0, NULL, 0)) == 0) {
414 0 0 if (i < ss->SNI_entries_number) {
419 0 0 if ((VHIndexCallback != NULL) && !ssl_data->cbSNI_done) {
0 0 if ((VHIndexCallback != NULL) && !ssl_data->cbSNI_done) {
426 0 0 PUSHMARK(SP);
427 0 0 XPUSHs(sv_2mortal(newSViv(ssl_id)));
428 0 0 XPUSHs(sv_2mortal(newSViv(i)));
429 0 0 XPUSHs(sv_2mortal(newSVpv(pssl->expectedName, strlen(pssl->expectedName))));
436 0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
437 0 0 warn("%s", SvPV_nolen(ERRSV));
0 0 warn("%s", SvPV_nolen(ERRSV));
0 0 warn("%s", SvPV_nolen(ERRSV));
0 0 warn("%s", SvPV_nolen(ERRSV));
444 0 0 FREETMPS;
462 0 0 if (alpn != NULL) {
466 0 0 for (i = 0; i < alpn->protoCount; i++) {
467 0 0 for (j = 0; j < protoCount; j++) {
471 0 0 if ((alpn->protoLen[i] == protoLen[j]) && !strncmp(alpn->proto[i], proto[j], protoLen[j])) {
0 0 if ((alpn->protoLen[i] == protoLen[j]) && !strncmp(alpn->proto[i], proto[j], protoLen[j])) {
481 0 0 if (res_cl != -1) break;
486 0 0 if ((ALPNCallback != NULL) && (res_sv != -1)) {
0 0 if ((ALPNCallback != NULL) && (res_sv != -1)) {
491 0 0 PUSHMARK(SP);
492 0 0 XPUSHs(sv_2mortal(newSViv(ssl_id)));
493 0 0 XPUSHs(sv_2mortal(newSVpv(alpn->proto[res_sv], alpn->protoLen[res_sv])));
500 0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
501 0 0 warn("%s", SvPV_nolen(ERRSV));
0 0 warn("%s", SvPV_nolen(ERRSV));
0 0 warn("%s", SvPV_nolen(ERRSV));
0 0 warn("%s", SvPV_nolen(ERRSV));
507 0 0 FREETMPS;
560 0 0 if (ssl_data->keys != NULL) {
569 0 0 if (hostnameLen > 254) hostnameLen = 254;
579 0 0 for (i = 0; i < ss->SNI_entries_number; i++)
581 0 0 if ((regex_res = regexec(&(ss->SNI_entries[i]->regex_hostname), (const char *) _hostname, 0, NULL, 0)) == 0) {
599 0 0 if (*newKeys == NULL) {
600 0 0 if (ss->keys != NULL) {
608 0 0 if ((i < ss->SNI_entries_number) && (VHIndexCallback != NULL) && !ssl_data->cbSNI_done) {
0 0 if ((i < ss->SNI_entries_number) && (VHIndexCallback != NULL) && !ssl_data->cbSNI_done) {
0 0 if ((i < ss->SNI_entries_number) && (VHIndexCallback != NULL) && !ssl_data->cbSNI_done) {
614 0 0 PUSHMARK(SP);
615 0 0 XPUSHs(sv_2mortal(newSViv(ssl_id)));
616 0 0 XPUSHs(sv_2mortal(newSViv(i)));
617 0 0 XPUSHs(sv_2mortal(newSVpv(hostname, hostnameLen)));
624 0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
0 0 if (SvTRUE(ERRSV)) {
625 0 0 warn("%s", SvPV_nolen(ERRSV));
0 0 warn("%s", SvPV_nolen(ERRSV));
0 0 warn("%s", SvPV_nolen(ERRSV));
0 0 warn("%s", SvPV_nolen(ERRSV));
632 0 0 FREETMPS;
665 0 5 if (SvOK(ar)) {
0 0 if (SvOK(ar)) {
0 0 if (SvOK(ar)) {
666 3 2 if (!SvROK(ar)) {
668 3 0 item = SvPV(ar, item_len);
672 0 3 if (item == NULL)
675 0 3 if ((rc = psGetFileBuf(NULL, item, buffer, buffer_size)) != PS_SUCCESS) {
682 0 2 if (SvTYPE(SvRV(ar)) != SVt_PVAV)
698 4 2 for (i = 0; i < sct_array_size; i++) {
700 4 0 item = SvPV(item_sv, item_len);
705 0 4 if (stat(item, &fstat) != 0) {
721 4 2 for (i = 0; i < sct_array_size; i++) {
723 4 0 item = SvPV(item_sv, item_len);
725 0 4 if ((rc = psGetFileBuf(NULL, item, &sct, &sct_size)) != PS_SUCCESS) {
793 2 14 for (j = 0; j < SSL_server_index; j++) {
798 1 1 if (ss->alpn != NULL) {
802 2 1 for (k = 0; k < ss->alpn->protoCount; k++)
803 2 0 if (ss->alpn->proto[k] != NULL) free(ss->alpn->proto[k]);
810 1 2 for (i = 0; i < ss->SNI_entries_number; i++) {
824 0 1 if (se->alpn != NULL) {
828 0 0 for (k = 0; k < se->alpn->protoCount; k++)
829 0 0 if (se->alpn->proto[k] != NULL) free(se->alpn->proto[k]);
854 0 2 if (SSL_server_index == MAX_SSL_SERVERS) {
881 0 1 if (server_index < 0)
884 0 1 if (index < 0)
887 0 1 if (OCSP_file == NULL)
892 0 1 if (server_index >= SSL_server_index)
895 0 1 if (index >= SSL_servers[server_index]->SNI_entries_number)
900 0 1 if (rc != PS_SUCCESS) {
907 1 0 if (buffer != NULL) psFreeNative(buffer);
909 0 1 if (rc != PS_SUCCESS)
926 0 2 if (server_index < 0)
929 0 2 if (index < 0)
934 0 2 if (server_index >= SSL_server_index)
937 0 2 if (index >= SSL_servers[server_index]->SNI_entries_number)
944 0 2 if (res < 1) {
945 0 0 if (buffer != NULL) psFreeNative(buffer);
951 2 0 if (buffer != NULL) psFreeNative(buffer);
953 0 2 if (rc != PS_SUCCESS) {
976 1 0 if (!(SvROK(ALPN_data) && SvTYPE(SvRV(ALPN_data)) == SVt_PVAV))
0 1 if (!(SvROK(ALPN_data) && SvTYPE(SvRV(ALPN_data)) == SVt_PVAV))
979 0 1 if (server_index < 0)
982 0 1 if (server_index >= SSL_server_index)
985 1 0 if (index < 0) {
994 0 0 if (index >= SSL_servers[server_index]->SNI_entries_number)
1001 0 1 if (*palpn == NULL) {
1013 0 1 for (i = 0; i > alpn->protoCount; i++)
1014 0 0 if (alpn->proto[i]) free(alpn->proto[i]);
1018 0 1 if (alpn->protoCount > MAX_PROTO_EXT) alpn->protoCount = MAX_PROTO_EXT;
1020 2 1 for (i = 0; i < alpn->protoCount; i++) {
1022 2 0 item = (unsigned char *) SvPV(tmp_sv, item_len);
1089 0 100807 if (rc != PS_SUCCESS) {
1136 1 113 certBuf = SvOK(cert) ? (unsigned char *) SvPV(cert, certLen) : NULL;
1 0 certBuf = SvOK(cert) ? (unsigned char *) SvPV(cert, certLen) : NULL;
0 1 certBuf = SvOK(cert) ? (unsigned char *) SvPV(cert, certLen) : NULL;
113 0 certBuf = SvOK(cert) ? (unsigned char *) SvPV(cert, certLen) : NULL;
1137 2 112 privBuf = SvOK(priv) ? (unsigned char *) SvPV(priv, privLen) : NULL;
2 0 privBuf = SvOK(priv) ? (unsigned char *) SvPV(priv, privLen) : NULL;
0 2 privBuf = SvOK(priv) ? (unsigned char *) SvPV(priv, privLen) : NULL;
112 0 privBuf = SvOK(priv) ? (unsigned char *) SvPV(priv, privLen) : NULL;
1138 2 112 trustedCABuf= SvOK(trustedCA) ? (unsigned char *) SvPV(trustedCA, trustedCALen) : NULL;
2 0 trustedCABuf= SvOK(trustedCA) ? (unsigned char *) SvPV(trustedCA, trustedCALen) : NULL;
0 2 trustedCABuf= SvOK(trustedCA) ? (unsigned char *) SvPV(trustedCA, trustedCALen) : NULL;
112 0 trustedCABuf= SvOK(trustedCA) ? (unsigned char *) SvPV(trustedCA, trustedCALen) : NULL;
1175 0 0 certBuf = SvOK(cert) ? (unsigned char *) SvPV(cert, certLen) : NULL;
0 0 certBuf = SvOK(cert) ? (unsigned char *) SvPV(cert, certLen) : NULL;
0 0 certBuf = SvOK(cert) ? (unsigned char *) SvPV(cert, certLen) : NULL;
0 0 certBuf = SvOK(cert) ? (unsigned char *) SvPV(cert, certLen) : NULL;
1176 0 0 privBuf = SvOK(priv) ? (unsigned char *) SvPV(priv, privLen) : NULL;
0 0 privBuf = SvOK(priv) ? (unsigned char *) SvPV(priv, privLen) : NULL;
0 0 privBuf = SvOK(priv) ? (unsigned char *) SvPV(priv, privLen) : NULL;
0 0 privBuf = SvOK(priv) ? (unsigned char *) SvPV(priv, privLen) : NULL;
1177 0 0 trustedCABuf= SvOK(trustedCA) ? (unsigned char *) SvPV(trustedCA, trustedCALen) : NULL;
0 0 trustedCABuf= SvOK(trustedCA) ? (unsigned char *) SvPV(trustedCA, trustedCALen) : NULL;
0 0 trustedCABuf= SvOK(trustedCA) ? (unsigned char *) SvPV(trustedCA, trustedCALen) : NULL;
0 0 trustedCABuf= SvOK(trustedCA) ? (unsigned char *) SvPV(trustedCA, trustedCALen) : NULL;
1198 5 10 importPassBuf= SvOK(importPass) ? (unsigned char *) SvPV(importPass, importPassLen) : NULL;
5 0 importPassBuf= SvOK(importPass) ? (unsigned char *) SvPV(importPass, importPassLen) : NULL;
0 5 importPassBuf= SvOK(importPass) ? (unsigned char *) SvPV(importPass, importPassLen) : NULL;
10 0 importPassBuf= SvOK(importPass) ? (unsigned char *) SvPV(importPass, importPassLen) : NULL;
1199 11 4 macPassBuf = SvOK(macPass) ? (unsigned char *) SvPV(macPass, macPassLen) : NULL;
11 0 macPassBuf = SvOK(macPass) ? (unsigned char *) SvPV(macPass, macPassLen) : NULL;
0 11 macPassBuf = SvOK(macPass) ? (unsigned char *) SvPV(macPass, macPassLen) : NULL;
4 0 macPassBuf = SvOK(macPass) ? (unsigned char *) SvPV(macPass, macPassLen) : NULL;
1217 0 0 nameBuf = SvOK(name) ? SvPV_nolen(name) : NULL;
0 0 nameBuf = SvOK(name) ? SvPV_nolen(name) : NULL;
0 0 nameBuf = SvOK(name) ? SvPV_nolen(name) : NULL;
0 0 nameBuf = SvOK(name) ? SvPV_nolen(name) : NULL;
1218 0 0 symkeyBuf = SvOK(symkey) ? SvPV(symkey, symkeyLen) : NULL;
0 0 symkeyBuf = SvOK(symkey) ? SvPV(symkey, symkeyLen) : NULL;
0 0 symkeyBuf = SvOK(symkey) ? SvPV(symkey, symkeyLen) : NULL;
0 0 symkeyBuf = SvOK(symkey) ? SvPV(symkey, symkeyLen) : NULL;
1219 0 0 hashkeyBuf = SvOK(hashkey) ? SvPV(hashkey, hashkeyLen) : NULL;
0 0 hashkeyBuf = SvOK(hashkey) ? SvPV(hashkey, hashkeyLen) : NULL;
0 0 hashkeyBuf = SvOK(hashkey) ? SvPV(hashkey, hashkeyLen) : NULL;
0 0 hashkeyBuf = SvOK(hashkey) ? SvPV(hashkey, hashkeyLen) : NULL;
1245 0 1 if ((rc = psGetFileBuf(NULL, OCSP_file, &buffer, &buffer_size)) != PS_SUCCESS) {
1252 0 1 if (rc != PS_SUCCESS) {
1270 0 2 if ((res = build_SCT_buffer(SCT_params, &buffer, &buffer_size)) < 1) {
1277 0 2 if (rc != PS_SUCCESS) {
1299 0 110023 if (rc != PS_SUCCESS) {
1347 0 11156 if (SvROK(cipherSuites) && SvTYPE(SvRV(cipherSuites)) == SVt_PVAV) {
0 0 if (SvROK(cipherSuites) && SvTYPE(SvRV(cipherSuites)) == SVt_PVAV) {
1351 0 0 if (cipherCount > 64)
1354 0 0 for (i = 0; i < cipherCount; i++) {
1356 0 0 cipherSuitesBuf[i] = (uint32) SvIV(*item);
1358 11156 0 } else if (SvOK(cipherSuites)) {
11156 0 } else if (SvOK(cipherSuites)) {
0 11156 } else if (SvOK(cipherSuites)) {
1367 11156 0 rc = matrixSslNewClientSession(&ssl,
11156 0 rc = matrixSslNewClientSession(&ssl,
0 0 rc = matrixSslNewClientSession(&ssl,
1029 10127 rc = matrixSslNewClientSession(&ssl,
1369 1029 0 (SvOK(certValidator) ? appCertValidator : NULL),
0 1029 (SvOK(certValidator) ? appCertValidator : NULL),
1370 11156 0 (SvOK(expectedName) ? (const char *) SvPV_nolen(expectedName) : NULL),
0 11156 (SvOK(expectedName) ? (const char *) SvPV_nolen(expectedName) : NULL),
1372 11156 0 (SvOK(extensionCback) ? appExtensionCback : NULL),
0 11156 (SvOK(extensionCback) ? appExtensionCback : NULL),
1375 0 11156 if (rc != MATRIXSSL_REQUEST_SEND) {
1388 1029 10127 if(SvOK(certValidator)) {
1029 0 if(SvOK(certValidator)) {
0 1029 if(SvOK(certValidator)) {
1389 4 10123 if(certValidatorArg==NULL)
1394 11156 0 if(SvOK(extensionCback)) {
11156 0 if(SvOK(extensionCback)) {
0 11156 if(SvOK(extensionCback)) {
1395 0 0 if(extensionCbackArg==NULL)
1400 11156 0 FREETMPS;
1425 11158 0 rc = matrixSslNewServerSession(&ssl, (sslKeys_t *)keys,
1426 11158 0 (SvOK(certValidator) ? appCertValidator : NULL),
0 11158 (SvOK(certValidator) ? appCertValidator : NULL),
1431 0 11158 if (rc != PS_SUCCESS) {
1444 11158 0 if(SvOK(certValidator)) {
11158 0 if(SvOK(certValidator)) {
0 11158 if(SvOK(certValidator)) {
1445 0 0 if(certValidatorArg==NULL)
1450 11158 0 FREETMPS;
1531 0 1 if (server_index < 0)
1534 0 1 if (server_index >= SSL_server_index)
1540 0 1 if (ss->SNI_entries_number > 0)
1544 1 0 if (!(SvROK(sni_data) && SvTYPE(SvRV(sni_data)) == SVt_PVAV))
0 1 if (!(SvROK(sni_data) && SvTYPE(SvRV(sni_data)) == SVt_PVAV))
1556 0 1 if (ss->SNI_entries_number > MAX_SNI_ENTRIES)
1559 1 1 for (i = 0; i < ss->SNI_entries_number; i++) {
1568 1 0 if (!(SvROK(sd_sv) && SvTYPE(SvRV(sd_sv)) == SVt_PVHV))
0 1 if (!(SvROK(sd_sv) && SvTYPE(SvRV(sd_sv)) == SVt_PVHV))
1575 1 0 if (hv_exists(sd, "hostname", strlen("hostname"))) {
1577 0 1 if (!SvOK(item_sv))
0 0 if (!SvOK(item_sv))
0 0 if (!SvOK(item_sv))
1580 1 0 item = (unsigned char *) SvPV(item_sv , item_len);
1592 0 1 if (regex_res != 0) {
1600 1 0 if (hv_exists(sd, "cert", strlen("cert")) && hv_exists(sd, "key", strlen("key"))) {
1 0 if (hv_exists(sd, "cert", strlen("cert")) && hv_exists(sd, "key", strlen("key"))) {
1605 0 1 if (hv_exists(sd, "trustCA", strlen("trustCA"))) {
1608 0 0 if (SvOK(trustedCA_sv)) {
0 0 if (SvOK(trustedCA_sv)) {
0 0 if (SvOK(trustedCA_sv)) {
1609 0 0 trustedCA = (unsigned char *) SvPV_nolen(trustedCA_sv);
1613 0 1 if (SvOK(cert_sv) && SvOK(key_sv)) {
0 0 if (SvOK(cert_sv) && SvOK(key_sv)) {
0 0 if (SvOK(cert_sv) && SvOK(key_sv)) {
0 1 if (SvOK(cert_sv) && SvOK(key_sv)) {
0 0 if (SvOK(cert_sv) && SvOK(key_sv)) {
0 0 if (SvOK(cert_sv) && SvOK(key_sv)) {
1614 1 0 cert = (unsigned char *) SvPV_nolen(cert_sv);
1615 1 0 key = (unsigned char *) SvPV_nolen(key_sv);
1621 0 1 if (rc != PS_SUCCESS) {
1627 0 1 if (rc != PS_SUCCESS)
1631 0 0 } else if (hv_exists(sd, "ecc_cert", strlen("ecc_cert")) && hv_exists(sd, "ecc_key", strlen("ecc_key"))) {
0 0 } else if (hv_exists(sd, "ecc_cert", strlen("ecc_cert")) && hv_exists(sd, "ecc_key", strlen("ecc_key"))) {
1635 0 0 if (SvOK(cert_sv) && SvOK(key_sv)) {
0 0 if (SvOK(cert_sv) && SvOK(key_sv)) {
0 0 if (SvOK(cert_sv) && SvOK(key_sv)) {
0 0 if (SvOK(cert_sv) && SvOK(key_sv)) {
0 0 if (SvOK(cert_sv) && SvOK(key_sv)) {
0 0 if (SvOK(cert_sv) && SvOK(key_sv)) {
1636 0 0 cert = (unsigned char *) SvPV_nolen(cert_sv);
1637 0 0 key = (unsigned char *) SvPV_nolen(key_sv);
1643 0 0 if (rc != PS_SUCCESS) {
1649 0 0 if (rc != PS_SUCCESS)
1656 0 1 if (hv_exists(sd, "DH_param", strlen("DH_param"))) {
1658 0 0 if (!SvOK(item_sv))
0 0 if (!SvOK(item_sv))
0 0 if (!SvOK(item_sv))
1661 0 0 item = (unsigned char *) SvPV_nolen(item_sv);
1666 0 0 if (rc != PS_SUCCESS)
1670 1 0 if (hv_exists(sd, "session_ticket_keys", strlen("session_ticket_keys"))) {
1679 0 1 if (!SvOK(item_sv))
0 0 if (!SvOK(item_sv))
0 0 if (!SvOK(item_sv))
1682 1 0 item = (unsigned char *) SvPV(item_sv, item_len);
1686 0 1 if (item_len > 16) item_len = 16;
1691 0 1 if (!SvOK(item_sv))
0 0 if (!SvOK(item_sv))
0 0 if (!SvOK(item_sv))
1694 1 0 item = (unsigned char *) SvPV(item_sv, item_len);
1695 1 0 if (!((item_len == 16) || (item_len == 32)))
0 1 if (!((item_len == 16) || (item_len == 32)))
1705 0 1 if (!SvOK(item_sv))
0 0 if (!SvOK(item_sv))
0 0 if (!SvOK(item_sv))
1708 1 0 item = (unsigned char *) SvPV(item_sv, item_len);
1709 0 1 if (item_len != 32)
1718 0 1 if (rc != PS_SUCCESS)
1723 1 0 if (hv_exists(sd, "OCSP_staple", strlen("OCSP_staple"))) {
1725 0 1 if (!SvOK(item_sv))
0 0 if (!SvOK(item_sv))
0 0 if (!SvOK(item_sv))
1728 1 0 item = (unsigned char *) SvPV_nolen(item_sv);
1733 0 1 if (rc != PS_SUCCESS)
1738 1 0 if (buffer != NULL) psFreeNative(buffer);
1742 0 1 if (rc != PS_SUCCESS)
1747 1 0 if (hv_exists(sd, "SCT_params", strlen("SCT_params"))) {
1749 0 1 if (!SvOK(item_sv))
0 0 if (!SvOK(item_sv))
0 0 if (!SvOK(item_sv))
1756 0 1 if (res < 1)
1761 1 0 if (buffer != NULL) psFreeNative(buffer);
1765 0 1 if (rc != PS_SUCCESS)
1769 0 1 if (hv_exists(sd, "ALPN", strlen("ALPN"))) {
1772 0 0 if (!(SvROK(item_sv) && SvTYPE(SvRV(item_sv)) == SVt_PVAV))
0 0 if (!(SvROK(item_sv) && SvTYPE(SvRV(item_sv)) == SVt_PVAV))
1781 0 0 if (ss->SNI_entries[i]->alpn->protoCount > MAX_PROTO_EXT) ss->SNI_entries[i]->alpn->protoCount = MAX_PROTO_EXT;
1783 0 0 for (j = 0; j < ss->SNI_entries[i]->alpn->protoCount; j++) {
1785 0 0 item = (unsigned char *) SvPV(tmp_sv, item_len);
1822 0 1 if (server_index < 0)
1825 0 1 if (server_index >= SSL_server_index)
1832 1 0 if (!(SvROK(params) && SvTYPE(SvRV(params)) == SVt_PVHV))
0 1 if (!(SvROK(params) && SvTYPE(SvRV(params)) == SVt_PVHV))
1837 0 1 if (hv_exists(hparams, "keys", strlen("keys"))) {
1839 0 0 tmp = SvIV((SV*)SvRV(item_sv));
1843 1 0 if (hv_exists(hparams, "ALPN", strlen("ALPN"))) {
1846 1 0 if (!(SvROK(item_sv) && SvTYPE(SvRV(item_sv)) == SVt_PVAV))
0 1 if (!(SvROK(item_sv) && SvTYPE(SvRV(item_sv)) == SVt_PVAV))
1855 0 1 if (ss->alpn->protoCount > MAX_PROTO_EXT) ss->alpn->protoCount = MAX_PROTO_EXT;
1859 2 1 for (i = 0; i < ss->alpn->protoCount; i++) {
1861 2 0 item = (unsigned char *) SvPV(tmp_sv, item_len);
1888 0 0 if (server_index < 0)
1891 0 0 if (server_index >= SSL_server_index)
1909 0 0 if (ss->SNI_entries_number > 0) {
1916 0 0 if (ss->alpn != NULL) matrixSslRegisterALPNCallback(ssl, ALPNCallbackXS);
1935 10126 12188 if(hv_exists_ent(certValidatorArg, key, 0))
1937 0 22314 if(hv_exists_ent(extensionCbackArg, key, 0))
1940 22314 0 FREETMPS;
1943 11158 11156 if (((ssl_t *) ssl)->userPtr != NULL) free(((ssl_t *) ssl)->userPtr);
1955 0 11841 if (RETVAL < 0)
1958 6568 5273 if (RETVAL > 0)
1988 0 9678 if (readbufsz < 0) {
1995 9678 0 buf = (unsigned char *) SvPV(inBuf, inbufsz);
1996 5546 4132 if((STRLEN) readbufsz > inbufsz)
2004 3193 6485 sv_setpvn_mg(ptBuf, (const char *) buf, (buf==NULL ? 0 : bufsz));
2018 0 0 if (RETVAL > 0) sv_setpvn_mg(ptBuf, (const char *) buf, (buf==NULL ? 0 : bufsz));
0 0 if (RETVAL > 0) sv_setpvn_mg(ptBuf, (const char *) buf, (buf==NULL ? 0 : bufsz));
2032 1021 3102 sv_setpvn_mg(ptBuf, (const char *) buf, (buf==NULL ? 0 : bufsz));
2045 4126 0 buf = (unsigned char *) SvPV(outBuf, bufsz);
2101 2 6 if (SvROK(cipherSpecs) && SvTYPE(SvRV(cipherSpecs)) == SVt_PVAV) {
2 0 if (SvROK(cipherSpecs) && SvTYPE(SvRV(cipherSpecs)) == SVt_PVAV) {
2105 0 2 if (cipherCount > 64)
2108 2 2 for (i = 0; i < cipherCount; i++) {
2110 2 0 cipherSpecsBuf[i] = (uint32) SvIV(*item);
2112 6 0 } else if (SvOK(cipherSpecs)) {
6 0 } else if (SvOK(cipherSpecs)) {
0 6 } else if (SvOK(cipherSpecs)) {
2117 6 2 RETVAL = matrixSslEncodeRehandshake((ssl_t *)ssl, (sslKeys_t *)keys,
2118 6 0 (SvOK(certValidator) ? appCertValidator : NULL),
0 6 (SvOK(certValidator) ? appCertValidator : NULL),
2126 1 7 if(certValidatorArg==NULL)
2128 3 5 if(hv_exists_ent(certValidatorArg, key, 0))
2130 6 2 if(SvOK(certValidator))
6 0 if(SvOK(certValidator))
0 6 if(SvOK(certValidator))
2133 8 0 FREETMPS;
2151 0 0 if (rc != PS_SUCCESS) {
2178 0 0 extData = (unsigned char *) SvPV(ext, extLen);