如何将C NULL传递到基于XS的函数

  • 本文关键字:XS 函数 NULL perl xs
  • 更新时间 :
  • 英文 :


我正在尝试使用crypt :: openssl :: ec :: ec_point :: mul((crypt :: openssl :: ec ec module。它具有这样的C原型:

int EC_POINT_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, const EC_POINT *q, const BIGNUM *m, BN_CTX *ctx)

我需要通过null,null而不是EC_POINT *qconst BIGNUM *m,如下所示:https://stackoverflow.com/a/12482384/3090865

但是该模块具有这样的类型:

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 ) );

因此,如果我通过undef或0,我会得到"参数不是对象"错误。可以在不更改此模块的情况下制作我想要的东西吗?也许我可以以某种方式创建基于零的对象?

根据TypeMap,通过对零的引用应起作用:

Crypt::OpenSSL::EC::EC_POINT::mul($group, $r, $n, , , $ctx);

相关内容

  • 没有找到相关文章

最新更新