[−][src]Struct secp256k1zkp::Signature
An ECDSA signature
Methods
impl Signature
[src]
pub fn from_der(secp: &Secp256k1, data: &[u8]) -> Result<Signature, Error>
[src]
Converts a DER-encoded byte slice to a signature
pub fn from_compact(secp: &Secp256k1, data: &[u8]) -> Result<Signature, Error>
[src]
Converts a 64-byte compact-encoded byte slice to a signature
pub fn from_raw_data(data: &[u8; 64]) -> Result<Signature, Error>
[src]
Stores raw bytes provided as a signature, with no conversion
pub fn from_der_lax(secp: &Secp256k1, data: &[u8]) -> Result<Signature, Error>
[src]
Converts a "lax DER"-encoded byte slice to a signature. This is basically only useful for validating signatures in the Bitcoin blockchain from before
- It should never be used in new applications. This library does not support serializing to this "format"
pub fn normalize_s(&mut self, secp: &Secp256k1)
[src]
Normalizes a signature to a "low S" form. In ECDSA, signatures are of the form (r, s) where r and s are numbers lying in some finite field. The verification equation will pass for (r, s) iff it passes for (r, -s), so it is possible to ``modify'' signatures in transit by flipping the sign of s. This does not constitute a forgery since the signed message still cannot be changed, but for some applications, changing even the signature itself can be a problem. Such applications require a "strong signature". It is believed that ECDSA is a strong signature except for this ambiguity in the sign of s, so to accomodate these applications libsecp256k1 will only accept signatures for which s is in the lower half of the field range. This eliminates the ambiguity.
However, for some systems, signatures with high s-values are considered valid. (For example, parsing the historic Bitcoin blockchain requires this.) For these applications we provide this normalization function, which ensures that the s value lies in the lower half of its range.
pub fn as_ptr(&self) -> *const Signature
[src]
Obtains a raw pointer suitable for use with FFI functions
pub fn as_mut_ptr(&mut self) -> *mut Signature
[src]
Obtains a raw mutable pointer suitable for use with FFI functions
pub fn serialize_der(&self, secp: &Secp256k1) -> Vec<u8>
[src]
Serializes the signature in DER format
pub fn serialize_compact(&self, secp: &Secp256k1) -> [u8; 64]
[src]
Serializes the signature in compact format
pub fn to_raw_data(&self) -> [u8; 64]
[src]
Just return raw data, no conversion tricks
Trait Implementations
impl Copy for Signature
[src]
impl AsRef<[u8]> for Signature
[src]
impl PartialEq<Signature> for Signature
[src]
impl From<Signature> for Signature
[src]
Creates a new signature from a FFI signature
impl Clone for Signature
[src]
fn clone(&self) -> Signature
[src]
fn clone_from(&mut self, source: &Self)
1.0.0[src]
Performs copy-assignment from source
. Read more
impl Eq for Signature
[src]
impl Debug for Signature
[src]
impl Index<usize> for Signature
[src]
impl Index<Range<usize>> for Signature
[src]
type Output = [u8]
The returned type after indexing.
fn index(&self, index: Range<usize>) -> &[u8]
[src]
impl Index<RangeFrom<usize>> for Signature
[src]
type Output = [u8]
The returned type after indexing.
fn index(&self, index: RangeFrom<usize>) -> &[u8]
[src]
impl Index<RangeFull> for Signature
[src]
impl Serialize for Signature
[src]
impl<'de> Deserialize<'de> for Signature
[src]
fn deserialize<D>(d: D) -> Result<Signature, D::Error> where
D: Deserializer<'de>,
[src]
D: Deserializer<'de>,
Auto Trait Implementations
Blanket Implementations
impl<T, U> Into for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
impl<T> From for T
[src]
impl<T, U> TryFrom for T where
U: Into<T>,
[src]
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>
[src]
impl<T> Borrow for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T, U> TryInto for T where
U: TryFrom<T>,
[src]
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>
[src]
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> DeserializeOwned for T where
T: Deserialize<'de>,
[src]
T: Deserialize<'de>,