From 7816518977adc97a567d7c60d2edccebcbdfd9a5 Mon Sep 17 00:00:00 2001 From: hdbg Date: Mon, 9 Feb 2026 15:33:22 +0100 Subject: [PATCH] feat(auth): add protobuf definitions for AuthService --- protobufs/auth.proto | 32 +++++ protobufs/evm.proto | 2 + server/Cargo.lock | 170 ++++++++++++++++++++++++- server/crates/arbiter-proto/Cargo.toml | 5 +- server/crates/arbiter-proto/build.rs | 7 +- server/migrations/.keep | 0 6 files changed, 207 insertions(+), 9 deletions(-) create mode 100644 protobufs/auth.proto create mode 100644 protobufs/evm.proto delete mode 100644 server/migrations/.keep diff --git a/protobufs/auth.proto b/protobufs/auth.proto new file mode 100644 index 0000000..0f38ad6 --- /dev/null +++ b/protobufs/auth.proto @@ -0,0 +1,32 @@ +syntax = "proto3"; + +package arbiter.auth; + +import "google/protobuf/timestamp.proto"; + +message AuthChallengeRequest { + bytes pubkey = 1; +} + +message AuthChallenge { + bytes pubkey = 1; + bytes nonce = 2; + google.protobuf.Timestamp minted = 3; +} + +message AuthChallengeSolution { + AuthChallenge challenge = 1; + bytes signature = 2; +} + +message AuthResponse { + string token = 1; + string refresh_token = 2; + google.protobuf.Timestamp expires_at = 3; + google.protobuf.Timestamp refresh_expires_at = 4; +} + +service AuthService { + rpc GetChallenge(AuthChallengeRequest) returns (AuthChallenge); + rpc SubmitSolution(AuthChallengeSolution) returns (AuthResponse); +} diff --git a/protobufs/evm.proto b/protobufs/evm.proto new file mode 100644 index 0000000..6dd52d0 --- /dev/null +++ b/protobufs/evm.proto @@ -0,0 +1,2 @@ +syntax = "proto3"; +package arbiter.evm; diff --git a/server/Cargo.lock b/server/Cargo.lock index f05dcd0..f306ae6 100644 --- a/server/Cargo.lock +++ b/server/Cargo.lock @@ -38,7 +38,10 @@ version = "0.1.0" name = "arbiter-proto" version = "0.1.0" dependencies = [ + "bytes", "prost", + "prost-derive", + "prost-types", "tonic", "tonic-prost-build", ] @@ -423,14 +426,15 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.3.4" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +checksum = "139ef39800118c7683f2fd3c98c1b23c09ae076556b435f8e9064ae108aaeeec" dependencies = [ "cfg-if", "libc", "r-efi", "wasip2", + "wasip3", ] [[package]] @@ -607,6 +611,12 @@ dependencies = [ "cc", ] +[[package]] +name = "id-arena" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" + [[package]] name = "ident_case" version = "1.0.1" @@ -621,6 +631,8 @@ checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" dependencies = [ "equivalent", "hashbrown 0.16.1", + "serde", + "serde_core", ] [[package]] @@ -655,10 +667,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] -name = "libc" -version = "0.2.180" +name = "leb128fmt" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" + +[[package]] +name = "libc" +version = "0.2.181" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "459427e2af2b9c839b132acb702a1c654d95e10f8c326bfc2ad11310e458b1c5" [[package]] name = "libsqlite3-sys" @@ -931,6 +949,7 @@ version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8991c4cbdb8bc5b11f0b074ffe286c30e523de90fee5ba8132f1399f23cb3dd7" dependencies = [ + "chrono", "prost", ] @@ -1051,6 +1070,12 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +[[package]] +name = "semver" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" + [[package]] name = "serde" version = "1.0.228" @@ -1178,9 +1203,9 @@ checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" [[package]] name = "tempfile" -version = "3.24.0" +version = "3.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "655da9c7eb6305c55742045d5a8d2037996d61d8de95806335c7c86ce0f82e9c" +checksum = "0136791f7c95b1f6dd99f9cc786b91bb81c3800b639b3478e561ddb7be95e5f1" dependencies = [ "fastrand", "getrandom", @@ -1460,6 +1485,12 @@ version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "537dd038a89878be9b64dd4bd1b260315c1bb94f4d784956b81e27a088d9a09e" +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + [[package]] name = "uuid" version = "1.20.0" @@ -1500,6 +1531,15 @@ dependencies = [ "wit-bindgen", ] +[[package]] +name = "wasip3" +version = "0.4.0+wasi-0.3.0-rc-2026-01-06" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" +dependencies = [ + "wit-bindgen", +] + [[package]] name = "wasm-bindgen" version = "0.2.108" @@ -1545,6 +1585,40 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "wasm-encoder" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" +dependencies = [ + "leb128fmt", + "wasmparser", +] + +[[package]] +name = "wasm-metadata" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" +dependencies = [ + "anyhow", + "indexmap", + "wasm-encoder", + "wasmparser", +] + +[[package]] +name = "wasmparser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" +dependencies = [ + "bitflags", + "hashbrown 0.15.5", + "indexmap", + "semver", +] + [[package]] name = "windows-core" version = "0.62.2" @@ -1698,6 +1772,88 @@ name = "wit-bindgen" version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" +dependencies = [ + "wit-bindgen-rust-macro", +] + +[[package]] +name = "wit-bindgen-core" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" +dependencies = [ + "anyhow", + "heck", + "wit-parser", +] + +[[package]] +name = "wit-bindgen-rust" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" +dependencies = [ + "anyhow", + "heck", + "indexmap", + "prettyplease", + "syn", + "wasm-metadata", + "wit-bindgen-core", + "wit-component", +] + +[[package]] +name = "wit-bindgen-rust-macro" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" +dependencies = [ + "anyhow", + "prettyplease", + "proc-macro2", + "quote", + "syn", + "wit-bindgen-core", + "wit-bindgen-rust", +] + +[[package]] +name = "wit-component" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" +dependencies = [ + "anyhow", + "bitflags", + "indexmap", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder", + "wasm-metadata", + "wasmparser", + "wit-parser", +] + +[[package]] +name = "wit-parser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" +dependencies = [ + "anyhow", + "id-arena", + "indexmap", + "log", + "semver", + "serde", + "serde_derive", + "serde_json", + "unicode-xid", + "wasmparser", +] [[package]] name = "zmij" diff --git a/server/crates/arbiter-proto/Cargo.toml b/server/crates/arbiter-proto/Cargo.toml index 71dc713..48a521e 100644 --- a/server/crates/arbiter-proto/Cargo.toml +++ b/server/crates/arbiter-proto/Cargo.toml @@ -6,6 +6,9 @@ edition = "2024" [dependencies] tonic.workspace = true prost.workspace = true +bytes = "1.11.1" +prost-derive = "0.14.3" +prost-types = { version = "0.14.3", features = ["chrono"] } [build-dependencies] -tonic-prost-build = "0.14.3" \ No newline at end of file +tonic-prost-build = "0.14.3" diff --git a/server/crates/arbiter-proto/build.rs b/server/crates/arbiter-proto/build.rs index 7836aa7..bfef41a 100644 --- a/server/crates/arbiter-proto/build.rs +++ b/server/crates/arbiter-proto/build.rs @@ -1,4 +1,9 @@ +use tonic_prost_build::configure; + fn main() -> Result<(), Box> { - // tonic_prost_build::compile_protos("../../protobufs/")?; + configure() + .proto_path("../../../protobufs") + .compile_protos(&["../../../protobufs/auth.proto"], &["../../../protobufs"]) + .unwrap(); Ok(()) } diff --git a/server/migrations/.keep b/server/migrations/.keep deleted file mode 100644 index e69de29..0000000