Wie kann ich Perl Convert :: ASN1 zu Ruby-Code übersetzen?
Frage
Kann mir jemand raten, was dieser Code tut und wie kann ich es Ruby in einfachste Weise umwandeln?
#!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()});
Es ist ein Stück eines mexumgen , Perl-Bibliothek, die Zeichen update.rdf für Mozilla Produkte mit openSSL.
Lösung
Dieses besondere Beispiel kann umgewandelt werden
data = ["308191300b06092a864886f70d01010d03818100" + body.unpack("H*")].pack("H*")
, wobei "308191300b06092a864886f70d01010d03818100" ist Präfix von der ASN-Expression aus zu BIT STRING-Feld (einschließlich Größe von BIT STRING), Pack ( "H") Binärdaten hex Darstellung konvertiert und entpacken ( "H") wandelt Zeichenfolge in hex zurück zu binär.
Aber für allgemeinere ASN-Konverter ist es besser, OpenSSL :: ASN1 zu verwenden, die als Standard-Bibliothek mit Rubin kommt. Das ist völlig ohne Papiere, aber einige Leute es geschaffen, einig Gebrauch davon hat
Andere Tipps
Haben Sie sich unter Net :: ASN1 ?