ServerboundKeyPacket.java
net.minecraft.network.protocol.login.ServerboundKeyPacket
信息
- 全限定名:net.minecraft.network.protocol.login.ServerboundKeyPacket
- 类型:public class
- 包:net.minecraft.network.protocol.login
- 源码路径:src/main/java/net/minecraft/network/protocol/login/ServerboundKeyPacket.java
- 起始行号:L14
- 实现:Packet
- 职责:
TODO
字段/常量
-
STREAM_CODEC- 类型:
StreamCodec<FriendlyByteBuf,ServerboundKeyPacket> - 修饰符:
public static final - 源码定位:
L15 - 说明:
TODO
- 类型:
-
keybytes- 类型:
byte[] - 修饰符:
private final - 源码定位:
L16 - 说明:
TODO
- 类型:
-
encryptedChallenge- 类型:
byte[] - 修饰符:
private final - 源码定位:
L17 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
public ServerboundKeyPacket(SecretKey secretKey, PublicKey publicKey, byte[] challenge) @ L19
- 构造器名:ServerboundKeyPacket
- 源码定位:L19
- 修饰符:public
参数:
- secretKey: SecretKey
- publicKey: PublicKey
- challenge: byte[]
说明:
TODO
private ServerboundKeyPacket(FriendlyByteBuf input) @ L24
- 构造器名:ServerboundKeyPacket
- 源码定位:L24
- 修饰符:private
参数:
- input: FriendlyByteBuf
说明:
TODO
方法
下面的方法块按源码顺序生成。
private void write(FriendlyByteBuf output) @ L29
- 方法名:write
- 源码定位:L29
- 返回类型:void
- 修饰符:private
参数:
- output: FriendlyByteBuf
说明:
TODO
public PacketType<ServerboundKeyPacket> type() @ L34
- 方法名:type
- 源码定位:L34
- 返回类型:PacketType
- 修饰符:public
参数:
- 无
说明:
TODO
public void handle(ServerLoginPacketListener listener) @ L39
- 方法名:handle
- 源码定位:L39
- 返回类型:void
- 修饰符:public
参数:
- listener: ServerLoginPacketListener
说明:
TODO
public SecretKey getSecretKey(PrivateKey privateKey) @ L43
- 方法名:getSecretKey
- 源码定位:L43
- 返回类型:SecretKey
- 修饰符:public
参数:
- privateKey: PrivateKey
说明:
TODO
public boolean isChallengeValid(byte[] challenge, PrivateKey privateKey) @ L47
- 方法名:isChallengeValid
- 源码定位:L47
- 返回类型:boolean
- 修饰符:public
参数:
- challenge: byte[]
- privateKey: PrivateKey
说明:
TODO
代码
public class ServerboundKeyPacket implements Packet<ServerLoginPacketListener> {
public static final StreamCodec<FriendlyByteBuf, ServerboundKeyPacket> STREAM_CODEC = Packet.codec(ServerboundKeyPacket::write, ServerboundKeyPacket::new);
private final byte[] keybytes;
private final byte[] encryptedChallenge;
public ServerboundKeyPacket(SecretKey secretKey, PublicKey publicKey, byte[] challenge) throws CryptException {
this.keybytes = Crypt.encryptUsingKey(publicKey, secretKey.getEncoded());
this.encryptedChallenge = Crypt.encryptUsingKey(publicKey, challenge);
}
private ServerboundKeyPacket(FriendlyByteBuf input) {
this.keybytes = input.readByteArray();
this.encryptedChallenge = input.readByteArray();
}
private void write(FriendlyByteBuf output) {
output.writeByteArray(this.keybytes);
output.writeByteArray(this.encryptedChallenge);
}
@Override
public PacketType<ServerboundKeyPacket> type() {
return LoginPacketTypes.SERVERBOUND_KEY;
}
public void handle(ServerLoginPacketListener listener) {
listener.handleKey(this);
}
public SecretKey getSecretKey(PrivateKey privateKey) throws CryptException {
return Crypt.decryptByteToSecretKey(privateKey, this.keybytes);
}
public boolean isChallengeValid(byte[] challenge, PrivateKey privateKey) {
try {
return Arrays.equals(challenge, Crypt.decryptUsingKey(privateKey, this.encryptedChallenge));
} catch (CryptException var4) {
return false;
}
}
}引用的其他类
-
- 引用位置:
参数/字段
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
实现/方法调用 - 关联成员:
Packet.codec()
- 引用位置:
-
- 引用位置:
返回值
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Crypt.decryptByteToSecretKey(), Crypt.decryptUsingKey(), Crypt.encryptUsingKey()
- 引用位置: