From bcbfc354cf7f0aa1c9b61fc29dff6a577fde1a8b Mon Sep 17 00:00:00 2001 From: Matt Carey Date: Wed, 4 Dec 2019 20:37:48 -0500 Subject: [PATCH] Add support for xsalsa20_poly1305_lite --- discord/voice_client.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/discord/voice_client.py b/discord/voice_client.py index f3729c9e6..801c99009 100644 --- a/discord/voice_client.py +++ b/discord/voice_client.py @@ -111,9 +111,11 @@ class VoiceClient: self._runner = None self._player = None self.encoder = None + self._lite_nonce = 0 warn_nacl = not has_nacl supported_modes = ( + 'xsalsa20_poly1305_lite', 'xsalsa20_poly1305_suffix', 'xsalsa20_poly1305', ) @@ -331,6 +333,16 @@ class VoiceClient: return header + box.encrypt(bytes(data), nonce).ciphertext + nonce + def _encrypt_xsalsa20_poly1305_lite(self, header, data): + box = nacl.secret.SecretBox(bytes(self.secret_key)) + nonce = bytearray(24) + + nonce[:4] = struct.pack('>I', self._lite_nonce) + self.checked_add('_lite_nonce', 1, 4294967295) + + return header + box.encrypt(bytes(data), bytes(nonce)).ciphertext + nonce[:4] + + def play(self, source, *, after=None): """Plays an :class:`AudioSource`.