mirror of
https://github.com/dmulloy2/ProtocolLib.git
synced 2024-09-29 07:37:29 +02:00
88 lines
3.4 KiB
Java
88 lines
3.4 KiB
Java
|
package com.comphenix.protocol.wrappers;
|
||
|
|
||
|
import com.comphenix.protocol.BukkitInitialization;
|
||
|
|
||
|
import java.util.concurrent.ThreadLocalRandom;
|
||
|
|
||
|
import net.minecraft.util.MinecraftEncryption;
|
||
|
|
||
|
import org.junit.jupiter.api.BeforeAll;
|
||
|
import org.junit.jupiter.api.Test;
|
||
|
|
||
|
import static org.junit.jupiter.api.Assertions.*;
|
||
|
|
||
|
class WrappedSaltedSignatureTest {
|
||
|
|
||
|
@BeforeAll
|
||
|
static void initializeBukkit() {
|
||
|
BukkitInitialization.initializeAll();
|
||
|
}
|
||
|
|
||
|
@Test
|
||
|
void testLoginSignature() {
|
||
|
long salt = ThreadLocalRandom.current().nextLong();
|
||
|
byte[] signature = new byte[512];
|
||
|
ThreadLocalRandom.current().nextBytes(signature);
|
||
|
|
||
|
// test key data conversion
|
||
|
WrappedSaltedSignature loginSignature = new WrappedSaltedSignature(salt, signature);
|
||
|
|
||
|
Object handle = loginSignature.getHandle();
|
||
|
MinecraftEncryption.b data = assertInstanceOf(MinecraftEncryption.b.class, handle);
|
||
|
|
||
|
assertTrue(data.a());
|
||
|
assertArrayEquals(signature, data.d());
|
||
|
assertEquals(salt, data.c());
|
||
|
|
||
|
// test key data unwrapping
|
||
|
WrappedSaltedSignature unwrapped = BukkitConverters.getWrappedSignatureConverter().getSpecific(data);
|
||
|
assertNotNull(unwrapped);
|
||
|
assertTrue(unwrapped.isSigned());
|
||
|
assertEquals(loginSignature.getSalt(), unwrapped.getSalt());
|
||
|
assertArrayEquals(loginSignature.getSignature(), unwrapped.getSignature());
|
||
|
assertArrayEquals(loginSignature.getSaltBytes(), unwrapped.getSaltBytes());
|
||
|
|
||
|
// test key data wrapping
|
||
|
Object wrappedData = BukkitConverters.getWrappedSignatureConverter().getGeneric(loginSignature);
|
||
|
MinecraftEncryption.b wrapped = assertInstanceOf(MinecraftEncryption.b.class, wrappedData);
|
||
|
|
||
|
assertTrue(wrapped.a());
|
||
|
assertEquals(loginSignature.getSalt(), wrapped.c());
|
||
|
assertArrayEquals(loginSignature.getSignature(), wrapped.d());
|
||
|
assertArrayEquals(loginSignature.getSaltBytes(), wrapped.b());
|
||
|
}
|
||
|
|
||
|
@Test
|
||
|
void testSignedMessageWithoutSignature() {
|
||
|
long salt = ThreadLocalRandom.current().nextLong();
|
||
|
byte[] signature = {};
|
||
|
|
||
|
// test key data conversion
|
||
|
WrappedSaltedSignature loginSignature = new WrappedSaltedSignature(salt, signature);
|
||
|
|
||
|
Object handle = loginSignature.getHandle();
|
||
|
MinecraftEncryption.b data = assertInstanceOf(MinecraftEncryption.b.class, handle);
|
||
|
|
||
|
assertFalse(data.a());
|
||
|
assertArrayEquals(signature, data.d());
|
||
|
assertEquals(salt, data.c());
|
||
|
|
||
|
// test key data unwrapping
|
||
|
WrappedSaltedSignature unwrapped = BukkitConverters.getWrappedSignatureConverter().getSpecific(data);
|
||
|
assertNotNull(unwrapped);
|
||
|
assertFalse(unwrapped.isSigned());
|
||
|
assertEquals(loginSignature.getSalt(), unwrapped.getSalt());
|
||
|
assertArrayEquals(loginSignature.getSignature(), unwrapped.getSignature());
|
||
|
assertArrayEquals(loginSignature.getSaltBytes(), unwrapped.getSaltBytes());
|
||
|
|
||
|
// test key data wrapping
|
||
|
Object wrappedData = BukkitConverters.getWrappedSignatureConverter().getGeneric(loginSignature);
|
||
|
MinecraftEncryption.b wrapped = assertInstanceOf(MinecraftEncryption.b.class, wrappedData);
|
||
|
|
||
|
assertFalse(wrapped.a());
|
||
|
assertEquals(loginSignature.getSalt(), wrapped.c());
|
||
|
assertArrayEquals(loginSignature.getSignature(), wrapped.d());
|
||
|
assertArrayEquals(loginSignature.getSaltBytes(), wrapped.b());
|
||
|
}
|
||
|
}
|