【问题标题】:How can I translate Perl's Convert::ASN1 to Ruby code?如何将 Perl 的 Convert::ASN1 转换为 Ruby 代码?
【发布时间】:2010-09-28 07:41:06
【问题描述】:

谁能告诉我这段代码的作用以及如何以最简单的方式将其转换为 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 库使用 openssl 为 Mozilla 产品签名 update.rdf。

【问题讨论】:

标签: ruby perl openssl asn.1 nss


【解决方案1】:

这个特定的例子可以转换为

data = ["308191300b06092a864886f70d01010d03818100" + body.unpack("H*")].pack("H*")

其中“308191300b06092a864886f70d01010d03818100”是从该 ASN 表达式到 BIT STRING 字段(包括 BIT STRING 的大小)的前缀,pack("H") 将二进制数据转换为十六进制表示,unpack("H") 将字符串转换为十六进制返回二进制。

但对于更通用的 ASN 转换器,最好使用 OpenSSL::ASN1,它带有 ruby​​ 作为标准库。它完全没有记录,但有些人设法have some use of it

【讨论】:

【解决方案2】:

你看过Net::ASN1吗?

【讨论】:

  • 你呢?它是空的。只是一个两年的存根
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-06
  • 2011-03-14
  • 1970-01-01
  • 1970-01-01
  • 2012-04-03
  • 1970-01-01
  • 2014-11-22
相关资源
最近更新 更多