Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Access violation prin вызове ф-ции CryptoAPI [D7, Win2k, WinXP]


Михаил Макушев ©   (2008-01-11 08:52:00) 

вопрос по CryptoAPI через провайдера КриптоПро.

   hSystemStore := CertOpenSystemStore(0, 'MY');
var
 hProv: HCRYPTPROV;
 hSystemStore: HCERTSTORE;
 myCert, test: PWideChar;
 SERT_NAME: LPCTSTR;
 pCert: PCCERT_CONTEXT;
 msgPara: CRYPT_ENCRYPT_MESSAGE_PARA;
 count, encType: DWORD;
begin
   encType := PKCS_7_ASN_ENCODING or X509_ASN_ENCODING;
     myCert := 'Makushev';
     pCert := CertFindCertificateInStore(hSystemStore,
       encType,
       0,
       CERT_FIND_SUBJECT_STR,
       myCert,
       nil);

   ZeroMemory(@msgPara, SizeOf(msgPara));
   with msgPara do
       begin
           cbSize := SizeOf(msgPara);
           dwMsgEncodingType := encType;
           ContentEncryptionAlgorithm.pszObjId := CertAlgIdToOID(CALG_RC4);
           hCryptProv := hProv;
       end;

       test := 'Test';
       ret := CryptEncryptMessage(@msgPara, 1, pCert, PByte(test), length(test), nil, @count);


Если честно то не понимаю почему когда доходит до CryptEncryptMessage и пытается его выполнить вылезает "Access Violation"?  Где я наступаю на грабли?


Reindeer Moss Eater   (2008-01-11 12:23:00) [1]

У автора вопроса проблема скорее всего не в прототипе.

ret := CryptEncryptMessage(@msgPara, 1, @pCert, PByte(test), .....


slow!alfamoon!com   (2008-01-11 11:40:00) [2]

+1 Хэдеры кривые. Частично я их правил и дополнял но только касаемо низкоуровневых функций


Reindeer Moss Eater   (2008-01-11 10:44:00) [3]

На джедаях лежат порты хедеров криптоапи на паскаль от Massimo Maria Ghisalberti, но там есть ошибки.
Вот как там описан третий параметр:
rgpRecipientCert      : array of PCCERT_CONTEXT;
то есть через делфийский открытый массив, а это естественно неправильно


Reindeer Moss Eater   (2008-01-11 10:33:00) [4]

Третий параметр - указатель на массив указателей.


Сергей М.   (2008-01-11 09:00:00) [5]

Приведи прототип ф-ции CryptEncryptMessage ..


Наверх

Титульная страница Поиск, карта сайта Написать письмо