diff --git a/pom.xml b/pom.xml
index f3ff738..2e24596 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
org.openautonomousconnection
Protocol
- 1.0.0-BETA.7.5
+ 1.0.0-BETA.7.6
Open Autonomous Connection
https://open-autonomous-connection.org/
diff --git a/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/beta/AuthPacket.java b/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/beta/AuthPacket.java
index 9bef9cc..0793dad 100644
--- a/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/beta/AuthPacket.java
+++ b/src/main/java/org/openautonomousconnection/protocol/packets/v1_0_0/beta/AuthPacket.java
@@ -18,6 +18,7 @@ import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.IOException;
+import java.security.NoSuchAlgorithmException;
import java.util.UUID;
/**
@@ -54,12 +55,10 @@ public final class AuthPacket extends OACPacket {
@Override
public void onWrite(DataOutputStream objectOutputStream) throws IOException {
- if (protocolBridge.isRunningAsWebServer()) {
- objectOutputStream.writeUTF(protocolBridge.getProtocolVersion().name());
- return;
- }
+
if (protocolBridge.isRunningAsINSServer()) {
+ objectOutputStream.writeBoolean(true);
objectOutputStream.writeUTF(protocolBridge.getProtocolVersion().name());
String caPem = "N/A";
@@ -82,6 +81,12 @@ public final class AuthPacket extends OACPacket {
return;
}
+ if (protocolBridge.isRunningAsServer()) {
+ objectOutputStream.writeBoolean(false);
+ objectOutputStream.writeUTF(protocolBridge.getProtocolVersion().name());
+ return;
+ }
+
if (protocolBridge.isRunningAsClient()) {
UUID clientConnectionId = null;
@@ -134,9 +139,10 @@ public final class AuthPacket extends OACPacket {
}
if (protocolBridge.isRunningAsClient()) {
+ boolean fromINS = objectInputStream.readBoolean();
ProtocolVersion serverVersion = ProtocolVersion.valueOf(objectInputStream.readUTF());
- try {
+ if (fromINS) {
if (!protocolBridge.isVersionSupported(serverVersion)) {
setResponseCode(INSResponseStatus.RESPONSE_AUTH_FAILED);
if (protocolBridge.getProtocolClient() != null && protocolBridge.getProtocolClient().getClientINSConnection() != null) {
@@ -155,9 +161,16 @@ public final class AuthPacket extends OACPacket {
setResponseCode(INSResponseStatus.RESPONSE_AUTH_FAILED);
} else {
byte[] caBytes = caPem.getBytes(java.nio.charset.StandardCharsets.UTF_8);
- java.security.MessageDigest md = java.security.MessageDigest.getInstance("SHA-256");
- String fp = java.util.HexFormat.of().formatHex(md.digest(caBytes));
+ String fp = "N/A";
+ try {
+ java.security.MessageDigest md = java.security.MessageDigest.getInstance("SHA-256");
+ fp = java.util.HexFormat.of().formatHex(md.digest(caBytes));
+ } catch (NoSuchAlgorithmException ignored) {
+ setResponseCode(INSResponseStatus.RESPONSE_AUTH_FAILED);
+ protocolBridge.getProtocolClient().getClientINSConnection().disconnect();
+ return;
+ }
File caPemFile = new File(protocolBridge.getProtocolClient().getFolderStructure().publicCAFolder, caPrefix + ".pem");
@@ -165,10 +178,9 @@ public final class AuthPacket extends OACPacket {
protocolBridge.getProtocolClient().getFolderStructure().publicCAFolder,
caPrefix + ".fp");
- boolean allowWritePem = false;
if (fpFile.exists()) {
- String existing = FileUtils.readFileLines(fpFile).get(0);
+ String existing = FileUtils.readFileLines(fpFile).getFirst();
if (!existing.equalsIgnoreCase(fp)) {
if (!protocolBridge.getProtocolClient().trustNewINSFingerprint(existing, fp)) {
setResponseCode(INSResponseStatus.RESPONSE_AUTH_FAILED);
@@ -176,7 +188,6 @@ public final class AuthPacket extends OACPacket {
return;
} else {
FileUtils.writeFile(fpFile, fp + System.lineSeparator());
- allowWritePem = true;
}
}
} else {
@@ -186,19 +197,10 @@ public final class AuthPacket extends OACPacket {
return;
} else {
FileUtils.writeFile(fpFile, fp + System.lineSeparator());
- allowWritePem = true;
}
}
- if (!allowWritePem) {
- setResponseCode(INSResponseStatus.RESPONSE_AUTH_FAILED);
- return;
- }
-
try {
- if (!caPemFile.exists()) caPemFile.createNewFile();
-
- // FIX: Correct file assignments.
FileUtils.writeFile(caPemFile, caPem);
} catch (Exception exception) {
protocolBridge.getLogger().exception("Failed to create/save ca-files", exception);
@@ -210,7 +212,7 @@ public final class AuthPacket extends OACPacket {
protocolBridge.getProtocolValues().eventManager.executeEvent(
new ConnectedToProtocolINSServerEvent(protocolBridge.getProtocolClient())
);
- } catch (Exception ignored) {
+ } else {
protocolBridge.getProtocolClient().setServerVersion(serverVersion);
protocolBridge.getProtocolValues().eventManager.executeEvent(
new ConnectedToProtocolServerEvent(protocolBridge.getProtocolClient())