@@ -74,19 +74,33 @@ impl DmqMessageBuilder {
74
74
. await
75
75
. with_context ( || "Failed to get KES period while building DMQ message" ) ?
76
76
. unwrap_or_default ( ) ;
77
+ let mut dmq_message_payload = DmqMsgPayload {
78
+ msg_id : vec ! [ ] ,
79
+ msg_body : message_bytes. to_vec ( ) ,
80
+ kes_period : kes_period as u64 ,
81
+ operational_certificate : vec ! [ ] ,
82
+ cold_verification_key : vec ! [ ] ,
83
+ expires_at,
84
+ } ;
85
+ dmq_message_payload. msg_id = Self :: compute_msg_id ( & dmq_message_payload) ;
86
+
77
87
let ( kes_signature, operational_certificate) = self
78
88
. kes_signer
79
- . sign ( message_bytes , kes_period)
89
+ . sign ( & dmq_message_payload . bytes_to_sign ( ) ? , kes_period)
80
90
. with_context ( || "Failed to KES sign message while building DMQ message" ) ?;
81
91
92
+ // TODO: remove the cold verification key in the op cert
93
+ dmq_message_payload. operational_certificate = operational_certificate. to_bytes_vec ( ) ?;
94
+ dmq_message_payload. cold_verification_key = vec ! [ ] ;
95
+
82
96
let dmq_message = DmqMsg {
83
97
msg_payload : {
84
98
let mut dmq_message_payload = DmqMsgPayload {
85
99
msg_id : vec ! [ ] ,
86
100
msg_body : message_bytes. to_vec ( ) ,
87
101
kes_period : kes_period as u64 ,
88
102
operational_certificate : operational_certificate. to_bytes_vec ( ) ?, // TODO: remove the cold verification key in the op cert
89
- cold_verification_key : vec ! [ ] ,
103
+ cold_verification_key : vec ! [ ] , // TODO: fix
90
104
expires_at,
91
105
} ;
92
106
dmq_message_payload. msg_id = Self :: compute_msg_id ( & dmq_message_payload) ;
@@ -143,7 +157,7 @@ mod tests {
143
157
} ,
144
158
..TimePoint :: dummy ( )
145
159
} ) ) ) ;
146
- let builder = DmqMessageBuilder :: new ( kes_signer, chain_observer)
160
+ let builder = DmqMessageBuilder :: new ( kes_signer. clone ( ) , chain_observer)
147
161
. set_ttl ( 1000 )
148
162
. set_timestamp_provider ( Arc :: new ( {
149
163
let mut mock_timestamp_provider = MockUnixTimestampProvider :: new ( ) ;
@@ -163,6 +177,7 @@ mod tests {
163
177
msg_payload,
164
178
kes_signature : _,
165
179
} = & * dmq_message;
180
+
166
181
assert_eq ! (
167
182
DmqMsg {
168
183
msg_payload: DmqMsgPayload {
@@ -175,7 +190,22 @@ mod tests {
175
190
} ,
176
191
kes_signature: kes_signature. to_bytes_vec( ) . unwrap( ) ,
177
192
} ,
178
- dmq_message. into( )
193
+ dmq_message. clone( ) . into( )
194
+ ) ;
195
+
196
+ let signed_messages = kes_signer. get_signed_messages ( ) ;
197
+ let mut expected_msg_payload = DmqMsgPayload {
198
+ msg_id : vec ! [ ] ,
199
+ msg_body : b"test" . to_vec ( ) ,
200
+ kes_period : 0 ,
201
+ operational_certificate : vec ! [ ] , // TODO: fix
202
+ cold_verification_key : vec ! [ ] , // TODO: fix
203
+ expires_at : 1234 ,
204
+ } ;
205
+ expected_msg_payload. msg_id = DmqMessageBuilder :: compute_msg_id ( & expected_msg_payload) ;
206
+ assert_eq ! (
207
+ vec![ expected_msg_payload. bytes_to_sign( ) . unwrap( ) ] ,
208
+ signed_messages
179
209
) ;
180
210
}
181
211
}
0 commit comments