package com.bansheeproject.features.security;
import java.net.Socket;
import java.security.Principal;
import java.security.PrivateKey;
import java.security.cert.X509Certificate;
import javax.net.ssl.X509KeyManager;
/**
* A custom implementation of {@link X509KeyManager},
* that delegates alias choosing for a callback.
*
* @author Alexandre Saudate
* @since 1.0
*/
public class X509OverrideCertificate implements X509KeyManager {
private CertificateCallback certificateCallback;
private X509KeyManager delegate;
public X509OverrideCertificate(CertificateCallback certificateCallback,
X509KeyManager delegate) {
super();
this.certificateCallback = certificateCallback;
this.delegate = delegate;
}
public String chooseClientAlias(String[] arg0, Principal[] arg1, Socket arg2) {
return certificateCallback.chooseClientAlias(arg0, arg1, arg2, delegate);
}
public String chooseServerAlias(String arg0, Principal[] arg1, Socket arg2) {
return certificateCallback.chooseServerAlias(arg0, arg1, arg2, delegate);
}
public X509Certificate[] getCertificateChain(String arg0) {
return delegate.getCertificateChain(arg0);
}
public String[] getClientAliases(String arg0, Principal[] arg1) {
return delegate.getClientAliases(arg0, arg1);
}
public PrivateKey getPrivateKey(String arg0) {
return delegate.getPrivateKey(arg0);
}
public String[] getServerAliases(String arg0, Principal[] arg1) {
return delegate.getServerAliases(arg0, arg1);
}
}