From 467072f7d50778f064f192b4e318c19c6cf98293 Mon Sep 17 00:00:00 2001 From: Paul Kehrer Date: Sun, 25 Oct 2015 15:44:29 -0500 Subject: add support for encoding/decoding elliptic curve points Based on the work of @ronf in #2346. --- docs/hazmat/primitives/asymmetric/utils.rst | 41 +++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'docs/hazmat/primitives/asymmetric/utils.rst') diff --git a/docs/hazmat/primitives/asymmetric/utils.rst b/docs/hazmat/primitives/asymmetric/utils.rst index 07883598..825fe3c1 100644 --- a/docs/hazmat/primitives/asymmetric/utils.rst +++ b/docs/hazmat/primitives/asymmetric/utils.rst @@ -28,3 +28,44 @@ Asymmetric Utilities :param int s: The raw signature value ``s``. :return bytes: The encoded signature. + +.. function:: encode_ec_point(curve, x, y) + + .. versionadded:: 1.1 + + Encodes an elliptic curve point to a byte string as described in + _`SEC 1 v2.0` section 2.3.3. This function only supports uncompressed + points. + + :param curve: A :class:`EllipticCurve` provider. + + :param x: The x value of the point. + + :type: int or None + + :param int y: The y value of the point. + + :return bytes: The encoded point. + + :raises TypeError: Raised when curve is not an :class:`EllipticCurve`. + +.. function:: decode_ec_point(key_length, data) + + .. versionadded:: 1.1 + + Decodes a byte string as described in _`SEC 1 v2.0` section 2.3.3 to the + ``x`` and ``y`` integer values. This function only supports uncompressed + points. + + :param curve: A :class:`EllipticCurve` provider. + + :param bytes data: The serialized point byte string. + + :returns: The decoded tuple ``(x, y)``. + + :raises ValueError: Raised on invalid point type or data length. + + :raises TypeError: Raised when curve is not an :class:`EllipticCurve`. + + +.. _`SEC 1 v2.0`: http://www.secg.org/sec1-v2.pdf -- cgit v1.2.3