fix exceptions from net handlers, raise rsa key size to 4096
This commit is contained in:
parent
d1a0847303
commit
1b61f085e3
4 changed files with 12 additions and 12 deletions
|
@ -97,7 +97,7 @@ public class GuiServer extends Gui implements FieldCallback {
|
|||
if(GuiServer.this.keypair == null) {
|
||||
GuiServer.this.keypair = EncryptUtil.createKeypair();
|
||||
GuiServer.this.keyDigest = EncryptUtil.getXorSha512Hash(GuiServer.this.keypair.getPublic().getEncoded());
|
||||
GuiServer.this.keyLabel.setText("Anmelde-Pubkey: RSA-2048 " + GuiServer.this.keyDigest);
|
||||
GuiServer.this.keyLabel.setText("Anmelde-Pubkey: RSA-4096 " + GuiServer.this.keyDigest);
|
||||
GuiServer.this.keyButton.setText("Schlüsselpaar entfernen");
|
||||
GuiServer.this.passLabel.setText("Ersatz-Passwort (mind. 8 Zeichen)");
|
||||
GuiServer.this.copyKeyButton.enabled = true;
|
||||
|
@ -124,7 +124,7 @@ public class GuiServer extends Gui implements FieldCallback {
|
|||
GuiServer.this.encToggle.setValue(reqEnc);
|
||||
GuiServer.this.serverKey = key;
|
||||
GuiServer.this.serverDigest = sdigest;
|
||||
GuiServer.this.idLabel.setText("Server-Pubkey: " + (key != null ? "RSA-2048 " + GuiServer.this.serverDigest : "nicht vorhanden"));
|
||||
GuiServer.this.idLabel.setText("Server-Pubkey: " + (key != null ? "RSA-4096 " + GuiServer.this.serverDigest : "nicht vorhanden"));
|
||||
GuiServer.this.resetButton.enabled = key != null;
|
||||
GuiServer.this.copyIdButton.enabled = key != null;
|
||||
GuiServer.this.copyKeyButton.enabled = !confirmed;
|
||||
|
@ -138,7 +138,7 @@ public class GuiServer extends Gui implements FieldCallback {
|
|||
else {
|
||||
GuiServer.this.keypair = keys;
|
||||
GuiServer.this.keyDigest = digest;
|
||||
GuiServer.this.keyLabel.setText("Anmelde-Pubkey: RSA-2048 " + GuiServer.this.keyDigest);
|
||||
GuiServer.this.keyLabel.setText("Anmelde-Pubkey: RSA-4096 " + GuiServer.this.keyDigest);
|
||||
GuiServer.this.keyButton.setText("Schlüsselpaar entfernen");
|
||||
GuiServer.this.passLabel.setText("Ersatz-Passwort (mind. 8 Zeichen)");
|
||||
}
|
||||
|
@ -154,11 +154,11 @@ public class GuiServer extends Gui implements FieldCallback {
|
|||
}
|
||||
}, "Kopieren"));
|
||||
this.copyKeyButton.enabled = this.keypair != null;
|
||||
this.keyLabel = this.add(new Label(0, 100, 480, 20, "Anmelde-Pubkey: " + (this.keypair != null ? "RSA-2048 " + this.keyDigest : "nicht vorhanden"), true));
|
||||
this.keyLabel = this.add(new Label(0, 100, 480, 20, "Anmelde-Pubkey: " + (this.keypair != null ? "RSA-4096 " + this.keyDigest : "nicht vorhanden"), true));
|
||||
this.encToggle = this.add(new Toggle(0, 250, 480, 24, false, this.server.requiresEncryption(), null, "Nur Verschlüsselte Verbindung akzeptieren"));
|
||||
this.serverKey = this.server.getServerKey();
|
||||
this.serverDigest = this.serverKey == null ? null : EncryptUtil.getXorSha512Hash(this.serverKey.getEncoded());
|
||||
this.idLabel = this.add(new Label(0, 280, 480, 20, "Server-Pubkey: " + (this.serverKey != null ? "RSA-2048 " + this.serverDigest : "nicht vorhanden"), true));
|
||||
this.idLabel = this.add(new Label(0, 280, 480, 20, "Server-Pubkey: " + (this.serverKey != null ? "RSA-4096 " + this.serverDigest : "nicht vorhanden"), true));
|
||||
this.resetButton = this.add(new ActButton(0, 300, 391, 24, new ButtonCallback() {
|
||||
public void use(ActButton elem, PressType action) {
|
||||
if(GuiServer.this.serverKey != null) {
|
||||
|
|
|
@ -86,13 +86,13 @@ public class ClientLoginHandler extends NetHandler implements IClientLoginHandle
|
|||
ClientLoginHandler.this.connection.closeChannel("Verbindung wurde abgebrochen");
|
||||
}
|
||||
}
|
||||
}, "Die Identität des Servers ist unbekannt", "Es wurde noch nie mit diesem Server verbunden.\nSoll die Verbindung wirklich fortgesetzt werden?\n\nDie Pubkey-ID des Servers lautet:\nRSA-2048 " + EncryptUtil.getXorSha512Hash(pubkey.getEncoded()) + "\n\nDer öffentliche Schlüssel des Servers lautet:\n" + Base64.getEncoder().encodeToString(pubkey.getEncoded()), "Verbindung herstellen", "Abbrechen und trennen"));
|
||||
}, "Die Identität des Servers ist unbekannt", "Es wurde noch nie mit diesem Server verbunden.\nSoll die Verbindung wirklich fortgesetzt werden?\n\nDie Pubkey-ID des Servers lautet:\nRSA-4096 " + EncryptUtil.getXorSha512Hash(pubkey.getEncoded()) + "\n\nDer öffentliche Schlüssel des Servers lautet:\n" + Base64.getEncoder().encodeToString(pubkey.getEncoded()), "Verbindung herstellen", "Abbrechen und trennen"));
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
else if(!this.server.getServerKey().equals(pubkey)) {
|
||||
this.connection.closeChannel("Die Identität des Servers hat sich geändert\n\nDer Server hat einen anderen öffentlichen Schlüssel als vorher bekannt war, dies kann bedeuten dass der Inhaber jetzt einen anderen Schlüssel verwendet oder sich ein anderer Server als dieser ausgibt (\"Man-in-the-middle-attack\").\n\nDie Pubkey-ID des Servers lautet:\nRSA-2048 " + EncryptUtil.getXorSha512Hash(pubkey.getEncoded()) + "\n\nDer öffentliche Schlüssel des Servers lautet:\n" + Base64.getEncoder().encodeToString(pubkey.getEncoded()) + "\n\nDie vertrauenswürdige Pubkey-ID lautet:\nRSA-2048 " + EncryptUtil.getXorSha512Hash(this.server.getServerKey().getEncoded()) + "\n\nDer vertrauenswürdige Schlüssel lautet:\n" + Base64.getEncoder().encodeToString(this.server.getServerKey().getEncoded()) +
|
||||
this.connection.closeChannel("Die Identität des Servers hat sich geändert\n\nDer Server hat einen anderen öffentlichen Schlüssel als vorher bekannt war, dies kann bedeuten dass der Inhaber jetzt einen anderen Schlüssel verwendet oder sich ein anderer Server als dieser ausgibt (\"Man-in-the-middle-attack\").\n\nDie Pubkey-ID des Servers lautet:\nRSA-4096 " + EncryptUtil.getXorSha512Hash(pubkey.getEncoded()) + "\n\nDer öffentliche Schlüssel des Servers lautet:\n" + Base64.getEncoder().encodeToString(pubkey.getEncoded()) + "\n\nDie vertrauenswürdige Pubkey-ID lautet:\nRSA-4096 " + EncryptUtil.getXorSha512Hash(this.server.getServerKey().getEncoded()) + "\n\nDer vertrauenswürdige Schlüssel lautet:\n" + Base64.getEncoder().encodeToString(this.server.getServerKey().getEncoded()) +
|
||||
"\n\nFalls der Server trotzdem vertrauenswürdig wirkt, kann die Server-Identifizierung im den Einstellungen von '" + this.server.getName() + "' zurückgesetzt werden.");
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -44,7 +44,7 @@ public class EncryptUtil {
|
|||
public static KeyPair createKeypair() {
|
||||
try {
|
||||
KeyPairGenerator pairgen = KeyPairGenerator.getInstance("RSA");
|
||||
pairgen.initialize(2048);
|
||||
pairgen.initialize(4096);
|
||||
return pairgen.generateKeyPair();
|
||||
}
|
||||
catch(NoSuchAlgorithmException e) {
|
||||
|
@ -142,7 +142,7 @@ public class EncryptUtil {
|
|||
}
|
||||
|
||||
public static String getArmoredPubkey(PublicKey pubkey, String cn) {
|
||||
StringBuilder sb = new StringBuilder("tcr-rsa-2048 ");
|
||||
StringBuilder sb = new StringBuilder("tcr-rsa-4096 ");
|
||||
sb.append(Base64.getEncoder().encodeToString(pubkey.getEncoded()));
|
||||
sb.append(' ').append(Base64.getEncoder().encodeToString(crc24(pubkey.getEncoded())));
|
||||
return cn == null || cn.isEmpty() ? sb.toString() : sb.append(' ').append(Util.sanitizeCommonName(cn)).toString();
|
||||
|
@ -152,8 +152,8 @@ public class EncryptUtil {
|
|||
String[] tok = armor.trim().split(" ");
|
||||
if(tok.length != 3 && tok.length != 4)
|
||||
throw new IllegalArgumentException("Key muss aus 3 oder 4 Segmenten bestehen");
|
||||
if(!tok[0].equals("tcr-rsa-2048"))
|
||||
throw new IllegalArgumentException("Algorithmus '" + tok[0] + "' ist nicht unterstützt, es wird derzeit nur tcr-rsa-2048 verwendet");
|
||||
if(!tok[0].equals("tcr-rsa-4096"))
|
||||
throw new IllegalArgumentException("Algorithmus '" + tok[0] + "' ist nicht unterstützt, es wird derzeit nur tcr-rsa-4096 verwendet");
|
||||
byte[] key;
|
||||
try {
|
||||
key = Base64.getDecoder().decode(tok[1]);
|
||||
|
|
|
@ -490,6 +490,6 @@ int utf_len(const char *str) {
|
|||
}
|
||||
|
||||
public static void throwUnchecked(Throwable t) {
|
||||
throw (RuntimeException)t;
|
||||
throw t instanceof RuntimeException ? (RuntimeException)t : new RuntimeException(t);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue