Извлечь модуль publi c -key из PrivateKey / CertificateRequest / Certificate в Python в том же формате, что и OpenSSL - PullRequest
0 голосов
/ 18 июня 2020

с использованием OpenSSL, я могу извлечь модуль ключа publi c из различных объектов с помощью следующих команд:

openssl rsa -noout -modulus -in {KEY}
openssl req -noout -modulus -in {CSR}
openssl x509 -noout -modulus -in {CERT}

Я пытаюсь воспроизвести это в python, используя cryptography или пакет pyopenssl.

Я могу извлечь ключ publi c из всех этих объектов в Python, но я не могу понять, как кодировать модуль в соответствии с выводом командной строки OpenSSL - который выглядит как версия формата с кодировкой base64, который я не могу понять из документации или исходного кода любого из трех проектов.

1 Ответ

1 голос
/ 18 июня 2020

Класс RSAPublicNumbers ( ссылка ) в криптографии имеет то, что вы ищете. Вы можете получить его, используя метод to_cryptography_key ( link ) класса PKey в pyopenssl.

from OpenSSL.crypto import load_certificate
from OpenSSL.crypto import FILETYPE_PEM

with open(certfile, 'rb') as fp:
    cert = load_certificate(FILETYPE_PEM, fp.read())

# This gives you the modulus in integer form
modn = cert.get_pubkey().to_cryptography_key().public_numbers().n

# Convert it to hex
print('{:X}'.format(modn))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...