// http://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet-Protocol::AuthSwitchRequest var Packet = require('../packets/packet'); var Buffer = require('safe-buffer').Buffer; function AuthSwitchRequest(opts) { this.pluginName = opts.pluginName; this.pluginData = opts.pluginData; } AuthSwitchRequest.prototype.toPacket = function() { var length = 6 + this.pluginName.length + this.pluginData.length; var buffer = Buffer.allocUnsafe(length); var packet = new Packet(0, buffer, 0, length); packet.offset = 4; packet.writeInt8(0xfe); // TODO: use server encoding packet.writeNullTerminatedString(this.pluginName, 'cesu8'); packet.writeBuffer(this.pluginData); return packet; }; AuthSwitchRequest.fromPacket = function(packet) { var marker = packet.readInt8(); // assert marker == 0xfe? // TODO: use server encoding var name = packet.readNullTerminatedString('cesu8'); var data = packet.readBuffer(); return new AuthSwitchRequest({ pluginName: name, pluginData: data }); }; module.exports = AuthSwitchRequest;