@Override public Map<X509Certificate, List<X509Certificate>> getSignerCertificates(int signersType) { SignedContentFactory factory = equinoxContainer.getSignedContentFactory(); if (factory == null) { return Collections.emptyMap(); } try { SignerInfo[] infos = signerInfos; if (infos == null) { SignedContent signedContent = factory.getSignedContent(this); infos = signedContent.getSignerInfos(); signerInfos = infos; } if (infos.length == 0) return Collections.emptyMap(); Map<X509Certificate, List<X509Certificate>> results = new HashMap<X509Certificate, List<X509Certificate>>(infos.length); for (int i = 0; i < infos.length; i++) { if (signersType == SIGNERS_TRUSTED && !infos[i].isTrusted()) continue; Certificate[] certs = infos[i].getCertificateChain(); if (certs == null || certs.length == 0) continue; List<X509Certificate> certChain = new ArrayList<X509Certificate>(); for (int j = 0; j < certs.length; j++) certChain.add((X509Certificate) certs[j]); results.put((X509Certificate) certs[0], certChain); } return results; } catch (Exception e) { return Collections.emptyMap(); } }