Статус: Новичок
Группы: Участники
Зарегистрирован: 21.11.2025(UTC) Сообщений: 1 
|
Добрый день! На основе примеров из документации создаю подпись и успешно получаю строку с ее содержимым: Код:
public async createDetachedSign(certThumbprint: string, dataInBase64: string): Promise<string | undefined> {
await this.checkCAdESPluginLoaded();
// @ts-expect-error на случай если плагин не поставлен
const { cadesplugin } = window;
try {
const oStore = await cadesplugin.CreateObjectAsync('CAdESCOM.Store');
await oStore.Open(
cadesplugin.CAPICOM_CURRENT_USER_STORE,
cadesplugin.CAPICOM_MY_STORE,
cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED
);
const oStoreCerts = await oStore.Certificates;
const oCertificates = await oStoreCerts.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH, certThumbprint);
const certsCount = await oCertificates.Count;
if (certsCount === 0) {
console.error(`Сертификат с отпечатком: '${certThumbprint}' не найден`);
return;
}
const oCertificate = await oCertificates.Item(1);
const oSigner = await cadesplugin.CreateObjectAsync('CAdESCOM.CPSigner');
await oSigner.propset_Certificate(oCertificate);
await oSigner.propset_CheckCertificate(true);
const oSignedData = await cadesplugin.CreateObjectAsync('CAdESCOM.CadesSignedData');
await oSignedData.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY);
await oSignedData.propset_Content(dataInBase64);
return await oSignedData.SignCades(oSigner, cadesplugin.CADESCOM_CADES_BES, true);
} catch (error) {
console.error(cadesplugin.getLastError(error));
return;
}
}
Далее записываю подпись в файл .sig и скачиваю: Код:
const data = await this.api.createDetachedSign(certificateSubjectName.thumbprint, base64File);
if (data !== undefined) {
this.state.update((state) => ({ ...state, deattachedSign: data }));
const blob = new Blob([data], { type: 'application/octet-stream' });
const url = window.URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = 'signature.sig';
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
window.URL.revokeObjectURL(url);
}
Однако, при проверке на сервисе https://dss.cryptopro.ru/verify/#/signature , получаю следующее сообщение: Цитата:Результат проверки: Подпись недействительна Исходный документ: signature.xml Дополнительная информация: Подпись не соответствует документу. Возможно, на проверку был передан неправильный документ или документ был изменён. Ошибка: [Неправильное значение хеша] (0x80091007).Сообщение содержит неверную подпись. Цепочка сертификатов обработана, но обработка прервана на корневом сертификате, у которого отсутствует отношение доверия с поставщиком доверия. Сервис распознает данные о сертификате, формат и время подписи, но все же смущает сообщение об ошибке. В чем может быть ошибка?
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 14,022   Сказал «Спасибо»: 609 раз Поблагодарили: 2364 раз в 1860 постах
|
Здравствуйте.
Пришлите файл и sig. |
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 14,022   Сказал «Спасибо»: 609 раз Поблагодарили: 2364 раз в 1860 постах
|
|
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close