1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// Copyright 2023 Marcel Luca Schmidt, Marvin Beckmann
//
// This file is part of qFALL-schemes.
//
// qfall-schemes is free software: you can redistribute it and/or modify it under
// the terms of the Mozilla Public License Version 2.0 as published by the
// Mozilla Foundation. See <https://mozilla.org/en-US/MPL/2.0/>.
//! Contains traits and implementations related to signature schemes.
//!
//! References:
//! - \[1\] Gentry, Craig, Chris Peikert, and Vinod Vaikuntanathan.
//! "Trapdoors for hard lattices and new cryptographic constructions."
//! Proceedings of the fortieth annual ACM symposium on Theory of computing. 2008.
//! <https://doi.org/10.1145/1374376.1374407>
/// This trait should be implemented by every signature scheme.
/// It captures the essential functionalities each signature scheme has to support.
///
/// Note: [`SignatureScheme::key_gen`] does not take in the parameter `1^n`, as this is a public parameter,
/// which shall be defined by the struct implementing this trait.