Skip to content

Commit e71b438

Browse files
committed
Add try/except guards for pyasn1 imports
1 parent 56e5bad commit e71b438

File tree

2 files changed

+30
-12
lines changed

2 files changed

+30
-12
lines changed

adafruit_rsa/asn1.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@
99
"""
1010

1111
# pylint: disable=no-name-in-module, too-few-public-methods
12-
from pyasn1.type import univ, namedtype, tag
12+
try:
13+
from pyasn1.type import univ, namedtype, tag
14+
except ImportError as err:
15+
raise ImportError("Usage of asn1.py requires pyasn1 library") from err
1316

1417
__version__ = "0.0.0-auto.0"
1518
__repo__ = "https://github.com/adafruit/Adafruit_CircuitPython_RSA.git"

adafruit_rsa/key.py

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -250,8 +250,11 @@ def _load_pkcs1_der(cls, keyfile):
250250
251251
"""
252252
# pylint: disable=import-outside-toplevel
253-
from adafruit_rsa.tools.pyasn1.codec.der import decoder
254-
from adafruit_rsa.asn1 import AsnPubKey
253+
try:
254+
from adafruit_rsa.tools.pyasn1.codec.der import decoder
255+
from adafruit_rsa.asn1 import AsnPubKey
256+
except ImportError as err:
257+
raise ImportError("This functionality requires the pyasn1 library") from err
255258

256259
(priv, _) = decoder.decode(keyfile, asn1Spec=AsnPubKey())
257260
return cls(n=int(priv["modulus"]), e=int(priv["publicExponent"]))
@@ -263,7 +266,10 @@ def _save_pkcs1_der(self):
263266
:rtype: bytes
264267
"""
265268
# pylint: disable=import-outside-toplevel
266-
from pyasn1.codec.der import encoder
269+
try:
270+
from pyasn1.codec.der import encoder
271+
except ImportError as err:
272+
raise ImportError("This functionality requires the library") from err
267273
from rsa.asn1 import AsnPubKey
268274

269275
# Create the ASN object
@@ -328,9 +334,12 @@ def load_pkcs1_openssl_der(cls, keyfile):
328334
329335
"""
330336
# pylint: disable=import-outside-toplevel
331-
from adafruit_rsa.asn1 import OpenSSLPubKey
332-
from pyasn1.codec.der import decoder
333-
from pyasn1.type import univ
337+
try:
338+
from adafruit_rsa.asn1 import OpenSSLPubKey
339+
from pyasn1.codec.der import decoder
340+
from pyasn1.type import univ
341+
except ImportError as err:
342+
raise ImportError("This functionality requires the pyasn1 library") from err
334343

335344
(keyinfo, _) = decoder.decode(keyfile, asn1Spec=OpenSSLPubKey())
336345

@@ -477,9 +486,12 @@ def _load_pkcs1_der(cls, keyfile):
477486
478487
"""
479488

480-
from adafruit_rsa.tools.pyasn1.codec.der import ( # pylint: disable=import-outside-toplevel
481-
decoder,
482-
)
489+
try:
490+
from adafruit_rsa.tools.pyasn1.codec.der import ( # pylint: disable=import-outside-toplevel
491+
decoder,
492+
)
493+
except ImportError as err:
494+
raise ImportError("This functionality requires the pyasn1 library") from err
483495

484496
(priv, _) = decoder.decode(keyfile)
485497

@@ -521,8 +533,11 @@ def _save_pkcs1_der(self):
521533
:rtype: bytes
522534
"""
523535
# pylint: disable=import-outside-toplevel
524-
from pyasn1.type import univ, namedtype
525-
from pyasn1.codec.der import encoder
536+
try:
537+
from pyasn1.type import univ, namedtype
538+
from pyasn1.codec.der import encoder
539+
except ImportError as err:
540+
raise ImportError("This functionality requires the pyasn1 library") from err
526541

527542
class AsnPrivKey(univ.Sequence):
528543
"""Creates PKCS#1 DER Formatted AsnPrivKey"""

0 commit comments

Comments
 (0)