aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKonstantin Ryabitsev <konstantin@linuxfoundation.org>2021-05-06 16:05:18 -0400
committerKonstantin Ryabitsev <konstantin@linuxfoundation.org>2021-05-06 16:05:18 -0400
commit61446349212d46c02f86ab79dccdfa900b76f306 (patch)
tree6a3ec0ad0edf156818f598eb5c54b8248dc57cb7
parent1422c2aafacbaa177e70919d48671b05a8b79dc4 (diff)
downloadpatatt-61446349212d46c02f86ab79dccdfa900b76f306.tar.gz
Nicer crash for when PyNaCl isn't available
Don't backtrace all over the screen -- give a nice error message. Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
-rw-r--r--patatt/__init__.py16
1 files changed, 11 insertions, 5 deletions
diff --git a/patatt/__init__.py b/patatt/__init__.py
index a3870b8..e54bb10 100644
--- a/patatt/__init__.py
+++ b/patatt/__init__.py
@@ -222,8 +222,11 @@ class DevsigHeader:
@staticmethod
def _sign_ed25519(payload: bytes, privkey: bytes) -> Tuple[bytes, bytes]:
global KEYCACHE
- from nacl.signing import SigningKey
- from nacl.encoding import Base64Encoder
+ try:
+ from nacl.signing import SigningKey
+ from nacl.encoding import Base64Encoder
+ except ModuleNotFoundError:
+ raise RuntimeError('This operation requires PyNaCl libraries')
if privkey not in KEYCACHE:
sk = SigningKey(privkey, encoder=Base64Encoder)
@@ -238,9 +241,12 @@ class DevsigHeader:
@staticmethod
def _validate_ed25519(sigdata: bytes, pubkey: bytes) -> bytes:
- from nacl.signing import VerifyKey
- from nacl.encoding import Base64Encoder
- from nacl.exceptions import BadSignatureError
+ try:
+ from nacl.signing import VerifyKey
+ from nacl.encoding import Base64Encoder
+ from nacl.exceptions import BadSignatureError
+ except ModuleNotFoundError:
+ raise RuntimeError('This operation requires PyNaCl libraries')
vk = VerifyKey(pubkey, encoder=Base64Encoder)
try: