1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.shardingsphere.db.protocol.mysql.packet.handshake;
19
20 import com.google.common.base.Preconditions;
21 import lombok.Getter;
22 import lombok.RequiredArgsConstructor;
23 import org.apache.shardingsphere.db.protocol.mysql.packet.MySQLPacket;
24 import org.apache.shardingsphere.db.protocol.mysql.payload.MySQLPacketPayload;
25
26 import java.util.Arrays;
27
28
29
30
31
32
33 @RequiredArgsConstructor
34 public final class MySQLAuthSwitchRequestPacket extends MySQLPacket {
35
36
37
38
39 public static final int HEADER = 0xfe;
40
41 @Getter
42 private final String authPluginName;
43
44 @Getter
45 private final MySQLAuthenticationPluginData authPluginData;
46
47 public MySQLAuthSwitchRequestPacket(final MySQLPacketPayload payload) {
48 Preconditions.checkArgument(HEADER == payload.readInt1(), "Header of MySQL auth switch request packet must be `0xfe`.");
49 authPluginName = payload.readStringNul();
50 String strAuthPluginData = payload.readStringNul();
51 authPluginData = new MySQLAuthenticationPluginData(Arrays.copyOfRange(strAuthPluginData.getBytes(), 0, 8),
52 Arrays.copyOfRange(strAuthPluginData.getBytes(), 8, 20));
53 }
54
55 @Override
56 protected void write(final MySQLPacketPayload payload) {
57 payload.writeInt1(HEADER);
58 payload.writeStringNul(authPluginName);
59 payload.writeStringNul(new String(authPluginData.getAuthenticationPluginData()));
60 }
61 }