diff --git a/.gitignore b/.gitignore index 19f34be..25e7cd5 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ */target/** +/target +/target/** diff --git a/Cargo.lock b/Cargo.lock index 6f879da..c2f19ca 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -37,6 +37,15 @@ dependencies = [ "subtle", ] +[[package]] +name = "atomic-polyfill" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4" +dependencies = [ + "critical-section", +] + [[package]] name = "autocfg" version = "1.4.0" @@ -94,13 +103,23 @@ dependencies = [ "common", "ed25519-dalek", "hkdf", + "postcard", "rand 0.9.1", "rsa", + "serde", + "serde-big-array", "sha2", + "socket2", "x25519-dalek", "zeroize", ] +[[package]] +name = "cobs" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15" + [[package]] name = "common" version = "0.1.0" @@ -108,9 +127,13 @@ dependencies = [ "aes-gcm", "ed25519-dalek", "hkdf", + "postcard", "rand 0.9.1", "rsa", + "serde", + "serde-big-array", "sha2", + "socket2", "x25519-dalek", "zeroize", ] @@ -137,13 +160,23 @@ dependencies = [ "aes-gcm", "ed25519-dalek", "hkdf", + "postcard", "rand 0.9.1", "rsa", + "serde", + "serde-big-array", "sha2", + "socket2", "x25519-dalek", "zeroize", ] +[[package]] +name = "critical-section" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" + [[package]] name = "crypto-common" version = "0.1.6" @@ -289,6 +322,29 @@ dependencies = [ "polyval", ] +[[package]] +name = "hash32" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" +dependencies = [ + "byteorder", +] + +[[package]] +name = "heapless" +version = "0.7.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdc6457c0eb62c71aac4bc17216026d8410337c4126773b9c5daba343f17964f" +dependencies = [ + "atomic-polyfill", + "hash32", + "rustc_version", + "serde", + "spin", + "stable_deref_trait", +] + [[package]] name = "hkdf" version = "0.12.4" @@ -337,6 +393,16 @@ version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + [[package]] name = "num-bigint-dig" version = "0.8.4" @@ -432,6 +498,17 @@ dependencies = [ "universal-hash", ] +[[package]] +name = "postcard" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "170a2601f67cc9dba8edd8c4870b15f71a6a2dc196daec8c83f72b59dff628a8" +dependencies = [ + "cobs", + "heapless", + "serde", +] + [[package]] name = "ppv-lite86" version = "0.2.21" @@ -552,6 +629,12 @@ dependencies = [ "semver", ] +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + [[package]] name = "semver" version = "1.0.26" @@ -567,6 +650,15 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde-big-array" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11fc7cc2c76d73e0f27ee52abbd64eec84d46f370c88371120433196934e4b7f" +dependencies = [ + "serde", +] + [[package]] name = "serde_derive" version = "1.0.219" @@ -586,9 +678,13 @@ dependencies = [ "common", "ed25519-dalek", "hkdf", + "postcard", "rand 0.9.1", "rsa", + "serde", + "serde-big-array", "sha2", + "socket2", "x25519-dalek", "zeroize", ] @@ -620,11 +716,24 @@ version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" +[[package]] +name = "socket2" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef" +dependencies = [ + "libc", + "windows-sys", +] + [[package]] name = "spin" version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", +] [[package]] name = "spki" @@ -636,6 +745,12 @@ dependencies = [ "der", ] +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + [[package]] name = "subtle" version = "2.6.1" @@ -696,6 +811,79 @@ dependencies = [ "wit-bindgen-rt", ] +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + [[package]] name = "wit-bindgen-rt" version = "0.39.0" diff --git a/client/Cargo.toml b/client/Cargo.toml index 03eec15..74144a6 100644 --- a/client/Cargo.toml +++ b/client/Cargo.toml @@ -14,3 +14,7 @@ rsa = "0.9.8" x25519-dalek = "2.0.1" ed25519-dalek = {version="2.1.1", features=["rand_core", "serde", "pkcs8", "alloc" , "pem", "std"]} rand = "0.9.1" +socket2 = "0.5.9" +serde = { version = "1.0", features = ["derive"] } +serde-big-array = "0.5" +postcard = "1.0.0" diff --git a/common/Cargo.toml b/common/Cargo.toml index 2365cd1..b6c1942 100644 --- a/common/Cargo.toml +++ b/common/Cargo.toml @@ -12,3 +12,7 @@ rsa = "0.9.8" x25519-dalek = "2.0.1" ed25519-dalek = {version="2.1.1", features=["rand_core", "serde", "pkcs8", "alloc", "pem", "std"]} rand = "0.9.1" +socket2 = "0.5.9" +serde = { version = "1.0", features = ["derive"] } +serde-big-array = "0.5" +postcard = "1.0.0" diff --git a/common/src/lib.rs b/common/src/lib.rs index 5bdca67..c48597c 100644 --- a/common/src/lib.rs +++ b/common/src/lib.rs @@ -1,14 +1,20 @@ -pub fn add(left: u64, right: u64) -> u64 { - left + right +// always use the following derive flags: #[derive(Deserialize, Serialize, Type, PartialEq, Debug)] + +use serde::{Deserialize, Serialize}; +use serde_big_array::BigArray; +const CHALLENGE_DIFF: usize = 40; +const SHA_LENGTH: usize = 512; +const BITS_IN_BYTE: usize = 8; +#[derive(Deserialize, Serialize, PartialEq, Debug)] +pub struct PowChallengeQuery{ + #[serde(with = "BigArray")] + hash: [u8;SHA_LENGTH/BITS_IN_BYTE], } +#[derive(Deserialize, Serialize, PartialEq, Debug)] +pub struct PowChallengeResponse{ + #[serde(with = "BigArray")] + hash: [u8; SHA_LENGTH/BITS_IN_BYTE], + #[serde(with = "BigArray")] + secret: [u8; CHALLENGE_DIFF/BITS_IN_BYTE], -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn it_works() { - let result = add(2, 2); - assert_eq!(result, 4); - } } diff --git a/cred-helper/Cargo.toml b/cred-helper/Cargo.toml index 5ad5489..2327438 100644 --- a/cred-helper/Cargo.toml +++ b/cred-helper/Cargo.toml @@ -12,4 +12,7 @@ rsa = "0.9.8" x25519-dalek = "2.0.1" ed25519-dalek = {version="2.1.1", features=["rand_core", "serde", "pkcs8", "alloc", "pem", "std"]} rand = "0.9.1" - +socket2 = "0.5.9" +serde = { version = "1.0", features = ["derive"] } +serde-big-array = "0.5" +postcard = "1.0.0" diff --git a/server/Cargo.toml b/server/Cargo.toml index c5cac56..b43014a 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -14,3 +14,7 @@ rsa = "0.9.8" x25519-dalek = "2.0.1" ed25519-dalek = {version="2.1.1", features=["rand_core", "serde", "pkcs8", "alloc" , "pem", "std"]} rand = "0.9.1" +socket2 = "0.5.9" +serde = { version = "1.0", features = ["derive"] } +serde-big-array = "0.5" +postcard = "1.0.0"