Ребята из проекта everest собрали для веб-сборки формально проверенную криптографическую библиотеку, известную как HACL *. К сожалению, здесь нет примеров использования кода, определенного здесь .
Я тестировал код с Version 71.0.3578.98 (Official Build) (64-bit)
Chrome.
Вот, в сущности, то, что я попытался на клиенте, чтобы получить рабочий пример.
var module = HaclLoader().then(function(m) {
var state_buffer = new ArrayBuffer(32);
var state = new Uint32Array(state_buffer);
var message_buffer = new ArrayBuffer(32);
var message = new Uint8Array(message_buffer);
for (var i = 0; i < message.length; i++) {
message[i] = i;
}
var hash_buffer = new ArrayBuffer(32);
var hash = new Uint8Array(hash_buffer);
m._Hacl_SHA2_256_init(state);
m._Hacl_SHA2_256_update(state, message);
m._Hacl_SHA2_256_finish(state, hash);
console.log(hash);
});
Указанный код пытается использовать функции, определенные здесь . К сожалению, этот пример кода не работает, в результате хэш становится нулевым массивом.