Net-mbedTLS
view release on metacpan or search on metacpan
OUTPUT:
RETVAL
SV*
fh (SV* self_sv)
CODE:
xs_connection* myconn = (xs_connection*) SvPVX( SvRV(self_sv) );
RETVAL = SvREFCNT_inc(myconn->perl_filehandle);
OUTPUT:
RETVAL
bool
closed(SV* peer_obj)
CODE:
xs_connection* myconn = (xs_connection*) SvPVX( SvRV(peer_obj) );
RETVAL = myconn->notify_closed;
OUTPUT:
RETVAL
SV*
ciphersuite (SV* peer_obj)
CODE:
xs_connection* myconn = (xs_connection*) SvPVX( SvRV(peer_obj) );
const char* name = mbedtls_ssl_get_ciphersuite(&myconn->ssl);
RETVAL = name ? newSVpv(name, 0) : &PL_sv_undef;
OUTPUT:
RETVAL
int
max_out_record_payload (SV* peer_obj)
CODE:
xs_connection* myconn = (xs_connection*) SvPVX( SvRV(peer_obj) );
RETVAL = mbedtls_ssl_get_max_out_record_payload(&myconn->ssl);
OUTPUT:
RETVAL
SV*
tls_version_name (SV* peer_obj)
CODE:
xs_connection* myconn = (xs_connection*) SvPVX( SvRV(peer_obj) );
const char *name = mbedtls_ssl_get_version(&myconn->ssl);
RETVAL = name ? newSVpv(name, 0) : &PL_sv_undef;
OUTPUT:
RETVAL
void
peer_certificates (SV* peer_obj)
PPCODE:
if (GIMME_V != G_ARRAY) croak("List context only!");
xs_connection* myconn = (xs_connection*) SvPVX( SvRV(peer_obj) );
const mbedtls_x509_crt* crt = mbedtls_ssl_get_peer_cert(&myconn->ssl);
int count = 0;
while (crt) {
SV* crt_sv = newSVpv(
(const char*) crt->X509_CRT_RAW_MEMBER.X509_ASN1_P_MEMBER,
crt->X509_CRT_RAW_MEMBER.X509_ASN1_LEN_MEMBER
);
XPUSHs(sv_2mortal(crt_sv));
count++;
crt = crt->next;
}
U32
verification_result (SV* peer_obj)
CODE:
xs_connection* myconn = (xs_connection*) SvPVX( SvRV(peer_obj) );
RETVAL = mbedtls_ssl_get_verify_result(&myconn->ssl);
OUTPUT:
RETVAL
bool
close_notify (SV* peer_obj)
CODE:
xs_connection* myconn = (xs_connection*) SvPVX( SvRV(peer_obj) );
int result = mbedtls_ssl_close_notify(&myconn->ssl);
_verify_io_retval(aTHX_ result, myconn, "close_notify");
RETVAL = !result;
OUTPUT:
RETVAL
IV
error (SV* peer_obj)
CODE:
xs_connection* myconn = (xs_connection*) SvPVX( SvRV(peer_obj) );
RETVAL = myconn->error;
OUTPUT:
RETVAL
void
DESTROY(SV* peer_obj)
CODE:
//fprintf(stderr, "DESTROY %s at phase %s\n", SvPVbyte_nolen(peer_obj), PL_phase_names[PL_phase]);
xs_connection* myconn = (xs_connection*) SvPVX( SvRV(peer_obj) );
_warn_if_global_destruct(peer_obj, myconn);
( run in 2.337 seconds using v1.01-cache-2.11-cpan-5511b514fd6 )