org.cryptacular.bean.ResourceBasedPrivateKeyFactoryBean Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of cryptacular Show documentation
Show all versions of cryptacular Show documentation
The spectacular complement to the Bouncy Castle crypto API for Java.
/* See LICENSE for licensing and NOTICE for copyright. */
package org.cryptacular.bean;
import java.io.IOException;
import java.security.PrivateKey;
import org.cryptacular.EncodingException;
import org.cryptacular.StreamException;
import org.cryptacular.io.Resource;
import org.cryptacular.util.KeyPairUtil;
/**
* Factory for reading a private from a {@link Resource} containing data in any of the formats supported by {@link
* KeyPairUtil#readPrivateKey(java.io.InputStream, char[])}.
*
* @author Middleware Services
* @see KeyPairUtil#readPrivateKey(java.io.InputStream, char[])
* @see KeyPairUtil#readPrivateKey(java.io.InputStream)
*/
public class ResourceBasedPrivateKeyFactoryBean implements FactoryBean
{
/** Resource containing key data. */
private Resource resource;
/** Password required to decrypt an encrypted private key. */
private String password;
/** Creates a new instance. */
public ResourceBasedPrivateKeyFactoryBean() {}
/**
* Creates a new instance capable of reading an unencrypted private key.
*
* @param resource Resource containing encoded key data.
*/
public ResourceBasedPrivateKeyFactoryBean(final Resource resource)
{
setResource(resource);
}
/**
* Creates a new instance of reading an encrypted private key.
*
* @param resource Resource containing encoded key data.
* @param decryptionPassword Password-based encryption key.
*/
public ResourceBasedPrivateKeyFactoryBean(final Resource resource, final String decryptionPassword)
{
setResource(resource);
setPassword(decryptionPassword);
}
/** @return Resource containing key data. */
public Resource getResource()
{
return resource;
}
/**
* Sets the resource containing key data.
*
* @param resource Resource containing key bytes.
*/
public void setResource(final Resource resource)
{
this.resource = resource;
}
/**
* Sets the password-based key used to decrypt an encrypted private key.
*
* @param decryptionPassword Password-based encryption key.
*/
public void setPassword(final String decryptionPassword)
{
this.password = decryptionPassword;
}
@Override
public PrivateKey newInstance() throws EncodingException, StreamException
{
try {
if (password != null) {
return KeyPairUtil.readPrivateKey(resource.getInputStream(), password.toCharArray());
}
return KeyPairUtil.readPrivateKey(resource.getInputStream());
} catch (IOException e) {
throw new StreamException(e);
}
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy