Fix
This commit is contained in:
parent
bd2184006d
commit
e59f16c8fb
@ -8,7 +8,7 @@ org.gradle.jvmargs=-Xmx1G
|
|||||||
loader_version=0.15.9
|
loader_version=0.15.9
|
||||||
|
|
||||||
# Mod Properties
|
# Mod Properties
|
||||||
mod_version = 1.0
|
mod_version = 0.2
|
||||||
maven_group = systems.brn
|
maven_group = systems.brn
|
||||||
archives_base_name = chatencryptor
|
archives_base_name = chatencryptor
|
||||||
|
|
||||||
|
@ -14,13 +14,10 @@ import net.minecraft.util.Identifier;
|
|||||||
|
|
||||||
import javax.crypto.KeyGenerator;
|
import javax.crypto.KeyGenerator;
|
||||||
import javax.crypto.SecretKey;
|
import javax.crypto.SecretKey;
|
||||||
import javax.crypto.SecretKeyFactory;
|
|
||||||
import javax.crypto.spec.IvParameterSpec;
|
import javax.crypto.spec.IvParameterSpec;
|
||||||
import javax.crypto.spec.SecretKeySpec;
|
import javax.crypto.spec.SecretKeySpec;
|
||||||
import java.security.NoSuchAlgorithmException;
|
import java.security.NoSuchAlgorithmException;
|
||||||
import java.security.SecureRandom;
|
import java.security.SecureRandom;
|
||||||
import java.security.spec.InvalidKeySpecException;
|
|
||||||
import java.security.spec.PKCS8EncodedKeySpec;
|
|
||||||
import java.util.Base64;
|
import java.util.Base64;
|
||||||
|
|
||||||
public class Config {
|
public class Config {
|
||||||
@ -111,18 +108,18 @@ public class Config {
|
|||||||
.description(OptionDescription.of(Text.literal("Here you can set some generic settings.")))
|
.description(OptionDescription.of(Text.literal("Here you can set some generic settings.")))
|
||||||
.option(Option.<Boolean>createBuilder()
|
.option(Option.<Boolean>createBuilder()
|
||||||
.name(Text.literal("Enabled"))
|
.name(Text.literal("Enabled"))
|
||||||
.description(OptionDescription.of(Text.literal("This will enable the encryption.")))
|
.description(OptionDescription.of(Text.literal("This will enable the encryption. You can toggle it by sending with shift+enter for that message.")))
|
||||||
.binding(false, () -> HANDLER.instance().enabled, this::setEnabled)
|
.binding(false, () -> HANDLER.instance().enabled, this::setEnabled)
|
||||||
.controller(TickBoxControllerBuilder::create)
|
.controller(TickBoxControllerBuilder::create)
|
||||||
.build())
|
.build())
|
||||||
.option(Option.<String>createBuilder()
|
.option(Option.<String>createBuilder()
|
||||||
.name(Text.literal("Secret key"))
|
.name(Text.literal("Initialization vector"))
|
||||||
.description(OptionDescription.of(Text.literal("This be the key that will be used.")))
|
.description(OptionDescription.of(Text.literal("This be the key that will be used.")))
|
||||||
.binding(getDefaultIv(), () -> HANDLER.instance().Iv, this::setIv)
|
.binding(getDefaultIv(), () -> HANDLER.instance().Iv, this::setIv)
|
||||||
.controller(StringControllerBuilder::create)
|
.controller(StringControllerBuilder::create)
|
||||||
.build())
|
.build())
|
||||||
.option(Option.<String>createBuilder()
|
.option(Option.<String>createBuilder()
|
||||||
.name(Text.literal("Initialization vector"))
|
.name(Text.literal("Secret key"))
|
||||||
.description(OptionDescription.of(Text.literal("This be the initialization vector that will be used.")))
|
.description(OptionDescription.of(Text.literal("This be the initialization vector that will be used.")))
|
||||||
.binding(getDefaultKey(), () -> HANDLER.instance().SecretKey, this::setSecretKey)
|
.binding(getDefaultKey(), () -> HANDLER.instance().SecretKey, this::setSecretKey)
|
||||||
.controller(StringControllerBuilder::create)
|
.controller(StringControllerBuilder::create)
|
||||||
|
@ -11,6 +11,7 @@ import net.minecraft.network.message.SignedMessage;
|
|||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
import net.minecraft.text.TranslatableTextContent;
|
import net.minecraft.text.TranslatableTextContent;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
import org.lwjgl.glfw.GLFW;
|
||||||
|
|
||||||
import javax.crypto.BadPaddingException;
|
import javax.crypto.BadPaddingException;
|
||||||
import javax.crypto.Cipher;
|
import javax.crypto.Cipher;
|
||||||
@ -27,7 +28,6 @@ import java.time.Instant;
|
|||||||
public class SecureChat implements ClientModInitializer {
|
public class SecureChat implements ClientModInitializer {
|
||||||
|
|
||||||
private boolean decryptChatMessage(Text message, @Nullable SignedMessage signedMessage, @Nullable GameProfile sender, MessageType.Parameters params, Instant receptionTimestamp) {
|
private boolean decryptChatMessage(Text message, @Nullable SignedMessage signedMessage, @Nullable GameProfile sender, MessageType.Parameters params, Instant receptionTimestamp) {
|
||||||
Config.HANDLER.load();
|
|
||||||
TranslatableTextContent content = (TranslatableTextContent) message.getContent();
|
TranslatableTextContent content = (TranslatableTextContent) message.getContent();
|
||||||
String message_content = content.getArg(1).getString();
|
String message_content = content.getArg(1).getString();
|
||||||
String player_name = content.getArg(0).getString();
|
String player_name = content.getArg(0).getString();
|
||||||
@ -35,7 +35,7 @@ public class SecureChat implements ClientModInitializer {
|
|||||||
try {
|
try {
|
||||||
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
|
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
|
||||||
cipher.init(Cipher.DECRYPT_MODE, Config.HANDLER.instance().getRawKey(), Config.HANDLER.instance().getRawIv());
|
cipher.init(Cipher.DECRYPT_MODE, Config.HANDLER.instance().getRawKey(), Config.HANDLER.instance().getRawIv());
|
||||||
String strippedMessage = message_content.replace("®", "");
|
String strippedMessage = message_content.substring(1, message_content.length() - 1);
|
||||||
byte[] decodedMessage = ChatCoder.decodeFromBmp(strippedMessage);
|
byte[] decodedMessage = ChatCoder.decodeFromBmp(strippedMessage);
|
||||||
cipher.update(decodedMessage);
|
cipher.update(decodedMessage);
|
||||||
String decryptedMessage = new String(cipher.doFinal());
|
String decryptedMessage = new String(cipher.doFinal());
|
||||||
@ -52,8 +52,7 @@ public class SecureChat implements ClientModInitializer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private String encryptChatMessage(String message) {
|
private String encryptChatMessage(String message) {
|
||||||
Config.HANDLER.load();
|
if(Config.HANDLER.instance().isEnabled() ^ isShiftPressed()){
|
||||||
if(Config.HANDLER.instance().isEnabled()){
|
|
||||||
String encodedMessage;
|
String encodedMessage;
|
||||||
try {
|
try {
|
||||||
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
|
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
|
||||||
@ -63,7 +62,7 @@ public class SecureChat implements ClientModInitializer {
|
|||||||
encodedMessage = ChatCoder.encodeToBmp(encryptedMessage);
|
encodedMessage = ChatCoder.encodeToBmp(encryptedMessage);
|
||||||
} catch (IllegalBlockSizeException | BadPaddingException | InvalidKeyException | NoSuchPaddingException | InvalidAlgorithmParameterException |
|
} catch (IllegalBlockSizeException | BadPaddingException | InvalidKeyException | NoSuchPaddingException | InvalidAlgorithmParameterException |
|
||||||
NoSuchAlgorithmException e) {
|
NoSuchAlgorithmException e) {
|
||||||
return message;
|
return "";
|
||||||
}
|
}
|
||||||
return '®' + encodedMessage + '®';
|
return '®' + encodedMessage + '®';
|
||||||
}
|
}
|
||||||
@ -76,8 +75,12 @@ public class SecureChat implements ClientModInitializer {
|
|||||||
public void onInitializeClient() {
|
public void onInitializeClient() {
|
||||||
ClientLifecycleEvents.CLIENT_STARTED.register(client -> {
|
ClientLifecycleEvents.CLIENT_STARTED.register(client -> {
|
||||||
// Register event listener for ClientTickEvents.END_CLIENT_TICK
|
// Register event listener for ClientTickEvents.END_CLIENT_TICK
|
||||||
|
Config.HANDLER.load();
|
||||||
ClientReceiveMessageEvents.ALLOW_CHAT.register(this::decryptChatMessage);
|
ClientReceiveMessageEvents.ALLOW_CHAT.register(this::decryptChatMessage);
|
||||||
ClientSendMessageEvents.MODIFY_CHAT.register(this::encryptChatMessage);
|
ClientSendMessageEvents.MODIFY_CHAT.register(this::encryptChatMessage);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
private static boolean isShiftPressed() {
|
||||||
|
return GLFW.glfwGetKey(MinecraftClient.getInstance().getWindow().getHandle(), GLFW.GLFW_KEY_LEFT_SHIFT) == GLFW.GLFW_PRESS;
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user