Exemplo n.º 1
0
 def test_simple(self):
     # Test case: (version, message, embedded).
     cases = (
         (1, [], {}),
         (255, [], {}),
         (1, ["Hello"], {}),
         (1, [], {"a": "b"}),
         (1, ["", "some", "more"], {"a": "b", "_i": "d"}),
     )
     for version, message, embedded in cases:
         tok = tokens.encode_token(self.algo, version, "secret", message, embedded)
         self.assertTrue(URL_SAFE_ALPHABET.issuperset(tok))
         decoded_version, decoded_embedded = tokens.decode_token(self.algo, tok, ["secret"], message)
         self.assertEqual(version, decoded_version)
         self.assertEqual(embedded, decoded_embedded)
Exemplo n.º 2
0
 def test_simple(self):
   # Test case: (version, message, embedded).
   cases = (
     (1, [], {}),
     (255, [], {}),
     (1, ['Hello'], {}),
     (1, [], {'a': 'b'}),
     (1, ['', 'some', 'more'], {'a': 'b', '_i': 'd'}),
   )
   for version, message, embedded in cases:
     tok = tokens.encode_token(self.algo, version, 'secret', message, embedded)
     self.assertTrue(URL_SAFE_ALPHABET.issuperset(tok))
     decoded_version, decoded_embedded = tokens.decode_token(
         self.algo, tok, ['secret'], message)
     self.assertEqual(version, decoded_version)
     self.assertEqual(embedded, decoded_embedded)
Exemplo n.º 3
0
 def test_simple(self):
   # Test case: (version, message, embedded).
   cases = (
     (1, [], {}),
     (255, [], {}),
     (1, ['Hello'], {}),
     (1, [], {'a': 'b'}),
     (1, ['', 'some', 'more'], {'a': 'b', '_i': 'd'}),
   )
   for version, message, embedded in cases:
     tok = tokens.encode_token(self.algo, version, 'secret', message, embedded)
     self.assertTrue(URL_SAFE_ALPHABET.issuperset(tok))
     decoded_version, decoded_embedded = tokens.decode_token(
         self.algo, tok, ['secret'], message)
     self.assertEqual(version, decoded_version)
     self.assertEqual(embedded, decoded_embedded)
Exemplo n.º 4
0
 def test_rejects_modified(self):
   tok = tokens.encode_token(self.algo, 1, 'secret', ['msg'], {'a': 'b'})
   decode = lambda x: tokens.decode_token(self.algo, x, ['secret'], ['msg'])
   # Works if not modified.
   decode(tok)
   # Try simple modifications.
   for i in xrange(len(tok)):
     # Truncation.
     with self.assertRaises(tokens.InvalidTokenError):
       decode(tok[:i])
     # Insertion.
     with self.assertRaises(tokens.InvalidTokenError):
       decode(tok[:i] + 'A' + tok[i:])
     # Substitution.
     with self.assertRaises(tokens.InvalidTokenError):
       decode(tok[:i] + chr((ord(tok[i]) + 1) % 255) + tok[i+1:])
   # Expansion.
   with self.assertRaises(tokens.InvalidTokenError):
     decode('A' + tok)
   with self.assertRaises(tokens.InvalidTokenError):
     decode(tok + 'A')
Exemplo n.º 5
0
 def test_rejects_modified(self):
   tok = tokens.encode_token(self.algo, 1, 'secret', ['msg'], {'a': 'b'})
   decode = lambda x: tokens.decode_token(self.algo, x, ['secret'], ['msg'])
   # Works if not modified.
   decode(tok)
   # Try simple modifications.
   for i in xrange(len(tok)):
     # Truncation.
     with self.assertRaises(tokens.InvalidTokenError):
       decode(tok[:i])
     # Insertion.
     with self.assertRaises(tokens.InvalidTokenError):
       decode(tok[:i] + 'A' + tok[i:])
     # Substitution.
     with self.assertRaises(tokens.InvalidTokenError):
       decode(tok[:i] + chr((ord(tok[i]) + 1) % 255) + tok[i+1:])
   # Expansion.
   with self.assertRaises(tokens.InvalidTokenError):
     decode('A' + tok)
   with self.assertRaises(tokens.InvalidTokenError):
     decode(tok + 'A')
Exemplo n.º 6
0
 def test_rejects_modified(self):
     tok = tokens.encode_token(self.algo, 1, "secret", ["msg"], {"a": "b"})
     decode = lambda x: tokens.decode_token(self.algo, x, ["secret"], ["msg"])
     # Works if not modified.
     decode(tok)
     # Try simple modifications.
     for i in xrange(len(tok)):
         # Truncation.
         with self.assertRaises(tokens.InvalidTokenError):
             decode(tok[:i])
         # Insertion.
         with self.assertRaises(tokens.InvalidTokenError):
             decode(tok[:i] + "A" + tok[i:])
         # Substitution.
         with self.assertRaises(tokens.InvalidTokenError):
             decode(tok[:i] + chr((ord(tok[i]) + 1) % 255) + tok[i + 1 :])
     # Expansion.
     with self.assertRaises(tokens.InvalidTokenError):
         decode("A" + tok)
     with self.assertRaises(tokens.InvalidTokenError):
         decode(tok + "A")
Exemplo n.º 7
0
 def test_many_secrets(self):
     tok = tokens.encode_token(self.algo, 1, 'old', ['msg'], {'a': 'b'})
     self.assertEqual((1, {
         'a': 'b'
     }), tokens.decode_token(self.algo, tok, ['new', 'old'], ['msg']))
Exemplo n.º 8
0
 def test_encode_token_tags_message(self):
   tok1 = tokens.encode_token(self.algo, 1, 'secret', ['1'], {})
   tok2 = tokens.encode_token(self.algo, 1, 'secret', ['2'], {})
   # Grab last several bytes of base64 encoded token: it's a tail of MAC tag.
   self.assertNotEqual(tok1[-self.mac_len:], tok2[-self.mac_len:])
Exemplo n.º 9
0
 def test_many_secrets(self):
     tok = tokens.encode_token(self.algo, 1, "old", ["msg"], {"a": "b"})
     self.assertEqual((1, {"a": "b"}), tokens.decode_token(self.algo, tok, ["new", "old"], ["msg"]))
Exemplo n.º 10
0
 def test_encode_token_tags_embedded_data(self):
     tok1 = tokens.encode_token(self.algo, 1, 'secret', [], {'a': '1'})
     tok2 = tokens.encode_token(self.algo, 1, 'secret', [], {'a': '2'})
     # Grab last several bytes of base64 encoded token: it's a tail of MAC tag.
     self.assertNotEqual(tok1[-self.mac_len:], tok2[-self.mac_len:])
Exemplo n.º 11
0
 def test_bad_secret(self):
   tok = tokens.encode_token(self.algo, 1, 'ancient', ['msg'], {'a': 'b'})
   with self.assertRaises(tokens.InvalidTokenError):
     tokens.decode_token(self.algo, tok, ['new', 'old'], ['msg'])
Exemplo n.º 12
0
 def test_many_secrets(self):
   tok = tokens.encode_token(self.algo, 1, 'old', ['msg'], {'a': 'b'})
   self.assertEqual(
       (1, {'a': 'b'}),
       tokens.decode_token(self.algo, tok, ['new', 'old'], ['msg']))
Exemplo n.º 13
0
 def test_encode_token_tags_version(self):
     tok1 = tokens.encode_token(self.algo, 1, "secret", [], {})
     tok2 = tokens.encode_token(self.algo, 2, "secret", [], {})
     # Grab last several bytes of base64 encoded token: it's a tail of MAC tag.
     self.assertNotEqual(tok1[-self.mac_len :], tok2[-self.mac_len :])
Exemplo n.º 14
0
 def test_bad_secret(self):
     tok = tokens.encode_token(self.algo, 1, "ancient", ["msg"], {"a": "b"})
     with self.assertRaises(tokens.InvalidTokenError):
         tokens.decode_token(self.algo, tok, ["new", "old"], ["msg"])
Exemplo n.º 15
0
 def test_bad_secret(self):
     tok = tokens.encode_token(self.algo, 1, 'ancient', ['msg'], {'a': 'b'})
     with self.assertRaises(tokens.InvalidTokenError):
         tokens.decode_token(self.algo, tok, ['new', 'old'], ['msg'])
Exemplo n.º 16
0
 def test_encode_token_uses_secret(self):
     tok1 = tokens.encode_token(self.algo, 1, 'secret1', [], {})
     tok2 = tokens.encode_token(self.algo, 1, 'secret2', [], {})
     # Grab last several bytes of base64 encoded token: it's a tail of MAC tag.
     self.assertNotEqual(tok1[-self.mac_len], tok2[-self.mac_len])
Exemplo n.º 17
0
 def test_encode_token_uses_secret(self):
   tok1 = tokens.encode_token(self.algo, 1, 'secret1', [], {})
   tok2 = tokens.encode_token(self.algo, 1, 'secret2', [], {})
   # Grab last several bytes of base64 encoded token: it's a tail of MAC tag.
   self.assertNotEqual(tok1[-self.mac_len], tok2[-self.mac_len])
Exemplo n.º 18
0
 def test_encode_token_tags_message(self):
     tok1 = tokens.encode_token(self.algo, 1, 'secret', ['1'], {})
     tok2 = tokens.encode_token(self.algo, 1, 'secret', ['2'], {})
     # Grab last several bytes of base64 encoded token: it's a tail of MAC tag.
     self.assertNotEqual(tok1[-self.mac_len:], tok2[-self.mac_len:])
Exemplo n.º 19
0
 def test_encode_token_tags_embedded_data(self):
   tok1 = tokens.encode_token(self.algo, 1, 'secret', [], {'a': '1'})
   tok2 = tokens.encode_token(self.algo, 1, 'secret', [], {'a': '2'})
   # Grab last several bytes of base64 encoded token: it's a tail of MAC tag.
   self.assertNotEqual(tok1[-self.mac_len:], tok2[-self.mac_len:])