Статус: Новичок
Группы: Участники
Зарегистрирован: 21.06.2011(UTC) Сообщений: 1
|
Доброе время суток!
Пишем в Lasarus.
Создаю подпись сообщения:
function CreateSign(SignedData, SerialNumber: WideString): WideString; var Signer: ISigner2; Certificate: ICertificate2; Data: ISignedData; begin Signer := CoSigner.Create; try if GetCertificateInStores(SerialNumber, Certificate) < 0 then begin //Тут иницирую сертификат по серийнику raise ECertificateNotFound.CreateFmt(SCertificateNotFound, [SerialNumber]); end;
Signer.Certificate := Certificate; Data := CoSignedData.Create;
try Data.Content := SignedData; Result := Data.Sign(Signer, true, CAPICOM_ENCODE_BASE64); finally Data := nil; end; finally Signer := nil; end; end;
Проверяю подпись:
function VerifySign(SignedData, SerialNumber, Signed: WideString): Boolean; var Data: ISignedData; Certificates: ICertificates2; Certificate: ICertificate2; I: Integer; f:Text; begin Data := CoSignedData.Create; try Data.Content := Utf8ToAnsi(SignedData); try
Data.Verify(Signed, True, CAPICOM_VERIFY_SIGNATURE_AND_CERTIFICATE); except on E: Exception do begin CryptoProLastError := E.Message;
AssignFile(f,'err.txt'); Rewrite(F); Writeln(f,CryptoProLastError); CloseFile(F);
Result := false; Exit; end; end; Certificates := Data.Certificates as ICertificates2; for I := 1 to Certificates.Count do begin Certificate := IInterface(Certificates.Item[i]) as ICertificate2; if Certificate.SerialNumber = SerialNumber then begin Result := true; Exit; end; end; Result := false; finally Data := nil; end; end;
Всё успешно проверено! Переправляю данные на сервер, который НА САМОМ деле должен меня проверить - всё хорошо! Сервер писал когда-то коллега, которого ныне след простыл. Фактически сдесь воспроизведен участок кода его сервера.
Часть клиентов - также успешно проверяется сервером.
А вот часть - отклоняется. Беда в том, что именно их подписи успешно проверяются через КриптоПРО АРМ - а мои - считаются неправильными. Из самих сигнатур вижу, что всё подписано одним и тем же сертификатом, только исходное сообщение как будто разное.
Спасите-помогите!!! Что у себя долже изломать клиент, что-бы я его верно распознал.?. В чём ошибка сервера.?.
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
|
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 01.07.2011(UTC) Сообщений: 3 Откуда: Москва
|
Всем доброго времени суток. Я новичок в CryptoApi. Мне очень-очень надо встроить алгоритм отечественного шифрования ГОСТ в систему Windows (Си++) . Может кто знает как это сделать? Хотя бы скажите с чего начать. Спасибо всем в заранее.
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close