summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--jwcrypto/jwk.py9
-rw-r--r--jwcrypto/tests.py8
2 files changed, 17 insertions, 0 deletions
diff --git a/jwcrypto/jwk.py b/jwcrypto/jwk.py
index 8583ff1..95a05a4 100644
--- a/jwcrypto/jwk.py
+++ b/jwcrypto/jwk.py
@@ -142,6 +142,14 @@ class JWK(object):
while name in names:
names.remove(name)
+ # Unknown key parameters are allowed
+ # Let's just store them out of the way
+ self._unknown = dict()
+ for name in names:
+ self._unknown[name] = kwargs[name]
+ while name in names:
+ names.remove(name)
+
if len(names) != 0:
raise InvalidJWKValue('Unknown key parameters: %s' % names)
@@ -152,6 +160,7 @@ class JWK(object):
d = dict()
d.update(self._params)
d.update(self._key)
+ d.update(self._unknown)
return json.dumps(d)
@property
diff --git a/jwcrypto/tests.py b/jwcrypto/tests.py
index e17a295..888ad39 100644
--- a/jwcrypto/tests.py
+++ b/jwcrypto/tests.py
@@ -634,3 +634,11 @@ class TestJWE(unittest.TestCase):
def test_A5(self):
E = jwe.JWE()
E.deserialize(E_A5_ex)
+
+
+class ConformanceTests(unittest.TestCase):
+
+ def test_unknown_key_params(self):
+ key = jwk.JWK(kty='oct', k='secret', unknown='mystery')
+ # pylint: disable=protected-access
+ self.assertEqual('mystery', key._unknown['unknown'])