summaryrefslogtreecommitdiffstats
path: root/crypto/openssl/perl/OpenSSL.xs
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/openssl/perl/OpenSSL.xs')
-rw-r--r--crypto/openssl/perl/OpenSSL.xs82
1 files changed, 82 insertions, 0 deletions
diff --git a/crypto/openssl/perl/OpenSSL.xs b/crypto/openssl/perl/OpenSSL.xs
new file mode 100644
index 0000000..2267168
--- /dev/null
+++ b/crypto/openssl/perl/OpenSSL.xs
@@ -0,0 +1,82 @@
+/*
+** 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
+
+PROTOTYPES: ENABLE
+
+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();
+
OpenPOWER on IntegriCloud