From c8837b21f6ed166c513ec00543007bc8aaaa8d9a Mon Sep 17 00:00:00 2001 From: Hatter Jiang Date: Sun, 1 Jan 2023 20:54:02 +0800 Subject: [PATCH] feat: add sharmir demo --- README.md | 3 +- __crypto/shamir-demo/Cargo.lock | 95 ++++++++++++++++++++++++++++++++ __crypto/shamir-demo/Cargo.toml | 9 +++ __crypto/shamir-demo/src/main.rs | 16 ++++++ 4 files changed, 122 insertions(+), 1 deletion(-) create mode 100644 __crypto/shamir-demo/Cargo.lock create mode 100644 __crypto/shamir-demo/Cargo.toml create mode 100644 __crypto/shamir-demo/src/main.rs diff --git a/README.md b/README.md index 9e56e3a..92f0464 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,7 @@ Project or files: │   ├── ring │   ├── rsa │   ├── secp256k1 +│   ├── shamir-demo │   ├── simple_contract │   ├── ssh-keys │   └── totp @@ -258,6 +259,6 @@ Project or files: ├── vec.rs └── while.rs -227 directories, 38 files +228 directories, 38 files ``` diff --git a/__crypto/shamir-demo/Cargo.lock b/__crypto/shamir-demo/Cargo.lock new file mode 100644 index 0000000..8ab3952 --- /dev/null +++ b/__crypto/shamir-demo/Cargo.lock @@ -0,0 +1,95 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "libc" +version = "0.2.139" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom", + "libc", + "rand_chacha", + "rand_core", + "rand_hc", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core", +] + +[[package]] +name = "shamir" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3334e0accec0ef99f58b5d46fb41c32395f6531dde1e5f5c366e79e50dfe317" +dependencies = [ + "rand", +] + +[[package]] +name = "shamir-demo" +version = "0.1.0" +dependencies = [ + "shamir", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" diff --git a/__crypto/shamir-demo/Cargo.toml b/__crypto/shamir-demo/Cargo.toml new file mode 100644 index 0000000..841dd6d --- /dev/null +++ b/__crypto/shamir-demo/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "shamir-demo" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +shamir = "2.0.0" diff --git a/__crypto/shamir-demo/src/main.rs b/__crypto/shamir-demo/src/main.rs new file mode 100644 index 0000000..e8c1de8 --- /dev/null +++ b/__crypto/shamir-demo/src/main.rs @@ -0,0 +1,16 @@ +use shamir::SecretData; + +fn main() { + let secret_data = SecretData::with_secret("Hello World!", 3); + + let share1 = secret_data.get_share(1).unwrap(); + let share2 = secret_data.get_share(2).unwrap(); + let share3 = secret_data.get_share(3).unwrap(); + let share4 = secret_data.get_share(4).unwrap(); + + println!("{:?}\n{:?}\n{:?}\n{:?}", share1, share2, share3, share4); + let recovered = SecretData::recover_secret(3, vec![share1, share2, share3]).unwrap(); + + println!("Recovered: {}", recovered); +} +