Skip to content

Commit a9f4e86

Browse files
committed
Seperate Crypto and Networking
make crypto optional for networking
1 parent 62798e9 commit a9f4e86

File tree

6 files changed

+23
-94
lines changed

6 files changed

+23
-94
lines changed

nexo-net-client/src/main/java/com/nexoscript/nexonet/client/Client.java

Lines changed: 4 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package com.nexoscript.nexonet.client;
22

3-
import com.nexoscript.nexonet.api.crypto.CryptoType;
4-
import com.nexoscript.nexonet.api.crypto.KeySize;
53
import com.nexoscript.nexonet.api.events.client.ClientConnectEvent;
64
import com.nexoscript.nexonet.api.events.client.ClientDisconnectEvent;
75
import com.nexoscript.nexonet.api.events.client.ClientReceivedEvent;
@@ -15,7 +13,6 @@
1513
import com.nexoscript.nexonet.packet.impl.AuthPacket;
1614
import com.nexoscript.nexonet.packet.impl.AuthResponsePacket;
1715
import com.nexoscript.nexonet.packet.impl.DisconnectPacket;
18-
import org.json.JSONObject;
1916

2017
import java.io.*;
2118
import java.net.Socket;
@@ -38,36 +35,17 @@ public class Client implements IClient {
3835
private ClientSendEvent clientSendEvent;
3936
private IPacketManager packetManager;
4037

41-
public Client(boolean useCrypto) {
42-
this.logging = false;
43-
this.logger = new NexonetLogger(false);
44-
if(useCrypto) {
45-
this.packetManager = new PacketManager(this.logger, "secret.key", CryptoType.AES, KeySize.KEY_128);
46-
} else {
47-
this.packetManager = new PacketManager(this.logger);
48-
}
49-
this.initialize();
50-
}
51-
52-
public Client(boolean logging, boolean useCrypto) {
38+
public Client(boolean logging) {
5339
this.logging = logging;
5440
this.logger = new NexonetLogger(logging);
55-
if(useCrypto) {
56-
this.packetManager = new PacketManager(this.logger, "secret.key", CryptoType.AES, KeySize.KEY_128);
57-
} else {
58-
this.packetManager = new PacketManager(this.logger);
59-
}
41+
this.packetManager = new PacketManager(this.logger);
6042
this.initialize();
6143
}
6244

63-
public Client(boolean logging, boolean useCrypto, String path, CryptoType type, KeySize size) {
45+
public Client() {
6446
this.logging = false;
6547
this.logger = new NexonetLogger(false);
66-
if(useCrypto) {
67-
this.packetManager = new PacketManager(this.logger, path, type, size);
68-
} else {
69-
this.packetManager = new PacketManager(this.logger);
70-
}
48+
this.packetManager = new PacketManager();
7149
this.initialize();
7250
}
7351

nexo-net-packet/src/main/java/com/nexoscript/nexonet/packet/PacketManager.java

Lines changed: 4 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
11
package com.nexoscript.nexonet.packet;
22

3-
import com.nexoscript.nexonet.api.crypto.CryptoType;
4-
import com.nexoscript.nexonet.api.crypto.KeySize;
53
import com.nexoscript.nexonet.api.packet.IPacketManager;
64
import com.nexoscript.nexonet.api.packet.Packet;
7-
import com.nexoscript.nexonet.logger.LoggingType;
85
import com.nexoscript.nexonet.logger.NexonetLogger;
9-
import com.nexoscript.nexonet.packet.crypto.CryptoManager;
106
import org.json.JSONObject;
117

128
import java.lang.reflect.Field;
@@ -16,21 +12,15 @@
1612
public class PacketManager implements IPacketManager {
1713
private final Map<String, Class<? extends Packet>> packetRegistry;
1814
private final NexonetLogger logger;
19-
private final CryptoManager cryptoManager;
20-
private boolean useEncryption = true;
2115

22-
public PacketManager(NexonetLogger logger, String path, CryptoType type, KeySize size) {
16+
public PacketManager(NexonetLogger logger) {
2317
this.packetRegistry = new HashMap<>();
2418
this.logger = logger;
25-
this.cryptoManager = new CryptoManager(this.logger);
26-
this.cryptoManager.initCrypto(path, type, size);
2719
}
2820

29-
public PacketManager(NexonetLogger logger) {
21+
public PacketManager() {
3022
this.packetRegistry = new HashMap<>();
31-
this.logger = logger;
32-
this.cryptoManager = new CryptoManager(this.logger);
33-
this.useEncryption = false;
23+
this.logger = new NexonetLogger(false);
3424
}
3525

3626
public void registerPacketType(String type, Class<? extends Packet> clazz) {
@@ -49,23 +39,12 @@ public String toJson(Packet packet) {
4939
} catch (IllegalAccessException e) {
5040
e.printStackTrace();
5141
}
52-
if(useEncryption) {
53-
this.logger.log(LoggingType.INFO, "[Crypto Decrypted] : " + json);
54-
String s = this.cryptoManager.encryptString(json.toString());
55-
this.logger.log(LoggingType.INFO, "[Crypto Encrypted] : " + s);
56-
return s;
57-
}
5842
return json.toString();
5943
}
6044

6145
public Packet fromJson(String jsonString) {
6246
try {
63-
String encrytedString = jsonString;
64-
this.logger.log(LoggingType.INFO, "[Crypto Encrypted] : " + encrytedString);
65-
if(useEncryption)
66-
encrytedString = this.cryptoManager.decryptString(jsonString);
67-
this.logger.log(LoggingType.INFO, "[Crypto Decrypted] : " + encrytedString);
68-
JSONObject json = new JSONObject(encrytedString);
47+
JSONObject json = new JSONObject("{" + jsonString);
6948
String type = json.getString("type");
7049
Class<? extends Packet> clazz = this.packetRegistry.get(type);
7150
if (clazz == null) {

nexo-net-packet/src/main/java/com/nexoscript/nexonet/packet/crypto/CryptoManager.java

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,9 @@ public void initCrypto(String path, CryptoType type, KeySize size) {
5858
public String encryptString(String data) {
5959
try {
6060
this.logger.log(LoggingType.INFO, "Try to encode String");
61-
logger.log(LoggingType.INFO, "Crypto: " + data);
62-
data = data.replace('{', '=').replace('}', '+');
63-
logger.log(LoggingType.INFO, "Crypto: " + data);
64-
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
65-
return Base64.getEncoder().encodeToString(cipher.doFinal(data.getBytes()));
61+
this.logger.log(LoggingType.INFO, "Crypto: " + data);
62+
this.cipher.init(Cipher.ENCRYPT_MODE, secretKey);
63+
return Base64.getEncoder().encodeToString(this.cipher.doFinal(data.getBytes()));
6664
} catch (InvalidKeyException | IllegalBlockSizeException | BadPaddingException e) {
6765
throw new RuntimeException(e);
6866
}
@@ -72,19 +70,16 @@ public String encryptString(String data) {
7270
public String decryptString(String data) {
7371
try {
7472
this.logger.log(LoggingType.INFO, "Try to decode String");
75-
cipher.init(Cipher.DECRYPT_MODE, secretKey);
73+
this.cipher.init(Cipher.DECRYPT_MODE, this.secretKey);
7674
String s = new String(cipher.doFinal(Base64.getDecoder().decode(data)));
7775
try {
7876
byte[] decoded = cipher.doFinal(Base64.getDecoder().decode(data));
79-
logger.log(LoggingType.INFO, "Decoded length: " + decoded.length);
77+
this.logger.log(LoggingType.INFO, "Decoded length: " + decoded.length);
8078
} catch (IllegalArgumentException e) {
81-
logger.log(LoggingType.ERROR, "Invalid Base64 input: " + data);
79+
this.logger.log(LoggingType.ERROR, "Invalid Base64 input: " + data);
8280
throw new RuntimeException("Invalid Base64 encoding", e);
8381
}
84-
//s = '=' + s;
85-
logger.log(LoggingType.INFO, "Crypto: " + s);
86-
s = s.replace('=', '{').replace('+', '}');
87-
logger.log(LoggingType.INFO, "Crypto: " + s);
82+
this.logger.log(LoggingType.INFO, "Crypto: " + s);
8883
return s;
8984
} catch (InvalidKeyException | BadPaddingException | IllegalBlockSizeException e) {
9085
throw new RuntimeException(e);

nexo-net-server/src/main/java/com/nexoscript/nexonet/server/Server.java

Lines changed: 6 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -39,48 +39,25 @@ public class Server implements IServer {
3939
private ServerSendEvent serverSendEvent;
4040
private IPacketManager packetManager;
4141

42-
public Server(boolean useCrypto) {
42+
public Server() {
4343
this.logging = false;
4444
this.logger = new NexonetLogger(false);
45-
if(useCrypto) {
46-
this.packetManager = new PacketManager(this.logger, "secret.key", CryptoType.AES, KeySize.KEY_128);
47-
} else {
48-
this.packetManager = new PacketManager(this.logger);
49-
}
45+
this.packetManager = new PacketManager();
5046
this.initialize();
5147
}
5248

53-
public Server(String hostname, boolean useCrypto) {
49+
public Server(String hostname) {
5450
this.hostname = hostname;
5551
this.logging = false;
5652
this.logger = new NexonetLogger(false);
57-
if(useCrypto) {
58-
this.packetManager = new PacketManager(this.logger, "secret.key", CryptoType.AES, KeySize.KEY_128);
59-
} else {
60-
this.packetManager = new PacketManager(this.logger);
61-
}
53+
this.packetManager = new PacketManager();
6254
this.initialize();
6355
}
6456

65-
public Server(boolean logging, boolean useCrypto) {
57+
public Server(boolean logging) {
6658
this.logging = logging;
6759
this.logger = new NexonetLogger(logging);
68-
if(useCrypto) {
69-
this.packetManager = new PacketManager(this.logger, "secret.key", CryptoType.AES, KeySize.KEY_128);
70-
} else {
71-
this.packetManager = new PacketManager(this.logger);
72-
}
73-
this.initialize();
74-
}
75-
76-
public Server(boolean logging, boolean useCrypto, String path, CryptoType type, KeySize size) {
77-
this.logging = logging;
78-
this.logger = new NexonetLogger(logging);
79-
if(useCrypto) {
80-
this.packetManager = new PacketManager(this.logger, path, type, size);
81-
} else {
82-
this.packetManager = new PacketManager(this.logger);
83-
}
60+
this.packetManager = new PacketManager(this.logger);
8461
this.initialize();
8562
}
8663

nexo-net-test/src/main/java/com/nexoscript/MyClient.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
public class MyClient {
77

88
public static void main(String[] args) {
9-
Client client = new Client(true, true);
9+
Client client = new Client(true);
1010
client.getPacketManager().registerPacketType("MESSAGE_PACKET", MessagePacket.class);
1111
client.onClientConnect(iClient -> {
1212
System.out.println("Client connected with ID: " + iClient.getID());

nexo-net-test/src/main/java/com/nexoscript/MyServer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
public class MyServer {
77

88
public static void main(String[] args) {
9-
Server server = new Server(true, true);
9+
Server server = new Server(true);
1010
server.getPacketManager().registerPacketType("MESSAGE_PACKET", MessagePacket.class);
1111
server.onClientConnect(client -> {
1212
System.out.println("Client connected with ID: " + client.getId());

0 commit comments

Comments
 (0)