无法验证pdf是否使用iText进行数字签名

时间:2015-06-29 14:21:53

标签: java pdf itext digital-signature

我有一个基本的测试类,使用iText检查PDF文档中是否有数字签名,这是代码:

private int getNumFirme(String path)
    {
        try
        {
            java.nio.file.Path pathF = Paths.get(path);
            byte [] bytes =  Files.readAllBytes(pathF);
            PdfReader reader = new PdfReader(bytes);
            pathF = null;
            int nFirme = reader.getAcroFields().getSignatureNames().size();
            reader.close();
            return nFirme;
        } catch (IOException e) { 
            e.printStackTrace();
            return -1;
        }
    }

除了特定的pdf文档外,这个小方法有效。 当我使用该文档的方法时,结果为0(无符号),当我用Adobe Acrobat打开它时,它似乎没有任何签名(没有弹出窗口:“所有签名已经验证”或“几乎一个签名有问题” )甚至在元数据中也没有签名的迹象,但如果我用Dike打开文件并验证它,它就包含了数字签名数据。

我在互联网上看到问题可能是这个pdf是用CAdES签名签名的(我不是数字签名的专家,我不太清楚与'普通'PAdES签名的不同之处)因此检查失败,但我也读到用CAdES签名签名的文件通常具有“.p7m”扩展名。

这些文件可能是用CAdES标志签名的,并且它有一个“.pdf”扩展名吗?或许还有另一个问题? 如果CAdES标志是问题,我该如何验证文件上的签名? (我不想知道签名是否有效,我只想知道文件是否签名)

感谢您提供帮助的建议,并对我不完美的英语表示抱歉

0 个答案:

没有答案