From 2c76b5a45a21896f0ec7f2b2cb3d7330d609379c Mon Sep 17 00:00:00 2001 From: Tony Arcieri Date: Wed, 2 Sep 2020 14:59:19 -0700 Subject: [PATCH] ecdsa: impl From<&VerifyKey> for EncodedPoint --- ecdsa/src/verify.rs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/ecdsa/src/verify.rs b/ecdsa/src/verify.rs index 3353134d..c564f8e1 100644 --- a/ecdsa/src/verify.rs +++ b/ecdsa/src/verify.rs @@ -1,4 +1,4 @@ -//! ECDSA verify key. Generic over elliptic curves. +//! ECDSA verification key (i.e. public key). Generic over elliptic curves. //! //! Requires an [`elliptic_curve::Arithmetic`] impl on the curve, and a //! [`VerifyPrimitive`] impl on its associated `AffinePoint` type. @@ -11,6 +11,7 @@ use core::ops::Add; use elliptic_curve::{ consts::U1, generic_array::ArrayLength, + point, sec1::{ EncodedPoint, FromEncodedPoint, ToEncodedPoint, UncompressedPointSize, UntaggedPointSize, }, @@ -89,3 +90,17 @@ where self.verify_digest(C::Digest::new().chain(msg), signature) } } + +impl From<&VerifyKey> for EncodedPoint +where + C: Curve + Arithmetic + point::Compression, + C::AffinePoint: VerifyPrimitive + FromEncodedPoint + ToEncodedPoint, + C::Scalar: FromDigest, + UntaggedPointSize: Add + ArrayLength, + UncompressedPointSize: ArrayLength, + SignatureSize: ArrayLength, +{ + fn from(verify_key: &VerifyKey) -> EncodedPoint { + verify_key.to_encoded_point(C::COMPRESS_POINTS) + } +}