![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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 ..