summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LoginWindow.java
diff options
context:
space:
mode:
authorSimon Rettberg2015-09-10 12:06:04 +0200
committerSimon Rettberg2015-09-10 12:06:04 +0200
commita4a47f3a636df76885275136f6c0757207c72763 (patch)
tree75930c80306e48acea8e1978b4eae20daff417a8 /dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LoginWindow.java
parent[*] Improve SSL handling (diff)
downloadtutor-module-a4a47f3a636df76885275136f6c0757207c72763.tar.gz
tutor-module-a4a47f3a636df76885275136f6c0757207c72763.tar.xz
tutor-module-a4a47f3a636df76885275136f6c0757207c72763.zip
[client] Remember finger prints supplied by master server
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LoginWindow.java')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LoginWindow.java24
1 files changed, 24 insertions, 0 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LoginWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LoginWindow.java
index c16c4f0a..47fc0178 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LoginWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LoginWindow.java
@@ -17,14 +17,17 @@ import javax.swing.DefaultComboBoxModel;
import javax.swing.JFrame;
import org.apache.log4j.Logger;
+import org.apache.thrift.TBaseHelper;
import org.apache.thrift.TException;
import org.openslx.bwlp.thrift.iface.Organization;
+import org.openslx.bwlp.thrift.iface.Satellite;
import org.openslx.dozmod.App;
import org.openslx.dozmod.Config;
import org.openslx.dozmod.authentication.Authenticator;
import org.openslx.dozmod.authentication.Authenticator.AuthenticationData;
import org.openslx.dozmod.authentication.Authenticator.AuthenticatorCallback;
import org.openslx.dozmod.authentication.EcpAuthenticator;
+import org.openslx.dozmod.authentication.FingerprintManager;
import org.openslx.dozmod.authentication.ShibbolethEcp;
import org.openslx.dozmod.authentication.ShibbolethEcp.ReturnCode;
import org.openslx.dozmod.authentication.TestAccountAuthenticator;
@@ -330,6 +333,8 @@ public class LoginWindow extends LoginWindowLayout {
*/
private void postSuccessfulLogin(AuthenticationData data) {
LOGGER.info(loginType.toString() + " succeeded, token " + data.satelliteToken);
+ // Update known suggested fingerprints
+ importFingerprints(data.satellites);
// now try to init the session with the data received
if (ThriftActions.initSession(data)) {
if (saveUsernameCheck.isSelected()) {
@@ -341,6 +346,25 @@ public class LoginWindow extends LoginWindowLayout {
}
}
+ /**
+ * If master server supplies certificate finger prints for a satellite,
+ * store them so we can verify later.
+ *
+ * @param satellites
+ */
+ private void importFingerprints(List<Satellite> satellites) {
+ if (satellites == null || satellites.isEmpty())
+ return;
+ for (Satellite sat : satellites) {
+ if (sat.addressList == null || sat.certSha256 == null || sat.addressList.isEmpty())
+ continue;
+ byte[] fingerprint = TBaseHelper.byteBufferToByteArray(sat.certSha256);
+ for (String address : sat.addressList) {
+ FingerprintManager.saveSuggestedFingerprint(address, fingerprint);
+ }
+ }
+ }
+
@SuppressWarnings("deprecation")
@Override
public void show() {