Skip to content

Commit a61a392

Browse files
committed
move rsa_backend PKCS8<->PKCS1 handling to _asn module
1 parent 42c3e81 commit a61a392

1 file changed

Lines changed: 8 additions & 17 deletions

File tree

jose/backends/rsa_backend.py

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
import binascii
22

33
import six
4-
from pyasn1.codec.der import encoder
54
from pyasn1.error import PyAsn1Error
6-
from pyasn1.type import univ
75

86
import rsa as pyrsa
97
import rsa.pem as pyrsa_pem
10-
from rsa.asn1 import OpenSSLPubKey, AsnPubKey, PubKeyHeader
118

129
from jose.backends.base import Key
13-
from jose.backends._asn1 import rsa_private_key_pkcs1_to_pkcs8, rsa_private_key_pkcs8_to_pkcs1
10+
from jose.backends._asn1 import (
11+
rsa_private_key_pkcs1_to_pkcs8,
12+
rsa_private_key_pkcs8_to_pkcs1,
13+
rsa_public_key_pkcs1_to_pkcs8,
14+
)
1415
from jose.constants import ALGORITHMS
1516
from jose.exceptions import JWKError
1617
from jose.utils import base64_to_long, long_to_base64
@@ -226,19 +227,9 @@ def to_pem(self, pem_format='PKCS8'):
226227
raise ValueError("Invalid pem format specified: %r" % (pem_format,))
227228
else:
228229
if pem_format == 'PKCS8':
229-
asn_key = AsnPubKey()
230-
asn_key.setComponentByName('modulus', self._prepared_key.n)
231-
asn_key.setComponentByName('publicExponent', self._prepared_key.e)
232-
der = encoder.encode(asn_key)
233-
234-
header = PubKeyHeader()
235-
header['oid'] = univ.ObjectIdentifier(RSA_ENCRYPTION_ASN1_OID)
236-
pub_key = OpenSSLPubKey()
237-
pub_key['header'] = header
238-
pub_key['key'] = univ.BitString.fromOctetString(der)
239-
240-
der = encoder.encode(pub_key)
241-
pem = pyrsa_pem.save_pem(der, pem_marker='PUBLIC KEY')
230+
pkcs1_der = self._prepared_key.save_pkcs1(format="DER")
231+
pkcs8_der = rsa_public_key_pkcs1_to_pkcs8(pkcs1_der)
232+
pem = pyrsa_pem.save_pem(pkcs8_der, pem_marker='PUBLIC KEY')
242233
elif pem_format == 'PKCS1':
243234
der = self._prepared_key.save_pkcs1(format='DER')
244235
pem = pyrsa_pem.save_pem(der, pem_marker='RSA PUBLIC KEY')

0 commit comments

Comments
 (0)