Skip to content

Commit 859dd35

Browse files
authored
Merge pull request #25 from tekktrik/dev/add-dependencies
Add pyasn1 as dependency
2 parents 9743d9a + 1cb1abf commit 859dd35

File tree

3 files changed

+39
-13
lines changed

3 files changed

+39
-13
lines changed

README.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ This driver depends on:
2323

2424
* `Adafruit CircuitPython <https://github.com/adafruit/circuitpython>`_
2525
* `Adafruit CircuitPython Logger Module <https://github.com/adafruit/Adafruit_CircuitPython_Logger>`_
26+
* `pyasn1 Library <https://github.com/etingof/pyasn1>`_ (some functionality)
27+
* CPython's ``rsa`` Library (some functionality)
2628

2729
Please ensure all dependencies are available on the CircuitPython filesystem.
2830
This is easily achieved by downloading

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: 33 additions & 12 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,8 +266,17 @@ def _save_pkcs1_der(self):
263266
:rtype: bytes
264267
"""
265268
# pylint: disable=import-outside-toplevel
266-
from pyasn1.codec.der import encoder
267-
from rsa.asn1 import AsnPubKey
269+
try:
270+
from pyasn1.codec.der import encoder
271+
except ImportError as err:
272+
raise ImportError("This functionality requires the library") from err
273+
try:
274+
from rsa.asn1 import AsnPubKey
275+
except ImportError as err:
276+
raise ImportError(
277+
"This functionality requres the CPython rsa library, "
278+
"not available in CircuitPython"
279+
) from err
268280

269281
# Create the ASN object
270282
asn_key = AsnPubKey()
@@ -328,9 +340,12 @@ def load_pkcs1_openssl_der(cls, keyfile):
328340
329341
"""
330342
# 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
343+
try:
344+
from adafruit_rsa.asn1 import OpenSSLPubKey
345+
from pyasn1.codec.der import decoder
346+
from pyasn1.type import univ
347+
except ImportError as err:
348+
raise ImportError("This functionality requires the pyasn1 library") from err
334349

335350
(keyinfo, _) = decoder.decode(keyfile, asn1Spec=OpenSSLPubKey())
336351

@@ -477,9 +492,12 @@ def _load_pkcs1_der(cls, keyfile):
477492
478493
"""
479494

480-
from adafruit_rsa.tools.pyasn1.codec.der import ( # pylint: disable=import-outside-toplevel
481-
decoder,
482-
)
495+
try:
496+
from adafruit_rsa.tools.pyasn1.codec.der import ( # pylint: disable=import-outside-toplevel
497+
decoder,
498+
)
499+
except ImportError as err:
500+
raise ImportError("This functionality requires the pyasn1 library") from err
483501

484502
(priv, _) = decoder.decode(keyfile)
485503

@@ -521,8 +539,11 @@ def _save_pkcs1_der(self):
521539
:rtype: bytes
522540
"""
523541
# pylint: disable=import-outside-toplevel
524-
from pyasn1.type import univ, namedtype
525-
from pyasn1.codec.der import encoder
542+
try:
543+
from pyasn1.type import univ, namedtype
544+
from pyasn1.codec.der import encoder
545+
except ImportError as err:
546+
raise ImportError("This functionality requires the pyasn1 library") from err
526547

527548
class AsnPrivKey(univ.Sequence):
528549
"""Creates PKCS#1 DER Formatted AsnPrivKey"""

0 commit comments

Comments
 (0)