Compare commits

...

2 Commits

Author SHA1 Message Date
ed54a7e6ef feat: add orion-demo 2025-06-28 23:22:26 +08:00
7c0865fafd feat: add orion-demo 2025-06-28 23:22:11 +08:00
4 changed files with 172 additions and 11 deletions

View File

@@ -5,6 +5,7 @@ Simple Rust Tests
Project or files:
```
.
├── README_2.md
├── __alloc
│   └── zeroizing-alloc-demo
├── __args
@@ -17,8 +18,8 @@ Project or files:
│   └── zstd-demo
├── __concurrent
│   ├── arc-swap
│   ├── async_study
│   ├── async-fn-resumed-after-completion
│   ├── async_study
│   ├── crossbeam_n_parking_lot
│   ├── glommio
│   ├── green-threads
@@ -43,6 +44,7 @@ Project or files:
│   ├── jose-test
│   ├── jsonwebtoken
│   ├── liboqs-rust-demo
│   ├── orion-demo
│   ├── passkey-rs-demo
│   ├── password-hash
│   ├── pkcs8
@@ -75,7 +77,7 @@ Project or files:
│   └── sqlx
├── __diff
│   ├── diffy
│   ── prettydiff
│   ── prettydiff
├── __enclave
│   └── virt_enclave
├── __err
@@ -87,9 +89,9 @@ Project or files:
├── __ffi
│   ├── abi_stable_crates
│   ├── c
│   ├── c2
│   ├── c_export
│   ├── c_layout
│   ├── c2
│   ├── calltoc
│   ├── cpp
│   ├── dotalib
@@ -100,7 +102,7 @@ Project or files:
├── __fs
│   ├── crypt4ghfs-rust
│   ├── fuse
│   ── fuser
│   ── fuser
├── __gui
│   ├── druid
│   ├── gtk
@@ -174,8 +176,8 @@ Project or files:
│   ├── ngrok-demo
│   ├── pcap
│   ├── quinn
│   ├── rust_tcp
│   ├── rust-rawsock-demo
│   ├── rust_tcp
│   ├── s2n_quic
│   ├── socket2
│   ├── tcp
@@ -220,10 +222,10 @@ Project or files:
│   ├── sshrs
│   └── xshell
├── __shuttle
│   ── hatter-test
│   ── hatter-test
├── __std
│   ├── async_await
│   ├── async-fn
│   ├── async_await
│   ├── into
│   ├── iter
│   ├── misc
@@ -264,8 +266,8 @@ Project or files:
│   ├── wasmtime-serde-demo
│   └── wit-bindgen-sample
├── __web
│   ├── actix_rustls
│   ├── actix-web
│   ├── actix_rustls
│   ├── alibabacloundfn
│   ├── hyper_rustls
│   ├── hyperrs
@@ -279,9 +281,8 @@ Project or files:
│   ├── tide
│   └── warp
├── build_readme.rs -> scripts/build_readme_rs/src/main.rs
├── README_2.md
├── scripts
│   ── build_readme_rs
│   ── build_readme_rs
└── single_file_tests
├── 99.rs
├── chain.rs
@@ -305,6 +306,6 @@ Project or files:
├── vec.rs
└── while.rs
277 directories, 38 files
278 directories, 38 files
```

108
__crypto/orion-demo/Cargo.lock generated Normal file
View File

@@ -0,0 +1,108 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 4
[[package]]
name = "bitflags"
version = "2.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967"
[[package]]
name = "cfg-if"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268"
[[package]]
name = "ct-codecs"
version = "1.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b10589d1a5e400d61f9f38f12f884cfd080ff345de8f17efda36fe0e4a02aa8"
[[package]]
name = "fiat-crypto"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "64cd1e32ddd350061ae6edb1b082d7c54915b5c672c389143b9a63403a109f24"
[[package]]
name = "getrandom"
version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4"
dependencies = [
"cfg-if",
"libc",
"r-efi",
"wasi",
]
[[package]]
name = "hex"
version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
[[package]]
name = "libc"
version = "0.2.174"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776"
[[package]]
name = "orion"
version = "0.17.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "21b3da83b2b4cdc74ab6a556b2e7b473da046d5aa4008c0a7a3ae96b1b4aabb4"
dependencies = [
"ct-codecs",
"fiat-crypto",
"getrandom",
"subtle",
"zeroize",
]
[[package]]
name = "orion-demo"
version = "0.1.0"
dependencies = [
"hex",
"orion",
]
[[package]]
name = "r-efi"
version = "5.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
[[package]]
name = "subtle"
version = "2.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
[[package]]
name = "wasi"
version = "0.14.2+wasi-0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3"
dependencies = [
"wit-bindgen-rt",
]
[[package]]
name = "wit-bindgen-rt"
version = "0.39.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1"
dependencies = [
"bitflags",
]
[[package]]
name = "zeroize"
version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"

View File

@@ -0,0 +1,8 @@
[package]
name = "orion-demo"
version = "0.1.0"
edition = "2024"
[dependencies]
hex = "0.4.3"
orion = "0.17.11"

View File

@@ -0,0 +1,44 @@
use orion::hazardous::ecc::x25519::key_agreement;
use orion::kex::{PrivateKey, PublicKey};
use orion::pwhash::{Password, hash_password, hash_password_verify};
fn main() {
let password = Password::from_slice(b"hello_world").unwrap();
let password_hash = hash_password(&password, 100, 1024).unwrap();
println!("{}", password_hash.unprotected_as_encoded());
println!("{:?}", hash_password_verify(&password_hash, &password));
println!("{}", "-".repeat(88));
let alice_sk = PrivateKey::generate();
let alice_pk = PublicKey::try_from(&alice_sk).unwrap();
let bob_sk = PrivateKey::generate();
let bob_pk = PublicKey::try_from(&bob_sk).unwrap();
let alice_shared = key_agreement(&alice_sk, &bob_pk).unwrap();
let bob_shared = key_agreement(&bob_sk, &alice_pk).unwrap();
println!("{}", hex::encode(alice_shared.unprotected_as_bytes()));
println!("{}", hex::encode(bob_shared.unprotected_as_bytes()));
println!("{}", "-".repeat(88));
let user_password = Password::from_slice(b"hello_world").unwrap();
let salt = orion::kdf::Salt::default();
let derived_key = orion::kdf::derive_key(&user_password, &salt, 3, 1 << 16, 32).unwrap();
println!(
"{} {}",
hex::encode(salt.as_ref()),
hex::encode(derived_key.unprotected_as_bytes())
);
println!("{}", "-".repeat(88));
let aead_key = orion::aead::SecretKey::generate(32).unwrap();
let ciphertext = orion::aead::seal(&aead_key, b"hello world").unwrap();
let plaintext = orion::aead::open(&aead_key, &ciphertext).unwrap();
println!("{}", hex::encode(&ciphertext));
println!("{} {}", hex::encode(&plaintext), String::from_utf8_lossy(&plaintext));
}