feat: v8 encryption modes (#264)
This PR adds support for the new AEAD cryptosystems advertised by Discord, AES256-GCM and XChaCha20Poly1305. These schemes will shortly become mandatory, and provider stronger integrity/authentication guarantees over the cleartext portions of any voice packet by correctly specifying additional authenticated data. To provide smooth switchover, we've added basic negotiation over the `CryptoMode`. This ensures that any clients who are manually specifying one of the legacy modes will automatically migrate to `Aes256Gcm` when Discord cease to advertise their original preference. Closes #246. --------- Co-authored-by: Kyle Simpson <kyleandrew.simpson@gmail.com>
This commit is contained in:
@@ -14,10 +14,13 @@ rust-version = "1.74"
|
||||
version = "0.4.3"
|
||||
|
||||
[dependencies]
|
||||
aead = { optional = true, version = "0.5.2" }
|
||||
aes-gcm = { optional = true, version = "0.10.3" }
|
||||
async-trait = { optional = true, version = "0.1" }
|
||||
audiopus = { optional = true, version = "0.3.0-rc.0" }
|
||||
byteorder = { optional = true, version = "1" }
|
||||
bytes = { optional = true, version = "1" }
|
||||
chacha20poly1305 = { optional = true, version = "0.10.1" }
|
||||
crypto_secretbox = { optional = true, features = ["std"], version = "0.1" }
|
||||
dashmap = { optional = true, version = "5" }
|
||||
derivative = "2"
|
||||
@@ -52,6 +55,7 @@ tracing-futures = "0.2"
|
||||
twilight-gateway = { default-features = false, optional = true, version = "0.15.0" }
|
||||
twilight-model = { default-features = false, optional = true, version = "0.15.0" }
|
||||
typemap_rev = { optional = true, version = "0.3" }
|
||||
typenum = { optional = true, version = "1.17.0" }
|
||||
url = { optional = true, version = "2" }
|
||||
uuid = { features = ["v4"], optional = true, version = "1" }
|
||||
|
||||
@@ -81,10 +85,13 @@ gateway = [
|
||||
"tokio?/time",
|
||||
]
|
||||
driver = [
|
||||
"dep:aead",
|
||||
"dep:aes-gcm",
|
||||
"dep:async-trait",
|
||||
"dep:audiopus",
|
||||
"dep:byteorder",
|
||||
"dep:bytes",
|
||||
"dep:chacha20poly1305",
|
||||
"dep:crypto_secretbox",
|
||||
"dep:discortp",
|
||||
"dep:flume",
|
||||
@@ -107,6 +114,7 @@ driver = [
|
||||
"dep:tokio-tungstenite",
|
||||
"dep:tokio-util",
|
||||
"dep:typemap_rev",
|
||||
"dep:typenum",
|
||||
"dep:url",
|
||||
"dep:uuid",
|
||||
"tokio?/fs",
|
||||
|
||||
Reference in New Issue
Block a user