代码之家  ›  专栏  ›  技术社区  ›  vava

如何将Perl的convert::asn1转换为ruby代码?

  •  1
  • vava  · 技术社区  · 16 年前

    有人能告诉我这段代码是做什么的吗?我怎样才能以最简单的方式将它转换成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。

    2 回复  |  直到 16 年前
        1
  •  1
  •   vava    16 年前

    此特定示例可以转换为

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

    其中,“308191300b0692864886f70d01010d03818100”是从ASN表达式到位字符串字段(包括位字符串大小)的前缀,pack(“h”)将二进制数据转换为十六进制表示,unpack(“h”)将十六进制字符串转换为二进制。

    但是对于更通用的ASN转换器,最好使用OpenSSL::ASN1,它与Ruby一起作为标准库。它完全没有文件,但有些人设法 have some use of it

        2
  •  0
  •   Keltia    16 年前

    你看过吗 Net::ASN1 ?

    推荐文章