Добрый день!
Установлен TSP Client 2.0. В работе обнаружена проблема похожая на утечку памяти.
По мотивам примера использования CADESCOM (http://cpdn.cryptopro.ru/content/cades/cadescomsamplesigndata.html) реализован пример подписания сообщений в цикле.
В зависимости от количества подписаний различается объем памяти, занимаемой процессом cscript.exe:
после подписания 100 сообщений - 8072 Кб, 1000 сообщений - 8500 Кб, 10000 сообщений - окончания программы не удалось дождаться, процесс упал.
Тестируется следующий код:
Option Explicit
Const CAPICOM_CURRENT_USER_STORE = 2
Const CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN = 1
Const CADESCOM_CADES_T = 5
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 SignCades()
Dim oSigner
Set oSigner = CreateObject("CAdESCOM.CPSigner")
' Укажите правильный серийный номер сертификата.
Dim sSerialNumber : sSerialNumber = "6F90B8E9F2423488E711CE0F9A026304"
' Укажите правильный адрес службы штампов времени.
Dim sTSAAddress : sTSAAddress = "http://www.cryptopro.ru/tsp/tsp.srf"
oSigner.Certificate = GetSignerCertificate(sSerialNumber)
oSigner.TSAAddress = sTSAAddress
Dim oSignedData
Dim oSettings
Set oSignedData = CreateObject("CAdESCOM.CadesSignedData")
oSignedData.Content = "Some very significant message"
Dim sSignedData
sSignedData = oSignedData.SignCades(oSigner, CADESCOM_CADES_T, False)
End Function
Dim iCounter
For iCounter = 1 to 10000
SignCades()
Next
MsgBox "Messages was Signed: " & (iCounter - 1), vbOk
В чем причина падения при подписании 10000 сообщений, а также рост занимаемой памяти? Нет ли в CADESCOM утечек памяти?
Отредактировано пользователем 25 сентября 2017 г. 10:30:11(UTC)
| Причина: Не указана