使用 IText 或 ITextSharp 或 BouncyCastle 从 pdf 文件中提取 pkcs7 (byte[])

发布于 2024-11-07 07:16:52 字数 111 浏览 0 评论 0原文

如何使用 IText 或 BouncyCastle 从 pdf 签名文件中提取编码的 PKCS7 包,以便我可以在另一个框架中存储或验证? 事实上,我怎样才能从 pdf 签名文件中获取 PKCS7 编码的包?

How can I extract, from a pdf signed file, the PKCS7 package encoded, using either IText or BouncyCastle, so i can either store or validate in another framework?
In fact, how can I get, at all, a PKCS7 encoded package from a pdf signed file?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦幻之岛 2024-11-14 07:16:52

我的一位朋友帮助我找到了答案。

public static byte[] ExtractPKCS7From(string path)
{
    AcroFields acroFields = new PdfReader(path).AcroFields;
    List<string> names = acroFields.GetSignatureNames();

    foreach(var name in names)
    {
        PdfDictionary dict = acroFields.GetSignatureDictionary(name);
        PdfString contents =
            (PdfString)PdfReader.GetPdfObject(dict.Get(PdfName.CONTENTS));

        return contents.GetOriginalBytes();
    }
    return null;
}

非常简单,不是吗?

A friend of mine helped me on getting the answer.

public static byte[] ExtractPKCS7From(string path)
{
    AcroFields acroFields = new PdfReader(path).AcroFields;
    List<string> names = acroFields.GetSignatureNames();

    foreach(var name in names)
    {
        PdfDictionary dict = acroFields.GetSignatureDictionary(name);
        PdfString contents =
            (PdfString)PdfReader.GetPdfObject(dict.Get(PdfName.CONTENTS));

        return contents.GetOriginalBytes();
    }
    return null;
}

Pretty straight forward, isn't it?

‖放下 2024-11-14 07:16:52

Java 代码,用 pkcs7 对象做任何你想做的事! :)

PdfReader r = new PdfReader(fOs);
AcroFields af = r.getAcroFields();
ArrayList<String> listNames = af.getSignatureNames();
for(String x : listNames){
    PdfPKCS7 pkcs7 = af.verifySignature(signature);
}

祝你好运!

Code for Java, do whatever you want with the pkcs7 object! :)

PdfReader r = new PdfReader(fOs);
AcroFields af = r.getAcroFields();
ArrayList<String> listNames = af.getSignatureNames();
for(String x : listNames){
    PdfPKCS7 pkcs7 = af.verifySignature(signature);
}

Good luck!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文