From 70cf9174a461ed25f1113e3f94c17a52cdfa5d35 Mon Sep 17 00:00:00 2001 From: newt Date: Wed, 25 Sep 2024 02:20:37 +0100 Subject: [PATCH] feat: add aes256 --- .vscode/settings.json | 5 + Cargo.lock | 1039 ++++++++++++++++++++++++++++++++++++++++- Cargo.toml | 3 + marquee.jpg | Bin 0 -> 154594 bytes readme.md | 10 + src/auth.rs | 28 ++ src/main.rs | 53 ++- 7 files changed, 1121 insertions(+), 17 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 marquee.jpg create mode 100644 readme.md create mode 100644 src/auth.rs diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..ed52b05 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "files.exclude": { + "target": true + } +} diff --git a/Cargo.lock b/Cargo.lock index 085e528..fd8ee57 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -17,6 +17,59 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "aead" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +dependencies = [ + "crypto-common", + "generic-array", +] + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "aes-gcm" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" +dependencies = [ + "aead", + "aes", + "cipher", + "ctr", + "ghash", + "subtle", +] + +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "allocator-api2" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" + [[package]] name = "async-trait" version = "0.1.83" @@ -28,6 +81,15 @@ dependencies = [ "syn", ] +[[package]] +name = "atoi" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528" +dependencies = [ + "num-traits", +] + [[package]] name = "atomic-waker" version = "1.1.2" @@ -116,11 +178,29 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + [[package]] name = "bitflags" version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +dependencies = [ + "serde", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] [[package]] name = "bumpalo" @@ -128,6 +208,12 @@ version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + [[package]] name = "bytes" version = "1.7.2" @@ -149,6 +235,16 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + [[package]] name = "color-eyre" version = "0.6.3" @@ -176,6 +272,21 @@ dependencies = [ "tracing-error", ] +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + [[package]] name = "core-foundation" version = "0.9.4" @@ -192,6 +303,103 @@ version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" +[[package]] +name = "cpufeatures" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +dependencies = [ + "libc", +] + +[[package]] +name = "crc" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" + +[[package]] +name = "crossbeam-queue" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "rand_core", + "typenum", +] + +[[package]] +name = "ctr" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +dependencies = [ + "cipher", +] + +[[package]] +name = "der" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +dependencies = [ + "const-oid", + "pem-rfc7468", + "zeroize", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "dotenvy" +version = "0.15.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" + +[[package]] +name = "either" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +dependencies = [ + "serde", +] + [[package]] name = "encoding_rs" version = "0.8.34" @@ -217,6 +425,28 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "etcetera" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "136d1b5283a1ab77bd9257427ffd09d8667ced0570b6f938942bc7568ed5b943" +dependencies = [ + "cfg-if", + "home", + "windows-sys 0.48.0", +] + +[[package]] +name = "event-listener" +version = "5.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + [[package]] name = "eyre" version = "0.6.12" @@ -233,6 +463,17 @@ version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" +[[package]] +name = "flume" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181" +dependencies = [ + "futures-core", + "futures-sink", + "spin", +] + [[package]] name = "fnv" version = "1.0.7" @@ -270,6 +511,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", + "futures-sink", ] [[package]] @@ -278,6 +520,34 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +[[package]] +name = "futures-executor" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-intrusive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f" +dependencies = [ + "futures-core", + "lock_api", + "parking_lot", +] + +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + [[package]] name = "futures-sink" version = "0.3.30" @@ -297,9 +567,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-core", + "futures-io", + "futures-sink", "futures-task", + "memchr", "pin-project-lite", "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", ] [[package]] @@ -313,6 +597,16 @@ dependencies = [ "wasi", ] +[[package]] +name = "ghash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" +dependencies = [ + "opaque-debug", + "polyval", +] + [[package]] name = "gimli" version = "0.28.1" @@ -343,6 +637,25 @@ name = "hashbrown" version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", + "allocator-api2", +] + +[[package]] +name = "hashlink" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ba4ff7128dee98c7dc9794b6a411377e1404dba1c97deb8d1a55297bd25d8af" +dependencies = [ + "hashbrown", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" @@ -350,6 +663,39 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hkdf" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +dependencies = [ + "hmac", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + +[[package]] +name = "home" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +dependencies = [ + "windows-sys 0.52.0", +] + [[package]] name = "http" version = "1.1.0" @@ -495,6 +841,15 @@ dependencies = [ "hashbrown", ] +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "generic-array", +] + [[package]] name = "ipnet" version = "2.10.0" @@ -521,6 +876,9 @@ name = "lazy_static" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +dependencies = [ + "spin", +] [[package]] name = "libc" @@ -528,6 +886,23 @@ version = "0.2.159" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" +[[package]] +name = "libm" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" + +[[package]] +name = "libsqlite3-sys" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + [[package]] name = "linux-raw-sys" version = "0.4.14" @@ -556,6 +931,16 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" +[[package]] +name = "md-5" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" +dependencies = [ + "cfg-if", + "digest", +] + [[package]] name = "memchr" version = "2.7.4" @@ -568,6 +953,12 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + [[package]] name = "miniz_oxide" version = "0.7.4" @@ -606,6 +997,63 @@ dependencies = [ "tempfile", ] +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "num-bigint-dig" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" +dependencies = [ + "byteorder", + "lazy_static", + "libm", + "num-integer", + "num-iter", + "num-traits", + "rand", + "smallvec", + "zeroize", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", + "libm", +] + [[package]] name = "object" version = "0.32.2" @@ -621,6 +1069,12 @@ version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + [[package]] name = "openssl" version = "0.10.66" @@ -671,6 +1125,12 @@ version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + [[package]] name = "parking_lot" version = "0.12.3" @@ -691,7 +1151,22 @@ dependencies = [ "libc", "redox_syscall", "smallvec", - "windows-targets", + "windows-targets 0.52.6", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", ] [[package]] @@ -712,12 +1187,54 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "pkcs1" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" +dependencies = [ + "der", + "pkcs8", + "spki", +] + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + [[package]] name = "pkg-config" version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" +[[package]] +name = "polyval" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" +dependencies = [ + "cfg-if", + "cpufeatures", + "opaque-debug", + "universal-hash", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] + [[package]] name = "proc-macro2" version = "1.0.86" @@ -736,6 +1253,36 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + [[package]] name = "redox_syscall" version = "0.5.5" @@ -803,6 +1350,26 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "rsa" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0e5124fcb30e76a7e79bfee683a2746db83784b86289f6251b54b7950a0dfc" +dependencies = [ + "const-oid", + "digest", + "num-bigint-dig", + "num-integer", + "num-traits", + "pkcs1", + "pkcs8", + "rand_core", + "signature", + "spki", + "subtle", + "zeroize", +] + [[package]] name = "rustc-demangle" version = "0.1.24" @@ -966,6 +1533,28 @@ dependencies = [ "serde", ] +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + [[package]] name = "sharded-slab" version = "0.1.7" @@ -990,6 +1579,16 @@ dependencies = [ "libc", ] +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest", + "rand_core", +] + [[package]] name = "slab" version = "0.4.9" @@ -1004,6 +1603,9 @@ name = "smallvec" version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +dependencies = [ + "serde", +] [[package]] name = "socket2" @@ -1020,6 +1622,234 @@ name = "spin" version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", +] + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "sqlformat" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bba3a93db0cc4f7bdece8bb09e77e2e785c20bfebf79eb8340ed80708048790" +dependencies = [ + "nom", + "unicode_categories", +] + +[[package]] +name = "sqlx" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93334716a037193fac19df402f8571269c84a00852f6a7066b5d2616dcd64d3e" +dependencies = [ + "sqlx-core", + "sqlx-macros", + "sqlx-mysql", + "sqlx-postgres", + "sqlx-sqlite", +] + +[[package]] +name = "sqlx-core" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4d8060b456358185f7d50c55d9b5066ad956956fddec42ee2e8567134a8936e" +dependencies = [ + "atoi", + "byteorder", + "bytes", + "crc", + "crossbeam-queue", + "either", + "event-listener", + "futures-channel", + "futures-core", + "futures-intrusive", + "futures-io", + "futures-util", + "hashbrown", + "hashlink", + "hex", + "indexmap", + "log", + "memchr", + "once_cell", + "paste", + "percent-encoding", + "serde", + "serde_json", + "sha2", + "smallvec", + "sqlformat", + "thiserror", + "tokio", + "tokio-stream", + "tracing", + "url", +] + +[[package]] +name = "sqlx-macros" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cac0692bcc9de3b073e8d747391827297e075c7710ff6276d9f7a1f3d58c6657" +dependencies = [ + "proc-macro2", + "quote", + "sqlx-core", + "sqlx-macros-core", + "syn", +] + +[[package]] +name = "sqlx-macros-core" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1804e8a7c7865599c9c79be146dc8a9fd8cc86935fa641d3ea58e5f0688abaa5" +dependencies = [ + "dotenvy", + "either", + "heck", + "hex", + "once_cell", + "proc-macro2", + "quote", + "serde", + "serde_json", + "sha2", + "sqlx-core", + "sqlx-mysql", + "sqlx-postgres", + "sqlx-sqlite", + "syn", + "tempfile", + "tokio", + "url", +] + +[[package]] +name = "sqlx-mysql" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64bb4714269afa44aef2755150a0fc19d756fb580a67db8885608cf02f47d06a" +dependencies = [ + "atoi", + "base64", + "bitflags", + "byteorder", + "bytes", + "crc", + "digest", + "dotenvy", + "either", + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "generic-array", + "hex", + "hkdf", + "hmac", + "itoa", + "log", + "md-5", + "memchr", + "once_cell", + "percent-encoding", + "rand", + "rsa", + "serde", + "sha1", + "sha2", + "smallvec", + "sqlx-core", + "stringprep", + "thiserror", + "tracing", + "whoami", +] + +[[package]] +name = "sqlx-postgres" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fa91a732d854c5d7726349bb4bb879bb9478993ceb764247660aee25f67c2f8" +dependencies = [ + "atoi", + "base64", + "bitflags", + "byteorder", + "crc", + "dotenvy", + "etcetera", + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "hex", + "hkdf", + "hmac", + "home", + "itoa", + "log", + "md-5", + "memchr", + "once_cell", + "rand", + "serde", + "serde_json", + "sha2", + "smallvec", + "sqlx-core", + "stringprep", + "thiserror", + "tracing", + "whoami", +] + +[[package]] +name = "sqlx-sqlite" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5b2cf34a45953bfd3daaf3db0f7a7878ab9b7a6b91b422d24a7a9e4c857b680" +dependencies = [ + "atoi", + "flume", + "futures-channel", + "futures-core", + "futures-executor", + "futures-intrusive", + "futures-util", + "libsqlite3-sys", + "log", + "percent-encoding", + "serde", + "serde_urlencoded", + "sqlx-core", + "tracing", + "url", +] + +[[package]] +name = "stringprep" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b4df3d392d81bd458a8a621b8bffbd2302a12ffe288a9d931670948749463b1" +dependencies = [ + "unicode-bidi", + "unicode-normalization", + "unicode-properties", +] [[package]] name = "subtle" @@ -1087,6 +1917,26 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "thiserror" +version = "1.0.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "thread_local" version = "1.1.8" @@ -1162,6 +2012,17 @@ dependencies = [ "tokio", ] +[[package]] +name = "tokio-stream" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + [[package]] name = "tokio-util" version = "0.7.12" @@ -1211,9 +2072,21 @@ checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ "log", "pin-project-lite", + "tracing-attributes", "tracing-core", ] +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "tracing-core" version = "0.1.32" @@ -1251,6 +2124,12 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + [[package]] name = "unicode-bidi" version = "0.3.15" @@ -1272,6 +2151,28 @@ dependencies = [ "tinyvec", ] +[[package]] +name = "unicode-properties" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ea75f83c0137a9b98608359a5f1af8144876eb67bcb1ce837368e906a9f524" + +[[package]] +name = "unicode_categories" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" + +[[package]] +name = "universal-hash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +dependencies = [ + "crypto-common", + "subtle", +] + [[package]] name = "untrusted" version = "0.9.0" @@ -1282,10 +2183,13 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" name = "uofgcal" version = "0.1.0" dependencies = [ + "aes-gcm", "axum", "color-eyre", + "rand", "reqwest", "serde", + "sqlx", "tokio", ] @@ -1312,6 +2216,12 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + [[package]] name = "want" version = "0.3.1" @@ -1327,6 +2237,12 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" + [[package]] name = "wasm-bindgen" version = "0.2.93" @@ -1404,6 +2320,16 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "whoami" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "372d5b87f58ec45c384ba03563b03544dc5fadc3983e434b286913f5b4a9bb6d" +dependencies = [ + "redox_syscall", + "wasite", +] + [[package]] name = "windows-registry" version = "0.2.0" @@ -1412,7 +2338,7 @@ checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" dependencies = [ "windows-result", "windows-strings", - "windows-targets", + "windows-targets 0.52.6", ] [[package]] @@ -1421,7 +2347,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" dependencies = [ - "windows-targets", + "windows-targets 0.52.6", ] [[package]] @@ -1431,7 +2357,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" dependencies = [ "windows-result", - "windows-targets", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", ] [[package]] @@ -1440,7 +2375,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets", + "windows-targets 0.52.6", ] [[package]] @@ -1449,7 +2384,22 @@ version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" dependencies = [ - "windows-targets", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", ] [[package]] @@ -1458,28 +2408,46 @@ 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_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", "windows_i686_gnullvm", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + [[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.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + [[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.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + [[package]] name = "windows_i686_gnu" version = "0.52.6" @@ -1492,30 +2460,75 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + [[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.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + [[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.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + [[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.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + [[package]] name = "windows_x86_64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "zeroize" version = "1.8.1" diff --git a/Cargo.toml b/Cargo.toml index 199e83b..3208a29 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,8 +5,11 @@ version = "0.1.0" edition = "2021" [dependencies] +aes-gcm = "0.10.3" axum = "0.7.6" color-eyre = "0.6.3" +rand = "0.8.5" reqwest = "0.12.7" serde = { version = "1.0.210", features = ["derive"] } +sqlx = { version = "0.8.2", features = ["runtime-tokio", "sqlite"] } tokio = { version = "1.40.0", features = ["full"] } diff --git a/marquee.jpg b/marquee.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b59f3d6307363829560738a663b3b278badb2702 GIT binary patch literal 154594 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 N&t@Y3yFIp<{{!=K4bK1o literal 0 HcmV?d00001 diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..71d9a84 --- /dev/null +++ b/readme.md @@ -0,0 +1,10 @@ +

+ +### todo + +- logging +- web dashboard +- key rotation diff --git a/src/auth.rs b/src/auth.rs new file mode 100644 index 0000000..f46591a --- /dev/null +++ b/src/auth.rs @@ -0,0 +1,28 @@ +use aes_gcm::{ + aead::{ + consts::{B0, B1}, + generic_array::GenericArray, + Aead, + }, + aes::cipher::typenum::{UInt, UTerm}, + AeadCore, Aes256Gcm, +}; +use color_eyre::{eyre::eyre, Result}; +use rand::rngs::OsRng; + +pub type Nonce = GenericArray, B1>, B0>, B0>>; + +pub fn encrypt_password(password: &str, cipher: &Aes256Gcm) -> Result<(Vec, Nonce)> { + let nonce = Aes256Gcm::generate_nonce(&mut OsRng); + let ciphertext = cipher + .encrypt(&nonce, password.as_bytes().as_ref()) + .map_err(|_| eyre!("Failed to encrypt password"))?; + Ok((ciphertext, nonce)) +} + +pub fn decrypt_password(ciphertext: &[u8], nonce: &Nonce, cipher: &Aes256Gcm) -> Result { + let password = cipher + .decrypt(nonce, ciphertext.as_ref()) + .map_err(|_| eyre!("Failed to decrypt password"))?; + Ok(String::from_utf8(password).map_err(|_| eyre!("Failed to convert password to string"))?) +} diff --git a/src/main.rs b/src/main.rs index 745cba9..4adf800 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,6 @@ +mod auth; + +use aes_gcm::{Aes256Gcm, KeyInit}; use axum::{ extract::{Query, State}, http::StatusCode, @@ -6,8 +9,10 @@ use axum::{ Router, }; use color_eyre::Result; +use rand::rngs::OsRng; use reqwest::{header, Client}; use serde::Deserialize; +use sqlx::{Executor, SqlitePool}; use std::borrow::Cow; use tokio::net::TcpListener; @@ -20,9 +25,16 @@ struct AuthPayload { pass: Cow<'static, str>, } +#[derive(Clone)] +struct AppState { + cipher: Aes256Gcm, + client: Client, + pool: SqlitePool, +} + async fn get_calender( Query(auth): Query, - State(client): State, + State(AppState { client, .. }): State, ) -> impl IntoResponse { if let Ok(resp) = client .get(CALENDAR_URL) @@ -57,14 +69,47 @@ async fn get_calender( async fn main() -> Result<()> { color_eyre::install()?; - // setup the http client and tcp listener + // connect to the database + let pool = SqlitePool::connect(if cfg!(debug_assertions) { + "sqlite::memory:" + } else { + "uofgcal.db" + }) + .await?; + + // ensure the users table exists + let mut handle = pool.acquire().await?; + + // todo: rewrite + handle + .execute( + "CREATE TABLE IF NOT EXISTS users ( + guid VARCHAR(8) PRIMARY KEY, + nonce BLOB NOT NULL, + pass BLOB NOT NULL + )", + ) + .await?; + + handle.close().await?; + + // prepare state let client = Client::new(); - let tcp_listener = TcpListener::bind(format!("0.0.0.0:{PORT}")).await?; + let cipher = Aes256Gcm::new({ + // todo: read from disk in production + &Aes256Gcm::generate_key(OsRng) + }); + let state = AppState { + cipher, + client, + pool, + }; // start the server + let tcp_listener = TcpListener::bind(format!("0.0.0.0:{PORT}")).await?; let router = Router::new() .route("/", get(get_calender)) - .with_state(client); + .with_state(state); axum::serve(tcp_listener, router).await?; Ok(())