asn1c继续使用long而不是INTEGER_t,但我没有问这个问题

时间:2015-03-13 06:55:17

标签: asn.1

让我有一个asn:

A ::= SEQUENCE {
    a INTEGER (0 .. 255),       
    b INTEGER (0 .. 255),       
    c INTEGER (0 .. 65535),     
    d INTEGER (0 .. 65535),
    e [0] INTEGER (0 ..255) OPTIONAL, 
    f[1] INTEGER (0 .. 63) OPTIONAL 
}

我使用fnative-types编译它,但代码看起来像

typedef struct A{
long     a;
long     b;
long     c;
long     d;
long    *e/* OPTIONAL */;
long    *f/* OPTIONAL */;

/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} A_t; 

为什么这样?它导致长DER字节序列

2 个答案:

答案 0 :(得分:0)

根据您使用的ASN.1编译器,您可以指定用于结构字段的C变量类型。

在Objective Systems工具集中,您可以拥有一个XML配置文件,该文件与ASN.1模式一起输入到编译器。这允许您告诉ASN.1编译器应该为a,b,c等使用什么类型的整数。

答案 1 :(得分:0)

要通过asn1c强制创建结构,请将其与export const authenticate = (req, res) => new Promise((resolve, reject) => { passport.authenticate( [passport strategy], { session: false }, (err, user) => { if (err) reject(new Error(err)) else if (!user) reject(new Error('Not authenticated')) resolve(user) })(req, res) }) 选项一起使用。