Конференция "WinAPI" » Access violation prin вызове ф-ции CryptoAPI [D7, Win2k, WinXP]
 
  • Михаил Макушев (11.01.08 08:52) [0]
    вопрос по 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"?  Где я наступаю на грабли?
  • Сергей М. © (11.01.08 09:00) [1]
    Приведи прототип ф-ции CryptEncryptMessage ..
  • Reindeer Moss Eater © (11.01.08 10:33) [2]
    Третий параметр - указатель на массив указателей.
  • Reindeer Moss Eater © (11.01.08 10:44) [3]
    На джедаях лежат порты хедеров криптоапи на паскаль от Massimo Maria Ghisalberti, но там есть ошибки.
    Вот как там описан третий параметр:
    rgpRecipientCert      : array of PCCERT_CONTEXT;
    то есть через делфийский открытый массив, а это естественно неправильно
  • slow!alfamoon!com (11.01.08 11:40) [4]
    +1 Хэдеры кривые. Частично я их правил и дополнял но только касаемо низкоуровневых функций
  • Reindeer Moss Eater © (11.01.08 12:23) [5]
    У автора вопроса проблема скорее всего не в прототипе.

    ret := CryptEncryptMessage(@msgPara, 1, @pCert, PByte(test), .....
 
Конференция "WinAPI" » Access violation prin вызове ф-ции CryptoAPI [D7, Win2k, WinXP]
Есть новые Нет новых   [134431   +15][b:0][p:0.001]