Я пытаюсь прочитать некоторые открытые ключи PEM, используя Python GAE.
модуль RSAKey не анализирует открытые ключи в формате PEM, только закрытые.
Если я смогу получить модуль и показатель степени из PEM, я могу пойти оттуда.
Изучая типичный PEM (того типа, который я буду использовать) с openssl asn1parse, я могу найти BIT STRING
там, где они живут.
Но я не могу понять, как их найти с помощью gdata ASN1Parser.
Например, вывод openssl:
openssl asn1parse -i -in test.pem
0:d=0 hl=3 l= 159 cons: SEQUENCE
3:d=1 hl=2 l= 13 cons: SEQUENCE
5:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption
16:d=2 hl=2 l= 0 prim: NULL
18:d=1 hl=3 l= 141 prim: BIT STRING
А потом, сверляя, я вижу модуль и экспоненту RSA:
openssl asn1parse -strparse 18 -i -in test.pem
0:d=0 hl=3 l= 137 cons: SEQUENCE
3:d=1 hl=3 l= 129 prim: INTEGER :09C7A8007111B2B...
135:d=1 hl=2 l= 3 prim: INTEGER :010001
Если я тогда возьму этот же PEM и в Python вставлю его в bytes
, как мне получить правильного потомка для получения этих значений?
asn1 = ASN1Parser(bytes)
modulus = asn1.getChild(1).getChild(0).value
exponent = asn1.getChild(1).getChild(1).value
binascii.hexlify(modulus)
Или что? Я не могу понять, какой уровень и т.д. мне нужно посмотреть. Я также действительно не знаю, что я делаю ... Используя hexlify, я могу видеть значения там, но всегда (игра с дочерью и глубина) с дополнительным материалом впереди, и / или не с полным числом, как показано в openssl.