문제

누군가이 코드가 무엇을하는지 조언 할 수 있고 어떻게 가장 간단한 방식으로 루비로 변환 할 수 있습니까?

    #!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()});

그것은 a의 조각입니다 Mexumgen, OpenSSL이있는 Mozilla 제품의 update.rdf에 서명하는 Perl 라이브러리.

도움이 되었습니까?

해결책

이 특정 예는 AS로 변환 될 수 있습니다

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

"308191300B06092A864886F70D01010D03818100"은 ASN 표현식에서 비트 스트링 필드까지 (비트 문자열의 크기를 포함하여), 팩 ( "H"), 팩 ( "H")을 바이너리로 변환하여 바이너리를 바이너리로 변환합니다. .

그러나보다 일반적인 ASN 변환기의 경우 Ruby와 함께 표준 라이브러리로 제공되는 OpenSSL :: ASN1을 사용하는 것이 좋습니다. 완전히 문서화되지 않았지만 일부 사람들은 관리했습니다 그것을 약간 사용하십시오

다른 팁

당신은 보셨습니까? NET :: ASN1?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top