Ключевое слово в защите информации
ключевое слово
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход. Новые регистрации запрещены.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline vega-moon  
#1 Оставлено : 21 июня 2011 г. 15:53:59(UTC)
vega-moon

Статус: Новичок

Группы: Участники
Зарегистрирован: 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;


Всё успешно проверено! Переправляю данные на сервер, который НА САМОМ деле должен меня проверить - всё хорошо! Сервер писал когда-то коллега, которого ныне след простыл. Фактически сдесь воспроизведен участок кода его сервера.

Часть клиентов - также успешно проверяется сервером.

А вот часть - отклоняется. Беда в том, что именно их подписи успешно проверяются через КриптоПРО АРМ - а мои - считаются неправильными. Из самих сигнатур вижу, что всё подписано одним и тем же сертификатом, только исходное сообщение как будто разное.

Спасите-помогите!!! Что у себя долже изломать клиент, что-бы я его верно распознал.?. В чём ошибка сервера.?.

Offline Kirill Sobolev  
#2 Оставлено : 21 июня 2011 г. 16:56:52(UTC)
Кирилл Соболев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,733
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
Техническую поддержку оказываем тут
Наша база знаний
Offline Maddison  
#3 Оставлено : 1 июля 2011 г. 23:46:49(UTC)
Maddison

Статус: Новичок

Группы: Участники
Зарегистрирован: 01.07.2011(UTC)
Сообщений: 3
Откуда: Москва

Всем доброго времени суток. Я новичок в CryptoApi. Мне очень-очень надо встроить алгоритм отечественного шифрования ГОСТ в систему Windows (Си++) . Может кто знает как это сделать? Хотя бы скажите с чего начать. Спасибо всем в заранее.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.