pub struct Signature { /* private fields */ }Expand description
An Ethereum ECDSA signature.
Implementations§
Source§impl Signature
impl Signature
Sourcepub fn decode_rlp_vrs(
buf: &mut &[u8],
decode_parity: impl FnOnce(&mut &[u8]) -> Result<bool>,
) -> Result<Self, Error>
pub fn decode_rlp_vrs( buf: &mut &[u8], decode_parity: impl FnOnce(&mut &[u8]) -> Result<bool>, ) -> Result<Self, Error>
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
impl Signature
Sourcepub const fn new(r: U256, s: U256, y_parity: bool) -> Self
pub const fn new(r: U256, s: U256, y_parity: bool) -> Self
Instantiate a new signature from r, s, and v values.
Sourcepub fn from_raw(bytes: &[u8]) -> Result<Self, SignatureError>
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.
Sourcepub fn from_raw_array(bytes: &[u8; 65]) -> Result<Self, SignatureError>
pub fn from_raw_array(bytes: &[u8; 65]) -> Result<Self, SignatureError>
Parses a 65-byte long raw signature.
See from_raw.
Sourcepub fn from_bytes_and_parity(bytes: &[u8], parity: bool) -> Self
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.
Sourcepub fn as_bytes(&self) -> [u8; 65]
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.
Sourcepub fn as_rsy(&self) -> [u8; 65]
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.
Sourcepub fn from_erc2098(bytes: &[u8]) -> Self
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.
Sourcepub fn as_erc2098(&self) -> [u8; 64]
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.
Sourcepub fn with_parity(self, v: bool) -> Self
pub fn with_parity(self, v: bool) -> Self
Sets the recovery ID by normalizing a v value.
Sourcepub fn from_signature_and_parity(sig: Signature, v: bool) -> Self
pub fn from_signature_and_parity(sig: Signature, v: bool) -> Self
Instantiate from a signature and recovery id
Sourcepub fn from_scalars_and_parity(r: B256, s: B256, parity: bool) -> Self
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.
Sourcepub fn normalize_s(&self) -> Option<Self>
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.
Sourcepub fn normalized_s(self) -> Self
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.
Sourcepub fn recid(&self) -> RecoveryId
pub fn recid(&self) -> RecoveryId
Returns the recovery ID.
Sourcepub fn recover_address_from_msg<T: AsRef<[u8]>>(
&self,
msg: T,
) -> Result<Address, SignatureError>
pub fn recover_address_from_msg<T: AsRef<[u8]>>( &self, msg: T, ) -> Result<Address, SignatureError>
Sourcepub fn recover_address_from_prehash(
&self,
prehash: &B256,
) -> Result<Address, SignatureError>
pub fn recover_address_from_prehash( &self, prehash: &B256, ) -> Result<Address, SignatureError>
Recovers an Address from this signature and the given prehashed message.
Sourcepub fn recover_from_msg<T: AsRef<[u8]>>(
&self,
msg: T,
) -> Result<VerifyingKey, SignatureError>
pub fn recover_from_msg<T: AsRef<[u8]>>( &self, msg: T, ) -> Result<VerifyingKey, SignatureError>
Recovers a VerifyingKey from this signature and the given message by first prefixing and
hashing the message according to EIP-191.
Sourcepub fn recover_from_prehash(
&self,
prehash: &B256,
) -> Result<VerifyingKey, SignatureError>
pub fn recover_from_prehash( &self, prehash: &B256, ) -> Result<VerifyingKey, SignatureError>
Recovers a VerifyingKey from this signature and the given prehashed message.
Sourcepub fn rlp_rs_len(&self) -> usize
pub fn rlp_rs_len(&self) -> usize
Length of RLP RS field encoding
Sourcepub fn write_rlp_rs(&self, out: &mut dyn BufMut)
pub fn write_rlp_rs(&self, out: &mut dyn BufMut)
Write R and S to an RLP buffer in progress.
Sourcepub fn write_rlp_vrs(&self, out: &mut dyn BufMut, v: impl Encodable)
pub fn write_rlp_vrs(&self, out: &mut dyn BufMut, v: impl Encodable)
Write the VRS to the output.