Подпишите PDF с сертификатом x509 от текущего магазина пользователя - PullRequest
0 голосов
/ 22 апреля 2020

Прежде всего, пожалуйста, обратите внимание, что я довольно новичок в этой платформе и поэтому не привык к правилам или «лучшим практикам», поэтому, пожалуйста, дайте мне знать, если есть что-то, что я должен отредактировать.

Но сейчас Вот моя проблема:

Я хочу подписать PDF-документ сертификатом из текущего хранилища пользователей. Для этой задачи мне запрещено использовать библиотеки, требующие лицензии, поэтому в основном все, что я использую, должно быть с открытым исходным кодом. Закрытый ключ сертификата, который я должен использовать для подписи, установлен как не подлежащий экспорту. Мне уже удалось выполнить задачу с помощью библиотеки «Syncfusion PDF», но, к сожалению, это не с открытым исходным кодом.

Поскольку я довольно новичок в программировании и особенно c#, я сейчас изо всех сил пытаюсь найти решение без использования Syncfusion. Надеюсь, что кто-нибудь может помочь:)

Вот код WITH Syncfusion. отлично работает:

Stream stream = new FileStream(src, FileMode.OpenOrCreate);
PdfLoadedDocument loadedDocument = new PdfLoadedDocument(stream);
PdfLoadedPage page = loadedDocument.Pages[0] as PdfLoadedPage;
PdfLoadedSignatureField field = loadedDocument.Form.Fields[0] as PdfLoadedSignatureField;
X509Store store = new X509Store("MY", StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
X509Certificate2Collection collection = (X509Certificate2Collection)store.Certificates;
X509Certificate2 digitalID = collection[0];
PdfCertificate certificate = new PdfCertificate(digitalID);
PdfSignature pdf1 = new PdfSignature(loadedDocument, page, certificate, "Signature", field);
field.Signature = pdf1;
loadedDocument.Save(stream);
loadedDocument.Close(true);

1 Ответ

0 голосов
/ 04 мая 2020

Мы проанализировали ваше требование. Но мы можем помочь, только если у вас есть какие-либо сомнения в библиотеке Syncfusion.

Примечание : я работаю в Syncfusion.

...