@@ -16,16 +16,24 @@ type KesSignatureResult = StdResult<(Sum6KesSig, OpCert)>;
16
16
/// Fake KES Signer implementation.
17
17
pub struct KesSignerFake {
18
18
results : Mutex < VecDeque < KesSignatureResult > > ,
19
+ signed_messages : Mutex < VecDeque < Vec < u8 > > > ,
19
20
}
20
21
21
22
impl KesSignerFake {
22
23
/// Creates a new `KesSignerFake` instance.
23
24
pub fn new ( results : Vec < KesSignatureResult > ) -> Self {
24
25
Self {
25
26
results : Mutex :: new ( results. into ( ) ) ,
27
+ signed_messages : Mutex :: new ( VecDeque :: new ( ) ) ,
26
28
}
27
29
}
28
30
31
+ /// Returns the messages that were requested to be signed
32
+ pub fn get_signed_messages ( & self ) -> Vec < Vec < u8 > > {
33
+ let messages = self . signed_messages . lock ( ) . unwrap ( ) ;
34
+ messages. iter ( ) . cloned ( ) . collect ( )
35
+ }
36
+
29
37
/// Returns a dummy signature result that is always successful.
30
38
pub fn dummy_signature ( test_directory : & str ) -> ( Sum6KesSig , OpCert ) {
31
39
let KesCryptographicMaterialForTest {
@@ -55,7 +63,10 @@ impl KesSignerFake {
55
63
}
56
64
57
65
impl KesSigner for KesSignerFake {
58
- fn sign ( & self , _message : & [ u8 ] , _kes_period : KesPeriod ) -> KesSignatureResult {
66
+ fn sign ( & self , message : & [ u8 ] , _kes_period : KesPeriod ) -> KesSignatureResult {
67
+ let mut messages = self . signed_messages . lock ( ) . unwrap ( ) ;
68
+ messages. push_back ( message. to_vec ( ) ) ;
69
+
59
70
let mut results = self . results . lock ( ) . unwrap ( ) ;
60
71
61
72
results. pop_front ( ) . unwrap ( )
@@ -77,25 +88,29 @@ mod tests {
77
88
0 as KesPeriod ,
78
89
"fake_kes_signer_returns_signature_batches_in_expected_order" ,
79
90
) ;
80
- let message = b"Test message for KES signing" ;
91
+ let message1 = b"Test message 1 for KES signing" ;
81
92
let kes_signer = KesSignerStandard :: new ( kes_secret_key_file, operational_certificate_file) ;
82
93
let kes_signing_period = 1 ;
83
94
let ( kes_signature, op_cert) = kes_signer
84
- . sign ( message , kes_signing_period)
95
+ . sign ( message1 , kes_signing_period)
85
96
. expect ( "Signing should not fail" ) ;
86
97
let fake_kes_signer = KesSignerFake :: new ( vec ! [
87
98
Ok ( ( kes_signature, op_cert. clone( ) ) ) ,
88
99
Err ( anyhow:: anyhow!( "Fake error" ) ) ,
89
100
] ) ;
90
101
91
102
let ( kes_signature_1, op_cert_1) = fake_kes_signer
92
- . sign ( message , kes_signing_period)
103
+ . sign ( message1 , kes_signing_period)
93
104
. expect ( "Signing should not fail" ) ;
94
105
assert_eq ! ( kes_signature, kes_signature_1) ;
95
106
assert_eq ! ( op_cert, op_cert_1) ;
96
107
108
+ let message2 = b"Test message 2 for KES signing" ;
97
109
fake_kes_signer
98
- . sign ( message , kes_signing_period)
110
+ . sign ( message2 , kes_signing_period)
99
111
. expect_err ( "Signing should fail" ) ;
112
+
113
+ let signed_messages = fake_kes_signer. get_signed_messages ( ) ;
114
+ assert_eq ! ( vec![ message1. to_vec( ) , message2. to_vec( ) ] , signed_messages) ;
100
115
}
101
116
}
0 commit comments