|
Packit |
19ef86 |
#include "EXTERN.h"
|
|
Packit |
19ef86 |
#include "perl.h"
|
|
Packit |
19ef86 |
#include "XSUB.h"
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
#include <openssl/err.h>
|
|
Packit |
19ef86 |
#include <openssl/bn.h>
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
#define checkOpenSslCall( result ) if( ! ( result ) ) \
|
|
Packit |
19ef86 |
croak( "OpenSSL error: %s", ERR_reason_error_string( ERR_get_error() ) );
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
typedef BIGNUM *Crypt__OpenSSL__Bignum;
|
|
Packit |
19ef86 |
typedef BN_CTX *Crypt__OpenSSL__Bignum__CTX;
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
SV* new_obj( void* obj )
|
|
Packit |
19ef86 |
{
|
|
Packit |
19ef86 |
SV * tmp = sv_newmortal();
|
|
Packit |
19ef86 |
sv_setref_pv(tmp, "Crypt::OpenSSL::Bignum", (void*)obj);
|
|
Packit |
19ef86 |
return tmp;
|
|
Packit |
19ef86 |
}
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
BIGNUM* sv2bn( SV* sv )
|
|
Packit |
19ef86 |
{
|
|
Packit |
19ef86 |
if (SvROK(sv) && sv_derived_from(sv, "Crypt::OpenSSL::Bignum")) {
|
|
Packit |
19ef86 |
return INT2PTR(Crypt__OpenSSL__Bignum, SvIV((SV*)SvRV(sv)));
|
|
Packit |
19ef86 |
}
|
|
Packit |
19ef86 |
else Perl_croak(aTHX_ "argument is not a Crypt::OpenSSL::Bignum object");
|
|
Packit |
19ef86 |
}
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
MODULE = Crypt::OpenSSL::Bignum PACKAGE = Crypt::OpenSSL::Bignum PREFIX = BN_
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
BOOT:
|
|
Packit |
19ef86 |
#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)
|
|
Packit |
19ef86 |
OPENSSL_init_crypto(0, NULL);
|
|
Packit |
19ef86 |
#else
|
|
Packit |
19ef86 |
ERR_load_crypto_strings();
|
|
Packit |
19ef86 |
#endif
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
void
|
|
Packit |
19ef86 |
DESTROY(Crypt::OpenSSL::Bignum self)
|
|
Packit |
19ef86 |
CODE:
|
|
Packit |
19ef86 |
BN_clear_free( self );
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum
|
|
Packit |
19ef86 |
new_from_word(CLASS, p_word)
|
|
Packit |
19ef86 |
unsigned long p_word;
|
|
Packit |
19ef86 |
PREINIT:
|
|
Packit |
19ef86 |
BIGNUM* bn;
|
|
Packit |
19ef86 |
CODE:
|
|
Packit |
19ef86 |
checkOpenSslCall( bn = BN_new() );
|
|
Packit |
19ef86 |
checkOpenSslCall( BN_set_word( bn, p_word ) );
|
|
Packit |
19ef86 |
RETVAL = bn;
|
|
Packit |
19ef86 |
OUTPUT:
|
|
Packit |
19ef86 |
RETVAL
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum
|
|
Packit |
19ef86 |
new_from_decimal(CLASS, p_dec_string)
|
|
Packit |
19ef86 |
char* p_dec_string;
|
|
Packit |
19ef86 |
PREINIT:
|
|
Packit |
19ef86 |
BIGNUM* bn;
|
|
Packit |
19ef86 |
CODE:
|
|
Packit |
19ef86 |
bn = NULL;
|
|
Packit |
19ef86 |
checkOpenSslCall( BN_dec2bn( &bn, p_dec_string ) );
|
|
Packit |
19ef86 |
RETVAL = bn;
|
|
Packit |
19ef86 |
OUTPUT:
|
|
Packit |
19ef86 |
RETVAL
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum
|
|
Packit |
19ef86 |
new_from_hex(CLASS, p_hex_string)
|
|
Packit |
19ef86 |
char* p_hex_string;
|
|
Packit |
19ef86 |
PREINIT:
|
|
Packit |
19ef86 |
BIGNUM* bn;
|
|
Packit |
19ef86 |
CODE:
|
|
Packit |
19ef86 |
bn = NULL;
|
|
Packit |
19ef86 |
checkOpenSslCall( BN_hex2bn( &bn, p_hex_string ) );
|
|
Packit |
19ef86 |
RETVAL = bn;
|
|
Packit |
19ef86 |
OUTPUT:
|
|
Packit |
19ef86 |
RETVAL
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum
|
|
Packit |
19ef86 |
new_from_bin(CLASS, p_bin_string_SV)
|
|
Packit |
19ef86 |
SV* p_bin_string_SV;
|
|
Packit |
19ef86 |
PREINIT:
|
|
Packit |
19ef86 |
BIGNUM* bn;
|
|
Packit |
19ef86 |
unsigned char* bin;
|
|
Packit |
19ef86 |
STRLEN bin_length;
|
|
Packit |
19ef86 |
CODE:
|
|
Packit |
19ef86 |
bin = (unsigned char*) SvPV( p_bin_string_SV, bin_length );
|
|
Packit |
19ef86 |
checkOpenSslCall( bn = BN_bin2bn( bin, bin_length, NULL ) );
|
|
Packit |
19ef86 |
RETVAL = bn;
|
|
Packit |
19ef86 |
OUTPUT:
|
|
Packit |
19ef86 |
RETVAL
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum
|
|
Packit |
19ef86 |
BN_new(CLASS)
|
|
Packit |
19ef86 |
PREINIT:
|
|
Packit |
19ef86 |
BIGNUM* bn;
|
|
Packit |
19ef86 |
CODE:
|
|
Packit |
19ef86 |
checkOpenSslCall( bn = BN_new() );
|
|
Packit |
19ef86 |
checkOpenSslCall( BN_set_word( bn, 0 ) );
|
|
Packit |
19ef86 |
RETVAL = bn;
|
|
Packit |
19ef86 |
OUTPUT:
|
|
Packit |
19ef86 |
RETVAL
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum
|
|
Packit |
19ef86 |
BN_zero(CLASS)
|
|
Packit |
19ef86 |
PREINIT:
|
|
Packit |
19ef86 |
BIGNUM *bn;
|
|
Packit |
19ef86 |
CODE:
|
|
Packit |
19ef86 |
checkOpenSslCall( bn = BN_new() );
|
|
Packit |
19ef86 |
checkOpenSslCall( BN_set_word( bn, 0 ) );
|
|
Packit |
19ef86 |
RETVAL = bn;
|
|
Packit |
19ef86 |
OUTPUT:
|
|
Packit |
19ef86 |
RETVAL
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum
|
|
Packit |
19ef86 |
BN_one(CLASS)
|
|
Packit |
19ef86 |
PREINIT:
|
|
Packit |
19ef86 |
BIGNUM *bn;
|
|
Packit |
19ef86 |
CODE:
|
|
Packit |
19ef86 |
checkOpenSslCall( bn = BN_new() );
|
|
Packit |
19ef86 |
checkOpenSslCall( BN_one( bn ) );
|
|
Packit |
19ef86 |
RETVAL = bn;
|
|
Packit |
19ef86 |
OUTPUT:
|
|
Packit |
19ef86 |
RETVAL
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum
|
|
Packit |
19ef86 |
BN_rand(CLASS, int bits, int top, int bottom)
|
|
Packit |
19ef86 |
PREINIT:
|
|
Packit |
19ef86 |
BIGNUM* bn;
|
|
Packit |
19ef86 |
CODE:
|
|
Packit |
19ef86 |
checkOpenSslCall( bn = BN_new() );
|
|
Packit |
19ef86 |
checkOpenSslCall( BN_rand( bn, bits, top, bottom) );
|
|
Packit |
19ef86 |
RETVAL = bn;
|
|
Packit |
19ef86 |
OUTPUT:
|
|
Packit |
19ef86 |
RETVAL
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum
|
|
Packit |
19ef86 |
BN_pseudo_rand(CLASS, int bits, int top, int bottom)
|
|
Packit |
19ef86 |
PREINIT:
|
|
Packit |
19ef86 |
BIGNUM* bn;
|
|
Packit |
19ef86 |
CODE:
|
|
Packit |
19ef86 |
checkOpenSslCall( bn = BN_new() );
|
|
Packit |
19ef86 |
checkOpenSslCall( BN_pseudo_rand( bn, bits, top, bottom) );
|
|
Packit |
19ef86 |
RETVAL = bn;
|
|
Packit |
19ef86 |
OUTPUT:
|
|
Packit |
19ef86 |
RETVAL
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum
|
|
Packit |
19ef86 |
BN_rand_range(CLASS, Crypt::OpenSSL::Bignum r)
|
|
Packit |
19ef86 |
PREINIT:
|
|
Packit |
19ef86 |
BIGNUM* bn;
|
|
Packit |
19ef86 |
CODE:
|
|
Packit |
19ef86 |
checkOpenSslCall( bn = BN_new() );
|
|
Packit |
19ef86 |
checkOpenSslCall( BN_rand_range( bn, r) );
|
|
Packit |
19ef86 |
RETVAL = bn;
|
|
Packit |
19ef86 |
OUTPUT:
|
|
Packit |
19ef86 |
RETVAL
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
void
|
|
Packit |
19ef86 |
BN_bless_pointer(CLASS, void *pointer)
|
|
Packit |
19ef86 |
PPCODE:
|
|
Packit |
19ef86 |
ST(0) = new_obj(pointer);
|
|
Packit |
19ef86 |
XSRETURN(1);
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
char*
|
|
Packit |
19ef86 |
BN_to_decimal(Crypt::OpenSSL::Bignum self)
|
|
Packit |
19ef86 |
CODE:
|
|
Packit |
19ef86 |
checkOpenSslCall( RETVAL = BN_bn2dec( self ) );
|
|
Packit |
19ef86 |
OUTPUT:
|
|
Packit |
19ef86 |
RETVAL
|
|
Packit |
19ef86 |
CLEANUP:
|
|
Packit |
19ef86 |
OPENSSL_free( RETVAL );
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
char*
|
|
Packit |
19ef86 |
BN_to_hex(Crypt::OpenSSL::Bignum self)
|
|
Packit |
19ef86 |
CODE:
|
|
Packit |
19ef86 |
checkOpenSslCall( RETVAL = BN_bn2hex( self ) );
|
|
Packit |
19ef86 |
OUTPUT:
|
|
Packit |
19ef86 |
RETVAL
|
|
Packit |
19ef86 |
CLEANUP:
|
|
Packit |
19ef86 |
OPENSSL_free( RETVAL );
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
SV*
|
|
Packit |
19ef86 |
BN_to_bin(Crypt::OpenSSL::Bignum self)
|
|
Packit |
19ef86 |
PREINIT:
|
|
Packit |
19ef86 |
unsigned char* bin;
|
|
Packit |
19ef86 |
int length;
|
|
Packit |
19ef86 |
CODE:
|
|
Packit |
19ef86 |
length = BN_num_bytes( self );
|
|
Packit |
19ef86 |
if (length>0) {
|
|
Packit |
19ef86 |
RETVAL = NEWSV(0, length);
|
|
Packit |
19ef86 |
SvPOK_only(RETVAL);
|
|
Packit |
19ef86 |
SvCUR_set(RETVAL, length);
|
|
Packit |
19ef86 |
bin = (unsigned char *)SvPV_nolen(RETVAL);
|
|
Packit |
19ef86 |
BN_bn2bin( self, bin );
|
|
Packit |
19ef86 |
}
|
|
Packit |
19ef86 |
else {
|
|
Packit |
19ef86 |
RETVAL = newSVpvn("", 0);
|
|
Packit |
19ef86 |
}
|
|
Packit |
19ef86 |
OUTPUT:
|
|
Packit |
19ef86 |
RETVAL
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
unsigned long
|
|
Packit |
19ef86 |
BN_get_word(Crypt::OpenSSL::Bignum self)
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
int
|
|
Packit |
19ef86 |
BN_is_zero(Crypt::OpenSSL::Bignum self)
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
int
|
|
Packit |
19ef86 |
BN_is_one(Crypt::OpenSSL::Bignum self)
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
int
|
|
Packit |
19ef86 |
BN_is_odd(Crypt::OpenSSL::Bignum self)
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
void
|
|
Packit |
19ef86 |
BN_add(Crypt::OpenSSL::Bignum self, Crypt::OpenSSL::Bignum b, ...)
|
|
Packit |
19ef86 |
PREINIT:
|
|
Packit |
19ef86 |
BIGNUM *bn;
|
|
Packit |
19ef86 |
PPCODE:
|
|
Packit |
19ef86 |
if( items > 3 )
|
|
Packit |
19ef86 |
croak( "usage: $bn->add( $bn2[, $target] )" );
|
|
Packit |
19ef86 |
bn = ( items < 3 ) ? BN_new() : sv2bn( ST(2) );
|
|
Packit |
19ef86 |
checkOpenSslCall( BN_add( bn, self, b ) );
|
|
Packit |
19ef86 |
ST(0) = ( (items < 3 ) ? new_obj( bn ) : ST(2) );
|
|
Packit |
19ef86 |
XSRETURN(1);
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
void
|
|
Packit |
19ef86 |
BN_sub(Crypt::OpenSSL::Bignum self, Crypt::OpenSSL::Bignum b, ...)
|
|
Packit |
19ef86 |
PREINIT:
|
|
Packit |
19ef86 |
BIGNUM *bn;
|
|
Packit |
19ef86 |
PPCODE:
|
|
Packit |
19ef86 |
if( items > 3 )
|
|
Packit |
19ef86 |
croak( "usage: $bn->sub( $bn2[, $target] )" );
|
|
Packit |
19ef86 |
bn = ( items < 3 ) ? BN_new() : sv2bn( ST(2) );
|
|
Packit |
19ef86 |
checkOpenSslCall( BN_sub( bn, self, b ) );
|
|
Packit |
19ef86 |
ST(0) = ( (items < 3 ) ? new_obj( bn ) : ST(2) );
|
|
Packit |
19ef86 |
XSRETURN(1);
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
void
|
|
Packit |
19ef86 |
BN_mul(self, b, ctx, ...)
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum self;
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum b;
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum::CTX ctx;
|
|
Packit |
19ef86 |
PREINIT:
|
|
Packit |
19ef86 |
BIGNUM* bn;
|
|
Packit |
19ef86 |
PPCODE:
|
|
Packit |
19ef86 |
if( items > 4 )
|
|
Packit |
19ef86 |
croak( "usage: $bn->mul( $bn2, $ctx, [, $target] )" );
|
|
Packit |
19ef86 |
bn = ( items < 4 ) ? BN_new() : sv2bn( ST(3) );
|
|
Packit |
19ef86 |
checkOpenSslCall( BN_mul( bn, self, b, ctx ) );
|
|
Packit |
19ef86 |
ST(0) = ( (items < 4 ) ? new_obj( bn ) : ST(3) );
|
|
Packit |
19ef86 |
XSRETURN(1);
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
void
|
|
Packit |
19ef86 |
BN_div(self, b, ctx, ...)
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum self;
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum b;
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum::CTX ctx;
|
|
Packit |
19ef86 |
PREINIT:
|
|
Packit |
19ef86 |
BIGNUM* quotient;
|
|
Packit |
19ef86 |
BIGNUM* remainder;
|
|
Packit |
19ef86 |
PPCODE:
|
|
Packit |
19ef86 |
if( items > 5 )
|
|
Packit |
19ef86 |
croak( "usage: $bn->div( $bn2, $ctx, [, $quotient [, $remainder ] ] )" );
|
|
Packit |
19ef86 |
quotient = ( items < 4 ) ? BN_new() : sv2bn( ST(3) );
|
|
Packit |
19ef86 |
remainder = ( items < 5 ) ? BN_new() : sv2bn( ST(4) );
|
|
Packit |
19ef86 |
checkOpenSslCall( BN_div( quotient, remainder, self, b, ctx ) );
|
|
Packit |
19ef86 |
ST(0) = ( (items < 4 ) ? new_obj( quotient ) : ST(3) );
|
|
Packit |
19ef86 |
ST(1) = ( (items < 5 ) ? new_obj( remainder ) : ST(4) );
|
|
Packit |
19ef86 |
XSRETURN(2);
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum
|
|
Packit |
19ef86 |
BN_sqr(Crypt::OpenSSL::Bignum self, Crypt::OpenSSL::Bignum::CTX ctx)
|
|
Packit |
19ef86 |
PREINIT:
|
|
Packit |
19ef86 |
BIGNUM* bn;
|
|
Packit |
19ef86 |
CODE:
|
|
Packit |
19ef86 |
checkOpenSslCall( bn = BN_new() );
|
|
Packit |
19ef86 |
checkOpenSslCall( BN_sqr( bn, self, ctx ) );
|
|
Packit |
19ef86 |
RETVAL = bn;
|
|
Packit |
19ef86 |
OUTPUT:
|
|
Packit |
19ef86 |
RETVAL
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
void
|
|
Packit |
19ef86 |
BN_mod(self, b, ctx, ...)
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum self;
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum b;
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum::CTX ctx;
|
|
Packit |
19ef86 |
PREINIT:
|
|
Packit |
19ef86 |
BIGNUM* bn;
|
|
Packit |
19ef86 |
PPCODE:
|
|
Packit |
19ef86 |
if( items > 4 )
|
|
Packit |
19ef86 |
croak( "usage: $bn->mod( $bn2, $ctx, [, $target] )" );
|
|
Packit |
19ef86 |
bn = ( items < 4 ) ? BN_new() : sv2bn( ST(3) );
|
|
Packit |
19ef86 |
checkOpenSslCall( BN_mod( bn, self, b, ctx ) );
|
|
Packit |
19ef86 |
ST(0) = ( (items < 4 ) ? new_obj( bn ) : ST(3) );
|
|
Packit |
19ef86 |
XSRETURN(1);
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum
|
|
Packit |
19ef86 |
BN_mod_mul(self, b, m, ctx)
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum self;
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum b;
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum m;
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum::CTX ctx;
|
|
Packit |
19ef86 |
PREINIT:
|
|
Packit |
19ef86 |
BIGNUM* bn;
|
|
Packit |
19ef86 |
CODE:
|
|
Packit |
19ef86 |
checkOpenSslCall( bn = BN_new() );
|
|
Packit |
19ef86 |
checkOpenSslCall( BN_mod_mul( bn, self, b, m, ctx ) );
|
|
Packit |
19ef86 |
RETVAL = bn;
|
|
Packit |
19ef86 |
OUTPUT:
|
|
Packit |
19ef86 |
RETVAL
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum
|
|
Packit |
19ef86 |
BN_exp(self, exp, ctx)
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum self;
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum exp;
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum::CTX ctx;
|
|
Packit |
19ef86 |
PREINIT:
|
|
Packit |
19ef86 |
BIGNUM* bn;
|
|
Packit |
19ef86 |
CODE:
|
|
Packit |
19ef86 |
checkOpenSslCall( bn = BN_new() );
|
|
Packit |
19ef86 |
checkOpenSslCall( BN_exp( bn, self, exp, ctx ) );
|
|
Packit |
19ef86 |
RETVAL = bn;
|
|
Packit |
19ef86 |
OUTPUT:
|
|
Packit |
19ef86 |
RETVAL
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum
|
|
Packit |
19ef86 |
BN_mod_exp(self, exp, mod, ctx)
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum self;
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum exp;
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum mod;
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum::CTX ctx;
|
|
Packit |
19ef86 |
PREINIT:
|
|
Packit |
19ef86 |
BIGNUM* bn;
|
|
Packit |
19ef86 |
CODE:
|
|
Packit |
19ef86 |
checkOpenSslCall( bn = BN_new() );
|
|
Packit |
19ef86 |
checkOpenSslCall( BN_mod_exp( bn, self, exp, mod, ctx ) );
|
|
Packit |
19ef86 |
RETVAL = bn;
|
|
Packit |
19ef86 |
OUTPUT:
|
|
Packit |
19ef86 |
RETVAL
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum
|
|
Packit |
19ef86 |
BN_mod_inverse(self, n, ctx)
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum self;
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum n;
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum::CTX ctx;
|
|
Packit |
19ef86 |
PREINIT:
|
|
Packit |
19ef86 |
BIGNUM* bn;
|
|
Packit |
19ef86 |
CODE:
|
|
Packit |
19ef86 |
checkOpenSslCall( bn = BN_new() );
|
|
Packit |
19ef86 |
checkOpenSslCall( BN_mod_inverse( bn, self, n, ctx ) );
|
|
Packit |
19ef86 |
RETVAL = bn;
|
|
Packit |
19ef86 |
OUTPUT:
|
|
Packit |
19ef86 |
RETVAL
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum
|
|
Packit |
19ef86 |
BN_gcd(self, b, ctx)
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum self;
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum b;
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum::CTX ctx;
|
|
Packit |
19ef86 |
PREINIT:
|
|
Packit |
19ef86 |
BIGNUM* bn;
|
|
Packit |
19ef86 |
CODE:
|
|
Packit |
19ef86 |
checkOpenSslCall( bn = BN_new() );
|
|
Packit |
19ef86 |
checkOpenSslCall( BN_gcd( bn, self, b, ctx ) );
|
|
Packit |
19ef86 |
RETVAL = bn;
|
|
Packit |
19ef86 |
OUTPUT:
|
|
Packit |
19ef86 |
RETVAL
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
int
|
|
Packit |
19ef86 |
BN_equals(Crypt::OpenSSL::Bignum self, Crypt::OpenSSL::Bignum b)
|
|
Packit |
19ef86 |
CODE:
|
|
Packit |
19ef86 |
RETVAL = BN_cmp(self, b) == 0 ? 1 : 0;
|
|
Packit |
19ef86 |
OUTPUT:
|
|
Packit |
19ef86 |
RETVAL
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
int
|
|
Packit |
19ef86 |
BN_cmp(Crypt::OpenSSL::Bignum self, Crypt::OpenSSL::Bignum b)
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
int
|
|
Packit |
19ef86 |
BN_num_bits(Crypt::OpenSSL::Bignum self)
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
int
|
|
Packit |
19ef86 |
BN_num_bytes(Crypt::OpenSSL::Bignum self)
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum
|
|
Packit |
19ef86 |
BN_rshift(Crypt::OpenSSL::Bignum self, int n)
|
|
Packit |
19ef86 |
PREINIT:
|
|
Packit |
19ef86 |
BIGNUM* bn;
|
|
Packit |
19ef86 |
CODE:
|
|
Packit |
19ef86 |
checkOpenSslCall( bn = BN_new() );
|
|
Packit |
19ef86 |
checkOpenSslCall( BN_rshift( bn, self, n ) );
|
|
Packit |
19ef86 |
RETVAL = bn;
|
|
Packit |
19ef86 |
OUTPUT:
|
|
Packit |
19ef86 |
RETVAL
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum
|
|
Packit |
19ef86 |
BN_lshift(Crypt::OpenSSL::Bignum self, int n)
|
|
Packit |
19ef86 |
PREINIT:
|
|
Packit |
19ef86 |
BIGNUM* bn;
|
|
Packit |
19ef86 |
CODE:
|
|
Packit |
19ef86 |
checkOpenSslCall( bn = BN_new() );
|
|
Packit |
19ef86 |
checkOpenSslCall( BN_lshift( bn, self, n ) );
|
|
Packit |
19ef86 |
RETVAL = bn;
|
|
Packit |
19ef86 |
OUTPUT:
|
|
Packit |
19ef86 |
RETVAL
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
int
|
|
Packit |
19ef86 |
BN_ucmp(Crypt::OpenSSL::Bignum self, Crypt::OpenSSL::Bignum b)
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
void
|
|
Packit |
19ef86 |
BN_swap(Crypt::OpenSSL::Bignum self, Crypt::OpenSSL::Bignum b)
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum
|
|
Packit |
19ef86 |
BN_copy(Crypt::OpenSSL::Bignum self)
|
|
Packit |
19ef86 |
CODE:
|
|
Packit |
19ef86 |
checkOpenSslCall( RETVAL = BN_dup(self) );
|
|
Packit |
19ef86 |
OUTPUT:
|
|
Packit |
19ef86 |
RETVAL
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
IV
|
|
Packit |
19ef86 |
BN_pointer_copy(Crypt::OpenSSL::Bignum self)
|
|
Packit |
19ef86 |
CODE:
|
|
Packit |
19ef86 |
checkOpenSslCall( RETVAL = PTR2IV(BN_dup(self)) );
|
|
Packit |
19ef86 |
OUTPUT:
|
|
Packit |
19ef86 |
RETVAL
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
MODULE = Crypt::OpenSSL::Bignum PACKAGE = Crypt::OpenSSL::Bignum::CTX
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
Crypt::OpenSSL::Bignum::CTX
|
|
Packit |
19ef86 |
new(CLASS)
|
|
Packit |
19ef86 |
CODE:
|
|
Packit |
19ef86 |
RETVAL = BN_CTX_new();
|
|
Packit |
19ef86 |
OUTPUT:
|
|
Packit |
19ef86 |
RETVAL
|
|
Packit |
19ef86 |
|
|
Packit |
19ef86 |
void
|
|
Packit |
19ef86 |
DESTROY(Crypt::OpenSSL::Bignum::CTX self)
|
|
Packit |
19ef86 |
CODE:
|
|
Packit |
19ef86 |
BN_CTX_free(self);
|