Question

Quelqu'un peut-il me conseiller ce que ce code fait et comment puis-je convertir en Ruby façon la plus simple?

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

Il est un morceau d'un mexumgen , bibliothèque Perl qui signe update.rdf pour Mozilla produits avec OpenSSL.

Était-ce utile?

La solution

Cet exemple particulier peut être converti en

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

où « 308191300b06092a864886f70d01010d03818100 » est préfixe fabriqué à partir de cette expression de l'ASN jusqu'à champ de chaîne de bits (y compris la taille du BIT STRING), paquet ( « H ») convertit les données binaires en représentation hexadécimale et unpack ( « H ») convertit chaîne en hexadécimal retour en binaire.

Mais pour le convertisseur de l'ASN plus générale, il est préférable d'utiliser OpenSSL :: ASN1, qui est livré avec rubis comme bibliothèque standard. Il est tout à fait en situation irrégulière, mais certaines personnes ont réussi à avoir un certain usage

Autres conseils

Avez-vous regardé Net :: ASN1 ?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top