diff options
author | Simon Rettberg | 2015-09-07 18:20:58 +0200 |
---|---|---|
committer | Simon Rettberg | 2015-09-07 18:20:58 +0200 |
commit | 2f140304dd193763b2aa9d509f972c6f23202e93 (patch) | |
tree | 8639a625543d78b35caccfe3dcdfa4740ba6d917 /src/main/java/org/openslx/imagemaster/db/models/LocalOrganization.java | |
parent | Stuff (diff) | |
download | masterserver-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.java | 62 |
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; + } + +} |