diff options
author | Ayrx <terrycwk1994@gmail.com> | 2014-02-12 18:05:43 +0800 |
---|---|---|
committer | Ayrx <terrycwk1994@gmail.com> | 2014-02-21 11:13:35 +0800 |
commit | 00cc90018a61e702ec78a9f33161518797da3713 (patch) | |
tree | c0fea796cddbe7473d2f4aad7d86571fe00367bf /tests | |
parent | d2f24580aa9e5f90c1011c2cfc7720077b74cd4d (diff) | |
download | cryptography-00cc90018a61e702ec78a9f33161518797da3713.tar.gz cryptography-00cc90018a61e702ec78a9f33161518797da3713.tar.bz2 cryptography-00cc90018a61e702ec78a9f33161518797da3713.zip |
Added HOTP implementation and associated tests
Diffstat (limited to 'tests')
-rw-r--r-- | tests/hazmat/oath/__init__.py | 0 | ||||
-rw-r--r-- | tests/hazmat/oath/test_hotp.py | 53 |
2 files changed, 53 insertions, 0 deletions
diff --git a/tests/hazmat/oath/__init__.py b/tests/hazmat/oath/__init__.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/tests/hazmat/oath/__init__.py diff --git a/tests/hazmat/oath/test_hotp.py b/tests/hazmat/oath/test_hotp.py new file mode 100644 index 00000000..7df0d4db --- /dev/null +++ b/tests/hazmat/oath/test_hotp.py @@ -0,0 +1,53 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import pytest +from cryptography.hazmat.oath.hotp import HOTP +from tests.utils import load_vectors_from_file, load_nist_vectors + +vectors = load_vectors_from_file( + "oath/rfc-4226.txt", load_nist_vectors) + + +@pytest.mark.oath +class TestHOTP(object): + + @pytest.mark.parametrize("params", vectors) + def test_truncate(self, backend, params): + secret = params["secret"] + counter = int(params["counter"]) + truncated_value = params["truncated"] + + hotp = HOTP(secret, 6, backend) + + assert hex(hotp._dynamic_truncate(counter))[2:] == truncated_value + + @pytest.mark.parametrize("params", vectors) + def test_generate(self, backend, params): + secret = params["secret"] + counter = int(params["counter"]) + hotp_value = params["hotp"] + + hotp = HOTP(secret, 6, backend) + + assert hotp.generate(counter) == hotp_value + + @pytest.mark.parametrize("params", vectors) + def test_validate(self, backend, params): + secret = params["secret"] + counter = int(params["counter"]) + hotp_value = params["hotp"] + + hotp = HOTP(secret, 6, backend) + + assert hotp.verify(hotp_value, counter) is True |