diff --git a/package.json b/package.json index 25688e774..4e2400baa 100644 --- a/package.json +++ b/package.json @@ -90,7 +90,6 @@ "src/client/voice/receiver/VoiceReadable.js": false, "src/client/voice/receiver/VoiceReceiver.js": false, "src/client/voice/util/Secretbox.js": false, - "src/client/voice/util/SecretKey.js": false, "src/client/voice/util/VolumeInterface.js": false, "src/client/voice/VoiceBroadcast.js": false } diff --git a/src/client/voice/VoiceWebSocket.js b/src/client/voice/VoiceWebSocket.js index a34962496..18632355f 100644 --- a/src/client/voice/VoiceWebSocket.js +++ b/src/client/voice/VoiceWebSocket.js @@ -1,5 +1,4 @@ const { OPCodes, VoiceOPCodes } = require('../../util/Constants'); -const SecretKey = require('./util/SecretKey'); const EventEmitter = require('events'); const { Error } = require('../../errors'); const WebSocket = require('../../WebSocket'); @@ -164,14 +163,17 @@ class VoiceWebSocket extends EventEmitter { */ this.emit('ready', packet.d); break; + /* eslint-disable no-case-declarations */ case VoiceOPCodes.SESSION_DESCRIPTION: + const key = new Uint8Array(new ArrayBuffer(packet.d.secret_key.length)); + for (const i in packet.d.secret_key) key[i] = packet.d.secret_key[i]; /** * Emitted once the Voice Websocket receives a description of this voice session. * @param {string} encryptionMode The type of encryption being used - * @param {SecretKey} secretKey The secret key used for encryption + * @param {Uint8Array} secretKey The secret key used for encryption * @event VoiceWebSocket#sessionDescription */ - this.emit('sessionDescription', packet.d.mode, new SecretKey(packet.d.secret_key)); + this.emit('sessionDescription', packet.d.mode, key); break; case VoiceOPCodes.SPEAKING: /** diff --git a/src/client/voice/dispatcher/StreamDispatcher.js b/src/client/voice/dispatcher/StreamDispatcher.js index b8dc8e1cf..99aaf57c0 100644 --- a/src/client/voice/dispatcher/StreamDispatcher.js +++ b/src/client/voice/dispatcher/StreamDispatcher.js @@ -105,7 +105,7 @@ class StreamDispatcher extends Writable { packetBuffer.writeUIntBE(this.player.voiceConnection.authentication.ssrc, 8, 4); packetBuffer.copy(nonce, 0, 0, 12); - buffer = secretbox.methods.close(buffer, nonce, this.player.voiceConnection.authentication.secretKey.key); + buffer = secretbox.methods.close(buffer, nonce, this.player.voiceConnection.authentication.secretKey); for (let i = 0; i < buffer.length; i++) packetBuffer[i + 12] = buffer[i]; return packetBuffer; diff --git a/src/client/voice/receiver/VoiceReceiver.js b/src/client/voice/receiver/VoiceReceiver.js index 4c889865c..bc7a87061 100644 --- a/src/client/voice/receiver/VoiceReceiver.js +++ b/src/client/voice/receiver/VoiceReceiver.js @@ -148,7 +148,7 @@ class VoiceReceiver extends EventEmitter { handlePacket(msg, user) { msg.copy(nonce, 0, 0, 12); - let data = secretbox.methods.open(msg.slice(12), nonce, this.voiceConnection.authentication.secretKey.key); + let data = secretbox.methods.open(msg.slice(12), nonce, this.voiceConnection.authentication.secretKey); if (!data) { /** * Emitted whenever a voice packet experiences a problem. diff --git a/src/client/voice/util/SecretKey.js b/src/client/voice/util/SecretKey.js deleted file mode 100644 index f165e5ffc..000000000 --- a/src/client/voice/util/SecretKey.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Represents a Secret Key used in encryption over voice. - * @private - */ -class SecretKey { - constructor(key) { - /** - * The key used for encryption - * @type {Uint8Array} - */ - this.key = new Uint8Array(new ArrayBuffer(key.length)); - for (const index in key) this.key[index] = key[index]; - } -} - -module.exports = SecretKey;