diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/hazmat/primitives/vectors/otp/rfc-4226.txt | 62 | ||||
-rw-r--r-- | tests/hazmat/primitives/vectors/otp/rfc-6238.txt | 92 | ||||
-rw-r--r-- | tests/test_utils.py | 98 |
3 files changed, 252 insertions, 0 deletions
diff --git a/tests/hazmat/primitives/vectors/otp/rfc-4226.txt b/tests/hazmat/primitives/vectors/otp/rfc-4226.txt new file mode 100644 index 00000000..377f155b --- /dev/null +++ b/tests/hazmat/primitives/vectors/otp/rfc-4226.txt @@ -0,0 +1,62 @@ +# HOTP Test Vectors +# RFC 4226 Appendix D + +COUNT = 0 +COUNTER = 0 +INTERMEDIATE = cc93cf18508d94934c64b65d8ba7667fb7cde4b0 +TRUNCATED = 4c93cf18 +HOTP = 755224 + +COUNT = 1 +COUNTER = 1 +INTERMEDIATE = 75a48a19d4cbe100644e8ac1397eea747a2d33ab +TRUNCATED = 41397eea +HOTP = 287082 + +COUNT = 2 +COUNTER = 2 +INTERMEDIATE = 0bacb7fa082fef30782211938bc1c5e70416ff44 +TRUNCATED = 82fef30 +HOTP = 359152 + +COUNT = 3 +COUNTER = 3 +INTERMEDIATE = 66c28227d03a2d5529262ff016a1e6ef76557ece +TRUNCATED = 66ef7655 +HOTP = 969429 + +COUNT = 4 +COUNTER = 4 +INTERMEDIATE = a904c900a64b35909874b33e61c5938a8e15ed1c +TRUNCATED = 61c5938a +HOTP = 338314 + +COUNT = 5 +COUNTER = 5 +INTERMEDIATE = a37e783d7b7233c083d4f62926c7a25f238d0316 +TRUNCATED = 33c083d4 +HOTP = 254676 + +COUNT = 6 +COUNTER = 6 +INTERMEDIATE = bc9cd28561042c83f219324d3c607256c03272ae +TRUNCATED = 7256c032 +HOTP = 287922 + +COUNT = 7 +COUNTER = 7 +INTERMEDIATE = a4fb960c0bc06e1eabb804e5b397cdc4b45596fa +TRUNCATED = 4e5b397 +HOTP = 162583 + +COUNT = 8 +COUNTER = 8 +INTERMEDIATE = 1b3c89f65e6c9e883012052823443f048b4332db +TRUNCATED = 2823443f +HOTP = 399871 + +COUNT = 9 +COUNTER = 9 +INTERMEDIATE = 1637409809a679dc698207310c8c7fc07290d9e5 +TRUNCATED = 2679dc69 +HOTP = 520489 diff --git a/tests/hazmat/primitives/vectors/otp/rfc-6238.txt b/tests/hazmat/primitives/vectors/otp/rfc-6238.txt new file mode 100644 index 00000000..bec4ed28 --- /dev/null +++ b/tests/hazmat/primitives/vectors/otp/rfc-6238.txt @@ -0,0 +1,92 @@ +# TOTP Test Vectors +# RFC 6238 Appendix B + +COUNT = 0 +TIME = 59 +TOTP = 94287082 +MODE = SHA1 + +COUNT = 1 +TIME = 59 +TOTP = 46119246 +MODE = SHA256 + +COUNT = 2 +TIME = 59 +TOTP = 90693936 +MODE = SHA512 + +COUNT = 3 +TIME = 1111111109 +TOTP = 07081804 +MODE = SHA1 + +COUNT = 4 +TIME = 1111111109 +TOTP = 68084774 +MODE = SHA256 + +COUNT = 5 +TIME = 1111111109 +TOTP = 25091201 +MODE = SHA512 + +COUNT = 6 +TIME = 1111111111 +TOTP = 14050471 +MODE = SHA1 + +COUNT = 7 +TIME = 1111111111 +TOTP = 67062674 +MODE = SHA256 + +COUNT = 8 +TIME = 1111111111 +TOTP = 99943326 +MODE = SHA512 + +COUNT = 9 +TIME = 1234567890 +TOTP = 89005924 +MODE = SHA1 + +COUNT = 10 +TIME = 1234567890 +TOTP = 91819424 +MODE = SHA256 + +COUNT = 11 +TIME = 1234567890 +TOTP = 93441116 +MODE = SHA512 + +COUNT = 12 +TIME = 2000000000 +TOTP = 69279037 +MODE = SHA1 + +COUNT = 13 +TIME = 2000000000 +TOTP = 69279037 +MODE = SHA256 + +COUNT = 14 +TIME = 2000000000 +TOTP = 69279037 +MODE = SHA512 + +COUNT = 15 +TIME = 20000000000 +TOTP = 65353130 +MODE = SHA1 + +COUNT = 16 +TIME = 20000000000 +TOTP = 77737706 +MODE = SHA256 + +COUNT = 17 +TIME = 20000000000 +TOTP = 47863826 +MODE = SHA512 diff --git a/tests/test_utils.py b/tests/test_utils.py index 2f4a43c8..901c0281 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -826,3 +826,101 @@ 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 + + COUNT = 1 + COUNTER = 1 + INTERMEDIATE = 75a48a19d4cbe100644e8ac1397eea747a2d33ab + TRUNCATED = 41397eea + HOTP = 287082 + + COUNT = 2 + COUNTER = 2 + INTERMEDIATE = 0bacb7fa082fef30782211938bc1c5e70416ff44 + TRUNCATED = 82fef30 + HOTP = 359152 + + COUNT = 3 + COUNTER = 3 + INTERMEDIATE = 66c28227d03a2d5529262ff016a1e6ef76557ece + TRUNCATED = 66ef7655 + HOTP = 969429 + """).splitlines() + + assert load_nist_vectors(vector_data) == [ + { + "counter": b"0", + "intermediate": b"cc93cf18508d94934c64b65d8ba7667fb7cde4b0", + "truncated": b"4c93cf18", + "hotp": b"755224", + }, + { + "counter": b"1", + "intermediate": b"75a48a19d4cbe100644e8ac1397eea747a2d33ab", + "truncated": b"41397eea", + "hotp": b"287082", + }, + { + "counter": b"2", + "intermediate": b"0bacb7fa082fef30782211938bc1c5e70416ff44", + "truncated": b"82fef30", + "hotp": b"359152", + }, + { + "counter": b"3", + "intermediate": b"66c28227d03a2d5529262ff016a1e6ef76557ece", + "truncated": b"66ef7655", + "hotp": b"969429", + }, + ] + + +def test_load_totp_vectors(): + vector_data = textwrap.dedent(""" + # TOTP Test Vectors + # RFC 6238 Appendix B + + COUNT = 0 + TIME = 59 + TOTP = 94287082 + MODE = SHA1 + + COUNT = 1 + TIME = 59 + TOTP = 46119246 + MODE = SHA256 + + COUNT = 2 + TIME = 59 + TOTP = 90693936 + MODE = SHA512 + """).splitlines() + + assert load_nist_vectors(vector_data) == [ + { + "time": b"59", + "totp": b"94287082", + "mode": b"SHA1", + }, + { + "time": b"59", + "totp": b"46119246", + "mode": b"SHA256", + }, + { + "time": b"59", + "totp": b"90693936", + "mode": b"SHA512", + }, + ] |