alibek писал(а):Где-то в реестре это дело и хранится (имена файлов) и настраивается.
Только не нашел где, забыл уже за давностью.
Public Function SignData(ByVal InputData As String, ByRef sSignedData As String) As Boolean
'<EhHeader>
On Error GoTo Err_debug
'</EhHeader>
Dim SignedData As CAPICOM.SignedData
Dim Signer As CAPICOM.Signer
Dim TimeAttribute As CAPICOM.Attribute
SignData = False
Set SignedData = New CAPICOM.SignedData
Set Signer = New CAPICOM.Signer
Set TimeAttribute = New CAPICOM.Attribute
' Set the data that we want to sign
SignedData.Content = InputData
Signer.Certificate = mCert.SelectCertificate(mMain.CertificateName)
'Set the time in which we are applying the signature
TimeAttribute.Name = CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME
TimeAttribute.Value = VBA.Date
Signer.AuthenticatedAttributes.Add TimeAttribute
'Do the Sign operation
sSignedData = SignedData.Sign(Signer, True)
' mMain.LogInfo "Длина: " & Len(sSignedData)
SignData = True
'<EhFooter>
lb_out:
Set SignedData = Nothing
Set Signer = Nothing
Set TimeAttribute = Nothing
Exit Function
Err_debug:
If mMain.AsGUI Then
MsgBox "Ошибка при подписи данных!" & vbCrLf & "Некорректные данные." & vbCrLf & Err.Number & ":" & Err.Description, vbCritical
End If
mMain.LogError "SignData"
Resume lb_out
'</EhFooter>
End Function
Public Function SelectCertificate(Optional ByVal CertName As String = "") As CAPICOM.ICertificate
'<EhHeader>
On Error GoTo Err_debug
'</EhHeader>
Dim MyStore As CAPICOM.Store
Dim i As Integer
Set MyStore = New CAPICOM.Store
MyStore.Open CAPICOM_CURRENT_USER_STORE, "My", CAPICOM_STORE_OPEN_READ_ONLY
If CertName <> "" Then
For i = 1 To MyStore.Certificates.Count
If MyStore.Certificates.Item(i).GetInfo(CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME) = CertName Then
Set SelectCertificate = MyStore.Certificates.Item(i)
GoTo lb_out
End If
Next i
mMain.LogInfo "SelectCertificate: Error - неверный сертификат=" & CertName
Else
Set SelectCertificate = MyStore.Certificates.Item(1)
End If
'<EhFooter>
lb_out:
Set MyStore = Nothing
Exit Function
Err_debug:
If mMain.AsGUI Then
MsgBox Err.Number & ":" & Err.Description & vbCrLf & _
"in SelectCertificate", vbCritical
End If
mMain.LogError "SelectCertificate"
Resume lb_out
'</EhFooter>
End Function
Konst_One писал(а):и вот эта ф-я еще
Konst_One писал(а):проектик сложно отдать - он рабочий, сейчас попробую выдрать кое-что в виде модуля.
США готовят новый стандарт цифровой подписи?
Сегодня в США является стандартом алгоритм хеширования SHA-1. Реализация именно этого алгоритма используется для работы с цифровой подписью во многих приложениях, технологиях и подходах. Однако в этом году китайские ученые обнаружили некоторую слабость этого популярного алгоритма, поэтому перед американским правительством стоит нелегкий вопрос: менять ли основной алгоритм хеширования? Заметим, что изменение стандарта приведет к тому, что разработчики должны будут потратить деньги и время, чтобы улучшить свои продукты и реализовать новую версию стандарта. Вдобавок, если новый стандарт окажется слабым и не продержится хотя бы десяти лет, то придется принимать еще один, а это - снова удар по бизнесу.
Представитель NIST (National Institute of Standards and Technology - Национальный институт стандартов и технологий США) сообщил, что финальное решение придется принимать уже в самом ближайшем будущем, поэтому его организация поощряет обсуждение проблемы и привлечение к ней как можно большего числа специалистов.
И т.д.
Сейчас этот форум просматривают: SemrushBot и гости: 169