Развернуть все
Свернуть все

Работа с типом подписи CAdES BES

Пример 5

Данный пример демонстрирует создание и проверку подписи CAdES BES, создание параллельной подписи CAdES X Long Type 1, а также дополнение подписи CAdES BES до подписи CAdES X Long Type 1.

VBScript
 Option Explicit

 Const CADES_BES = 1
 Const CADES_DEFAULT = 0
 Const CAPICOM_ENCODE_BASE64 = 0
 Const CAPICOM_CURRENT_USER_STORE = 2
 
 ' Укажите правильный серийный номер сертификата.
 Dim sSerialNumber : sSerialNumber = "12345678000000000000"
 ' Укажите правильный адрес службы штампов времени.
 Dim sTSAAddress : sTSAAddress = "http://domain/tsp/tsp.srf"

 Dim oSigner
 Set oSigner = CreateObject("CAdESCOM.CPSigner")
 oSigner.Certificate = GetSignerCertificate(sSerialNumber)
 
 Dim oSignedData
 Set oSignedData = CreateObject("CAdESCOM.CadesSignedData")
 oSignedData.Content = "Some very significant message"

 Dim sSignedData
 ' Создание и проверка подписи CAdES BES
 sSignedData = oSignedData.SignCades(oSigner, CADES_BES, False, CAPICOM_ENCODE_BASE64)
 oSignedData.VerifyCades sSignedData, CADES_BES, False

 ' Создание параллельной подписи CAdES X Long Type 1
 sSignedData = oSignedData.CoSignCades(oSigner, CADES_DEFAULT, CAPICOM_ENCODE_BASE64)
 
 ' Проверка полученных параллельных подписей на соответствие CAdES BES
 oSignedData.VerifyCades sSignedData, CADES_BES, False

 ' Дополнение подписи CAdES BES до подписи CAdES X Long Type 1 (вторая
 ' подпись остается без изменения, так как она уже CAdES X Long Type 1)
 sSignedData = oSignedData.EnhanceCades(CADES_DEFAULT, sTSAAddress, CAPICOM_ENCODE_BASE64)

 ' Проверка полученных параллельных подписей на соответствие CAdES X Long Type 1
 oSignedData.VerifyCades sSignedData, CADES_DEFAULT, False
 
 Function GetSignerCertificate(SerialNumber)
   Set GetSignerCertificate = Nothing
   Dim oCert
   Dim oStore
   Set oStore = CreateObject("CAdESCOM.Store")
   oStore.Open CAPICOM_CURRENT_USER_STORE
   For Each oCert In oStore.Certificates
     If (oCert.SerialNumber = SerialNumber) Then
       Set GetSignerCertificate = oCert
       Exit For
     End If
   Next
 End Function

 Function CreateFile (sFileName, sContent)
   Dim fso
   Set fso = CreateObject("Scripting.FileSystemObject")
   Dim NewFile
   Set NewFile = fso.CreateTextFile(sFileName, True)
   NewFile.WriteLine(sContent)
   NewFile.Close
 End Function