aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docs/hazmat/primitives/asymmetric/utils.rst11
-rw-r--r--src/cryptography/hazmat/primitives/asymmetric/utils.py8
-rw-r--r--tests/hazmat/primitives/test_asym_utils.py6
3 files changed, 13 insertions, 12 deletions
diff --git a/docs/hazmat/primitives/asymmetric/utils.rst b/docs/hazmat/primitives/asymmetric/utils.rst
index 829edb99..79d14dae 100644
--- a/docs/hazmat/primitives/asymmetric/utils.rst
+++ b/docs/hazmat/primitives/asymmetric/utils.rst
@@ -37,12 +37,11 @@ Asymmetric Utilities
`SEC 1 v2.0`_ section 2.3.3. This function only supports uncompressed
points.
- :param curve: A
+ :param curve: An
:class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurve`
- provider.
+ instance.
- :param x: The x value of the point.
- :type x: int or `None`
+ :param int x: The x value of the point.
:param int y: The y value of the point.
@@ -59,9 +58,9 @@ Asymmetric Utilities
``x`` and ``y`` integer values. This function only supports uncompressed
points.
- :param curve: A
+ :param curve: An
:class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurve`
- provider.
+ instance.
:param bytes data: The serialized point byte string.
diff --git a/src/cryptography/hazmat/primitives/asymmetric/utils.py b/src/cryptography/hazmat/primitives/asymmetric/utils.py
index b62eadf0..57dea41a 100644
--- a/src/cryptography/hazmat/primitives/asymmetric/utils.py
+++ b/src/cryptography/hazmat/primitives/asymmetric/utils.py
@@ -79,9 +79,9 @@ def encode_ec_point(curve, x, y):
raise TypeError("curve must be an EllipticCurve instance")
if x is None:
- return b'\x00'
+ raise ValueError("null points are not supported")
else:
- # Get the ceiling of curve.key_size / 8
+ # key_size is in bits. Convert to bytes and round up
byte_length = (curve.key_size + 7) // 8
return (
b'\x04' + utils.int_to_bytes(x, byte_length) +
@@ -94,9 +94,9 @@ def decode_ec_point(curve, data):
raise TypeError("curve must be an EllipticCurve instance")
if data == b'\x00':
- return None, None
+ raise ValueError("null points are not supported")
elif data.startswith(b'\x04'):
- # Get the ceiling of curve.key_size / 8
+ # key_size is in bits. Convert to bytes and round up
byte_length = (curve.key_size + 7) // 8
if len(data) == 2 * byte_length + 1:
return (utils.int_from_bytes(data[1:byte_length + 1], 'big'),
diff --git a/tests/hazmat/primitives/test_asym_utils.py b/tests/hazmat/primitives/test_asym_utils.py
index c713e9c6..22551bc4 100644
--- a/tests/hazmat/primitives/test_asym_utils.py
+++ b/tests/hazmat/primitives/test_asym_utils.py
@@ -82,7 +82,8 @@ def test_decode_dss_invalid_asn1():
def test_encode_ec_point_none():
- assert encode_ec_point(ec.SECP384R1(), None, 100) == b"\x00"
+ with pytest.raises(ValueError):
+ encode_ec_point(ec.SECP384R1(), None, 100)
def test_encode_wrong_curve_type():
@@ -106,7 +107,8 @@ def test_encode_ec_point():
def test_decode_ec_point_none():
- assert decode_ec_point(ec.SECP384R1(), b"\x00") == (None, None)
+ with pytest.raises(ValueError):
+ decode_ec_point(ec.SECP384R1(), b"\x00")
def test_decode_ec_point():