Improve session encryption handling

This commit is contained in:
Melledy
2025-10-30 01:01:21 -07:00
parent ebc48ab955
commit 89ecd29761
4 changed files with 26 additions and 3 deletions

View File

@@ -44,7 +44,7 @@ public class HandlerIkeReq extends NetHandler {
// Create response
var rsp = IKEResp.newInstance()
.setToken(session.getToken())
.setCipher(1) // 0 = gcm, 1 = chacha20
.setCipher(session.getEncryptMethod())
.setServerTs(Nebula.getCurrentTime())
.setPubKey(session.getServerPublicKey());

View File

@@ -38,6 +38,7 @@ public class AgentZoneHandler implements Handler {
byte[] sessionKey = AeadHelper.serverGarbleKey;
boolean hasKey3 = false;
int encryptMethod = 0;
// Get token
String token = ctx.header("X-Token");
@@ -59,6 +60,7 @@ public class AgentZoneHandler implements Handler {
// Set key
sessionKey = session.getKey();
encryptMethod = session.getEncryptMethod();
hasKey3 = true;
}
@@ -80,7 +82,7 @@ public class AgentZoneHandler implements Handler {
// Decrypt message
if (hasKey3) {
message = AeadHelper.decryptChaCha(message, sessionKey);
message = AeadHelper.decrypt(message, sessionKey, encryptMethod);
offset = 10;
} else {
message = AeadHelper.decryptBasic(message, sessionKey);
@@ -150,7 +152,7 @@ public class AgentZoneHandler implements Handler {
// Encrypt
if (hasKey3) {
result = AeadHelper.encryptChaCha(result, sessionKey);
result = AeadHelper.encrypt(result, sessionKey, encryptMethod);
} else {
result = AeadHelper.encryptGCM(result, sessionKey);
result = AeadHelper.encryptBasic(result, sessionKey);