mithril_common/crypto_helper/types/
wrappers.rs

1use kes_summed_ed25519::kes::Sum6KesSig;
2use mithril_stm::{
3    AggregateSignature, AggregateVerificationKey, SingleSignature, VerificationKeyProofOfPossession,
4};
5
6use crate::crypto_helper::{D, MKMapProof, MKProof, OpCert, ProtocolKey};
7use crate::entities::BlockRange;
8
9/// Wrapper of [MithrilStm:VerificationKeyProofOfPossession](type@VerificationKeyProofOfPossession) to add serialization
10/// utilities.
11pub type ProtocolSignerVerificationKey = ProtocolKey<VerificationKeyProofOfPossession>;
12
13/// Wrapper of [KES:Sum6KesSig](https://github.com/input-output-hk/kes/blob/master/src/kes.rs) to add
14/// serialization utilities.
15pub type ProtocolSignerVerificationKeySignature = ProtocolKey<Sum6KesSig>;
16
17/// Wrapper of [MithrilStm:SingleSignature](type@SingleSignature) to add serialization utilities.
18pub type ProtocolSingleSignature = ProtocolKey<SingleSignature>;
19
20/// Wrapper of [MithrilStm:AggregateSignature](struct@AggregateSignature) to add serialization utilities.
21pub type ProtocolMultiSignature = ProtocolKey<AggregateSignature<D>>;
22
23/// Wrapper of [OpCert] to add serialization utilities.
24pub type ProtocolOpCert = ProtocolKey<OpCert>;
25
26/// Wrapper of [MithrilStm:AggregateVerificationKey](struct@AggregateVerificationKey).
27pub type ProtocolAggregateVerificationKey = ProtocolKey<AggregateVerificationKey<D>>;
28
29/// Wrapper of [MKProof] to add serialization utilities.
30pub type ProtocolMkProof = ProtocolKey<MKMapProof<BlockRange>>;
31
32impl_codec_and_type_conversions_for_protocol_key!(
33    json_hex_codec => AggregateSignature<D>, ed25519_dalek::VerifyingKey, ed25519_dalek::SigningKey, AggregateVerificationKey<D>,
34        MKProof, VerificationKeyProofOfPossession, Sum6KesSig, OpCert
35);
36
37impl_codec_and_type_conversions_for_protocol_key!(
38    bytes_hex_codec => SingleSignature, ed25519_dalek::Signature
39);