mithril_common/crypto_helper/types/
wrappers.rs

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