pub trait SignatureSerialize: Signature {
const PUBLIC_KEY_SIZE: usize;
const SECRET_KEY_SIZE: usize;
const SIGNATURE_SIZE: usize;
// Required methods
fn serialize_public_key(key: &Self::PublicKey) -> Vec<u8> ⓘ;
fn deserialize_public_key(bytes: &[u8]) -> Result<Self::PublicKey>;
fn serialize_secret_key(key: &Self::SecretKey) -> Zeroizing<Vec<u8>>;
fn deserialize_secret_key(bytes: &[u8]) -> Result<Self::SecretKey>;
fn serialize_signature(sig: &Self::SignatureData) -> Vec<u8> ⓘ;
fn deserialize_signature(bytes: &[u8]) -> Result<Self::SignatureData>;
}
Expand description
Optional trait for signature algorithms that support key serialization
This trait should only be implemented for algorithms where key import/export is safe and well-defined.
Required Associated Constants§
Sourceconst PUBLIC_KEY_SIZE: usize
const PUBLIC_KEY_SIZE: usize
Size of serialized public keys in bytes
Sourceconst SECRET_KEY_SIZE: usize
const SECRET_KEY_SIZE: usize
Size of serialized secret keys in bytes
Sourceconst SIGNATURE_SIZE: usize
const SIGNATURE_SIZE: usize
Size of serialized signatures in bytes
Required Methods§
Sourcefn deserialize_public_key(bytes: &[u8]) -> Result<Self::PublicKey>
fn deserialize_public_key(bytes: &[u8]) -> Result<Self::PublicKey>
Sourcefn serialize_secret_key(key: &Self::SecretKey) -> Zeroizing<Vec<u8>>
fn serialize_secret_key(key: &Self::SecretKey) -> Zeroizing<Vec<u8>>
Export a secret key to bytes
§Security Warning
The returned bytes contain sensitive key material and must be
handled with appropriate care. The Zeroizing
wrapper ensures
the bytes are cleared from memory when dropped.
Sourcefn deserialize_secret_key(bytes: &[u8]) -> Result<Self::SecretKey>
fn deserialize_secret_key(bytes: &[u8]) -> Result<Self::SecretKey>
Sourcefn serialize_signature(sig: &Self::SignatureData) -> Vec<u8> ⓘ
fn serialize_signature(sig: &Self::SignatureData) -> Vec<u8> ⓘ
Export a signature to bytes
Sourcefn deserialize_signature(bytes: &[u8]) -> Result<Self::SignatureData>
fn deserialize_signature(bytes: &[u8]) -> Result<Self::SignatureData>
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.