summaryrefslogtreecommitdiffstats
path: root/perl
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2002-02-28 22:06:26 +0000
committerRichard Levitte <levitte@openssl.org>2002-02-28 22:06:26 +0000
commit80d9b1ccd7495fb839018b226b6db22fbb5fecad (patch)
tree2c34c5de2ca47f860ca844ecb05f341b072d06dc /perl
parent69c48301e0ef4efb4f1654cfb1f11b4b3f8b48d5 (diff)
Remove the perl/ subdirectory. It hasn't been worked on for ages, is
very broken, and there are working modules in CPAN, which makes our module even more moot.
Diffstat (limited to 'perl')
-rw-r--r--perl/MANIFEST17
-rw-r--r--perl/Makefile.PL45
-rw-r--r--perl/OpenSSL.pm90
-rw-r--r--perl/OpenSSL.xs109
-rw-r--r--perl/README.1ST4
-rw-r--r--perl/openssl.h96
-rw-r--r--perl/openssl_bio.xs450
-rw-r--r--perl/openssl_bn.xs593
-rw-r--r--perl/openssl_cipher.xs154
-rw-r--r--perl/openssl_digest.xs85
-rw-r--r--perl/openssl_err.xs47
-rw-r--r--perl/openssl_ssl.xs483
-rw-r--r--perl/openssl_x509.xs75
-rw-r--r--perl/t/01-use.t13
-rw-r--r--perl/t/02-version.t10
-rw-r--r--perl/t/03-bio.t16
-rw-r--r--perl/typemap96
17 files changed, 0 insertions, 2383 deletions
diff --git a/perl/MANIFEST b/perl/MANIFEST
deleted file mode 100644
index 80c900769d..0000000000
--- a/perl/MANIFEST
+++ /dev/null
@@ -1,17 +0,0 @@
-README.1ST
-MANIFEST
-Makefile.PL
-typemap
-OpenSSL.pm
-OpenSSL.xs
-openssl.h
-openssl_bio.xs
-openssl_bn.xs
-openssl_cipher.xs
-openssl_digest.xs
-openssl_err.xs
-openssl_ssl.xs
-openssl_x509.xs
-t/01-use.t
-t/02-version.t
-t/03-bio.t
diff --git a/perl/Makefile.PL b/perl/Makefile.PL
deleted file mode 100644
index 2a67ad061d..0000000000
--- a/perl/Makefile.PL
+++ /dev/null
@@ -1,45 +0,0 @@
-##
-## Makefile.PL -- Perl MakeMaker specification
-##
-
-open(IN,"<../Makefile.ssl") || die "unable to open Makefile.ssl!\n";
-while(<IN>) {
- $V=$1 if (/^VERSION=(.*)$/);
-}
-close(IN);
-print "Configuring companion Perl module for OpenSSL $V\n";
-
-use ExtUtils::MakeMaker;
-
-WriteMakefile(
- 'OPTIMIZE' => '',
- 'DISTNAME' => "openssl-$V",
- 'NAME' => 'OpenSSL',
- 'VERSION_FROM' => 'OpenSSL.pm',
- 'LIBS' => ( $^O eq 'MSWin32'
- ? [ '-L../out32dll -lssleay32 -llibeay32' ]
- : [ '-L.. -lssl -lcrypto' ] ),
- 'DEFINE' => '',
- 'INC' => '-I../include',
- 'H' => ['openssl.h'],
- 'OBJECT' =>
- 'OpenSSL.o ' .
- 'openssl_bio.o ' .
- 'openssl_bn.o ' .
- 'openssl_cipher.o ' .
- 'openssl_digest.o ' .
- 'openssl_err.o ' .
- 'openssl_ssl.o ' .
- 'openssl_x509.o ',
- 'XS' => {
- 'OpenSSL.xs' => 'OpenSSL.c',
- 'openssl_bio.xs' => 'openssl_bio.c',
- 'openssl_bn.xs' => 'openssl_bn.c',
- 'openssl_cipher.xs' => 'openssl_cipher.c',
- 'openssl_digest.xs' => 'openssl_digest.c',
- 'openssl_err.xs' => 'openssl_err.c',
- 'openssl_ssl.xs' => 'openssl_ssl.c',
- 'openssl_x509.xs' => 'openssl_x509.c',
- },
-);
-
diff --git a/perl/OpenSSL.pm b/perl/OpenSSL.pm
deleted file mode 100644
index ae7265a21d..0000000000
--- a/perl/OpenSSL.pm
+++ /dev/null
@@ -1,90 +0,0 @@
-##
-## OpenSSL.pm
-##
-
-package OpenSSL;
-
-require 5.000;
-use Exporter;
-use DynaLoader;
-
-@ISA = qw(Exporter DynaLoader);
-@EXPORT = qw();
-
-$VERSION = '0.94';
-bootstrap OpenSSL;
-
-@OpenSSL::BN::ISA = qw(OpenSSL::ERR);
-@OpenSSL::MD::ISA = qw(OpenSSL::ERR);
-@OpenSSL::Cipher::ISA = qw(OpenSSL::ERR);
-@OpenSSL::SSL::CTX::ISA = qw(OpenSSL::ERR);
-@OpenSSL::BIO::ISA = qw(OpenSSL::ERR);
-@OpenSSL::SSL::ISA = qw(OpenSSL::ERR);
-
-@BN::ISA = qw(OpenSSL::BN);
-@MD::ISA = qw(OpenSSL::MD);
-@Cipher::ISA = qw(OpenSSL::Cipher);
-@SSL::ISA = qw(OpenSSL::SSL);
-@SSL::CTX::ISA = qw(OpenSSL::SSL::CTX);
-@BIO::ISA = qw(OpenSSL::BIO);
-
-@OpenSSL::MD::names = qw(
- md2 md5 sha sha1 ripemd160 mdc2
-);
-
-@OpenSSL::Cipher::names = qw(
- des-ecb des-cfb des-ofb des-cbc
- des-ede des-ede-cfb des-ede-ofb des-ede-cbc
- des-ede3 des-ede3-cfb des-ede3-ofb des-ede3-cbc
- desx-cbc rc4 rc4-40
- idea-ecb idea-cfb idea-ofb idea-cbc
- rc2-ecb rc2-cbc rc2-40-cbc rc2-cfb rc2-ofb
- bf-ecb bf-cfb bf-ofb bf-cbc
- cast5-ecb cast5-cfb cast5-ofb cast5-cbc
- rc5-ecb rc5-cfb rc5-ofb rc5-cbc
-);
-
-sub OpenSSL::SSL::CTX::new_ssl {
- OpenSSL::SSL::new($_[0]);
-}
-
-sub OpenSSL::ERR::error {
- my($o) = @_;
- my($s, $ret);
-
- while (($s = $o->get_error()) != 0) {
- $ret.=$s."\n";
- }
- return($ret);
-}
-
-@OpenSSL::Cipher::aliases = qw(
- des desx des3 idea rc2 bf cast
-);
-
-package OpenSSL::BN;
-
-sub bnfix {
- (ref($_[0]) ne "OpenSSL::BN") ? OpenSSL::BN::dec2bn($_[0]) : $_[0];
-}
-
-use overload
-"=" => sub { dup($_[0]); },
-"+" => sub { add($_[0],$_[1]); },
-"-" => sub { ($_[1],$_[0])=($_[0],$_[1]) if $_[2]; OpenSSL::BN::sub($_[0],$_[1]); },
-"*" => sub { mul($_[0],$_[1]); },
-"**" => sub { ($_[1],$_[0])=($_[0],$_[1]) if $_[2]; OpenSSL::BN::exp($_[0],$_[1]); },
-"/" => sub { ($_[1],$_[0])=($_[0],$_[1]) if $_[2]; (div($_[0],$_[1]))[0]; },
-"%" => sub { ($_[1],$_[0])=($_[0],$_[1]) if $_[2]; mod($_[0],$_[1]); },
-"<<" => sub { lshift($_[0],$_[1]); },
-">>" => sub { rshift($_[0],$_[1]); },
-"<=>" => sub { OpenSSL::BN::cmp($_[0],$_[1]); },
-'""' => sub { bn2dec($_[0]); },
-'0+' => sub { dec2bn($_[0]); },
-"bool" => sub { ref($_[0]) eq "OpenSSL::BN"; };
-
-sub OpenSSL::BIO::do_accept {
- OpenSSL::BIO::do_handshake(@_);
-}
-
-1;
diff --git a/perl/OpenSSL.xs b/perl/OpenSSL.xs
deleted file mode 100644
index 6ef66ccc1e..0000000000
--- a/perl/OpenSSL.xs
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
-** 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();
-
- /* */
- /* The next macro is the completely correct way to call a C */
- /* function that uses perl calling conventions but is not */
- /* registered with perl. */
- /* */
- /* The second macro seems to work for this context. (We just */
- /* need a mark for the called function since we don't have */
- /* any local variables and what-not.) */
- /* */
- /* Unfortunately, we need to do this because these boot_* */
- /* functions are auto-generated by xsubpp and are normally */
- /* called from DyncLoader, but we're pulling them in here. */
- /* */
-#define FULL_callBootFunc(func) { \
- dSP; \
- ENTER; \
- SAVETMPS; \
- PUSHMARK(SP); \
- func(); \
- FREETMPS; \
- LEAVE; \
- }
-#define callBootFunc(func) { \
- PUSHMARK(SP); \
- func(); \
- }
- callBootFunc(boot_OpenSSL__BN);
- callBootFunc(boot_OpenSSL__BIO);
- callBootFunc(boot_OpenSSL__Cipher);
- callBootFunc(boot_OpenSSL__MD);
- callBootFunc(boot_OpenSSL__ERR);
- callBootFunc(boot_OpenSSL__SSL);
- callBootFunc(boot_OpenSSL__X509);
-
diff --git a/perl/README.1ST b/perl/README.1ST
deleted file mode 100644
index 7b5a1aa5e9..0000000000
--- a/perl/README.1ST
+++ /dev/null
@@ -1,4 +0,0 @@
-
- WARNING, this Perl interface to OpenSSL is horrible incomplete.
- Don't expect it to be really useable!!
-
diff --git a/perl/openssl.h b/perl/openssl.h
deleted file mode 100644
index 2712324a30..0000000000
--- a/perl/openssl.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- *
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to. The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code. The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- *
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * "This product includes cryptographic software written by
- * Eric Young (eay@cryptsoft.com)"
- * The word 'cryptographic' can be left out if the rouines from the library
- * being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from
- * the apps directory (application code) you must include an acknowledgement:
- * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- *
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed. i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "EXTERN.h"
-#include "perl.h"
-#include "XSUB.h"
-
-#ifdef __cplusplus
-}
-#endif
-
-typedef struct datum_st {
- char *dptr;
- int dsize;
-} datum;
-
-#include <openssl/crypto.h>
-#include <openssl/buffer.h>
-#include <openssl/bio.h>
-#include <openssl/evp.h>
-#include <openssl/err.h>
-#include <openssl/x509.h>
-#include <openssl/ssl.h>
-
-#ifdef DEBUG
-#define pr_name(name) printf("%s\n",name)
-#define pr_name_d(name,p2) printf("%s %d\n",name,p2)
-#define pr_name_dd(name,p2,p3) printf("%s %d %d\n",name,p2,p3)
-#else
-#define pr_name(name)
-#define pr_name_d(name,p2)
-#define pr_name_dd(name,p2,p3)
-#endif
-
-SV *new_ref(char *type, char *obj, int mort);
-int ex_new(char *obj, SV *data, CRYPTO_EX_DATA *ad, int idx, long argl, char *argp);
-void ex_cleanup(char *obj, SV *data, CRYPTO_EX_DATA *ad, int idx, long argl, char *argp);
-
diff --git a/perl/openssl_bio.xs b/perl/openssl_bio.xs
deleted file mode 100644
index 5628300d0b..0000000000
--- a/perl/openssl_bio.xs
+++ /dev/null
@@ -1,450 +0,0 @@
-
-#include "openssl.h"
-
-static int p5_bio_ex_bio_ptr = 0;
-static int p5_bio_ex_bio_callback = 0;
-static int p5_bio_ex_bio_callback_data = 0;
-
-static long
-p5_bio_callback(bio,state,parg,cmd,larg,ret)
- BIO *bio;
- int state;
- char *parg;
- int cmd;
- long larg;
- int ret;
-{
- int i;
- SV *me,*cb;
-
- me = (SV *)BIO_get_ex_data(bio, p5_bio_ex_bio_ptr);
- cb = (SV *)BIO_get_ex_data(bio, p5_bio_ex_bio_callback);
- if (cb != NULL) {
- dSP;
-
- ENTER;
- SAVETMPS;
-
- PUSHMARK(sp);
- XPUSHs(sv_2mortal(newSVsv(me)));
- XPUSHs(sv_2mortal(newSViv(state)));
- XPUSHs(sv_2mortal(newSViv(cmd)));
- if ((state == BIO_CB_READ) || (state == BIO_CB_WRITE))
- XPUSHs(sv_2mortal(newSVpv(parg,larg)));
- else
- XPUSHs(&PL_sv_undef);
- /* ptr one */
- XPUSHs(sv_2mortal(newSViv(larg)));
- XPUSHs(sv_2mortal(newSViv(ret)));
- PUTBACK;
-
- i = perl_call_sv(cb,G_SCALAR);
-
- SPAGAIN;
- if (i == 1)
- ret = POPi;
- else
- ret = 1;
- PUTBACK;
- FREETMPS;
- LEAVE;
- }
- else {
- croak("Internal error in p5_bio_callback");
- }
- return(ret);
-}
-
-int
-boot_bio(void)
-{
- p5_bio_ex_bio_ptr = BIO_get_ex_new_index(0, "OpenSSL::BIO", ex_new, NULL, ex_cleanup);
- p5_bio_ex_bio_callback = BIO_get_ex_new_index(0, "bio_callback", NULL, NULL, ex_cleanup);
- p5_bio_ex_bio_callback_data = BIO_get_ex_new_index(0, "bio_callback_data", NULL, NULL, ex_cleanup);
- return(1);
-}
-
-MODULE = OpenSSL::BIO PACKAGE = OpenSSL::BIO PREFIX = p5_BIO_
-
-PROTOTYPES: ENABLE
-VERSIONCHECK: DISABLE
-
-void
-p5_BIO_new_buffer_ssl_connect(...)
- PROTOTYPE: ;$
- PREINIT:
- SSL_CTX *ctx;
- BIO *bio;
- SV *arg;
- PPCODE:
- if (items == 1)
- arg = ST(0);
- else if (items == 2)
- arg = ST(1);
- else
- arg = NULL;
- if ((arg == NULL) || !(sv_derived_from(arg,"OpenSSL::SSL::CTX")))
- croak("Usage: OpenSSL::BIO::new_buffer_ssl_connect(SSL_CTX)");
- else {
- IV tmp = SvIV((SV *)SvRV(arg));
- ctx = (SSL_CTX *)tmp;
- }
- EXTEND(sp, 1);
- bio = BIO_new_buffer_ssl_connect(ctx);
- arg = (SV *)BIO_get_ex_data(bio, p5_bio_ex_bio_ptr);
- PUSHs(arg);
-
-void
-p5_BIO_new_ssl_connect(...)
- PROTOTYPE: ;$
- PREINIT:
- SSL_CTX *ctx;
- BIO *bio;
- SV *arg;
- PPCODE:
- if (items == 1)
- arg = ST(0);
- else if (items == 2)
- arg = ST(1);
- else
- arg = NULL;
- if ((arg == NULL) || !(sv_derived_from(arg,"OpenSSL::SSL::CTX")))
- croak("Usage: OpenSSL::BIO::new_ssl_connect(SSL_CTX)");
- else {
- IV tmp = SvIV((SV *)SvRV(arg));
- ctx = (SSL_CTX *)tmp;
- }
- EXTEND(sp,1);
- bio = BIO_new_ssl_connect(ctx);
- arg = (SV *)BIO_get_ex_data(bio,p5_bio_ex_bio_ptr);
- PUSHs(arg);
-
-void
-p5_BIO_new(...)
- PROTOTYPE: ;$
- PREINIT:
- BIO *bio;
- char *type;
- SV *arg;
- PPCODE:
- pr_name("p5_BIO_new");
- if ((items == 1) && SvPOK(ST(0)))
- type = SvPV_nolen(ST(0));
- else if ((items == 2) && SvPOK(ST(1)))
- type = SvPV_nolen(ST(1));
- else
- croak("Usage: OpenSSL::BIO::new(type)");
- EXTEND(sp,1);
- if (strcmp(type, "mem") == 0)
- bio=BIO_new(BIO_s_mem());
- else if (strcmp(type, "socket") == 0)
- bio=BIO_new(BIO_s_socket());
- else if (strcmp(type, "connect") == 0)
- bio=BIO_new(BIO_s_connect());
- else if (strcmp(type, "accept") == 0)
- bio=BIO_new(BIO_s_accept());
- else if (strcmp(type, "fd") == 0)
- bio=BIO_new(BIO_s_fd());
- else if (strcmp(type, "file") == 0)
- bio=BIO_new(BIO_s_file());
- else if (strcmp(type, "null") == 0)
- bio=BIO_new(BIO_s_null());
- else if (strcmp(type, "ssl") == 0)
- bio=BIO_new(BIO_f_ssl());
- else if (strcmp(type, "buffer") == 0)
- bio=BIO_new(BIO_f_buffer());
- else
- croak("unknown BIO type");
- arg = (SV *)BIO_get_ex_data(bio,p5_bio_ex_bio_ptr);
- PUSHs(arg);
-
-int
-p5_BIO_hostname(bio, name)
- BIO *bio;
- char *name;
- PROTOTYPE: $$
- CODE:
- RETVAL = BIO_set_conn_hostname(bio, name);
- OUTPUT:
- RETVAL
-
-int
-p5_BIO_set_accept_port(bio, str)
- BIO *bio;
- char *str;
- PROTOTYPE: $$
- CODE:
- RETVAL = BIO_set_accept_port(bio, str);
- OUTPUT:
- RETVAL
-
-int
-p5_BIO_do_handshake(bio)
- BIO *bio;
- PROTOTYPE: $
- CODE:
- RETVAL = BIO_do_handshake(bio);
- OUTPUT:
- RETVAL
-
-BIO *
-p5_BIO_push(b, bio)
- BIO *b;
- BIO *bio;
- PROTOTYPE: $$
- CODE:
- /* This reference will be reduced when the reference is
- * let go, and then when the BIO_free_all() is called
- * inside the OpenSSL library by the BIO with this
- * pushed into */
- bio->references++;
- RETVAL = BIO_push(b, bio);
- OUTPUT:
- RETVAL
-
-void
-p5_BIO_pop(b)
- BIO *b
- PROTOTYPE: $
- PREINIT:
- BIO *bio;
- char *type;
- SV *arg;
- PPCODE:
- bio = BIO_pop(b);
- if (bio != NULL) {
- /* This BIO will either be one created in the
- * perl library, in which case it will have a perl
- * SV, otherwise it will have been created internally,
- * inside OpenSSL. For the 'pushed in', it needs
- * the reference count decremented. */
- arg = (SV *)BIO_get_ex_data(bio, p5_bio_ex_bio_ptr);
- if (arg == NULL) {
- arg = new_ref("OpenSSL::BIO",(char *)bio,0);
- BIO_set_ex_data(bio, p5_bio_ex_bio_ptr, (char *)arg);
- PUSHs(arg);
- }
- else {
- /* it was pushed in */
- SvREFCNT_inc(arg);
- PUSHs(arg);
- }
- }
-
-int
-p5_BIO_sysread(bio, in, num, ...)
- BIO *bio;
- SV *in;
- int num;
- PROTOTYPE: $$$;
- PREINIT:
- int i,n,olen;
- int offset;
- char *p;
- CODE:
- offset = 0;
- if (!SvPOK(in))
- sv_setpvn(in, "", 0);
- SvPV(in, olen);
- if (items > 3) {
- offset = SvIV(ST(3));
- if (offset < 0) {
- if (-offset > olen)
- croak("Offset outside string");
- offset+=olen;
- }
- }
- if ((num+offset) > olen) {
- SvGROW(in, num+offset+1);
- p=SvPV(in, i);
- memset(&(p[olen]), 0, (num+offset)-olen+1);
- }
- p = SvPV(in,n);
- i = BIO_read(bio, p+offset, num);
- RETVAL = i;
- if (i <= 0)
- i = 0;
- SvCUR_set(in, offset+i);
- OUTPUT:
- RETVAL
-
-int
-p5_BIO_syswrite(bio, in, ...)
- BIO *bio;
- SV *in;
- PROTOTYPE: $$;
- PREINIT:
- char *ptr;
- int len,in_len;
- int offset=0;
- int n;
- CODE:
- ptr = SvPV(in, in_len);
- if (items > 2) {
- len = SvOK(ST(2)) ? SvIV(ST(2)) : in_len;
- if (items > 3) {
- offset = SvIV(ST(3));
- if (offset < 0) {
- if (-offset > in_len)
- croak("Offset outside string");
- offset+=in_len;
- }
- else if ((offset >= in_len) && (in_len > 0))
- croak("Offset outside string");
- }
- if (len >= (in_len-offset))
- len = in_len-offset;
- }
- else
- len = in_len;
- RETVAL = BIO_write(bio, ptr+offset, len);
- OUTPUT:
- RETVAL
-
-void
-p5_BIO_getline(bio)
- BIO *bio;
- PROTOTYPE: $
- PREINIT:
- int i;
- char *p;
- PPCODE:
- pr_name("p5_BIO_gets");
- EXTEND(sp, 1);
- PUSHs(sv_newmortal());
- sv_setpvn(ST(0), "", 0);
- SvGROW(ST(0), 1024);
- p=SvPV_nolen(ST(0));
- i = BIO_gets(bio, p, 1024);
- if (i < 0)
- i = 0;
- SvCUR_set(ST(0), i);
-
-int
-p5_BIO_flush(bio)
- BIO *bio;
- PROTOTYPE: $
- CODE:
- RETVAL = BIO_flush(bio);
- OUTPUT:
- RETVAL
-
-char *
-p5_BIO_type(bio)
- BIO *bio;
- PROTOTYPE: $
- CODE:
- RETVAL = bio->method->name;
- OUTPUT:
- RETVAL
-
-void
-p5_BIO_next_bio(b)
- BIO *b
- PROTOTYPE: $
- PREINIT:
- BIO *bio;
- char *type;
- SV *arg;
- PPCODE:
- bio = b->next_bio;
- if (bio != NULL) {
- arg = (SV *)BIO_get_ex_data(bio, p5_bio_ex_bio_ptr);
- if (arg == NULL) {
- arg = new_ref("OpenSSL::BIO", (char *)bio, 0);
- BIO_set_ex_data(bio, p5_bio_ex_bio_ptr, (char *)arg);
- bio->references++;
- PUSHs(arg);
- }
- else {
- SvREFCNT_inc(arg);
- PUSHs(arg);
- }
- }
-
-int
-p5_BIO_puts(bio, in)
- BIO *bio;
- SV *in;
- PROTOTYPE: $$
- PREINIT:
- char *ptr;
- CODE:
- ptr = SvPV_nolen(in);
- RETVAL = BIO_puts(bio, ptr);
- OUTPUT:
- RETVAL
-
-void
-p5_BIO_set_callback(bio, cb,...)
- BIO *bio;
- SV *cb;
- PROTOTYPE: $$;
- PREINIT:
- SV *arg = NULL;
- SV *arg2 = NULL;
- CODE:
- if (items > 3)
- croak("Usage: OpenSSL::BIO::set_callback(bio,callback[,arg]");
- if (items == 3) {
- arg2 = sv_mortalcopy(ST(2));
- SvREFCNT_inc(arg2);
- BIO_set_ex_data(bio, p5_bio_ex_bio_callback_data, (char *)arg2);
- }
- arg = sv_mortalcopy(ST(1));
- SvREFCNT_inc(arg);
- BIO_set_ex_data(bio, p5_bio_ex_bio_callback, (char *)arg);
- /* printf("%08lx < bio_ptr\n",BIO_get_ex_data(bio,p5_bio_ex_bio_ptr)); */
- BIO_set_callback(bio, p5_bio_callback);
-
-void
-p5_BIO_DESTROY(bio)
- BIO *bio
- PROTOTYPE: $
- PREINIT:
- SV *sv;
- PPCODE:
- pr_name_d("p5_BIO_DESTROY",bio->references);
- /* printf("p5_BIO_DESTROY <%s> %d\n",bio->method->name,bio->references); */
- BIO_set_ex_data(bio,p5_bio_ex_bio_ptr,NULL);
- BIO_free_all(bio);
-
-int
-p5_BIO_set_ssl(bio, ssl)
- BIO *bio;
- SSL *ssl;
- PROTOTYPE: $$
- CODE:
- pr_name("p5_BIO_set_ssl");
- ssl->references++;
- RETVAL = BIO_set_ssl(bio, ssl, BIO_CLOSE);
- OUTPUT:
- RETVAL
-
-int
-p5_BIO_number_read(bio)
- BIO *bio;
- PROTOTYPE: $
- CODE:
- RETVAL = BIO_number_read(bio);
- OUTPUT:
- RETVAL
-
-int
-p5_BIO_number_written(bio)
- BIO *bio;
- PROTOTYPE: $
- CODE:
- RETVAL = BIO_number_written(bio);
- OUTPUT:
- RETVAL
-
-int
-p5_BIO_references(bio)
- BIO *bio;
- PROTOTYPE: $
- CODE:
- RETVAL = bio->references;
- OUTPUT:
- RETVAL
-
diff --git a/perl/openssl_bn.xs b/perl/openssl_bn.xs
deleted file mode 100644
index 6817cfb740..0000000000
--- a/perl/openssl_bn.xs
+++ /dev/null
@@ -1,593 +0,0 @@
-
-#include "openssl.h"
-
-int sv_to_BIGNUM(var,arg,name)
-BIGNUM **var;
-SV *arg;
-char *name;
- {
- int ret=1;
-
- if (sv_derived_from(arg,"OpenSSL::BN"))
- {
- IV tmp = SvIV((SV*)SvRV(arg));
- *var = (BIGNUM *) tmp;
- }
- else if (SvIOK(arg)) {
- SV *tmp=sv_newmortal();
- *var=BN_new();
- BN_set_word(*var,SvIV(arg));
- sv_setref_pv(tmp,"OpenSSL::BN",(void*)*var);
- }
- else if (SvPOK(arg)) {
- char *ptr;
- STRLEN len;
- SV *tmp=sv_newmortal();
- *var=BN_new();
- sv_setref_pv(tmp,"OpenSSL::BN", (void*)*var);
- ptr=SvPV(arg,len);
- SvGROW(arg,len+1);
- ptr[len]='\0';
- BN_dec2bn(var,ptr);
- }
- else
- {
- croak(name);
- ret=0;
- }
- return(ret);
- }
-
-typedef struct gpc_args_st {
- SV *cb;
- SV *arg;
- } GPC_ARGS;
-
-static void generate_prime_callback(pos,num,arg)
-int pos;
-int num;
-char *arg;
- {
- dSP ;
- int i;
- GPC_ARGS *a=(GPC_ARGS *)arg;
-
- ENTER ;
- SAVETMPS ;
-
- PUSHMARK(sp);
- XPUSHs(sv_2mortal(newSViv(pos)));
- XPUSHs(sv_2mortal(newSViv(num)));
- XPUSHs(sv_2mortal(newSVsv(a->arg)));
- PUTBACK;
-
- i=perl_call_sv(a->cb,G_DISCARD);
-
- SPAGAIN;
-
- PUTBACK;
- FREETMPS;
- LEAVE;
- }
-
-MODULE = OpenSSL::BN PACKAGE = OpenSSL::BN PREFIX = p5_BN_
-
-PROTOTYPES: ENABLE
-VERSIONCHECK: DISABLE
-
-void
-p5_BN_new(...)
- PREINIT:
- BIGNUM *bn;
- SV *arg;
- PPCODE:
- pr_name("p5_BN_new");
- EXTEND(sp,1);
- PUSHs(sv_newmortal());
- bn=BN_new();
- sv_setref_pv(ST(0), "OpenSSL::BN", (void*)bn);
-
-void
-p5_BN_dup(a)
- BIGNUM *a;
- PREINIT:
- BIGNUM *bn;
- PPCODE:
- pr_name("p5_BN_dup");
- EXTEND(sp,1);
- PUSHs(sv_newmortal());
- bn=BN_dup(a);
- sv_setref_pv(ST(0), "OpenSSL::BN", (void*)bn);
-
-void
-p5_BN_rand(bits,...)
- int bits;
- PREINIT:
- int top=1;
- int bottom=0;
- BIGNUM *ret;
- PPCODE:
- pr_name("p5_BN_rand");
- if ((items < 1) || (items > 3))
- croak("Usage: OpenSSL::BN::rand(bits[,top_bit][,bottombit]");
- if (items >= 2) top=(int)SvIV(ST(0));
- if (items >= 3) bottom=(int)SvIV(ST(1));
- EXTEND(sp,1);
- PUSHs(sv_newmortal());
- ret=BN_new();
- BN_rand(ret,bits,top,bottom);
- sv_setref_pv(ST(0), "OpenSSL::BN", (void*)ret);
-
-void
-p5_BN_bin2bn(a)
- datum a;
- PREINIT:
- BIGNUM *ret;
- PPCODE:
- pr_name("p5_BN_bin2bn");
- EXTEND(sp,1);
- PUSHs(sv_newmortal());
- ret=BN_bin2bn(a.dptr,a.dsize,NULL);
- sv_setref_pv(ST(0), "OpenSSL::BN", (void*)ret);
-
-void
-p5_BN_bn2bin(a)
- BIGNUM *a;
- PREINIT:
- int i;
- PPCODE:
- pr_name("p5_BN_bn2bin");
- EXTEND(sp,1);
- PUSHs(sv_newmortal());
- i=BN_num_bytes(a)+2;
- sv_setpvn(ST(0),"",1);
- SvGROW(ST(0),i+1);
- SvCUR_set(ST(0),BN_bn2bin(a,SvPV_nolen(ST(0))));
-
-void
-p5_BN_mpi2bn(a)
- datum a;
- PREINIT:
- BIGNUM *ret;
- PPCODE:
- pr_name("p5_BN_mpi2bn");
- EXTEND(sp,1);
- PUSHs(sv_newmortal());
- ret=BN_mpi2bn(a.dptr,a.dsize,NULL);
- sv_setref_pv(ST(0), "OpenSSL::BN", (void*)ret);
-
-void
-p5_BN_bn2mpi(a)
- BIGNUM *a;
- PREINIT:
- int i;
- PPCODE:
- pr_name("p5_BN_bn2mpi");
- EXTEND(sp,1);
- PUSHs(sv_newmortal());
- i=BN_bn2mpi(a,NULL);
- sv_setpvn(ST(0),"",1);
- SvGROW(ST(0),i+1);
- SvCUR_set(ST(0),BN_bn2mpi(a,SvPV_nolen(ST(0))));
-
-void
-p5_BN_hex2bn(a)
- datum a;
- PREINIT:
- BIGNUM *ret;
- PPCODE:
- pr_name("p5_BN_hex2bn");
- EXTEND(sp,1);
- PUSHs(sv_newmortal());
- ret=BN_new();
- sv_setref_pv(ST(0), "OpenSSL::BN", (void*)ret);
- BN_hex2bn(&ret,a.dptr);
-
-void
-p5_BN_dec2bn(a)
- datum a;