public byte[] toByteArray() { PublicKeyPair keys = new PublicKeyPair(publicEncryptionKey, publicSigningKey); return cryptoImpl.toByteArray(keys); }
@Override public PublicKeyPair createPublicKeyPair(byte[] bytes) throws GeneralSecurityException { PublicKeyPair keyPair = new PublicKeyPair(); ECPublicKeySpec encryptionKeySpec = createPublicKeySpec(Arrays.copyOf(bytes, keyLengthBytes)); keyPair.encryptionKey = ecdhKeyFactory.generatePublic(encryptionKeySpec); ECPublicKeySpec signingKeySpec = createPublicKeySpec(Arrays.copyOfRange(bytes, keyLengthBytes, 2*keyLengthBytes)); keyPair.signingKey = ecdsaKeyFactory.generatePublic(signingKeySpec); return keyPair; }
@Override public PublicKeyPair createPublicKeyPair(byte[] bytes) throws InvalidKeySpecException { PublicKeyPair keyPair = new PublicKeyPair(); byte[] encryptionKeyBytes = Arrays.copyOf(bytes, PUBLIC_ENCRYPTION_KEY_BYTES); keyPair.encryptionKey = new NtruEncrypt1087PublicKey(encryptionKeyBytes); byte[] signingKeyBytes = Arrays.copyOfRange(bytes, PUBLIC_ENCRYPTION_KEY_BYTES, PUBLIC_ENCRYPTION_KEY_BYTES+PUBLIC_SIGNING_KEY_BYTES); keyPair.signingKey = new Gmss512PublicKey(signingKeyBytes); return keyPair; }
/** * Returns the two public keys in Base64 representation. */ public String getKey() { PublicKeyPair keys = new PublicKeyPair(publicEncryptionKey, publicSigningKey); try { return cryptoImpl.toBase64(keys); } catch (GeneralSecurityException e) { log.error("Can't get email destination keys.", e); return "<Error>: " + e.getLocalizedMessage(); } }
/** * Returns the two key pairs (public + private) as one Base64-encoded string. * @throws GeneralSecurityException */ public String getFullKey() throws GeneralSecurityException { PublicKeyPair publicKeys = new PublicKeyPair(publicEncryptionKey, publicSigningKey); PrivateKeyPair privateKeys = new PrivateKeyPair(privateEncryptionKey, privateSigningKey); String pubKeys = cryptoImpl.toBase64(publicKeys); String privKeys = cryptoImpl.toBase64(privateKeys); return pubKeys + privKeys; }
@Override public PublicKeyPair createPublicKeyPair(String base64) throws GeneralSecurityException { Destination i2pDestination; base64 += "AAAA"; // add a null certificate try { i2pDestination = new Destination(base64); } catch (DataFormatException e) { throw new KeyException("Can't create I2P destination from Base64: <" + base64 + ">", e); } PublicKeyPair keyPair = new PublicKeyPair(); keyPair.encryptionKey = new ElGamalPublicKey(i2pDestination.getPublicKey()); keyPair.signingKey = new DSAPublicKey(i2pDestination.getSigningPublicKey()); return keyPair; }