Skip to content

Commit f52ab38

Browse files
Update SHA-256 examples
1 parent 70023d8 commit f52ab38

File tree

3 files changed

+62
-0
lines changed

3 files changed

+62
-0
lines changed

examples/sha2/Cargo.toml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
[package]
2+
name = "sha2-example"
3+
version = "0.0.0"
4+
edition = "2021"
5+
6+
[workspace]
7+
members = []
8+
9+
[dependencies]
10+
# TODO: update rev after PR is merged
11+
openvm = { git = "https://github.com/openvm-org/openvm.git", features = [
12+
"std",
13+
], rev = "5180cea6342f43ac6523e0057e73e0dc9ecece3a"}
14+
# TODO: update rev after PR is merged
15+
openvm-sha2-guest = { git = "https://github.com/openvm-org/openvm.git", rev = "5180cea6342f43ac6523e0057e73e0dc9ecece3a" }
16+
hex = { version = "0.4.3" }
17+
18+
[features]
19+
default = []

examples/sha2/openvm.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
[app_vm_config.rv32i]
2+
[app_vm_config.rv32m]
3+
[app_vm_config.io]
4+
[app_vm_config.sha256]

examples/sha2/src/main.rs

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
// ANCHOR: imports
2+
use core::hint::black_box;
3+
4+
use hex::FromHex;
5+
use openvm_sha2_guest::{sha256, sha384, sha512};
6+
// ANCHOR_END: imports
7+
8+
// ANCHOR: main
9+
openvm::entry!(main);
10+
11+
pub fn main() {
12+
let test_vectors = [(
13+
"",
14+
"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
15+
"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e",
16+
"38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b",
17+
)];
18+
for (input, expected_output_sha256, expected_output_sha512, expected_output_sha384) in
19+
test_vectors.iter()
20+
{
21+
let input = Vec::from_hex(input).unwrap();
22+
let expected_output_sha256 = Vec::from_hex(expected_output_sha256).unwrap();
23+
let expected_output_sha512 = Vec::from_hex(expected_output_sha512).unwrap();
24+
let expected_output_sha384 = Vec::from_hex(expected_output_sha384).unwrap();
25+
let output = sha256(black_box(&input));
26+
if output != *expected_output_sha256 {
27+
panic!();
28+
}
29+
let output = sha512(black_box(&input));
30+
if output != *expected_output_sha512 {
31+
panic!();
32+
}
33+
let output = sha384(black_box(&input));
34+
if output != *expected_output_sha384 {
35+
panic!();
36+
}
37+
}
38+
}
39+
// ANCHOR_END: main

0 commit comments

Comments
 (0)