如何通过c ++插入和验证PDF格式的数字签名? [英] how to insert and verify digital signatures in pdf through c++?

查看:308
本文介绍了如何通过c ++插入和验证PDF格式的数字签名?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

通过c ++插入并验证pdf中的数字签名,有人可以帮助我吗?

解决方案

您可以使用Microsoft的CryptoAPI签名和验证数据。

微软从Windows vista开始引入CNG。所以评估你的要求。



查看

http://msdn.microsoft.com/en-us/library/aa387761%28v = VS.85%29.aspx


'通过vb.net验证pdf证书





Dim theForm As Acrobat.CAcroPDDoc

Dim jso As Object



theForm = CreateObject(" AcroExch.PDDoc")

theForm.Open(" C:\ Temp\Maru \DeclaracionJurada.pdf")

jso = theForm.GetJSObject



'Verifica que la firma sea valida



Dim signatureOne = jso.getField(" Signature2")

Dim oState = signatureOne.SignatureValidate()



选择案例oState

案例是= -1

ListBox1.Items。添加(Estado:Sin Firma)

案例是= 0

ListBox1.Items.Add(" Estado:Firma en blanco")

Case Is = 1

ListBox1.Items.Add(" Estado:No conoce el estado de la firma")

Case Is = 2

ListBox1.Items.Add(" Estado:Firma invalida")

案例是= 3

ListBox1.Items.Add(" Estado:La firma es valida,pero la identidad del firmante no se pudo verificar")

Case Is = 4

ListBox1.Items.Add(" Estado:Firma e identidad son validas")



结束选择



'Exxte la info del firmante,nombre y fecha de la firma

Dim signatureInformation = signatureOne.signatureInfo



ListBox1.Items.Add(" Firmante" &安培; signatureInformation.name)

ListBox1.Items.Add(" Fecha"& signatureInformation.Date)



'Extrae la info del certificado

Dim signatureCertificate = signatureInformation.certificates

ListBox1.Items.Add(" Emitido a:"& signatureCertificate(0).subjectDN.serialNumber)

ListBox1.Items.Add(" Numero de Serie:& signatureCertificate(0).serialNumber)

ListBox1.Items.Add(" Valido desde:"& ; signatureCertificate(0).validityStart)

ListBox1.Items.Add(" Valido hasta:"& signatureCertificate(0).validityEnd)

ListBox1.Items。添加(Para:"& signatureCertificate(0).subjectDN.o)

ListBox1.Items.Add(" Tipo:"& signatureCertificate(0).subjectDN.ou)

ListBox1.Items.Add(" Emitido Por:"& signatureCerti ficate(0).issuerDN.cn)

insert and verify digital signatures in pdf through c++,some one can help me?

解决方案

You can sign and verify data using CryptoAPI from Microsoft.
Microsoft has introduced CNG from Windows vista onwards. So evaluate your requirements.

Check out
http://msdn.microsoft.com/en-us/library/aa387761%28v=VS.85%29.aspx


'Verify certificate in pdf via vb.net


Dim theForm As Acrobat.CAcroPDDoc
Dim jso As Object

theForm = CreateObject("AcroExch.PDDoc")
theForm.Open("C:\Temp\Maru\DeclaracionJurada.pdf")
jso = theForm.GetJSObject

'Verifica que la firma sea valida

Dim signatureOne = jso.getField("Signature2")
Dim oState = signatureOne.SignatureValidate()

Select Case oState
Case Is = -1
ListBox1.Items.Add("Estado : Sin Firma ")
Case Is = 0
ListBox1.Items.Add("Estado : Firma en blanco ")
Case Is = 1
ListBox1.Items.Add("Estado : No conoce el estado de la firma ")
Case Is = 2
ListBox1.Items.Add("Estado : Firma invalida ")
Case Is = 3
ListBox1.Items.Add("Estado : La firma es valida, pero la identidad del firmante no se pudo verificar ")
Case Is = 4
ListBox1.Items.Add("Estado : Firma e identidad son validas ")

End Select

'Extrae la info del firmante, nombre y fecha de la firma
Dim signatureInformation = signatureOne.signatureInfo

ListBox1.Items.Add("Firmante " & signatureInformation.name)
ListBox1.Items.Add("Fecha " & signatureInformation.Date)

'Extrae la info del certificado
Dim signatureCertificate = signatureInformation.certificates
ListBox1.Items.Add("Emitido a : " & signatureCertificate(0).subjectDN.serialNumber)
ListBox1.Items.Add("Numero de Serie : " & signatureCertificate(0).serialNumber)
ListBox1.Items.Add("Valido desde : " & signatureCertificate(0).validityStart)
ListBox1.Items.Add("Valido hasta : " & signatureCertificate(0).validityEnd)
ListBox1.Items.Add("Para : " & signatureCertificate(0).subjectDN.o)
ListBox1.Items.Add("Tipo : " & signatureCertificate(0).subjectDN.ou)
ListBox1.Items.Add("Emitido Por : " & signatureCertificate(0).issuerDN.cn)


这篇关于如何通过c ++插入和验证PDF格式的数字签名?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆