Skip to content

Commit 5047597

Browse files
committed
refactor(dmq): update message builder signature
1 parent fdcb5d9 commit 5047597

File tree

1 file changed

+34
-4
lines changed

1 file changed

+34
-4
lines changed

internal/mithril-dmq/src/model/builder.rs

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,19 +74,33 @@ impl DmqMessageBuilder {
7474
.await
7575
.with_context(|| "Failed to get KES period while building DMQ message")?
7676
.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+
7787
let (kes_signature, operational_certificate) = self
7888
.kes_signer
79-
.sign(message_bytes, kes_period)
89+
.sign(&dmq_message_payload.bytes_to_sign()?, kes_period)
8090
.with_context(|| "Failed to KES sign message while building DMQ message")?;
8191

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+
8296
let dmq_message = DmqMsg {
8397
msg_payload: {
8498
let mut dmq_message_payload = DmqMsgPayload {
8599
msg_id: vec![],
86100
msg_body: message_bytes.to_vec(),
87101
kes_period: kes_period as u64,
88102
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
90104
expires_at,
91105
};
92106
dmq_message_payload.msg_id = Self::compute_msg_id(&dmq_message_payload);
@@ -143,7 +157,7 @@ mod tests {
143157
},
144158
..TimePoint::dummy()
145159
})));
146-
let builder = DmqMessageBuilder::new(kes_signer, chain_observer)
160+
let builder = DmqMessageBuilder::new(kes_signer.clone(), chain_observer)
147161
.set_ttl(1000)
148162
.set_timestamp_provider(Arc::new({
149163
let mut mock_timestamp_provider = MockUnixTimestampProvider::new();
@@ -163,6 +177,7 @@ mod tests {
163177
msg_payload,
164178
kes_signature: _,
165179
} = &*dmq_message;
180+
166181
assert_eq!(
167182
DmqMsg {
168183
msg_payload: DmqMsgPayload {
@@ -175,7 +190,22 @@ mod tests {
175190
},
176191
kes_signature: kes_signature.to_bytes_vec().unwrap(),
177192
},
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
179209
);
180210
}
181211
}

0 commit comments

Comments
 (0)