1234567891011121314151617181920212223242526272829303132333435363738 |
- 'use strict';
- // http://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet-Protocol::AuthSwitchRequest
- const Packet = require('../packets/packet');
- class AuthSwitchRequest {
- constructor(opts) {
- this.pluginName = opts.pluginName;
- this.pluginData = opts.pluginData;
- }
- toPacket() {
- const length = 6 + this.pluginName.length + this.pluginData.length;
- const buffer = Buffer.allocUnsafe(length);
- const 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;
- }
- static fromPacket(packet) {
- packet.readInt8(); // marker
- // assert marker == 0xfe?
- // TODO: use server encoding
- const name = packet.readNullTerminatedString('cesu8');
- const data = packet.readBuffer();
- return new AuthSwitchRequest({
- pluginName: name,
- pluginData: data
- });
- }
- }
- module.exports = AuthSwitchRequest;
|