diff --git a/native/compile-native.sh b/native/compile-native.sh
deleted file mode 100755
index 99ba41d2..00000000
--- a/native/compile-native.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-gcc -shared -fPIC -O3 -Werror -I/usr/lib/jvm/default-java/include/ src/main/c/NativeCipherImpl.c -o src/main/resources/native-cipher.so -lcrypto
diff --git a/native/nb-configuration.xml b/native/nb-configuration.xml
deleted file mode 100644
index 7e465924..00000000
--- a/native/nb-configuration.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
- project
- NEW_LINE
- NEW_LINE
- NEW_LINE
- true
- true
- true
- true
- true
- true
- true
- true
- true
- true
-
-
diff --git a/native/pom.xml b/native/pom.xml
deleted file mode 100644
index c6ec0fc5..00000000
--- a/native/pom.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
- 4.0.0
-
-
- net.md-5
- bungeecord-parent
- 1.7-SNAPSHOT
- ../pom.xml
-
-
- net.md-5
- bungeecord-native
- 1.7-SNAPSHOT
- jar
-
- BungeeCord-Native
- Optional native code to speed up and enhance BungeeCord functionality.
-
-
-
- io.netty
- netty-transport
- ${netty.version}
- compile
-
-
-
diff --git a/native/src/main/c/NativeCipherImpl.c b/native/src/main/c/NativeCipherImpl.c
deleted file mode 100644
index 41884025..00000000
--- a/native/src/main/c/NativeCipherImpl.c
+++ /dev/null
@@ -1,56 +0,0 @@
-#include "net_md_5_bungee_NativeCipherImpl.h"
-#include
-#include
-#include
-#include
-#define BYTE unsigned char
-
-jlong Java_net_md_15_bungee_NativeCipherImpl_init
-(JNIEnv* env, jobject obj, jbyteArray key)
-{
- AES_KEY *aes_key = malloc(sizeof(AES_KEY));
-
- jboolean isKeyCopy;
- BYTE *key_bytes = (*env)->GetByteArrayElements(env, key, &isKeyCopy);
- int key_length = (*env)->GetArrayLength(env, key) * 8; // in bits
-
- AES_set_encrypt_key(key_bytes, key_length, aes_key);
-
- if (isKeyCopy) {
- (*env)->ReleaseByteArrayElements(env, key, (jbyte*)key_bytes, JNI_ABORT);
- }
- return (long) aes_key;
-}
-void Java_net_md_15_bungee_NativeCipherImpl_free
-(JNIEnv* env, jobject obj, jlong key)
-{
- free((AES_KEY*)key);
-}
-void Java_net_md_15_bungee_NativeCipherImpl_cipher
-(JNIEnv* env, jobject obj, jboolean forEncryption, jlong key, jbyteArray iv, jlong in, jlong out, jint length)
-{
- AES_KEY *aes_key = (AES_KEY*)key;
-
- size_t buffer_length = (size_t) length;
-
- BYTE *input = (BYTE*) in;
- BYTE *output = (BYTE*) out;
-
- jboolean isCopy;
- BYTE *iv_bytes = (*env)->GetByteArrayElements(env, iv, &isCopy);
-
- AES_cfb8_encrypt(
- input, // input buffer
- output, // output buffer
- buffer_length, // readable bytes
- aes_key, // encryption key
- iv_bytes, // IV
- NULL, // not needed
- forEncryption ? AES_ENCRYPT : AES_DECRYPT // encryption mode
- );
-
- // IV has changed, let's copy it back
- if (isCopy) {
- (*env)->ReleaseByteArrayElements(env, iv, (jbyte*)iv_bytes, 0);
- }
-}
diff --git a/native/src/main/c/net_md_5_bungee_NativeCipherImpl.h b/native/src/main/c/net_md_5_bungee_NativeCipherImpl.h
deleted file mode 100644
index 87e30b03..00000000
--- a/native/src/main/c/net_md_5_bungee_NativeCipherImpl.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include
-/* Header for class net_md_5_bungee_NativeCipherImpl */
-
-#ifndef _Included_net_md_5_bungee_NativeCipherImpl
-#define _Included_net_md_5_bungee_NativeCipherImpl
-#ifdef __cplusplus
-extern "C" {
-#endif
-/*
- * Class: net_md_5_bungee_NativeCipherImpl
- * Method: init
- * Signature: ([B)J
- */
-JNIEXPORT jlong JNICALL Java_net_md_15_bungee_NativeCipherImpl_init
- (JNIEnv *, jobject, jbyteArray);
-
-/*
- * Class: net_md_5_bungee_NativeCipherImpl
- * Method: free
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_net_md_15_bungee_NativeCipherImpl_free
- (JNIEnv *, jobject, jlong);
-
-/*
- * Class: net_md_5_bungee_NativeCipherImpl
- * Method: cipher
- * Signature: (ZJ[BJJI)V
- */
-JNIEXPORT void JNICALL Java_net_md_15_bungee_NativeCipherImpl_cipher
- (JNIEnv *, jobject, jboolean, jlong, jbyteArray, jlong, jlong, jint);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/native/src/main/java/net/md_5/bungee/BungeeCipher.java b/native/src/main/java/net/md_5/bungee/BungeeCipher.java
deleted file mode 100644
index a165d5ad..00000000
--- a/native/src/main/java/net/md_5/bungee/BungeeCipher.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package net.md_5.bungee;
-
-import io.netty.buffer.ByteBuf;
-import io.netty.channel.ChannelHandlerContext;
-import javax.crypto.SecretKey;
-import java.security.GeneralSecurityException;
-
-/**
- * Class to expose cipher methods from either native or fallback Java cipher.
- */
-public interface BungeeCipher
-{
-
- void init(boolean forEncryption, SecretKey key) throws GeneralSecurityException;
-
- void free();
-
- void cipher(ByteBuf in, ByteBuf out) throws GeneralSecurityException;
-
- ByteBuf cipher(ChannelHandlerContext ctx, ByteBuf in) throws GeneralSecurityException;
-}
diff --git a/native/src/main/java/net/md_5/bungee/NativeCipher.java b/native/src/main/java/net/md_5/bungee/NativeCipher.java
deleted file mode 100644
index 8aa90e9e..00000000
--- a/native/src/main/java/net/md_5/bungee/NativeCipher.java
+++ /dev/null
@@ -1,111 +0,0 @@
-package net.md_5.bungee;
-
-import com.google.common.io.ByteStreams;
-import io.netty.buffer.ByteBuf;
-import io.netty.channel.ChannelHandlerContext;
-import lombok.Getter;
-import javax.crypto.SecretKey;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.security.GeneralSecurityException;
-
-public class NativeCipher implements BungeeCipher
-{
-
- @Getter
- private final NativeCipherImpl nativeCipher = new NativeCipherImpl();
- private boolean forEncryption;
- private byte[] iv;
- /*============================================================================*/
- private static boolean loaded;
-
- private long pointer;
-
- public static boolean isSupported()
- {
- return "Linux".equals( System.getProperty( "os.name" ) ) && "amd64".equals( System.getProperty( "os.arch" ) );
- }
-
- public static boolean load()
- {
- if ( !loaded && isSupported() )
- {
- try ( InputStream lib = BungeeCipher.class.getClassLoader().getResourceAsStream( "native-cipher.so" ) )
- {
- // Else we will create and copy it to a temp file
- File temp = File.createTempFile( "bungeecord-native-cipher", ".so" );
- try ( OutputStream outputStream = new FileOutputStream( temp ) )
- {
- ByteStreams.copy( lib, outputStream );
- System.load( temp.getPath() );
- }
- loaded = true;
- } catch ( Throwable t )
- {
- }
- }
-
- return loaded;
- }
-
- public static boolean isLoaded()
- {
- return loaded;
- }
-
- @Override
- public void init(boolean forEncryption, SecretKey key) throws GeneralSecurityException
- {
- if ( pointer != 0 )
- {
- nativeCipher.free( pointer );
- }
- this.forEncryption = forEncryption;
- this.iv = key.getEncoded(); // initialize the IV
- this.pointer = nativeCipher.init( key.getEncoded() );
- }
-
- @Override
- public void free()
- {
- if ( pointer != 0 )
- {
- nativeCipher.free( pointer );
- pointer = 0;
- }
- }
-
- @Override
- public void cipher(ByteBuf in, ByteBuf out) throws GeneralSecurityException
- {
- // Smoke tests
- in.memoryAddress();
- out.memoryAddress();
- // Store how many bytes we can cipher
- int length = in.readableBytes();
- // It is important to note that in AES CFB-8 mode, the number of read bytes, is the number of outputted bytes
- if ( out.writableBytes() < length )
- {
- out.capacity( out.writerIndex() + length );
- }
- // Cipher the bytes
- nativeCipher.cipher( forEncryption, pointer, iv, in.memoryAddress() + in.readerIndex(), out.memoryAddress() + out.writerIndex(), length );
-
- // Go to the end of the buffer, all bytes would of been read
- in.readerIndex( in.writerIndex() );
- // Add the number of ciphered bytes to our position
- out.writerIndex( out.writerIndex() + length );
- }
-
- @Override
- public ByteBuf cipher(ChannelHandlerContext ctx, ByteBuf in) throws GeneralSecurityException
- {
- int readableBytes = in.readableBytes();
- ByteBuf heapOut = ctx.alloc().directBuffer( readableBytes ); // CFB8
- cipher( in, heapOut );
-
- return heapOut;
- }
-}
diff --git a/native/src/main/java/net/md_5/bungee/NativeCipherImpl.java b/native/src/main/java/net/md_5/bungee/NativeCipherImpl.java
deleted file mode 100644
index 261a84ec..00000000
--- a/native/src/main/java/net/md_5/bungee/NativeCipherImpl.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package net.md_5.bungee;
-
-class NativeCipherImpl
-{
-
- /**
- * Initializes the key.
- *
- * @param key the key to for encryption
- * @return the pointer to key
- */
- native long init(byte[] key);
-
- /**
- * Frees the key.
- *
- * @param key the pointer to key
- */
- native void free(long key);
-
- /**
- * This method will encrypt some data in AES-CFB8 using the specified key.
- *
- * @param forEncryption encryption / decryption mode
- * @param key the pointer to key
- * @param iv the iv to use
- * @param in the starting memory address for reading data
- * @param out the starting memory address for writing data
- * @param length the length of data to read / write
- */
- native void cipher(boolean forEncryption, long key, byte[] iv, long in, long out, int length);
-}
diff --git a/native/src/main/resources/native-cipher.so b/native/src/main/resources/native-cipher.so
deleted file mode 100755
index 262be07b..00000000
Binary files a/native/src/main/resources/native-cipher.so and /dev/null differ
diff --git a/native/src/test/java/net/md_5/bungee/NativeCipherTest.java b/native/src/test/java/net/md_5/bungee/NativeCipherTest.java
deleted file mode 100644
index ce820542..00000000
--- a/native/src/test/java/net/md_5/bungee/NativeCipherTest.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package net.md_5.bungee;
-
-import io.netty.buffer.ByteBuf;
-import io.netty.buffer.Unpooled;
-import org.junit.Assert;
-import org.junit.Test;
-import javax.crypto.SecretKey;
-import javax.crypto.spec.SecretKeySpec;
-
-public class NativeCipherTest
-{
-
- private final byte[] plainBytes = "This is a test".getBytes();
- private final byte[] cipheredBytes = new byte[]
- {
- 50, -7, 89, 1, -11, -32, -118, -48, -2, -72, 105, 97, -70, -81
- };
- private final SecretKey secret = new SecretKeySpec( new byte[ 16 ], "AES" );
-
- @Test
- public void testOpenSSL() throws Exception
- {
- if ( NativeCipher.isSupported() )
- {
- boolean loaded = NativeCipher.load();
- Assert.assertTrue( "Native cipher failed to load!", loaded );
-
- NativeCipher cipher = new NativeCipher();
- System.out.println( "Testing OpenSSL cipher..." );
- testACipher( cipher );
- }
- }
-
- @Test
- public void testJDK() throws Exception
- {
- // Create JDK cipher
- BungeeCipher cipher = new FallbackCipher();
-
- System.out.println( "Testing Java cipher..." );
- testACipher( cipher );
- }
-
- /**
- * Hackish test which can test both native and fallback ciphers using direct
- * buffers.
- */
- public void testACipher(BungeeCipher cipher) throws Exception
- {
- // Create input buf
- ByteBuf nativePlain = Unpooled.directBuffer( plainBytes.length );
- nativePlain.writeBytes( plainBytes );
- // Create expected buf
- ByteBuf nativeCiphered = Unpooled.directBuffer( cipheredBytes.length );
- nativeCiphered.writeBytes( cipheredBytes );
- // Create output buf
- ByteBuf out = Unpooled.directBuffer( plainBytes.length );
-
- // Encrypt
- cipher.init( true, secret );
- cipher.cipher( nativePlain, out );
- Assert.assertEquals( nativeCiphered, out );
-
- out.clear();
-
- // Decrypt
- cipher.init( false, secret );
- cipher.cipher( nativeCiphered, out );
- nativePlain.resetReaderIndex();
- Assert.assertEquals( nativePlain, out );
-
- System.out.println( "This cipher works correctly!" );
- }
-}
diff --git a/pom.xml b/pom.xml
index 1a1012f4..f97ca0d4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -44,7 +44,6 @@
protocol
proxy
query
- native
diff --git a/proxy/pom.xml b/proxy/pom.xml
index 39eafecd..1369b852 100644
--- a/proxy/pom.xml
+++ b/proxy/pom.xml
@@ -47,12 +47,6 @@
${project.version}
compile
-
- net.md-5
- bungeecord-native
- ${project.version}
- compile
-
net.md-5
bungeecord-protocol
diff --git a/proxy/src/main/java/net/md_5/bungee/BungeeCord.java b/proxy/src/main/java/net/md_5/bungee/BungeeCord.java
index b30fdef1..11b560c5 100644
--- a/proxy/src/main/java/net/md_5/bungee/BungeeCord.java
+++ b/proxy/src/main/java/net/md_5/bungee/BungeeCord.java
@@ -158,14 +158,6 @@ public class BungeeCord extends ProxyServer
logger.info( "Unable to initialize fancy terminal. To fix this on Windows, install the correct Microsoft Visual C++ 2008 Runtime" );
logger.info( "NOTE: This error is non crucial, and BungeeCord will still function correctly! Do not bug the author about it unless you are still unable to get it working" );
}
-
- if ( !NativeCipher.load() )
- {
- logger.warning( "NOTE: Failed to load native code. Falling back to Java cipher." );
- } else
- {
- logger.info( "Native code loaded." );
- }
}
/**
diff --git a/proxy/src/main/java/net/md_5/bungee/EncryptionUtil.java b/proxy/src/main/java/net/md_5/bungee/EncryptionUtil.java
index dabff27c..eb7fe4f1 100644
--- a/proxy/src/main/java/net/md_5/bungee/EncryptionUtil.java
+++ b/proxy/src/main/java/net/md_5/bungee/EncryptionUtil.java
@@ -12,6 +12,7 @@ import java.util.Arrays;
import java.util.Random;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
+import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import lombok.Getter;
import net.md_5.bungee.protocol.packet.EncryptionResponse;
@@ -63,19 +64,11 @@ public class EncryptionUtil
return new SecretKeySpec( cipher.doFinal( resp.getSharedSecret() ), "AES" );
}
- public static BungeeCipher getCipher(boolean forEncryption, SecretKey shared) throws GeneralSecurityException
+ public static Cipher getCipher(int opMode, Key shared) throws GeneralSecurityException
{
- BungeeCipher cipher;
- if ( NativeCipher.isLoaded() )
- {
- cipher = new NativeCipher();
- } else
- {
- cipher = new FallbackCipher();
- }
-
- cipher.init( forEncryption, shared );
- return cipher;
+ Cipher cip = Cipher.getInstance( "AES/CFB8/NoPadding" );
+ cip.init( opMode, shared, new IvParameterSpec( shared.getEncoded() ) );
+ return cip;
}
public static PublicKey getPubkey(EncryptionRequest request) throws GeneralSecurityException
diff --git a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
index 473fc0a5..c9afc300 100644
--- a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
+++ b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
@@ -8,10 +8,14 @@ import java.security.MessageDigest;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
+import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
-import net.md_5.bungee.*;
+import net.md_5.bungee.BungeeCord;
+import net.md_5.bungee.EncryptionUtil;
+import net.md_5.bungee.UserConnection;
+import net.md_5.bungee.Util;
import net.md_5.bungee.api.Callback;
import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.ProxyServer;
@@ -26,10 +30,10 @@ import net.md_5.bungee.api.event.ProxyPingEvent;
import net.md_5.bungee.http.HttpClient;
import net.md_5.bungee.netty.HandlerBoss;
import net.md_5.bungee.netty.ChannelWrapper;
+import net.md_5.bungee.netty.CipherDecoder;
+import net.md_5.bungee.netty.CipherEncoder;
import net.md_5.bungee.netty.PacketHandler;
import net.md_5.bungee.netty.PipelineUtils;
-import net.md_5.bungee.netty.cipher.CipherDecoder;
-import net.md_5.bungee.netty.cipher.CipherEncoder;
import net.md_5.bungee.protocol.DefinedPacket;
import net.md_5.bungee.protocol.packet.Login;
import net.md_5.bungee.protocol.packet.Handshake;
@@ -282,9 +286,9 @@ public class InitialHandler extends PacketHandler implements PendingConnection
Preconditions.checkState( thisState == State.ENCRYPT, "Not expecting ENCRYPT" );
sharedKey = EncryptionUtil.getSecret( encryptResponse, request );
- BungeeCipher decrypt = EncryptionUtil.getCipher( false, sharedKey );
+ Cipher decrypt = EncryptionUtil.getCipher( Cipher.DECRYPT_MODE, sharedKey );
ch.addBefore( PipelineUtils.FRAME_DECODER, PipelineUtils.DECRYPT_HANDLER, new CipherDecoder( decrypt ) );
- BungeeCipher encrypt = EncryptionUtil.getCipher( true, sharedKey );
+ Cipher encrypt = EncryptionUtil.getCipher( Cipher.ENCRYPT_MODE, sharedKey );
ch.addBefore( PipelineUtils.FRAME_PREPENDER, PipelineUtils.ENCRYPT_HANDLER, new CipherEncoder( encrypt ) );
String encName = URLEncoder.encode( InitialHandler.this.getName(), "UTF-8" );
diff --git a/native/src/main/java/net/md_5/bungee/FallbackCipher.java b/proxy/src/main/java/net/md_5/bungee/netty/CipherBase.java
similarity index 65%
rename from native/src/main/java/net/md_5/bungee/FallbackCipher.java
rename to proxy/src/main/java/net/md_5/bungee/netty/CipherBase.java
index 3c9ee078..5679afea 100644
--- a/native/src/main/java/net/md_5/bungee/FallbackCipher.java
+++ b/proxy/src/main/java/net/md_5/bungee/netty/CipherBase.java
@@ -1,17 +1,24 @@
-package net.md_5.bungee;
+package net.md_5.bungee.netty;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import javax.crypto.Cipher;
-import javax.crypto.SecretKey;
import javax.crypto.ShortBufferException;
-import javax.crypto.spec.IvParameterSpec;
-import java.security.GeneralSecurityException;
+import lombok.AccessLevel;
+import lombok.NonNull;
+import lombok.RequiredArgsConstructor;
-public class FallbackCipher implements BungeeCipher
+/**
+ * Class to expose an
+ * {@link #cipher(io.netty.buffer.ByteBuf, io.netty.buffer.ByteBuf)} method to
+ * aid in the efficient passing of ByteBuffers through a cipher.
+ */
+@RequiredArgsConstructor(access = AccessLevel.PROTECTED)
+public class CipherBase
{
- private Cipher cipher;
+ @NonNull
+ private final Cipher cipher;
private ThreadLocal heapInLocal = new EmptyByteThreadLocal();
private ThreadLocal heapOutLocal = new EmptyByteThreadLocal();
@@ -25,51 +32,6 @@ public class FallbackCipher implements BungeeCipher
}
}
- public FallbackCipher() throws GeneralSecurityException
- {
- this.cipher = Cipher.getInstance( "AES/CFB8/NoPadding" );
- }
-
- @Override
- public void init(boolean forEncryption, SecretKey key) throws GeneralSecurityException
- {
- int mode = forEncryption ? Cipher.ENCRYPT_MODE : Cipher.DECRYPT_MODE;
- cipher.init( mode, key, new IvParameterSpec( key.getEncoded() ) );
- }
-
- @Override
- public void cipher(ByteBuf in, ByteBuf out) throws ShortBufferException
- {
- int readableBytes = in.readableBytes();
- byte[] heapIn = bufToByte( in );
-
- byte[] heapOut = heapOutLocal.get();
- int outputSize = cipher.getOutputSize( readableBytes );
- if ( heapOut.length < outputSize )
- {
- heapOut = new byte[ outputSize ];
- heapOutLocal.set( heapOut );
- }
- out.writeBytes( heapOut, 0, cipher.update( heapIn, 0, readableBytes, heapOut ) );
- }
-
- @Override
- public ByteBuf cipher(ChannelHandlerContext ctx, ByteBuf in) throws ShortBufferException
- {
- int readableBytes = in.readableBytes();
- byte[] heapIn = bufToByte( in );
-
- ByteBuf heapOut = ctx.alloc().heapBuffer( cipher.getOutputSize( readableBytes ) );
- heapOut.writerIndex( cipher.update( heapIn, 0, readableBytes, heapOut.array(), heapOut.arrayOffset() ) );
-
- return heapOut;
- }
-
- @Override
- public void free()
- {
- }
-
private byte[] bufToByte(ByteBuf in)
{
byte[] heapIn = heapInLocal.get();
@@ -82,4 +44,30 @@ public class FallbackCipher implements BungeeCipher
in.readBytes( heapIn, 0, readableBytes );
return heapIn;
}
+
+ protected ByteBuf cipher(ChannelHandlerContext ctx, ByteBuf in) throws ShortBufferException
+ {
+ int readableBytes = in.readableBytes();
+ byte[] heapIn = bufToByte( in );
+
+ ByteBuf heapOut = ctx.alloc().heapBuffer( cipher.getOutputSize( readableBytes ) );
+ heapOut.writerIndex( cipher.update( heapIn, 0, readableBytes, heapOut.array(), heapOut.arrayOffset() ) );
+
+ return heapOut;
+ }
+
+ protected void cipher(ByteBuf in, ByteBuf out) throws ShortBufferException
+ {
+ int readableBytes = in.readableBytes();
+ byte[] heapIn = bufToByte( in );
+
+ byte[] heapOut = heapOutLocal.get();
+ int outputSize = cipher.getOutputSize( readableBytes );
+ if ( heapOut.length < outputSize )
+ {
+ heapOut = new byte[ outputSize ];
+ heapOutLocal.set( heapOut );
+ }
+ out.writeBytes( heapOut, 0, cipher.update( heapIn, 0, readableBytes, heapOut ) );
+ }
}
diff --git a/proxy/src/main/java/net/md_5/bungee/netty/cipher/CipherDecoder.java b/proxy/src/main/java/net/md_5/bungee/netty/CipherDecoder.java
similarity index 59%
rename from proxy/src/main/java/net/md_5/bungee/netty/cipher/CipherDecoder.java
rename to proxy/src/main/java/net/md_5/bungee/netty/CipherDecoder.java
index 7fcc323a..e6fe7df9 100644
--- a/proxy/src/main/java/net/md_5/bungee/netty/cipher/CipherDecoder.java
+++ b/proxy/src/main/java/net/md_5/bungee/netty/CipherDecoder.java
@@ -1,27 +1,24 @@
-package net.md_5.bungee.netty.cipher;
+package net.md_5.bungee.netty;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToMessageDecoder;
-import lombok.RequiredArgsConstructor;
-import net.md_5.bungee.BungeeCipher;
import java.util.List;
+import javax.crypto.Cipher;
-@RequiredArgsConstructor
public class CipherDecoder extends MessageToMessageDecoder
{
- private final BungeeCipher cipher;
+ private final CipherBase cipher;
+
+ public CipherDecoder(Cipher cipher)
+ {
+ this.cipher = new CipherBase( cipher );
+ }
@Override
protected void decode(ChannelHandlerContext ctx, ByteBuf msg, List