Статус: Новичок
Группы: Участники
Зарегистрирован: 14.12.2022(UTC) Сообщений: 1
|
Здравствуйте! В нашем веб-приложении мы подписываем некий документ разделенной подписью. У нас есть два документа: - документ.xls (подписанный документ) и
- документ.xls.p7s (подпись).
Если подпись сформирована правильно, то в приложении КриптоПро должно происходить следующее: - Пользователь выбирает подпись.
- Приложение «КриптоПро» просить загрузить файл, для которого эта подпись была создана.
В нашем случае шаг 2 не происходит ("КриптоПро" не просит второй файл) и вместо этого выдает ошибку "Неправильный хеш". Мы формируем подпись следующим кодом: Код:
signDocument(doc) {
this.setLoading(true);
const reader = new FileReader();
return this.$axios
.get(this.uri.downloadFiledocument(doc.id), {responseType: "blob"})
.then((value) => {
if (!this.cert) {
this.setLoading(false)
return
}
let thumbprint = this.cert.thumbprint;
let _this = this
let result;
return new Promise((resolve) => {
reader.readAsArrayBuffer(value.data);
reader.onload = async function () {
try {
let messageHash = await createHash(reader.result);
console.log('сертификат', thumbprint );
result = await createDetachedSignature(thumbprint, messageHash);
let resultBlob = new Blob([result], {
type: "blob",
});
let formData = new FormData();
console.log('сама подпись', result);
formData.append("file", resultBlob, doc.name.substr(0, doc.name.lastIndexOf('.')) + '.sgn')
const responseBinary = await _this.requestUploadBinaryFiles(formData)
_this.$axios.get(`/signature/${responseBinary.data}.p7s`, { responseType: 'blob' } ).then(({ data }) => {
saveFile(data, 'backSignature')
})
resolve({signatureId: responseBinary.data, fileId: doc.id})
_this.setLoading(false);
return responseBinary
} catch (e) {
_this.signError = true;
_this.signErrorMessage = e.message;
_this.setLoading(false);
}
};
})
});
}
Документ, который мы хотим подписать, возвращается Код:.get(this.uri.downloadFiledocument(doc.id), {responseType: "blob"})
и находится в переменной value. Хэш считается вот так: Код:let messageHash = await createHash(reader.result);
Есть ли в этом коде очевидные ошибки? Заранее благодарен Дмитрий Писаренко
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close