Skip to content

Commit 9a79ba8

Browse files
Add signature get_air_private_input test and msg if somehow reaching unreachable clause
1 parent 6cea57f commit 9a79ba8

File tree

1 file changed

+68
-1
lines changed

1 file changed

+68
-1
lines changed

vm/src/vm/runners/builtin_runner/signature.rs

Lines changed: 68 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,11 @@ impl SignatureBuiltinRunner {
240240
}
241241
private_inputs.sort_by_key(|input| match input {
242242
PrivateInput::Signature(sig) => sig.index,
243-
_ => unreachable!(),
243+
_ => unreachable!(
244+
"Unexpected variant in private_inputs: {:?}.
245+
This private input of the signature builtin is always a Signature variant.",
246+
input
247+
),
244248
});
245249
private_inputs
246250
}
@@ -558,4 +562,67 @@ mod tests {
558562
assert_eq!(signature_a.s, signature_b.s);
559563
}
560564
}
565+
#[test]
566+
fn get_air_private_input() {
567+
let mut builtin = SignatureBuiltinRunner::new(Some(512), true);
568+
569+
builtin.base = 0;
570+
571+
let signature1_r = Felt252::from(1234);
572+
let signature1_s = Felt252::from(5678);
573+
let signature2_r = Felt252::from(8765);
574+
let signature2_s = Felt252::from(4321);
575+
576+
let sig1_addr = Relocatable::from((builtin.base as isize, 0));
577+
let sig2_addr = Relocatable::from((builtin.base as isize, CELLS_PER_SIGNATURE as usize));
578+
579+
builtin
580+
.add_signature(sig1_addr, &(signature1_r, signature1_s))
581+
.unwrap();
582+
builtin
583+
.add_signature(sig2_addr, &(signature2_r, signature2_s))
584+
.unwrap();
585+
586+
let pubkey1 = Felt252::from(1111);
587+
let msg1 = Felt252::from(2222);
588+
let pubkey2 = Felt252::from(3333);
589+
let msg2 = Felt252::from(4444);
590+
591+
let segments = segments![
592+
((0, 0), 1111),
593+
((0, 1), 2222),
594+
((0, 2), 3333),
595+
((0, 3), 4444)
596+
];
597+
let w1 =
598+
Felt252::from(&div_mod(&BigInt::one(), &signature1_s.to_bigint(), &*EC_ORDER).unwrap());
599+
600+
let w2 =
601+
Felt252::from(&div_mod(&BigInt::one(), &signature2_s.to_bigint(), &*EC_ORDER).unwrap());
602+
603+
let expected_private_inputs = vec![
604+
PrivateInput::Signature(PrivateInputSignature {
605+
index: 0,
606+
pubkey: pubkey1,
607+
msg: msg1,
608+
signature_input: SignatureInput {
609+
r: signature1_r,
610+
w: w1,
611+
},
612+
}),
613+
PrivateInput::Signature(PrivateInputSignature {
614+
index: 1,
615+
pubkey: pubkey2,
616+
msg: msg2,
617+
signature_input: SignatureInput {
618+
r: signature2_r,
619+
w: w2,
620+
},
621+
}),
622+
];
623+
624+
let private_inputs = builtin.air_private_input(&segments.memory);
625+
626+
assert_eq!(private_inputs, expected_private_inputs);
627+
}
561628
}

0 commit comments

Comments
 (0)