Skip to content

Commit 3d0f665

Browse files
committed
Ignore EC keys with curves we don't know about.
1 parent 9ed11b4 commit 3d0f665

File tree

2 files changed

+21
-17
lines changed

2 files changed

+21
-17
lines changed

src/jwkest/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
from binascii import unhexlify
1616

17-
__version__ = "1.4.2"
17+
__version__ = "1.4.3"
1818

1919
logger = logging.getLogger(__name__)
2020

src/jwkest/jwk.py

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,29 @@
11
import base64
22
import binascii
33
import hashlib
4-
import re
5-
import logging
64
import json
5+
import logging
6+
import re
77
import sys
8-
import six
9-
108
from binascii import a2b_base64
119

10+
import six
1211
from Cryptodome.PublicKey import RSA
13-
from Cryptodome.PublicKey.RSA import importKey
1412
from Cryptodome.PublicKey.RSA import RsaKey
13+
from Cryptodome.PublicKey.RSA import importKey
1514
from Cryptodome.Util.asn1 import DerSequence
16-
15+
from jwkest.ecc import ECCException
1716
from requests import request
1817

18+
from jwkest import JWKESTException
19+
from jwkest import UnknownAlgorithm
1920
from jwkest import as_bytes
2021
from jwkest import as_unicode
22+
from jwkest import b64d
23+
from jwkest import b64e
2124
from jwkest import base64_to_long
2225
from jwkest import base64url_to_long
2326
from jwkest import long_to_base64
24-
from jwkest import JWKESTException
25-
from jwkest import b64d
26-
from jwkest import b64e
27-
from jwkest import UnknownAlgorithm
2827
from jwkest.ecc import NISTEllipticCurve
2928
from jwkest.jwt import b2s_conv
3029

@@ -245,7 +244,7 @@ class Key(object):
245244
required = ['kty']
246245

247246
def __init__(self, kty="", alg="", use="", kid="", key=None, x5c=None,
248-
x5t="", x5u="", **kwargs):
247+
x5t="", x5u="", **kwargs):
249248
self.key = key
250249
self.extra_args = kwargs
251250

@@ -420,8 +419,8 @@ class RSAKey(Key):
420419
required = ['kty', 'n', 'e']
421420

422421
def __init__(self, kty="RSA", alg="", use="", kid="", key=None,
423-
x5c=None, x5t="", x5u="", n="", e="", d="", p="", q="",
424-
dp="", dq="", di="", qi="", **kwargs):
422+
x5c=None, x5t="", x5u="", n="", e="", d="", p="", q="",
423+
dp="", dq="", di="", qi="", **kwargs):
425424
Key.__init__(self, kty, alg, use, kid, key, x5c, x5t, x5u, **kwargs)
426425
self.n = n
427426
self.e = e
@@ -568,7 +567,7 @@ class ECKey(Key):
568567
required = ['crv', 'key', 'x', 'y']
569568

570569
def __init__(self, kty="EC", alg="", use="", kid="", key=None,
571-
crv="", x="", y="", d="", curve=None, **kwargs):
570+
crv="", x="", y="", d="", curve=None, **kwargs):
572571
Key.__init__(self, kty, alg, use, kid, key, **kwargs)
573572
self.crv = crv
574573
self.x = x
@@ -669,7 +668,7 @@ class SYMKey(Key):
669668
required = ['k', 'kty']
670669

671670
def __init__(self, kty="oct", alg="", use="", kid="", key=None,
672-
x5c=None, x5t="", x5u="", k="", mtrl="", **kwargs):
671+
x5c=None, x5t="", x5u="", k="", mtrl="", **kwargs):
673672
Key.__init__(self, kty, alg, use, kid, as_bytes(key), x5c, x5t, x5u,
674673
**kwargs)
675674
self.k = k
@@ -797,7 +796,12 @@ def __init__(self):
797796

798797
def load_dict(self, dikt):
799798
for kspec in dikt["keys"]:
800-
self._keys.append(keyrep(kspec))
799+
try:
800+
_key = keyrep(kspec)
801+
except ECCException as err:
802+
logger.warning(err)
803+
else:
804+
self._keys.append(_key)
801805

802806
def load_jwks(self, jwks):
803807
"""

0 commit comments

Comments
 (0)