/ tests / tests / compiler / core / algorithms / hash_raw_keccak_sha3.adl
hash_raw_keccak_sha3.adl
 1  /*
 2  namespace: Compile
 3  expectation: Pass
 4  */
 5  
 6  program test.alpha {
 7      // Test all Keccak and SHA3 raw hash variants
 8      transition main(input: u64) -> (
 9          field, scalar, address, u128,  // Keccak256 raw
10          field, group, i64,              // Keccak384 raw
11          field, scalar, u32,             // Keccak512 raw
12          field, group, address,          // SHA3-256 raw
13          field, scalar, i16              // SHA3-384 & SHA3-512 raw
14      ) {
15          let array_u64: [u64; 2] = [100u64, 200u64];
16  
17          // Keccak256 raw hashes
18          let keccak256_field_raw: field = Keccak256::hash_to_field_raw(input);
19          let keccak256_scalar_raw: scalar = Keccak256::hash_to_scalar_raw(input);
20          let keccak256_addr_raw: address = Keccak256::hash_to_address_raw(array_u64);
21          let keccak256_u128_raw: u128 = Keccak256::hash_to_u128_raw(array_u64);
22  
23          // Keccak384 raw hashes
24          let keccak384_field_raw: field = Keccak384::hash_to_field_raw(input);
25          let keccak384_group_raw: group = Keccak384::hash_to_group_raw(input);
26          let keccak384_i64_raw: i64 = Keccak384::hash_to_i64_raw(array_u64);
27  
28          // Keccak512 raw hashes
29          let keccak512_field_raw: field = Keccak512::hash_to_field_raw(input);
30          let keccak512_scalar_raw: scalar = Keccak512::hash_to_scalar_raw(input);
31          let keccak512_u32_raw: u32 = Keccak512::hash_to_u32_raw(array_u64);
32  
33          // SHA3-256 raw hashes
34          let sha3_256_field_raw: field = SHA3_256::hash_to_field_raw(input);
35          let sha3_256_group_raw: group = SHA3_256::hash_to_group_raw(input);
36          let sha3_256_addr_raw: address = SHA3_256::hash_to_address_raw(array_u64);
37  
38          // SHA3-384 & SHA3-512 raw hashes
39          let sha3_384_field_raw: field = SHA3_384::hash_to_field_raw(input);
40          let sha3_512_scalar_raw: scalar = SHA3_512::hash_to_scalar_raw(input);
41          let sha3_512_i16_raw: i16 = SHA3_512::hash_to_i16_raw(array_u64);
42  
43          return (
44              keccak256_field_raw, keccak256_scalar_raw, keccak256_addr_raw, keccak256_u128_raw,
45              keccak384_field_raw, keccak384_group_raw, keccak384_i64_raw,
46              keccak512_field_raw, keccak512_scalar_raw, keccak512_u32_raw,
47              sha3_256_field_raw, sha3_256_group_raw, sha3_256_addr_raw,
48              sha3_384_field_raw, sha3_512_scalar_raw, sha3_512_i16_raw
49          );
50      }
51  }