Skip to content

Commit 42c3e81

Browse files
committed
move pycrypto_backend PKCS8<->PKCS1 handling to _asn module
1 parent 6eb982f commit 42c3e81

1 file changed

Lines changed: 6 additions & 4 deletions

File tree

jose/backends/pycrypto_backend.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,13 @@
44
import Crypto.Hash.SHA384
55
import Crypto.Hash.SHA512
66

7+
from Crypto.IO import PEM
78
from Crypto.PublicKey import RSA
89
from Crypto.Signature import PKCS1_v1_5
910
from Crypto.Util.asn1 import DerSequence
1011

1112
from jose.backends.base import Key
12-
from jose.backends.rsa_backend import pem_to_spki
13+
from jose.backends._asn1 import rsa_public_key_pkcs8_to_pkcs1
1314
from jose.utils import base64_to_long, long_to_base64
1415
from jose.constants import ALGORITHMS
1516
from jose.exceptions import JWKError
@@ -153,11 +154,12 @@ def to_pem(self, pem_format='PKCS8'):
153154

154155
if self.is_public():
155156
# PyCrypto/dome always export public keys as PKCS8
156-
pem = self.prepared_key.exportKey('PEM')
157157
if pkcs == 8:
158-
pem = pem_to_spki(pem, fmt='PKCS8')
158+
pem = self.prepared_key.exportKey('PEM')
159159
else:
160-
pem = pem_to_spki(pem, fmt='PKCS1')
160+
pkcs8_der = self.prepared_key.exportKey('DER')
161+
pkcs1_der = rsa_public_key_pkcs8_to_pkcs1(pkcs8_der)
162+
pem = PEM.encode(pkcs1_der, 'RSA PUBLIC KEY').encode('utf-8')
161163
return pem
162164
else:
163165
pem = self.prepared_key.exportKey('PEM', pkcs=pkcs)

0 commit comments

Comments
 (0)