mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-07 21:42:56 +00:00
Generally ed25519 seems to be much preferred for cryptographic strength to P256 nowadays, and it is NIST approved finally. We should use it where we can as it's also faster than p256. This PR makes the re-signed JWTs between local_proxy and pg_session_jwt use ed25519. This does introduce a new dependency on ed25519, but I do recall some Neon Authorise customers asking for support for ed25519, so I am justifying this dependency addition in the context that we can then introduce support for customer ed25519 keys sources: * https://csrc.nist.gov/pubs/fips/186-5/final subsection 7 (EdDSA) * https://datatracker.ietf.org/doc/html/rfc8037#section-3.1
125 lines
3.8 KiB
TOML
125 lines
3.8 KiB
TOML
[package]
|
|
name = "proxy"
|
|
version = "0.1.0"
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
|
|
[features]
|
|
default = []
|
|
testing = ["dep:tokio-postgres"]
|
|
|
|
[dependencies]
|
|
ahash.workspace = true
|
|
anyhow.workspace = true
|
|
arc-swap.workspace = true
|
|
async-compression.workspace = true
|
|
async-trait.workspace = true
|
|
atomic-take.workspace = true
|
|
aws-config.workspace = true
|
|
aws-sdk-iam.workspace = true
|
|
aws-sigv4.workspace = true
|
|
base64.workspace = true
|
|
bstr.workspace = true
|
|
bytes = { workspace = true, features = ["serde"] }
|
|
camino.workspace = true
|
|
chrono.workspace = true
|
|
clap = { workspace = true, features = ["derive", "env"] }
|
|
compute_api.workspace = true
|
|
consumption_metrics.workspace = true
|
|
dashmap.workspace = true
|
|
env_logger.workspace = true
|
|
framed-websockets.workspace = true
|
|
futures.workspace = true
|
|
hashbrown.workspace = true
|
|
hashlink.workspace = true
|
|
hex.workspace = true
|
|
hmac.workspace = true
|
|
hostname.workspace = true
|
|
http.workspace = true
|
|
humantime.workspace = true
|
|
humantime-serde.workspace = true
|
|
hyper0.workspace = true
|
|
hyper = { workspace = true, features = ["server", "http1", "http2"] }
|
|
hyper-util = { version = "0.1", features = ["server", "http1", "http2", "tokio"] }
|
|
http-body-util = { version = "0.1" }
|
|
indexmap = { workspace = true, features = ["serde"] }
|
|
ipnet.workspace = true
|
|
itertools.workspace = true
|
|
itoa.workspace = true
|
|
lasso = { workspace = true, features = ["multi-threaded"] }
|
|
measured = { workspace = true, features = ["lasso"] }
|
|
metrics.workspace = true
|
|
once_cell.workspace = true
|
|
parking_lot.workspace = true
|
|
parquet.workspace = true
|
|
parquet_derive.workspace = true
|
|
pin-project-lite.workspace = true
|
|
postgres_backend.workspace = true
|
|
postgres-client = { package = "tokio-postgres2", path = "../libs/proxy/tokio-postgres2" }
|
|
postgres-protocol = { package = "postgres-protocol2", path = "../libs/proxy/postgres-protocol2" }
|
|
pq_proto.workspace = true
|
|
prometheus.workspace = true
|
|
rand.workspace = true
|
|
regex.workspace = true
|
|
remote_storage = { version = "0.1", path = "../libs/remote_storage/" }
|
|
reqwest = { workspace = true, features = ["rustls-tls-native-roots"] }
|
|
reqwest-middleware = { workspace = true, features = ["json"] }
|
|
reqwest-retry.workspace = true
|
|
reqwest-tracing.workspace = true
|
|
rustc-hash.workspace = true
|
|
rustls-pemfile.workspace = true
|
|
rustls.workspace = true
|
|
scopeguard.workspace = true
|
|
serde.workspace = true
|
|
serde_json.workspace = true
|
|
sha2 = { workspace = true, features = ["asm", "oid"] }
|
|
smol_str.workspace = true
|
|
smallvec.workspace = true
|
|
socket2.workspace = true
|
|
strum.workspace = true
|
|
strum_macros.workspace = true
|
|
subtle.workspace = true
|
|
thiserror.workspace = true
|
|
tikv-jemallocator.workspace = true
|
|
tikv-jemalloc-ctl = { workspace = true, features = ["use_std"] }
|
|
tokio-postgres = { workspace = true, optional = true }
|
|
tokio-rustls.workspace = true
|
|
tokio-util.workspace = true
|
|
tokio = { workspace = true, features = ["signal"] }
|
|
tracing-subscriber.workspace = true
|
|
tracing-utils.workspace = true
|
|
tracing.workspace = true
|
|
try-lock.workspace = true
|
|
typed-json.workspace = true
|
|
url.workspace = true
|
|
urlencoding.workspace = true
|
|
utils.workspace = true
|
|
uuid.workspace = true
|
|
rustls-native-certs.workspace = true
|
|
x509-parser.workspace = true
|
|
redis.workspace = true
|
|
zerocopy.workspace = true
|
|
|
|
# jwt stuff
|
|
jose-jwa = "0.1.2"
|
|
jose-jwk = { version = "0.1.2", features = ["p256", "p384", "rsa"] }
|
|
signature = "2"
|
|
ecdsa = "0.16"
|
|
p256 = { version = "0.13", features = ["jwk"] }
|
|
ed25519-dalek = { version = "2", default-features = false, features = ["rand_core"] }
|
|
rsa = "0.9"
|
|
|
|
workspace_hack.workspace = true
|
|
|
|
[dev-dependencies]
|
|
camino-tempfile.workspace = true
|
|
fallible-iterator.workspace = true
|
|
flate2.workspace = true
|
|
tokio-tungstenite.workspace = true
|
|
pbkdf2 = { workspace = true, features = ["simple", "std"] }
|
|
rcgen.workspace = true
|
|
rstest.workspace = true
|
|
walkdir.workspace = true
|
|
rand_distr = "0.4"
|
|
tokio-postgres.workspace = true
|