15.11.2006 14:41:13Создание подписанного сообщения с использованием COM Ответов: 1
Михаил
Пытаюсь реализовать на VB6 пример, который приведен в SDK

Dim strMessage As String
Dim strSignedMessage As String
Dim mSignedData As CAdESCOM.CadesSignedData
Dim mSigner As CAdESCOM.CPSigner
Dim mSerialNumber As String

Set mSigner = New CAdESCOM.CPSigner
mSerialNumber = "42dd798c000100001a08"

mSigner.Options = CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN
mSigner.Certificate = GetSignerCertificate(mSerialNumber)
mSigner.Options = CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN

strMessage = "Test"
Set mSignedData = New CAdESCOM.CadesSignedData
mSignedData.content = strMessage
If mSigner.Certificate.IsValid Then
strSignedMessage = mSignedData.Sign(mSigner, False)
End If
MsgBox strMessage & " - " & strSignedMessage & " - " & mSigner.Certificate.IsValid

Private Function GetSignerCertificate(ByVal vSerialNumber As String) As CAPICOM.ICertificate
Dim mCert As CAPICOM.ICertificate
Dim mStore As CAPICOM.Store

Set GetSignerCertificate = Nothing
Set mStore = New CAPICOM.Store
mStore.Open CAPICOM_CURRENT_USER_STORE

For Each mCert In mStore.Certificates
If mCert.SerialNumber = UCase(vSerialNumber) Then
Set GetSignerCertificate = mCert
Exit For
End If
Next
End Function


При использовании тестового сертификата функция mSigner.Certificate.IsValid выдает значение False. Если проверку не делать, то выдается ошибка вида "Method Sign of object ISignedData failed"

Мне кажется, что дело в типе сертификата. Пробовал сертификат с назначением "Подписывание кода". Действителен с 11:00 15.11.2006 по 11:00 15.11.2007. На компьютере время правильное. В состоянии сертификата указано, что он действительный.

Подскажите, пожалуйста, какой тип сертификата использовать и где искать ошибку, если дело не в этом?
 
Ответы:
14.05.2007 10:58:45xbdmp bmkicdy
xnsfild hzjpfc fqzwtie xiap wbipryv jbrdi zrwalkvby