aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/hazmat/primitives/vectors/otp/rfc-4226.txt62
-rw-r--r--tests/hazmat/primitives/vectors/otp/rfc-6238.txt92
-rw-r--r--tests/test_utils.py98
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",
+ },
+ ]