Skip to main content

Signature

Struct Signature 

Source
pub struct Signature { /* private fields */ }
Expand description

A ring signature produced by crate::sign_vote.

The on-the-wire encoding is:

  challenge        : 32 bytes  (canonical Scalar little-endian)
  responses[0]     : 32 bytes
  responses[1]     : 32 bytes
  ...
  responses[n-1]   : 32 bytes

where n is the size of the authorised ring. The ring members themselves are not stored inside the signature: the verifier is expected to already know the canonical authorised list, and to reconstruct the ring from it in the same deterministic order used at signing time. That way the signer cannot ship a hand-picked ring of their own.

Implementations§

Source§

impl Signature

Source

pub fn to_bytes(&self) -> Vec<u8>

Serialise to the byte layout described in the struct docs.

Source

pub fn from_bytes(bytes: &[u8], ring_size: usize) -> Result<Self>

Deserialise from the byte layout described in the struct docs.

ring_size must be the size of the authorised list the verifier is about to check against. We require it explicitly because the signature on its own cannot tell n scalars from n+1.

Source

pub fn to_hex(&self) -> String

Hex-encode using lowercase digits.

Source

pub fn from_hex(s: &str, ring_size: usize) -> Result<Self>

Decode from a hex string. See Signature::from_bytes for the meaning of ring_size.

Source

pub fn to_prefixed(&self) -> String

Encode in the human-friendly prefixed format: blsag_<hex>_<checksum>. The body length grows with the ring, but the format is otherwise identical to the fixed-size types.

Source

pub fn from_prefixed(s: &str, ring_size: usize) -> Result<Self>

Decode a blsag_<hex>_<checksum> string produced by Signature::to_prefixed, verifying the tag and the checksum. See Signature::from_bytes for the meaning of ring_size.

Trait Implementations§

Source§

impl Clone for Signature

Source§

fn clone(&self) -> Signature

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Signature

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for Signature

Source§

impl PartialEq for Signature

Source§

fn eq(&self, other: &Signature) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Signature

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.