0

我有一份带有1 个 Pades签名和2 个 Cades签名的文档(pdf),我需要提取有关每个签名的签名者的信息。

我正在使用CMSSignedData(充气城堡库),但是当我尝试获取信息时,我只获取有关最后一个签名的信息。

byte[] buffer = new byte[(int) tmpFile.length()];
    DataInputStream dataIn = new DataInputStream(new FileInputStream(tmpFile));
    dataIn.readFully(buffer);
    dataIn.close();
    
        CMSSignedData signature = new CMSSignedData(buffer);
        Store cs = signature.getCertificates();
        SignerInformationStore signers = signature.getSignerInfos();
        String hashOriginalFile = DigestUtils.sha256Hex(
                (byte[])signature.getSignedContent().getContent());

        List<SignInfo> certificatesInfo = signers.getSigners().stream()
                .map(si -> cs.getMatches(si.getSID()))
                .flatMap(Collection::stream)
                .map(o -> (X509CertificateHolder) o)
                .map(cert -> new SignInfo(hashOriginalFile, getCommonName(cert.getSubject()), cert.getIssuer().toString(), null, null))
                .collect(Collectors.toList());
        

有没有办法获取所有签名信息?甚至使用另一个库。

谢谢!

4

0 回答 0