Я оцениваю iText7 и не могу подписать PDF-файл самоподписанным сертификатом, у которого нет закрытого ключа.
Я пытаюсь это сделать:
X509Store store = new X509Store(StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
var certs = store.Certificates.Find(X509FindType.FindBySubjectName, "MyName", false);
var refDate = DateTime.MinValue;
X509Certificate2 certificate = certs[0];
var pk = DotNetUtilities.GetKeyPair(certificate.PrivateKey).Private; //how to do without private key ????
IExternalSignature pks = new PrivateKeySignature(pk, "SHA-256");
var bCert = DotNetUtilities.FromX509Certificate(certificate);
var chain = new Org.BouncyCastle.X509.X509Certificate[] {bCert};
using (var reader = new PdfReader(@"D:\Test\ToSign.pdf"))
using (var stream = new FileStream(@"D:\Test\Signed.pdf", FileMode.OpenOrCreate)) {
PdfSigner signer = new PdfSigner(reader, stream, false);
signer.SignDetached(pks, chain, null, null, null, 0, PdfSigner.CryptoStandard.CMS);
}
Я ДЕЙСТВИТЕЛЬНО понимаю, что мне следует использовать закрытый ключ, чтобы быть уверенным в том, что я могу определить, кто подписал PDF-файл, но наша текущая PDF-библиотека, которая является компонентом COM, может подписать PDF-файл без какого-либо закрытого ключа.
Подскажите, как сделать то же самое?
С Уважением