Perl의 Convert :: 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()});
그것은 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?
제휴하지 않습니다 StackOverflow