Skip to content

Commit 2d2f265

Browse files
fix: do multiple digest writes for e1 for sha512/384
1 parent 49e1eb4 commit 2d2f265

File tree

1 file changed

+22
-12
lines changed
  • extensions/sha2/circuit/src/sha2_chip

1 file changed

+22
-12
lines changed

extensions/sha2/circuit/src/sha2_chip/mod.rs

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -115,20 +115,30 @@ impl<F: PrimeField32, C: ShaChipConfig> StepExecutorE1<F> for Sha2VmStep<C> {
115115
);
116116
}
117117
Rv32Sha2Opcode::SHA512 => {
118-
memory_write::<{ Sha512Config::WRITE_SIZE }>(
119-
state.memory,
120-
RV32_MEMORY_AS,
121-
dst,
122-
output.as_slice().try_into().unwrap(),
123-
);
118+
for i in 0..C::NUM_WRITES {
119+
memory_write::<{ Sha512Config::WRITE_SIZE }>(
120+
state.memory,
121+
RV32_MEMORY_AS,
122+
dst + (i * Sha512Config::WRITE_SIZE) as u32,
123+
output.as_slice()
124+
[i * Sha512Config::WRITE_SIZE..(i + 1) * Sha512Config::WRITE_SIZE]
125+
.try_into()
126+
.unwrap(),
127+
);
128+
}
124129
}
125130
Rv32Sha2Opcode::SHA384 => {
126-
memory_write::<{ Sha384Config::WRITE_SIZE }>(
127-
state.memory,
128-
RV32_MEMORY_AS,
129-
dst,
130-
output.as_slice().try_into().unwrap(),
131-
);
131+
for i in 0..C::NUM_WRITES {
132+
memory_write::<{ Sha384Config::WRITE_SIZE }>(
133+
state.memory,
134+
RV32_MEMORY_AS,
135+
dst + (i * Sha384Config::WRITE_SIZE) as u32,
136+
output.as_slice()
137+
[i * Sha384Config::WRITE_SIZE..(i + 1) * Sha384Config::WRITE_SIZE]
138+
.try_into()
139+
.unwrap(),
140+
);
141+
}
132142
}
133143
}
134144

0 commit comments

Comments
 (0)