package org.limewire.security.certificate;
import java.io.IOException;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.cert.Certificate;
import java.security.cert.CertificateException;
import com.google.inject.Inject;
public class CertificateProviderImpl implements CertificateProvider {
private KeyStoreProvider keyStoreProvider;
private CertificateVerifier certificateVerifier;
@Inject
public CertificateProviderImpl(KeyStoreProvider keyStoreProvider,
CertificateVerifier certificateVerifier) {
this.keyStoreProvider = keyStoreProvider;
this.certificateVerifier = certificateVerifier;
}
public Certificate getCertificate(String alias) throws CertificateException {
try {
KeyStore ks = keyStoreProvider.getKeyStore();
Certificate certificate = ks.getCertificate(alias);
if (certificate == null)
throw new CertificateException("Unable to locate certificate '" + alias + "'");
if (certificateVerifier.isValid(certificate))
return certificate;
throw new CertificateException("Certificate failed validation.");
} catch (KeyStoreException ex) {
throw new CertificateException("KeyStoreException getting certificate.", ex);
} catch (IOException ex) {
throw new CertificateException("IOException while getting certificate.", ex);
}
}
}