pub struct RecoveryId(/* private fields */);
Expand description
Recovery IDs, a.k.a. “recid”.
This is an integer value 0
, 1
, 2
, or 3
included along with a
signature which is used during the recovery process to select the correct
public key from the signature.
It consists of two bits of information:
- low bit (0/1): was the y-coordinate of the affine point resulting from the fixed-base multiplication 𝑘×𝑮 odd? This part of the algorithm functions similar to point decompression.
- hi bit (3/4): did the affine x-coordinate of 𝑘×𝑮 overflow the order of
the scalar field, requiring a reduction when computing
r
?
Implementations§
Source§impl RecoveryId
impl RecoveryId
Sourcepub const fn new(is_y_odd: bool, is_x_reduced: bool) -> RecoveryId
pub const fn new(is_y_odd: bool, is_x_reduced: bool) -> RecoveryId
Create a new RecoveryId
from the following 1-bit arguments:
is_y_odd
: is the affine y-coordinate of 𝑘×𝑮 odd?is_x_reduced
: did the affine x-coordinate of 𝑘×𝑮 overflow the curve order?
Sourcepub const fn is_x_reduced(self) -> bool
pub const fn is_x_reduced(self) -> bool
Did the affine x-coordinate of 𝑘×𝑮 overflow the curve order?
Sourcepub const fn from_byte(byte: u8) -> Option<RecoveryId>
pub const fn from_byte(byte: u8) -> Option<RecoveryId>
Convert a u8
into a RecoveryId
.
Sourcepub const fn to_byte(self) -> u8
pub const fn to_byte(self) -> u8
Convert this RecoveryId
into a u8
.
Source§impl RecoveryId
impl RecoveryId
Sourcepub fn trial_recovery_from_msg<C>(
verifying_key: &VerifyingKey<C>,
msg: &[u8],
signature: &Signature<C>,
) -> Result<RecoveryId, Error>where
C: DigestPrimitive + PrimeCurve + CurveArithmetic,
<C as CurveArithmetic>::AffinePoint: DecompressPoint<C> + FromEncodedPoint<C> + ToEncodedPoint<C> + VerifyPrimitive<C>,
<C as Curve>::FieldBytesSize: ModulusSize,
<<C as Curve>::FieldBytesSize as Add>::Output: ArrayLength<u8>,
pub fn trial_recovery_from_msg<C>(
verifying_key: &VerifyingKey<C>,
msg: &[u8],
signature: &Signature<C>,
) -> Result<RecoveryId, Error>where
C: DigestPrimitive + PrimeCurve + CurveArithmetic,
<C as CurveArithmetic>::AffinePoint: DecompressPoint<C> + FromEncodedPoint<C> + ToEncodedPoint<C> + VerifyPrimitive<C>,
<C as Curve>::FieldBytesSize: ModulusSize,
<<C as Curve>::FieldBytesSize as Add>::Output: ArrayLength<u8>,
Given a public key, message, and signature, use trial recovery to determine if a suitable recovery ID exists, or return an error otherwise.
Sourcepub fn trial_recovery_from_digest<C, D>(
verifying_key: &VerifyingKey<C>,
digest: D,
signature: &Signature<C>,
) -> Result<RecoveryId, Error>where
C: PrimeCurve + CurveArithmetic,
D: Digest,
<C as CurveArithmetic>::AffinePoint: DecompressPoint<C> + FromEncodedPoint<C> + ToEncodedPoint<C> + VerifyPrimitive<C>,
<C as Curve>::FieldBytesSize: ModulusSize,
<<C as Curve>::FieldBytesSize as Add>::Output: ArrayLength<u8>,
pub fn trial_recovery_from_digest<C, D>(
verifying_key: &VerifyingKey<C>,
digest: D,
signature: &Signature<C>,
) -> Result<RecoveryId, Error>where
C: PrimeCurve + CurveArithmetic,
D: Digest,
<C as CurveArithmetic>::AffinePoint: DecompressPoint<C> + FromEncodedPoint<C> + ToEncodedPoint<C> + VerifyPrimitive<C>,
<C as Curve>::FieldBytesSize: ModulusSize,
<<C as Curve>::FieldBytesSize as Add>::Output: ArrayLength<u8>,
Given a public key, message digest, and signature, use trial recovery to determine if a suitable recovery ID exists, or return an error otherwise.
Sourcepub fn trial_recovery_from_prehash<C>(
verifying_key: &VerifyingKey<C>,
prehash: &[u8],
signature: &Signature<C>,
) -> Result<RecoveryId, Error>where
C: PrimeCurve + CurveArithmetic,
<C as CurveArithmetic>::AffinePoint: DecompressPoint<C> + FromEncodedPoint<C> + ToEncodedPoint<C> + VerifyPrimitive<C>,
<C as Curve>::FieldBytesSize: ModulusSize,
<<C as Curve>::FieldBytesSize as Add>::Output: ArrayLength<u8>,
pub fn trial_recovery_from_prehash<C>(
verifying_key: &VerifyingKey<C>,
prehash: &[u8],
signature: &Signature<C>,
) -> Result<RecoveryId, Error>where
C: PrimeCurve + CurveArithmetic,
<C as CurveArithmetic>::AffinePoint: DecompressPoint<C> + FromEncodedPoint<C> + ToEncodedPoint<C> + VerifyPrimitive<C>,
<C as Curve>::FieldBytesSize: ModulusSize,
<<C as Curve>::FieldBytesSize as Add>::Output: ArrayLength<u8>,
Given a public key, message digest, and signature, use trial recovery to determine if a suitable recovery ID exists, or return an error otherwise.
Trait Implementations§
Source§impl Clone for RecoveryId
impl Clone for RecoveryId
Source§fn clone(&self) -> RecoveryId
fn clone(&self) -> RecoveryId
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more