Code/net/minecraft/network/CipherBase.java

45 lines
1.5 KiB
Java
Raw Permalink Normal View History

2025-07-01 06:20:03 +00:00
package net.minecraft.network;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import javax.crypto.Cipher;
import javax.crypto.ShortBufferException;
public class CipherBase {
private final Cipher cipher;
private byte[] heapIn = new byte[0];
private byte[] heapOut = new byte[0];
protected CipherBase(Cipher p_129403_) {
this.cipher = p_129403_;
}
private byte[] bufToByte(ByteBuf p_129405_) {
int i = p_129405_.readableBytes();
if (this.heapIn.length < i) {
this.heapIn = new byte[i];
}
p_129405_.readBytes(this.heapIn, 0, i);
return this.heapIn;
}
protected ByteBuf decipher(ChannelHandlerContext p_129410_, ByteBuf p_129411_) throws ShortBufferException {
int i = p_129411_.readableBytes();
byte[] abyte = this.bufToByte(p_129411_);
ByteBuf bytebuf = p_129410_.alloc().heapBuffer(this.cipher.getOutputSize(i));
bytebuf.writerIndex(this.cipher.update(abyte, 0, i, bytebuf.array(), bytebuf.arrayOffset()));
return bytebuf;
}
protected void encipher(ByteBuf p_129407_, ByteBuf p_129408_) throws ShortBufferException {
int i = p_129407_.readableBytes();
byte[] abyte = this.bufToByte(p_129407_);
int j = this.cipher.getOutputSize(i);
if (this.heapOut.length < j) {
this.heapOut = new byte[j];
}
p_129408_.writeBytes(this.heapOut, 0, this.cipher.update(abyte, 0, i, this.heapOut));
}
}