Я пытаюсь написать скрипт Python для преобразования закрытого ключа EC из PKCS8 PEM в DER с использованием криптографии в Python.
Я мог сделать это ранее, используя openssl, вот так:
openssl pkcs8 -nocrypt -in pem_key.p8 -out der_key.der -outform der
Я проверяю, что файл DER, созданный с помощью OpenSSL, является правильным, выполнив:
from ecdsa import SigningKey
file = open('der_key.der', 'rb')
SigningKey.from_der(file.read())
>>> <ecdsa.keys.SigningKey at 0x112bd3630>
Теперь я пытаюсь сделать то же самое, используя Python
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import serialization
pem_key_bytes = str.encode(pem_key)
key = serialization.load_pem_private_key(
pem_key_bytes, password=None, backend=default_backend()
)
pri_der = key.private_bytes(
encoding=serialization.Encoding.DER,
format=serialization.PrivateFormat.PKCS8,
encryption_algorithm=serialization.NoEncryption(),
)
Однако при тестировании этого ключа в кодировке DER, используя тот же метод, что и выше, я получаю:
НеожиданноDER: ожидаемое «1» при запуске DER privkey, получено 0
Чего мне не хватает?