/* | |
** OpenSSL.xs | |
*/ | |
#include "openssl.h" | |
SV * | |
new_ref(type, obj, mort) | |
char *type; | |
char *obj; | |
{ | |
SV *ret; | |
if (mort) | |
ret = sv_newmortal(); | |
else | |
ret = newSViv(0); | |
#ifdef DEBUG | |
printf(">new_ref %d\n",type); | |
#endif | |
sv_setref_pv(ret, type, (void *)obj); | |
return(ret); | |
} | |
int | |
ex_new(obj, data, ad, idx, argl, argp) | |
char *obj; | |
SV *data; | |
CRYPTO_EX_DATA *ad; | |
int idx; | |
long argl; | |
char *argp; | |
{ | |
SV *sv; | |
#ifdef DEBUG | |
printf("ex_new %08X %s\n",obj,argp); | |
#endif | |
sv = sv_newmortal(); | |
sv_setref_pv(sv, argp, (void *)obj); | |
#ifdef DEBUG | |
printf("%d>new_ref '%s'\n", sv, argp); | |
#endif | |
CRYPTO_set_ex_data(ad, idx, (char *)sv); | |
return(1); | |
} | |
void | |
ex_cleanup(obj, data, ad, idx, argl, argp) | |
char *obj; | |
SV *data; | |
CRYPTO_EX_DATA *ad; | |
int idx; | |
long argl; | |
char *argp; | |
{ | |
pr_name("ex_cleanup"); | |
#ifdef DEBUG | |
printf("ex_cleanup %08X %s\n", obj, argp); | |
#endif | |
if (data != NULL) | |
SvREFCNT_dec((SV *)data); | |
} | |
MODULE = OpenSSL PACKAGE = OpenSSL | |
BOOT: | |
boot_bio(); | |
boot_cipher(); | |
boot_digest(); | |
boot_err(); | |
boot_ssl(); | |
boot_OpenSSL__BN(); | |
boot_OpenSSL__BIO(); | |
boot_OpenSSL__Cipher(); | |
boot_OpenSSL__MD(); | |
boot_OpenSSL__ERR(); | |
boot_OpenSSL__SSL(); | |
boot_OpenSSL__X509(); | |