this.certificateChain = certificateChain;
}
public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
for (int i = 0; i < callbacks.length; i++) {
Callback callback = callbacks[i];
if (callback instanceof CertificateChainCallback) {
CertificateChainCallback cc = (CertificateChainCallback) callback;
cc.setCertificateChain(certificateChain);
} else if (callback instanceof CertificateCallback) {
if (certificateChain != null
&& certificateChain.length > 0
&& certificateChain[0] instanceof X509Certificate) {
CertificateCallback cc = (CertificateCallback) callback;
cc.setCertificate((X509Certificate) certificateChain[0]);
} else {
StringBuffer buf = new StringBuffer("Invalid certificate chain: \n");
if (certificateChain == null) {
buf.append("certificate chain is null");
} else {
buf.append("certificate chain length: ").append(certificateChain.length).append("\n");
if (certificateChain.length > 0) {
buf.append("first certificate is a: ").append(certificateChain[0].getClass()).append("\n");
buf.append("certificate is an X509Certificate: ").append(certificateChain[0] instanceof X509Certificate).append("\n");
}
}
throw new UnsupportedCallbackException(callback, buf.toString());
}
} else {
throw new UnsupportedCallbackException(callback, "Wrong callback type: " + callback.getClass());
}
}
}