diff options
| author | Matthew Sullivan <sullivan.matt@gmail.com> | 2014-09-20 23:04:12 -0500 |
|---|---|---|
| committer | Matthew Sullivan <sullivan.matt@gmail.com> | 2014-09-20 23:04:12 -0500 |
| commit | a51e8eb86c3d000f8714c64265782a57dc793d86 (patch) | |
| tree | 2346e904ec29e92e3e9def0d744262880283e6d5 /tests/test_jwt.py | |
| parent | 6f8c237c453db4e807ec0edeb6ecd038be87119d (diff) | |
| download | pyjwt-a51e8eb86c3d000f8714c64265782a57dc793d86.tar.gz | |
First pass at ECDSA tests
Diffstat (limited to 'tests/test_jwt.py')
| -rw-r--r-- | tests/test_jwt.py | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/tests/test_jwt.py b/tests/test_jwt.py index 0bf11c8..914e9b2 100644 --- a/tests/test_jwt.py +++ b/tests/test_jwt.py @@ -446,6 +446,136 @@ class TestJWT(unittest.TestCase): self.assertFalse('RS384' in jwt.prepare_key_methods) self.assertFalse('RS512' in jwt.prepare_key_methods) + def test_encode_decode_with_ecdsa_sha256(self): + try: + import ecdsa + + # PEM-formatted EC key + with open('tests/testkey_ec', 'r') as ec_priv_file: + priv_eckey = ecdsa.SigningKey.from_pem(ec_priv_file.read()) + jwt_message = jwt.encode(self.payload, priv_eckey, + algorithm='ES256') + + with open('tests/testkey_ec.pub', 'r') as ec_pub_file: + pub_eckey = ecdsa.VerifyingKey.from_pem(ec_pub_file.read()) + assert jwt.decode(jwt_message, pub_eckey) + + load_output = jwt.load(jwt_message) + jwt.verify_signature(key=pub_eckey, *load_output) + + # string-formatted key + with open('tests/testkey_ec', 'r') as ec_priv_file: + priv_eckey = ec_priv_file.read() + jwt_message = jwt.encode(self.payload, priv_eckey, + algorithm='ES256') + + with open('tests/testkey_ec.pub', 'r') as ec_pub_file: + pub_eckey = ec_pub_file.read() + assert jwt.decode(jwt_message, pub_eckey) + + load_output = jwt.load(jwt_message) + jwt.verify_signature(key=pub_eckey, *load_output) + + except ImportError: + pass + + def test_encode_decode_with_ecdsa_sha384(self): + try: + import ecdsa + + # PEM-formatted EC key + with open('tests/testkey_ec', 'r') as ec_priv_file: + priv_eckey = ecdsa.SigningKey.from_pem(ec_priv_file.read()) + jwt_message = jwt.encode(self.payload, priv_eckey, + algorithm='ES384') + + with open('tests/testkey_ec.pub', 'r') as ec_pub_file: + pub_eckey = ecdsa.VerifyingKey.from_pem(ec_pub_file.read()) + assert jwt.decode(jwt_message, pub_eckey) + + load_output = jwt.load(jwt_message) + jwt.verify_signature(key=pub_eckey, *load_output) + + # string-formatted key + with open('tests/testkey_ec', 'r') as ec_priv_file: + priv_eckey = ec_priv_file.read() + jwt_message = jwt.encode(self.payload, priv_eckey, + algorithm='ES384') + + with open('tests/testkey_ec.pub', 'r') as ec_pub_file: + pub_rsakey = ec_pub_file.read() + assert jwt.decode(jwt_message, pub_eckey) + + load_output = jwt.load(jwt_message) + jwt.verify_signature(key=pub_eckey, *load_output) + except ImportError: + pass + + def test_encode_decode_with_ecdsa_sha512(self): + try: + import ecdsa + + # PEM-formatted EC key + with open('tests/testkey_ec', 'r') as ec_priv_file: + priv_eckey = ecdsa.SigningKey.from_pem(ec_priv_file.read()) + jwt_message = jwt.encode(self.payload, priv_eckey, + algorithm='ES512') + + with open('tests/testkey_ec.pub', 'r') as ec_pub_file: + pub_eckey = ecdsa.VerifyingKey.from_pem(ec_pub_file.read()) + assert jwt.decode(jwt_message, pub_eckey) + + load_output = jwt.load(jwt_message) + jwt.verify_signature(key=pub_eckey, *load_output) + + # string-formatted key + with open('tests/testkey_ec', 'r') as ec_priv_file: + priv_eckey = ec_priv_file.read() + jwt_message = jwt.encode(self.payload, priv_eckey, + algorithm='ES512') + + with open('tests/testkey_ec.pub', 'r') as ec_pub_file: + pub_eckey = ec_pub_file.read() + assert jwt.decode(jwt_message, pub_eckey) + + load_output = jwt.load(jwt_message) + jwt.verify_signature(key=pub_eckey, *load_output) + except ImportError: + pass + + def test_ecdsa_related_signing_methods(self): + try: + import ecdsa + self.assertTrue('ES256' in jwt.signing_methods) + self.assertTrue('ES384' in jwt.signing_methods) + self.assertTrue('ES512' in jwt.signing_methods) + except ImportError: + self.assertFalse('ES256' in jwt.signing_methods) + self.assertFalse('ES384' in jwt.signing_methods) + self.assertFalse('ES512' in jwt.signing_methods) + + def test_ecdsa_related_verify_methods(self): + try: + import ecdsa + self.assertTrue('ES256' in jwt.verify_methods) + self.assertTrue('ES384' in jwt.verify_methods) + self.assertTrue('ES512' in jwt.verify_methods) + except ImportError: + self.assertFalse('ES256' in jwt.verify_methods) + self.assertFalse('ES384' in jwt.verify_methods) + self.assertFalse('ES512' in jwt.verify_methods) + + def test_ecdsa_related_key_preparation_methods(self): + try: + import ecdsa + self.assertTrue('ES256' in jwt.prepare_key_methods) + self.assertTrue('ES384' in jwt.prepare_key_methods) + self.assertTrue('ES512' in jwt.prepare_key_methods) + except ImportError: + self.assertFalse('ES256' in jwt.prepare_key_methods) + self.assertFalse('ES384' in jwt.prepare_key_methods) + self.assertFalse('ES512' in jwt.prepare_key_methods) + if __name__ == '__main__': unittest.main() |
