Skip to content

Commit 837ada2

Browse files
committed
WIP Rework SST tests
1 parent baa5393 commit 837ada2

File tree

1 file changed

+46
-21
lines changed

1 file changed

+46
-21
lines changed

src/sst/gen_key.rs

Lines changed: 46 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,9 @@ mod tests {
9999
use crate::util::helper::test_helper::gen_random_seed;
100100
use crate::HssParameter;
101101
use crate::Sha256_128;
102+
use crate::Sha256_192;
103+
use crate::Sha256_256;
104+
use signature::Verifier;
102105

103106
#[test]
104107
fn test_prepare_sst_keygen_se_without_lms_tree_id() {
@@ -152,47 +155,69 @@ mod tests {
152155
}
153156

154157
#[test]
155-
fn test_finalize_sst_keygen() {
158+
fn signing_sst_sha256_128() {
159+
signing_sst_core::<Sha256_128>();
160+
}
161+
162+
#[test]
163+
fn signing_sst_sha256_192() {
164+
signing_sst_core::<Sha256_192>();
165+
}
166+
167+
#[test]
168+
fn signing_sst_sha256_256() {
169+
signing_sst_core::<Sha256_256>();
170+
}
171+
172+
fn signing_sst_core<H: HashChain>() {
156173
const L0_TOP_DIV: u32 = 4;
157174

175+
let mut message = [
176+
32u8, 48, 2, 1, 48, 58, 20, 57, 9, 83, 99, 255, 0, 34, 2, 1, 0,
177+
];
178+
158179
let mut lms_tree_identifier = LmsTreeIdentifier::default();
159-
let seed = gen_random_seed::<Sha256_128>();
180+
let seed = gen_random_seed::<H>();
160181
let mut hss_parameters = ArrayVec::new();
161182
hss_parameters.extend_from_slice(&[
162183
HssParameter::construct_default_parameters(),
163184
HssParameter::construct_default_parameters(),
164185
]);
165-
let ssts_parameter = SstsParameter::<Sha256_128>::new(hss_parameters, L0_TOP_DIV as u8, 3);
166-
let mut aux_data = [0u8; 4 + 16 + 2usize.pow(L0_TOP_DIV) * 16];
186+
let ssts_parameter = SstsParameter::<H>::new(hss_parameters, L0_TOP_DIV as u8, 3);
187+
let mut aux_data = [0u8; 4 + MAX_HASH_SIZE + 2usize.pow(L0_TOP_DIV) * MAX_HASH_SIZE];
167188
let aux_ref: &mut &mut [u8] = &mut &mut aux_data[..];
168189
let mut aux_option = Some(aux_ref);
169190

170-
let (signing_key, interm_node) = if let Some(aux) = aux_option.as_deref_mut() {
171-
prepare_sst_keygen::<Sha256_128>(
172-
&ssts_parameter,
173-
&seed,
174-
Some(aux),
175-
&mut lms_tree_identifier,
176-
)
177-
.unwrap()
178-
} else {
179-
// TODO Rm dead-end
180-
prepare_sst_keygen::<Sha256_128>(&ssts_parameter, &seed, None, &mut lms_tree_identifier)
181-
.unwrap()
182-
};
191+
let (mut signing_key, interm_node) = prepare_sst_keygen::<H>(
192+
&ssts_parameter,
193+
&seed,
194+
Some(aux_option.as_mut().unwrap()),
195+
&mut lms_tree_identifier,
196+
)
197+
.unwrap();
198+
183199
let mut interm_nodes =
184200
ArrayVec::<[ArrayVec<[u8; MAX_HASH_SIZE]>; MAX_SSTS_SIGNING_ENTITIES]>::new();
201+
let mut tmp_node = ArrayVec::<[u8; MAX_HASH_SIZE]>::new();
202+
tmp_node.extend_from_slice(&interm_node);
185203
for _ in 0..2usize.pow(L0_TOP_DIV) {
186-
let mut tmp_node = ArrayVec::<[u8; MAX_HASH_SIZE]>::new();
187-
tmp_node.extend_from_slice(&interm_node);
188204
interm_nodes.push(tmp_node);
189205
}
190-
let _verifying_key = finalize_sst_keygen::<Sha256_128>(
206+
207+
let verifying_key = finalize_sst_keygen::<H>(
191208
signing_key.as_slice(),
192209
&interm_nodes,
193-
aux_option,
210+
Some(aux_option.as_mut().unwrap()),
194211
&lms_tree_identifier,
195212
)
196213
.unwrap();
214+
215+
let signature = signing_key
216+
.try_sign_with_aux(&message, aux_option, Some(&lms_tree_identifier))
217+
.unwrap();
218+
219+
assert!(verifying_key.verify(&message, &signature).is_ok());
220+
message[0] = 33;
221+
assert!(verifying_key.verify(&message, &signature).is_err());
197222
}
198223
}

0 commit comments

Comments
 (0)