summaryrefslogtreecommitdiffstats
path: root/jwcrypto/tests.py
diff options
context:
space:
mode:
authorSimo Sorce <simo@redhat.com>2015-03-07 16:52:14 -0500
committerSimo Sorce <simo@redhat.com>2015-03-08 17:31:42 -0400
commit1f8bd71e9d65fd23ac1ba2df7debd217285bb702 (patch)
treea2f96499f6afe33c7081ef9c3fee62883c28b52e /jwcrypto/tests.py
parentc48d7b2e49e779f0593e98dddb9f4aa11d5beb6c (diff)
downloadjwcrypto-1f8bd71e9d65fd23ac1ba2df7debd217285bb702.tar.gz
jwcrypto-1f8bd71e9d65fd23ac1ba2df7debd217285bb702.tar.xz
jwcrypto-1f8bd71e9d65fd23ac1ba2df7debd217285bb702.zip
Add JWE implementation
Implements: draft-ietf-jose-json-web-encryption-40 plus Tests
Diffstat (limited to 'jwcrypto/tests.py')
-rw-r--r--jwcrypto/tests.py63
1 files changed, 63 insertions, 0 deletions
diff --git a/jwcrypto/tests.py b/jwcrypto/tests.py
index 881dfd7..181ca6f 100644
--- a/jwcrypto/tests.py
+++ b/jwcrypto/tests.py
@@ -3,6 +3,7 @@
from jwcrypto.common import base64url_decode
from jwcrypto import jwk
from jwcrypto import jws
+from jwcrypto import jwe
import json
import unittest
@@ -434,3 +435,65 @@ class TestJWS(unittest.TestCase):
S = jws.JWS(A6_example['payload'])
S.deserialize(E_negative)
self.assertEqual(False, S.objects['valid'])
+
+
+E_A2_plaintext = "Live long and prosper."
+E_A2_protected = "eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0"
+E_A2_key = \
+ {"kty": "RSA",
+ "n": "sXchDaQebHnPiGvyDOAT4saGEUetSyo9MKLOoWFsueri23bOdgWp4Dy1Wl"
+ "UzewbgBHod5pcM9H95GQRV3JDXboIRROSBigeC5yjU1hGzHHyXss8UDpre"
+ "cbAYxknTcQkhslANGRUZmdTOQ5qTRsLAt6BTYuyvVRdhS8exSZEy_c4gs_"
+ "7svlJJQ4H9_NxsiIoLwAEk7-Q3UXERGYw_75IDrGA84-lA_-Ct4eTlXHBI"
+ "Y2EaV7t7LjJaynVJCpkv4LKjTTAumiGUIuQhrNhZLuF_RJLqHpM2kgWFLU"
+ "7-VTdL1VbC2tejvcI2BlMkEpk1BzBZI0KQB0GaDWFLN-aEAw3vRw",
+ "e": "AQAB",
+ "d": "VFCWOqXr8nvZNyaaJLXdnNPXZKRaWCjkU5Q2egQQpTBMwhprMzWzpR8Sxq"
+ "1OPThh_J6MUD8Z35wky9b8eEO0pwNS8xlh1lOFRRBoNqDIKVOku0aZb-ry"
+ "nq8cxjDTLZQ6Fz7jSjR1Klop-YKaUHc9GsEofQqYruPhzSA-QgajZGPbE_"
+ "0ZaVDJHfyd7UUBUKunFMScbflYAAOYJqVIVwaYR5zWEEceUjNnTNo_CVSj"
+ "-VvXLO5VZfCUAVLgW4dpf1SrtZjSt34YLsRarSb127reG_DUwg9Ch-Kyvj"
+ "T1SkHgUWRVGcyly7uvVGRSDwsXypdrNinPA4jlhoNdizK2zF2CWQ",
+ "p": "9gY2w6I6S6L0juEKsbeDAwpd9WMfgqFoeA9vEyEUuk4kLwBKcoe1x4HG68"
+ "ik918hdDSE9vDQSccA3xXHOAFOPJ8R9EeIAbTi1VwBYnbTp87X-xcPWlEP"
+ "krdoUKW60tgs1aNd_Nnc9LEVVPMS390zbFxt8TN_biaBgelNgbC95sM",
+ "q": "uKlCKvKv_ZJMVcdIs5vVSU_6cPtYI1ljWytExV_skstvRSNi9r66jdd9-y"
+ "BhVfuG4shsp2j7rGnIio901RBeHo6TPKWVVykPu1iYhQXw1jIABfw-MVsN"
+ "-3bQ76WLdt2SDxsHs7q7zPyUyHXmps7ycZ5c72wGkUwNOjYelmkiNS0",
+ "dp": "w0kZbV63cVRvVX6yk3C8cMxo2qCM4Y8nsq1lmMSYhG4EcL6FWbX5h9yuv"
+ "ngs4iLEFk6eALoUS4vIWEwcL4txw9LsWH_zKI-hwoReoP77cOdSL4AVcra"
+ "Hawlkpyd2TWjE5evgbhWtOxnZee3cXJBkAi64Ik6jZxbvk-RR3pEhnCs",
+ "dq": "o_8V14SezckO6CNLKs_btPdFiO9_kC1DsuUTd2LAfIIVeMZ7jn1Gus_Ff"
+ "7B7IVx3p5KuBGOVF8L-qifLb6nQnLysgHDh132NDioZkhH7mI7hPG-PYE_"
+ "odApKdnqECHWw0J-F0JWnUd6D2B_1TvF9mXA2Qx-iGYn8OVV1Bsmp6qU",
+ "qi": "eNho5yRBEBxhGBtQRww9QirZsB66TrfFReG_CcteI1aCneT0ELGhYlRlC"
+ "tUkTRclIfuEPmNsNDPbLoLqqCVznFbvdB7x-Tl-m0l_eFTj2KiqwGqE9PZ"
+ "B9nNTwMVvH3VRRSLWACvPnSiwP8N5Usy-WRXS-V7TbpxIhvepTfE0NNo"}
+E_A2_vector = \
+ "eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0." \
+ "UGhIOguC7IuEvf_NPVaXsGMoLOmwvc1GyqlIKOK1nN94nHPoltGRhWhw7Zx0-kFm" \
+ "1NJn8LE9XShH59_i8J0PH5ZZyNfGy2xGdULU7sHNF6Gp2vPLgNZ__deLKxGHZ7Pc" \
+ "HALUzoOegEI-8E66jX2E4zyJKx-YxzZIItRzC5hlRirb6Y5Cl_p-ko3YvkkysZIF" \
+ "NPccxRU7qve1WYPxqbb2Yw8kZqa2rMWI5ng8OtvzlV7elprCbuPhcCdZ6XDP0_F8" \
+ "rkXds2vE4X-ncOIM8hAYHHi29NX0mcKiRaD0-D-ljQTP-cFPgwCp6X-nZZd9OHBv" \
+ "-B3oWh2TbqmScqXMR4gp_A." \
+ "AxY8DCtDaGlsbGljb3RoZQ." \
+ "KDlTtXchhZTGufMYmOYGS4HffxPSUrfmqCHXaI9wOGY." \
+ "9hH0vgRfYgPnAHOd8stkvw"
+
+E_A2_ex = {'key': jwk.JWK(**E_A2_key), # pylint: disable=star-args
+ 'protected': base64url_decode(E_A2_protected),
+ 'plaintext': E_A2_plaintext,
+ 'vector': E_A2_vector}
+
+
+class TestJWE(unittest.TestCase):
+ def test_A2(self):
+ E = jwe.JWE(E_A2_ex['plaintext'], E_A2_ex['protected'])
+ E.add_recipient(E_A2_ex['key'])
+ # Encrypt and serialize using compact
+ e = E.serialize(compact=True)
+ # And test that we can decrypt our own
+ E.deserialize(e, E_A2_ex['key'])
+ # Now test the Spec Test Vector
+ E.deserialize(E_A2_ex['vector'], E_A2_ex['key'])