如何翻译Perl的转换:: ASN1到Ruby代码?
题
有人可以告诉我这是什么代码所做的,我怎么能转换为红宝石最简单的方法是什么?
#!perl
use Convert::ASN1;
my $asn1 = Convert::ASN1->new(encoding => 'DER');
$asn1->prepare(q<
Algorithm ::= SEQUENCE {
oid OBJECT IDENTIFIER,
opt ANY OPTIONAL
}
Signature ::= SEQUENCE {
alg Algorithm,
sig BIT STRING
}
>);
my $data = $asn1->encode(sig => $body,
alg => {oid => sha512WithRSAEncryption()});
这是一个片的 mexumgen ,Perl库其中符号update.rdf的Mozilla产品使用OpenSSL。
解决方案
此特定的例子中可以被转换为
data = ["308191300b06092a864886f70d01010d03818100" + body.unpack("H*")].pack("H*")
其中“308191300b06092a864886f70d01010d03818100”是从ASN表达高达BIT STRING字段(包括比特串的大小),组(“H”)制成的前缀的二进制数据转换成十六进制表示并解压缩(“H”)的十六进制转换字符串回二进制。
但更普遍的ASN转换器最好是使用OpenSSL :: ASN1,附带了红宝石作为标准库。这是完全没有证件,但一些人设法有一些使用它
其他提示
你有没有看着的Net :: ASN1 ?
不隶属于 StackOverflow