/* * Copyright (c) 2011-2012 ICM Uniwersytet Warszawski All rights reserved. * See LICENCE.txt file for licensing information. */ package eu.emi.security.authn.x509.helpers.proxy; import java.security.KeyStoreException; import java.security.PrivateKey; import java.security.cert.X509Certificate; import eu.emi.security.authn.x509.X509Credential; import eu.emi.security.authn.x509.impl.KeyAndCertCredential; import eu.emi.security.authn.x509.proxy.ProxyCertificate; /** * Default implementation of the {@link ProxyCertificate} interface. * @author K. Benedyczak */ public class ProxyCertificateImpl implements ProxyCertificate { private X509Certificate[] chain; private PrivateKey privateKey; private X509Credential credential; public ProxyCertificateImpl(X509Certificate[] chain, PrivateKey privateKey) throws KeyStoreException { this.chain = chain; this.privateKey = privateKey; credential = new KeyAndCertCredential(privateKey, chain); } public ProxyCertificateImpl(X509Certificate[] chain) { this.chain = chain; } @Override public X509Certificate[] getCertificateChain() { return chain; } @Override public PrivateKey getPrivateKey() throws IllegalStateException { if (privateKey == null) throw new IllegalStateException("Private key was not generated for this proxy"); return privateKey; } @Override public X509Credential getCredential() throws IllegalStateException { if (privateKey == null) throw new IllegalStateException("Private key was not generated for this proxy"); return credential; } @Override public boolean hasPrivateKey() { return privateKey != null; } }