Статус: Новичок
Группы: Участники
Зарегистрирован: 11.11.2022(UTC) Сообщений: 6
Сказал(а) «Спасибо»: 5 раз
|
Всем, Здравствуйте! Делаю отсоединенную подпись: Код:[h]
// Открываем хранилище "Личное" сертификатов
if (!( hCertStore = CertOpenSystemStore(NULL, TEXT("MY"))))
MyHandleError("Store not opened.");
// Поиск по отпечатку
if(!(сontext = GetRecipientCert4Thumbprint(hCertStore, _tumbPrint)))
{
CertCloseStore(hCertStore, 0);
MyHandleError("Cert not find.");
}
// Задаем параметры
CRYPT_SIGN_MESSAGE_PARA signPara = { sizeof(signPara) };
signPara.dwMsgEncodingType = X509_ASN_ENCODING | PKCS_7_ASN_ENCODING;
signPara.pSigningCert = context;
signPara.HashAlgorithm.pszObjId = (LPSTR) szOID_CP_GOST_R3411_12_256;
CADES_SIGN_PARA cadesSignPara = { sizeof(cadesSignPara) };
cadesSignPara.dwCadesType = CADES_BES; // Указываем тип усовершенствованной подписи CADES_BES
CADES_SIGN_MESSAGE_PARA para = { sizeof(para) };
para.pSignMessagePara = &signPara;
para.pCadesSignPara = &cadesSignPara;
// Формируем данные для подписания
vector<unsigned char> data;
ReadFileToVector(_filenameSrc, data);
const unsigned char *pbToBeSigned[] = { &data[0] };
DWORD cbToBeSigned[] = { (DWORD)data.size() };
PCRYPT_DATA_BLOB pSignedMessage = 0;
// Создаем подпись
if (!CadesSignMessage(¶, TRUE, 0, pbToBeSigned, cbToBeSigned, &pSignedMessage))
{
cout << "CadesSignMessage() failed" << endl;
return -1;
}
vector<unsigned char> message(pSignedMessage->cbData);
copy(pSignedMessage->pbData, pSignedMessage->pbData + pSignedMessage->cbData, message.begin());
// Сохраняем результат в файл
if (SaveVectorToFile<unsigned char>(_filenameDst, message))
{
cout << "Signature was not saved" << endl;
return -1;
}
cout << "Signature was saved successfully" << endl;
// Освобождаем структуру с закодированным подписанным сообщением
if (!CadesFreeBlob(pSignedMessage))
{
cout << "CadesFreeBlob() failed" << endl;
return -1;
}
[/h][/h][/h] Получаю файл с подписью, но подпись не проходит проверку cptools КриптоПро: Цитата:Подпись 1/1: ошибка при проверке (0x80091007: Неправильное значение хеша.)
Подскажите, каких параметров не хватает для правильной отсоединенной подписи?  UPD.xml (6kb) загружен 5 раз(а). detach_sign.p7s (1kb) загружен 3 раз(а).Отредактировано пользователем 25 ноября 2022 г. 18:08:29(UTC)
| Причина: Не указана
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 14,079   Сказал «Спасибо»: 612 раз Поблагодарили: 2374 раз в 1867 постах
|
Здравствуйте.
1. Хеш xml и в атрибутах - совпадают. Должно успешно проверяться 2. Вы не указали в структуре опцию, чтобы вкладывался сертификат подписанта (можете приложить его, в архиве, .cer?) 3. В cptools проверяли подпись - как отсоединенную? |
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 16.04.2008(UTC) Сообщений: 1,578
Сказал(а) «Спасибо»: 47 раз Поблагодарили: 663 раз в 458 постах
|
Здравствуйте. cptools самостоятельно детектирует attached/detached подписи. Но имя файла с подписью должно быть таким "имя_исходного_Файла_с_расширением.p7s". В вашем сообщении прикреплены файлы с неподходящими именами. Может дело лишь в путанице? На всякий случай добавлю, что вы формируете cades-bes сообщение - для этого не требуется использовать CadesSignMessage - ровно такой же результат даст CryptSignMessage - и ваше приложение не будет требовать наличия cades-библиотек для работы. |
|
 1 пользователь поблагодарил Русев Андрей за этот пост.
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 11.11.2022(UTC) Сообщений: 6
Сказал(а) «Спасибо»: 5 раз
|
Автор: Андрей Русев  Здравствуйте. cptools самостоятельно детектирует attached/detached подписи. Но имя файла с подписью должно быть таким "имя_исходного_Файла_с_расширением.p7s". В вашем сообщении прикреплены файлы с неподходящими именами. Может дело лишь в путанице? На всякий случай добавлю, что вы формируете cades-bes сообщение - для этого не требуется использовать CadesSignMessage - ровно такой же результат даст CryptSignMessage - и ваше приложение не будет требовать наличия cades-библиотек для работы. Спасибо, действительно формат должен быть - "имя_исходного_Файла_с_расширением.p7s". Подскажите в каких случаях нужно использовать CadesSignMessage?
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 11.11.2022(UTC) Сообщений: 6
Сказал(а) «Спасибо»: 5 раз
|
Автор: Андрей *  Здравствуйте.
1. Хеш xml и в атрибутах - совпадают. Должно успешно проверяться 2. Вы не указали в структуре опцию, чтобы вкладывался сертификат подписанта (можете приложить его, в архиве, .cer?) 3. В cptools проверяли подпись - как отсоединенную? По 2 пункту - сертификат нужно всегда прикладывать? Напишите когда надо/не надо его указывать? По 3 пункту - проверял как отсоединённую, дело оказалось в формате имен файла с подписью.
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 14,079   Сказал «Спасибо»: 612 раз Поблагодарили: 2374 раз в 1867 постах
|
Автор: NeoEvgeny  Автор: Андрей *  Здравствуйте.
1. Хеш xml и в атрибутах - совпадают. Должно успешно проверяться 2. Вы не указали в структуре опцию, чтобы вкладывался сертификат подписанта (можете приложить его, в архиве, .cer?) 3. В cptools проверяли подпись - как отсоединенную? По 2 пункту - сертификат нужно всегда прикладывать? Напишите когда надо/не надо его указывать? По 3 пункту - проверял как отсоединённую, дело оказалось в формате имен файла с подписью. редко встречал, когда не нужно(специфические ИС, экономия на х кб). Здесь же - явно требуется, ФНС, обмен УПД между ОЭДО |
|
 1 пользователь поблагодарил Андрей * за этот пост.
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 16.04.2008(UTC) Сообщений: 1,578
Сказал(а) «Спасибо»: 47 раз Поблагодарили: 663 раз в 458 постах
|
Автор: NeoEvgeny  Подскажите в каких случаях нужно использовать CadesSignMessage? Когда хотите сделать cades-t или xlong type-1. |
|
 1 пользователь поблагодарил Русев Андрей за этот пост.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close