Skip to content

Commit

Permalink
chore: create helper function to get byte array
Browse files Browse the repository at this point in the history
  • Loading branch information
TomAFrench committed Jul 20, 2023
1 parent 21b58f1 commit a96ef72
Showing 1 changed file with 21 additions and 47 deletions.
68 changes: 21 additions & 47 deletions crates/noirc_evaluator/src/ssa_refactor/ir/instruction.rs
Original file line number Diff line number Diff line change
Expand Up @@ -397,6 +397,16 @@ fn simplify_call(func: ValueId, arguments: &[ValueId], dfg: &mut DataFlowGraph)
let constant_args: Option<Vec<_>> =
arguments.iter().map(|value_id| dfg.get_numeric_constant(*value_id)).collect();

fn to_u8_vec(dfg: &DataFlowGraph, values: im::Vector<Id<Value>>) -> Vec<u8> {
values
.iter()
.map(|id| {
let field = dfg.get_numeric_constant(*id).unwrap();
*field.to_be_bytes().last().unwrap()
})
.collect()
}

match intrinsic {
Intrinsic::ToBits(endian) => {
if let Some(constant_args) = constant_args {
Expand Down Expand Up @@ -526,10 +536,7 @@ fn simplify_call(func: ValueId, arguments: &[ValueId], dfg: &mut DataFlowGraph)
}
BlackBoxFunc::SHA256 => {
if let Some((input, _)) = dfg.get_array_constant(arguments[0]) {
let inputs: Vec<FieldElement> =
input.into_iter().map(|id| dfg.get_numeric_constant(id).unwrap()).collect();
let input_bytes: Vec<u8> =
vecmap(inputs, |field| *field.to_be_bytes().last().unwrap());
let input_bytes: Vec<u8> = to_u8_vec(dfg, input);

let hash = acvm::blackbox_solver::sha256(&input_bytes).unwrap();

Expand All @@ -550,10 +557,7 @@ fn simplify_call(func: ValueId, arguments: &[ValueId], dfg: &mut DataFlowGraph)
}
BlackBoxFunc::Blake2s => {
if let Some((input, _)) = dfg.get_array_constant(arguments[0]) {
let inputs: Vec<FieldElement> =
input.into_iter().map(|id| dfg.get_numeric_constant(id).unwrap()).collect();
let input_bytes: Vec<u8> =
vecmap(inputs, |field| *field.to_be_bytes().last().unwrap());
let input_bytes: Vec<u8> = to_u8_vec(dfg, input);

let hash = acvm::blackbox_solver::blake2s(&input_bytes).unwrap();

Expand All @@ -574,10 +578,7 @@ fn simplify_call(func: ValueId, arguments: &[ValueId], dfg: &mut DataFlowGraph)
}
BlackBoxFunc::HashToField128Security => {
if let Some((input, _)) = dfg.get_array_constant(arguments[0]) {
let inputs: Vec<FieldElement> =
input.into_iter().map(|id| dfg.get_numeric_constant(id).unwrap()).collect();
let input_bytes: Vec<u8> =
vecmap(inputs, |field| *field.to_be_bytes().last().unwrap());
let input_bytes: Vec<u8> = to_u8_vec(dfg, input);

let field =
acvm::blackbox_solver::hash_to_field_128_security(&input_bytes).unwrap();
Expand All @@ -592,10 +593,7 @@ fn simplify_call(func: ValueId, arguments: &[ValueId], dfg: &mut DataFlowGraph)
if let (Some((input, _)), Some(num_bytes)) =
(dfg.get_array_constant(arguments[0]), dfg.get_numeric_constant(arguments[1]))
{
let inputs: Vec<FieldElement> =
input.into_iter().map(|id| dfg.get_numeric_constant(id).unwrap()).collect();
let input_bytes: Vec<u8> =
vecmap(inputs, |field| *field.to_be_bytes().last().unwrap());
let input_bytes: Vec<u8> = to_u8_vec(dfg, input);

let num_bytes = num_bytes.to_u128() as usize;
let truncated_input_bytes = &input_bytes[0..num_bytes];
Expand Down Expand Up @@ -629,40 +627,16 @@ fn simplify_call(func: ValueId, arguments: &[ValueId], dfg: &mut DataFlowGraph)
dfg.get_array_constant(arguments[2]),
dfg.get_array_constant(arguments[3]),
) {
let public_key_x: Vec<u8> = pubkey_x
.into_iter()
.map(|id| {
let field = dfg.get_numeric_constant(id).unwrap();
*field.to_be_bytes().last().unwrap()
})
.collect();
let public_key_y: Vec<u8> = pubkey_y
.into_iter()
.map(|id| {
let field = dfg.get_numeric_constant(id).unwrap();
*field.to_be_bytes().last().unwrap()
})
.collect();
let signature: Vec<u8> = signature
.into_iter()
.map(|id| {
let field = dfg.get_numeric_constant(id).unwrap();
*field.to_be_bytes().last().unwrap()
})
.collect();
let hashed_message: Vec<u8> = hashed_message
.into_iter()
.map(|id| {
let field = dfg.get_numeric_constant(id).unwrap();
*field.to_be_bytes().last().unwrap()
})
.collect();
let public_key_x: [u8; 32] = to_u8_vec(dfg, pubkey_x).try_into().unwrap();

Check warning on line 630 in crates/noirc_evaluator/src/ssa_refactor/ir/instruction.rs

View workflow job for this annotation

GitHub Actions / Spellcheck / Spellcheck

Unknown word (pubkey)
let public_key_y: [u8; 32] = to_u8_vec(dfg, pubkey_y).try_into().unwrap();

Check warning on line 631 in crates/noirc_evaluator/src/ssa_refactor/ir/instruction.rs

View workflow job for this annotation

GitHub Actions / Spellcheck / Spellcheck

Unknown word (pubkey)
let signature: [u8; 64] = to_u8_vec(dfg, signature).try_into().unwrap();
let hashed_message: Vec<u8> = to_u8_vec(dfg, hashed_message);

let valid_signature = acvm::blackbox_solver::ecdsa_secp256k1_verify(
&hashed_message,
&public_key_x.try_into().unwrap(),
&public_key_y.try_into().unwrap(),
&signature.try_into().unwrap(),
&public_key_x,
&public_key_y,
&signature,
)
.unwrap();

Expand Down

0 comments on commit a96ef72

Please sign in to comment.