@@ -64,7 +64,7 @@ pub fn sha512_compression(_input: INT_BLOCK, _state: STATE) -> STATE {
6464/// Input is the message to be hashed, produces a 64-byte output
6565/// The `IS_SHA512` generic is used to toggle whether a SHA384 or SHA512 hash is desired
6666/// (the only diff between SHA384/SHA512 are different initial starting constants, and the SHA384 hash output is truncated)
67- fn digest <let N : u32 , let IS_SHA512 : u1 >(msg : [u8 ; N ]) -> [u8 ; 64 ] {
67+ fn digest <let N : u32 , let IS_SHA512 : u8 >(msg : [u8 ; N ]) -> [u8 ; 64 ] {
6868 // noir-fmt:ignore
6969 let mut h : [u64 ; 8 ] = if IS_SHA512 == 1 {
7070 SHA512_INITIAL_HASH_VALUES
@@ -121,7 +121,8 @@ fn digest<let N: u32, let IS_SHA512: u1>(msg: [u8; N]) -> [u8; 64] {
121121/// The `IS_SHA512` generic is used to toggle whether a SHA384 or SHA512 hash is desired
122122///
123123/// (the only diff between SHA384/SHA512 are different initial starting constants, and the SHA384 hash output is truncated)
124- fn digest_var <let N : u32 , let IS_SHA512 : u1 >(msg : BoundedVec <u8 , N >) -> [u8 ; 64 ] {
124+ fn digest_var <let N : u32 , let IS_SHA512 : u8 >(msg : BoundedVec <u8 , N >) -> [u8 ; 64 ] {
125+ std:: static_assert (IS_SHA512 <= 1 , "IS_SHA512 must be 0 or 1" );
125126 // noir-fmt:ignore
126127 let mut h : [u64 ; 8 ] = if IS_SHA512 == 1 {
127128 SHA512_INITIAL_HASH_VALUES
@@ -190,11 +191,11 @@ fn digest_var<let N: u32, let IS_SHA512: u1>(msg: BoundedVec<u8, N>) -> [u8; 64]
190191/// methods here are interface-compatible with sha256 blackbox fns
191192pub mod sha512 {
192193 pub fn digest <let N : u32 >(msg : [u8 ; N ]) -> [u8 ; 64 ] {
193- crate ::digest ::<_ , 1 _u 1 >(msg )
194+ crate ::digest ::<_ , 1 _u 8 >(msg )
194195 }
195196
196197 pub fn sha512_var <let N : u32 >(msg : BoundedVec <u8 , N >) -> [u8 ; 64 ] {
197- crate ::digest_var ::<_ , 1 _u 1 >(msg )
198+ crate ::digest_var ::<_ , 1 _u 8 >(msg )
198199 }
199200
200201 // Fuzz testing the sha512 implementation
@@ -288,7 +289,7 @@ pub mod sha512 {
288289
289290pub mod sha384 {
290291 pub fn digest <let N : u32 >(msg : [u8 ; N ]) -> [u8 ; 48 ] {
291- let full_result = crate ::digest ::<_ , 0 _u 1 >(msg );
292+ let full_result = crate ::digest ::<_ , 0 _u 8 >(msg );
292293 let mut r : [u8 ; 48 ] = [0 ; 48 ];
293294 for i in 0 ..48 {
294295 r [i ] = full_result [i ];
@@ -297,7 +298,7 @@ pub mod sha384 {
297298 }
298299
299300 pub fn sha384_var <let N : u32 >(msg : BoundedVec <u8 , N >) -> [u8 ; 48 ] {
300- let full_result = crate ::digest_var ::<_ , 0 _u 1 >(msg );
301+ let full_result = crate ::digest_var ::<_ , 0 _u 8 >(msg );
301302 let mut r : [u8 ; 48 ] = [0 ; 48 ];
302303 for i in 0 ..48 {
303304 r [i ] = full_result [i ];
0 commit comments