summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rw-r--r--examples/rust/Cargo.toml5
-rwxr-xr-xexamples/rust/build.sh4
-rw-r--r--examples/rust/src/argon2id.rs14
-rw-r--r--examples/rust/src/fibonacci.rs8
-rw-r--r--examples/rust/src/print.rs7
5 files changed, 22 insertions, 16 deletions
diff --git a/examples/rust/Cargo.toml b/examples/rust/Cargo.toml
index 2d06488..f3f475e 100644
--- a/examples/rust/Cargo.toml
+++ b/examples/rust/Cargo.toml
@@ -11,6 +11,7 @@ edition="2021"
[dependencies]
tinywasm={path="../../crates/tinywasm", features=["parser", "std", "unsafe"]}
+argon2={version="0.5"}
[[bin]]
name="hello"
@@ -28,6 +29,10 @@ path="src/tinywasm.rs"
name="fibonacci"
path="src/fibonacci.rs"
+[[bin]]
+name="argon2id"
+path="src/argon2id.rs"
+
[profile.wasm]
opt-level=3
lto="thin"
diff --git a/examples/rust/build.sh b/examples/rust/build.sh
index cabf00e..e6d3b0d 100755
--- a/examples/rust/build.sh
+++ b/examples/rust/build.sh
@@ -1,7 +1,7 @@
#!/usr/bin/env bash
cd "$(dirname "$0")"
-bins=("hello" "fibonacci" "print" "tinywasm")
+bins=("hello" "fibonacci" "print" "tinywasm" "argon2id")
exclude_wat=("tinywasm")
out_dir="./target/wasm32-unknown-unknown/wasm"
dest_dir="out"
@@ -15,7 +15,7 @@ for bin in "${bins[@]}"; do
RUSTFLAGS="-C target-feature=$features -C panic=abort" cargo build --target wasm32-unknown-unknown --package rust-wasm-examples --profile=wasm --bin "$bin"
cp "$out_dir/$bin.wasm" "$dest_dir/"
- wasm-opt "$dest_dir/$bin.wasm" -o "$dest_dir/$bin.wasm" -O --intrinsic-lowering -O
+ wasm-opt "$dest_dir/$bin.wasm" -o "$dest_dir/$bin.wasm" -Oz --enable-bulk-memory --enable-multivalue --enable-reference-types --enable-mutable-globals
if [[ ! " ${exclude_wat[@]} " =~ " $bin " ]]; then
wasm2wat "$dest_dir/$bin.wasm" -o "$dest_dir/$bin.wat"
diff --git a/examples/rust/src/argon2id.rs b/examples/rust/src/argon2id.rs
new file mode 100644
index 0000000..01ea7ca
--- /dev/null
+++ b/examples/rust/src/argon2id.rs
@@ -0,0 +1,14 @@
+#![no_main]
+
+#[no_mangle]
+pub extern "C" fn argon2id(m_cost: i32, t_cost: i32, p_cost: i32) -> i32 {
+ let password = b"password";
+ let salt = b"some random salt";
+
+ let params = argon2::Params::new(m_cost as u32, t_cost as u32, p_cost as u32, None).unwrap();
+ let argon = argon2::Argon2::new(argon2::Algorithm::Argon2id, argon2::Version::V0x13, params);
+
+ let mut hash = [0u8; 32];
+ argon.hash_password_into(password, salt, &mut hash).unwrap();
+ hash[0] as i32
+}
diff --git a/examples/rust/src/fibonacci.rs b/examples/rust/src/fibonacci.rs
index 7924aef..8de496d 100644
--- a/examples/rust/src/fibonacci.rs
+++ b/examples/rust/src/fibonacci.rs
@@ -1,11 +1,5 @@
-#![no_std]
#![no_main]
-
-#[cfg(not(test))]
-#[panic_handler]
-fn panic(_info: &core::panic::PanicInfo) -> ! {
- core::arch::wasm32::unreachable()
-}
+#![allow(non_snake_case)]
#[no_mangle]
pub extern "C" fn fibonacci(n: i32) -> i32 {
diff --git a/examples/rust/src/print.rs b/examples/rust/src/print.rs
index 34f3c7f..d04daa3 100644
--- a/examples/rust/src/print.rs
+++ b/examples/rust/src/print.rs
@@ -1,12 +1,5 @@
-#![no_std]
#![no_main]
-#[cfg(not(test))]
-#[panic_handler]
-fn panic(_info: &core::panic::PanicInfo) -> ! {
- core::arch::wasm32::unreachable()
-}
-
#[link(wasm_import_module = "env")]
extern "C" {
fn printi32(x: i32);