mirror of
https://github.com/Melledy/Nebula.git
synced 2025-12-14 21:34:52 +01:00
Improve session encryption handling
This commit is contained in:
@@ -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());
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user