pub trait SignatureKey: Send + Sync + Clone + Sized + Debug + Hash + Serialize + for<'a> Deserialize<'a> + PartialEq + Eq + PartialOrd + Ord + Display + for<'a> TryFrom<&'a TaggedBase64> + Into<TaggedBase64> {
    type PrivateKey: Send + Sync + Sized + Clone + Debug + Eq + Serialize + for<'a> Deserialize<'a> + Hash;
    type StakeTableEntry: StakeTableEntryType + Send + Sync + Sized + Clone + Debug + Hash + Eq + Serialize + for<'a> Deserialize<'a>;
    type QcParams: Send + Sync + Sized + Clone + Debug + Hash;
    type PureAssembledSignatureType: Send + Sync + Sized + Clone + Debug + Hash + PartialEq + Eq + Serialize + for<'a> Deserialize<'a> + Into<TaggedBase64> + for<'a> TryFrom<&'a TaggedBase64>;
    type QcType: Send + Sync + Sized + Clone + Debug + Hash + PartialEq + Eq + Serialize + for<'a> Deserialize<'a>;
    type SignError: Error + Send + Sync;

Show 13 methods // Required methods fn validate( &self, signature: &Self::PureAssembledSignatureType, data: &[u8] ) -> bool; fn sign( private_key: &Self::PrivateKey, data: &[u8] ) -> Result<Self::PureAssembledSignatureType, Self::SignError>; fn from_private(private_key: &Self::PrivateKey) -> Self; fn to_bytes(&self) -> Vec<u8> ; fn from_bytes(bytes: &[u8]) -> Result<Self, SerializationError>; fn generated_from_seed_indexed( seed: [u8; 32], index: u64 ) -> (Self, Self::PrivateKey); fn stake_table_entry(&self, stake: u64) -> Self::StakeTableEntry; fn public_key(entry: &Self::StakeTableEntry) -> Self; fn public_parameter( stake_entries: Vec<Self::StakeTableEntry>, threshold: U256 ) -> Self::QcParams; fn check( real_qc_pp: &Self::QcParams, data: &[u8], qc: &Self::QcType ) -> bool; fn sig_proof( signature: &Self::QcType ) -> (Self::PureAssembledSignatureType, BitVec); fn assemble( real_qc_pp: &Self::QcParams, signers: &BitSlice, sigs: &[Self::PureAssembledSignatureType] ) -> Self::QcType; fn genesis_proposer_pk() -> Self;
}
Expand description

Trait for abstracting public key signatures Self is the public key type

Required Associated Types§

source

type PrivateKey: Send + Sync + Sized + Clone + Debug + Eq + Serialize + for<'a> Deserialize<'a> + Hash

The private key type for this signature algorithm

source

type StakeTableEntry: StakeTableEntryType + Send + Sync + Sized + Clone + Debug + Hash + Eq + Serialize + for<'a> Deserialize<'a>

The type of the entry that contain both public key and stake value

source

type QcParams: Send + Sync + Sized + Clone + Debug + Hash

The type of the quorum certificate parameters used for assembled signature

source

type PureAssembledSignatureType: Send + Sync + Sized + Clone + Debug + Hash + PartialEq + Eq + Serialize + for<'a> Deserialize<'a> + Into<TaggedBase64> + for<'a> TryFrom<&'a TaggedBase64>

The type of the assembled signature, without BitVec

source

type QcType: Send + Sync + Sized + Clone + Debug + Hash + PartialEq + Eq + Serialize + for<'a> Deserialize<'a>

The type of the assembled qc: assembled signature + BitVec

source

type SignError: Error + Send + Sync

Type of error that can occur when signing data

Required Methods§

source

fn validate( &self, signature: &Self::PureAssembledSignatureType, data: &[u8] ) -> bool

Validate a signature

source

fn sign( private_key: &Self::PrivateKey, data: &[u8] ) -> Result<Self::PureAssembledSignatureType, Self::SignError>

Produce a signature

§Errors

If unable to sign the data with the key

source

fn from_private(private_key: &Self::PrivateKey) -> Self

Produce a public key from a private key

source

fn to_bytes(&self) -> Vec<u8>

Serialize a public key to bytes

source

fn from_bytes(bytes: &[u8]) -> Result<Self, SerializationError>

Deserialize a public key from bytes

§Errors

Will return Err if deserialization fails

source

fn generated_from_seed_indexed( seed: [u8; 32], index: u64 ) -> (Self, Self::PrivateKey)

Generate a new key pair

source

fn stake_table_entry(&self, stake: u64) -> Self::StakeTableEntry

get the stake table entry from the public key and stake value

source

fn public_key(entry: &Self::StakeTableEntry) -> Self

only get the public key from the stake table entry

source

fn public_parameter( stake_entries: Vec<Self::StakeTableEntry>, threshold: U256 ) -> Self::QcParams

get the public parameter for the assembled signature checking

source

fn check(real_qc_pp: &Self::QcParams, data: &[u8], qc: &Self::QcType) -> bool

check the quorum certificate for the assembled signature

source

fn sig_proof( signature: &Self::QcType ) -> (Self::PureAssembledSignatureType, BitVec)

get the assembled signature and the BitVec separately from the assembled signature

source

fn assemble( real_qc_pp: &Self::QcParams, signers: &BitSlice, sigs: &[Self::PureAssembledSignatureType] ) -> Self::QcType

assemble the signature from the partial signature and the indication of signers in BitVec

source

fn genesis_proposer_pk() -> Self

generates the genesis public key. Meant to be dummy/filler

Object Safety§

This trait is not object safe.

Implementors§

source§

impl SignatureKey for BLSPubKey

§

type PrivateKey = SignKey

§

type StakeTableEntry = StakeTableEntry<VerKey>

§

type QcParams = QcParams<VerKey, <BLSOverBN254CurveSignatureScheme as SignatureScheme>::PublicParameter>

§

type PureAssembledSignatureType = <BLSOverBN254CurveSignatureScheme as SignatureScheme>::Signature

§

type QcType = (<VerKey as SignatureKey>::PureAssembledSignatureType, BitVec)

§

type SignError = SignatureError