Статус: Активный участник
Группы: Участники
Зарегистрирован: 19.12.2014(UTC) Сообщений: 60 Откуда: Москва Сказал(а) «Спасибо»: 4 раз
|
Добрый вечер Пытаюсь использовать КриптоПРО ЭЦП плагин для подписывания файлов. Код тривиальный Код:
cadesplugin.CreateObjectAsync("CAdESCOM.HashedData")
.then( function( oHashedData ) {
oHashedData.propset_Algorithm( 111 );
//oHashedData.propset_DataEncoding(CADESCOM_BASE64_TO_BINARY);
var readEventHandler = function(evt) {
if (evt.target.error == null) {
console.log(`Reading ${evt.target.result.length} from ${offset}`);
offset += evt.target.result.length;
oHashedData.Hash(evt.target.result);
} else {
console.error("Read error: " + evt.target.error);
return;
}
if (offset >= fileSize) {
console.log("Done reading file");
//var value = PromiseValue(oHashedData.Value);
var value;
oHashedData.Value.then(function(v) {
value = v;
console.log(oHashedData);
console.log(value);
$("#hash").removeClass("invisible").addClass("visible").text(value);
window.cryptoPro.createDetachedSignature(oCertificate, value
).then(
function (s) {
console.log("Signed ok");
oSignature = s;
$("#signature").attr('href',URL.createObjectURL(new Blob([s], { type: 'application/pkcs7-signature' })))
.attr('download',file.name+'.sign');
$("#sign").removeClass("invisible").addClass("visible");
} );
} );
return;
}
// of to the next chunk
chunkReaderBlock(offset, chunkSize, file);
}
chunkReaderBlock = function(_offset, length, _file) {
var r = new FileReader();
var blob = _file.slice(_offset, length + _offset);
r.onload = readEventHandler;
r.readAsText(blob);
}
// now let's start the read with the first block
chunkReaderBlock(offset, chunkSize, file);
} );
} );
Работает почти как настоящее. Но хеш получается неправильный. Если подать эталонный хеш (полученный /opt/cprocsp/bin/amd64/cryptcp -hash -hex файл) - подпись получается правильная. Перепробовал, по-моему, все варианты Algorithm и DataEncoding, но правильного хеша не получил. Наверняка у кого-то такой код работает...
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 19.12.2014(UTC) Сообщений: 60 Откуда: Москва Сказал(а) «Спасибо»: 4 раз
|
Отвечаю.
Дело в том, что плагин работает только с Base64. Нужно читать через readAsDataURL и откусывать заголовок.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close