pub trait SignPrimitive<C>:
Sized
+ AsRef<Self>
+ Into<GenericArray<u8, <C as Curve>::FieldBytesSize>>
+ IsHigh
+ PrimeField<Repr = GenericArray<u8, <C as Curve>::FieldBytesSize>>
+ Reduce<<C as Curve>::Uint, Bytes = GenericArray<u8, <C as Curve>::FieldBytesSize>>where
C: PrimeCurve + CurveArithmetic<Scalar = Self>,
<<C as Curve>::FieldBytesSize as Add>::Output: ArrayLength<u8>,{
// Provided methods
fn try_sign_prehashed<K>(
&self,
k: K,
z: &GenericArray<u8, <C as Curve>::FieldBytesSize>,
) -> Result<(Signature<C>, Option<RecoveryId>), Error>
where K: AsRef<Self> + Invert<Output = CtOption<Self>> { ... }
fn try_sign_prehashed_rfc6979<D>(
&self,
z: &GenericArray<u8, <C as Curve>::FieldBytesSize>,
ad: &[u8],
) -> Result<(Signature<C>, Option<RecoveryId>), Error>
where Self: From<ScalarPrimitive<C>> + Invert<Output = CtOption<Self>>,
D: Digest<OutputSize = <C as Curve>::FieldBytesSize> + BlockSizeUser + FixedOutput + FixedOutputReset { ... }
}
Expand description
Try to sign the given prehashed message using ECDSA.
This trait is intended to be implemented on a type with access to the
secret scalar via &self
, such as particular curve’s Scalar
type.
Provided Methods§
Sourcefn try_sign_prehashed<K>(
&self,
k: K,
z: &GenericArray<u8, <C as Curve>::FieldBytesSize>,
) -> Result<(Signature<C>, Option<RecoveryId>), Error>
fn try_sign_prehashed<K>( &self, k: K, z: &GenericArray<u8, <C as Curve>::FieldBytesSize>, ) -> Result<(Signature<C>, Option<RecoveryId>), Error>
Try to sign the prehashed message.
Accepts the following arguments:
k
: ephemeral scalar value. MUST BE UNIFORMLY RANDOM!!!z
: message digest to be signed. MUST BE OUTPUT OF A CRYPTOGRAPHICALLY SECURE DIGEST ALGORITHM!!!
§Returns
ECDSA Signature
and, when possible/desired, a RecoveryId
which can be used to recover the verifying key for a given signature.
Sourcefn try_sign_prehashed_rfc6979<D>(
&self,
z: &GenericArray<u8, <C as Curve>::FieldBytesSize>,
ad: &[u8],
) -> Result<(Signature<C>, Option<RecoveryId>), Error>where
Self: From<ScalarPrimitive<C>> + Invert<Output = CtOption<Self>>,
D: Digest<OutputSize = <C as Curve>::FieldBytesSize> + BlockSizeUser + FixedOutput + FixedOutputReset,
fn try_sign_prehashed_rfc6979<D>(
&self,
z: &GenericArray<u8, <C as Curve>::FieldBytesSize>,
ad: &[u8],
) -> Result<(Signature<C>, Option<RecoveryId>), Error>where
Self: From<ScalarPrimitive<C>> + Invert<Output = CtOption<Self>>,
D: Digest<OutputSize = <C as Curve>::FieldBytesSize> + BlockSizeUser + FixedOutput + FixedOutputReset,
Try to sign the given message digest deterministically using the method
described in RFC6979 for computing ECDSA ephemeral scalar k
.
Accepts the following parameters:
z
: message digest to be signed.ad
: optional additional data, e.g. added entropy from an RNG
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.