| 
	Статус: Сотрудник
 Группы: Участники
 Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,969  Сказал «Спасибо»: 605 разПоблагодарили: 2346 раз в 1842 постах
 
 | 
            
		      
                sotex написал:Андрей * написал:sotex написал:Андрей * написал:sotex написал:  код банальнейший (отпуская проверки и выволд кода ошибки)
 
 gonext := CryptAcquireContext(@Prov,'sdk','Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider',75,CRYPT_MACHINE_KEYSET);
 gonext := CryptCreateHash(Prov,CALG_SHA1,0,0, @Hash);
 gonext := CryptHashData(Hash,PByte(point),Length(point),0);
 BufLen:=0;
 gonext := CryptSignHash(Hash,AT_SIGNATURE,nil,0,PByte(sResult),@BufLen);
 if BufLen>0 then begin
 SetLength(sResult,BufLen);
 CryptSignHash(Hash,AT_SIGNATURE,nil,0,PByte(sResult),@BufLen);
 end;
 
 ошибки:
 CryptAcquireContext Ok
 5
 CryptCreateHash Ok
 5
 CryptHashData Ok
 5
 CryptSignHash Ok
 5
 0
 QEKZACwQAAA1DQoACDZFAEBCmQAcEAAAAAAAAAAAAAAAAAAA1gIAAAEAUwB0AHIAaQBuAGcARgBpAGwAZQBJAPQkmQD0JJ==
 
 сама подпись - просто base64 не измененной CryptSignHash памяти
 
  gonext := CryptCreateHash(Prov,CALG_SHA1 ,0,0, @Hash); Не вижу правильного алгоритма хеширования с другим (напр. CALG_MD5) CryptSignHash выдает ошибку 2148073480 (В подписном сертификате указан SHA1)  В подписном сертификате указан SHA1 = где? Цитата:_BAD_ALGID = 2148073480
 Если открытый ключ не ГОСТ - тогда какие могут быть вопросы к КриптоПРО CSP ? Алгоритм подписи - ГОСТ Р 34.11/34.10-2001 Алгоритм отпечатка - sha1 1) указывай CALG_GR3411 - алгоритм хеширования, а не CALG_SHA1 2) Алгоритм отпечатка - никакого отношения к сертификату не имеет. Это хеш по алгоритму sha1 от сертификата (если его сохранить в файл в DER-кодировке) и используется, например, для поиска сертификатов. Отредактировано пользователем 6 сентября 2012 г. 1:41:59(UTC)
 | Причина: Не указана | 
|  |