Socket
Socket
Sign inDemoInstall

@chainsafe/as-sha256

Package Overview
Dependencies
Maintainers
5
Versions
16
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@chainsafe/as-sha256 - npm Package Compare versions

Comparing version 0.2.2 to 0.2.3

7

CHANGELOG.md

@@ -1,3 +0,8 @@

## 0.2.1 (2021-05-06)
## 0.2.3 (2021-08-10)
- Add digestObjects method ([da5d82](https://github.com/ChainSafe/as-sha256/commit/da5d82))
- Optimised w+k for digest64 ([359555](https://github.com/ChainSafe/as-sha256/commit/359555))
## 0.2.2 (2021-05-06)
### Bug Fixes

@@ -4,0 +9,0 @@

@@ -0,1 +1,17 @@

/**
* This is a hash representation with 8 numbers, each 4 bytes.
* That makes it 32 bytes, the same to Uint8Array(32).
*/
export interface HashObject {
h0: number;
h1: number;
h2: number;
h3: number;
h4: number;
h5: number;
h6: number;
h7: number;
}
export default class SHA256 {

@@ -9,2 +25,6 @@ constructor();

static digest64(data: Uint8Array): Uint8Array;
static digestTwoHashObjects(obj1: HashObject, obj2: HashObject): HashObject;
}
export function hashObjectToByteArray(obj: HashObject, byteArr: ArrayLike<number>, offset: number): void;
export function byteArrayToHashObject(byteArr: ArrayLike<number>): HashObject;

@@ -6,2 +6,4 @@ "use strict";

});
exports.hashObjectToByteArray = hashObjectToByteArray;
exports.byteArrayToHashObject = byteArrayToHashObject;
exports.default = void 0;

@@ -14,2 +16,8 @@

this.ctx = (0, _wasm.newInstance)();
this.wasmInputValue = this.ctx.input.value;
this.wasmOutputValue = this.ctx.output.value;
this.uint8InputArray = new Uint8Array(this.ctx.memory.buffer, this.wasmInputValue, this.ctx.INPUT_LENGTH);
this.uint8OutputArray = new Uint8Array(this.ctx.memory.buffer, this.wasmOutputValue, 32);
this.uint32InputArray = new Uint32Array(this.ctx.memory.buffer, this.wasmInputValue, this.ctx.INPUT_LENGTH); // extracting numbers from Uint32Array causes more memory
// this.uint32OutputArray = new Uint32Array(this.ctx.memory.buffer, this.wasmOutputValue, 32);
}

@@ -24,3 +32,2 @@

const INPUT_LENGTH = this.ctx.INPUT_LENGTH;
const input = new Uint8Array(this.ctx.memory.buffer, this.ctx.input.value, INPUT_LENGTH);

@@ -30,8 +37,8 @@ if (data.length > INPUT_LENGTH) {

const sliced = data.slice(i, i + INPUT_LENGTH);
input.set(sliced);
this.ctx.update(this.ctx.input.value, sliced.length);
this.uint8InputArray.set(sliced);
this.ctx.update(this.wasmInputValue, sliced.length);
}
} else {
input.set(data);
this.ctx.update(this.ctx.input.value, data.length);
this.uint8InputArray.set(data);
this.ctx.update(this.wasmInputValue, data.length);
}

@@ -43,5 +50,5 @@

final() {
this.ctx.final(this.ctx.output.value);
this.ctx.final(this.wasmOutputValue);
const output = new Uint8Array(32);
output.set(new Uint8Array(this.ctx.memory.buffer, this.ctx.output.value, 32));
output.set(this.uint8OutputArray);
return output;

@@ -65,7 +72,6 @@ }

if (data.length == 64) {
const input = new Uint8Array(staticInstance.ctx.memory.buffer, staticInstance.ctx.input.value, staticInstance.ctx.INPUT_LENGTH);
input.set(data);
staticInstance.ctx.digest64(staticInstance.ctx.input.value, staticInstance.ctx.output.value);
staticInstance.uint8InputArray.set(data);
staticInstance.ctx.digest64(staticInstance.wasmInputValue, staticInstance.wasmOutputValue);
const output = new Uint8Array(32);
output.set(new Uint8Array(staticInstance.ctx.memory.buffer, staticInstance.ctx.output.value, 32));
output.set(staticInstance.uint8OutputArray);
return output;

@@ -76,6 +82,200 @@ }

}
/**
* Digest 2 objects, each has 8 properties from h0 to h7.
* The performance is a little bit better than digest64 due to the use of Uint32Array
* and the memory is a little bit better than digest64 due to no temporary Uint8Array.
* @returns
*/
static digestTwoHashObjects(obj1, obj2) {
// TODO: expect obj1 and obj2 as HashObject
staticInstance.uint32InputArray[0] = obj1.h0;
staticInstance.uint32InputArray[1] = obj1.h1;
staticInstance.uint32InputArray[2] = obj1.h2;
staticInstance.uint32InputArray[3] = obj1.h3;
staticInstance.uint32InputArray[4] = obj1.h4;
staticInstance.uint32InputArray[5] = obj1.h5;
staticInstance.uint32InputArray[6] = obj1.h6;
staticInstance.uint32InputArray[7] = obj1.h7;
staticInstance.uint32InputArray[8] = obj2.h0;
staticInstance.uint32InputArray[9] = obj2.h1;
staticInstance.uint32InputArray[10] = obj2.h2;
staticInstance.uint32InputArray[11] = obj2.h3;
staticInstance.uint32InputArray[12] = obj2.h4;
staticInstance.uint32InputArray[13] = obj2.h5;
staticInstance.uint32InputArray[14] = obj2.h6;
staticInstance.uint32InputArray[15] = obj2.h7;
staticInstance.ctx.digest64(staticInstance.wasmInputValue, staticInstance.wasmOutputValue); // extracting numbers from Uint32Array causes more memory
return byteArrayToHashObject(staticInstance.uint8OutputArray);
}
}
exports.default = SHA256;
const staticInstance = new SHA256();
const staticInstance = new SHA256();
/**
* Pass 8 numbers in an object and set that to inputArray.
* This function contains multiple same procedures but we intentionally
* do it step by step to improve performance a bit.
**/
function hashObjectToByteArray(obj, byteArr, offset) {
let tmp = obj.h0;
byteArr[0 + offset] = tmp & 0xff;
tmp = tmp >> 8;
byteArr[1 + offset] = tmp & 0xff;
tmp = tmp >> 8;
byteArr[2 + offset] = tmp & 0xff;
tmp = tmp >> 8;
byteArr[3 + offset] = tmp & 0xff;
tmp = obj.h1;
byteArr[4 + offset] = tmp & 0xff;
tmp = tmp >> 8;
byteArr[5 + offset] = tmp & 0xff;
tmp = tmp >> 8;
byteArr[6 + offset] = tmp & 0xff;
tmp = tmp >> 8;
byteArr[7 + offset] = tmp & 0xff;
tmp = obj.h2;
byteArr[8 + offset] = tmp & 0xff;
tmp = tmp >> 8;
byteArr[9 + offset] = tmp & 0xff;
tmp = tmp >> 8;
byteArr[10 + offset] = tmp & 0xff;
tmp = tmp >> 8;
byteArr[11 + offset] = tmp & 0xff;
tmp = obj.h3;
byteArr[12 + offset] = tmp & 0xff;
tmp = tmp >> 8;
byteArr[13 + offset] = tmp & 0xff;
tmp = tmp >> 8;
byteArr[14 + offset] = tmp & 0xff;
tmp = tmp >> 8;
byteArr[15 + offset] = tmp & 0xff;
tmp = obj.h4;
byteArr[16 + offset] = tmp & 0xff;
tmp = tmp >> 8;
byteArr[17 + offset] = tmp & 0xff;
tmp = tmp >> 8;
byteArr[18 + offset] = tmp & 0xff;
tmp = tmp >> 8;
byteArr[19 + offset] = tmp & 0xff;
tmp = obj.h5;
byteArr[20 + offset] = tmp & 0xff;
tmp = tmp >> 8;
byteArr[21 + offset] = tmp & 0xff;
tmp = tmp >> 8;
byteArr[22 + offset] = tmp & 0xff;
tmp = tmp >> 8;
byteArr[23 + offset] = tmp & 0xff;
tmp = obj.h6;
byteArr[24 + offset] = tmp & 0xff;
tmp = tmp >> 8;
byteArr[25 + offset] = tmp & 0xff;
tmp = tmp >> 8;
byteArr[26 + offset] = tmp & 0xff;
tmp = tmp >> 8;
byteArr[27 + offset] = tmp & 0xff;
tmp = obj.h7;
byteArr[28 + offset] = tmp & 0xff;
tmp = tmp >> 8;
byteArr[29 + offset] = tmp & 0xff;
tmp = tmp >> 8;
byteArr[30 + offset] = tmp & 0xff;
tmp = tmp >> 8;
byteArr[31 + offset] = tmp & 0xff;
}
/**
* Parse outputArray into an object of 8 numbers.
* This is the order that makes Uint32Array the same to Uint8Array
* This function contains multiple same procedures but we intentionally
* do it step by step to improve performance a bit.
**/
function byteArrayToHashObject(byteArr) {
let tmp = 0;
tmp |= byteArr[3] & 0xff;
tmp = tmp << 8;
tmp |= byteArr[2] & 0xff;
tmp = tmp << 8;
tmp |= byteArr[1] & 0xff;
tmp = tmp << 8;
tmp |= byteArr[0] & 0xff;
const h0 = tmp;
tmp = 0;
tmp |= byteArr[7] & 0xff;
tmp = tmp << 8;
tmp |= byteArr[6] & 0xff;
tmp = tmp << 8;
tmp |= byteArr[5] & 0xff;
tmp = tmp << 8;
tmp |= byteArr[4] & 0xff;
const h1 = tmp;
tmp = 0;
tmp |= byteArr[11] & 0xff;
tmp = tmp << 8;
tmp |= byteArr[10] & 0xff;
tmp = tmp << 8;
tmp |= byteArr[9] & 0xff;
tmp = tmp << 8;
tmp |= byteArr[8] & 0xff;
const h2 = tmp;
tmp = 0;
tmp |= byteArr[15] & 0xff;
tmp = tmp << 8;
tmp |= byteArr[14] & 0xff;
tmp = tmp << 8;
tmp |= byteArr[13] & 0xff;
tmp = tmp << 8;
tmp |= byteArr[12] & 0xff;
const h3 = tmp;
tmp = 0;
tmp |= byteArr[19] & 0xff;
tmp = tmp << 8;
tmp |= byteArr[18] & 0xff;
tmp = tmp << 8;
tmp |= byteArr[17] & 0xff;
tmp = tmp << 8;
tmp |= byteArr[16] & 0xff;
const h4 = tmp;
tmp = 0;
tmp |= byteArr[23] & 0xff;
tmp = tmp << 8;
tmp |= byteArr[22] & 0xff;
tmp = tmp << 8;
tmp |= byteArr[21] & 0xff;
tmp = tmp << 8;
tmp |= byteArr[20] & 0xff;
const h5 = tmp;
tmp = 0;
tmp |= byteArr[27] & 0xff;
tmp = tmp << 8;
tmp |= byteArr[26] & 0xff;
tmp = tmp << 8;
tmp |= byteArr[25] & 0xff;
tmp = tmp << 8;
tmp |= byteArr[24] & 0xff;
const h6 = tmp;
tmp = 0;
tmp |= byteArr[31] & 0xff;
tmp = tmp << 8;
tmp |= byteArr[30] & 0xff;
tmp = tmp << 8;
tmp |= byteArr[29] & 0xff;
tmp = tmp << 8;
tmp |= byteArr[28] & 0xff;
const h7 = tmp;
return {
h0,
h1,
h2,
h3,
h4,
h5,
h6,
h7
};
}

2

lib/wasm.js

@@ -15,3 +15,3 @@ "use strict";

/* babel-plugin-inline-binary-import '../build/optimized.wasm' */
const wasmCode = "\0asm\x01\0\0\0\x01\x1F\x06`\x02\x7F\x7F\0`\0\0`\x01\x7F\0`\x01\x7F\x01\x7F`\x03\x7F\x7F\x7F\0`\x04\x7F\x7F\x7F\x7F\0\x02\r\x01\x03env\x05abort\0\x05\x03\x0F\x0E\x02\x03\0\x03\x01\x01\x04\0\0\x03\x02\x02\0\x01\x05\x03\x01\0\x01\x06\xAC\x01\"\x7F\0A\x80\x04\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x07V\t\x06memory\x02\0\fINPUT_LENGTH\x03\0\x05input\x03\x1C\x06output\x03\x1E\x04init\0\x06\x06update\0\t\x05final\0\x0B\x06digest\0\f\bdigest64\0\r\b\x01\x0E\n\xD2\f\x0EF\x01\x02\x7F \0?\0\"\x02A\x10t\"\x01K\x04@ \x02 \0 \x01kA\xFF\xFF\x03jA\x80\x80|qA\x10v\"\x01 \x02 \x01J\x1B@\0A\0H\x04@ \x01@\0A\0H\x04@\0\x0B\x0B\x0B \0$\x17\x0BR\x01\x03\x7F \0A\xF0\xFF\xFF\xFF\x03K\x04@\0\x0B#\x17A\x10j\"\x02 \0A\x0FjApq\"\x01A\x10 \x01A\x10K\x1B\"\x03j\x10\x01 \x02A\x10k\"\x01 \x036\x02\0 \x01A\x016\x02\x04 \x01A\x006\x02\b \x01 \x006\x02\f \x02\x0B%\x01\x01\x7F\x03@ \x01\x04@ \0\"\x02A\x01j!\0 \x02A\0:\0\0 \x01A\x01k!\x01\f\x01\x0B\x0B\x0B)\x01\x01\x7F \0A\xF0\xFF\xFF\xFF\x03K\x04@A\x80\x05A\xB0\x05A6A*\x10\0\0\x0B \0\x10\x02\"\x01 \0\x10\x03 \x01\x0BG\0A\xB4\x02(\x02\0$\x01A\xE4\x04(\x02\0$\x02A\xE0\x05$\x16A\xE0\x05$\x17A\xC0\0\x10\x04$\x18#\x18$\x19A\x80\x02\x10\x04$\x1A#\x1A$\x1BA\x80\x04\x10\x04$\x1C#\x1C$\x1DA \x10\x04$\x1E#\x1E$\x1F\x0BJ\0A\xE7\xCC\xA7\xD0\x06$\x03A\x85\xDD\x9E\xDB{$\x04A\xF2\xE6\xBB\xE3\x03$\x05A\xBA\xEA\xBF\xAAz$\x06A\xFF\xA4\xB9\x88\x05$\x07A\x8C\xD1\x95\xD8y$\bA\xAB\xB3\x8F\xFC\x01$\tA\x99\x9A\x83\xDF\x05$\nA\0$ A\0$!\x0Bg\x01\x02\x7F\x02@ \x02!\x03 \0 \x01F\r\0 \0 \x01I\x04@\x03@ \x03\x04@ \0\"\x02A\x01j!\0 \x01\"\x04A\x01j!\x01 \x02 \x04-\0\0:\0\0 \x03A\x01k!\x03\f\x01\x0B\x0B\x05\x03@ \x03\x04@ \x03A\x01k\"\x03 \0j \x01 \x03j-\0\0:\0\0\f\x01\x0B\x0B\x0B\x0B\x0B\xEC\x03\x01\x01\x7F#\x03$\x0B#\x04$\f#\x05$\r#\x06$\x0E#\x07$\x0F#\b$\x10#\t$\x11#\n$\x12 \x01\x04@A\0$\x13\x03@#\x13A\x10I\x04@ \0#\x13A\x02tj \x01#\x13A\x02t\"\x02j-\0\0A\x18t \x01 \x02A\x01jj-\0\0A\x10tr \x01 \x02A\x02jj-\0\0A\btr \x01 \x02A\x03jj-\0\0r6\x02\0#\x13A\x01j$\x13\f\x01\x0B\x0BA\x10$\x13\x03@#\x13A\xC0\0I\x04@ \0#\x13A\x02tj \0#\x13A\x10kA\x02tj(\x02\0 \0#\x13A\x07kA\x02tj(\x02\0 \0#\x13A\x02kA\x02tj(\x02\0\"\x01A\x11x \x01A\x13xs \x01A\nvsj \0#\x13A\x0FkA\x02tj(\x02\0\"\x01A\x07x \x01A\x12xs \x01A\x03vsjj6\x02\0#\x13A\x01j$\x13\f\x01\x0B\x0B\x0BA\0$\x13\x03@#\x13A\xC0\0I\x04@ \0#\x13A\x02tj(\x02\0#\x01#\x13A\x02tj(\x02\0#\x12#\x0F\"\x01A\x06x \x01A\x0Bxs \x01A\x19xsj#\x0F\"\x01#\x10q#\x11 \x01A\x7Fsqsjjj$\x14#\x0B\"\x01A\x02x \x01A\rxs \x01A\x16xs#\x0B\"\x01#\f\"\x02q \x01#\r\"\x01qs \x01 \x02qsj$\x15#\x11$\x12#\x10$\x11#\x0F$\x10#\x0E#\x14j$\x0F#\r$\x0E#\f$\r#\x0B$\f#\x14#\x15j$\x0B#\x13A\x01j$\x13\f\x01\x0B\x0B#\x03#\x0Bj$\x03#\x04#\fj$\x04#\x05#\rj$\x05#\x06#\x0Ej$\x06#\x07#\x0Fj$\x07#\b#\x10j$\b#\t#\x11j$\t#\n#\x12j$\n\x0B\xB1\x01\x01\x02\x7F \x01#!j$!# \x04@A\xC0\0# k \x01L\x04@#\x19# j \0A\xC0\0# k\x10\x07# A\xC0\0# kj$ A\xC0\0# k!\x02 \x01A\xC0\0# kk!\x01#\x1B#\x19\x10\bA\0$ \x05#\x19# j \0 \x01\x10\x07 \x01# j$ \x0F\x0B\x0B\x03@ \x03 \x01A\xC0\0mH\x04@#\x1B \0 \x02j\x10\b \x03A\x01j!\x03 \x02A@k!\x02\f\x01\x0B\x0B \x01A?q\x04@#\x19# j \0 \x02j \x01A?q\"\0\x10\x07 \0# j$ \x0B\x0B\x19\0 \0A\x80\xFE\x83xqA\bw \0A\xFF\x81\xFC\x07qA\bxr\x0B\xAD\x02\x01\x02\x7F#!A?qA?H\x04@#\x19# jA\x80\x01:\0\0# A\x01j$ \x0B#!A?qA8N\x04@#\x19# j\"\x01A\xC0\0# kj!\x02\x03@ \x01 \x02I\x04@ \x01A\0:\0\0 \x01A\x01j!\x01\f\x01\x0B\x0B#\x1B#\x19\x10\bA\0$ \x0B#!A?qA?N\x04@#\x19# jA\x80\x01:\0\0# A\x01j$ \x0B#\x19# j\"\x01A8# kj!\x02\x03@ \x01 \x02I\x04@ \x01A\0:\0\0 \x01A\x01j!\x01\f\x01\x0B\x0B#\x19A8j#!A\x80\x80\x80\x80\x02m\x10\n6\x02\0#\x19A<j#!A\x03t\x10\n6\x02\0#\x1B#\x19\x10\b \0#\x03\x10\n6\x02\0 \0A\x04j#\x04\x10\n6\x02\0 \0A\bj#\x05\x10\n6\x02\0 \0A\fj#\x06\x10\n6\x02\0 \0A\x10j#\x07\x10\n6\x02\0 \0A\x14j#\b\x10\n6\x02\0 \0A\x18j#\t\x10\n6\x02\0 \0A\x1Cj#\n\x10\n6\x02\0\x0B\x0E\0\x10\x06#\x1D \0\x10\t#\x1F\x10\x0B\x0Bm\0\x10\x06#\x1B \0\x10\b#\x02A\0\x10\b \x01#\x03\x10\n6\x02\0 \x01A\x04j#\x04\x10\n6\x02\0 \x01A\bj#\x05\x10\n6\x02\0 \x01A\fj#\x06\x10\n6\x02\0 \x01A\x10j#\x07\x10\n6\x02\0 \x01A\x14j#\b\x10\n6\x02\0 \x01A\x18j#\t\x10\n6\x02\0 \x01A\x1Cj#\n\x10\n6\x02\0\x0B\x04\0\x10\x05\x0B\x0B\xAB\x05\x07\0A\x11\x0B\x8F\x02\x01\0\0\x01\0\0\0\0\0\0\0\0\x01\0\0\x98/\x8AB\x91D7q\xCF\xFB\xC0\xB5\xA5\xDB\xB5\xE9[\xC2V9\xF1\x11\xF1Y\xA4\x82?\x92\xD5^\x1C\xAB\x98\xAA\x07\xD8\x01[\x83\x12\xBE\x851$\xC3}\fUt]\xBEr\xFE\xB1\xDE\x80\xA7\x06\xDC\x9Bt\xF1\x9B\xC1\xC1i\x9B\xE4\x86G\xBE\xEF\xC6\x9D\xC1\x0F\xCC\xA1\f$o,\xE9-\xAA\x84tJ\xDC\xA9\xB0\\\xDA\x88\xF9vRQ>\x98m\xC61\xA8\xC8'\x03\xB0\xC7\x7FY\xBF\xF3\x0B\xE0\xC6G\x91\xA7\xD5Qc\xCA\x06g))\x14\x85\n\xB7'8!\x1B.\xFCm,M\x13\r8STs\ne\xBB\njv.\xC9\xC2\x81\x85,r\x92\xA1\xE8\xBF\xA2Kf\x1A\xA8p\x8BK\xC2\xA3Ql\xC7\x19\xE8\x92\xD1$\x06\x99\xD6\x855\x0E\xF4p\xA0j\x10\x16\xC1\xA4\x19\bl7\x1ELwH'\xB5\xBC\xB04\xB3\f\x1C9J\xAA\xD8NO\xCA\x9C[\xF3o.h\xEE\x82\x8Ftoc\xA5x\x14x\xC8\x84\b\x02\xC7\x8C\xFA\xFF\xBE\x90\xEBlP\xA4\xF7\xA3\xF9\xBE\xF2xq\xC6\0A\xA0\x02\x0B\x1D\x10\0\0\0\x01\0\0\0\x03\0\0\0\x10\0\0\0 \0\0\0 \0\0\0\0\x01\0\0@\0A\xC1\x02\x0B\x13\x01\0\0\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\x80\0A\x8D\x03\x0B\xC3\x01\x02\0\0\0\0\0\x80\0\0@\x01\0P \0\x88P\0\0\0\b\0\"\x14\0U\"B\x97\b\x05 \0\0\xA0\0\0\x88Z\0\x94\\\0\x9D\xD4\x16\0\0\x1F\x80\xFA\xD0%2\xD3YYg\x11\xDA\xBF\xE6\xF6I\x15\f\xB3P\xB0\xB2\b'L|\x9D\x93\xA3\xE2\f\xEA\xE1\xE6\x885C+\xA5Io\xA1go\x012\xD7\x91.\xEBN\xE5U\xBF]5#\xEE\x8E\xC2^\xBC\xE2\x94C?\xA8\xF7x\xADE\xCD\xD0\xF36\xE8\x05\x9C\xD9\xC7\x1DQ\xB0\xC4z\xBCi[7\x11\xBD\xE5q\xBA\xE3\xF2\x9F ;\x17\xEE\xFE\x18\xE7\xD9Z\xE2FP7\x13\x9D\b\x15\x05\x04\x0F\rONH'&\xD2(\x0114\xB4h\xC6\xCCA\bB\xB8\x11\xD3bq\xA7\x9B\xE5\x84\xA4\xA7\x85\0A\xD0\x04\x0B\x1D\x10\0\0\0\x01\0\0\0\x03\0\0\0\x10\0\0\0P\x01\0\0P\x01\0\0\0\x01\0\0@\0A\xF0\x04\x0B+\x1C\0\0\0\x01\0\0\0\x01\0\0\0\x1C\0\0\0I\0n\0v\0a\0l\0i\0d\0 \0l\0e\0n\0g\0t\0h\0A\xA0\x05\x0B5&\0\0\0\x01\0\0\0\x01\0\0\0&\0\0\0~\0l\0i\0b\0/\0a\0r\0r\0a\0y\0b\0u\0f\0f\0e\0r\0.\0t\0s";
const wasmCode = "\0asm\x01\0\0\0\x01\x1F\x06`\x01\x7F\0`\x02\x7F\x7F\0`\0\0`\x01\x7F\x01\x7F`\x03\x7F\x7F\x7F\0`\x04\x7F\x7F\x7F\x7F\0\x02\r\x01\x03env\x05abort\0\x05\x03\x10\x0F\0\x03\x01\x03\x02\x02\x04\x01\x01\x03\0\0\0\x01\x02\x05\x03\x01\0\x01\x06\xAC\x01\"\x7F\0A\x80\x04\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x7F\x01A\0\x0B\x07V\t\x06memory\x02\0\fINPUT_LENGTH\x03\0\x05input\x03\x1C\x06output\x03\x1E\x04init\0\x06\x06update\0\t\x05final\0\x0B\x06digest\0\f\bdigest64\0\x0E\b\x01\x0F\n\xCA\x0E\x0FF\x01\x02\x7F \0?\0\"\x02A\x10t\"\x01K\x04@ \x02 \0 \x01kA\xFF\xFF\x03jA\x80\x80|qA\x10v\"\x01 \x02 \x01J\x1B@\0A\0H\x04@ \x01@\0A\0H\x04@\0\x0B\x0B\x0B \0$\x17\x0BR\x01\x03\x7F \0A\xF0\xFF\xFF\xFF\x03K\x04@\0\x0B#\x17A\x10j\"\x02 \0A\x0FjApq\"\x01A\x10 \x01A\x10K\x1B\"\x03j\x10\x01 \x02A\x10k\"\x01 \x036\x02\0 \x01A\x016\x02\x04 \x01A\x006\x02\b \x01 \x006\x02\f \x02\x0B%\x01\x01\x7F\x03@ \x01\x04@ \0\"\x02A\x01j!\0 \x02A\0:\0\0 \x01A\x01k!\x01\f\x01\x0B\x0B\x0B)\x01\x01\x7F \0A\xF0\xFF\xFF\xFF\x03K\x04@A\x80\x05A\xB0\x05A6A*\x10\0\0\x0B \0\x10\x02\"\x01 \0\x10\x03 \x01\x0BG\0A\xB4\x02(\x02\0$\x01A\xE4\x04(\x02\0$\x02A\xE0\x05$\x16A\xE0\x05$\x17A\xC0\0\x10\x04$\x18#\x18$\x19A\x80\x02\x10\x04$\x1A#\x1A$\x1BA\x80\x04\x10\x04$\x1C#\x1C$\x1DA \x10\x04$\x1E#\x1E$\x1F\x0BJ\0A\xE7\xCC\xA7\xD0\x06$\x03A\x85\xDD\x9E\xDB{$\x04A\xF2\xE6\xBB\xE3\x03$\x05A\xBA\xEA\xBF\xAAz$\x06A\xFF\xA4\xB9\x88\x05$\x07A\x8C\xD1\x95\xD8y$\bA\xAB\xB3\x8F\xFC\x01$\tA\x99\x9A\x83\xDF\x05$\nA\0$ A\0$!\x0Bg\x01\x02\x7F\x02@ \x02!\x03 \0 \x01F\r\0 \0 \x01I\x04@\x03@ \x03\x04@ \0\"\x02A\x01j!\0 \x01\"\x04A\x01j!\x01 \x02 \x04-\0\0:\0\0 \x03A\x01k!\x03\f\x01\x0B\x0B\x05\x03@ \x03\x04@ \x03A\x01k\"\x03 \0j \x01 \x03j-\0\0:\0\0\f\x01\x0B\x0B\x0B\x0B\x0B\xE7\x03\x01\x01\x7F#\x03$\x0B#\x04$\f#\x05$\r#\x06$\x0E#\x07$\x0F#\b$\x10#\t$\x11#\n$\x12A\0$\x13\x03@#\x13A\x10I\x04@ \0#\x13A\x02tj \x01#\x13A\x02t\"\x02j-\0\0A\x18t \x01 \x02A\x01jj-\0\0A\x10tr \x01 \x02A\x02jj-\0\0A\btr \x01 \x02A\x03jj-\0\0r6\x02\0#\x13A\x01j$\x13\f\x01\x0B\x0BA\x10$\x13\x03@#\x13A\xC0\0I\x04@ \0#\x13A\x02tj \0#\x13A\x10kA\x02tj(\x02\0 \0#\x13A\x07kA\x02tj(\x02\0 \0#\x13A\x02kA\x02tj(\x02\0\"\x01A\x11x \x01A\x13xs \x01A\nvsj \0#\x13A\x0FkA\x02tj(\x02\0\"\x01A\x07x \x01A\x12xs \x01A\x03vsjj6\x02\0#\x13A\x01j$\x13\f\x01\x0B\x0BA\0$\x13\x03@#\x13A\xC0\0I\x04@ \0#\x13A\x02tj(\x02\0#\x01#\x13A\x02tj(\x02\0#\x12#\x0F\"\x01A\x06x \x01A\x0Bxs \x01A\x19xsj#\x0F\"\x01#\x10q#\x11 \x01A\x7Fsqsjjj$\x14#\x0B\"\x01A\x02x \x01A\rxs \x01A\x16xs#\x0B\"\x01#\f\"\x02q \x01#\r\"\x01qs \x01 \x02qsj$\x15#\x11$\x12#\x10$\x11#\x0F$\x10#\x0E#\x14j$\x0F#\r$\x0E#\f$\r#\x0B$\f#\x14#\x15j$\x0B#\x13A\x01j$\x13\f\x01\x0B\x0B#\x03#\x0Bj$\x03#\x04#\fj$\x04#\x05#\rj$\x05#\x06#\x0Ej$\x06#\x07#\x0Fj$\x07#\b#\x10j$\b#\t#\x11j$\t#\n#\x12j$\n\x0B\xB1\x01\x01\x02\x7F \x01#!j$!# \x04@A\xC0\0# k \x01L\x04@#\x19# j \0A\xC0\0# k\x10\x07# A\xC0\0# kj$ A\xC0\0# k!\x02 \x01A\xC0\0# kk!\x01#\x1B#\x19\x10\bA\0$ \x05#\x19# j \0 \x01\x10\x07 \x01# j$ \x0F\x0B\x0B\x03@ \x03 \x01A\xC0\0mH\x04@#\x1B \0 \x02j\x10\b \x03A\x01j!\x03 \x02A@k!\x02\f\x01\x0B\x0B \x01A?q\x04@#\x19# j \0 \x02j \x01A?q\"\0\x10\x07 \0# j$ \x0B\x0B\x19\0 \0A\x80\xFE\x83xqA\bw \0A\xFF\x81\xFC\x07qA\bxr\x0B\xAD\x02\x01\x02\x7F#!A?qA?H\x04@#\x19# jA\x80\x01:\0\0# A\x01j$ \x0B#!A?qA8N\x04@#\x19# j\"\x01A\xC0\0# kj!\x02\x03@ \x01 \x02I\x04@ \x01A\0:\0\0 \x01A\x01j!\x01\f\x01\x0B\x0B#\x1B#\x19\x10\bA\0$ \x0B#!A?qA?N\x04@#\x19# jA\x80\x01:\0\0# A\x01j$ \x0B#\x19# j\"\x01A8# kj!\x02\x03@ \x01 \x02I\x04@ \x01A\0:\0\0 \x01A\x01j!\x01\f\x01\x0B\x0B#\x19A8j#!A\x80\x80\x80\x80\x02m\x10\n6\x02\0#\x19A<j#!A\x03t\x10\n6\x02\0#\x1B#\x19\x10\b \0#\x03\x10\n6\x02\0 \0A\x04j#\x04\x10\n6\x02\0 \0A\bj#\x05\x10\n6\x02\0 \0A\fj#\x06\x10\n6\x02\0 \0A\x10j#\x07\x10\n6\x02\0 \0A\x14j#\b\x10\n6\x02\0 \0A\x18j#\t\x10\n6\x02\0 \0A\x1Cj#\n\x10\n6\x02\0\x0B\x0E\0\x10\x06#\x1D \0\x10\t#\x1F\x10\x0B\x0B\xFD\x01\x01\x02\x7F#\x03$\x0B#\x04$\f#\x05$\r#\x06$\x0E#\x07$\x0F#\b$\x10#\t$\x11#\n$\x12A\0$\x13\x03@#\x13A\xC0\0I\x04@ \0#\x13A\x02tj(\x02\0#\x12#\x0F\"\x01A\x06x \x01A\x0Bxs \x01A\x19xsj#\x0F\"\x01#\x10q#\x11 \x01A\x7Fsqsjj$\x14#\x0B\"\x01A\x02x \x01A\rxs \x01A\x16xs#\x0B\"\x01#\f\"\x02q \x01#\r\"\x01qs \x01 \x02qsj$\x15#\x11$\x12#\x10$\x11#\x0F$\x10#\x0E#\x14j$\x0F#\r$\x0E#\f$\r#\x0B$\f#\x14#\x15j$\x0B#\x13A\x01j$\x13\f\x01\x0B\x0B#\x03#\x0Bj$\x03#\x04#\fj$\x04#\x05#\rj$\x05#\x06#\x0Ej$\x06#\x07#\x0Fj$\x07#\b#\x10j$\b#\t#\x11j$\t#\n#\x12j$\n\x0Bk\0\x10\x06#\x1B \0\x10\b#\x02\x10\r \x01#\x03\x10\n6\x02\0 \x01A\x04j#\x04\x10\n6\x02\0 \x01A\bj#\x05\x10\n6\x02\0 \x01A\fj#\x06\x10\n6\x02\0 \x01A\x10j#\x07\x10\n6\x02\0 \x01A\x14j#\b\x10\n6\x02\0 \x01A\x18j#\t\x10\n6\x02\0 \x01A\x1Cj#\n\x10\n6\x02\0\x0B\x04\0\x10\x05\x0B\x0B\xDE\x05\x06\0A\x11\x0B\x8F\x02\x01\0\0\x01\0\0\0\0\0\0\0\0\x01\0\0\x98/\x8AB\x91D7q\xCF\xFB\xC0\xB5\xA5\xDB\xB5\xE9[\xC2V9\xF1\x11\xF1Y\xA4\x82?\x92\xD5^\x1C\xAB\x98\xAA\x07\xD8\x01[\x83\x12\xBE\x851$\xC3}\fUt]\xBEr\xFE\xB1\xDE\x80\xA7\x06\xDC\x9Bt\xF1\x9B\xC1\xC1i\x9B\xE4\x86G\xBE\xEF\xC6\x9D\xC1\x0F\xCC\xA1\f$o,\xE9-\xAA\x84tJ\xDC\xA9\xB0\\\xDA\x88\xF9vRQ>\x98m\xC61\xA8\xC8'\x03\xB0\xC7\x7FY\xBF\xF3\x0B\xE0\xC6G\x91\xA7\xD5Qc\xCA\x06g))\x14\x85\n\xB7'8!\x1B.\xFCm,M\x13\r8STs\ne\xBB\njv.\xC9\xC2\x81\x85,r\x92\xA1\xE8\xBF\xA2Kf\x1A\xA8p\x8BK\xC2\xA3Ql\xC7\x19\xE8\x92\xD1$\x06\x99\xD6\x855\x0E\xF4p\xA0j\x10\x16\xC1\xA4\x19\bl7\x1ELwH'\xB5\xBC\xB04\xB3\f\x1C9J\xAA\xD8NO\xCA\x9C[\xF3o.h\xEE\x82\x8Ftoc\xA5x\x14x\xC8\x84\b\x02\xC7\x8C\xFA\xFF\xBE\x90\xEBlP\xA4\xF7\xA3\xF9\xBE\xF2xq\xC6\0A\xA0\x02\x0B\x1D\x10\0\0\0\x01\0\0\0\x03\0\0\0\x10\0\0\0 \0\0\0 \0\0\0\0\x01\0\0@\0A\xC1\x02\x0B\x8F\x02\x01\0\0\x01\0\0\0\0\0\0\0\0\x01\0\0\x98/\x8A\xC2\x91D7q\xCF\xFB\xC0\xB5\xA5\xDB\xB5\xE9[\xC2V9\xF1\x11\xF1Y\xA4\x82?\x92\xD5^\x1C\xAB\x98\xAA\x07\xD8\x01[\x83\x12\xBE\x851$\xC3}\fUt]\xBEr\xFE\xB1\xDE\x80\xA7\x06\xDC\x9Bt\xF3\x9B\xC1\xC1i\x9Bd\x86G\xFE\xF0\xC6\xED\xE1\x0FT\xF2\f$o4\xE9O\xBE\x84\xC9l\x1EA\xB9a\xFA\x88\xF9\x16RQ\xC6\xF2mZ\x8E\xA8e\xFC\x19\xB0\xC7\x9E\xD9\xB9\xC31\x12\x9A\xA0\xEA\x0E\xE7+#\xB1\xFD\xB0>5\xC7\xD5\xBAi0_m\x97\xCB\x8F\x11\x0FZ\xFD\xEE\x1E\xDC\x89\xB65\n\x04z\x0B\xDE\x9D\xCA\xF4X\x16[]\xE1\x86>\x7F\0\x80\x89\b72\xEA\x07\xA57\x95\xABo\x10a@\x17\xF1\xD6\x8C\rm;\xAA\xCD7\xBE\xBB\xC0\xDA;a\x83c\xA3H\xDB1\xE9\x02\x0B\xA7\\\xD1o\xCA\xFA\x1AR1\x8431\x95\x1A\xD4n\x90xCm\xF2\x91\x9C\xC3\xBD\xAB\xCC\x9E\xE6\xA0\xC9\xB5<\xB6/S\xC6A\xC7\xD2\xA3~#\x07hK\x95\xA4v\x1D\x19L\0A\xD0\x04\x0B\x1D\x10\0\0\0\x01\0\0\0\x03\0\0\0\x10\0\0\0P\x01\0\0P\x01\0\0\0\x01\0\0@\0A\xF0\x04\x0B+\x1C\0\0\0\x01\0\0\0\x01\0\0\0\x1C\0\0\0I\0n\0v\0a\0l\0i\0d\0 \0l\0e\0n\0g\0t\0h\0A\xA0\x05\x0B5&\0\0\0\x01\0\0\0\x01\0\0\0&\0\0\0~\0l\0i\0b\0/\0a\0r\0r\0a\0y\0b\0u\0f\0f\0e\0r\0.\0t\0s";

@@ -18,0 +18,0 @@ const _module = new WebAssembly.Module(_buffer.Buffer.from(wasmCode, 'binary'));

{
"name": "@chainsafe/as-sha256",
"version": "0.2.2",
"version": "0.2.3",
"description": "An AssemblyScript implementation of SHA256",

@@ -32,3 +32,4 @@ "author": "ChainSafe Systems",

"test:unit:node": "mocha -r .babel-register test/*.spec.js",
"test:perf": "mocha -r .babel-register test/perf.test.js",
"benchmark": "node ./node_modules/.bin/benchmark 'test/benchmark.test.js'",
"benchmark:local": "yarn benchmark --local",
"test:unit:browser": "karma start --single-run --browsers ChromeHeadless,FirefoxHeadless karma.config.js",

@@ -63,3 +64,4 @@ "test:ci": "yarn test:as-ci",

"karma-webpack": "^4.0.2",
"mocha": "^6.2.2",
"@dapplion/benchmark": "^0.1.6",
"mocha": "^8.3.0",
"webpack": "^4.39.3",

@@ -66,0 +68,0 @@ "webpack-cli": "^3.3.7"

@@ -24,2 +24,5 @@ # as-sha256

hash = SHA256.digest(Buffer.from("Hello world"));
// or use a faster one-pass interface for hashing (only) 64 bytes
hash = SHA256.digest64(Buffer.from("abcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefgh"));
```

@@ -26,0 +29,0 @@

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc