Как подписать данные с помощью зашифрованного закрытого ключа RSA (AES-256-CBC) в Python - PullRequest
0 голосов
/ 26 мая 2019

Частичный пример private_key (эта переменная является строкой):

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-256-CBC,hidden_text..

lots_of_hidden_text..

-----END RSA PRIVATE KEY-----

Когда я пытаюсь сделать следующее:

from Crypto.PublicKey import RSA
from Crypto.Signature import PKCS1_v1_5
rsakey = RSA.importKey(private_key, passphrase=privkey_secret_string)
signer = PKCS1_v1_5.new(rsakey)
signature = signer.sign(data)

Я получаю ошибку значения для importKey:

Error: ValueError: Unsupport PEM encryption algorithm.

Я вижу, что RSA.importKey не поддерживает AES-256-CBC, но я не могу найти способ импортировать этот закрытый ключ.

Единственное решение, которое я видел для создания подписавшего AES:

signer = AES.new(privkey_secret_string, AES.MODE_CBC, IV=iv)

Но это не использует закрытый ключ

1 Ответ

0 голосов
/ 26 мая 2019

Вы можете либо переключиться на PyCryptodome, либо расшифровать ключ с помощью системного вызова openssl до импорта ключа:

echo PASSPHRASE | openssl rsa -in key.pem

...