Я что-то запутался. Может что-то не то делаю. Мне необходимо сформировать ХЭШ и подписать его
Упуская блоки выделения/освобождения памяти. У меня примерно так формируется
Выбираем сертификат
hStoreHandle := CertOpenSystemStore(0, 'MY');
pCertContext := CryptUIDlgSelectCertificateFromStore(hStoreHandle, 0, '', '', 0, 0, nil);
получение информации о ключе
CertGetCertificateContextProperty(pCertContext,CERT_KEY_PROV_INFO_PROP_ID,KeyProvInf,@DataSize);
my_cont:=KeyProvInf.pwszContainerName;
my_prov:=KeyProvInf.pwszProvName;
подключаемся к криптопровайдеру с нужным контейнером
CryptAcquireContext(@hProv,pansichar(AnsiString(my_cont)),pansichar(AnsiString(my_prov)),PROV_RSA_FULL,0)
CryptGetUserKey(hProv,AT_KEYEXCHANGE,@PublicKey)
создание ХЭШ-объекта
CryptCreateHash(hProv, alg, PublicKey, 0, @hash) - и вот на данной строке - ПЛОХОЙ КЛЮЧ
формирование ХЭШ
CryptHashData(hash, PByte(s), size, 0)
CryptGetHashParam(hash, HP_HASHVAL, pbHash_, @DataSize, 0)
Подписание ХЭШ
CryptSignHash(hash,AT_KEYEXCHANGE,nil,0,pbHash,@DataSize)
Отредактировано пользователем 12 сентября 2018 г. 14:40:39(UTC)
| Причина: Не указана