LINUX.ORG.RU

Пытаюсь распарсить asn1 строку (rsa public key)

 


0

1

Делаю так

use Crypt::PK::RSA;
use Convert::ASN1;

my $pk = Crypt::PK::RSA->new();
my $ex = 65537;
my $ex_str = "65537";
$pk->generate_key(128, $ex);


my $private = $pk->export_key_der('private');
my $public = $pk->export_key_der('public');

my $asn_key = Convert::ASN1->new();
print $public."\n";
#$asn_key->prepare_file('1.asn');
$asn_key->prepare(q(SEQUENCE {
    modulus           INTEGER,
    publicExponent    INTEGER 
}));
$out = $asn_key->decode($public);
print $out->{modulus}."    ddddddddd".$out->{publicExponent}."\n";

И вижу пустоты на выходе. Что я делаю не так?

★★★★★

В общем дело примерно в том, что мой asn имеет другой формат, чем тот что я хочу.

Dudraug ★★★★★
() автор топика

Все равно не работает

my $asn = Convert::ASN1->new;
$asn->prepare(q(SEQUENCE {
					SEQUENCE {
						OBJECT IDENTIFIER,
						NULL
					}
					BIT STRING 0 unused bits, encapsulates {
						SEQUENCE {
							modulus           INTEGER,
							publicExponent    INTEGER
						}
					}
				}
			));



#my $asn_key = $asn->find('SubjectPublicKeyInfo');


my $out = $asn->decode($public);
print $out->{modulus}."    ddddddddd".$out->{publicExponent}."\n";

Dudraug ★★★★★
() автор топика
Ответ на: комментарий от Dudraug

Опять не тот формат, да что такое...

Dudraug ★★★★★
() автор топика
Ответ на: комментарий от DELIRIUM

Да проще будет просто прочитать два значения с известными смещениями.

Dudraug ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.