/*
* Copyright (c) 2011-2012 ICM Uniwersytet Warszawski All rights reserved.
* See LICENCE file for licensing information.
*/
package eu.emi.security.authn.x509.proxy;
import java.security.PrivateKey;
import java.security.cert.X509Certificate;
import eu.emi.security.authn.x509.X509Credential;
/**
* Wraps information about a new proxy which was generated by the {@link ProxyGenerator}.
*
* @author K. Benedyczak
* @see ProxyGenerator
*/
public interface ProxyCertificate
{
/**
* Returns the certificate chain of the proxy.
*
* @return the Certificate chain starting with the generated proxy certificate.
*/
public X509Certificate[] getCertificateChain();
/**
* Returns the generated private key of this proxy.
*
* If public key was manually set an exception is thrown.
*
* @return The private key.
* @throws IllegalStateException if the private and public keys were not generated
*/
public PrivateKey getPrivateKey() throws IllegalStateException;
/**
* Returns the X509Credential wrapping the generated private key and proxy certificate.
* This method is useful if KeyStore or KeyManager with the newly generated
* proxy certificate is needed.
* @return The generated credential wrapped in {@link X509Credential}
* @throws IllegalStateException if the private and public keys were not generated
*/
public X509Credential getCredential() throws IllegalStateException;
/**
* @return true if private key was generated and is available through
* {@link #getPrivateKey()} and {@link #getCredential()}
*/
public boolean hasPrivateKey();
}