summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/imagemaster/util
diff options
context:
space:
mode:
authorNils Schwabe2014-04-25 14:28:56 +0200
committerNils Schwabe2014-04-25 14:28:56 +0200
commit40d528627efc309681496b47d66558e15eb3fe5e (patch)
tree4cb7ba77b4b55ecb0b29a734c782b68d6926d441 /src/main/java/org/openslx/imagemaster/util
parentAdd FTPS to MasterFtpServer (diff)
downloadmasterserver-40d528627efc309681496b47d66558e15eb3fe5e.tar.gz
masterserver-40d528627efc309681496b47d66558e15eb3fe5e.tar.xz
masterserver-40d528627efc309681496b47d66558e15eb3fe5e.zip
Finally: Add _real_ server authentication. (this challengeresponse thing)
Diffstat (limited to 'src/main/java/org/openslx/imagemaster/util')
-rw-r--r--src/main/java/org/openslx/imagemaster/util/AsymMessageSign.java63
-rw-r--r--src/main/java/org/openslx/imagemaster/util/Util.java20
2 files changed, 82 insertions, 1 deletions
diff --git a/src/main/java/org/openslx/imagemaster/util/AsymMessageSign.java b/src/main/java/org/openslx/imagemaster/util/AsymMessageSign.java
new file mode 100644
index 0000000..134b399
--- /dev/null
+++ b/src/main/java/org/openslx/imagemaster/util/AsymMessageSign.java
@@ -0,0 +1,63 @@
+package org.openslx.imagemaster.util;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.security.InvalidKeyException;
+import java.security.Key;
+import java.security.KeyPair;
+import java.security.KeyStore;
+import java.security.KeyStoreException;
+import java.security.NoSuchAlgorithmException;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+import java.security.Signature;
+import java.security.SignatureException;
+import java.security.UnrecoverableKeyException;
+import java.security.cert.Certificate;
+import java.security.cert.CertificateException;
+
+public class AsymMessageSign
+{
+
+ KeyPair pair;
+
+// String alias = "ftp";
+// String password = "password";
+// String file = "./config/keystore.jks";
+
+
+ public AsymMessageSign(String alias, String password, String file) throws NoSuchAlgorithmException, CertificateException, FileNotFoundException, IOException, KeyStoreException, UnrecoverableKeyException
+ {
+ KeyStore keystore = KeyStore.getInstance( "JKS" );
+ keystore.load( new FileInputStream( new File( file ) ), password.toCharArray() );
+ Certificate cert = null;
+
+ Key key = keystore.getKey( alias,
+ password.toCharArray() );
+
+ if ( key instanceof PrivateKey ) {
+ cert = keystore.getCertificate( alias );
+ PublicKey publicKey = cert.getPublicKey();
+ pair = new KeyPair( publicKey, (PrivateKey)key );
+ }
+ }
+
+ public byte[] signMessage( String message ) throws NoSuchAlgorithmException, InvalidKeyException, SignatureException
+ {
+ Signature signature = Signature.getInstance( "SHA256WITHRSA" );
+ signature.initSign( pair.getPrivate() );
+ signature.update( message.getBytes() );
+ return signature.sign();
+ }
+
+ public boolean verifyMessage( byte[] signedMessage, byte[] realMessage ) throws NoSuchAlgorithmException, InvalidKeyException, SignatureException
+ {
+ Signature signature = Signature.getInstance( "SHA256WITHRSA" );
+ signature.initVerify( pair.getPublic() );
+ signature.update( realMessage );
+ return signature.verify( signedMessage );
+ }
+
+}
diff --git a/src/main/java/org/openslx/imagemaster/util/Util.java b/src/main/java/org/openslx/imagemaster/util/Util.java
index 0df4212..9805c21 100644
--- a/src/main/java/org/openslx/imagemaster/util/Util.java
+++ b/src/main/java/org/openslx/imagemaster/util/Util.java
@@ -1,9 +1,27 @@
package org.openslx.imagemaster.util;
import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.security.InvalidKeyException;
+import java.security.Key;
+import java.security.KeyPair;
+import java.security.KeyStore;
+import java.security.KeyStoreException;
+import java.security.NoSuchAlgorithmException;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+import java.security.Signature;
+import java.security.SignatureException;
+import java.security.UnrecoverableKeyException;
+import java.security.cert.Certificate;
+import java.security.cert.CertificateException;
import java.util.Random;
import org.apache.log4j.Logger;
+import org.openslx.imagemaster.Globals;
+import org.openslx.imagemaster.Globals.PropString;
public class Util
{
@@ -70,5 +88,5 @@ public class Util
}
folder.delete();
}
-
+
}