Статус: Новичок
Группы: Участники
Зарегистрирован: 11.02.2019(UTC) Сообщений: 8 Откуда: Новосибирск
|
Добрый день. Для собственного ПО возникла необходимость использования УКЭП. Начал с азов. Что то получается, что то нет. Возникают вопросы... 1. Во встроенном в Windows CryptoAPI нет никаких упоминаний об усиленной подписи. Ничего со словом Cades. Т.е. оно не умеет работать с УКЭП ? 2. КриптоПро установлен, SDK установлен. В SDK вижу только .lib и .h, но мне надо работать с ним из Delphi. Как это сделать? 3. Подпись, созданная на странице Создаем подписьи проверенная на странице проверяем подписьпоказывает ошибку "Подлинность документа не подтверждена (HashValidationException)." Что не так?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 11.03.2013(UTC) Сообщений: 805 Откуда: Оттуда Сказал «Спасибо»: 4 раз Поблагодарили: 148 раз в 144 постах
|
Добрый день. Усиленная подпись и усовершенствованная подпись - не одно и то же. Если Вас интересует именно Усовершенствованная подпись, то информацию можно прочитать на нашем сайте https://www.cryptopro.ru/products/cades |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,691 Сказал «Спасибо»: 500 раз Поблагодарили: 2045 раз в 1586 постах
|
Автор: Андрей Т. 1. Во встроенном в Windows CryptoAPI нет никаких упоминаний об усиленной подписи. Ничего со словом Cades. Т.е. оно не умеет работать с УКЭП ? 2. КриптоПро установлен, SDK установлен. В SDK вижу только .lib и .h, но мне надо работать с ним из Delphi. Как это сделать?
Здравствуйте. Самый быстрый способ: Импортировать и использовать ActiveX - CAdESCOM (тип подписи: CADESCOM_CADES_X_LONG_TYPE_1), для усовершенстрованной эл.подписи потребуется наличие лицензии на TSP Client+OCSP Client. Пример через браузер: cades_xlong_sample |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 11.02.2019(UTC) Сообщений: 8 Откуда: Новосибирск
|
Спасибо за ответы. Но чтобы перейти к усовершенствованной подписи нужно сначала разобраться с обычной. Я все-таки научился подписывать, но не научился делать это правильно. Подскажите, пожалуйста, что неправильно в следующем коде на Delphi? Код:
Uses JwaWinCrypt, JwaWinError, EncdDecd;
Type
TSignedData = record
SignSize: Cardinal;
Sign: PChar;
end;
function SignData(Data: PChar): TSignedData;
var
Cert: TProperCertificate; // Cert.pCert: PCERT_CONTEXT;
SignPara: CRYPT_SIGN_MESSAGE_PARA;
Error, DataSize: DWORD;
pbArray, cbArray: Pointer;
begin
// Тут получение сертификата Cert ...
DataSize := Length(Data);
pbArray := @Data;
cbArray := @DataSize;
ZeroMemory(@SignPara, SizeOf(CRYPT_SIGN_MESSAGE_PARA));
with SignPara do
begin
cbSize := SizeOf(SignPara);
dwMsgEncodingType := X509_ASN_ENCODING or PKCS_7_ASN_ENCODING;
pSigningCert := Cert.pCert;
HashAlgorithm.pszObjId := '1.2.643.2.2.9'; // GOST R 34.11-94 длина ключа - 256 бит ID: 32798
HashAlgorithm.Parameters.cbData := 0;
pvHashAuxInfo := nil;
cMsgCert := 1;
rgpMsgCert := @Cert.pCert;
cMsgCrl := 0;
rgpMsgCrl := nil;
cAuthAttr := 0;
rgAuthAttr := nil;
cUnauthAttr := 0;
rgUnauthAttr := nil;
dwFlags := 0;
dwInnerContentType := 0;
end;
CryptSignMessage(@SignPara, False, 1, pbArray, cbArray, nil, Result.SignSize);
GetMem(Result.Sign, Result.SignSize);
CryptSignMessage(@SignPara, False, 1, pbArray, cbArray, PByte(Result.Sign), Result.SignSize);
end;
Результатом выполнения кода является буфер с подписью. Формат этих данных, если я правильно понял, должен быть PCKS#7, но ни один онлайн парсер не читает его. При преобразовании в base64 получившийся текст выглядит похоже на подпись ("MIILxAYJKoZIhvcNAQc"... ) Проверки подписи онлайн сообщают, что подпись неверная.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,691 Сказал «Спасибо»: 500 раз Поблагодарили: 2045 раз в 1586 постах
|
Что возвращает CryptSignMessage? false? GetLastError и SysErrorMessage в помощь. Цитата: При преобразовании в base64 получившийся текст выглядит похоже на подпись ("MIILxAYJKoZIhvcNAQc"... )
Мусор тоже можно закодировать в base64... |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 11.02.2019(UTC) Сообщений: 8 Откуда: Новосибирск
|
CryptSignMessage возвращает True, все проверки из текста убраны, дабы не загромождать. Ни одна из используемых функций не вернула ошибку.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,691 Сказал «Спасибо»: 500 раз Поблагодарили: 2045 раз в 1586 постах
|
Автор: Андрей Т. CryptSignMessage возвращает True, все проверки из текста убраны, дабы не загромождать. Ни одна из используемых функций не вернула ошибку. Вероятно, требуется результат приложить на форуме? |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close