/* * Copyright (c) 2011-2012 ICM Uniwersytet Warszawski All rights reserved. * See LICENCE file for licensing information. */ package eu.emi.security.authn.x509; import java.security.KeyStore; import java.security.PrivateKey; import java.security.cert.X509Certificate; import javax.net.ssl.X509ExtendedKeyManager; /** * Implementations are used to wrap credentials (private key and certificate) * in various formats. Methods allow for converting the wrapped credentials * into the format usable by the Java API. * * @author K. Benedyczak */ public interface X509Credential { /** * Returns the credential in a keystore. * @return the KeyStore */ public KeyStore getKeyStore(); /** * Returns a KeyManager which accompanies the KeyStore. * @return the KeyManager */ public X509ExtendedKeyManager getKeyManager(); /** * Returns a password which can be used to obtain PrivateKey entry * from the KeyStore returned by the {@link #getKeyStore()} method, * with the alias returned by the {@link #getKeyAlias()} method. * @return key password */ public char[] getKeyPassword(); /** * Returns an alias which can be used to obtain the PrivateKey entry * from the KeyStore returned by the {@link #getKeyStore()} method. * @return key alias */ public String getKeyAlias(); /** * Helper method to get private key from the underlying keystore * @return private key */ public PrivateKey getKey(); /** * Helper method to get certificate from the underlying keystore * @return certificate */ public X509Certificate getCertificate(); /** * Helper method to get certificate chain from the underlying keystore * @return certificate chain */ public X509Certificate[] getCertificateChain(); /** * @return RFC 2253 distinguished name of the certificate subject * @since 1.1.0 */ public String getSubjectName(); }