Signature

Struct Signature 

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

An Ethereum ECDSA signature.

Implementations§

Source§

impl Signature

Source

pub fn decode_rlp_vrs( buf: &mut &[u8], decode_parity: impl FnOnce(&mut &[u8]) -> Result<bool>, ) -> Result<Self, Error>

Available on crate feature rlp only.

Decode an RLP-encoded VRS signature. Accepts decode_parity closure which allows to customize parity decoding and possibly extract additional data from it (e.g chain_id for legacy signature).

Source§

impl Signature

Source

pub const fn new(r: U256, s: U256, y_parity: bool) -> Self

Instantiate a new signature from r, s, and v values.

Source

pub fn from_raw(bytes: &[u8]) -> Result<Self, SignatureError>

Parses a 65-byte long raw signature.

The first 32 bytes is the r value, the second 32 bytes the s value, and the final byte is the v value in ‘Electrum’ notation.

Source

pub fn from_raw_array(bytes: &[u8; 65]) -> Result<Self, SignatureError>

Parses a 65-byte long raw signature.

See from_raw.

Source

pub fn from_bytes_and_parity(bytes: &[u8], parity: bool) -> Self

Parses a signature from a byte slice, with a v value

§Panics

If the slice is not at least 64 bytes long.

Source

pub fn as_bytes(&self) -> [u8; 65]

Returns the byte-array representation of this signature.

The first 32 bytes are the r value, the second 32 bytes the s value and the final byte is the v value in ‘Electrum’ notation.

Source

pub fn as_rsy(&self) -> [u8; 65]

Returns the byte-array representation of this signature as (r, s, y_parity).

The first 32 bytes are the r value, the second 32 bytes the s value, and the final byte is the y_parity value as-is (0 or 1).

See as_erc2098 for the compact ERC-2098 representation.

Source

pub fn from_erc2098(bytes: &[u8]) -> Self

Decode the signature from the ERC-2098 compact representation.

The first 32 bytes are the r value, and the next 32 bytes are the s value with yParity in the top bit of the s value, as described in ERC-2098.

See https://eips.ethereum.org/EIPS/eip-2098

§Panics

If the slice is not at least 64 bytes long.

Source

pub fn as_erc2098(&self) -> [u8; 64]

Returns the ERC-2098 compact representation of this signature.

The first 32 bytes are the r value, and the next 32 bytes are the s value with yParity in the top bit of the s value, as described in ERC-2098.

See https://eips.ethereum.org/EIPS/eip-2098

Source

pub fn with_parity(self, v: bool) -> Self

Sets the recovery ID by normalizing a v value.

Source

pub fn to_k256(self) -> Result<Signature, Error>

Available on crate feature k256 only.

Returns the inner ECDSA signature.

Source

pub fn from_signature_and_parity(sig: Signature, v: bool) -> Self

Available on crate feature k256 only.

Instantiate from a signature and recovery id

Source

pub fn from_scalars_and_parity(r: B256, s: B256, parity: bool) -> Self

Creates a Signature from the serialized r and s scalar values, which comprise the ECDSA signature, alongside a v value, used to determine the recovery ID.

Source

pub fn normalize_s(&self) -> Option<Self>

Normalizes the signature into “low S” form as described in BIP 0062: Dealing with Malleability.

If s is already normalized, returns None.

Source

pub fn normalized_s(self) -> Self

Normalizes the signature into “low S” form as described in BIP 0062: Dealing with Malleability.

If s is already normalized, returns self.

Source

pub fn recid(&self) -> RecoveryId

Available on crate feature k256 only.

Returns the recovery ID.

Source

pub fn recover_address_from_msg<T: AsRef<[u8]>>( &self, msg: T, ) -> Result<Address, SignatureError>

Available on crate feature k256 only.

Recovers an Address from this signature and the given message by first prefixing and hashing the message according to EIP-191.

Source

pub fn recover_address_from_prehash( &self, prehash: &B256, ) -> Result<Address, SignatureError>

Available on crate feature k256 only.

Recovers an Address from this signature and the given prehashed message.

Source

pub fn recover_from_msg<T: AsRef<[u8]>>( &self, msg: T, ) -> Result<VerifyingKey, SignatureError>

Available on crate feature k256 only.

Recovers a VerifyingKey from this signature and the given message by first prefixing and hashing the message according to EIP-191.

Source

pub fn recover_from_prehash( &self, prehash: &B256, ) -> Result<VerifyingKey, SignatureError>

Available on crate feature k256 only.

Recovers a VerifyingKey from this signature and the given prehashed message.

Source

pub fn r(&self) -> U256

Returns the r component of this signature.

Source

pub fn s(&self) -> U256

Returns the s component of this signature.

Source

pub fn v(&self) -> bool

Returns the recovery ID as a bool.

Source

pub fn rlp_rs_len(&self) -> usize

Available on crate feature rlp only.

Length of RLP RS field encoding

Source

pub fn write_rlp_rs(&self, out: &mut dyn BufMut)

Available on crate feature rlp only.

Write R and S to an RLP buffer in progress.

Source

pub fn write_rlp_vrs(&self, out: &mut dyn BufMut, v: impl Encodable)

Available on crate feature rlp only.

Write the VRS to the output.

Trait Implementations§

Source§

impl<'a> Arbitrary<'a> for Signature

Available on crate feature arbitrary only.
Source§

fn arbitrary(u: &mut Unstructured<'a>) -> Result<Self>

Generate an arbitrary value of Self from the given unstructured data. Read more
Source§

fn arbitrary_take_rest(u: Unstructured<'a>) -> Result<Self, Error>

Generate an arbitrary value of Self from the entirety of the given unstructured data. Read more
Source§

fn size_hint(depth: usize) -> (usize, Option<usize>)

Get a size hint for how many bytes out of an Unstructured this type needs to construct itself. Read more
Source§

fn try_size_hint( depth: usize, ) -> Result<(usize, Option<usize>), MaxRecursionReached>

Get a size hint for how many bytes out of an Unstructured this type needs to construct itself. Read more
Source§

impl Arbitrary for Signature

Available on crate feature arbitrary only.
Source§

type Parameters = ()

The type of parameters that arbitrary_with accepts for configuration of the generated Strategy. Parameters must implement Default.
Source§

type Strategy = Map<<(Uint<256, 4>, Uint<256, 4>, bool) as Arbitrary>::Strategy, fn((Uint<256, 4>, Uint<256, 4>, bool)) -> Signature>

The type of Strategy used to generate values of type Self.
Source§

fn arbitrary_with((): Self::Parameters) -> Self::Strategy

Generates a Strategy for producing arbitrary values of type the implementing type (Self). The strategy is passed the arguments given in args. Read more
Source§

fn arbitrary() -> Self::Strategy

Generates a Strategy for producing arbitrary values of type the implementing type (Self). Read more
Source§

impl<'__expr> AsExpression<Binary> for &'__expr Signature

Source§

type Expression = Bound<Binary, &'__expr Signature>

The expression being returned
Source§

fn as_expression(self) -> <Self as AsExpression<Binary>>::Expression

Perform the conversion
Source§

impl AsExpression<Binary> for Signature

Source§

type Expression = Bound<Binary, Signature>

The expression being returned
Source§

fn as_expression(self) -> <Self as AsExpression<Binary>>::Expression

Perform the conversion
Source§

impl<'__expr> AsExpression<Nullable<Binary>> for &'__expr Signature

Source§

type Expression = Bound<Nullable<Binary>, &'__expr Signature>

The expression being returned
Source§

fn as_expression(self) -> <Self as AsExpression<Nullable<Binary>>>::Expression

Perform the conversion
Source§

impl AsExpression<Nullable<Binary>> for Signature

Source§

type Expression = Bound<Nullable<Binary>, Signature>

The expression being returned
Source§

fn as_expression(self) -> <Self as AsExpression<Nullable<Binary>>>::Expression

Perform the conversion
Source§

impl Clone for Signature

Source§

fn clone(&self) -> Signature

Returns a duplicate of the value. Read more
1.0.0§

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<'de> Deserialize<'de> for Signature

Available on crate feature serde only.
Source§

fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for Signature

Source§

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

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

impl From<&Signature> for [u8; 65]

Source§

fn from(value: &Signature) -> [u8; 65]

Converts to this type from the input type.
Source§

impl From<&Signature> for Vec<u8>

Source§

fn from(value: &Signature) -> Self

Converts to this type from the input type.
Source§

impl From<(Signature<Secp256k1>, RecoveryId)> for Signature

Available on crate feature k256 only.
Source§

fn from(value: (Signature, RecoveryId)) -> Self

Converts to this type from the input type.
Source§

impl From<Signature> for [u8; 65]

Source§

fn from(value: Signature) -> [u8; 65]

Converts to this type from the input type.
Source§

impl From<Signature> for Vec<u8>

Source§

fn from(value: Signature) -> Self

Converts to this type from the input type.
Source§

impl<Db: Backend> FromSql<Binary, Db> for Signature
where *const [u8]: FromSql<Binary, Db>,

Available on crate feature diesel only.
Source§

fn from_sql(bytes: Db::RawValue<'_>) -> DeserResult<Self>

See the trait documentation.
Source§

fn from_nullable_sql( bytes: Option<<DB as Backend>::RawValue<'_>>, ) -> Result<Self, Box<dyn Error + Sync + Send>>

A specialized variant of from_sql for handling null values. Read more
Source§

impl FromStr for Signature

Source§

type Err = SignatureError

The associated error which can be returned from parsing.
Source§

fn from_str(s: &str) -> Result<Self, Self::Err>

Parses a string s to return a value of this type. Read more
Source§

impl Hash for Signature

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for Signature

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<__DB, __ST> Queryable<__ST, __DB> for Signature
where __DB: Backend, __ST: SingleValue, Self: FromSql<__ST, __DB>,

Source§

type Row = Signature

The Rust type you’d like to map from. Read more
Source§

fn build(row: Self) -> Result<Self>

Construct an instance of this type
Source§

impl Serialize for Signature

Available on crate feature serde only.
Source§

fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl<Db> ToSql<Binary, Db> for Signature
where for<'c> Db: Backend<BindCollector<'c> = RawBytesBindCollector<Db>> + Backend,

Available on crate feature diesel only.
Source§

fn to_sql<'b>(&'b self, out: &mut Output<'b, '_, Db>) -> SerResult

See the trait documentation.
Source§

impl<__DB> ToSql<Nullable<Binary>, __DB> for Signature
where __DB: Backend, Self: ToSql<Binary, __DB>,

Source§

fn to_sql<'__b>(&'__b self, out: &mut Output<'__b, '_, __DB>) -> Result

See the trait documentation.
Source§

impl TryFrom<&[u8]> for Signature

Source§

fn try_from(bytes: &[u8]) -> Result<Self, Self::Error>

Parses a 65-byte long raw signature.

See from_raw.

Source§

type Error = SignatureError

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

impl TryFrom<Signature> for Signature

Available on crate feature k256 only.
Source§

type Error = Error

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

fn try_from(value: Signature) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl Copy for Signature

Source§

impl Eq for Signature

Source§

impl StructuralPartialEq for Signature

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> AggregateExpressionMethods for T

Source§

fn aggregate_distinct(self) -> Self::Output
where Self: DistinctDsl,

DISTINCT modifier for aggregate functions Read more
Source§

fn aggregate_all(self) -> Self::Output
where Self: AllDsl,

ALL modifier for aggregate functions Read more
Source§

fn aggregate_filter<P>(self, f: P) -> Self::Output
where P: AsExpression<Bool>, Self: FilterDsl<<P as AsExpression<Bool>>::Expression>,

Add an aggregate function filter Read more
Source§

fn aggregate_order<O>(self, o: O) -> Self::Output
where Self: OrderAggregateDsl<O>,

Add an aggregate function order Read more
§

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

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> ArchivePointee for T

Source§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
Source§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
§

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

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

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

§

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

Mutably borrows from an owned value. Read more
§

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

§

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> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Converts Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Converts Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Converts &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Converts &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSend for T
where T: Any + Send,

Source§

fn into_any_send(self: Box<T>) -> Box<dyn Any + Send>

Converts Box<Trait> (where Trait: DowncastSend) to Box<dyn Any + Send>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_sync(self: Box<T>) -> Box<dyn Any + Sync + Send>

Converts Box<Trait> (where Trait: DowncastSync) to Box<dyn Any + Send + Sync>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Converts Arc<Trait> (where Trait: DowncastSync) to Arc<Any>, which can then be downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
§

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

§

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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> IntoSql for T

Source§

fn into_sql<T>(self) -> Self::Expression

Convert self to an expression for Diesel’s query builder. Read more
Source§

fn as_sql<'a, T>(&'a self) -> <&'a Self as AsExpression<T>>::Expression
where &'a Self: AsExpression<T>, T: SqlType + TypedExpressionType,

Convert &self to an expression for Diesel’s query builder. Read more
Source§

impl<T> LayoutRaw for T

Source§

fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>

Returns the layout of the type.
Source§

impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
where T: SharedNiching<N1, N2>, N1: Niching<T>, N2: Niching<T>,

Source§

unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool

Returns whether the given value has been niched. Read more
Source§

fn resolve_niched(out: Place<NichedOption<T, N1>>)

Writes data to out indicating that a T is niched.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Pointee for T

Source§

type Metadata = ()

The metadata type for pointers and references to this type.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

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

§

type Owned = T

The resulting type after obtaining ownership.
§

fn to_owned(&self) -> T

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

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

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

impl<T> ToString for T
where T: Display + ?Sized,

§

fn to_string(&self) -> String

Converts the given value to a String. Read more
§

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

§

type Error = Infallible

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

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

Performs the conversion.
§

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

§

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

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

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

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WindowExpressionMethods for T

Source§

fn over(self) -> Self::Output
where Self: OverDsl,

Turn a function call into a window function call Read more
Source§

fn window_filter<P>(self, f: P) -> Self::Output
where P: AsExpression<Bool>, Self: FilterDsl<<P as AsExpression<Bool>>::Expression>,

Add a filter to the current window function Read more
Source§

fn partition_by<E>(self, expr: E) -> Self::Output
where Self: PartitionByDsl<E>,

Add a partition clause to the current window function Read more
Source§

fn window_order<E>(self, expr: E) -> Self::Output
where Self: OrderWindowDsl<E>,

Add a order clause to the current window function Read more
Source§

fn frame_by<E>(self, expr: E) -> Self::Output
where Self: FrameDsl<E>,

Add a frame clause to the current window function Read more
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 72 bytes