diff options
Diffstat (limited to 'tests/hazmat/primitives')
| -rw-r--r-- | tests/hazmat/primitives/test_asym_utils.py | 75 | ||||
| -rw-r--r-- | tests/hazmat/primitives/test_ec.py | 74 | 
2 files changed, 76 insertions, 73 deletions
diff --git a/tests/hazmat/primitives/test_asym_utils.py b/tests/hazmat/primitives/test_asym_utils.py index 22551bc4..b9971137 100644 --- a/tests/hazmat/primitives/test_asym_utils.py +++ b/tests/hazmat/primitives/test_asym_utils.py @@ -4,14 +4,11 @@  from __future__ import absolute_import, division, print_function -import binascii -  import pytest -from cryptography.hazmat.primitives.asymmetric import ec  from cryptography.hazmat.primitives.asymmetric.utils import ( -    decode_dss_signature, decode_ec_point, decode_rfc6979_signature, -    encode_dss_signature, encode_ec_point, encode_rfc6979_signature +    decode_dss_signature, decode_rfc6979_signature, +    encode_dss_signature, encode_rfc6979_signature  ) @@ -79,71 +76,3 @@ def test_decode_dss_invalid_asn1():          # This is the BER "end-of-contents octets," which older versions of          # pyasn1 are wrongly willing to return from top-level DER decoding.          decode_dss_signature(b"\x00\x00") - - -def test_encode_ec_point_none(): -    with pytest.raises(ValueError): -        encode_ec_point(ec.SECP384R1(), None, 100) - - -def test_encode_wrong_curve_type(): -    with pytest.raises(TypeError): -        encode_ec_point("notacurve", 3, 4) - - -def test_encode_ec_point(): -    # secp256r1 point -    x = int( -        '233ea3b0027127084cd2cd336a13aeef69c598d8af61369a36454a17c6c22aec', 16 -    ) -    y = int( -        '3ea2c10a84153862be4ec82940f0543f9ba866af9751a6ee79d38460b35f442e', 16 -    ) -    data = encode_ec_point(ec.SECP256R1(), x, y) -    assert data == binascii.unhexlify( -        "04233ea3b0027127084cd2cd336a13aeef69c598d8af61369a36454a17c6c22aec3ea" -        "2c10a84153862be4ec82940f0543f9ba866af9751a6ee79d38460b35f442e" -    ) - - -def test_decode_ec_point_none(): -    with pytest.raises(ValueError): -        decode_ec_point(ec.SECP384R1(), b"\x00") - - -def test_decode_ec_point(): -    # secp256r1 point -    data = binascii.unhexlify( -        "04233ea3b0027127084cd2cd336a13aeef69c598d8af61369a36454a17c6c22aec3ea" -        "2c10a84153862be4ec82940f0543f9ba866af9751a6ee79d38460b35f442e" -    ) -    x, y = decode_ec_point(ec.SECP256R1(), data) -    assert x == int( -        '233ea3b0027127084cd2cd336a13aeef69c598d8af61369a36454a17c6c22aec', 16 -    ) -    assert y == int( -        '3ea2c10a84153862be4ec82940f0543f9ba866af9751a6ee79d38460b35f442e', 16 -    ) - - -def test_decode_ec_point_invalid_length(): -    bad_data = binascii.unhexlify( -        "04233ea3b0027127084cd2cd336a13aeef69c598d8af61369a36454a17c6c22aec3ea" -        "2c10a84153862be4ec82940f0543f9ba866af9751a6ee79d38460" -    ) -    with pytest.raises(ValueError): -        decode_ec_point(ec.SECP384R1(), bad_data) - - -def test_decode_ec_point_unsupported_point_type(): -    # set to point type 2. -    unsupported_type = binascii.unhexlify( -        "02233ea3b0027127084cd2cd336a13aeef69c598d8af61369a36454a17c6c22aec3e" -    ) -    with pytest.raises(ValueError): -        decode_ec_point(ec.SECP256R1(), unsupported_type) - - -def test_decode_wrong_curve_type(): -    with pytest.raises(TypeError): -        decode_ec_point("notacurve", b"\x02data") diff --git a/tests/hazmat/primitives/test_ec.py b/tests/hazmat/primitives/test_ec.py index 4c4d5b90..ac1ba27a 100644 --- a/tests/hazmat/primitives/test_ec.py +++ b/tests/hazmat/primitives/test_ec.py @@ -4,6 +4,7 @@  from __future__ import absolute_import, division, print_function +import binascii  import itertools  import os @@ -148,6 +149,79 @@ def test_ec_numbers():          ) +def test_encode_point(): +    # secp256r1 point +    x = int( +        '233ea3b0027127084cd2cd336a13aeef69c598d8af61369a36454a17c6c22aec', +        16 +    ) +    y = int( +        '3ea2c10a84153862be4ec82940f0543f9ba866af9751a6ee79d38460b35f442e', +        16 +    ) +    pn = ec.EllipticCurvePublicNumbers(x, y, ec.SECP256R1()) +    data = pn.encode_point() +    assert data == binascii.unhexlify( +        "04233ea3b0027127084cd2cd336a13aeef69c598d8af61369a36454a17c6c22ae" +        "c3ea2c10a84153862be4ec82940f0543f9ba866af9751a6ee79d38460b35f442e" +    ) + + +def test_from_encoded_point_null(): +    with pytest.raises(ValueError): +        ec.EllipticCurvePublicNumbers.from_encoded_point( +            ec.SECP384R1(), b"\x00" +        ) + + +def test_from_encoded_point(): +    # secp256r1 point +    data = binascii.unhexlify( +        "04233ea3b0027127084cd2cd336a13aeef69c598d8af61369a36454a17c6c22ae" +        "c3ea2c10a84153862be4ec82940f0543f9ba866af9751a6ee79d38460b35f442e" +    ) +    pn = ec.EllipticCurvePublicNumbers.from_encoded_point( +        ec.SECP256R1(), data +    ) +    assert pn.x == int( +        '233ea3b0027127084cd2cd336a13aeef69c598d8af61369a36454a17c6c22aec', +        16 +    ) +    assert pn.y == int( +        '3ea2c10a84153862be4ec82940f0543f9ba866af9751a6ee79d38460b35f442e', +        16 +    ) + + +def test_from_encoded_point_invalid_length(): +    bad_data = binascii.unhexlify( +        "04233ea3b0027127084cd2cd336a13aeef69c598d8af61369a36454a17c6c22ae" +        "c3ea2c10a84153862be4ec82940f0543f9ba866af9751a6ee79d38460" +    ) +    with pytest.raises(ValueError): +        ec.EllipticCurvePublicNumbers.from_encoded_point( +            ec.SECP384R1(), bad_data +        ) + + +def test_from_encoded_point_unsupported_point_type(): +    # set to point type 2. +    unsupported_type = binascii.unhexlify( +        "02233ea3b0027127084cd2cd336a13aeef69c598d8af61369a36454a17c6c22a" +    ) +    with pytest.raises(ValueError): +        ec.EllipticCurvePublicNumbers.from_encoded_point( +            ec.SECP256R1(), unsupported_type +        ) + + +def test_from_encoded_point_not_a_curve(): +    with pytest.raises(TypeError): +        ec.EllipticCurvePublicNumbers.from_encoded_point( +            "notacurve", b"\x04data" +        ) + +  @pytest.mark.requires_backend_interface(interface=EllipticCurveBackend)  class TestECWithNumbers(object):      @pytest.mark.parametrize(  | 
