Статус: Новичок
Группы: Участники
Зарегистрирован: 10.12.2010(UTC) Сообщений: 2
|
есть Outlook, принимает шифрованные и подписанные сообщения с вложениями. Задача - реализовать автоматическое сохранение вложений. Сохранение нешифрованных сообщений я реализовал, теперь стоит задача расшифровки сообщения. Сертификат подписи хранится в реестре. В VBA описал функции криптопровайдера. Код:
Private Declare Function CPAcquireContext Lib "cpcspe.dll" (phProv As Long, pszContainer As String, ByVal dwFlags As Long, ByVal pVTable As Long) As Integer
Private Declare Function CPDeriveKey Lib "cpcspe.dll" (ByVal hProv As Long, ByVal Algid As Long, ByVal hBaseData As Long, ByVal dwFlags As Long, phKey As Long) As Integer
Private Declare Function CPCreateHash Lib "cpcspe.dll" (ByVal hProv As Long, ByVal Algid As Long, ByVal hKey As Long, ByVal dwFlags As Long, phHash As Long) As Integer
Private Declare Function CPDecrypt Lib "cpcspe.dll" (ByVal hProv As Long, ByVal hKey As Long, ByVal hHash As Long, ByVal Final As Boolean, ByVal dwFlags As Long, ByRef pbData() As Byte, pdwDataLen As Long) As Long
далее делаю так: Код:
res = CPAcquireContext(phProv, ByVal sCont, 0, 0)
res = CPCreateHash(phProv, CALG_GR3411, 0, 0, lHash)
res = CPDeriveKey(phProv, CALG_G28147, lHash, CRYPT_EXPORTABLE, phKey)
в данном случае все три функции возвращают TRUE. затем загружаю сообщение из файла Код:
MyFile = FreeFile
Open ("C:\1\v.msg") For Binary As #MyFile
Ln = LOF(MyFile)
ReDim Buffer(1 To Ln) As Byte
Get #MyFile, , Buffer
и пытаюсь его зашифровать Код:
res = CPDecrypt(phProv, phKey, lHash, True, 0, Buffer, Ln)
в итоге GetLastError позвращает ошибку 0x80090020 (-2146893792). ДСЧ только один, биологический. куда копать не представляю. надеюсь на вашу помощь или подсказку. заранее спасибо.
|