Я загружаю объект Pyjks PrivateKeyEntry в PEM, а затем пытаюсь загрузить закодированную в pem строку в объект Pkey. Как вы уже догадались, я пытаюсь экспортировать PrivateKeyEntry вместе с цепочкой сертификатов в файл. У нас есть пользовательский интерфейс, который может импортировать сертификаты и контейнеры p12 в хранилища ключей Java, и я пытаюсь сделать их также загружаемыми.
pkey_pem = pkey_as_pem(keystore_entry)
load_privatekey(crypto.FILETYPE_PEM, pkey_pem)
Однако ошибка, которую я получаю из библиотеки OpenSSL.crypto, по меньшей мере бесполезна:
OpenSSL.crypto.Error: [('asn1 encoding routines', 'asn1_check_tlen', 'wrong tag'), ('asn1 encoding routines', 'asn1_item_embed_d2i', 'nested asn1 error'), ('rsa routines', 'old_rsa_priv_decode', 'RSA lib'), ('asn1 encoding routines', 'asn1_check_tlen', 'wrong tag'), ('asn1 encoding routines', 'asn1_item_embed_d2i', 'nested asn1 error'), ('PEM routines', 'PEM_read_bio_PrivateKey', 'ASN1 lib')]
Пайкс также показывает, что это делается так же: https://github.com/kurtbrose/pyjks/blob/master/tools/readks.py
Я могу экспортировать сертификат, как это просто отлично.
РЕДАКТИРОВАТЬ: также пытается с load_privatekey(crypto.FILETYPE_ASN1, pkey_pem._pkey)
, приводит к похожему загадочному сообщению об ошибке:
{Error}[('asn1 encoding routines', 'asn1_check_tlen', 'wrong tag'), ('asn1 encoding routines', 'asn1_template_noexp_d2i', 'nested asn1 error'), ('asn1 encoding routines', 'asn1_check_tlen', 'wrong tag'), ('asn1 encoding routines', 'asn1_item_embed_d2i', 'nested asn1 error'), ('rsa routines', 'old_rsa_priv_decode', 'RSA lib'), ('asn1 encoding routines', 'asn1_check_tlen', 'wrong tag'), ('asn1 encoding routines', 'asn1_item_embed_d2i', 'nested asn1 error')]