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) -> ZeroizingBytes;
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) -> ZeroizingBytes
fn serialize_secret_key(key: &Self::SecretKey) -> ZeroizingBytes
Export a secret key to bytes
§Security Warning
The returned bytes contain sensitive key material and must be handled with appropriate care. The exact-size zeroizing wrapper ensures every initialized byte is 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".