Struct secp256k1::Signature
[−]
[src]
pub struct 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_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
Trait Implementations
impl Copy for Signature
[src]
impl Clone for Signature
[src]
fn clone(&self) -> Signature
[src]
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)
1.0.0[src]
Performs copy-assignment from source
. Read more
impl PartialEq for Signature
[src]
fn eq(&self, __arg_0: &Signature) -> bool
[src]
This method tests for self
and other
values to be equal, and is used by ==
. Read more
fn ne(&self, __arg_0: &Signature) -> bool
[src]
This method tests for !=
.
impl Eq for Signature
[src]
impl Debug for Signature
[src]
fn fmt(&self, __arg_0: &mut Formatter) -> Result
[src]
Formats the value using the given formatter. Read more
impl From<Signature> for Signature
[src]
Creates a new signature from a FFI signature
impl Index<usize> for Signature
[src]
type Output = u8
The returned type after indexing.
fn index(&self, index: usize) -> &u8
[src]
Performs the indexing (container[index]
) operation.
impl Index<Range<usize>> for Signature
[src]
type Output = [u8]
The returned type after indexing.
fn index(&self, index: Range<usize>) -> &[u8]
[src]
Performs the indexing (container[index]
) operation.
impl Index<RangeFrom<usize>> for Signature
[src]
type Output = [u8]
The returned type after indexing.
fn index(&self, index: RangeFrom<usize>) -> &[u8]
[src]
Performs the indexing (container[index]
) operation.