package io.fathom.cloud.state.zookeeper; import io.fathom.cloud.keyczar.KeyczarFactory; import io.fathom.cloud.server.auth.SharedKeystore; import javax.inject.Inject; import org.keyczar.Crypter; import org.keyczar.Encrypter; import org.keyczar.GenericKeyczar; import org.keyczar.KeyMetadata; import org.keyczar.Signer; import org.keyczar.exceptions.KeyczarException; import org.keyczar.interfaces.KeyczarReader; public class KeyczarSharedKeystore implements SharedKeystore { @Inject KeyczarFactory keyczarFactory; @Override public Signer buildSigner(String key) { try { KeyczarReader child = keyczarFactory.getReader(key); return new Signer(child); } catch (KeyczarException e) { throw new IllegalStateException("Error building signer", e); } } @Override public Crypter buildCrypter(String key) { try { KeyczarReader child = keyczarFactory.getReader(key); return new Crypter(child); } catch (KeyczarException e) { throw new IllegalStateException("Error building crypter", e); } } @Override public Encrypter buildEncrypter(String key) { try { KeyczarReader child = keyczarFactory.getReader(key); return new Encrypter(child); } catch (KeyczarException e) { throw new IllegalStateException("Error building encrypter", e); } } @Override public void ensureCreated(String key, KeyMetadata keyMetadata) { try { Crypter crypter = null; GenericKeyczar store = keyczarFactory.find(key, crypter); if (store == null) { store = keyczarFactory.create(key, keyMetadata, crypter); } keyczarFactory.ensureKeyCreated(store); } catch (KeyczarException e) { throw new IllegalStateException("Error creating keystore", e); } } }