سؤال

هل يمكن لشخص ما أن ينصحني ما يفعله هذا الرمز وكيف يمكنني تحويله إلى روبي بأكثر الطرق بسيطة؟

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

انها قطعة من mexumgen., ، مكتبة بيرل التي توقع تحديثها. RDF لمنتجات موزيلا مع Openssl.

هل كانت مفيدة؟

المحلول

يمكن تحويل هذا المثال بالذات

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

حيث "308191300B06092A864886F70D00D03818100" هي بادئة مصنوعة من حقل سلسلة ASN إلى BIT وبعد

ولكن لمزيد من محول ASN عام، من الأفضل استخدام Openssl :: ASN1، والتي تأتي مع Ruby ككتبة قياسية. انها غير موثقة تماما ولكن بعض الناس تمكنوا من لديك بعض استخدامها

نصائح أخرى

هل نظرت في نت :: ASN1.?

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top