iText Java v7.1.8不支持RSASSA-PSS加密算法?为了签名验证?

我正在尝试验证使用RSASSA-PSS算法签名的PDF。 我收到此错误,使我认为iText(EncryptionAlgorithms)中缺乏支持。

错误:

java.security.NoSuchAlgorithmException: SHA256with1.2.840.113549.1.1.10 Signature not available

代码:

import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.signatures.EncryptionAlgorithms;
import com.itextpdf.signatures.Pdfpkcs7;
import com.itextpdf.signatures.SignatureUtil;

public void verifySignature(byte[] pdf,List<PublicKey> storedPublicKeys) throws PdfSignatureVerificationException {
        try (final PdfReader pdfReader = new PdfReader(new ByteArrayInputStream(pdf))) {
            PdfDocument doc = new PdfDocument(pdfReader);
            SignatureUtil signatureUtil = new SignatureUtil(doc);
            List<String> names = signatureUtil.getSignatureNames();
            if (names == null || names.isEmpty()) {
                throw new PdfSignatureVerificationException("Pdf is not signed");
            }
            verifySignatures(signatureUtil,names,storedPublicKeys);
        } catch (IOException e) {
            throw new PdfSignatureVerificationException("Cannot parse PDF data into pdf file.",e);
        }
    }

private void verifySignatures(SignatureUtil signUtil,List<String> names,List<PublicKey> storedPublicKeys) throws PdfSignatureVerificationException {

        for (String name : names) {
            Pdfpkcs7 pkcs7 = signUtil.readSignatureData(name);

            try {
                if (!pkcs7.verifySignatureIntegrityAndAuthenticity()) {
                    throw new PdfSignatureVerificationException("Signature not valid");
                }
            } catch (GeneralSecurityException e) {
                throw new PdfSignatureVerificationException("Signature not valid",e);
            }    
        }
    }
bzl789 回答:iText Java v7.1.8不支持RSASSA-PSS加密算法?为了签名验证?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3065778.html

大家都在问