PDFがiTextSharpを使用してサーバー側からデジタル署名されているかどうかを確認しようとしていますが、コードで「PKCS7SignedDataオブジェクトをデコードできません」というエラーが表示されます。
PdfPKCS7 pk = af.VerifySignature(name);
関数は次のとおりです。
public string verifyPdfSignature(string pdfFile)
{
var parser = new X509CertificateParser();
PdfReader reader = new PdfReader(pdfFile);
AcroFields af = reader.AcroFields;
var names = af.GetSignatureNames();
if (names.Count == 0)
{
return "No Signature present in pdf file.";
}
foreach (string name in names)
{
if (!af.SignatureCoversWholeDocument(name))
{
return (string.Format("The signature: {0} does not cover the whole document.", name));
}
PdfPKCS7 pk = af.VerifySignature(name); //<--- ERROR HERE
var cal = pk.SignDate;
var pkc = pk.Certificates;
if (!pk.Verify())
{
return "The signature could not be verified.";
}
if (!pk.VerifyTimestampImprint())
{
return "The signature timestamp could not be verified.";
}
}
return "nothing";
}