forked from TuxCoding/FastLogin
Use PublicKey instead of byte representation
This commit is contained in:
@ -56,8 +56,6 @@ import javax.crypto.spec.SecretKeySpec;
|
||||
/**
|
||||
* Encryption and decryption minecraft util for connection between servers
|
||||
* and paid Minecraft account clients.
|
||||
*
|
||||
* @see net.minecraft.server.MinecraftEncryption
|
||||
*/
|
||||
class EncryptionUtil {
|
||||
|
||||
@ -170,7 +168,7 @@ class EncryptionUtil {
|
||||
|
||||
private static String toSignable(ClientPublicKey clientPublicKey) {
|
||||
long expiry = clientPublicKey.getExpiry().toEpochMilli();
|
||||
String encoded = KEY_ENCODER.encodeToString(clientPublicKey.getKey());
|
||||
String encoded = KEY_ENCODER.encodeToString(clientPublicKey.getKey().getEncoded());
|
||||
return expiry + "-----BEGIN RSA PUBLIC KEY-----\n" + encoded + "\n-----END RSA PUBLIC KEY-----\n";
|
||||
}
|
||||
|
||||
@ -195,8 +193,7 @@ class EncryptionUtil {
|
||||
return cipher.doFinal(data);
|
||||
}
|
||||
|
||||
private static byte[] getServerIdHash(
|
||||
String sessionId, PublicKey publicKey, SecretKey sharedSecret)
|
||||
private static byte[] getServerIdHash(String sessionId, PublicKey publicKey, SecretKey sharedSecret)
|
||||
throws NoSuchAlgorithmException {
|
||||
// byte[] a(String var0, PublicKey var1, SecretKey var2)
|
||||
MessageDigest digest = MessageDigest.getInstance("SHA-1");
|
||||
|
@ -179,7 +179,7 @@ public class ProtocolLibListener extends PacketAdapter {
|
||||
Instant expires = profileKey.getExpireTime();
|
||||
PublicKey key = profileKey.getKey();
|
||||
byte[] signature = profileKey.getSignature();
|
||||
ClientPublicKey clientKey = new ClientPublicKey(expires, key.getEncoded(), signature);
|
||||
ClientPublicKey clientKey = new ClientPublicKey(expires, key, signature);
|
||||
try {
|
||||
return EncryptionUtil.verifyClientKey(clientKey, Instant.now());
|
||||
} catch (SignatureException | InvalidKeyException | NoSuchAlgorithmException ex) {
|
||||
|
@ -25,15 +25,16 @@
|
||||
*/
|
||||
package com.github.games647.fastlogin.bukkit.listener.protocollib.packet;
|
||||
|
||||
import java.security.PublicKey;
|
||||
import java.time.Instant;
|
||||
|
||||
public class ClientPublicKey {
|
||||
|
||||
private final Instant expiry;
|
||||
private final byte[] key;
|
||||
private final PublicKey key;
|
||||
private final byte[] signature;
|
||||
|
||||
public ClientPublicKey(Instant expiry, byte[] key, byte[] signature) {
|
||||
public ClientPublicKey(Instant expiry, PublicKey key, byte[] signature) {
|
||||
this.expiry = expiry;
|
||||
this.key = key;
|
||||
this.signature = signature;
|
||||
@ -43,7 +44,7 @@ public class ClientPublicKey {
|
||||
return expiry;
|
||||
}
|
||||
|
||||
public byte[] getKey() {
|
||||
public PublicKey getKey() {
|
||||
return key;
|
||||
}
|
||||
|
||||
|
@ -117,7 +117,7 @@ public class EncryptionUtilTest {
|
||||
RSAPublicKey publicKey = parsePublicKey(key);
|
||||
|
||||
byte[] signature = Base64.getDecoder().decode(object.getAsJsonPrimitive("signature").getAsString());
|
||||
return new ClientPublicKey(expires, publicKey.getEncoded(), signature);
|
||||
return new ClientPublicKey(expires, publicKey, signature);
|
||||
}
|
||||
|
||||
private RSAPublicKey parsePublicKey(String lines)
|
||||
@ -126,7 +126,6 @@ public class EncryptionUtilTest {
|
||||
Reader reader = new StringReader(lines);
|
||||
PemReader pemReader = new PemReader(reader)
|
||||
) {
|
||||
|
||||
PemObject pemObject = pemReader.readPemObject();
|
||||
byte[] content = pemObject.getContent();
|
||||
var pubKeySpec = new X509EncodedKeySpec(content);
|
||||
|
Reference in New Issue
Block a user