mirror of
https://github.com/TuxCoding/FastLogin.git
synced 2025-07-31 03:07:34 +02:00
Replace var with val to prevent conflicts with newer Java version
diff --git a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/listener/protocollib/EncryptionUtil.java b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/listener/protocollib/EncryptionUtil.java index 81abad1..d148bc1 100644 --- a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/listener/protocollib/EncryptionUtil.java +++ b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/listener/protocollib/EncryptionUtil.java @@ -59,7 +59,7 @@ import javax.crypto.NoSuchPaddingException; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; -import lombok.var; +import lombok.val; /** * Encryption and decryption minecraft util for connection between servers @@ -179,9 +179,9 @@ final class EncryptionUtil { private static PublicKey loadMojangSessionKey() throws IOException, NoSuchAlgorithmException, InvalidKeySpecException { - var keyUrl = FastLoginBukkit.class.getClassLoader().getResource("yggdrasil_session_pubkey.der"); - var keyData = Resources.toByteArray(keyUrl); - var keySpec = new X509EncodedKeySpec(keyData); + val keyUrl = FastLoginBukkit.class.getClassLoader().getResource("yggdrasil_session_pubkey.der"); + val keyData = Resources.toByteArray(keyUrl); + val keySpec = new X509EncodedKeySpec(keyData); return KeyFactory.getInstance("RSA").generatePublic(keySpec); } diff --git a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/listener/protocollib/VerifyResponseTask.java b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/listener/protocollib/VerifyResponseTask.java index dc208ff..1363cb3 100644 --- a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/listener/protocollib/VerifyResponseTask.java +++ b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/listener/protocollib/VerifyResponseTask.java @@ -60,7 +60,7 @@ import java.util.UUID; import javax.crypto.Cipher; import javax.crypto.SecretKey; -import lombok.var; +import lombok.val; import org.bukkit.entity.Player; import static com.comphenix.protocol.PacketType.Login.Client.START; @@ -269,7 +269,7 @@ public class VerifyResponseTask implements Runnable { startPacket.getStrings().write(0, username); EquivalentConverter<WrappedProfileKeyData> converter = BukkitConverters.getWrappedPublicKeyDataConverter(); - var wrappedKey = Optional.ofNullable(clientKey).map(key -> + val wrappedKey = Optional.ofNullable(clientKey).map(key -> new WrappedProfileKeyData(clientKey.expiry(), clientKey.key(), clientKey.signature()) ); diff --git a/bukkit/src/test/java/com/github/games647/fastlogin/bukkit/FastLoginBukkitTest.java b/bukkit/src/test/java/com/github/games647/fastlogin/bukkit/FastLoginBukkitTest.java index e4ce55a..9d6832e 100644 --- a/bukkit/src/test/java/com/github/games647/fastlogin/bukkit/FastLoginBukkitTest.java +++ b/bukkit/src/test/java/com/github/games647/fastlogin/bukkit/FastLoginBukkitTest.java @@ -30,7 +30,7 @@ import com.github.games647.fastlogin.core.CommonUtil; import net.md_5.bungee.api.chat.TextComponent; import net.md_5.bungee.chat.ComponentSerializer; -import lombok.var; +import lombok.val; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -39,12 +39,12 @@ class FastLoginBukkitTest { @Test void testRGB() { - var message = "&x00002a00002b&lText"; - var msg = CommonUtil.translateColorCodes(message); + val message = "&x00002a00002b&lText"; + val msg = CommonUtil.translateColorCodes(message); assertEquals(msg, "§x00002a00002b§lText"); - var components = TextComponent.fromLegacyText(msg); - var expected = "{\"bold\":true,\"color\":\"#00a00b\",\"text\":\"Text\"}"; + val components = TextComponent.fromLegacyText(msg); + val expected = "{\"bold\":true,\"color\":\"#00a00b\",\"text\":\"Text\"}"; assertEquals(ComponentSerializer.toString(components), expected); } } diff --git a/bukkit/src/test/java/com/github/games647/fastlogin/bukkit/listener/protocollib/Base64Adapter.java b/bukkit/src/test/java/com/github/games647/fastlogin/bukkit/listener/protocollib/Base64Adapter.java index 29b2f3d..c2fb34d 100644 --- a/bukkit/src/test/java/com/github/games647/fastlogin/bukkit/listener/protocollib/Base64Adapter.java +++ b/bukkit/src/test/java/com/github/games647/fastlogin/bukkit/listener/protocollib/Base64Adapter.java @@ -32,13 +32,13 @@ import com.google.gson.stream.JsonWriter; import java.io.IOException; import java.util.Base64; -import lombok.var; +import lombok.val; public class Base64Adapter extends TypeAdapter<byte[]> { @Override public void write(JsonWriter out, byte[] value) throws IOException { - var encoded = Base64.getEncoder().encodeToString(value); + val encoded = Base64.getEncoder().encodeToString(value); out.value(encoded); } diff --git a/bukkit/src/test/java/com/github/games647/fastlogin/bukkit/listener/protocollib/EncryptionUtilTest.java b/bukkit/src/test/java/com/github/games647/fastlogin/bukkit/listener/protocollib/EncryptionUtilTest.java index df3888e..1bbe864 100644 --- a/bukkit/src/test/java/com/github/games647/fastlogin/bukkit/listener/protocollib/EncryptionUtilTest.java +++ b/bukkit/src/test/java/com/github/games647/fastlogin/bukkit/listener/protocollib/EncryptionUtilTest.java @@ -50,7 +50,7 @@ import javax.crypto.NoSuchPaddingException; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; -import lombok.var; +import lombok.val; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; @@ -61,7 +61,7 @@ class EncryptionUtilTest { @Test void testVerifyToken() { - var random = ThreadLocalRandom.current(); + val random = ThreadLocalRandom.current(); byte[] token = EncryptionUtil.generateVerifyToken(random); assertAll( @@ -89,10 +89,10 @@ class EncryptionUtilTest { @Test void testExpiredClientKey() throws Exception { - var clientKey = ResourceLoader.loadClientKey("client_keys/valid_public_key.json"); + val clientKey = ResourceLoader.loadClientKey("client_keys/valid_public_key.json"); // Client expires at the exact second mentioned, so use it for verification - var expiredTimestamp = clientKey.expiry(); + val expiredTimestamp = clientKey.expiry(); assertFalse(EncryptionUtil.verifyClientKey(clientKey, expiredTimestamp)); } @@ -106,7 +106,7 @@ class EncryptionUtilTest { "client_keys/invalid_wrong_signature.json" }) void testInvalidClientKey(String clientKeySource) throws Exception { - var clientKey = ResourceLoader.loadClientKey(clientKeySource); + val clientKey = ResourceLoader.loadClientKey(clientKeySource); Instant expireTimestamp = clientKey.expiry().minus(5, ChronoUnit.HOURS); assertFalse(EncryptionUtil.verifyClientKey(clientKey, expireTimestamp)); @@ -114,8 +114,8 @@ class EncryptionUtilTest { @Test void testValidClientKey() throws Exception { - var clientKey = ResourceLoader.loadClientKey("client_keys/valid_public_key.json"); - var verificationTimestamp = clientKey.expiry().minus(5, ChronoUnit.HOURS); + val clientKey = ResourceLoader.loadClientKey("client_keys/valid_public_key.json"); + val verificationTimestamp = clientKey.expiry().minus(5, ChronoUnit.HOURS); assertTrue(EncryptionUtil.verifyClientKey(clientKey, verificationTimestamp)); } @@ -123,7 +123,7 @@ class EncryptionUtilTest { @Test void testDecryptSharedSecret() throws Exception { KeyPair serverPair = EncryptionUtil.generateKeyPair(); - var serverPK = serverPair.getPublic(); + val serverPK = serverPair.getPublic(); SecretKey secretKey = generateSharedKey(); byte[] encryptedSecret = encrypt(serverPK, secretKey.getEncoded()); @@ -135,7 +135,7 @@ class EncryptionUtilTest { private static byte[] encrypt(PublicKey receiverKey, byte... message) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException { - var encryptCipher = Cipher.getInstance(receiverKey.getAlgorithm()); + val encryptCipher = Cipher.getInstance(receiverKey.getAlgorithm()); encryptCipher.init(Cipher.ENCRYPT_MODE, receiverKey); return encryptCipher.doFinal(message); } @@ -151,9 +151,9 @@ class EncryptionUtilTest { @Test void testServerIdHash() throws Exception { - var serverId = ""; - var sharedSecret = generateSharedKey(); - var serverPK = ResourceLoader.loadClientKey("client_keys/valid_public_key.json").key(); + val serverId = ""; + val sharedSecret = generateSharedKey(); + val serverPK = ResourceLoader.loadClientKey("client_keys/valid_public_key.json").key(); String sessionHash = getServerHash(serverId, sharedSecret, serverPK); assertEquals(EncryptionUtil.getServerIdHashString(serverId, sharedSecret, serverPK), sessionHash); @@ -167,7 +167,7 @@ class EncryptionUtilTest { // sha1.update(server's encoded public key from Encryption Request) // hash := sha1.hexdigest() # String of hex characters @SuppressWarnings("deprecation") - var hasher = Hashing.sha1().newHasher(); + val hasher = Hashing.sha1().newHasher(); hasher.putString(serverId, StandardCharsets.US_ASCII); hasher.putBytes(sharedSecret.getEncoded()); hasher.putBytes(serverPK.getEncoded()); @@ -180,9 +180,9 @@ class EncryptionUtilTest { @Test void testServerIdHashWrongSecret() throws Exception { - var serverId = ""; - var sharedSecret = generateSharedKey(); - var serverPK = ResourceLoader.loadClientKey("client_keys/valid_public_key.json").key(); + val serverId = ""; + val sharedSecret = generateSharedKey(); + val serverPK = ResourceLoader.loadClientKey("client_keys/valid_public_key.json").key(); String sessionHash = getServerHash(serverId, sharedSecret, serverPK); assertNotEquals(EncryptionUtil.getServerIdHashString("", generateSharedKey(), serverPK), sessionHash); @@ -190,12 +190,12 @@ class EncryptionUtilTest { @Test void testServerIdHashWrongServerKey() { - var serverId = ""; - var sharedSecret = generateSharedKey(); - var serverPK = EncryptionUtil.generateKeyPair().getPublic(); + val serverId = ""; + val sharedSecret = generateSharedKey(); + val serverPK = EncryptionUtil.generateKeyPair().getPublic(); String sessionHash = getServerHash(serverId, sharedSecret, serverPK); - var wrongPK = EncryptionUtil.generateKeyPair().getPublic(); + val wrongPK = EncryptionUtil.generateKeyPair().getPublic(); assertNotEquals(EncryptionUtil.getServerIdHashString("", sharedSecret, wrongPK), sessionHash); } @@ -239,8 +239,8 @@ class EncryptionUtilTest { @Test void testNonce() throws Exception { byte[] expected = {1, 2, 3, 4}; - var serverKey = EncryptionUtil.generateKeyPair(); - var encryptedNonce = encrypt(serverKey.getPublic(), expected); + val serverKey = EncryptionUtil.generateKeyPair(); + val encryptedNonce = encrypt(serverKey.getPublic(), expected); assertTrue(EncryptionUtil.verifyNonce(expected, serverKey.getPrivate(), encryptedNonce)); } @@ -248,19 +248,19 @@ class EncryptionUtilTest { @Test void testNonceIncorrect() throws Exception { byte[] expected = {1, 2, 3, 4}; - var serverKey = EncryptionUtil.generateKeyPair(); + val serverKey = EncryptionUtil.generateKeyPair(); // flipped first character - var encryptedNonce = encrypt(serverKey.getPublic(), new byte[]{0, 2, 3, 4}); + val encryptedNonce = encrypt(serverKey.getPublic(), new byte[]{0, 2, 3, 4}); assertFalse(EncryptionUtil.verifyNonce(expected, serverKey.getPrivate(), encryptedNonce)); } @Test void testNonceFailedDecryption() throws Exception { byte[] expected = {1, 2, 3, 4}; - var serverKey = EncryptionUtil.generateKeyPair(); + val serverKey = EncryptionUtil.generateKeyPair(); // generate a new keypair that is different - var encryptedNonce = encrypt(EncryptionUtil.generateKeyPair().getPublic(), expected); + val encryptedNonce = encrypt(EncryptionUtil.generateKeyPair().getPublic(), expected); assertThrows(GeneralSecurityException.class, () -> EncryptionUtil.verifyNonce(expected, serverKey.getPrivate(), encryptedNonce) @@ -270,7 +270,7 @@ class EncryptionUtilTest { @Test void testNonceIncorrectEmpty() { byte[] expected = {1, 2, 3, 4}; - var serverKey = EncryptionUtil.generateKeyPair(); + val serverKey = EncryptionUtil.generateKeyPair(); byte[] encryptedNonce = {}; assertThrows(GeneralSecurityException.class, diff --git a/bukkit/src/test/java/com/github/games647/fastlogin/bukkit/listener/protocollib/SignatureTestData.java b/bukkit/src/test/java/com/github/games647/fastlogin/bukkit/listener/protocollib/SignatureTestData.java index 9a75fc5..01b734e 100644 --- a/bukkit/src/test/java/com/github/games647/fastlogin/bukkit/listener/protocollib/SignatureTestData.java +++ b/bukkit/src/test/java/com/github/games647/fastlogin/bukkit/listener/protocollib/SignatureTestData.java @@ -32,13 +32,13 @@ import com.google.gson.annotations.JsonAdapter; import java.io.IOException; import java.nio.charset.StandardCharsets; -import lombok.var; +import lombok.val; public class SignatureTestData { public static SignatureTestData fromResource(String resourceName) throws IOException { - var keyUrl = Resources.getResource(resourceName); - var encodedSignature = Resources.toString(keyUrl, StandardCharsets.US_ASCII); + val keyUrl = Resources.getResource(resourceName); + val encodedSignature = Resources.toString(keyUrl, StandardCharsets.US_ASCII); return new Gson().fromJson(encodedSignature, SignatureTestData.class); } diff --git a/bungee/src/main/java/com/github/games647/fastlogin/bungee/FastLoginBungee.java b/bungee/src/main/java/com/github/games647/fastlogin/bungee/FastLoginBungee.java index 148282c..c83c14d 100644 --- a/bungee/src/main/java/com/github/games647/fastlogin/bungee/FastLoginBungee.java +++ b/bungee/src/main/java/com/github/games647/fastlogin/bungee/FastLoginBungee.java @@ -57,6 +57,7 @@ import net.md_5.bungee.api.chat.TextComponent; import net.md_5.bungee.api.connection.PendingConnection; import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.connection.Server; +import net.md_5.bungee.api.plugin.Listener; import net.md_5.bungee.api.plugin.Plugin; import net.md_5.bungee.api.plugin.PluginManager; import net.md_5.bungee.api.scheduler.GroupedThreadFactory; @@ -100,7 +101,7 @@ public class FastLoginBungee extends Plugin implements PlatformPlugin<CommandSen //events PluginManager pluginManager = getProxy().getPluginManager(); - ConnectListener connectListener = new ConnectListener(this, core.getAntiBot()); + Listener connectListener = new ConnectListener(this, core.getAntiBot()); pluginManager.registerListener(this, connectListener); pluginManager.registerListener(this, new PluginMessageListener(this));
This commit is contained in:
@ -59,7 +59,7 @@ import javax.crypto.NoSuchPaddingException;
|
|||||||
import javax.crypto.SecretKey;
|
import javax.crypto.SecretKey;
|
||||||
import javax.crypto.spec.SecretKeySpec;
|
import javax.crypto.spec.SecretKeySpec;
|
||||||
|
|
||||||
import lombok.var;
|
import lombok.val;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Encryption and decryption minecraft util for connection between servers
|
* Encryption and decryption minecraft util for connection between servers
|
||||||
@ -179,9 +179,9 @@ final class EncryptionUtil {
|
|||||||
|
|
||||||
private static PublicKey loadMojangSessionKey()
|
private static PublicKey loadMojangSessionKey()
|
||||||
throws IOException, NoSuchAlgorithmException, InvalidKeySpecException {
|
throws IOException, NoSuchAlgorithmException, InvalidKeySpecException {
|
||||||
var keyUrl = FastLoginBukkit.class.getClassLoader().getResource("yggdrasil_session_pubkey.der");
|
val keyUrl = FastLoginBukkit.class.getClassLoader().getResource("yggdrasil_session_pubkey.der");
|
||||||
var keyData = Resources.toByteArray(keyUrl);
|
val keyData = Resources.toByteArray(keyUrl);
|
||||||
var keySpec = new X509EncodedKeySpec(keyData);
|
val keySpec = new X509EncodedKeySpec(keyData);
|
||||||
|
|
||||||
return KeyFactory.getInstance("RSA").generatePublic(keySpec);
|
return KeyFactory.getInstance("RSA").generatePublic(keySpec);
|
||||||
}
|
}
|
||||||
|
@ -60,7 +60,7 @@ import java.util.UUID;
|
|||||||
import javax.crypto.Cipher;
|
import javax.crypto.Cipher;
|
||||||
import javax.crypto.SecretKey;
|
import javax.crypto.SecretKey;
|
||||||
|
|
||||||
import lombok.var;
|
import lombok.val;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import static com.comphenix.protocol.PacketType.Login.Client.START;
|
import static com.comphenix.protocol.PacketType.Login.Client.START;
|
||||||
@ -269,7 +269,7 @@ public class VerifyResponseTask implements Runnable {
|
|||||||
startPacket.getStrings().write(0, username);
|
startPacket.getStrings().write(0, username);
|
||||||
|
|
||||||
EquivalentConverter<WrappedProfileKeyData> converter = BukkitConverters.getWrappedPublicKeyDataConverter();
|
EquivalentConverter<WrappedProfileKeyData> converter = BukkitConverters.getWrappedPublicKeyDataConverter();
|
||||||
var wrappedKey = Optional.ofNullable(clientKey).map(key ->
|
val wrappedKey = Optional.ofNullable(clientKey).map(key ->
|
||||||
new WrappedProfileKeyData(clientKey.expiry(), clientKey.key(), clientKey.signature())
|
new WrappedProfileKeyData(clientKey.expiry(), clientKey.key(), clientKey.signature())
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ import com.github.games647.fastlogin.core.CommonUtil;
|
|||||||
import net.md_5.bungee.api.chat.TextComponent;
|
import net.md_5.bungee.api.chat.TextComponent;
|
||||||
import net.md_5.bungee.chat.ComponentSerializer;
|
import net.md_5.bungee.chat.ComponentSerializer;
|
||||||
|
|
||||||
import lombok.var;
|
import lombok.val;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
@ -39,12 +39,12 @@ class FastLoginBukkitTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testRGB() {
|
void testRGB() {
|
||||||
var message = "&x00002a00002b&lText";
|
val message = "&x00002a00002b&lText";
|
||||||
var msg = CommonUtil.translateColorCodes(message);
|
val msg = CommonUtil.translateColorCodes(message);
|
||||||
assertEquals(msg, "§x00002a00002b§lText");
|
assertEquals(msg, "§x00002a00002b§lText");
|
||||||
|
|
||||||
var components = TextComponent.fromLegacyText(msg);
|
val components = TextComponent.fromLegacyText(msg);
|
||||||
var expected = "{\"bold\":true,\"color\":\"#00a00b\",\"text\":\"Text\"}";
|
val expected = "{\"bold\":true,\"color\":\"#00a00b\",\"text\":\"Text\"}";
|
||||||
assertEquals(ComponentSerializer.toString(components), expected);
|
assertEquals(ComponentSerializer.toString(components), expected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -32,13 +32,13 @@ import com.google.gson.stream.JsonWriter;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Base64;
|
import java.util.Base64;
|
||||||
|
|
||||||
import lombok.var;
|
import lombok.val;
|
||||||
|
|
||||||
public class Base64Adapter extends TypeAdapter<byte[]> {
|
public class Base64Adapter extends TypeAdapter<byte[]> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void write(JsonWriter out, byte[] value) throws IOException {
|
public void write(JsonWriter out, byte[] value) throws IOException {
|
||||||
var encoded = Base64.getEncoder().encodeToString(value);
|
val encoded = Base64.getEncoder().encodeToString(value);
|
||||||
out.value(encoded);
|
out.value(encoded);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ import javax.crypto.NoSuchPaddingException;
|
|||||||
import javax.crypto.SecretKey;
|
import javax.crypto.SecretKey;
|
||||||
import javax.crypto.spec.SecretKeySpec;
|
import javax.crypto.spec.SecretKeySpec;
|
||||||
|
|
||||||
import lombok.var;
|
import lombok.val;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.junit.jupiter.params.ParameterizedTest;
|
import org.junit.jupiter.params.ParameterizedTest;
|
||||||
import org.junit.jupiter.params.provider.ValueSource;
|
import org.junit.jupiter.params.provider.ValueSource;
|
||||||
@ -61,7 +61,7 @@ class EncryptionUtilTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testVerifyToken() {
|
void testVerifyToken() {
|
||||||
var random = ThreadLocalRandom.current();
|
val random = ThreadLocalRandom.current();
|
||||||
byte[] token = EncryptionUtil.generateVerifyToken(random);
|
byte[] token = EncryptionUtil.generateVerifyToken(random);
|
||||||
|
|
||||||
assertAll(
|
assertAll(
|
||||||
@ -89,10 +89,10 @@ class EncryptionUtilTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testExpiredClientKey() throws Exception {
|
void testExpiredClientKey() throws Exception {
|
||||||
var clientKey = ResourceLoader.loadClientKey("client_keys/valid_public_key.json");
|
val clientKey = ResourceLoader.loadClientKey("client_keys/valid_public_key.json");
|
||||||
|
|
||||||
// Client expires at the exact second mentioned, so use it for verification
|
// Client expires at the exact second mentioned, so use it for verification
|
||||||
var expiredTimestamp = clientKey.expiry();
|
val expiredTimestamp = clientKey.expiry();
|
||||||
assertFalse(EncryptionUtil.verifyClientKey(clientKey, expiredTimestamp));
|
assertFalse(EncryptionUtil.verifyClientKey(clientKey, expiredTimestamp));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -106,7 +106,7 @@ class EncryptionUtilTest {
|
|||||||
"client_keys/invalid_wrong_signature.json"
|
"client_keys/invalid_wrong_signature.json"
|
||||||
})
|
})
|
||||||
void testInvalidClientKey(String clientKeySource) throws Exception {
|
void testInvalidClientKey(String clientKeySource) throws Exception {
|
||||||
var clientKey = ResourceLoader.loadClientKey(clientKeySource);
|
val clientKey = ResourceLoader.loadClientKey(clientKeySource);
|
||||||
Instant expireTimestamp = clientKey.expiry().minus(5, ChronoUnit.HOURS);
|
Instant expireTimestamp = clientKey.expiry().minus(5, ChronoUnit.HOURS);
|
||||||
|
|
||||||
assertFalse(EncryptionUtil.verifyClientKey(clientKey, expireTimestamp));
|
assertFalse(EncryptionUtil.verifyClientKey(clientKey, expireTimestamp));
|
||||||
@ -114,8 +114,8 @@ class EncryptionUtilTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testValidClientKey() throws Exception {
|
void testValidClientKey() throws Exception {
|
||||||
var clientKey = ResourceLoader.loadClientKey("client_keys/valid_public_key.json");
|
val clientKey = ResourceLoader.loadClientKey("client_keys/valid_public_key.json");
|
||||||
var verificationTimestamp = clientKey.expiry().minus(5, ChronoUnit.HOURS);
|
val verificationTimestamp = clientKey.expiry().minus(5, ChronoUnit.HOURS);
|
||||||
|
|
||||||
assertTrue(EncryptionUtil.verifyClientKey(clientKey, verificationTimestamp));
|
assertTrue(EncryptionUtil.verifyClientKey(clientKey, verificationTimestamp));
|
||||||
}
|
}
|
||||||
@ -123,7 +123,7 @@ class EncryptionUtilTest {
|
|||||||
@Test
|
@Test
|
||||||
void testDecryptSharedSecret() throws Exception {
|
void testDecryptSharedSecret() throws Exception {
|
||||||
KeyPair serverPair = EncryptionUtil.generateKeyPair();
|
KeyPair serverPair = EncryptionUtil.generateKeyPair();
|
||||||
var serverPK = serverPair.getPublic();
|
val serverPK = serverPair.getPublic();
|
||||||
|
|
||||||
SecretKey secretKey = generateSharedKey();
|
SecretKey secretKey = generateSharedKey();
|
||||||
byte[] encryptedSecret = encrypt(serverPK, secretKey.getEncoded());
|
byte[] encryptedSecret = encrypt(serverPK, secretKey.getEncoded());
|
||||||
@ -135,7 +135,7 @@ class EncryptionUtilTest {
|
|||||||
private static byte[] encrypt(PublicKey receiverKey, byte... message)
|
private static byte[] encrypt(PublicKey receiverKey, byte... message)
|
||||||
throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException,
|
throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException,
|
||||||
IllegalBlockSizeException, BadPaddingException {
|
IllegalBlockSizeException, BadPaddingException {
|
||||||
var encryptCipher = Cipher.getInstance(receiverKey.getAlgorithm());
|
val encryptCipher = Cipher.getInstance(receiverKey.getAlgorithm());
|
||||||
encryptCipher.init(Cipher.ENCRYPT_MODE, receiverKey);
|
encryptCipher.init(Cipher.ENCRYPT_MODE, receiverKey);
|
||||||
return encryptCipher.doFinal(message);
|
return encryptCipher.doFinal(message);
|
||||||
}
|
}
|
||||||
@ -151,9 +151,9 @@ class EncryptionUtilTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testServerIdHash() throws Exception {
|
void testServerIdHash() throws Exception {
|
||||||
var serverId = "";
|
val serverId = "";
|
||||||
var sharedSecret = generateSharedKey();
|
val sharedSecret = generateSharedKey();
|
||||||
var serverPK = ResourceLoader.loadClientKey("client_keys/valid_public_key.json").key();
|
val serverPK = ResourceLoader.loadClientKey("client_keys/valid_public_key.json").key();
|
||||||
|
|
||||||
String sessionHash = getServerHash(serverId, sharedSecret, serverPK);
|
String sessionHash = getServerHash(serverId, sharedSecret, serverPK);
|
||||||
assertEquals(EncryptionUtil.getServerIdHashString(serverId, sharedSecret, serverPK), sessionHash);
|
assertEquals(EncryptionUtil.getServerIdHashString(serverId, sharedSecret, serverPK), sessionHash);
|
||||||
@ -167,7 +167,7 @@ class EncryptionUtilTest {
|
|||||||
// sha1.update(server's encoded public key from Encryption Request)
|
// sha1.update(server's encoded public key from Encryption Request)
|
||||||
// hash := sha1.hexdigest() # String of hex characters
|
// hash := sha1.hexdigest() # String of hex characters
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
var hasher = Hashing.sha1().newHasher();
|
val hasher = Hashing.sha1().newHasher();
|
||||||
hasher.putString(serverId, StandardCharsets.US_ASCII);
|
hasher.putString(serverId, StandardCharsets.US_ASCII);
|
||||||
hasher.putBytes(sharedSecret.getEncoded());
|
hasher.putBytes(sharedSecret.getEncoded());
|
||||||
hasher.putBytes(serverPK.getEncoded());
|
hasher.putBytes(serverPK.getEncoded());
|
||||||
@ -180,9 +180,9 @@ class EncryptionUtilTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testServerIdHashWrongSecret() throws Exception {
|
void testServerIdHashWrongSecret() throws Exception {
|
||||||
var serverId = "";
|
val serverId = "";
|
||||||
var sharedSecret = generateSharedKey();
|
val sharedSecret = generateSharedKey();
|
||||||
var serverPK = ResourceLoader.loadClientKey("client_keys/valid_public_key.json").key();
|
val serverPK = ResourceLoader.loadClientKey("client_keys/valid_public_key.json").key();
|
||||||
|
|
||||||
String sessionHash = getServerHash(serverId, sharedSecret, serverPK);
|
String sessionHash = getServerHash(serverId, sharedSecret, serverPK);
|
||||||
assertNotEquals(EncryptionUtil.getServerIdHashString("", generateSharedKey(), serverPK), sessionHash);
|
assertNotEquals(EncryptionUtil.getServerIdHashString("", generateSharedKey(), serverPK), sessionHash);
|
||||||
@ -190,12 +190,12 @@ class EncryptionUtilTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testServerIdHashWrongServerKey() {
|
void testServerIdHashWrongServerKey() {
|
||||||
var serverId = "";
|
val serverId = "";
|
||||||
var sharedSecret = generateSharedKey();
|
val sharedSecret = generateSharedKey();
|
||||||
var serverPK = EncryptionUtil.generateKeyPair().getPublic();
|
val serverPK = EncryptionUtil.generateKeyPair().getPublic();
|
||||||
|
|
||||||
String sessionHash = getServerHash(serverId, sharedSecret, serverPK);
|
String sessionHash = getServerHash(serverId, sharedSecret, serverPK);
|
||||||
var wrongPK = EncryptionUtil.generateKeyPair().getPublic();
|
val wrongPK = EncryptionUtil.generateKeyPair().getPublic();
|
||||||
assertNotEquals(EncryptionUtil.getServerIdHashString("", sharedSecret, wrongPK), sessionHash);
|
assertNotEquals(EncryptionUtil.getServerIdHashString("", sharedSecret, wrongPK), sessionHash);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -239,8 +239,8 @@ class EncryptionUtilTest {
|
|||||||
@Test
|
@Test
|
||||||
void testNonce() throws Exception {
|
void testNonce() throws Exception {
|
||||||
byte[] expected = {1, 2, 3, 4};
|
byte[] expected = {1, 2, 3, 4};
|
||||||
var serverKey = EncryptionUtil.generateKeyPair();
|
val serverKey = EncryptionUtil.generateKeyPair();
|
||||||
var encryptedNonce = encrypt(serverKey.getPublic(), expected);
|
val encryptedNonce = encrypt(serverKey.getPublic(), expected);
|
||||||
|
|
||||||
assertTrue(EncryptionUtil.verifyNonce(expected, serverKey.getPrivate(), encryptedNonce));
|
assertTrue(EncryptionUtil.verifyNonce(expected, serverKey.getPrivate(), encryptedNonce));
|
||||||
}
|
}
|
||||||
@ -248,19 +248,19 @@ class EncryptionUtilTest {
|
|||||||
@Test
|
@Test
|
||||||
void testNonceIncorrect() throws Exception {
|
void testNonceIncorrect() throws Exception {
|
||||||
byte[] expected = {1, 2, 3, 4};
|
byte[] expected = {1, 2, 3, 4};
|
||||||
var serverKey = EncryptionUtil.generateKeyPair();
|
val serverKey = EncryptionUtil.generateKeyPair();
|
||||||
|
|
||||||
// flipped first character
|
// flipped first character
|
||||||
var encryptedNonce = encrypt(serverKey.getPublic(), new byte[]{0, 2, 3, 4});
|
val encryptedNonce = encrypt(serverKey.getPublic(), new byte[]{0, 2, 3, 4});
|
||||||
assertFalse(EncryptionUtil.verifyNonce(expected, serverKey.getPrivate(), encryptedNonce));
|
assertFalse(EncryptionUtil.verifyNonce(expected, serverKey.getPrivate(), encryptedNonce));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testNonceFailedDecryption() throws Exception {
|
void testNonceFailedDecryption() throws Exception {
|
||||||
byte[] expected = {1, 2, 3, 4};
|
byte[] expected = {1, 2, 3, 4};
|
||||||
var serverKey = EncryptionUtil.generateKeyPair();
|
val serverKey = EncryptionUtil.generateKeyPair();
|
||||||
// generate a new keypair that is different
|
// generate a new keypair that is different
|
||||||
var encryptedNonce = encrypt(EncryptionUtil.generateKeyPair().getPublic(), expected);
|
val encryptedNonce = encrypt(EncryptionUtil.generateKeyPair().getPublic(), expected);
|
||||||
|
|
||||||
assertThrows(GeneralSecurityException.class,
|
assertThrows(GeneralSecurityException.class,
|
||||||
() -> EncryptionUtil.verifyNonce(expected, serverKey.getPrivate(), encryptedNonce)
|
() -> EncryptionUtil.verifyNonce(expected, serverKey.getPrivate(), encryptedNonce)
|
||||||
@ -270,7 +270,7 @@ class EncryptionUtilTest {
|
|||||||
@Test
|
@Test
|
||||||
void testNonceIncorrectEmpty() {
|
void testNonceIncorrectEmpty() {
|
||||||
byte[] expected = {1, 2, 3, 4};
|
byte[] expected = {1, 2, 3, 4};
|
||||||
var serverKey = EncryptionUtil.generateKeyPair();
|
val serverKey = EncryptionUtil.generateKeyPair();
|
||||||
byte[] encryptedNonce = {};
|
byte[] encryptedNonce = {};
|
||||||
|
|
||||||
assertThrows(GeneralSecurityException.class,
|
assertThrows(GeneralSecurityException.class,
|
||||||
|
@ -32,13 +32,13 @@ import com.google.gson.annotations.JsonAdapter;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
|
|
||||||
import lombok.var;
|
import lombok.val;
|
||||||
|
|
||||||
public class SignatureTestData {
|
public class SignatureTestData {
|
||||||
|
|
||||||
public static SignatureTestData fromResource(String resourceName) throws IOException {
|
public static SignatureTestData fromResource(String resourceName) throws IOException {
|
||||||
var keyUrl = Resources.getResource(resourceName);
|
val keyUrl = Resources.getResource(resourceName);
|
||||||
var encodedSignature = Resources.toString(keyUrl, StandardCharsets.US_ASCII);
|
val encodedSignature = Resources.toString(keyUrl, StandardCharsets.US_ASCII);
|
||||||
|
|
||||||
return new Gson().fromJson(encodedSignature, SignatureTestData.class);
|
return new Gson().fromJson(encodedSignature, SignatureTestData.class);
|
||||||
}
|
}
|
||||||
|
@ -57,6 +57,7 @@ import net.md_5.bungee.api.chat.TextComponent;
|
|||||||
import net.md_5.bungee.api.connection.PendingConnection;
|
import net.md_5.bungee.api.connection.PendingConnection;
|
||||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||||
import net.md_5.bungee.api.connection.Server;
|
import net.md_5.bungee.api.connection.Server;
|
||||||
|
import net.md_5.bungee.api.plugin.Listener;
|
||||||
import net.md_5.bungee.api.plugin.Plugin;
|
import net.md_5.bungee.api.plugin.Plugin;
|
||||||
import net.md_5.bungee.api.plugin.PluginManager;
|
import net.md_5.bungee.api.plugin.PluginManager;
|
||||||
import net.md_5.bungee.api.scheduler.GroupedThreadFactory;
|
import net.md_5.bungee.api.scheduler.GroupedThreadFactory;
|
||||||
@ -100,7 +101,7 @@ public class FastLoginBungee extends Plugin implements PlatformPlugin<CommandSen
|
|||||||
//events
|
//events
|
||||||
PluginManager pluginManager = getProxy().getPluginManager();
|
PluginManager pluginManager = getProxy().getPluginManager();
|
||||||
|
|
||||||
ConnectListener connectListener = new ConnectListener(this, core.getAntiBot());
|
Listener connectListener = new ConnectListener(this, core.getAntiBot());
|
||||||
pluginManager.registerListener(this, connectListener);
|
pluginManager.registerListener(this, connectListener);
|
||||||
pluginManager.registerListener(this, new PluginMessageListener(this));
|
pluginManager.registerListener(this, new PluginMessageListener(this));
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user