Почему в PEM Google осталось сорок символов для упаковки расширения Chrome - PullRequest
1 голос
/ 01 февраля 2011

Недавно я пытался выяснить, как заставить PyCrypto распознавать PEM, которые создаются в процессе упаковки в Google Chrome. Проблема в том, что стандартный метод importKey вызывает ошибки. После довольно долгого процесса я наконец понял, что вначале могу смоделировать импорт путем обратной разработки метода DerSequence.decode (все детали здесь ). К сожалению, это оставляет меня с одной нерешенной проблемой.

Я могу получить ключ для импорта, и похоже, что он достаточно последовательный, но у меня осталось 40 символов.

import binascii

# read the pem file into chromepem
# the first and last lines are useless, 
# we need it to be a string, not a tuple 
# and it needs to be one string with no newlines.
chromepem = ''.join(open("chrome.pem","r").readlines()[1:-1]).replace("\n","")

# not sure why, but it looks like the first 40 characters aren't necessary.
# removing them seems to create a consistent public key anyway...
pem = binascii.a2b_base64(chromepem[40:])

Кто-нибудь знает, почему эти 40 символов есть? Будет ли их игнорирование вызывать проблемы с некоторыми парами закрытых / открытых ключей?

1 Ответ

2 голосов
/ 03 февраля 2011

На данный момент самое простое, что нужно сделать - это использовать openssl rsatiity для преобразования файла chrome.pem в файл chrome.der. Что-то вроде

openssl rsa -in chrome.pem -out chrome.der -outform DER

должен сделать свое дело. Теперь вы можете использовать байты из chrome.der непосредственно в методе RSA.importKey().

...