Pregunta

Puede alguien aconsejarme lo que hace este código y cómo puedo convertir a Rubí en la mayor parte de forma sencilla?

    #!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 una pieza de un mexumgen , biblioteca Perl, que update.rdf señal para Mozilla productos con OpenSSL.

¿Fue útil?

Solución

Este ejemplo particular se puede convertir como

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

donde "308191300b06092a864886f70d01010d03818100" es prefijo hecho de que la expresión de ASN hasta campo BIT STRING (incluyendo el tamaño de BIT STRING), paquete ( "H") convierte los datos binarios a la representación hexadecimal y desempaquetar ( "H") convierte cadena en hex de nuevo a binario.

Sin embargo, para el convertidor más general ASN es mejor usar OpenSSL :: ASN1, que viene con el rubí como biblioteca estándar. Está completamente indocumentado pero algunas personas logró tener algún uso de ella

Otros consejos

¿Has mirado en Net :: ASN1 ?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top