summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/imagemaster/db/models/LocalOrganization.java
diff options
context:
space:
mode:
authorSimon Rettberg2015-09-07 18:20:58 +0200
committerSimon Rettberg2015-09-07 18:20:58 +0200
commit2f140304dd193763b2aa9d509f972c6f23202e93 (patch)
tree8639a625543d78b35caccfe3dcdfa4740ba6d917 /src/main/java/org/openslx/imagemaster/db/models/LocalOrganization.java
parentStuff (diff)
downloadmasterserver-2f140304dd193763b2aa9d509f972c6f23202e93.tar.gz
masterserver-2f140304dd193763b2aa9d509f972c6f23202e93.tar.xz
masterserver-2f140304dd193763b2aa9d509f972c6f23202e93.zip
Start adapting to new DB/Thrift model
Diffstat (limited to 'src/main/java/org/openslx/imagemaster/db/models/LocalOrganization.java')
-rw-r--r--src/main/java/org/openslx/imagemaster/db/models/LocalOrganization.java62
1 files changed, 62 insertions, 0 deletions
diff --git a/src/main/java/org/openslx/imagemaster/db/models/LocalOrganization.java b/src/main/java/org/openslx/imagemaster/db/models/LocalOrganization.java
new file mode 100644
index 0000000..4b5f076
--- /dev/null
+++ b/src/main/java/org/openslx/imagemaster/db/models/LocalOrganization.java
@@ -0,0 +1,62 @@
+package org.openslx.imagemaster.db.models;
+
+import java.math.BigInteger;
+import java.security.NoSuchAlgorithmException;
+import java.security.PublicKey;
+import java.security.spec.InvalidKeySpecException;
+
+import org.apache.log4j.Logger;
+import org.openslx.encryption.AsymKeyHolder;
+
+public class LocalOrganization
+{
+
+ private static final Logger LOGGER = Logger.getLogger( LocalOrganization.class );
+
+ private PublicKey publickey;
+
+ private String publickeyString;
+
+ private String name;
+
+ /**
+ * Get the public key of this organization, if known and valid.
+ *
+ * @return Public key, null on error or not known
+ */
+ public PublicKey getPubkey()
+ {
+ if ( publickey == null && publickeyString != null ) {
+ String parts[] = publickeyString.split( " " );
+ BigInteger mod = null;
+ BigInteger exp = null;
+ for ( int i = 0; i < parts.length; ++i ) {
+ if ( parts[i].startsWith( "mod:" ) ) {
+ // modulus found.
+ mod = new BigInteger( parts[i].substring( 4 ) );
+ }
+ if ( parts[i].startsWith( "exp:" ) ) {
+ // exponent found.
+ exp = new BigInteger( parts[i].substring( 4 ) );
+ }
+ }
+ if ( mod == null ) {
+ LOGGER.error( "No modulus for building public key was found." );
+ return null;
+ }
+ if ( exp == null ) {
+ LOGGER.error( "No public exponent for building public key was found." );
+ return null;
+ }
+ try {
+ publickey = new AsymKeyHolder( null, exp, mod ).getPublicKey();
+ } catch ( InvalidKeySpecException | NoSuchAlgorithmException e ) {
+ LOGGER.info( "PubKey of " + this.name + " is not valid.", e );
+ } catch ( NumberFormatException e ) {
+ LOGGER.info( "PubKey of " + this.name + " is corrupted in database!", e );
+ }
+ }
+ return publickey;
+ }
+
+}