Struct schnorr_fun::Signature [−][src]
Expand description
A Schnorr signature.
Fields
R: XOnly
The x-coordinate of the signature’s public nonce. When verifying it is
interpreted as the Point
.
s: Scalar<S, Zero>
The challenge response part of the signature.
Implementations
Serializes the signature as 64 bytes – First the 32-byte nonce x-coordinate and then the 32-byte challenge response scalar.
Examples
let bytes = signature.to_bytes(); assert_eq!(signature.R.as_bytes(), &bytes[..32]); assert_eq!(signature.s.to_bytes().as_ref(), &bytes[32..]);
Gets a reference to the signature components as a tuple.
Examples
let (R, s) = signature.as_tuple();
Marks the signature with a Secrecy
. If it is marked as Secret
the
operations (e.g. verification) on the signature should be done in constant
time.
Examples
use schnorr_fun::{fun::marker::*, Signature}; let signature = Signature::random(&mut rand::thread_rng()); let secret_sig = signature.mark::<Secret>();
Generates a uniformly distributed signature. It will be valid for an infinite number of messages on every key but computationally you will never be able to find one! Useful for testing.
Examples
use schnorr_fun::Signature; let random_signature = Signature::random(&mut rand::thread_rng());
Deserializes a signature from the byte representation produced by to_bytes
.
This returns None
if the first 32 bytes were not a valid XOnly
or the last 32 bytes were not a valid scalar.
Examples
match Signature::from_bytes(bytes) { Some(signature) => println!("the bytes were a valid encoding of a signature!"), None => eprintln!("the bytes did *not* encode a valid signature"), }
Trait Implementations
fn deserialize<Deser: Deserializer<'de>>(
deserializer: Deser
) -> Result<Signature<S>, Deser::Error>
fn deserialize<Deser: Deserializer<'de>>(
deserializer: Deser
) -> Result<Signature<S>, Deser::Error>
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations
impl<S> RefUnwindSafe for Signature<S> where
S: RefUnwindSafe,
impl<S> UnwindSafe for Signature<S> where
S: UnwindSafe,
Blanket Implementations
Mutably borrows from an owned value. Read more
Returns a new instance of the invocant that will be marked with M
. Read more
type Output = T
type Output = T
Should always be Self