package io.fathom.cloud.identity.secrets; import io.fathom.cloud.protobuf.IdentityModel.UserSecretData; import org.keyczar.Crypter; import org.keyczar.KeyczarReaderWrapper; import org.keyczar.KeyczarUtils; import org.keyczar.RsaPrivateKey; import org.keyczar.exceptions.KeyczarException; public class AuthenticatedUserKeys { // private PrivateKey deprecatedPrivateKey = null; private RsaPrivateKey privateKey = null; final UserWithSecret user; final UserSecretData userSecretData; public AuthenticatedUserKeys(UserWithSecret user) { this.user = user; this.userSecretData = user.userSecretData; } SecretToken getSecretToken() { return user.getSecretToken(); } // @Deprecated // public PrivateKey getDeprecatedPrivateKey() { // if (deprecatedPrivateKey == null) { // deprecatedPrivateKey = // KeyPairs.deserializePrivateKey(userSecretData.getPrivateKey().getEncoded() // .toByteArray()); // } // return deprecatedPrivateKey; // } Crypter getAsymetricCrypter() { try { if (privateKey == null) { privateKey = KeyczarUtils.readRsaPrivateKey(userSecretData.getPrivateKey().getKeyczar()); } // TODO: Cache crypter? return new Crypter(new KeyczarReaderWrapper(privateKey)); } catch (KeyczarException e) { throw new IllegalStateException("Error reading private key", e); } } }