mirror of
https://github.com/creating2morrow/neveko.git
synced 2025-01-03 09:29:39 +00:00
remove gpg module
This commit is contained in:
parent
e245be7143
commit
80b57bbc9b
33 changed files with 227 additions and 1688 deletions
2
.github/workflows/audit.yml
vendored
2
.github/workflows/audit.yml
vendored
|
@ -22,6 +22,6 @@ jobs:
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: sudo apt install -y libssl-dev build-essential libgpgme-dev
|
run: sudo apt install -y libssl-dev build-essential
|
||||||
- name: Audit
|
- name: Audit
|
||||||
run: cargo install cargo-audit && cargo audit
|
run: cargo install cargo-audit && cargo audit
|
||||||
|
|
2
.github/workflows/release.yml
vendored
2
.github/workflows/release.yml
vendored
|
@ -16,7 +16,7 @@ jobs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: sudo apt install -y libssl-dev build-essential libgpgme-dev
|
run: sudo apt install -y libssl-dev build-essential
|
||||||
- name: Extract branch name
|
- name: Extract branch name
|
||||||
shell: bash
|
shell: bash
|
||||||
run: echo "branch=$(echo ${GITHUB_REF#refs/heads/})" >>$GITHUB_OUTPUT
|
run: echo "branch=$(echo ${GITHUB_REF#refs/heads/})" >>$GITHUB_OUTPUT
|
||||||
|
|
2
.github/workflows/rust.yml
vendored
2
.github/workflows/rust.yml
vendored
|
@ -22,7 +22,7 @@ jobs:
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: sudo apt install -y libssl-dev build-essential libgpgme-dev
|
run: sudo apt install -y libssl-dev build-essential
|
||||||
- name: Build
|
- name: Build
|
||||||
run: cargo build --verbose
|
run: cargo build --verbose
|
||||||
- name: Run tests
|
- name: Run tests
|
||||||
|
|
145
Cargo.lock
generated
145
Cargo.lock
generated
|
@ -300,12 +300,6 @@ dependencies = [
|
||||||
"objc2-encode",
|
"objc2-encode",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "build-rs"
|
|
||||||
version = "0.1.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b00b8763668c99f8d9101b8a0dd82106f58265464531a79b2cef0d9a30c17dd2"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bumpalo"
|
name = "bumpalo"
|
||||||
version = "3.13.0"
|
version = "3.13.0"
|
||||||
|
@ -373,16 +367,6 @@ version = "1.1.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c"
|
checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "cfg-expr"
|
|
||||||
version = "0.15.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "215c0072ecc28f92eeb0eea38ba63ddfcb65c2828c46311d646f1a3ff5f9841c"
|
|
||||||
dependencies = [
|
|
||||||
"smallvec",
|
|
||||||
"target-lexicon",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cfg-if"
|
name = "cfg-if"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
|
@ -510,15 +494,6 @@ dependencies = [
|
||||||
"wasm-bindgen",
|
"wasm-bindgen",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "conv"
|
|
||||||
version = "0.3.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "78ff10625fd0ac447827aa30ea8b861fead473bb60aeb73af6c1c58caf0d1299"
|
|
||||||
dependencies = [
|
|
||||||
"custom_derive",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cookie"
|
name = "cookie"
|
||||||
version = "0.17.0"
|
version = "0.17.0"
|
||||||
|
@ -641,16 +616,6 @@ dependencies = [
|
||||||
"typenum",
|
"typenum",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "cstr-argument"
|
|
||||||
version = "0.1.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b6bd9c8e659a473bce955ae5c35b116af38af11a7acb0b480e01f3ed348aeb40"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-if",
|
|
||||||
"memchr",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "curve25519-dalek"
|
name = "curve25519-dalek"
|
||||||
version = "4.1.2"
|
version = "4.1.2"
|
||||||
|
@ -678,12 +643,6 @@ dependencies = [
|
||||||
"syn 2.0.58",
|
"syn 2.0.58",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "custom_derive"
|
|
||||||
version = "0.1.7"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "ef8ae57c4978a2acd8b869ce6b9ca1dfe817bff704c220209fdef2c0b75a01b9"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "deflate"
|
name = "deflate"
|
||||||
version = "0.8.6"
|
version = "0.8.6"
|
||||||
|
@ -1283,47 +1242,6 @@ dependencies = [
|
||||||
"gl_generator",
|
"gl_generator",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "gpg-error"
|
|
||||||
version = "0.6.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "d89aaeddbfb92313378c58e98abadaaa34082b3855f1d455576eeeda08bd592c"
|
|
||||||
dependencies = [
|
|
||||||
"libgpg-error-sys",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "gpgme"
|
|
||||||
version = "0.11.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "57539732fbe58eacdb984734b72b470ed0bca3ab7a49813271878567025ac44f"
|
|
||||||
dependencies = [
|
|
||||||
"bitflags 1.3.2",
|
|
||||||
"cfg-if",
|
|
||||||
"conv",
|
|
||||||
"cstr-argument",
|
|
||||||
"gpg-error",
|
|
||||||
"gpgme-sys",
|
|
||||||
"libc 0.2.153",
|
|
||||||
"memoffset 0.7.1",
|
|
||||||
"once_cell",
|
|
||||||
"smallvec",
|
|
||||||
"static_assertions",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "gpgme-sys"
|
|
||||||
version = "0.11.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "509223d659c06e4a26229437d6ac917723f02d31917c86c6ecd50e8369741cf7"
|
|
||||||
dependencies = [
|
|
||||||
"build-rs",
|
|
||||||
"libc 0.2.153",
|
|
||||||
"libgpg-error-sys",
|
|
||||||
"system-deps",
|
|
||||||
"winreg 0.10.1",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "h2"
|
name = "h2"
|
||||||
version = "0.3.26"
|
version = "0.3.26"
|
||||||
|
@ -1697,17 +1615,6 @@ version = "0.2.153"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
|
checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "libgpg-error-sys"
|
|
||||||
version = "0.6.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "c97079310f39c835d3bd73578379d040f779614bb331c7ffbb6630fee6420290"
|
|
||||||
dependencies = [
|
|
||||||
"build-rs",
|
|
||||||
"system-deps",
|
|
||||||
"winreg 0.10.1",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "liblmdb-sys"
|
name = "liblmdb-sys"
|
||||||
version = "0.2.2"
|
version = "0.2.2"
|
||||||
|
@ -1847,15 +1754,6 @@ dependencies = [
|
||||||
"autocfg",
|
"autocfg",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "memoffset"
|
|
||||||
version = "0.7.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4"
|
|
||||||
dependencies = [
|
|
||||||
"autocfg",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "memoffset"
|
name = "memoffset"
|
||||||
version = "0.9.0"
|
version = "0.9.0"
|
||||||
|
@ -2028,7 +1926,6 @@ dependencies = [
|
||||||
"curve25519-dalek",
|
"curve25519-dalek",
|
||||||
"diqwest",
|
"diqwest",
|
||||||
"env_logger",
|
"env_logger",
|
||||||
"gpgme",
|
|
||||||
"hex",
|
"hex",
|
||||||
"hmac",
|
"hmac",
|
||||||
"jwt",
|
"jwt",
|
||||||
|
@ -2725,7 +2622,7 @@ dependencies = [
|
||||||
"wasm-bindgen",
|
"wasm-bindgen",
|
||||||
"wasm-bindgen-futures",
|
"wasm-bindgen-futures",
|
||||||
"web-sys",
|
"web-sys",
|
||||||
"winreg 0.50.0",
|
"winreg",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -3136,12 +3033,6 @@ dependencies = [
|
||||||
"loom",
|
"loom",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "static_assertions"
|
|
||||||
version = "1.1.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "str-buf"
|
name = "str-buf"
|
||||||
version = "1.0.6"
|
version = "1.0.6"
|
||||||
|
@ -3215,25 +3106,6 @@ dependencies = [
|
||||||
"libc 0.2.153",
|
"libc 0.2.153",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "system-deps"
|
|
||||||
version = "6.1.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "e5fa6fb9ee296c0dc2df41a656ca7948546d061958115ddb0bcaae43ad0d17d2"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-expr",
|
|
||||||
"heck",
|
|
||||||
"pkg-config",
|
|
||||||
"toml",
|
|
||||||
"version-compare",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "target-lexicon"
|
|
||||||
version = "0.12.8"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "1b1c7f239eb94671427157bd93b3694320f3668d4e1eff08c7285366fd777fac"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tempfile"
|
name = "tempfile"
|
||||||
version = "3.6.0"
|
version = "3.6.0"
|
||||||
|
@ -3661,12 +3533,6 @@ version = "0.8.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
|
checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "version-compare"
|
|
||||||
version = "0.1.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "version_check"
|
name = "version_check"
|
||||||
version = "0.9.4"
|
version = "0.9.4"
|
||||||
|
@ -4128,15 +3994,6 @@ dependencies = [
|
||||||
"memchr",
|
"memchr",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "winreg"
|
|
||||||
version = "0.10.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d"
|
|
||||||
dependencies = [
|
|
||||||
"winapi",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "winreg"
|
name = "winreg"
|
||||||
version = "0.50.0"
|
version = "0.50.0"
|
||||||
|
|
|
@ -7,22 +7,22 @@ NEVidebla-EKOnomia (invisible economy)
|
||||||
|
|
||||||
![home](./assets/home.png)
|
![home](./assets/home.png)
|
||||||
|
|
||||||
### gpg and i2p made simple for E2EE marketplace, messaging and more
|
### i2p made simple for E2EE marketplace, messaging and more
|
||||||
|
|
||||||
## About
|
## About
|
||||||
|
|
||||||
* send messages over the invisible internet
|
* send messages over the invisible internet
|
||||||
* vanity base32 addresses (advanced)
|
* vanity base32 addresses (advanced)
|
||||||
* automated mandatory gpg key encryption
|
* automated mandatory message encipher
|
||||||
* self-hosted i2p marketplace
|
* self-hosted i2p marketplace
|
||||||
* xmr multisig / payment integration
|
* xmr multisig / payment integration
|
||||||
|
|
||||||
## Dev
|
## Dev
|
||||||
|
|
||||||
* stack - rust (egui, rocket), lmdb, i2p-zero, monero(rpc, daemon), gpg
|
* stack - rust (egui, rocket), lmdb, i2p-zero, monero(rpc, daemon)
|
||||||
* install dependencies
|
* install dependencies
|
||||||
* ubuntu example: `sudo apt update -y && sudo apt upgrade -y`
|
* ubuntu example: `sudo apt update -y && sudo apt upgrade -y`
|
||||||
* `sudo apt install -y libssl-dev build-essential libgpgme-dev`
|
* `sudo apt install -y libssl-dev build-essential`
|
||||||
* `git clone https://github.com/creating2morrow/neveko`
|
* `git clone https://github.com/creating2morrow/neveko`
|
||||||
* `cd neveko && ./scripts/build_all_and_run.sh "-- -h"`
|
* `cd neveko && ./scripts/build_all_and_run.sh "-- -h"`
|
||||||
* Example to start neveko with remote stagenet node / i2p proxy remote for development:
|
* Example to start neveko with remote stagenet node / i2p proxy remote for development:
|
||||||
|
|
|
@ -39,7 +39,7 @@ curl -iv http://bob.b32.i2p/xmr/version -H 'proof: eyJhbGciOiJIUzUxMiJ9...'
|
||||||
## add contact
|
## add contact
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -iv -X POST http://localhost:9044/contact -d '{"cid": "KEEP EMPTY", "gpg_key": [1,2,3...], "i2p_address": "", "xmr_address": ""}' -H 'Content-Type: application/json'
|
curl -iv -X POST http://localhost:9044/contact -d '{"cid": "KEEP EMPTY", "npmk": "string", "i2p_address": "", "xmr_address": ""}' -H 'Content-Type: application/json'
|
||||||
```
|
```
|
||||||
|
|
||||||
## view contacts
|
## view contacts
|
||||||
|
@ -66,8 +66,8 @@ curl -iv http://alice.b32.i2p/message/rx -d '{"uid":"", "mid": "", "body": [1,2,
|
||||||
curl -iv http://localhost:9045/messages
|
curl -iv http://localhost:9045/messages
|
||||||
```
|
```
|
||||||
|
|
||||||
## decrypt message
|
## decipher message
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -iv http://localhost:9045/message/decrypt/<MESSAGE_ID>
|
curl -iv http://localhost:9045/message/decipher/<MESSAGE_ID>
|
||||||
```
|
```
|
|
@ -24,9 +24,8 @@
|
||||||
|
|
||||||
* go to `AddressBook` in the gui
|
* go to `AddressBook` in the gui
|
||||||
* enter .b32.i2p address of contact and click add
|
* enter .b32.i2p address of contact and click add
|
||||||
* if all goes well you will have imported their public neveko gpg app key
|
* if all goes well you will have imported their public neveko message public key
|
||||||
* dont reuse the app gpg keys anywhere else!
|
* dont reuse the neveko message keys anywhere else!
|
||||||
* don't forget to trust the contact with `sign key` in the `check status` window
|
|
||||||
|
|
||||||
### Create JWP
|
### Create JWP
|
||||||
|
|
||||||
|
@ -38,7 +37,7 @@
|
||||||
* click `check status` and `Create JWP`
|
* click `check status` and `Create JWP`
|
||||||
* when authorizing to send to contact an invoice will be generated
|
* when authorizing to send to contact an invoice will be generated
|
||||||
* authorize payment and tx proof generation in the prompt
|
* authorize payment and tx proof generation in the prompt
|
||||||
* this tx proof will be used to create an encrypted json web proof of payment with each contact
|
* this tx proof will be used to create an enciphered json web proof of payment with each contact
|
||||||
* think of it as a reusable, unforgeable coupon or ticket
|
* think of it as a reusable, unforgeable coupon or ticket
|
||||||
* the invoice shows payment per blocks (time)
|
* the invoice shows payment per blocks (time)
|
||||||
* default is 1 piconero per day
|
* default is 1 piconero per day
|
||||||
|
@ -55,7 +54,7 @@
|
||||||
* verify recipient (.b32.i2p address) and press `send`
|
* verify recipient (.b32.i2p address) and press `send`
|
||||||
* plain text messages never leave your machine
|
* plain text messages never leave your machine
|
||||||
* you can click `Refresh` button in the Mailbox to check for new messages
|
* you can click `Refresh` button in the Mailbox to check for new messages
|
||||||
* messages must be decrypted by clicking `decrypt`
|
* messages must be deciphered by clicking `decipher`
|
||||||
|
|
||||||
### fts (failed-to-send)
|
### fts (failed-to-send)
|
||||||
|
|
||||||
|
|
181
neveko-auth/Cargo.lock
generated
181
neveko-auth/Cargo.lock
generated
|
@ -162,12 +162,6 @@ dependencies = [
|
||||||
"generic-array",
|
"generic-array",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "build-rs"
|
|
||||||
version = "0.1.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b00b8763668c99f8d9101b8a0dd82106f58265464531a79b2cef0d9a30c17dd2"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bumpalo"
|
name = "bumpalo"
|
||||||
version = "3.12.0"
|
version = "3.12.0"
|
||||||
|
@ -186,15 +180,6 @@ version = "1.0.79"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
|
checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "cfg-expr"
|
|
||||||
version = "0.14.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "a35b255461940a32985c627ce82900867c61db1659764d3675ea81963f72a4c6"
|
|
||||||
dependencies = [
|
|
||||||
"smallvec",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cfg-if"
|
name = "cfg-if"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
|
@ -283,15 +268,6 @@ dependencies = [
|
||||||
"windows-sys 0.45.0",
|
"windows-sys 0.45.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "conv"
|
|
||||||
version = "0.3.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "78ff10625fd0ac447827aa30ea8b861fead473bb60aeb73af6c1c58caf0d1299"
|
|
||||||
dependencies = [
|
|
||||||
"custom_derive",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cookie"
|
name = "cookie"
|
||||||
version = "0.17.0"
|
version = "0.17.0"
|
||||||
|
@ -338,16 +314,6 @@ dependencies = [
|
||||||
"typenum",
|
"typenum",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "cstr-argument"
|
|
||||||
version = "0.1.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b6bd9c8e659a473bce955ae5c35b116af38af11a7acb0b480e01f3ed348aeb40"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-if",
|
|
||||||
"memchr",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "curve25519-dalek"
|
name = "curve25519-dalek"
|
||||||
version = "4.1.2"
|
version = "4.1.2"
|
||||||
|
@ -375,12 +341,6 @@ dependencies = [
|
||||||
"syn 2.0.58",
|
"syn 2.0.58",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "custom_derive"
|
|
||||||
version = "0.1.7"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "ef8ae57c4978a2acd8b869ce6b9ca1dfe817bff704c220209fdef2c0b75a01b9"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cxx"
|
name = "cxx"
|
||||||
version = "1.0.94"
|
version = "1.0.94"
|
||||||
|
@ -576,7 +536,7 @@ dependencies = [
|
||||||
"atomic",
|
"atomic",
|
||||||
"pear",
|
"pear",
|
||||||
"serde",
|
"serde",
|
||||||
"toml 0.5.11",
|
"toml",
|
||||||
"uncased",
|
"uncased",
|
||||||
"version_check",
|
"version_check",
|
||||||
]
|
]
|
||||||
|
@ -722,47 +682,6 @@ version = "0.3.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
|
checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "gpg-error"
|
|
||||||
version = "0.6.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "d89aaeddbfb92313378c58e98abadaaa34082b3855f1d455576eeeda08bd592c"
|
|
||||||
dependencies = [
|
|
||||||
"libgpg-error-sys",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "gpgme"
|
|
||||||
version = "0.11.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "57539732fbe58eacdb984734b72b470ed0bca3ab7a49813271878567025ac44f"
|
|
||||||
dependencies = [
|
|
||||||
"bitflags 1.3.2",
|
|
||||||
"cfg-if",
|
|
||||||
"conv",
|
|
||||||
"cstr-argument",
|
|
||||||
"gpg-error",
|
|
||||||
"gpgme-sys",
|
|
||||||
"libc 0.2.140",
|
|
||||||
"memoffset",
|
|
||||||
"once_cell",
|
|
||||||
"smallvec",
|
|
||||||
"static_assertions",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "gpgme-sys"
|
|
||||||
version = "0.11.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "509223d659c06e4a26229437d6ac917723f02d31917c86c6ecd50e8369741cf7"
|
|
||||||
dependencies = [
|
|
||||||
"build-rs",
|
|
||||||
"libc 0.2.140",
|
|
||||||
"libgpg-error-sys",
|
|
||||||
"system-deps",
|
|
||||||
"winreg",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "h2"
|
name = "h2"
|
||||||
version = "0.3.16"
|
version = "0.3.16"
|
||||||
|
@ -1044,17 +963,6 @@ version = "0.2.140"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
|
checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "libgpg-error-sys"
|
|
||||||
version = "0.6.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "c97079310f39c835d3bd73578379d040f779614bb331c7ffbb6630fee6420290"
|
|
||||||
dependencies = [
|
|
||||||
"build-rs",
|
|
||||||
"system-deps",
|
|
||||||
"winreg",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "liblmdb-sys"
|
name = "liblmdb-sys"
|
||||||
version = "0.2.2"
|
version = "0.2.2"
|
||||||
|
@ -1161,15 +1069,6 @@ version = "2.5.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
|
checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "memoffset"
|
|
||||||
version = "0.7.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4"
|
|
||||||
dependencies = [
|
|
||||||
"autocfg",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "mime"
|
name = "mime"
|
||||||
version = "0.3.17"
|
version = "0.3.17"
|
||||||
|
@ -1245,7 +1144,6 @@ dependencies = [
|
||||||
"curve25519-dalek",
|
"curve25519-dalek",
|
||||||
"diqwest",
|
"diqwest",
|
||||||
"env_logger",
|
"env_logger",
|
||||||
"gpgme",
|
|
||||||
"hex",
|
"hex",
|
||||||
"hmac",
|
"hmac",
|
||||||
"jwt",
|
"jwt",
|
||||||
|
@ -1891,15 +1789,6 @@ dependencies = [
|
||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "serde_spanned"
|
|
||||||
version = "0.6.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "0efd8caf556a6cebd3b285caf480045fcc1ac04f6bd786b09a6f11af30c4fcf4"
|
|
||||||
dependencies = [
|
|
||||||
"serde",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde_urlencoded"
|
name = "serde_urlencoded"
|
||||||
version = "0.7.1"
|
version = "0.7.1"
|
||||||
|
@ -2003,12 +1892,6 @@ dependencies = [
|
||||||
"loom",
|
"loom",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "static_assertions"
|
|
||||||
version = "1.1.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "strsim"
|
name = "strsim"
|
||||||
version = "0.10.0"
|
version = "0.10.0"
|
||||||
|
@ -2043,19 +1926,6 @@ dependencies = [
|
||||||
"unicode-ident",
|
"unicode-ident",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "system-deps"
|
|
||||||
version = "6.0.4"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "555fc8147af6256f3931a36bb83ad0023240ce9cf2b319dec8236fd1f220b05f"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-expr",
|
|
||||||
"heck",
|
|
||||||
"pkg-config",
|
|
||||||
"toml 0.7.3",
|
|
||||||
"version-compare",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tempfile"
|
name = "tempfile"
|
||||||
version = "3.5.0"
|
version = "3.5.0"
|
||||||
|
@ -2223,40 +2093,6 @@ dependencies = [
|
||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "toml"
|
|
||||||
version = "0.7.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b403acf6f2bb0859c93c7f0d967cb4a75a7ac552100f9322faf64dc047669b21"
|
|
||||||
dependencies = [
|
|
||||||
"serde",
|
|
||||||
"serde_spanned",
|
|
||||||
"toml_datetime",
|
|
||||||
"toml_edit",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "toml_datetime"
|
|
||||||
version = "0.6.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622"
|
|
||||||
dependencies = [
|
|
||||||
"serde",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "toml_edit"
|
|
||||||
version = "0.19.8"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13"
|
|
||||||
dependencies = [
|
|
||||||
"indexmap",
|
|
||||||
"serde",
|
|
||||||
"serde_spanned",
|
|
||||||
"toml_datetime",
|
|
||||||
"winnow",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tower-service"
|
name = "tower-service"
|
||||||
version = "0.3.2"
|
version = "0.3.2"
|
||||||
|
@ -2418,12 +2254,6 @@ version = "0.2.15"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
|
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "version-compare"
|
|
||||||
version = "0.1.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "version_check"
|
name = "version_check"
|
||||||
version = "0.9.4"
|
version = "0.9.4"
|
||||||
|
@ -2715,15 +2545,6 @@ version = "0.47.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9d6e62c256dc6d40b8c8707df17df8d774e60e39db723675241e7c15e910bce7"
|
checksum = "9d6e62c256dc6d40b8c8707df17df8d774e60e39db723675241e7c15e910bce7"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "winnow"
|
|
||||||
version = "0.4.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "ae8970b36c66498d8ff1d66685dc86b91b29db0c7739899012f63a63814b4b28"
|
|
||||||
dependencies = [
|
|
||||||
"memchr",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "winreg"
|
name = "winreg"
|
||||||
version = "0.10.1"
|
version = "0.10.1"
|
||||||
|
|
181
neveko-contact/Cargo.lock
generated
181
neveko-contact/Cargo.lock
generated
|
@ -162,12 +162,6 @@ dependencies = [
|
||||||
"generic-array",
|
"generic-array",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "build-rs"
|
|
||||||
version = "0.1.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b00b8763668c99f8d9101b8a0dd82106f58265464531a79b2cef0d9a30c17dd2"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bumpalo"
|
name = "bumpalo"
|
||||||
version = "3.12.0"
|
version = "3.12.0"
|
||||||
|
@ -186,15 +180,6 @@ version = "1.0.79"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
|
checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "cfg-expr"
|
|
||||||
version = "0.14.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "a35b255461940a32985c627ce82900867c61db1659764d3675ea81963f72a4c6"
|
|
||||||
dependencies = [
|
|
||||||
"smallvec",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cfg-if"
|
name = "cfg-if"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
|
@ -283,15 +268,6 @@ dependencies = [
|
||||||
"windows-sys 0.45.0",
|
"windows-sys 0.45.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "conv"
|
|
||||||
version = "0.3.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "78ff10625fd0ac447827aa30ea8b861fead473bb60aeb73af6c1c58caf0d1299"
|
|
||||||
dependencies = [
|
|
||||||
"custom_derive",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cookie"
|
name = "cookie"
|
||||||
version = "0.17.0"
|
version = "0.17.0"
|
||||||
|
@ -338,16 +314,6 @@ dependencies = [
|
||||||
"typenum",
|
"typenum",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "cstr-argument"
|
|
||||||
version = "0.1.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b6bd9c8e659a473bce955ae5c35b116af38af11a7acb0b480e01f3ed348aeb40"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-if",
|
|
||||||
"memchr",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "curve25519-dalek"
|
name = "curve25519-dalek"
|
||||||
version = "4.1.2"
|
version = "4.1.2"
|
||||||
|
@ -375,12 +341,6 @@ dependencies = [
|
||||||
"syn 2.0.58",
|
"syn 2.0.58",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "custom_derive"
|
|
||||||
version = "0.1.7"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "ef8ae57c4978a2acd8b869ce6b9ca1dfe817bff704c220209fdef2c0b75a01b9"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cxx"
|
name = "cxx"
|
||||||
version = "1.0.94"
|
version = "1.0.94"
|
||||||
|
@ -576,7 +536,7 @@ dependencies = [
|
||||||
"atomic",
|
"atomic",
|
||||||
"pear",
|
"pear",
|
||||||
"serde",
|
"serde",
|
||||||
"toml 0.5.11",
|
"toml",
|
||||||
"uncased",
|
"uncased",
|
||||||
"version_check",
|
"version_check",
|
||||||
]
|
]
|
||||||
|
@ -722,47 +682,6 @@ version = "0.3.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
|
checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "gpg-error"
|
|
||||||
version = "0.6.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "d89aaeddbfb92313378c58e98abadaaa34082b3855f1d455576eeeda08bd592c"
|
|
||||||
dependencies = [
|
|
||||||
"libgpg-error-sys",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "gpgme"
|
|
||||||
version = "0.11.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "57539732fbe58eacdb984734b72b470ed0bca3ab7a49813271878567025ac44f"
|
|
||||||
dependencies = [
|
|
||||||
"bitflags 1.3.2",
|
|
||||||
"cfg-if",
|
|
||||||
"conv",
|
|
||||||
"cstr-argument",
|
|
||||||
"gpg-error",
|
|
||||||
"gpgme-sys",
|
|
||||||
"libc 0.2.140",
|
|
||||||
"memoffset",
|
|
||||||
"once_cell",
|
|
||||||
"smallvec",
|
|
||||||
"static_assertions",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "gpgme-sys"
|
|
||||||
version = "0.11.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "509223d659c06e4a26229437d6ac917723f02d31917c86c6ecd50e8369741cf7"
|
|
||||||
dependencies = [
|
|
||||||
"build-rs",
|
|
||||||
"libc 0.2.140",
|
|
||||||
"libgpg-error-sys",
|
|
||||||
"system-deps",
|
|
||||||
"winreg",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "h2"
|
name = "h2"
|
||||||
version = "0.3.16"
|
version = "0.3.16"
|
||||||
|
@ -1044,17 +963,6 @@ version = "0.2.140"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
|
checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "libgpg-error-sys"
|
|
||||||
version = "0.6.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "c97079310f39c835d3bd73578379d040f779614bb331c7ffbb6630fee6420290"
|
|
||||||
dependencies = [
|
|
||||||
"build-rs",
|
|
||||||
"system-deps",
|
|
||||||
"winreg",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "liblmdb-sys"
|
name = "liblmdb-sys"
|
||||||
version = "0.2.2"
|
version = "0.2.2"
|
||||||
|
@ -1161,15 +1069,6 @@ version = "2.5.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
|
checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "memoffset"
|
|
||||||
version = "0.7.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4"
|
|
||||||
dependencies = [
|
|
||||||
"autocfg",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "mime"
|
name = "mime"
|
||||||
version = "0.3.17"
|
version = "0.3.17"
|
||||||
|
@ -1245,7 +1144,6 @@ dependencies = [
|
||||||
"curve25519-dalek",
|
"curve25519-dalek",
|
||||||
"diqwest",
|
"diqwest",
|
||||||
"env_logger",
|
"env_logger",
|
||||||
"gpgme",
|
|
||||||
"hex",
|
"hex",
|
||||||
"hmac",
|
"hmac",
|
||||||
"jwt",
|
"jwt",
|
||||||
|
@ -1891,15 +1789,6 @@ dependencies = [
|
||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "serde_spanned"
|
|
||||||
version = "0.6.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "0efd8caf556a6cebd3b285caf480045fcc1ac04f6bd786b09a6f11af30c4fcf4"
|
|
||||||
dependencies = [
|
|
||||||
"serde",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde_urlencoded"
|
name = "serde_urlencoded"
|
||||||
version = "0.7.1"
|
version = "0.7.1"
|
||||||
|
@ -2003,12 +1892,6 @@ dependencies = [
|
||||||
"loom",
|
"loom",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "static_assertions"
|
|
||||||
version = "1.1.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "strsim"
|
name = "strsim"
|
||||||
version = "0.10.0"
|
version = "0.10.0"
|
||||||
|
@ -2043,19 +1926,6 @@ dependencies = [
|
||||||
"unicode-ident",
|
"unicode-ident",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "system-deps"
|
|
||||||
version = "6.0.4"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "555fc8147af6256f3931a36bb83ad0023240ce9cf2b319dec8236fd1f220b05f"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-expr",
|
|
||||||
"heck",
|
|
||||||
"pkg-config",
|
|
||||||
"toml 0.7.3",
|
|
||||||
"version-compare",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tempfile"
|
name = "tempfile"
|
||||||
version = "3.5.0"
|
version = "3.5.0"
|
||||||
|
@ -2223,40 +2093,6 @@ dependencies = [
|
||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "toml"
|
|
||||||
version = "0.7.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b403acf6f2bb0859c93c7f0d967cb4a75a7ac552100f9322faf64dc047669b21"
|
|
||||||
dependencies = [
|
|
||||||
"serde",
|
|
||||||
"serde_spanned",
|
|
||||||
"toml_datetime",
|
|
||||||
"toml_edit",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "toml_datetime"
|
|
||||||
version = "0.6.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622"
|
|
||||||
dependencies = [
|
|
||||||
"serde",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "toml_edit"
|
|
||||||
version = "0.19.8"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13"
|
|
||||||
dependencies = [
|
|
||||||
"indexmap",
|
|
||||||
"serde",
|
|
||||||
"serde_spanned",
|
|
||||||
"toml_datetime",
|
|
||||||
"winnow",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tower-service"
|
name = "tower-service"
|
||||||
version = "0.3.2"
|
version = "0.3.2"
|
||||||
|
@ -2418,12 +2254,6 @@ version = "0.2.15"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
|
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "version-compare"
|
|
||||||
version = "0.1.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "version_check"
|
name = "version_check"
|
||||||
version = "0.9.4"
|
version = "0.9.4"
|
||||||
|
@ -2715,15 +2545,6 @@ version = "0.47.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9d6e62c256dc6d40b8c8707df17df8d774e60e39db723675241e7c15e910bce7"
|
checksum = "9d6e62c256dc6d40b8c8707df17df8d774e60e39db723675241e7c15e910bce7"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "winnow"
|
|
||||||
version = "0.4.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "ae8970b36c66498d8ff1d66685dc86b91b29db0c7739899012f63a63814b4b28"
|
|
||||||
dependencies = [
|
|
||||||
"memchr",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "winreg"
|
name = "winreg"
|
||||||
version = "0.10.1"
|
version = "0.10.1"
|
||||||
|
|
|
@ -37,13 +37,6 @@ pub async fn get_contacts(_token: auth::BearerToken) -> Custom<Json<Vec<Contact>
|
||||||
Custom(Status::Ok, Json(contacts))
|
Custom(Status::Ok, Json(contacts))
|
||||||
}
|
}
|
||||||
|
|
||||||
/// trust contact
|
|
||||||
#[post("/<key>")]
|
|
||||||
pub async fn trust_contact(key: String, _token: auth::BearerToken) -> Status {
|
|
||||||
contact::trust_gpg(key);
|
|
||||||
Status::Ok
|
|
||||||
}
|
|
||||||
|
|
||||||
/// prove payment
|
/// prove payment
|
||||||
#[get("/<contact>", data = "<proof_req>")]
|
#[get("/<contact>", data = "<proof_req>")]
|
||||||
pub async fn prove_payment(
|
pub async fn prove_payment(
|
||||||
|
|
|
@ -15,7 +15,6 @@ async fn rocket() -> _ {
|
||||||
env_logger::init();
|
env_logger::init();
|
||||||
log::info!("neveko-contact is online");
|
log::info!("neveko-contact is online");
|
||||||
rocket::custom(&config)
|
rocket::custom(&config)
|
||||||
.mount("/trust", routes![controller::trust_contact])
|
|
||||||
.mount("/prove", routes![controller::prove_payment])
|
.mount("/prove", routes![controller::prove_payment])
|
||||||
.mount("/contact", routes![controller::add_contact])
|
.mount("/contact", routes![controller::add_contact])
|
||||||
.mount("/contacts", routes![controller::get_contacts])
|
.mount("/contacts", routes![controller::get_contacts])
|
||||||
|
|
181
neveko-core/Cargo.lock
generated
181
neveko-core/Cargo.lock
generated
|
@ -162,12 +162,6 @@ dependencies = [
|
||||||
"generic-array",
|
"generic-array",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "build-rs"
|
|
||||||
version = "0.1.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b00b8763668c99f8d9101b8a0dd82106f58265464531a79b2cef0d9a30c17dd2"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bumpalo"
|
name = "bumpalo"
|
||||||
version = "3.12.0"
|
version = "3.12.0"
|
||||||
|
@ -186,15 +180,6 @@ version = "1.0.79"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
|
checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "cfg-expr"
|
|
||||||
version = "0.14.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "a35b255461940a32985c627ce82900867c61db1659764d3675ea81963f72a4c6"
|
|
||||||
dependencies = [
|
|
||||||
"smallvec",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cfg-if"
|
name = "cfg-if"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
|
@ -283,15 +268,6 @@ dependencies = [
|
||||||
"windows-sys 0.45.0",
|
"windows-sys 0.45.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "conv"
|
|
||||||
version = "0.3.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "78ff10625fd0ac447827aa30ea8b861fead473bb60aeb73af6c1c58caf0d1299"
|
|
||||||
dependencies = [
|
|
||||||
"custom_derive",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cookie"
|
name = "cookie"
|
||||||
version = "0.17.0"
|
version = "0.17.0"
|
||||||
|
@ -338,16 +314,6 @@ dependencies = [
|
||||||
"typenum",
|
"typenum",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "cstr-argument"
|
|
||||||
version = "0.1.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b6bd9c8e659a473bce955ae5c35b116af38af11a7acb0b480e01f3ed348aeb40"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-if",
|
|
||||||
"memchr",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "curve25519-dalek"
|
name = "curve25519-dalek"
|
||||||
version = "4.1.2"
|
version = "4.1.2"
|
||||||
|
@ -375,12 +341,6 @@ dependencies = [
|
||||||
"syn 2.0.58",
|
"syn 2.0.58",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "custom_derive"
|
|
||||||
version = "0.1.7"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "ef8ae57c4978a2acd8b869ce6b9ca1dfe817bff704c220209fdef2c0b75a01b9"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cxx"
|
name = "cxx"
|
||||||
version = "1.0.94"
|
version = "1.0.94"
|
||||||
|
@ -576,7 +536,7 @@ dependencies = [
|
||||||
"atomic",
|
"atomic",
|
||||||
"pear",
|
"pear",
|
||||||
"serde",
|
"serde",
|
||||||
"toml 0.5.11",
|
"toml",
|
||||||
"uncased",
|
"uncased",
|
||||||
"version_check",
|
"version_check",
|
||||||
]
|
]
|
||||||
|
@ -722,47 +682,6 @@ version = "0.3.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
|
checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "gpg-error"
|
|
||||||
version = "0.6.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "d89aaeddbfb92313378c58e98abadaaa34082b3855f1d455576eeeda08bd592c"
|
|
||||||
dependencies = [
|
|
||||||
"libgpg-error-sys",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "gpgme"
|
|
||||||
version = "0.11.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "57539732fbe58eacdb984734b72b470ed0bca3ab7a49813271878567025ac44f"
|
|
||||||
dependencies = [
|
|
||||||
"bitflags 1.3.2",
|
|
||||||
"cfg-if",
|
|
||||||
"conv",
|
|
||||||
"cstr-argument",
|
|
||||||
"gpg-error",
|
|
||||||
"gpgme-sys",
|
|
||||||
"libc 0.2.140",
|
|
||||||
"memoffset",
|
|
||||||
"once_cell",
|
|
||||||
"smallvec",
|
|
||||||
"static_assertions",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "gpgme-sys"
|
|
||||||
version = "0.11.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "509223d659c06e4a26229437d6ac917723f02d31917c86c6ecd50e8369741cf7"
|
|
||||||
dependencies = [
|
|
||||||
"build-rs",
|
|
||||||
"libc 0.2.140",
|
|
||||||
"libgpg-error-sys",
|
|
||||||
"system-deps",
|
|
||||||
"winreg",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "h2"
|
name = "h2"
|
||||||
version = "0.3.16"
|
version = "0.3.16"
|
||||||
|
@ -1044,17 +963,6 @@ version = "0.2.140"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
|
checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "libgpg-error-sys"
|
|
||||||
version = "0.6.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "c97079310f39c835d3bd73578379d040f779614bb331c7ffbb6630fee6420290"
|
|
||||||
dependencies = [
|
|
||||||
"build-rs",
|
|
||||||
"system-deps",
|
|
||||||
"winreg",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "liblmdb-sys"
|
name = "liblmdb-sys"
|
||||||
version = "0.2.2"
|
version = "0.2.2"
|
||||||
|
@ -1161,15 +1069,6 @@ version = "2.5.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
|
checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "memoffset"
|
|
||||||
version = "0.7.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4"
|
|
||||||
dependencies = [
|
|
||||||
"autocfg",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "mime"
|
name = "mime"
|
||||||
version = "0.3.17"
|
version = "0.3.17"
|
||||||
|
@ -1235,7 +1134,6 @@ dependencies = [
|
||||||
"curve25519-dalek",
|
"curve25519-dalek",
|
||||||
"diqwest",
|
"diqwest",
|
||||||
"env_logger",
|
"env_logger",
|
||||||
"gpgme",
|
|
||||||
"hex",
|
"hex",
|
||||||
"hmac",
|
"hmac",
|
||||||
"jwt",
|
"jwt",
|
||||||
|
@ -1881,15 +1779,6 @@ dependencies = [
|
||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "serde_spanned"
|
|
||||||
version = "0.6.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "0efd8caf556a6cebd3b285caf480045fcc1ac04f6bd786b09a6f11af30c4fcf4"
|
|
||||||
dependencies = [
|
|
||||||
"serde",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde_urlencoded"
|
name = "serde_urlencoded"
|
||||||
version = "0.7.1"
|
version = "0.7.1"
|
||||||
|
@ -1993,12 +1882,6 @@ dependencies = [
|
||||||
"loom",
|
"loom",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "static_assertions"
|
|
||||||
version = "1.1.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "strsim"
|
name = "strsim"
|
||||||
version = "0.10.0"
|
version = "0.10.0"
|
||||||
|
@ -2033,19 +1916,6 @@ dependencies = [
|
||||||
"unicode-ident",
|
"unicode-ident",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "system-deps"
|
|
||||||
version = "6.0.4"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "555fc8147af6256f3931a36bb83ad0023240ce9cf2b319dec8236fd1f220b05f"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-expr",
|
|
||||||
"heck",
|
|
||||||
"pkg-config",
|
|
||||||
"toml 0.7.3",
|
|
||||||
"version-compare",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tempfile"
|
name = "tempfile"
|
||||||
version = "3.5.0"
|
version = "3.5.0"
|
||||||
|
@ -2213,40 +2083,6 @@ dependencies = [
|
||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "toml"
|
|
||||||
version = "0.7.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b403acf6f2bb0859c93c7f0d967cb4a75a7ac552100f9322faf64dc047669b21"
|
|
||||||
dependencies = [
|
|
||||||
"serde",
|
|
||||||
"serde_spanned",
|
|
||||||
"toml_datetime",
|
|
||||||
"toml_edit",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "toml_datetime"
|
|
||||||
version = "0.6.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622"
|
|
||||||
dependencies = [
|
|
||||||
"serde",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "toml_edit"
|
|
||||||
version = "0.19.8"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13"
|
|
||||||
dependencies = [
|
|
||||||
"indexmap",
|
|
||||||
"serde",
|
|
||||||
"serde_spanned",
|
|
||||||
"toml_datetime",
|
|
||||||
"winnow",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tower-service"
|
name = "tower-service"
|
||||||
version = "0.3.2"
|
version = "0.3.2"
|
||||||
|
@ -2408,12 +2244,6 @@ version = "0.2.15"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
|
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "version-compare"
|
|
||||||
version = "0.1.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "version_check"
|
name = "version_check"
|
||||||
version = "0.9.4"
|
version = "0.9.4"
|
||||||
|
@ -2705,15 +2535,6 @@ version = "0.47.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9d6e62c256dc6d40b8c8707df17df8d774e60e39db723675241e7c15e910bce7"
|
checksum = "9d6e62c256dc6d40b8c8707df17df8d774e60e39db723675241e7c15e910bce7"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "winnow"
|
|
||||||
version = "0.4.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "ae8970b36c66498d8ff1d66685dc86b91b29db0c7739899012f63a63814b4b28"
|
|
||||||
dependencies = [
|
|
||||||
"memchr",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "winreg"
|
name = "winreg"
|
||||||
version = "0.10.1"
|
version = "0.10.1"
|
||||||
|
|
|
@ -11,7 +11,6 @@ clap = { version = "4.1.4", features = ["derive"] }
|
||||||
curve25519-dalek = "4.1.2"
|
curve25519-dalek = "4.1.2"
|
||||||
diqwest = "1.1.1"
|
diqwest = "1.1.1"
|
||||||
env_logger = "0.10.0"
|
env_logger = "0.10.0"
|
||||||
gpgme = "0.11.0"
|
|
||||||
hex = "0.4.3"
|
hex = "0.4.3"
|
||||||
hmac = "0.12.1"
|
hmac = "0.12.1"
|
||||||
jwt = "0.16.0"
|
jwt = "0.16.0"
|
||||||
|
|
|
@ -92,13 +92,6 @@ pub struct Args {
|
||||||
/// Marketplace admin port
|
/// Marketplace admin port
|
||||||
#[arg(long, help = "Set app marketplace admin port", default_value = "9046")]
|
#[arg(long, help = "Set app marketplace admin port", default_value = "9046")]
|
||||||
pub marketplace_port: u16,
|
pub marketplace_port: u16,
|
||||||
/// Auto trust contact gpg keys (DISABLED)
|
|
||||||
#[arg(
|
|
||||||
long,
|
|
||||||
help = "FUTURE FEATURE. Auto trust contacts. DISABLED",
|
|
||||||
default_value = "false"
|
|
||||||
)]
|
|
||||||
pub auto_trust: bool,
|
|
||||||
/// Start with gui
|
/// Start with gui
|
||||||
#[arg(
|
#[arg(
|
||||||
long,
|
long,
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
// Contact repo/service layer
|
// Contact repo/service layer
|
||||||
use crate::{
|
use crate::{
|
||||||
db,
|
db,
|
||||||
gpg,
|
|
||||||
i2p,
|
i2p,
|
||||||
models::*,
|
models::*,
|
||||||
monero,
|
monero,
|
||||||
|
neveko25519,
|
||||||
reqres,
|
reqres,
|
||||||
utils,
|
utils,
|
||||||
};
|
};
|
||||||
|
@ -41,7 +41,7 @@ pub async fn create(c: &Json<Contact>) -> Contact {
|
||||||
info!("creating contact: {}", f_cid);
|
info!("creating contact: {}", f_cid);
|
||||||
let new_contact = Contact {
|
let new_contact = Contact {
|
||||||
cid: String::from(&f_cid),
|
cid: String::from(&f_cid),
|
||||||
gpg_key: c.gpg_key.iter().cloned().collect(),
|
nmpk: String::from(&c.nmpk),
|
||||||
i2p_address: String::from(&c.i2p_address),
|
i2p_address: String::from(&c.i2p_address),
|
||||||
is_vendor: false,
|
is_vendor: false,
|
||||||
xmr_address: String::from(&c.xmr_address),
|
xmr_address: String::from(&c.xmr_address),
|
||||||
|
@ -50,8 +50,6 @@ pub async fn create(c: &Json<Contact>) -> Contact {
|
||||||
if !is_valid {
|
if !is_valid {
|
||||||
return Default::default();
|
return Default::default();
|
||||||
}
|
}
|
||||||
let import = c.gpg_key.iter().cloned().collect();
|
|
||||||
gpg::import_key(String::from(&f_cid), import).unwrap();
|
|
||||||
debug!("insert contact: {:?}", &new_contact);
|
debug!("insert contact: {:?}", &new_contact);
|
||||||
let s = db::Interface::open();
|
let s = db::Interface::open();
|
||||||
let k = &new_contact.cid;
|
let k = &new_contact.cid;
|
||||||
|
@ -115,7 +113,7 @@ async fn validate_contact(j: &Json<Contact>) -> bool {
|
||||||
j.cid.len() < utils::string_limit()
|
j.cid.len() < utils::string_limit()
|
||||||
&& j.i2p_address.len() < utils::string_limit()
|
&& j.i2p_address.len() < utils::string_limit()
|
||||||
&& j.i2p_address.contains(".b32.i2p")
|
&& j.i2p_address.contains(".b32.i2p")
|
||||||
&& j.gpg_key.len() < utils::gpg_key_limit()
|
&& j.nmpk.len() < utils::npmk_limit()
|
||||||
&& validate_address.result.valid
|
&& validate_address.result.valid
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -130,12 +128,13 @@ pub async fn share() -> Contact {
|
||||||
monero::open_wallet(&wallet_name, &wallet_password).await;
|
monero::open_wallet(&wallet_name, &wallet_password).await;
|
||||||
let m_address: reqres::XmrRpcAddressResponse = monero::get_address().await;
|
let m_address: reqres::XmrRpcAddressResponse = monero::get_address().await;
|
||||||
monero::close_wallet(&wallet_name, &wallet_password).await;
|
monero::close_wallet(&wallet_name, &wallet_password).await;
|
||||||
let gpg_key = gpg::export_key().unwrap_or(Vec::new());
|
let nmk = neveko25519::generate_neveko_message_keys().await;
|
||||||
|
let nmpk = nmk.hex_nmpk;
|
||||||
let i2p_address = i2p::get_destination(None);
|
let i2p_address = i2p::get_destination(None);
|
||||||
let xmr_address = m_address.result.address;
|
let xmr_address = m_address.result.address;
|
||||||
Contact {
|
Contact {
|
||||||
cid: utils::empty_string(),
|
cid: utils::empty_string(),
|
||||||
gpg_key,
|
nmpk,
|
||||||
i2p_address,
|
i2p_address,
|
||||||
is_vendor,
|
is_vendor,
|
||||||
xmr_address,
|
xmr_address,
|
||||||
|
@ -151,19 +150,6 @@ pub fn exists(from: &String) -> bool {
|
||||||
return addresses.contains(from);
|
return addresses.contains(from);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Sign for trusted nevmes contacts
|
|
||||||
///
|
|
||||||
/// UI/UX should have some prompt about the implication of trusting keys
|
|
||||||
///
|
|
||||||
/// however that is beyond the scope of this app. nevmes assumes contacts
|
|
||||||
///
|
|
||||||
/// using the app already have some level of knowledge about each other.
|
|
||||||
///
|
|
||||||
/// Without signing the key message encryption and sending is not possible.
|
|
||||||
pub fn trust_gpg(key: String) {
|
|
||||||
gpg::sign_key(&key).unwrap();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Get invoice for jwp creation
|
/// Get invoice for jwp creation
|
||||||
pub async fn request_invoice(contact: String) -> Result<reqres::Invoice, Box<dyn Error>> {
|
pub async fn request_invoice(contact: String) -> Result<reqres::Invoice, Box<dyn Error>> {
|
||||||
let host = utils::get_i2p_http_proxy();
|
let host = utils::get_i2p_http_proxy();
|
||||||
|
@ -189,15 +175,13 @@ pub async fn request_invoice(contact: String) -> Result<reqres::Invoice, Box<dyn
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Send the request to contact to add them. Set the prune arg to 1
|
/// Send the request to contact to add them.
|
||||||
///
|
pub async fn add_contact_request(contact: String) -> Result<Contact, Box<dyn Error>> {
|
||||||
/// for gpg key removal.
|
|
||||||
pub async fn add_contact_request(contact: String, prune: u32) -> Result<Contact, Box<dyn Error>> {
|
|
||||||
let host = utils::get_i2p_http_proxy();
|
let host = utils::get_i2p_http_proxy();
|
||||||
let proxy = reqwest::Proxy::http(&host)?;
|
let proxy = reqwest::Proxy::http(&host)?;
|
||||||
let client = reqwest::Client::builder().proxy(proxy).build();
|
let client = reqwest::Client::builder().proxy(proxy).build();
|
||||||
match client?
|
match client?
|
||||||
.get(format!("http://{}/share/{}", contact, prune))
|
.get(format!("http://{}/share", contact))
|
||||||
.send()
|
.send()
|
||||||
.await
|
.await
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,193 +0,0 @@
|
||||||
use crate::{
|
|
||||||
i2p,
|
|
||||||
utils,
|
|
||||||
};
|
|
||||||
use gpgme::*;
|
|
||||||
use log::{
|
|
||||||
debug,
|
|
||||||
error,
|
|
||||||
info,
|
|
||||||
};
|
|
||||||
use std::{
|
|
||||||
error::Error,
|
|
||||||
fs::File,
|
|
||||||
io::Write,
|
|
||||||
process::Command,
|
|
||||||
};
|
|
||||||
|
|
||||||
// TODO(c2m): remove this module and use monero public keys for text encryption
|
|
||||||
|
|
||||||
/// Searches for key, returns empty string if none exists
|
|
||||||
pub fn find_key() -> Result<String, Box<dyn Error>> {
|
|
||||||
info!("searching for application gpg key");
|
|
||||||
let proto = Protocol::OpenPgp;
|
|
||||||
let mode = KeyListMode::LOCAL;
|
|
||||||
let mut ctx = Context::from_protocol(proto)?;
|
|
||||||
ctx.set_key_list_mode(mode)?;
|
|
||||||
let name = i2p::get_destination(None);
|
|
||||||
let mut keys = ctx.find_keys([&name])?;
|
|
||||||
let mut k: String = utils::empty_string();
|
|
||||||
for key in keys.by_ref().filter_map(|x| x.ok()) {
|
|
||||||
let r_key: &str = key.id().unwrap_or("");
|
|
||||||
if String::from(r_key) != utils::empty_string() {
|
|
||||||
k = String::from(r_key);
|
|
||||||
break;
|
|
||||||
} else {
|
|
||||||
error!("error finding gpg key");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if keys.finish()?.is_truncated() {
|
|
||||||
error!("key listing unexpectedly truncated");
|
|
||||||
}
|
|
||||||
Ok(k)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn gen_key() {
|
|
||||||
info!("creating gpg key");
|
|
||||||
let output = Command::new("gpg")
|
|
||||||
.args(["--batch", "--gen-key", "genkey-batch"])
|
|
||||||
.spawn()
|
|
||||||
.expect("gpg key generation failed");
|
|
||||||
debug!("{:?}", output.stdout);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Export ascii armor app public gpg key
|
|
||||||
pub fn export_key() -> Result<Vec<u8>, Box<dyn Error>> {
|
|
||||||
info!("exporting public key");
|
|
||||||
let mut ctx = Context::from_protocol(Protocol::OpenPgp)?;
|
|
||||||
ctx.set_armor(true);
|
|
||||||
let name = i2p::get_destination(None);
|
|
||||||
let keys = {
|
|
||||||
let mut key_iter = ctx.find_keys([&name])?;
|
|
||||||
let keys: Vec<_> = key_iter.by_ref().collect::<Result<_, _>>()?;
|
|
||||||
if key_iter.finish()?.is_truncated() {
|
|
||||||
Err("key listing unexpectedly truncated")?;
|
|
||||||
}
|
|
||||||
keys
|
|
||||||
};
|
|
||||||
let mode = gpgme::ExportMode::empty();
|
|
||||||
let mut output = Vec::new();
|
|
||||||
ctx.export_keys(&keys, mode, &mut output)
|
|
||||||
.map_err(|e| format!("export failed: {:?}", e))?;
|
|
||||||
Ok(output)
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Import gpg keys from contacts
|
|
||||||
pub fn import_key(cid: String, key: Vec<u8>) -> Result<(), Box<dyn Error>> {
|
|
||||||
info!("importing key: {}", hex::encode(&key));
|
|
||||||
let filename = format!("{}.neveko", &cid);
|
|
||||||
let mut f = File::create(&filename)?;
|
|
||||||
f.write_all(&key)?;
|
|
||||||
let mut ctx = Context::from_protocol(gpgme::Protocol::OpenPgp)?;
|
|
||||||
println!("reading file `{}'", &filename);
|
|
||||||
let input = File::open(&filename)?;
|
|
||||||
let mut data = Data::from_seekable_stream(input)?;
|
|
||||||
let mode = None;
|
|
||||||
mode.map(|m| data.set_encoding(m));
|
|
||||||
ctx.import(&mut data)
|
|
||||||
.map_err(|e| format!("import failed {:?}", e))?;
|
|
||||||
utils::stage_cleanup(filename);
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn encrypt(name: String, body: &Vec<u8>) -> Result<Vec<u8>, Box<dyn Error>> {
|
|
||||||
let proto = Protocol::OpenPgp;
|
|
||||||
let mut ctx = Context::from_protocol(proto)?;
|
|
||||||
ctx.set_armor(true);
|
|
||||||
let keys: Vec<Key> = ctx
|
|
||||||
.find_keys([&name])?
|
|
||||||
.filter_map(|x| x.ok())
|
|
||||||
.filter(|k| k.can_encrypt())
|
|
||||||
.collect();
|
|
||||||
let filename = format!("{}.neveko", name);
|
|
||||||
let mut f = File::create(&filename)?;
|
|
||||||
f.write_all(body)?;
|
|
||||||
let mut input =
|
|
||||||
File::open(&filename).map_err(|e| format!("can't open file `{}': {}", filename, e))?;
|
|
||||||
let mut output = Vec::new();
|
|
||||||
ctx.encrypt(&keys, &mut input, &mut output)
|
|
||||||
.map_err(|e| format!("encrypting failed: {:?}", e))?;
|
|
||||||
debug!(
|
|
||||||
"encrypted message body: {}",
|
|
||||||
String::from_utf8(output.iter().cloned().collect()).unwrap_or(utils::empty_string())
|
|
||||||
);
|
|
||||||
utils::stage_cleanup(filename);
|
|
||||||
Ok(output)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn decrypt(mid: &String, body: &Vec<u8>) -> Result<Vec<u8>, Box<dyn Error>> {
|
|
||||||
// bad things will happen if we get empty bytes
|
|
||||||
if body.is_empty() {
|
|
||||||
log::error!("no bytes to decrypt");
|
|
||||||
return Ok(Vec::new());
|
|
||||||
}
|
|
||||||
let proto = Protocol::OpenPgp;
|
|
||||||
let mut ctx = Context::from_protocol(proto)?;
|
|
||||||
ctx.set_armor(true);
|
|
||||||
let filename = format!("{}.neveko", mid);
|
|
||||||
let mut f = File::create(&filename)?;
|
|
||||||
f.write_all(&body)?;
|
|
||||||
let mut input =
|
|
||||||
File::open(&filename).map_err(|e| format!("can't open file `{}': {}", filename, e))?;
|
|
||||||
let mut output = Vec::new();
|
|
||||||
ctx.decrypt(&mut input, &mut output)
|
|
||||||
.map_err(|e| format!("decrypting failed: {:?}", e))?;
|
|
||||||
utils::stage_cleanup(filename);
|
|
||||||
Ok(output)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn write_gen_batch() -> Result<(), Box<dyn Error>> {
|
|
||||||
let name = i2p::get_destination(None);
|
|
||||||
let data = format!(
|
|
||||||
"%no-protection
|
|
||||||
Key-Type: RSA
|
|
||||||
Key-Length: 4096
|
|
||||||
Subkey-Type: ECC
|
|
||||||
Subkey-Curve: Curve25519
|
|
||||||
Name-Real: {}
|
|
||||||
Name-Email: {}
|
|
||||||
Expire-Date: 0",
|
|
||||||
name, name
|
|
||||||
);
|
|
||||||
let filename = format!("genkey-batch");
|
|
||||||
let mut f = File::create(&filename)?;
|
|
||||||
f.write_all(&data.into_bytes())?;
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn sign_key(key: &str) -> Result<(), Box<dyn Error>> {
|
|
||||||
let mut ctx = Context::from_protocol(gpgme::Protocol::OpenPgp)?;
|
|
||||||
let mut keys = ctx.find_keys([key])?;
|
|
||||||
let mut k: String = utils::empty_string();
|
|
||||||
for ak in keys.by_ref().filter_map(|x| x.ok()) {
|
|
||||||
let r_key: &str = ak.id().unwrap_or("");
|
|
||||||
if String::from(r_key) != utils::empty_string() {
|
|
||||||
k = String::from(r_key);
|
|
||||||
break;
|
|
||||||
} else {
|
|
||||||
error!("error finding gpg key");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
debug!("key-id match: {}", k);
|
|
||||||
let mut k2s_ctx = Context::from_protocol(gpgme::Protocol::OpenPgp)?;
|
|
||||||
let key_to_sign = k2s_ctx
|
|
||||||
.get_key(k)
|
|
||||||
.map_err(|e| format!("no key matched given key-id: {:?}", e))?;
|
|
||||||
let name = Some(i2p::get_destination(None));
|
|
||||||
if let Some(app_key) = name {
|
|
||||||
let key = k2s_ctx
|
|
||||||
.get_secret_key(app_key)
|
|
||||||
.map_err(|e| format!("unable to find signing key: {:?}", e))?;
|
|
||||||
debug!("app key: {:?}", key.id());
|
|
||||||
k2s_ctx
|
|
||||||
.add_signer(&key)
|
|
||||||
.map_err(|e| format!("add_signer() failed: {:?}", e))?;
|
|
||||||
}
|
|
||||||
|
|
||||||
k2s_ctx
|
|
||||||
.sign_key(&key_to_sign, None::<String>, Default::default())
|
|
||||||
.map_err(|e| format!("signing failed: {:?}", e))?;
|
|
||||||
|
|
||||||
println!("Signed key for {}", key);
|
|
||||||
Ok(())
|
|
||||||
}
|
|
|
@ -4,7 +4,6 @@ pub mod contact; // contact repo/service layer
|
||||||
pub mod neveko25519; // cipher logic
|
pub mod neveko25519; // cipher logic
|
||||||
pub mod dispute; // dispute repo/service layer
|
pub mod dispute; // dispute repo/service layer
|
||||||
pub mod db; // lmdb interface
|
pub mod db; // lmdb interface
|
||||||
pub mod gpg; // gpgme interface
|
|
||||||
pub mod i2p; // i2p repo/service layer
|
pub mod i2p; // i2p repo/service layer
|
||||||
pub mod message; // message repo/service layer
|
pub mod message; // message repo/service layer
|
||||||
pub mod models; // db structs
|
pub mod models; // db structs
|
||||||
|
|
|
@ -2,10 +2,10 @@
|
||||||
use crate::{
|
use crate::{
|
||||||
contact,
|
contact,
|
||||||
db,
|
db,
|
||||||
gpg,
|
|
||||||
i2p,
|
i2p,
|
||||||
models::*,
|
models::*,
|
||||||
monero,
|
monero,
|
||||||
|
neveko25519,
|
||||||
order,
|
order,
|
||||||
reqres,
|
reqres,
|
||||||
utils,
|
utils,
|
||||||
|
@ -60,9 +60,12 @@ pub async fn create(m: Json<Message>, jwp: String, m_type: MessageType) -> Messa
|
||||||
}
|
}
|
||||||
info!("creating message: {}", &f_mid);
|
info!("creating message: {}", &f_mid);
|
||||||
let created = chrono::offset::Utc::now().timestamp();
|
let created = chrono::offset::Utc::now().timestamp();
|
||||||
// get contact public gpg key and encrypt the message
|
// get contact public gpg key and encipher the message
|
||||||
debug!("sending message: {:?}", &m);
|
debug!("sending message: {:?}", &m);
|
||||||
let e_body = gpg::encrypt(String::from(&m.to), &m.body).unwrap_or(Vec::new());
|
let contact: Contact = contact::find(&m.to);
|
||||||
|
let hex_nmpk: String = contact.nmpk;
|
||||||
|
let encipher = Some(String::from(neveko25519::ENCIPHER));
|
||||||
|
let e_body = neveko25519::cipher(&hex_nmpk, String::from(&m.body), encipher).await;
|
||||||
let new_message = Message {
|
let new_message = Message {
|
||||||
mid: String::from(&f_mid),
|
mid: String::from(&f_mid),
|
||||||
uid: String::from(&m.uid),
|
uid: String::from(&m.uid),
|
||||||
|
@ -107,7 +110,7 @@ pub async fn rx(m: Json<Message>) {
|
||||||
mid: String::from(&f_mid),
|
mid: String::from(&f_mid),
|
||||||
uid: String::from(crate::RX_MESSAGE_DB_KEY),
|
uid: String::from(crate::RX_MESSAGE_DB_KEY),
|
||||||
from: String::from(&m.from),
|
from: String::from(&m.from),
|
||||||
body: m.body.iter().cloned().collect(),
|
body: String::from(&m.body),
|
||||||
created: chrono::offset::Utc::now().timestamp(),
|
created: chrono::offset::Utc::now().timestamp(),
|
||||||
to: String::from(&m.to),
|
to: String::from(&m.to),
|
||||||
};
|
};
|
||||||
|
@ -127,8 +130,8 @@ pub async fn rx(m: Json<Message>) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Parse the multisig message type and info
|
/// Parse the multisig message type and info
|
||||||
fn parse_multisig_message(mid: String) -> MultisigMessageData {
|
async fn parse_multisig_message(mid: String) -> MultisigMessageData {
|
||||||
let d: reqres::DecryptedMessageBody = decrypt_body(mid);
|
let d: reqres::DecipheredMessageBody = decipher_body(mid).await;
|
||||||
let mut bytes = hex::decode(d.body.into_bytes()).unwrap_or(Vec::new());
|
let mut bytes = hex::decode(d.body.into_bytes()).unwrap_or(Vec::new());
|
||||||
let decoded = String::from_utf8(bytes).unwrap_or(utils::empty_string());
|
let decoded = String::from_utf8(bytes).unwrap_or(utils::empty_string());
|
||||||
let values = decoded.split(":");
|
let values = decoded.split(":");
|
||||||
|
@ -148,7 +151,7 @@ fn parse_multisig_message(mid: String) -> MultisigMessageData {
|
||||||
info = format!("{}:{}", a_info, b_info);
|
info = format!("{}:{}", a_info, b_info);
|
||||||
}
|
}
|
||||||
bytes = Vec::new();
|
bytes = Vec::new();
|
||||||
debug!("zero decryption bytes: {:?}", bytes);
|
debug!("zero decipher bytes: {:?}", bytes);
|
||||||
MultisigMessageData {
|
MultisigMessageData {
|
||||||
info,
|
info,
|
||||||
sub_type,
|
sub_type,
|
||||||
|
@ -160,7 +163,7 @@ fn parse_multisig_message(mid: String) -> MultisigMessageData {
|
||||||
///
|
///
|
||||||
/// Upon multisig message receipt the message is automatically
|
/// Upon multisig message receipt the message is automatically
|
||||||
///
|
///
|
||||||
/// decrypted for convenience sake. The client must determine which
|
/// decipher for convenience sake. The client must determine which
|
||||||
///
|
///
|
||||||
/// .b32.i2p address belongs to the vendor / adjudicator.
|
/// .b32.i2p address belongs to the vendor / adjudicator.
|
||||||
///
|
///
|
||||||
|
@ -192,7 +195,7 @@ pub async fn rx_multisig(m: Json<Message>) {
|
||||||
mid: String::from(&f_mid),
|
mid: String::from(&f_mid),
|
||||||
uid: String::from(crate::RX_MESSAGE_DB_KEY),
|
uid: String::from(crate::RX_MESSAGE_DB_KEY),
|
||||||
from: String::from(&m.from),
|
from: String::from(&m.from),
|
||||||
body: m.body.iter().cloned().collect(),
|
body: String::from(&m.body),
|
||||||
created: chrono::offset::Utc::now().timestamp(),
|
created: chrono::offset::Utc::now().timestamp(),
|
||||||
to: String::from(&m.to),
|
to: String::from(&m.to),
|
||||||
};
|
};
|
||||||
|
@ -211,7 +214,7 @@ pub async fn rx_multisig(m: Json<Message>) {
|
||||||
msg_list, list_key
|
msg_list, list_key
|
||||||
);
|
);
|
||||||
db::Interface::async_write(&s.env, &s.handle, &String::from(list_key), &msg_list).await;
|
db::Interface::async_write(&s.env, &s.handle, &String::from(list_key), &msg_list).await;
|
||||||
let data: MultisigMessageData = parse_multisig_message(new_message.mid);
|
let data: MultisigMessageData = parse_multisig_message(new_message.mid).await;
|
||||||
debug!(
|
debug!(
|
||||||
"writing multisig message type {} for order {}",
|
"writing multisig message type {} for order {}",
|
||||||
&data.sub_type, &data.orid
|
&data.sub_type, &data.orid
|
||||||
|
@ -310,12 +313,14 @@ async fn send_message(out: &Message, jwp: &str, m_type: MessageType) -> Result<(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns decrypted hex string of the encrypted message
|
/// Returns deciphered message
|
||||||
pub fn decrypt_body(mid: String) -> reqres::DecryptedMessageBody {
|
pub async fn decipher_body(mid: String) -> reqres::DecipheredMessageBody {
|
||||||
let m = find(&mid);
|
let m = find(&mid);
|
||||||
let d = gpg::decrypt(&mid, &m.body).unwrap();
|
let contact = contact::find(&m.from);
|
||||||
let body = hex::encode(d);
|
let nmpk = contact.nmpk;
|
||||||
reqres::DecryptedMessageBody { mid, body }
|
let message = String::from(&m.body);
|
||||||
|
let body = neveko25519::cipher(&nmpk, message, None).await;
|
||||||
|
reqres::DecipheredMessageBody { mid, body }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Message deletion
|
/// Message deletion
|
||||||
|
@ -488,7 +493,7 @@ fn is_fts_clear(r: String) -> bool {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Encrypts and sends the output from the monero-rpc
|
/// Enciphers and sends the output from the monero-rpc
|
||||||
///
|
///
|
||||||
/// `prepare_multisig_info` method.
|
/// `prepare_multisig_info` method.
|
||||||
pub async fn send_prepare_info(orid: &String, contact: &String) {
|
pub async fn send_prepare_info(orid: &String, contact: &String) {
|
||||||
|
@ -504,7 +509,7 @@ pub async fn send_prepare_info(orid: &String, contact: &String) {
|
||||||
PREPARE_MSIG, orid, &prepare_info.result.multisig_info
|
PREPARE_MSIG, orid, &prepare_info.result.multisig_info
|
||||||
);
|
);
|
||||||
let message: Message = Message {
|
let message: Message = Message {
|
||||||
body: body_str.into_bytes(),
|
body: body_str,
|
||||||
created: chrono::Utc::now().timestamp(),
|
created: chrono::Utc::now().timestamp(),
|
||||||
to: String::from(contact),
|
to: String::from(contact),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
|
@ -514,7 +519,7 @@ pub async fn send_prepare_info(orid: &String, contact: &String) {
|
||||||
create(j_message, jwp, MessageType::Multisig).await;
|
create(j_message, jwp, MessageType::Multisig).await;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Encrypts and sends the output from the monero-rpc
|
/// Enciphers and sends the output from the monero-rpc
|
||||||
///
|
///
|
||||||
/// `make_multisig_info` method.
|
/// `make_multisig_info` method.
|
||||||
pub async fn send_make_info(orid: &String, contact: &String, info: Vec<String>) {
|
pub async fn send_make_info(orid: &String, contact: &String, info: Vec<String>) {
|
||||||
|
@ -527,7 +532,7 @@ pub async fn send_make_info(orid: &String, contact: &String, info: Vec<String>)
|
||||||
let jwp = db::Interface::read(&s.env, &s.handle, &k);
|
let jwp = db::Interface::read(&s.env, &s.handle, &k);
|
||||||
let body_str = format!("{}:{}:{}", MAKE_MSIG, orid, &make_info.result.multisig_info);
|
let body_str = format!("{}:{}:{}", MAKE_MSIG, orid, &make_info.result.multisig_info);
|
||||||
let message: Message = Message {
|
let message: Message = Message {
|
||||||
body: body_str.into_bytes(),
|
body: body_str,
|
||||||
created: chrono::Utc::now().timestamp(),
|
created: chrono::Utc::now().timestamp(),
|
||||||
to: String::from(contact),
|
to: String::from(contact),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
|
@ -537,7 +542,7 @@ pub async fn send_make_info(orid: &String, contact: &String, info: Vec<String>)
|
||||||
create(j_message, jwp, MessageType::Multisig).await;
|
create(j_message, jwp, MessageType::Multisig).await;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Encrypts and sends the output from the monero-rpc
|
/// Enciphers and sends the output from the monero-rpc
|
||||||
///
|
///
|
||||||
/// `exchange_multisig_keys` method.
|
/// `exchange_multisig_keys` method.
|
||||||
pub async fn send_exchange_info(
|
pub async fn send_exchange_info(
|
||||||
|
@ -564,7 +569,7 @@ pub async fn send_exchange_info(
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
let message: Message = Message {
|
let message: Message = Message {
|
||||||
body: body_str.into_bytes(),
|
body: body_str,
|
||||||
created: chrono::Utc::now().timestamp(),
|
created: chrono::Utc::now().timestamp(),
|
||||||
to: String::from(contact),
|
to: String::from(contact),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
|
@ -574,7 +579,7 @@ pub async fn send_exchange_info(
|
||||||
create(j_message, jwp, MessageType::Multisig).await;
|
create(j_message, jwp, MessageType::Multisig).await;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Encrypts and sends the output from the monero-rpc
|
/// Enciphers and sends the output from the monero-rpc
|
||||||
///
|
///
|
||||||
/// `export_multisig_info` method.
|
/// `export_multisig_info` method.
|
||||||
pub async fn send_export_info(orid: &String, contact: &String) {
|
pub async fn send_export_info(orid: &String, contact: &String) {
|
||||||
|
@ -587,7 +592,7 @@ pub async fn send_export_info(orid: &String, contact: &String) {
|
||||||
let jwp = db::Interface::read(&s.env, &s.handle, &k);
|
let jwp = db::Interface::read(&s.env, &s.handle, &k);
|
||||||
let body_str = format!("{}:{}:{}", EXPORT_MSIG, orid, &exchange_info.result.info);
|
let body_str = format!("{}:{}:{}", EXPORT_MSIG, orid, &exchange_info.result.info);
|
||||||
let message: Message = Message {
|
let message: Message = Message {
|
||||||
body: body_str.into_bytes(),
|
body: body_str,
|
||||||
created: chrono::Utc::now().timestamp(),
|
created: chrono::Utc::now().timestamp(),
|
||||||
to: String::from(contact),
|
to: String::from(contact),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
|
@ -622,7 +627,7 @@ pub async fn send_import_info(orid: &String, info: &Vec<String>) {
|
||||||
|
|
||||||
/// Customer begins multisig orchestration by requesting the prepare info
|
/// Customer begins multisig orchestration by requesting the prepare info
|
||||||
///
|
///
|
||||||
/// from the adjudicator and the vendor. In response they create an encrypted
|
/// from the adjudicator and the vendor. In response they create an enciphered
|
||||||
///
|
///
|
||||||
/// multisig message with the requested data. Customer manages multisig by
|
/// multisig message with the requested data. Customer manages multisig by
|
||||||
///
|
///
|
||||||
|
|
|
@ -91,14 +91,14 @@ pub struct Contact {
|
||||||
pub i2p_address: String,
|
pub i2p_address: String,
|
||||||
pub is_vendor: bool,
|
pub is_vendor: bool,
|
||||||
pub xmr_address: String,
|
pub xmr_address: String,
|
||||||
pub gpg_key: Vec<u8>,
|
pub nmpk: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for Contact {
|
impl Default for Contact {
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
Contact {
|
Contact {
|
||||||
cid: utils::empty_string(),
|
cid: utils::empty_string(),
|
||||||
gpg_key: Vec::new(),
|
nmpk: utils::empty_string(),
|
||||||
i2p_address: utils::empty_string(),
|
i2p_address: utils::empty_string(),
|
||||||
is_vendor: false,
|
is_vendor: false,
|
||||||
xmr_address: utils::empty_string(),
|
xmr_address: utils::empty_string(),
|
||||||
|
@ -108,16 +108,15 @@ impl Default for Contact {
|
||||||
|
|
||||||
impl Contact {
|
impl Contact {
|
||||||
pub fn to_db(c: &Contact) -> String {
|
pub fn to_db(c: &Contact) -> String {
|
||||||
let gpg = hex::encode(&c.gpg_key);
|
|
||||||
format!(
|
format!(
|
||||||
"{}!{}!{}!{}",
|
"{}!{}!{}!{}",
|
||||||
gpg, c.i2p_address, c.is_vendor, c.xmr_address
|
c.nmpk, c.i2p_address, c.is_vendor, c.xmr_address
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
pub fn from_db(k: String, v: String) -> Contact {
|
pub fn from_db(k: String, v: String) -> Contact {
|
||||||
let values = v.split("!");
|
let values = v.split("!");
|
||||||
let mut v: Vec<String> = values.map(|s| String::from(s)).collect();
|
let mut v: Vec<String> = values.map(|s| String::from(s)).collect();
|
||||||
let gpg_key = hex::decode(v.remove(0)).unwrap_or(Vec::new());
|
let nmpk = v.remove(0);
|
||||||
let i2p_address = v.remove(0);
|
let i2p_address = v.remove(0);
|
||||||
let is_vendor = match v.remove(0).parse::<bool>() {
|
let is_vendor = match v.remove(0).parse::<bool>() {
|
||||||
Ok(n) => n,
|
Ok(n) => n,
|
||||||
|
@ -126,7 +125,7 @@ impl Contact {
|
||||||
let xmr_address = v.remove(0);
|
let xmr_address = v.remove(0);
|
||||||
Contact {
|
Contact {
|
||||||
cid: k,
|
cid: k,
|
||||||
gpg_key,
|
nmpk,
|
||||||
i2p_address,
|
i2p_address,
|
||||||
is_vendor,
|
is_vendor,
|
||||||
xmr_address,
|
xmr_address,
|
||||||
|
@ -139,7 +138,7 @@ impl Contact {
|
||||||
pub struct Message {
|
pub struct Message {
|
||||||
pub mid: String,
|
pub mid: String,
|
||||||
pub uid: String,
|
pub uid: String,
|
||||||
pub body: Vec<u8>,
|
pub body: String,
|
||||||
pub created: i64,
|
pub created: i64,
|
||||||
pub from: String,
|
pub from: String,
|
||||||
pub to: String,
|
pub to: String,
|
||||||
|
@ -150,7 +149,7 @@ impl Default for Message {
|
||||||
Message {
|
Message {
|
||||||
mid: utils::empty_string(),
|
mid: utils::empty_string(),
|
||||||
uid: utils::empty_string(),
|
uid: utils::empty_string(),
|
||||||
body: Vec::new(),
|
body: utils::empty_string(),
|
||||||
created: 0,
|
created: 0,
|
||||||
from: utils::empty_string(),
|
from: utils::empty_string(),
|
||||||
to: utils::empty_string(),
|
to: utils::empty_string(),
|
||||||
|
@ -160,14 +159,13 @@ impl Default for Message {
|
||||||
|
|
||||||
impl Message {
|
impl Message {
|
||||||
pub fn to_db(m: &Message) -> String {
|
pub fn to_db(m: &Message) -> String {
|
||||||
let body = hex::encode(&m.body);
|
format!("{}:{}:{}:{}:{}", m.uid, m.body, m.created, m.from, m.to)
|
||||||
format!("{}:{}:{}:{}:{}", m.uid, body, m.created, m.from, m.to)
|
|
||||||
}
|
}
|
||||||
pub fn from_db(k: String, v: String) -> Message {
|
pub fn from_db(k: String, v: String) -> Message {
|
||||||
let values = v.split(":");
|
let values = v.split(":");
|
||||||
let mut v: Vec<String> = values.map(|s| String::from(s)).collect();
|
let mut v: Vec<String> = values.map(|s| String::from(s)).collect();
|
||||||
let uid = v.remove(0);
|
let uid = v.remove(0);
|
||||||
let body = hex::decode(v.remove(0)).unwrap_or(Vec::new());
|
let body = v.remove(0);
|
||||||
let created_str = v.remove(0);
|
let created_str = v.remove(0);
|
||||||
let created = match created_str.parse::<i64>() {
|
let created = match created_str.parse::<i64>() {
|
||||||
Ok(n) => n,
|
Ok(n) => n,
|
||||||
|
@ -325,8 +323,8 @@ pub struct Order {
|
||||||
pub adjudicator_kex_3: String,
|
pub adjudicator_kex_3: String,
|
||||||
pub adjudicator_msig_make: String,
|
pub adjudicator_msig_make: String,
|
||||||
pub adjudicator_msig_prepare: String,
|
pub adjudicator_msig_prepare: String,
|
||||||
/// Address gpg key encrypted bytes
|
/// Address enciphered by nmpk
|
||||||
pub ship_address: Vec<u8>,
|
pub ship_address: String,
|
||||||
pub ship_date: i64,
|
pub ship_date: i64,
|
||||||
/// This is the final destination for the payment
|
/// This is the final destination for the payment
|
||||||
pub subaddress: String,
|
pub subaddress: String,
|
||||||
|
@ -362,7 +360,7 @@ impl Default for Order {
|
||||||
adjudicator_kex_3: utils::empty_string(),
|
adjudicator_kex_3: utils::empty_string(),
|
||||||
adjudicator_msig_make: utils::empty_string(),
|
adjudicator_msig_make: utils::empty_string(),
|
||||||
adjudicator_msig_prepare: utils::empty_string(),
|
adjudicator_msig_prepare: utils::empty_string(),
|
||||||
ship_address: Vec::new(),
|
ship_address: utils::empty_string(),
|
||||||
ship_date: 0,
|
ship_date: 0,
|
||||||
subaddress: utils::empty_string(),
|
subaddress: utils::empty_string(),
|
||||||
status: utils::empty_string(),
|
status: utils::empty_string(),
|
||||||
|
@ -379,7 +377,6 @@ impl Default for Order {
|
||||||
|
|
||||||
impl Order {
|
impl Order {
|
||||||
pub fn to_db(o: &Order) -> String {
|
pub fn to_db(o: &Order) -> String {
|
||||||
let ship_address = hex::encode(&o.ship_address);
|
|
||||||
format!(
|
format!(
|
||||||
"{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}",
|
"{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}:{}",
|
||||||
o.cid,
|
o.cid,
|
||||||
|
@ -398,7 +395,7 @@ impl Order {
|
||||||
o.adjudicator_kex_1,
|
o.adjudicator_kex_1,
|
||||||
o.adjudicator_kex_2,
|
o.adjudicator_kex_2,
|
||||||
o.adjudicator_kex_3,
|
o.adjudicator_kex_3,
|
||||||
ship_address,
|
o.ship_address,
|
||||||
o.ship_date,
|
o.ship_date,
|
||||||
o.subaddress,
|
o.subaddress,
|
||||||
o.status,
|
o.status,
|
||||||
|
@ -438,7 +435,7 @@ impl Order {
|
||||||
let adjudicator_kex_1 = v.remove(0);
|
let adjudicator_kex_1 = v.remove(0);
|
||||||
let adjudicator_kex_2 = v.remove(0);
|
let adjudicator_kex_2 = v.remove(0);
|
||||||
let adjudicator_kex_3 = v.remove(0);
|
let adjudicator_kex_3 = v.remove(0);
|
||||||
let ship_address = hex::decode(v.remove(0)).unwrap_or(Vec::new());
|
let ship_address = v.remove(0);
|
||||||
let ship_date = match v.remove(0).parse::<i64>() {
|
let ship_date = match v.remove(0).parse::<i64>() {
|
||||||
Ok(d) => d,
|
Ok(d) => d,
|
||||||
Err(_) => 0,
|
Err(_) => 0,
|
||||||
|
@ -507,7 +504,7 @@ impl Order {
|
||||||
adjudicator_kex_3: String::from(&o.adjudicator_kex_3),
|
adjudicator_kex_3: String::from(&o.adjudicator_kex_3),
|
||||||
adjudicator_msig_make: String::from(&o.adjudicator_msig_make),
|
adjudicator_msig_make: String::from(&o.adjudicator_msig_make),
|
||||||
adjudicator_msig_prepare: String::from(&o.adjudicator_msig_prepare),
|
adjudicator_msig_prepare: String::from(&o.adjudicator_msig_prepare),
|
||||||
ship_address: o.ship_address.iter().cloned().collect(),
|
ship_address: String::from(&o.ship_address),
|
||||||
ship_date: o.ship_date,
|
ship_date: o.ship_date,
|
||||||
subaddress: String::from(&o.subaddress),
|
subaddress: String::from(&o.subaddress),
|
||||||
status: String::from(&o.status),
|
status: String::from(&o.status),
|
||||||
|
|
|
@ -78,7 +78,7 @@ fn hash_to_scalar(s: Vec<&str>) -> Scalar {
|
||||||
/// Multiply the NMSK by the ed25519 basepoint to create the
|
/// Multiply the NMSK by the ed25519 basepoint to create the
|
||||||
///
|
///
|
||||||
/// Neveko Message Public Key.
|
/// Neveko Message Public Key.
|
||||||
async fn generate_neveko_message_keys() -> NevekoMessageKeys {
|
pub async fn generate_neveko_message_keys() -> NevekoMessageKeys {
|
||||||
log::info!("generating neveko message keys");
|
log::info!("generating neveko message keys");
|
||||||
let password = std::env::var(crate::MONERO_WALLET_PASSWORD).unwrap_or(utils::empty_string());
|
let password = std::env::var(crate::MONERO_WALLET_PASSWORD).unwrap_or(utils::empty_string());
|
||||||
let filename = String::from(crate::APP_NAME);
|
let filename = String::from(crate::APP_NAME);
|
||||||
|
@ -109,9 +109,9 @@ async fn generate_neveko_message_keys() -> NevekoMessageKeys {
|
||||||
///
|
///
|
||||||
/// `m = "some message to encipher"`
|
/// `m = "some message to encipher"`
|
||||||
///
|
///
|
||||||
/// Return `x = m + h` as a string of the enciphered message
|
/// Return `x = m + h` as a string of the enciphered message.
|
||||||
///
|
///
|
||||||
/// encipher `true` will encipher otherwise decipher
|
/// Pass `None` to encipher to perform deciphering.
|
||||||
pub async fn cipher(hex_nmpk: &String, message: String, encipher: Option<String>) -> String {
|
pub async fn cipher(hex_nmpk: &String, message: String, encipher: Option<String>) -> String {
|
||||||
let unwrap_encipher: String = encipher.unwrap_or(utils::empty_string());
|
let unwrap_encipher: String = encipher.unwrap_or(utils::empty_string());
|
||||||
let keys: NevekoMessageKeys = generate_neveko_message_keys().await;
|
let keys: NevekoMessageKeys = generate_neveko_message_keys().await;
|
||||||
|
@ -192,7 +192,7 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
pub fn encipher_decipher() {
|
pub fn encipher_decipher() {
|
||||||
let message = String::from(
|
let message = String::from(
|
||||||
"This is message that will be encrypted by the network.
|
"This is message that will be enciphered by the network.
|
||||||
it is really long for testing and breaking stuff",
|
it is really long for testing and breaking stuff",
|
||||||
);
|
);
|
||||||
let do_encipher = Some(String::from(ENCIPHER));
|
let do_encipher = Some(String::from(ENCIPHER));
|
||||||
|
|
|
@ -3,10 +3,10 @@ use std::error::Error;
|
||||||
use crate::{
|
use crate::{
|
||||||
contact,
|
contact,
|
||||||
db,
|
db,
|
||||||
gpg,
|
|
||||||
i2p,
|
i2p,
|
||||||
models::*,
|
models::*,
|
||||||
monero,
|
monero,
|
||||||
|
neveko25519,
|
||||||
order,
|
order,
|
||||||
product,
|
product,
|
||||||
reqres,
|
reqres,
|
||||||
|
@ -56,7 +56,7 @@ pub async fn create(j_order: Json<reqres::OrderRequest>) -> Order {
|
||||||
cid: String::from(&j_order.cid),
|
cid: String::from(&j_order.cid),
|
||||||
pid: String::from(&j_order.pid),
|
pid: String::from(&j_order.pid),
|
||||||
date: ts,
|
date: ts,
|
||||||
ship_address: j_order.ship_address.iter().cloned().collect(),
|
ship_address: String::from(&j_order.ship_address),
|
||||||
subaddress,
|
subaddress,
|
||||||
status: StatusType::MultisigMissing.value(),
|
status: StatusType::MultisigMissing.value(),
|
||||||
quantity: j_order.quantity,
|
quantity: j_order.quantity,
|
||||||
|
@ -325,6 +325,8 @@ pub async fn cancel_order(orid: &String, signature: &String) -> Order {
|
||||||
pub async fn validate_order_for_ship(orid: &String) -> reqres::FinalizeOrderResponse {
|
pub async fn validate_order_for_ship(orid: &String) -> reqres::FinalizeOrderResponse {
|
||||||
info!("validating order for shipment");
|
info!("validating order for shipment");
|
||||||
let m_order: Order = find(orid);
|
let m_order: Order = find(orid);
|
||||||
|
let contact: Contact = contact::find(&m_order.cid);
|
||||||
|
let hex_nmpk: String = contact.nmpk;
|
||||||
let s = db::Interface::async_open().await;
|
let s = db::Interface::async_open().await;
|
||||||
let k = String::from(crate::DELIVERY_INFO_DB_KEY);
|
let k = String::from(crate::DELIVERY_INFO_DB_KEY);
|
||||||
let delivery_info: String = db::Interface::async_read(&s.env, &s.handle, &k).await;
|
let delivery_info: String = db::Interface::async_read(&s.env, &s.handle, &k).await;
|
||||||
|
@ -344,9 +346,15 @@ pub async fn validate_order_for_ship(orid: &String) -> reqres::FinalizeOrderResp
|
||||||
j_order.status = StatusType::Shipped.value();
|
j_order.status = StatusType::Shipped.value();
|
||||||
order::modify(Json(j_order));
|
order::modify(Json(j_order));
|
||||||
}
|
}
|
||||||
|
let e_delivery_info: String = neveko25519::cipher(
|
||||||
|
&hex_nmpk,
|
||||||
|
hex::encode(delivery_info),
|
||||||
|
Some(String::from(neveko25519::ENCIPHER)),
|
||||||
|
)
|
||||||
|
.await;
|
||||||
reqres::FinalizeOrderResponse {
|
reqres::FinalizeOrderResponse {
|
||||||
orid: String::from(orid),
|
orid: String::from(orid),
|
||||||
delivery_info: hex::decode(delivery_info).unwrap_or(Vec::new()),
|
delivery_info: e_delivery_info,
|
||||||
vendor_update_success: false,
|
vendor_update_success: false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -386,8 +394,8 @@ pub async fn trigger_nasr(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Write encrypted delivery info to lmdb. Once the customer releases the signed
|
/// Write enciphered delivery info to lmdb. Once the customer releases the
|
||||||
/// txset
|
/// signed txset
|
||||||
///
|
///
|
||||||
/// This will also attempt to notify the customer to trigger the NASR (neveko
|
/// This will also attempt to notify the customer to trigger the NASR (neveko
|
||||||
/// auto-ship request).
|
/// auto-ship request).
|
||||||
|
@ -396,14 +404,20 @@ pub async fn trigger_nasr(
|
||||||
/// etc.)
|
/// etc.)
|
||||||
pub async fn upload_delivery_info(
|
pub async fn upload_delivery_info(
|
||||||
orid: &String,
|
orid: &String,
|
||||||
delivery_info: &Vec<u8>,
|
delivery_info: &String,
|
||||||
) -> reqres::FinalizeOrderResponse {
|
) -> reqres::FinalizeOrderResponse {
|
||||||
info!("uploading delivery info");
|
info!("uploading delivery info");
|
||||||
let lookup: Order = order::find(orid);
|
let lookup: Order = order::find(orid);
|
||||||
let e_delivery_info: Vec<u8> =
|
let contact: Contact = contact::find(&lookup.cid);
|
||||||
gpg::encrypt(String::from(&lookup.cid), &delivery_info).unwrap_or(Vec::new());
|
let hex_nmpk: String = contact.nmpk;
|
||||||
|
let e_delivery_info: String = neveko25519::cipher(
|
||||||
|
&hex_nmpk,
|
||||||
|
hex::encode(delivery_info),
|
||||||
|
Some(String::from(neveko25519::ENCIPHER)),
|
||||||
|
)
|
||||||
|
.await;
|
||||||
if e_delivery_info.is_empty() {
|
if e_delivery_info.is_empty() {
|
||||||
error!("unable to encrypt delivery info");
|
error!("unable to encipher delivery info");
|
||||||
}
|
}
|
||||||
// get draft payment txset
|
// get draft payment txset
|
||||||
let wallet_password = utils::empty_string();
|
let wallet_password = utils::empty_string();
|
||||||
|
@ -421,7 +435,7 @@ pub async fn upload_delivery_info(
|
||||||
m_order.status = StatusType::Shipped.value();
|
m_order.status = StatusType::Shipped.value();
|
||||||
m_order.ship_date = chrono::offset::Utc::now().timestamp();
|
m_order.ship_date = chrono::offset::Utc::now().timestamp();
|
||||||
m_order.vend_msig_txset = sweep.result.multisig_txset;
|
m_order.vend_msig_txset = sweep.result.multisig_txset;
|
||||||
// delivery info will be stored encrypted and separate from the rest of the
|
// delivery info will be stored enciphered and separate from the rest of the
|
||||||
// order
|
// order
|
||||||
let s = db::Interface::async_open().await;
|
let s = db::Interface::async_open().await;
|
||||||
let k = String::from(crate::DELIVERY_INFO_DB_KEY);
|
let k = String::from(crate::DELIVERY_INFO_DB_KEY);
|
||||||
|
@ -439,7 +453,7 @@ pub async fn upload_delivery_info(
|
||||||
return Default::default();
|
return Default::default();
|
||||||
}
|
}
|
||||||
reqres::FinalizeOrderResponse {
|
reqres::FinalizeOrderResponse {
|
||||||
delivery_info: delivery_info.to_vec(),
|
delivery_info: e_delivery_info,
|
||||||
orid: String::from(orid),
|
orid: String::from(orid),
|
||||||
vendor_update_success: false,
|
vendor_update_success: false,
|
||||||
}
|
}
|
||||||
|
|
|
@ -1204,17 +1204,17 @@ impl Default for XmrRpcQueryKeyResponse {
|
||||||
}
|
}
|
||||||
// END XMR Structs
|
// END XMR Structs
|
||||||
|
|
||||||
/// Container for the message decryption
|
/// Container for the message decipher
|
||||||
#[derive(Serialize, Deserialize)]
|
#[derive(Serialize, Deserialize)]
|
||||||
#[serde(crate = "rocket::serde")]
|
#[serde(crate = "rocket::serde")]
|
||||||
pub struct DecryptedMessageBody {
|
pub struct DecipheredMessageBody {
|
||||||
pub mid: String,
|
pub mid: String,
|
||||||
pub body: String,
|
pub body: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for DecryptedMessageBody {
|
impl Default for DecipheredMessageBody {
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
DecryptedMessageBody {
|
DecipheredMessageBody {
|
||||||
mid: utils::empty_string(),
|
mid: utils::empty_string(),
|
||||||
body: utils::empty_string(),
|
body: utils::empty_string(),
|
||||||
}
|
}
|
||||||
|
@ -1279,7 +1279,7 @@ pub struct OrderRequest {
|
||||||
pub cid: String,
|
pub cid: String,
|
||||||
pub adjudicator: String,
|
pub adjudicator: String,
|
||||||
pub pid: String,
|
pub pid: String,
|
||||||
pub ship_address: Vec<u8>,
|
pub ship_address: String,
|
||||||
pub quantity: u128,
|
pub quantity: u128,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1289,7 +1289,7 @@ impl Default for OrderRequest {
|
||||||
cid: utils::empty_string(),
|
cid: utils::empty_string(),
|
||||||
adjudicator: utils::empty_string(),
|
adjudicator: utils::empty_string(),
|
||||||
pid: utils::empty_string(),
|
pid: utils::empty_string(),
|
||||||
ship_address: Vec::new(),
|
ship_address: utils::empty_string(),
|
||||||
quantity: 0,
|
quantity: 0,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1346,8 +1346,8 @@ impl Default for SignAndSubmitRequest {
|
||||||
#[serde(crate = "rocket::serde")]
|
#[serde(crate = "rocket::serde")]
|
||||||
pub struct FinalizeOrderResponse {
|
pub struct FinalizeOrderResponse {
|
||||||
pub orid: String,
|
pub orid: String,
|
||||||
/// This is encrypted by the customer NEVEKO gpg key
|
/// This is enciphered by the customer Neveko Message Secret Key
|
||||||
pub delivery_info: Vec<u8>,
|
pub delivery_info: String,
|
||||||
/// This is used to finalize delivery confirmations
|
/// This is used to finalize delivery confirmations
|
||||||
pub vendor_update_success: bool,
|
pub vendor_update_success: bool,
|
||||||
}
|
}
|
||||||
|
@ -1356,7 +1356,7 @@ impl Default for FinalizeOrderResponse {
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
FinalizeOrderResponse {
|
FinalizeOrderResponse {
|
||||||
orid: utils::empty_string(),
|
orid: utils::empty_string(),
|
||||||
delivery_info: Vec::new(),
|
delivery_info: utils::empty_string(),
|
||||||
vendor_update_success: false,
|
vendor_update_success: false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,6 @@ use crate::{
|
||||||
contact,
|
contact,
|
||||||
db,
|
db,
|
||||||
dispute,
|
dispute,
|
||||||
gpg,
|
|
||||||
i2p,
|
i2p,
|
||||||
message,
|
message,
|
||||||
models,
|
models,
|
||||||
|
@ -20,7 +19,6 @@ use log::{
|
||||||
};
|
};
|
||||||
use rand_core::RngCore;
|
use rand_core::RngCore;
|
||||||
use rocket::serde::json::Json;
|
use rocket::serde::json::Json;
|
||||||
use std::time::Duration;
|
|
||||||
extern crate rpassword;
|
extern crate rpassword;
|
||||||
use rpassword::read_password;
|
use rpassword::read_password;
|
||||||
use std::io::Write;
|
use std::io::Write;
|
||||||
|
@ -41,8 +39,6 @@ pub struct ContactStatus {
|
||||||
pub jwp: String,
|
pub jwp: String,
|
||||||
/// Alias for contact
|
/// Alias for contact
|
||||||
pub nick: String,
|
pub nick: String,
|
||||||
/// Must sign key for contacts befor messages can be sent
|
|
||||||
pub signed_key: bool,
|
|
||||||
/// transaction proof signature of current status check
|
/// transaction proof signature of current status check
|
||||||
pub txp: String,
|
pub txp: String,
|
||||||
}
|
}
|
||||||
|
@ -56,7 +52,6 @@ impl Default for ContactStatus {
|
||||||
is_vendor: false,
|
is_vendor: false,
|
||||||
jwp: utils::empty_string(),
|
jwp: utils::empty_string(),
|
||||||
nick: String::from("anon"),
|
nick: String::from("anon"),
|
||||||
signed_key: false,
|
|
||||||
txp: utils::empty_string(),
|
txp: utils::empty_string(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -306,7 +301,7 @@ pub fn contact_to_json(c: &models::Contact) -> Json<models::Contact> {
|
||||||
i2p_address: String::from(&c.i2p_address),
|
i2p_address: String::from(&c.i2p_address),
|
||||||
is_vendor: c.is_vendor,
|
is_vendor: c.is_vendor,
|
||||||
xmr_address: String::from(&c.xmr_address),
|
xmr_address: String::from(&c.xmr_address),
|
||||||
gpg_key: c.gpg_key.iter().cloned().collect(),
|
nmpk: String::from(&c.nmpk),
|
||||||
};
|
};
|
||||||
Json(r_contact)
|
Json(r_contact)
|
||||||
}
|
}
|
||||||
|
@ -314,7 +309,7 @@ pub fn contact_to_json(c: &models::Contact) -> Json<models::Contact> {
|
||||||
/// convert message to json so only core module does the work
|
/// convert message to json so only core module does the work
|
||||||
pub fn message_to_json(m: &models::Message) -> Json<models::Message> {
|
pub fn message_to_json(m: &models::Message) -> Json<models::Message> {
|
||||||
let r_message: models::Message = models::Message {
|
let r_message: models::Message = models::Message {
|
||||||
body: m.body.iter().cloned().collect(),
|
body: String::from(&m.body),
|
||||||
mid: String::from(&m.mid),
|
mid: String::from(&m.mid),
|
||||||
uid: utils::empty_string(),
|
uid: utils::empty_string(),
|
||||||
created: m.created,
|
created: m.created,
|
||||||
|
@ -343,7 +338,7 @@ pub fn order_to_json(o: &reqres::OrderRequest) -> Json<reqres::OrderRequest> {
|
||||||
cid: String::from(&o.cid),
|
cid: String::from(&o.cid),
|
||||||
adjudicator: String::from(&o.adjudicator),
|
adjudicator: String::from(&o.adjudicator),
|
||||||
pid: String::from(&o.pid),
|
pid: String::from(&o.pid),
|
||||||
ship_address: o.ship_address.iter().cloned().collect(),
|
ship_address: String::from(&o.ship_address),
|
||||||
quantity: o.quantity,
|
quantity: o.quantity,
|
||||||
};
|
};
|
||||||
Json(r_order)
|
Json(r_order)
|
||||||
|
@ -369,8 +364,8 @@ pub const fn string_limit() -> usize {
|
||||||
512
|
512
|
||||||
}
|
}
|
||||||
|
|
||||||
pub const fn gpg_key_limit() -> usize {
|
pub const fn npmk_limit() -> usize {
|
||||||
4096
|
128
|
||||||
}
|
}
|
||||||
|
|
||||||
pub const fn message_limit() -> usize {
|
pub const fn message_limit() -> usize {
|
||||||
|
@ -381,20 +376,6 @@ pub const fn image_limit() -> usize {
|
||||||
9999
|
9999
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Generate application gpg keys at startup if none exist
|
|
||||||
async fn gen_app_gpg() {
|
|
||||||
let mut gpg_key = gpg::find_key().unwrap_or(utils::empty_string());
|
|
||||||
if gpg_key == utils::empty_string() {
|
|
||||||
info!("no gpg key found for neveko, creating it...");
|
|
||||||
// wait for key gen
|
|
||||||
gpg::write_gen_batch().unwrap();
|
|
||||||
gpg::gen_key();
|
|
||||||
tokio::time::sleep(Duration::new(9, 0)).await;
|
|
||||||
gpg_key = gpg::find_key().unwrap_or(utils::empty_string());
|
|
||||||
}
|
|
||||||
debug!("gpg key: {}", gpg_key);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Handles panic! for missing wallet directory
|
/// Handles panic! for missing wallet directory
|
||||||
fn create_wallet_dir() {
|
fn create_wallet_dir() {
|
||||||
let file_path = format!(
|
let file_path = format!(
|
||||||
|
@ -576,7 +557,6 @@ pub async fn start_up() {
|
||||||
if !args.i2p_advanced {
|
if !args.i2p_advanced {
|
||||||
i2p::start().await;
|
i2p::start().await;
|
||||||
}
|
}
|
||||||
gen_app_gpg().await;
|
|
||||||
gen_app_wallet(&wallet_password).await;
|
gen_app_wallet(&wallet_password).await;
|
||||||
start_gui();
|
start_gui();
|
||||||
// start async background tasks here
|
// start async background tasks here
|
||||||
|
|
156
neveko-gui/Cargo.lock
generated
156
neveko-gui/Cargo.lock
generated
|
@ -388,12 +388,6 @@ dependencies = [
|
||||||
"objc2-encode",
|
"objc2-encode",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "build-rs"
|
|
||||||
version = "0.1.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b00b8763668c99f8d9101b8a0dd82106f58265464531a79b2cef0d9a30c17dd2"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bumpalo"
|
name = "bumpalo"
|
||||||
version = "3.12.1"
|
version = "3.12.1"
|
||||||
|
@ -469,16 +463,6 @@ dependencies = [
|
||||||
"nom",
|
"nom",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "cfg-expr"
|
|
||||||
version = "0.15.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "c8790cf1286da485c72cf5fc7aeba308438800036ec67d89425924c4807268c9"
|
|
||||||
dependencies = [
|
|
||||||
"smallvec",
|
|
||||||
"target-lexicon",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cfg-if"
|
name = "cfg-if"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
|
@ -648,15 +632,6 @@ dependencies = [
|
||||||
"wasm-bindgen",
|
"wasm-bindgen",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "conv"
|
|
||||||
version = "0.3.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "78ff10625fd0ac447827aa30ea8b861fead473bb60aeb73af6c1c58caf0d1299"
|
|
||||||
dependencies = [
|
|
||||||
"custom_derive",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cookie"
|
name = "cookie"
|
||||||
version = "0.17.0"
|
version = "0.17.0"
|
||||||
|
@ -780,16 +755,6 @@ dependencies = [
|
||||||
"typenum",
|
"typenum",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "cstr-argument"
|
|
||||||
version = "0.1.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b6bd9c8e659a473bce955ae5c35b116af38af11a7acb0b480e01f3ed348aeb40"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-if",
|
|
||||||
"memchr",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "curve25519-dalek"
|
name = "curve25519-dalek"
|
||||||
version = "4.1.2"
|
version = "4.1.2"
|
||||||
|
@ -817,12 +782,6 @@ dependencies = [
|
||||||
"syn 2.0.58",
|
"syn 2.0.58",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "custom_derive"
|
|
||||||
version = "0.1.7"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "ef8ae57c4978a2acd8b869ce6b9ca1dfe817bff704c220209fdef2c0b75a01b9"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cxx"
|
name = "cxx"
|
||||||
version = "1.0.94"
|
version = "1.0.94"
|
||||||
|
@ -1315,7 +1274,7 @@ dependencies = [
|
||||||
"atomic",
|
"atomic",
|
||||||
"pear",
|
"pear",
|
||||||
"serde",
|
"serde",
|
||||||
"toml 0.5.11",
|
"toml",
|
||||||
"uncased",
|
"uncased",
|
||||||
"version_check",
|
"version_check",
|
||||||
]
|
]
|
||||||
|
@ -1593,47 +1552,6 @@ dependencies = [
|
||||||
"gl_generator",
|
"gl_generator",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "gpg-error"
|
|
||||||
version = "0.6.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "d89aaeddbfb92313378c58e98abadaaa34082b3855f1d455576eeeda08bd592c"
|
|
||||||
dependencies = [
|
|
||||||
"libgpg-error-sys",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "gpgme"
|
|
||||||
version = "0.11.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "57539732fbe58eacdb984734b72b470ed0bca3ab7a49813271878567025ac44f"
|
|
||||||
dependencies = [
|
|
||||||
"bitflags 1.3.2",
|
|
||||||
"cfg-if",
|
|
||||||
"conv",
|
|
||||||
"cstr-argument",
|
|
||||||
"gpg-error",
|
|
||||||
"gpgme-sys",
|
|
||||||
"libc 0.2.142",
|
|
||||||
"memoffset 0.7.1",
|
|
||||||
"once_cell",
|
|
||||||
"smallvec",
|
|
||||||
"static_assertions",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "gpgme-sys"
|
|
||||||
version = "0.11.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "509223d659c06e4a26229437d6ac917723f02d31917c86c6ecd50e8369741cf7"
|
|
||||||
dependencies = [
|
|
||||||
"build-rs",
|
|
||||||
"libc 0.2.142",
|
|
||||||
"libgpg-error-sys",
|
|
||||||
"system-deps",
|
|
||||||
"winreg",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "gpu-alloc"
|
name = "gpu-alloc"
|
||||||
version = "0.5.3"
|
version = "0.5.3"
|
||||||
|
@ -2082,17 +2000,6 @@ version = "0.2.142"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "6a987beff54b60ffa6d51982e1aa1146bc42f19bd26be28b0586f252fccf5317"
|
checksum = "6a987beff54b60ffa6d51982e1aa1146bc42f19bd26be28b0586f252fccf5317"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "libgpg-error-sys"
|
|
||||||
version = "0.6.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "c97079310f39c835d3bd73578379d040f779614bb331c7ffbb6630fee6420290"
|
|
||||||
dependencies = [
|
|
||||||
"build-rs",
|
|
||||||
"system-deps",
|
|
||||||
"winreg",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "liblmdb-sys"
|
name = "liblmdb-sys"
|
||||||
version = "0.2.2"
|
version = "0.2.2"
|
||||||
|
@ -2236,15 +2143,6 @@ dependencies = [
|
||||||
"autocfg",
|
"autocfg",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "memoffset"
|
|
||||||
version = "0.7.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4"
|
|
||||||
dependencies = [
|
|
||||||
"autocfg",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "memoffset"
|
name = "memoffset"
|
||||||
version = "0.8.0"
|
version = "0.8.0"
|
||||||
|
@ -2455,7 +2353,6 @@ dependencies = [
|
||||||
"curve25519-dalek",
|
"curve25519-dalek",
|
||||||
"diqwest",
|
"diqwest",
|
||||||
"env_logger",
|
"env_logger",
|
||||||
"gpgme",
|
|
||||||
"hex",
|
"hex",
|
||||||
"hmac",
|
"hmac",
|
||||||
"jwt",
|
"jwt",
|
||||||
|
@ -3487,15 +3384,6 @@ dependencies = [
|
||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "serde_spanned"
|
|
||||||
version = "0.6.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "0efd8caf556a6cebd3b285caf480045fcc1ac04f6bd786b09a6f11af30c4fcf4"
|
|
||||||
dependencies = [
|
|
||||||
"serde",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde_urlencoded"
|
name = "serde_urlencoded"
|
||||||
version = "0.7.1"
|
version = "0.7.1"
|
||||||
|
@ -3731,25 +3619,6 @@ dependencies = [
|
||||||
"unicode-ident",
|
"unicode-ident",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "system-deps"
|
|
||||||
version = "6.0.5"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "d0fe581ad25d11420b873cf9aedaca0419c2b411487b134d4d21065f3d092055"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-expr",
|
|
||||||
"heck",
|
|
||||||
"pkg-config",
|
|
||||||
"toml 0.7.3",
|
|
||||||
"version-compare",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "target-lexicon"
|
|
||||||
version = "0.12.7"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "fd1ba337640d60c3e96bc6f0638a939b9c9a7f2c316a1598c279828b3d1dc8c5"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tempfile"
|
name = "tempfile"
|
||||||
version = "3.5.0"
|
version = "3.5.0"
|
||||||
|
@ -3973,26 +3842,11 @@ dependencies = [
|
||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "toml"
|
|
||||||
version = "0.7.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b403acf6f2bb0859c93c7f0d967cb4a75a7ac552100f9322faf64dc047669b21"
|
|
||||||
dependencies = [
|
|
||||||
"serde",
|
|
||||||
"serde_spanned",
|
|
||||||
"toml_datetime",
|
|
||||||
"toml_edit",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "toml_datetime"
|
name = "toml_datetime"
|
||||||
version = "0.6.1"
|
version = "0.6.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622"
|
checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622"
|
||||||
dependencies = [
|
|
||||||
"serde",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "toml_edit"
|
name = "toml_edit"
|
||||||
|
@ -4001,8 +3855,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13"
|
checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"indexmap",
|
"indexmap",
|
||||||
"serde",
|
|
||||||
"serde_spanned",
|
|
||||||
"toml_datetime",
|
"toml_datetime",
|
||||||
"winnow",
|
"winnow",
|
||||||
]
|
]
|
||||||
|
@ -4223,12 +4075,6 @@ version = "0.8.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
|
checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "version-compare"
|
|
||||||
version = "0.1.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "version_check"
|
name = "version_check"
|
||||||
version = "0.9.4"
|
version = "0.9.4"
|
||||||
|
|
|
@ -326,7 +326,6 @@ impl eframe::App for AddressBookApp {
|
||||||
ui.label(format!("tx proof: {}", self.status.txp));
|
ui.label(format!("tx proof: {}", self.status.txp));
|
||||||
ui.label(format!("jwp: {}", self.status.jwp));
|
ui.label(format!("jwp: {}", self.status.jwp));
|
||||||
ui.label(format!("expiration: {}", self.status.h_exp));
|
ui.label(format!("expiration: {}", self.status.h_exp));
|
||||||
ui.label(format!("signed key: {}", self.status.signed_key));
|
|
||||||
if self.status.jwp == utils::empty_string()
|
if self.status.jwp == utils::empty_string()
|
||||||
&& !self.is_pinging
|
&& !self.is_pinging
|
||||||
&& status == "online"
|
&& status == "online"
|
||||||
|
@ -344,17 +343,6 @@ impl eframe::App for AddressBookApp {
|
||||||
self.is_approving_jwp = true;
|
self.is_approving_jwp = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if !self.status.signed_key {
|
|
||||||
if ui.button("Sign Key").clicked() {
|
|
||||||
contact::trust_gpg(self.status.i2p.clone());
|
|
||||||
utils::write_gui_db(
|
|
||||||
String::from(crate::GUI_SIGNED_GPG_DB_KEY),
|
|
||||||
self.status.i2p.clone(),
|
|
||||||
String::from(crate::SIGNED_GPG_KEY),
|
|
||||||
);
|
|
||||||
self.showing_status = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
let failed_to_prove = self.status.txp != utils::empty_string()
|
let failed_to_prove = self.status.txp != utils::empty_string()
|
||||||
&& self.status.jwp == utils::empty_string();
|
&& self.status.jwp == utils::empty_string();
|
||||||
if self.status.jwp != utils::empty_string() || failed_to_prove {
|
if self.status.jwp != utils::empty_string() || failed_to_prove {
|
||||||
|
@ -418,7 +406,7 @@ impl eframe::App for AddressBookApp {
|
||||||
let i2p_address = self.s_contact.i2p_address.clone();
|
let i2p_address = self.s_contact.i2p_address.clone();
|
||||||
let is_vendor = self.s_contact.is_vendor;
|
let is_vendor = self.s_contact.is_vendor;
|
||||||
let xmr_address = self.s_contact.xmr_address.clone();
|
let xmr_address = self.s_contact.xmr_address.clone();
|
||||||
let gpg_key = self.s_contact.gpg_key.iter().cloned().collect();
|
let nmpk = self.s_contact.nmpk.clone();
|
||||||
|
|
||||||
// Contact added confirmation screen
|
// Contact added confirmation screen
|
||||||
//-----------------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------------
|
||||||
|
@ -455,10 +443,7 @@ impl eframe::App for AddressBookApp {
|
||||||
}
|
}
|
||||||
ui.label(format!("i2p: {}", i2p_address));
|
ui.label(format!("i2p: {}", i2p_address));
|
||||||
ui.label(format!("xmr: {}", xmr_address));
|
ui.label(format!("xmr: {}", xmr_address));
|
||||||
ui.label(format!(
|
ui.label(format!("npmk: {}", nmpk));
|
||||||
"gpg: {}",
|
|
||||||
String::from_utf8(gpg_key).unwrap_or(utils::empty_string())
|
|
||||||
));
|
|
||||||
ui.horizontal(|ui| {
|
ui.horizontal(|ui| {
|
||||||
if !is_loading {
|
if !is_loading {
|
||||||
if ui.button("Approve").clicked() {
|
if ui.button("Approve").clicked() {
|
||||||
|
@ -470,7 +455,7 @@ impl eframe::App for AddressBookApp {
|
||||||
i2p_address,
|
i2p_address,
|
||||||
is_vendor,
|
is_vendor,
|
||||||
xmr_address,
|
xmr_address,
|
||||||
gpg_key: self.s_contact.gpg_key.iter().cloned().collect(),
|
nmpk,
|
||||||
};
|
};
|
||||||
send_create_contact_req(
|
send_create_contact_req(
|
||||||
self.contact_add_tx.clone(),
|
self.contact_add_tx.clone(),
|
||||||
|
@ -491,13 +476,7 @@ impl eframe::App for AddressBookApp {
|
||||||
if ui.button("Add").clicked() {
|
if ui.button("Add").clicked() {
|
||||||
// Get the contacts information from the /share API
|
// Get the contacts information from the /share API
|
||||||
let contact = self.contact.clone();
|
let contact = self.contact.clone();
|
||||||
let prune = contact::Prune::Full.value();
|
send_contact_info_req(self.contact_info_tx.clone(), ctx.clone(), contact);
|
||||||
send_contact_info_req(
|
|
||||||
self.contact_info_tx.clone(),
|
|
||||||
ctx.clone(),
|
|
||||||
contact,
|
|
||||||
prune,
|
|
||||||
);
|
|
||||||
add_contact_timeout(self.contact_timeout_tx.clone(), ctx.clone());
|
add_contact_timeout(self.contact_timeout_tx.clone(), ctx.clone());
|
||||||
self.is_adding = true;
|
self.is_adding = true;
|
||||||
}
|
}
|
||||||
|
@ -592,15 +571,10 @@ impl eframe::App for AddressBookApp {
|
||||||
chrono::NaiveDateTime::from_timestamp_opt(expire, 0)
|
chrono::NaiveDateTime::from_timestamp_opt(expire, 0)
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.to_string();
|
.to_string();
|
||||||
// MESSAGES WON'T BE SENT UNTIL KEY IS SIGNED AND TRUSTED!
|
|
||||||
self.status.signed_key =
|
|
||||||
check_signed_key(self.status.i2p.clone());
|
|
||||||
let prune = contact::Prune::Pruned.value();
|
|
||||||
send_contact_info_req(
|
send_contact_info_req(
|
||||||
self.contact_info_tx.clone(),
|
self.contact_info_tx.clone(),
|
||||||
ctx.clone(),
|
ctx.clone(),
|
||||||
self.status.i2p.clone(),
|
self.status.i2p.clone(),
|
||||||
prune,
|
|
||||||
);
|
);
|
||||||
self.showing_status = true;
|
self.showing_status = true;
|
||||||
self.is_pinging = true;
|
self.is_pinging = true;
|
||||||
|
@ -613,7 +587,6 @@ impl eframe::App for AddressBookApp {
|
||||||
Err(_e) => 0,
|
Err(_e) => 0,
|
||||||
};
|
};
|
||||||
if now < expire
|
if now < expire
|
||||||
&& self.status.signed_key
|
|
||||||
&& self.status.jwp != utils::empty_string()
|
&& self.status.jwp != utils::empty_string()
|
||||||
&& c.i2p_address == self.status.i2p
|
&& c.i2p_address == self.status.i2p
|
||||||
{
|
{
|
||||||
|
@ -632,15 +605,10 @@ impl eframe::App for AddressBookApp {
|
||||||
|
|
||||||
// Send asyc requests to neveko-core
|
// Send asyc requests to neveko-core
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
fn send_contact_info_req(
|
fn send_contact_info_req(tx: Sender<models::Contact>, ctx: egui::Context, contact: String) {
|
||||||
tx: Sender<models::Contact>,
|
|
||||||
ctx: egui::Context,
|
|
||||||
contact: String,
|
|
||||||
prune: u32,
|
|
||||||
) {
|
|
||||||
log::debug!("async send_contact_info_req");
|
log::debug!("async send_contact_info_req");
|
||||||
tokio::spawn(async move {
|
tokio::spawn(async move {
|
||||||
match contact::add_contact_request(contact, prune).await {
|
match contact::add_contact_request(contact).await {
|
||||||
Ok(contact) => {
|
Ok(contact) => {
|
||||||
let _ = tx.send(contact);
|
let _ = tx.send(contact);
|
||||||
ctx.request_repaint();
|
ctx.request_repaint();
|
||||||
|
@ -825,7 +793,7 @@ fn send_payment_req(
|
||||||
fn send_message_req(tx: Sender<bool>, ctx: egui::Context, body: String, to: String, jwp: String) {
|
fn send_message_req(tx: Sender<bool>, ctx: egui::Context, body: String, to: String, jwp: String) {
|
||||||
log::debug!("constructing message");
|
log::debug!("constructing message");
|
||||||
let m: models::Message = models::Message {
|
let m: models::Message = models::Message {
|
||||||
body: body.into_bytes(),
|
body: body,
|
||||||
to,
|
to,
|
||||||
mid: utils::empty_string(),
|
mid: utils::empty_string(),
|
||||||
uid: utils::empty_string(),
|
uid: utils::empty_string(),
|
||||||
|
@ -844,11 +812,6 @@ fn send_message_req(tx: Sender<bool>, ctx: egui::Context, body: String, to: Stri
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
fn check_signed_key(contact: String) -> bool {
|
|
||||||
let v = utils::search_gui_db(String::from(crate::GUI_SIGNED_GPG_DB_KEY), contact);
|
|
||||||
v != utils::empty_string()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn change_nick_req(contact: String, nick: String) {
|
fn change_nick_req(contact: String, nick: String) {
|
||||||
log::debug!("change nick");
|
log::debug!("change nick");
|
||||||
utils::clear_gui_db(String::from(crate::GUI_NICK_DB_KEY), String::from(&contact));
|
utils::clear_gui_db(String::from(crate::GUI_NICK_DB_KEY), String::from(&contact));
|
||||||
|
|
|
@ -1,28 +1,36 @@
|
||||||
use neveko_core::*;
|
use neveko_core::{
|
||||||
|
models::Message,
|
||||||
|
*,
|
||||||
|
};
|
||||||
use std::sync::mpsc::{
|
use std::sync::mpsc::{
|
||||||
Receiver,
|
Receiver,
|
||||||
Sender,
|
Sender,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub struct MailBoxApp {
|
pub struct MailBoxApp {
|
||||||
decrypted_message: String,
|
deciphered: String,
|
||||||
is_showing_decryption: bool,
|
is_showing_decipher: bool,
|
||||||
messages: Vec<models::Message>,
|
messages: Vec<models::Message>,
|
||||||
message_init: bool,
|
message_init: bool,
|
||||||
refresh_on_delete_tx: Sender<bool>,
|
refresh_on_delete_tx: Sender<bool>,
|
||||||
refresh_on_delete_rx: Receiver<bool>,
|
refresh_on_delete_rx: Receiver<bool>,
|
||||||
|
deciphered_tx: Sender<String>,
|
||||||
|
deciphered_rx: Receiver<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for MailBoxApp {
|
impl Default for MailBoxApp {
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
let (refresh_on_delete_tx, refresh_on_delete_rx) = std::sync::mpsc::channel();
|
let (refresh_on_delete_tx, refresh_on_delete_rx) = std::sync::mpsc::channel();
|
||||||
|
let (deciphered_tx, deciphered_rx) = std::sync::mpsc::channel();
|
||||||
MailBoxApp {
|
MailBoxApp {
|
||||||
decrypted_message: utils::empty_string(),
|
deciphered: utils::empty_string(),
|
||||||
is_showing_decryption: false,
|
is_showing_decipher: false,
|
||||||
messages: Vec::new(),
|
messages: Vec::new(),
|
||||||
message_init: false,
|
message_init: false,
|
||||||
refresh_on_delete_rx,
|
|
||||||
refresh_on_delete_tx,
|
refresh_on_delete_tx,
|
||||||
|
refresh_on_delete_rx,
|
||||||
|
deciphered_rx,
|
||||||
|
deciphered_tx,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -37,6 +45,10 @@ impl eframe::App for MailBoxApp {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if let Ok(decipher) = self.deciphered_rx.try_recv() {
|
||||||
|
self.deciphered = decipher;
|
||||||
|
}
|
||||||
|
|
||||||
// initial message load
|
// initial message load
|
||||||
if !self.message_init {
|
if !self.message_init {
|
||||||
self.messages = message::find_all();
|
self.messages = message::find_all();
|
||||||
|
@ -45,18 +57,18 @@ impl eframe::App for MailBoxApp {
|
||||||
|
|
||||||
// Compose window
|
// Compose window
|
||||||
//-----------------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------------
|
||||||
let mut is_showing_decryption = self.is_showing_decryption;
|
let mut is_showing_decipher = self.is_showing_decipher;
|
||||||
egui::Window::new("decrypted message")
|
egui::Window::new("decipher message")
|
||||||
.open(&mut is_showing_decryption)
|
.open(&mut is_showing_decipher)
|
||||||
.title_bar(false)
|
.title_bar(false)
|
||||||
.vscroll(true)
|
.vscroll(true)
|
||||||
.show(&ctx, |ui| {
|
.show(&ctx, |ui| {
|
||||||
ui.heading("Decrypted Message");
|
ui.heading("Deciphered Message");
|
||||||
ui.label(format!("{}", self.decrypted_message));
|
ui.label(format!("{}", self.deciphered));
|
||||||
ui.label("\n");
|
ui.label("\n");
|
||||||
if ui.button("Exit").clicked() {
|
if ui.button("Exit").clicked() {
|
||||||
self.decrypted_message = utils::empty_string();
|
self.deciphered = utils::empty_string();
|
||||||
self.is_showing_decryption = false;
|
self.is_showing_decipher = false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -116,29 +128,19 @@ impl eframe::App for MailBoxApp {
|
||||||
ui.label(format!("{}", m.to));
|
ui.label(format!("{}", m.to));
|
||||||
});
|
});
|
||||||
row.col(|ui| {
|
row.col(|ui| {
|
||||||
ui.label(format!(
|
ui.label(format!("{}", m.body));
|
||||||
"{}",
|
|
||||||
String::from_utf8(m.body.iter().cloned().collect()).unwrap()
|
|
||||||
));
|
|
||||||
});
|
});
|
||||||
row.col(|ui| {
|
row.col(|ui| {
|
||||||
ui.style_mut().wrap = Some(false);
|
ui.style_mut().wrap = Some(false);
|
||||||
ui.horizontal(|ui| {
|
ui.horizontal(|ui| {
|
||||||
if m.uid == String::from("rx") {
|
if m.uid == String::from("rx") {
|
||||||
if ui.button("Decrypt").clicked() {
|
if ui.button("Decipher").clicked() {
|
||||||
let mut d = message::decrypt_body(m.mid.clone());
|
decipher_req(
|
||||||
let mut bytes = hex::decode(d.body.into_bytes())
|
&m,
|
||||||
.unwrap_or(Vec::new());
|
self.deciphered_tx.clone(),
|
||||||
self.decrypted_message = String::from_utf8(bytes)
|
ctx.clone(),
|
||||||
.unwrap_or(utils::empty_string());
|
|
||||||
self.is_showing_decryption = true;
|
|
||||||
d = Default::default();
|
|
||||||
bytes = Vec::new();
|
|
||||||
log::debug!(
|
|
||||||
"cleared decryption bytes: {:?} string: {}",
|
|
||||||
bytes,
|
|
||||||
d.body
|
|
||||||
);
|
);
|
||||||
|
self.is_showing_decipher = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ui.button("Delete").clicked() {
|
if ui.button("Delete").clicked() {
|
||||||
|
@ -160,8 +162,21 @@ impl eframe::App for MailBoxApp {
|
||||||
fn refresh_on_delete_req(tx: Sender<bool>, ctx: egui::Context) {
|
fn refresh_on_delete_req(tx: Sender<bool>, ctx: egui::Context) {
|
||||||
tokio::spawn(async move {
|
tokio::spawn(async move {
|
||||||
tokio::time::sleep(std::time::Duration::from_secs(1)).await;
|
tokio::time::sleep(std::time::Duration::from_secs(1)).await;
|
||||||
log::error!("refreshing messages....");
|
log::info!("refreshing messages....");
|
||||||
let _ = tx.send(true);
|
let _ = tx.send(true);
|
||||||
ctx.request_repaint();
|
ctx.request_repaint();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn decipher_req(m: &Message, tx: Sender<String>, ctx: egui::Context) {
|
||||||
|
let from: String = String::from(&m.from);
|
||||||
|
let body: String = String::from(&m.body);
|
||||||
|
tokio::spawn(async move {
|
||||||
|
log::info!("async decipher_req");
|
||||||
|
let contact = contact::find(&from);
|
||||||
|
let encipher = Some(String::from(neveko25519::ENCIPHER));
|
||||||
|
let deciphered = neveko25519::cipher(&contact.nmpk, body, encipher).await;
|
||||||
|
let _ = tx.send(deciphered);
|
||||||
|
ctx.request_repaint();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
|
@ -57,7 +57,7 @@ pub struct MarketApp {
|
||||||
contact_timeout_tx: Sender<bool>,
|
contact_timeout_tx: Sender<bool>,
|
||||||
contact_timeout_rx: Receiver<bool>,
|
contact_timeout_rx: Receiver<bool>,
|
||||||
customer_orders: Vec<models::Order>,
|
customer_orders: Vec<models::Order>,
|
||||||
decrypted_delivery_info: String,
|
cipher: String,
|
||||||
find_vendor: String,
|
find_vendor: String,
|
||||||
get_vendor_products_tx: Sender<Vec<models::Product>>,
|
get_vendor_products_tx: Sender<Vec<models::Product>>,
|
||||||
get_vendor_products_rx: Receiver<Vec<models::Product>>,
|
get_vendor_products_rx: Receiver<Vec<models::Product>>,
|
||||||
|
@ -72,7 +72,7 @@ pub struct MarketApp {
|
||||||
is_customer_viewing_orders: bool,
|
is_customer_viewing_orders: bool,
|
||||||
is_managing_multisig: bool,
|
is_managing_multisig: bool,
|
||||||
is_product_image_set: bool,
|
is_product_image_set: bool,
|
||||||
is_showing_decrypted_delivery_info: bool,
|
is_showing_deciphered_delivery_info: bool,
|
||||||
is_showing_products: bool,
|
is_showing_products: bool,
|
||||||
is_showing_product_image: bool,
|
is_showing_product_image: bool,
|
||||||
is_showing_product_update: bool,
|
is_showing_product_update: bool,
|
||||||
|
@ -116,6 +116,8 @@ pub struct MarketApp {
|
||||||
submit_txset_rx: Receiver<bool>,
|
submit_txset_rx: Receiver<bool>,
|
||||||
cancel_request_tx: Sender<models::Order>,
|
cancel_request_tx: Sender<models::Order>,
|
||||||
cancel_request_rx: Receiver<models::Order>,
|
cancel_request_rx: Receiver<models::Order>,
|
||||||
|
ciphered_tx: Sender<String>,
|
||||||
|
ciphered_rx: Receiver<String>,
|
||||||
dispute_request_tx: Sender<models::Dispute>,
|
dispute_request_tx: Sender<models::Dispute>,
|
||||||
dispute_request_rx: Receiver<models::Dispute>,
|
dispute_request_rx: Receiver<models::Dispute>,
|
||||||
// ship_request_tx: Sender<models::Order>,
|
// ship_request_tx: Sender<models::Order>,
|
||||||
|
@ -153,6 +155,7 @@ impl Default for MarketApp {
|
||||||
let (order_funded_tx, order_funded_rx) = std::sync::mpsc::channel();
|
let (order_funded_tx, order_funded_rx) = std::sync::mpsc::channel();
|
||||||
let (submit_txset_tx, submit_txset_rx) = std::sync::mpsc::channel();
|
let (submit_txset_tx, submit_txset_rx) = std::sync::mpsc::channel();
|
||||||
let (upload_dinfo_tx, upload_dinfo_rx) = std::sync::mpsc::channel();
|
let (upload_dinfo_tx, upload_dinfo_rx) = std::sync::mpsc::channel();
|
||||||
|
let (ciphered_tx, ciphered_rx) = std::sync::mpsc::channel();
|
||||||
let contents = std::fs::read("./assets/qr.png").unwrap_or(Vec::new());
|
let contents = std::fs::read("./assets/qr.png").unwrap_or(Vec::new());
|
||||||
MarketApp {
|
MarketApp {
|
||||||
contact_info_rx,
|
contact_info_rx,
|
||||||
|
@ -160,7 +163,9 @@ impl Default for MarketApp {
|
||||||
contact_timeout_rx,
|
contact_timeout_rx,
|
||||||
contact_timeout_tx,
|
contact_timeout_tx,
|
||||||
customer_orders: Vec::new(),
|
customer_orders: Vec::new(),
|
||||||
decrypted_delivery_info: utils::empty_string(),
|
cipher: utils::empty_string(),
|
||||||
|
ciphered_tx,
|
||||||
|
ciphered_rx,
|
||||||
find_vendor: utils::empty_string(),
|
find_vendor: utils::empty_string(),
|
||||||
get_vendor_products_rx,
|
get_vendor_products_rx,
|
||||||
get_vendor_products_tx,
|
get_vendor_products_tx,
|
||||||
|
@ -175,7 +180,7 @@ impl Default for MarketApp {
|
||||||
is_order_qr_set: false,
|
is_order_qr_set: false,
|
||||||
is_pinging: false,
|
is_pinging: false,
|
||||||
is_product_image_set: false,
|
is_product_image_set: false,
|
||||||
is_showing_decrypted_delivery_info: false,
|
is_showing_deciphered_delivery_info: false,
|
||||||
is_showing_orders: false,
|
is_showing_orders: false,
|
||||||
is_showing_order_qr: false,
|
is_showing_order_qr: false,
|
||||||
is_showing_products: false,
|
is_showing_products: false,
|
||||||
|
@ -329,6 +334,10 @@ impl eframe::App for MarketApp {
|
||||||
self.is_loading = false;
|
self.is_loading = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if let Ok(cipher) = self.ciphered_rx.try_recv() {
|
||||||
|
self.cipher = cipher;
|
||||||
|
}
|
||||||
|
|
||||||
// TODO(c2m): automated trigger for nasr worked successfully
|
// TODO(c2m): automated trigger for nasr worked successfully
|
||||||
// doesn't seem like this is really needed anymore?
|
// doesn't seem like this is really needed anymore?
|
||||||
|
|
||||||
|
@ -397,7 +406,6 @@ impl eframe::App for MarketApp {
|
||||||
ui.label(format!("tx proof: {}", self.vendor_status.txp));
|
ui.label(format!("tx proof: {}", self.vendor_status.txp));
|
||||||
ui.label(format!("jwp: {}", self.vendor_status.jwp));
|
ui.label(format!("jwp: {}", self.vendor_status.jwp));
|
||||||
ui.label(format!("expiration: {}", self.vendor_status.h_exp));
|
ui.label(format!("expiration: {}", self.vendor_status.h_exp));
|
||||||
ui.label(format!("signed key: {}", self.vendor_status.signed_key));
|
|
||||||
if ui.button("Exit").clicked() {
|
if ui.button("Exit").clicked() {
|
||||||
self.is_showing_vendor_status = false;
|
self.is_showing_vendor_status = false;
|
||||||
}
|
}
|
||||||
|
@ -795,18 +803,18 @@ impl eframe::App for MarketApp {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
let mut is_showing_decryption = self.is_showing_decrypted_delivery_info;
|
let mut is_showing_decipher = self.is_showing_deciphered_delivery_info;
|
||||||
egui::Window::new("decrypted delivery info")
|
egui::Window::new("deciphered delivery info")
|
||||||
.open(&mut is_showing_decryption)
|
.open(&mut is_showing_decipher)
|
||||||
.title_bar(false)
|
.title_bar(false)
|
||||||
.vscroll(true)
|
.vscroll(true)
|
||||||
.show(&ctx, |ui| {
|
.show(&ctx, |ui| {
|
||||||
ui.heading("Delivery Info");
|
ui.heading("Delivery Info");
|
||||||
ui.label(format!("{}", self.decrypted_delivery_info));
|
ui.label(format!("{}", self.cipher));
|
||||||
ui.label("\n");
|
ui.label("\n");
|
||||||
if ui.button("Exit").clicked() {
|
if ui.button("Exit").clicked() {
|
||||||
self.decrypted_delivery_info = utils::empty_string();
|
self.cipher = utils::empty_string();
|
||||||
self.is_showing_decrypted_delivery_info = false;
|
self.is_showing_deciphered_delivery_info = false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -890,14 +898,14 @@ impl eframe::App for MarketApp {
|
||||||
String::from(neveko_core::DELIVERY_INFO_DB_KEY),
|
String::from(neveko_core::DELIVERY_INFO_DB_KEY),
|
||||||
String::from(&o.orid),
|
String::from(&o.orid),
|
||||||
);
|
);
|
||||||
let bytes =
|
cipher_req(
|
||||||
hex::decode(e_info.into_bytes()).unwrap_or(Vec::new());
|
String::from(&o.cid),
|
||||||
let d_bytes = gpg::decrypt(&String::from(&o.orid), &bytes);
|
e_info,
|
||||||
let dinfo: String =
|
None,
|
||||||
String::from_utf8(d_bytes.unwrap_or(Vec::new()))
|
self.ciphered_tx.clone(),
|
||||||
.unwrap_or(utils::empty_string());
|
ctx.clone(),
|
||||||
self.decrypted_delivery_info = dinfo;
|
);
|
||||||
self.is_showing_decrypted_delivery_info = true;
|
self.is_showing_deciphered_delivery_info = true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
row.col(|ui| {
|
row.col(|ui| {
|
||||||
|
@ -990,14 +998,19 @@ impl eframe::App for MarketApp {
|
||||||
}
|
}
|
||||||
if qty <= p_qty && qty > 0 {
|
if qty <= p_qty && qty > 0 {
|
||||||
if ui.button("Submit Order").clicked() {
|
if ui.button("Submit Order").clicked() {
|
||||||
let address_bytes = self.new_order_shipping_address.clone().into_bytes();
|
// encipher the shipping address
|
||||||
let encrypted_shipping_address =
|
cipher_req(
|
||||||
gpg::encrypt(self.vendor_status.i2p.clone(), &address_bytes);
|
self.new_order.cid.clone(),
|
||||||
|
self.new_order_shipping_address.clone(),
|
||||||
|
Some(String::from(neveko25519::ENCIPHER)),
|
||||||
|
self.ciphered_tx.clone(),
|
||||||
|
ctx.clone(),
|
||||||
|
);
|
||||||
let new_order = reqres::OrderRequest {
|
let new_order = reqres::OrderRequest {
|
||||||
cid: String::from(&self.new_order.cid),
|
cid: String::from(&self.new_order.cid),
|
||||||
adjudicator: String::from(&adjudicator),
|
adjudicator: String::from(&adjudicator),
|
||||||
pid: String::from(&self.new_order.pid),
|
pid: String::from(&self.new_order.pid),
|
||||||
ship_address: encrypted_shipping_address.unwrap_or(Vec::new()),
|
ship_address: self.cipher.clone(),
|
||||||
quantity: qty,
|
quantity: qty,
|
||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
|
@ -1050,7 +1063,7 @@ impl eframe::App for MarketApp {
|
||||||
// upload delivery info
|
// upload delivery info
|
||||||
let dinfo_str = String::from(&self.upload_dinfo_str);
|
let dinfo_str = String::from(&self.upload_dinfo_str);
|
||||||
upload_dinfo_req(
|
upload_dinfo_req(
|
||||||
dinfo_str.into_bytes().iter().cloned().collect(),
|
dinfo_str,
|
||||||
self.new_order.orid.clone(),
|
self.new_order.orid.clone(),
|
||||||
ctx.clone(),
|
ctx.clone(),
|
||||||
self.upload_dinfo_tx.clone(),
|
self.upload_dinfo_tx.clone(),
|
||||||
|
@ -1165,15 +1178,10 @@ impl eframe::App for MarketApp {
|
||||||
)
|
)
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.to_string();
|
.to_string();
|
||||||
// MESSAGES WON'T BE SENT UNTIL KEY IS SIGNED AND
|
|
||||||
// TRUSTED!
|
|
||||||
self.vendor_status.signed_key =
|
|
||||||
check_signed_key(self.vendor_status.i2p.clone());
|
|
||||||
send_contact_info_req(
|
send_contact_info_req(
|
||||||
self.contact_info_tx.clone(),
|
self.contact_info_tx.clone(),
|
||||||
ctx.clone(),
|
ctx.clone(),
|
||||||
self.vendor_status.i2p.clone(),
|
self.vendor_status.i2p.clone(),
|
||||||
contact::Prune::Pruned.value(),
|
|
||||||
);
|
);
|
||||||
vendor_status_timeout(
|
vendor_status_timeout(
|
||||||
self.contact_timeout_tx.clone(),
|
self.contact_timeout_tx.clone(),
|
||||||
|
@ -1190,7 +1198,6 @@ impl eframe::App for MarketApp {
|
||||||
Err(_e) => 0,
|
Err(_e) => 0,
|
||||||
};
|
};
|
||||||
if now < expire
|
if now < expire
|
||||||
&& self.vendor_status.signed_key
|
|
||||||
&& self.vendor_status.jwp != utils::empty_string()
|
&& self.vendor_status.jwp != utils::empty_string()
|
||||||
&& v.i2p_address == self.vendor_status.i2p
|
&& v.i2p_address == self.vendor_status.i2p
|
||||||
&& self.vendor_status.is_vendor
|
&& self.vendor_status.is_vendor
|
||||||
|
@ -1247,7 +1254,6 @@ impl eframe::App for MarketApp {
|
||||||
ui.label(format!("tx proof: {}", self.vendor_status.txp));
|
ui.label(format!("tx proof: {}", self.vendor_status.txp));
|
||||||
ui.label(format!("jwp: {}", self.vendor_status.jwp));
|
ui.label(format!("jwp: {}", self.vendor_status.jwp));
|
||||||
ui.label(format!("expiration: {}", self.vendor_status.h_exp));
|
ui.label(format!("expiration: {}", self.vendor_status.h_exp));
|
||||||
ui.label(format!("signed key: {}", self.vendor_status.signed_key));
|
|
||||||
if ui.button("Exit").clicked() {
|
if ui.button("Exit").clicked() {
|
||||||
self.is_showing_vendor_status = false;
|
self.is_showing_vendor_status = false;
|
||||||
}
|
}
|
||||||
|
@ -1724,15 +1730,10 @@ fn _refresh_on_delete_product_req(_tx: Sender<bool>, _ctx: egui::Context) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
fn send_contact_info_req(
|
fn send_contact_info_req(tx: Sender<models::Contact>, ctx: egui::Context, contact: String) {
|
||||||
tx: Sender<models::Contact>,
|
|
||||||
ctx: egui::Context,
|
|
||||||
contact: String,
|
|
||||||
prune: u32,
|
|
||||||
) {
|
|
||||||
log::debug!("async send_contact_info_req");
|
log::debug!("async send_contact_info_req");
|
||||||
tokio::spawn(async move {
|
tokio::spawn(async move {
|
||||||
match contact::add_contact_request(contact, prune).await {
|
match contact::add_contact_request(contact).await {
|
||||||
Ok(contact) => {
|
Ok(contact) => {
|
||||||
let _ = tx.send(contact);
|
let _ = tx.send(contact);
|
||||||
ctx.request_repaint();
|
ctx.request_repaint();
|
||||||
|
@ -1742,11 +1743,6 @@ fn send_contact_info_req(
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
fn check_signed_key(contact: String) -> bool {
|
|
||||||
let v = utils::search_gui_db(String::from(crate::GUI_SIGNED_GPG_DB_KEY), contact);
|
|
||||||
v != utils::empty_string()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn send_products_from_vendor_req(
|
fn send_products_from_vendor_req(
|
||||||
tx: Sender<Vec<models::Product>>,
|
tx: Sender<Vec<models::Product>>,
|
||||||
ctx: egui::Context,
|
ctx: egui::Context,
|
||||||
|
@ -2455,7 +2451,7 @@ fn release_txset(contact: String, orid: String, ctx: egui::Context, tx: Sender<b
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
fn upload_dinfo_req(dinfo: Vec<u8>, orid: String, ctx: egui::Context, tx: Sender<bool>) {
|
fn upload_dinfo_req(dinfo: String, orid: String, ctx: egui::Context, tx: Sender<bool>) {
|
||||||
tokio::spawn(async move {
|
tokio::spawn(async move {
|
||||||
log::info!("async upload_dinfo_req");
|
log::info!("async upload_dinfo_req");
|
||||||
let dinfo = order::upload_delivery_info(&orid, &dinfo).await;
|
let dinfo = order::upload_delivery_info(&orid, &dinfo).await;
|
||||||
|
@ -2513,3 +2509,13 @@ fn create_dispute_req(
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn cipher_req(cid: String, m: String, e: Option<String>, tx: Sender<String>, ctx: egui::Context) {
|
||||||
|
tokio::spawn(async move {
|
||||||
|
log::info!("async decipher_req");
|
||||||
|
let contact = contact::find(&cid);
|
||||||
|
let ciphered = neveko25519::cipher(&contact.nmpk, m, e).await;
|
||||||
|
let _ = tx.send(ciphered);
|
||||||
|
ctx.request_repaint();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
|
@ -14,7 +14,6 @@ pub const GUI_NICK_DB_KEY: &str = "gui-nick";
|
||||||
pub const GUI_OVL_DB_KEY: &str = "gui-ovl";
|
pub const GUI_OVL_DB_KEY: &str = "gui-ovl";
|
||||||
pub const GUI_TX_SIGNATURE_DB_KEY: &str = "gui-txp-sig";
|
pub const GUI_TX_SIGNATURE_DB_KEY: &str = "gui-txp-sig";
|
||||||
pub const GUI_TX_HASH_DB_KEY: &str = "gui-txp-hash";
|
pub const GUI_TX_HASH_DB_KEY: &str = "gui-txp-hash";
|
||||||
pub const GUI_SIGNED_GPG_DB_KEY: &str = "gui-signed-key";
|
|
||||||
pub const GUI_TX_SUBADDRESS_DB_KEY: &str = "gui-txp-subaddress";
|
pub const GUI_TX_SUBADDRESS_DB_KEY: &str = "gui-txp-subaddress";
|
||||||
|
|
||||||
pub const GUI_MSIG_KEX_ONE_DB_KEY: &str = "gui-kex-1";
|
pub const GUI_MSIG_KEX_ONE_DB_KEY: &str = "gui-kex-1";
|
||||||
|
@ -27,9 +26,6 @@ pub const GUI_MSIG_PREPARE_DB_KEY: &str = "gui-prepare";
|
||||||
pub const GUI_MSIG_TXSET_DB_KEY: &str = "gui-txset";
|
pub const GUI_MSIG_TXSET_DB_KEY: &str = "gui-txset";
|
||||||
// End LMDB keys
|
// End LMDB keys
|
||||||
|
|
||||||
/// Designate a contact as verified and trusted
|
|
||||||
pub const SIGNED_GPG_KEY: &str = "1";
|
|
||||||
|
|
||||||
/// key for fetching the login credential hash
|
/// key for fetching the login credential hash
|
||||||
pub const CREDENTIAL_KEY: &str = "NEVEKO_GUI_KEY";
|
pub const CREDENTIAL_KEY: &str = "NEVEKO_GUI_KEY";
|
||||||
/// TODO(c2m): configurable lock screen timeout
|
/// TODO(c2m): configurable lock screen timeout
|
||||||
|
|
188
neveko-market/Cargo.lock
generated
188
neveko-market/Cargo.lock
generated
|
@ -167,12 +167,6 @@ dependencies = [
|
||||||
"generic-array",
|
"generic-array",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "build-rs"
|
|
||||||
version = "0.1.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b00b8763668c99f8d9101b8a0dd82106f58265464531a79b2cef0d9a30c17dd2"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bumpalo"
|
name = "bumpalo"
|
||||||
version = "3.12.0"
|
version = "3.12.0"
|
||||||
|
@ -191,16 +185,6 @@ version = "1.0.79"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
|
checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "cfg-expr"
|
|
||||||
version = "0.15.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "c8790cf1286da485c72cf5fc7aeba308438800036ec67d89425924c4807268c9"
|
|
||||||
dependencies = [
|
|
||||||
"smallvec",
|
|
||||||
"target-lexicon",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cfg-if"
|
name = "cfg-if"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
|
@ -279,15 +263,6 @@ dependencies = [
|
||||||
"unicode-width",
|
"unicode-width",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "conv"
|
|
||||||
version = "0.3.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "78ff10625fd0ac447827aa30ea8b861fead473bb60aeb73af6c1c58caf0d1299"
|
|
||||||
dependencies = [
|
|
||||||
"custom_derive",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cookie"
|
name = "cookie"
|
||||||
version = "0.16.2"
|
version = "0.16.2"
|
||||||
|
@ -342,16 +317,6 @@ dependencies = [
|
||||||
"typenum",
|
"typenum",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "cstr-argument"
|
|
||||||
version = "0.1.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b6bd9c8e659a473bce955ae5c35b116af38af11a7acb0b480e01f3ed348aeb40"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-if",
|
|
||||||
"memchr",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ctr"
|
name = "ctr"
|
||||||
version = "0.9.2"
|
version = "0.9.2"
|
||||||
|
@ -388,12 +353,6 @@ dependencies = [
|
||||||
"syn 2.0.58",
|
"syn 2.0.58",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "custom_derive"
|
|
||||||
version = "0.1.7"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "ef8ae57c4978a2acd8b869ce6b9ca1dfe817bff704c220209fdef2c0b75a01b9"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cxx"
|
name = "cxx"
|
||||||
version = "1.0.89"
|
version = "1.0.89"
|
||||||
|
@ -589,7 +548,7 @@ dependencies = [
|
||||||
"atomic",
|
"atomic",
|
||||||
"pear",
|
"pear",
|
||||||
"serde",
|
"serde",
|
||||||
"toml 0.5.11",
|
"toml",
|
||||||
"uncased",
|
"uncased",
|
||||||
"version_check",
|
"version_check",
|
||||||
]
|
]
|
||||||
|
@ -745,47 +704,6 @@ version = "0.3.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
|
checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "gpg-error"
|
|
||||||
version = "0.6.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "d89aaeddbfb92313378c58e98abadaaa34082b3855f1d455576eeeda08bd592c"
|
|
||||||
dependencies = [
|
|
||||||
"libgpg-error-sys",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "gpgme"
|
|
||||||
version = "0.11.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "57539732fbe58eacdb984734b72b470ed0bca3ab7a49813271878567025ac44f"
|
|
||||||
dependencies = [
|
|
||||||
"bitflags 1.3.2",
|
|
||||||
"cfg-if",
|
|
||||||
"conv",
|
|
||||||
"cstr-argument",
|
|
||||||
"gpg-error",
|
|
||||||
"gpgme-sys",
|
|
||||||
"libc 0.2.153",
|
|
||||||
"memoffset",
|
|
||||||
"once_cell",
|
|
||||||
"smallvec",
|
|
||||||
"static_assertions",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "gpgme-sys"
|
|
||||||
version = "0.11.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "509223d659c06e4a26229437d6ac917723f02d31917c86c6ecd50e8369741cf7"
|
|
||||||
dependencies = [
|
|
||||||
"build-rs",
|
|
||||||
"libc 0.2.153",
|
|
||||||
"libgpg-error-sys",
|
|
||||||
"system-deps",
|
|
||||||
"winreg",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "h2"
|
name = "h2"
|
||||||
version = "0.3.15"
|
version = "0.3.15"
|
||||||
|
@ -1093,17 +1011,6 @@ version = "0.2.153"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
|
checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "libgpg-error-sys"
|
|
||||||
version = "0.6.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "c97079310f39c835d3bd73578379d040f779614bb331c7ffbb6630fee6420290"
|
|
||||||
dependencies = [
|
|
||||||
"build-rs",
|
|
||||||
"system-deps",
|
|
||||||
"winreg",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "liblmdb-sys"
|
name = "liblmdb-sys"
|
||||||
version = "0.2.2"
|
version = "0.2.2"
|
||||||
|
@ -1210,15 +1117,6 @@ version = "2.5.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
|
checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "memoffset"
|
|
||||||
version = "0.7.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4"
|
|
||||||
dependencies = [
|
|
||||||
"autocfg",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "mime"
|
name = "mime"
|
||||||
version = "0.3.16"
|
version = "0.3.16"
|
||||||
|
@ -1284,7 +1182,6 @@ dependencies = [
|
||||||
"curve25519-dalek",
|
"curve25519-dalek",
|
||||||
"diqwest",
|
"diqwest",
|
||||||
"env_logger",
|
"env_logger",
|
||||||
"gpgme",
|
|
||||||
"hex",
|
"hex",
|
||||||
"hmac",
|
"hmac",
|
||||||
"jwt",
|
"jwt",
|
||||||
|
@ -1983,15 +1880,6 @@ dependencies = [
|
||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "serde_spanned"
|
|
||||||
version = "0.6.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "93107647184f6027e3b7dcb2e11034cf95ffa1e3a682c67951963ac69c1c007d"
|
|
||||||
dependencies = [
|
|
||||||
"serde",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde_urlencoded"
|
name = "serde_urlencoded"
|
||||||
version = "0.7.1"
|
version = "0.7.1"
|
||||||
|
@ -2095,12 +1983,6 @@ dependencies = [
|
||||||
"loom",
|
"loom",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "static_assertions"
|
|
||||||
version = "1.1.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "strsim"
|
name = "strsim"
|
||||||
version = "0.10.0"
|
version = "0.10.0"
|
||||||
|
@ -2135,25 +2017,6 @@ dependencies = [
|
||||||
"unicode-ident",
|
"unicode-ident",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "system-deps"
|
|
||||||
version = "6.1.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "e5fa6fb9ee296c0dc2df41a656ca7948546d061958115ddb0bcaae43ad0d17d2"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-expr",
|
|
||||||
"heck",
|
|
||||||
"pkg-config",
|
|
||||||
"toml 0.7.4",
|
|
||||||
"version-compare",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "target-lexicon"
|
|
||||||
version = "0.12.7"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "fd1ba337640d60c3e96bc6f0638a939b9c9a7f2c316a1598c279828b3d1dc8c5"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tempfile"
|
name = "tempfile"
|
||||||
version = "3.3.0"
|
version = "3.3.0"
|
||||||
|
@ -2322,40 +2185,6 @@ dependencies = [
|
||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "toml"
|
|
||||||
version = "0.7.4"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "d6135d499e69981f9ff0ef2167955a5333c35e36f6937d382974566b3d5b94ec"
|
|
||||||
dependencies = [
|
|
||||||
"serde",
|
|
||||||
"serde_spanned",
|
|
||||||
"toml_datetime",
|
|
||||||
"toml_edit",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "toml_datetime"
|
|
||||||
version = "0.6.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "5a76a9312f5ba4c2dec6b9161fdf25d87ad8a09256ccea5a556fef03c706a10f"
|
|
||||||
dependencies = [
|
|
||||||
"serde",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "toml_edit"
|
|
||||||
version = "0.19.10"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "2380d56e8670370eee6566b0bfd4265f65b3f432e8c6d85623f728d4fa31f739"
|
|
||||||
dependencies = [
|
|
||||||
"indexmap",
|
|
||||||
"serde",
|
|
||||||
"serde_spanned",
|
|
||||||
"toml_datetime",
|
|
||||||
"winnow",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tower-service"
|
name = "tower-service"
|
||||||
version = "0.3.2"
|
version = "0.3.2"
|
||||||
|
@ -2521,12 +2350,6 @@ version = "0.2.15"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
|
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "version-compare"
|
|
||||||
version = "0.1.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "version_check"
|
name = "version_check"
|
||||||
version = "0.9.4"
|
version = "0.9.4"
|
||||||
|
@ -2786,15 +2609,6 @@ version = "0.42.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd"
|
checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "winnow"
|
|
||||||
version = "0.4.6"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "61de7bac303dc551fe038e2b3cef0f571087a47571ea6e79a87692ac99b99699"
|
|
||||||
dependencies = [
|
|
||||||
"memchr",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "winreg"
|
name = "winreg"
|
||||||
version = "0.10.1"
|
version = "0.10.1"
|
||||||
|
|
181
neveko-message/Cargo.lock
generated
181
neveko-message/Cargo.lock
generated
|
@ -162,12 +162,6 @@ dependencies = [
|
||||||
"generic-array",
|
"generic-array",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "build-rs"
|
|
||||||
version = "0.1.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b00b8763668c99f8d9101b8a0dd82106f58265464531a79b2cef0d9a30c17dd2"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bumpalo"
|
name = "bumpalo"
|
||||||
version = "3.12.0"
|
version = "3.12.0"
|
||||||
|
@ -186,15 +180,6 @@ version = "1.0.79"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
|
checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "cfg-expr"
|
|
||||||
version = "0.14.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "a35b255461940a32985c627ce82900867c61db1659764d3675ea81963f72a4c6"
|
|
||||||
dependencies = [
|
|
||||||
"smallvec",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cfg-if"
|
name = "cfg-if"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
|
@ -283,15 +268,6 @@ dependencies = [
|
||||||
"windows-sys 0.45.0",
|
"windows-sys 0.45.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "conv"
|
|
||||||
version = "0.3.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "78ff10625fd0ac447827aa30ea8b861fead473bb60aeb73af6c1c58caf0d1299"
|
|
||||||
dependencies = [
|
|
||||||
"custom_derive",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cookie"
|
name = "cookie"
|
||||||
version = "0.17.0"
|
version = "0.17.0"
|
||||||
|
@ -338,16 +314,6 @@ dependencies = [
|
||||||
"typenum",
|
"typenum",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "cstr-argument"
|
|
||||||
version = "0.1.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b6bd9c8e659a473bce955ae5c35b116af38af11a7acb0b480e01f3ed348aeb40"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-if",
|
|
||||||
"memchr",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "curve25519-dalek"
|
name = "curve25519-dalek"
|
||||||
version = "4.1.2"
|
version = "4.1.2"
|
||||||
|
@ -375,12 +341,6 @@ dependencies = [
|
||||||
"syn 2.0.58",
|
"syn 2.0.58",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "custom_derive"
|
|
||||||
version = "0.1.7"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "ef8ae57c4978a2acd8b869ce6b9ca1dfe817bff704c220209fdef2c0b75a01b9"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cxx"
|
name = "cxx"
|
||||||
version = "1.0.94"
|
version = "1.0.94"
|
||||||
|
@ -576,7 +536,7 @@ dependencies = [
|
||||||
"atomic",
|
"atomic",
|
||||||
"pear",
|
"pear",
|
||||||
"serde",
|
"serde",
|
||||||
"toml 0.5.11",
|
"toml",
|
||||||
"uncased",
|
"uncased",
|
||||||
"version_check",
|
"version_check",
|
||||||
]
|
]
|
||||||
|
@ -722,47 +682,6 @@ version = "0.3.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
|
checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "gpg-error"
|
|
||||||
version = "0.6.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "d89aaeddbfb92313378c58e98abadaaa34082b3855f1d455576eeeda08bd592c"
|
|
||||||
dependencies = [
|
|
||||||
"libgpg-error-sys",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "gpgme"
|
|
||||||
version = "0.11.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "57539732fbe58eacdb984734b72b470ed0bca3ab7a49813271878567025ac44f"
|
|
||||||
dependencies = [
|
|
||||||
"bitflags 1.3.2",
|
|
||||||
"cfg-if",
|
|
||||||
"conv",
|
|
||||||
"cstr-argument",
|
|
||||||
"gpg-error",
|
|
||||||
"gpgme-sys",
|
|
||||||
"libc 0.2.140",
|
|
||||||
"memoffset",
|
|
||||||
"once_cell",
|
|
||||||
"smallvec",
|
|
||||||
"static_assertions",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "gpgme-sys"
|
|
||||||
version = "0.11.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "509223d659c06e4a26229437d6ac917723f02d31917c86c6ecd50e8369741cf7"
|
|
||||||
dependencies = [
|
|
||||||
"build-rs",
|
|
||||||
"libc 0.2.140",
|
|
||||||
"libgpg-error-sys",
|
|
||||||
"system-deps",
|
|
||||||
"winreg",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "h2"
|
name = "h2"
|
||||||
version = "0.3.16"
|
version = "0.3.16"
|
||||||
|
@ -1044,17 +963,6 @@ version = "0.2.140"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
|
checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "libgpg-error-sys"
|
|
||||||
version = "0.6.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "c97079310f39c835d3bd73578379d040f779614bb331c7ffbb6630fee6420290"
|
|
||||||
dependencies = [
|
|
||||||
"build-rs",
|
|
||||||
"system-deps",
|
|
||||||
"winreg",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "liblmdb-sys"
|
name = "liblmdb-sys"
|
||||||
version = "0.2.2"
|
version = "0.2.2"
|
||||||
|
@ -1161,15 +1069,6 @@ version = "2.5.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
|
checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "memoffset"
|
|
||||||
version = "0.7.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4"
|
|
||||||
dependencies = [
|
|
||||||
"autocfg",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "mime"
|
name = "mime"
|
||||||
version = "0.3.17"
|
version = "0.3.17"
|
||||||
|
@ -1235,7 +1134,6 @@ dependencies = [
|
||||||
"curve25519-dalek",
|
"curve25519-dalek",
|
||||||
"diqwest",
|
"diqwest",
|
||||||
"env_logger",
|
"env_logger",
|
||||||
"gpgme",
|
|
||||||
"hex",
|
"hex",
|
||||||
"hmac",
|
"hmac",
|
||||||
"jwt",
|
"jwt",
|
||||||
|
@ -1891,15 +1789,6 @@ dependencies = [
|
||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "serde_spanned"
|
|
||||||
version = "0.6.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "0efd8caf556a6cebd3b285caf480045fcc1ac04f6bd786b09a6f11af30c4fcf4"
|
|
||||||
dependencies = [
|
|
||||||
"serde",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde_urlencoded"
|
name = "serde_urlencoded"
|
||||||
version = "0.7.1"
|
version = "0.7.1"
|
||||||
|
@ -2003,12 +1892,6 @@ dependencies = [
|
||||||
"loom",
|
"loom",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "static_assertions"
|
|
||||||
version = "1.1.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "strsim"
|
name = "strsim"
|
||||||
version = "0.10.0"
|
version = "0.10.0"
|
||||||
|
@ -2043,19 +1926,6 @@ dependencies = [
|
||||||
"unicode-ident",
|
"unicode-ident",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "system-deps"
|
|
||||||
version = "6.0.4"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "555fc8147af6256f3931a36bb83ad0023240ce9cf2b319dec8236fd1f220b05f"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-expr",
|
|
||||||
"heck",
|
|
||||||
"pkg-config",
|
|
||||||
"toml 0.7.3",
|
|
||||||
"version-compare",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tempfile"
|
name = "tempfile"
|
||||||
version = "3.5.0"
|
version = "3.5.0"
|
||||||
|
@ -2223,40 +2093,6 @@ dependencies = [
|
||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "toml"
|
|
||||||
version = "0.7.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b403acf6f2bb0859c93c7f0d967cb4a75a7ac552100f9322faf64dc047669b21"
|
|
||||||
dependencies = [
|
|
||||||
"serde",
|
|
||||||
"serde_spanned",
|
|
||||||
"toml_datetime",
|
|
||||||
"toml_edit",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "toml_datetime"
|
|
||||||
version = "0.6.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622"
|
|
||||||
dependencies = [
|
|
||||||
"serde",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "toml_edit"
|
|
||||||
version = "0.19.8"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13"
|
|
||||||
dependencies = [
|
|
||||||
"indexmap",
|
|
||||||
"serde",
|
|
||||||
"serde_spanned",
|
|
||||||
"toml_datetime",
|
|
||||||
"winnow",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tower-service"
|
name = "tower-service"
|
||||||
version = "0.3.2"
|
version = "0.3.2"
|
||||||
|
@ -2418,12 +2254,6 @@ version = "0.2.15"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
|
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "version-compare"
|
|
||||||
version = "0.1.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "version_check"
|
name = "version_check"
|
||||||
version = "0.9.4"
|
version = "0.9.4"
|
||||||
|
@ -2715,15 +2545,6 @@ version = "0.47.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9d6e62c256dc6d40b8c8707df17df8d774e60e39db723675241e7c15e910bce7"
|
checksum = "9d6e62c256dc6d40b8c8707df17df8d774e60e39db723675241e7c15e910bce7"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "winnow"
|
|
||||||
version = "0.4.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "ae8970b36c66498d8ff1d66685dc86b91b29db0c7739899012f63a63814b4b28"
|
|
||||||
dependencies = [
|
|
||||||
"memchr",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "winreg"
|
name = "winreg"
|
||||||
version = "0.10.1"
|
version = "0.10.1"
|
||||||
|
|
|
@ -39,12 +39,12 @@ pub async fn get_messages(_token: auth::BearerToken) -> Custom<Json<Vec<Message>
|
||||||
Custom(Status::Ok, Json(messages))
|
Custom(Status::Ok, Json(messages))
|
||||||
}
|
}
|
||||||
|
|
||||||
/// decrypt a message body
|
/// decipher a message body
|
||||||
#[get("/<mid>")]
|
#[get("/<mid>")]
|
||||||
pub async fn decrypt(
|
pub async fn decipher(
|
||||||
mid: String,
|
mid: String,
|
||||||
_token: auth::BearerToken,
|
_token: auth::BearerToken,
|
||||||
) -> Custom<Json<reqres::DecryptedMessageBody>> {
|
) -> Custom<Json<reqres::DecipheredMessageBody>> {
|
||||||
let d_message = message::decrypt_body(mid);
|
let d_message = message::decipher_body(mid).await;
|
||||||
Custom(Status::Ok, Json(d_message))
|
Custom(Status::Ok, Json(d_message))
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ async fn rocket() -> _ {
|
||||||
env_logger::init();
|
env_logger::init();
|
||||||
log::info!("neveko-message is online");
|
log::info!("neveko-message is online");
|
||||||
rocket::custom(&config)
|
rocket::custom(&config)
|
||||||
.mount("/message/decrypt", routes![controller::decrypt])
|
.mount("/message/decipher", routes![controller::decipher])
|
||||||
.mount("/messages", routes![controller::get_messages])
|
.mount("/messages", routes![controller::get_messages])
|
||||||
.mount("/tx", routes![controller::send_message])
|
.mount("/tx", routes![controller::send_message])
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,21 +41,10 @@ pub async fn get_i2p_status() -> Custom<Json<i2p::HttpProxyStatus>> {
|
||||||
|
|
||||||
/// Share your contact information.
|
/// Share your contact information.
|
||||||
///
|
///
|
||||||
/// 0 - returns full info with gpg key
|
|
||||||
///
|
|
||||||
/// 1 - return pruned info without gpg key
|
|
||||||
///
|
|
||||||
/// Protected: false
|
/// Protected: false
|
||||||
#[get("/<pruned>")]
|
#[get("/")]
|
||||||
pub async fn share_contact_info(pruned: u32) -> Custom<Json<models::Contact>> {
|
pub async fn share_contact_info() -> Custom<Json<models::Contact>> {
|
||||||
let info: models::Contact = contact::share().await;
|
let info: models::Contact = contact::share().await;
|
||||||
if pruned == contact::Prune::Pruned.value() {
|
|
||||||
let p_info: models::Contact = models::Contact {
|
|
||||||
gpg_key: Vec::new(),
|
|
||||||
..info
|
|
||||||
};
|
|
||||||
return Custom(Status::Ok, Json(p_info));
|
|
||||||
}
|
|
||||||
Custom(Status::Ok, Json(info))
|
Custom(Status::Ok, Json(info))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue