1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
TYPEMAP
BIGNUM * BIGNUM
const BIGNUM * BIGNUM
BN_CTX * T_PTRREF
const EC_METHOD * EC_METHOD
EC_GROUP * EC_GROUP
const EC_GROUP * EC_GROUP
EC_POINT * EC_POINT
const EC_POINT * EC_POINT
EC_KEY * EC_KEY
const EC_KEY * EC_KEY
BIO * T_PTRREF
point_conversion_form_t T_ENUM
const unsigned char * T_PV
INPUT
BIGNUM
if( ! SvROK( $arg ) ) { croak( \"argument is not an object\" ); }
$var = (${type}) SvIV( SvRV( $arg ) );
EC_METHOD
if( ! SvROK( $arg ) ) { croak( \"argument is not an object\" ); }
$var = (${type}) SvIV( SvRV( $arg ) );
EC_GROUP
if( ! SvROK( $arg ) ) { croak( \"argument is not an object\" ); }
$var = (${type}) SvIV( SvRV( $arg ) );
EC_POINT
if( ! SvROK( $arg ) ) { croak( \"argument is not an object\" ); }
$var = (${type}) SvIV( SvRV( $arg ) );
EC_KEY
if( ! SvROK( $arg ) ) { croak( \"argument is not an object\" ); }
$var = (${type}) SvIV( SvRV( $arg ) );
# These output types create blessed mortal references to EC pointers
# which ensures that you can call class methods on them and the DESTROY gets
# called when they go out of scope, for auto cleanup
OUTPUT
BIGNUM
sv_setsv($arg, sv_2mortal(sv_bless(newRV_noinc( newSViv( (IV)$var ) ), gv_stashpv("Crypt::OpenSSL::Bignum",1))));
EC_METHOD
sv_setsv($arg, sv_2mortal(sv_bless(newRV_noinc( newSViv( (IV)$var ) ), gv_stashpv("Crypt::OpenSSL::EC::EC_METHOD",1))));
EC_GROUP
sv_setsv($arg, sv_2mortal(sv_bless(newRV_noinc( newSViv( (IV)$var ) ), gv_stashpv("Crypt::OpenSSL::EC::EC_GROUP",1))));
EC_POINT
sv_setsv($arg, sv_2mortal(sv_bless(newRV_noinc( newSViv( (IV)$var ) ), gv_stashpv("Crypt::OpenSSL::EC::EC_POINT",1))));
EC_KEY
sv_setsv($arg, sv_2mortal(sv_bless(newRV_noinc( newSViv( (IV)$var ) ), gv_stashpv("Crypt::OpenSSL::EC::EC_KEY",1))));
|