|
1 | 1 | 'use strict' |
| 2 | + |
| 3 | +import { from } from 'multiformats/hashes/hasher' |
2 | 4 | import sha3 from 'js-sha3' |
3 | | -const encoder = fn => b => new Uint8Array(fn.array(b)) |
4 | 5 |
|
5 | | -export default [ |
6 | | - { code: 0x14, name: 'sha3-512', encode: encoder(sha3.sha3_512) }, |
7 | | - { code: 0x15, name: 'sha3-384', encode: encoder(sha3.sha3_384) }, |
8 | | - { code: 0x16, name: 'sha3-256', encode: encoder(sha3.sha3_256) }, |
9 | | - { code: 0x17, name: 'sha3-224', encode: encoder(sha3.sha3_224) }, |
10 | | - { code: 0x18, name: 'shake-128', encode: encoder(sha3.shake128) }, |
11 | | - { code: 0x19, name: 'shake-256', encode: encoder(sha3.shake256) }, |
12 | | - { code: 0x1a, name: 'keccak-224', encode: encoder(sha3.keccak224) }, |
13 | | - { code: 0x1b, name: 'keccak-256', encode: encoder(sha3.keccak256) }, |
14 | | - { code: 0x1c, name: 'keccak-384', encode: encoder(sha3.keccak384) }, |
15 | | - { code: 0x1d, name: 'keccak-512', encode: encoder(sha3.keccak512) } |
16 | | -] |
| 6 | +/** |
| 7 | + * @param {sha3.Hash} fn |
| 8 | + * @returns {(inp:Uint8Array)=>Uint8Array} |
| 9 | + */ |
| 10 | +function encoder (fn) { |
| 11 | + return (/** @type {Uint8Array} */ b) => new Uint8Array(fn.array(b)) |
| 12 | +} |
| 13 | + |
| 14 | +export const sha3512 = from({ code: 0x14, name: 'sha3-512', encode: encoder(sha3.sha3_512) }) |
| 15 | +export const sha3384 = from({ code: 0x15, name: 'sha3-384', encode: encoder(sha3.sha3_384) }) |
| 16 | +export const sha3256 = from({ code: 0x16, name: 'sha3-256', encode: encoder(sha3.sha3_256) }) |
| 17 | +export const sha3224 = from({ code: 0x17, name: 'sha3-224', encode: encoder(sha3.sha3_224) }) |
| 18 | +export const shake128 = from({ code: 0x18, name: 'shake-128', encode: (b) => new Uint8Array(sha3.shake128.array(b, 256)) }) |
| 19 | +export const shake256 = from({ code: 0x19, name: 'shake-256', encode: (b) => new Uint8Array(sha3.shake256.array(b, 512)) }) |
| 20 | +export const keccak224 = from({ code: 0x1a, name: 'keccak-224', encode: encoder(sha3.keccak224) }) |
| 21 | +export const keccak256 = from({ code: 0x1b, name: 'keccak-256', encode: encoder(sha3.keccak256) }) |
| 22 | +export const keccak384 = from({ code: 0x1c, name: 'keccak-384', encode: encoder(sha3.keccak384) }) |
| 23 | +export const keccak512 = from({ code: 0x1d, name: 'keccak-512', encode: encoder(sha3.keccak512) }) |
0 commit comments