All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.cryptacular.bean.KeyStoreBasedKeyFactoryBean Maven / Gradle / Ivy

There is a newer version: 6.2.20
Show newest version
/* See LICENSE for licensing and NOTICE for copyright. */
package org.cryptacular.bean;

import java.security.Key;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.UnrecoverableKeyException;
import org.cryptacular.CryptoException;

/**
 * Factory that produces either a {@link javax.crypto.SecretKey} or {@link java.security.PrivateKey}.
 *
 * 

from a {@link KeyStore}.

* * @param Type of key, either {@link javax.crypto.SecretKey} or {@link java.security.PrivateKey}. * * @author Middleware Services */ public class KeyStoreBasedKeyFactoryBean implements FactoryBean { /** Keystore containing secret key. */ private KeyStore keyStore; /** Alias of keystore entry containing secret key. */ private String alias; /** Password required to read key entry. */ private String password; /** Creates a new instance. */ public KeyStoreBasedKeyFactoryBean() {} /** * Creates a new instance by specifying all properties. * * @param keyStore Key store containing encryption key. * @param alias Name of encryption key entry in key store. * @param password Password used to decrypt key entry in keystore. */ public KeyStoreBasedKeyFactoryBean(final KeyStore keyStore, final String alias, final String password) { setKeyStore(keyStore); setAlias(alias); setPassword(password); } /** @return Keystore that contains the {@link #keyStore}. */ public KeyStore getKeyStore() { return keyStore; } /** * Sets the keystore that contains the key. * * @param keyStore Non-null keystore. */ public void setKeyStore(final KeyStore keyStore) { this.keyStore = keyStore; } /** @return Alias that specifies the {@link KeyStore} entry containing the key. */ public String getAlias() { return alias; } /** * Sets the alias that specifies the {@link KeyStore} entry containing the key. * * @param alias Keystore alias of key entry. */ public void setAlias(final String alias) { this.alias = alias; } /** * Sets the password used to access the key entry. * * @param password Key entry password. */ public void setPassword(final String password) { this.password = password; } @Override @SuppressWarnings("unchecked") public T newInstance() { final Key key; try { key = keyStore.getKey(alias, password.toCharArray()); } catch (KeyStoreException | NoSuchAlgorithmException | UnrecoverableKeyException e) { throw new CryptoException("Error accessing keystore entry " + alias, e); } return (T) key; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy