aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_utils.py
diff options
context:
space:
mode:
authorPaul Kehrer <paul.l.kehrer@gmail.com>2014-02-11 08:06:08 -0600
committerPaul Kehrer <paul.l.kehrer@gmail.com>2014-02-11 08:06:08 -0600
commitce6bdf4742739050f90883f0911bb9b9976ecc56 (patch)
treee4fe1b4ad672dc66102a4ac6db78749ef5ac1f96 /tests/test_utils.py
parentbc1f8b887e0f9d362f6f6148b72ccdcf92f8e341 (diff)
parent9f08ec19952170b4f43b072cc73809ffd83f38d6 (diff)
downloadcryptography-ce6bdf4742739050f90883f0911bb9b9976ecc56.tar.gz
cryptography-ce6bdf4742739050f90883f0911bb9b9976ecc56.tar.bz2
cryptography-ce6bdf4742739050f90883f0911bb9b9976ecc56.zip
Merge pull request #587 from Ayrx/otp
Added test vectors for HOTP and TOTP algorithms.
Diffstat (limited to 'tests/test_utils.py')
-rw-r--r--tests/test_utils.py114
1 files changed, 114 insertions, 0 deletions
diff --git a/tests/test_utils.py b/tests/test_utils.py
index 2f4a43c8..a0571ad6 100644
--- a/tests/test_utils.py
+++ b/tests/test_utils.py
@@ -826,3 +826,117 @@ def test_load_pkcs1_vectors():
)
)
assert vectors == expected
+
+
+def test_load_hotp_vectors():
+ vector_data = textwrap.dedent("""
+ # HOTP Test Vectors
+ # RFC 4226 Appendix D
+
+ COUNT = 0
+ COUNTER = 0
+ INTERMEDIATE = cc93cf18508d94934c64b65d8ba7667fb7cde4b0
+ TRUNCATED = 4c93cf18
+ HOTP = 755224
+ SECRET = 12345678901234567890
+
+ COUNT = 1
+ COUNTER = 1
+ INTERMEDIATE = 75a48a19d4cbe100644e8ac1397eea747a2d33ab
+ TRUNCATED = 41397eea
+ HOTP = 287082
+ SECRET = 12345678901234567890
+
+
+ COUNT = 2
+ COUNTER = 2
+ INTERMEDIATE = 0bacb7fa082fef30782211938bc1c5e70416ff44
+ TRUNCATED = 82fef30
+ HOTP = 359152
+ SECRET = 12345678901234567890
+
+
+ COUNT = 3
+ COUNTER = 3
+ INTERMEDIATE = 66c28227d03a2d5529262ff016a1e6ef76557ece
+ TRUNCATED = 66ef7655
+ HOTP = 969429
+ SECRET = 12345678901234567890
+ """).splitlines()
+
+ assert load_nist_vectors(vector_data) == [
+ {
+ "counter": b"0",
+ "intermediate": b"cc93cf18508d94934c64b65d8ba7667fb7cde4b0",
+ "truncated": b"4c93cf18",
+ "hotp": b"755224",
+ "secret": b"12345678901234567890",
+ },
+ {
+ "counter": b"1",
+ "intermediate": b"75a48a19d4cbe100644e8ac1397eea747a2d33ab",
+ "truncated": b"41397eea",
+ "hotp": b"287082",
+ "secret": b"12345678901234567890",
+ },
+ {
+ "counter": b"2",
+ "intermediate": b"0bacb7fa082fef30782211938bc1c5e70416ff44",
+ "truncated": b"82fef30",
+ "hotp": b"359152",
+ "secret": b"12345678901234567890",
+ },
+ {
+ "counter": b"3",
+ "intermediate": b"66c28227d03a2d5529262ff016a1e6ef76557ece",
+ "truncated": b"66ef7655",
+ "hotp": b"969429",
+ "secret": b"12345678901234567890",
+ },
+ ]
+
+
+def test_load_totp_vectors():
+ vector_data = textwrap.dedent("""
+ # TOTP Test Vectors
+ # RFC 6238 Appendix B
+
+ COUNT = 0
+ TIME = 59
+ TOTP = 94287082
+ MODE = SHA1
+ SECRET = 12345678901234567890
+
+ COUNT = 1
+ TIME = 59
+ TOTP = 46119246
+ MODE = SHA256
+ SECRET = 12345678901234567890
+
+ COUNT = 2
+ TIME = 59
+ TOTP = 90693936
+ MODE = SHA512
+ SECRET = 12345678901234567890
+ """).splitlines()
+
+ assert load_nist_vectors(vector_data) == [
+ {
+ "time": b"59",
+ "totp": b"94287082",
+ "mode": b"SHA1",
+ "secret": b"12345678901234567890",
+ },
+ {
+ "time": b"59",
+ "totp": b"46119246",
+ "mode": b"SHA256",
+ "secret": b"12345678901234567890",
+ },
+ {
+ "time": b"59",
+ "totp": b"90693936",
+ "mode": b"SHA512",
+ "secret": b"12345678901234567890",
+ },
+ ]