Skip to content

Commit 0056f30

Browse files
committed
chore: wip
1 parent 35a9b44 commit 0056f30

4 files changed

Lines changed: 190 additions & 82 deletions

File tree

build.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ console.log('Building...')
66
// await $`rm -rf ./dist`
77

88
const result = await Bun.build({
9-
entrypoints: ['./src/index.ts', './bin/cli.ts'],
9+
entrypoints: ['./src/index.ts'],
1010
outdir: './dist',
1111
format: 'esm',
1212
target: 'node',

src/random.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
import type { ByteStringBuffer } from './utils'
3131
import { _expandKey, _updateBlock } from './aes'
3232
import * as sha256Module from './sha256'
33-
import { createBuffer, isServer } from './utils'
33+
import { createBuffer } from './utils'
3434

3535
// Define PRNG interface
3636
export interface PRNG {

src/sha256.ts

Lines changed: 66 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@
1616
* Copyright (c) 2010-2015 Digital Bazaar, Inc.
1717
*/
1818

19-
import { ByteStringBuffer, createBuffer, fillString } from './utils'
19+
import type { ByteStringBuffer } from './utils'
20+
import { createBuffer, fillString } from './utils'
2021

2122
// SHA-256 state interface
2223
interface SHA256State {
@@ -226,22 +227,70 @@ function _init(): void {
226227

227228
// Create K table for SHA-256
228229
_k = [
229-
0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
230-
0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
231-
0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
232-
0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
233-
0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
234-
0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
235-
0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
236-
0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
237-
0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
238-
0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
239-
0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
240-
0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
241-
0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
242-
0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
243-
0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
244-
0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2,
230+
0x428A2F98,
231+
0x71374491,
232+
0xB5C0FBCF,
233+
0xE9B5DBA5,
234+
0x3956C25B,
235+
0x59F111F1,
236+
0x923F82A4,
237+
0xAB1C5ED5,
238+
0xD807AA98,
239+
0x12835B01,
240+
0x243185BE,
241+
0x550C7DC3,
242+
0x72BE5D74,
243+
0x80DEB1FE,
244+
0x9BDC06A7,
245+
0xC19BF174,
246+
0xE49B69C1,
247+
0xEFBE4786,
248+
0x0FC19DC6,
249+
0x240CA1CC,
250+
0x2DE92C6F,
251+
0x4A7484AA,
252+
0x5CB0A9DC,
253+
0x76F988DA,
254+
0x983E5152,
255+
0xA831C66D,
256+
0xB00327C8,
257+
0xBF597FC7,
258+
0xC6E00BF3,
259+
0xD5A79147,
260+
0x06CA6351,
261+
0x14292967,
262+
0x27B70A85,
263+
0x2E1B2138,
264+
0x4D2C6DFC,
265+
0x53380D13,
266+
0x650A7354,
267+
0x766A0ABB,
268+
0x81C2C92E,
269+
0x92722C85,
270+
0xA2BFE8A1,
271+
0xA81A664B,
272+
0xC24B8B70,
273+
0xC76C51A3,
274+
0xD192E819,
275+
0xD6990624,
276+
0xF40E3585,
277+
0x106AA070,
278+
0x19A4C116,
279+
0x1E376C08,
280+
0x2748774C,
281+
0x34B0BCB5,
282+
0x391C0CB3,
283+
0x4ED8AA4A,
284+
0x5B9CCA4F,
285+
0x682E6FF3,
286+
0x748F82EE,
287+
0x78A5636F,
288+
0x84C87814,
289+
0x8CC70208,
290+
0x90BEFFFA,
291+
0xA4506CEB,
292+
0xBEF9A3F7,
293+
0xC67178F2,
245294
]
246295

247296
_initialized = true

src/sha512.ts

Lines changed: 122 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010
*
1111
* Copyright (c) 2014-2015 Digital Bazaar, Inc.
1212
*/
13-
import { ByteStringBuffer, createBuffer, fillString } from './utils'
13+
import type { ByteStringBuffer } from './utils'
14+
import { createBuffer, fillString } from './utils'
1415

1516
// SHA-512 state interface (each value is represented as two 32-bit integers)
1617
interface SHA512State {
@@ -198,9 +199,11 @@ export function create(algorithm: SHA512Algorithm = 'SHA-512'): MessageDigest {
198199

199200
// Build final hash value
200201
const rval = createBuffer()
201-
const hlen = algorithm === 'SHA-512' ? finalState.length :
202-
algorithm === 'SHA-384' ? finalState.length - 2 :
203-
finalState.length - 4
202+
const hlen = algorithm === 'SHA-512'
203+
? finalState.length
204+
: algorithm === 'SHA-384'
205+
? finalState.length - 2
206+
: finalState.length - 4
204207

205208
for (let i = 0; i < hlen; ++i) {
206209
rval.putInt32(finalState[i][0])
@@ -227,73 +230,129 @@ function _init(): void {
227230

228231
// Create K table for SHA-512
229232
_k = [
230-
[0x428A2F98, 0xD728AE22], [0x71374491, 0x23EF65CD],
231-
[0xB5C0FBCF, 0xEC4D3B2F], [0xE9B5DBA5, 0x8189DBBC],
232-
[0x3956C25B, 0xF348B538], [0x59F111F1, 0xB605D019],
233-
[0x923F82A4, 0xAF194F9B], [0xAB1C5ED5, 0xDA6D8118],
234-
[0xD807AA98, 0xA3030242], [0x12835B01, 0x45706FBE],
235-
[0x243185BE, 0x4EE4B28C], [0x550C7DC3, 0xD5FFB4E2],
236-
[0x72BE5D74, 0xF27B896F], [0x80DEB1FE, 0x3B1696B1],
237-
[0x9BDC06A7, 0x25C71235], [0xC19BF174, 0xCF692694],
238-
[0xE49B69C1, 0x9EF14AD2], [0xEFBE4786, 0x384F25E3],
239-
[0x0FC19DC6, 0x8B8CD5B5], [0x240CA1CC, 0x77AC9C65],
240-
[0x2DE92C6F, 0x592B0275], [0x4A7484AA, 0x6EA6E483],
241-
[0x5CB0A9DC, 0xBD41FBD4], [0x76F988DA, 0x831153B5],
242-
[0x983E5152, 0xEE66DFAB], [0xA831C66D, 0x2DB43210],
243-
[0xB00327C8, 0x98FB213F], [0xBF597FC7, 0xBEEF0EE4],
244-
[0xC6E00BF3, 0x3DA88FC2], [0xD5A79147, 0x930AA725],
245-
[0x06CA6351, 0xE003826F], [0x14292967, 0x0A0E6E70],
246-
[0x27B70A85, 0x46D22FFC], [0x2E1B2138, 0x5C26C926],
247-
[0x4D2C6DFC, 0x5AC42AED], [0x53380D13, 0x9D95B3DF],
248-
[0x650A7354, 0x8BAF63DE], [0x766A0ABB, 0x3C77B2A8],
249-
[0x81C2C92E, 0x47EDAEE6], [0x92722C85, 0x1482353B],
250-
[0xA2BFE8A1, 0x4CF10364], [0xA81A664B, 0xBC423001],
251-
[0xC24B8B70, 0xD0F89791], [0xC76C51A3, 0x0654BE30],
252-
[0xD192E819, 0xD6EF5218], [0xD6990624, 0x5565A910],
253-
[0xF40E3585, 0x5771202A], [0x106AA070, 0x32BBD1B8],
254-
[0x19A4C116, 0xB8D2D0C8], [0x1E376C08, 0x5141AB53],
255-
[0x2748774C, 0xDF8EEB99], [0x34B0BCB5, 0xE19B48A8],
256-
[0x391C0CB3, 0xC5C95A63], [0x4ED8AA4A, 0xE3418ACB],
257-
[0x5B9CCA4F, 0x7763E373], [0x682E6FF3, 0xD6B2B8A3],
258-
[0x748F82EE, 0x5DEFB2FC], [0x78A5636F, 0x43172F60],
259-
[0x84C87814, 0xA1F0AB72], [0x8CC70208, 0x1A6439EC],
260-
[0x90BEFFFA, 0x23631E28], [0xA4506CEB, 0xDE82BDE9],
261-
[0xBEF9A3F7, 0xB2C67915], [0xC67178F2, 0xE372532B],
262-
[0xCA273ECE, 0xEA26619C], [0xD186B8C7, 0x21C0C207],
263-
[0xEADA7DD6, 0xCDE0EB1E], [0xF57D4F7F, 0xEE6ED178],
264-
[0x06F067AA, 0x72176FBA], [0x0A637DC5, 0xA2C898A6],
265-
[0x113F9804, 0xBEF90DAE], [0x1B710B35, 0x131C471B],
266-
[0x28DB77F5, 0x23047D84], [0x32CAAB7B, 0x40C72493],
267-
[0x3C9EBE0A, 0x15C9BEBC], [0x431D67C4, 0x9C100D4C],
268-
[0x4CC5D4BE, 0xCB3E42B6], [0x597F299C, 0xFC657E2A],
269-
[0x5FCB6FAB, 0x3AD6FAEC], [0x6C44198C, 0x4A475817],
233+
[0x428A2F98, 0xD728AE22],
234+
[0x71374491, 0x23EF65CD],
235+
[0xB5C0FBCF, 0xEC4D3B2F],
236+
[0xE9B5DBA5, 0x8189DBBC],
237+
[0x3956C25B, 0xF348B538],
238+
[0x59F111F1, 0xB605D019],
239+
[0x923F82A4, 0xAF194F9B],
240+
[0xAB1C5ED5, 0xDA6D8118],
241+
[0xD807AA98, 0xA3030242],
242+
[0x12835B01, 0x45706FBE],
243+
[0x243185BE, 0x4EE4B28C],
244+
[0x550C7DC3, 0xD5FFB4E2],
245+
[0x72BE5D74, 0xF27B896F],
246+
[0x80DEB1FE, 0x3B1696B1],
247+
[0x9BDC06A7, 0x25C71235],
248+
[0xC19BF174, 0xCF692694],
249+
[0xE49B69C1, 0x9EF14AD2],
250+
[0xEFBE4786, 0x384F25E3],
251+
[0x0FC19DC6, 0x8B8CD5B5],
252+
[0x240CA1CC, 0x77AC9C65],
253+
[0x2DE92C6F, 0x592B0275],
254+
[0x4A7484AA, 0x6EA6E483],
255+
[0x5CB0A9DC, 0xBD41FBD4],
256+
[0x76F988DA, 0x831153B5],
257+
[0x983E5152, 0xEE66DFAB],
258+
[0xA831C66D, 0x2DB43210],
259+
[0xB00327C8, 0x98FB213F],
260+
[0xBF597FC7, 0xBEEF0EE4],
261+
[0xC6E00BF3, 0x3DA88FC2],
262+
[0xD5A79147, 0x930AA725],
263+
[0x06CA6351, 0xE003826F],
264+
[0x14292967, 0x0A0E6E70],
265+
[0x27B70A85, 0x46D22FFC],
266+
[0x2E1B2138, 0x5C26C926],
267+
[0x4D2C6DFC, 0x5AC42AED],
268+
[0x53380D13, 0x9D95B3DF],
269+
[0x650A7354, 0x8BAF63DE],
270+
[0x766A0ABB, 0x3C77B2A8],
271+
[0x81C2C92E, 0x47EDAEE6],
272+
[0x92722C85, 0x1482353B],
273+
[0xA2BFE8A1, 0x4CF10364],
274+
[0xA81A664B, 0xBC423001],
275+
[0xC24B8B70, 0xD0F89791],
276+
[0xC76C51A3, 0x0654BE30],
277+
[0xD192E819, 0xD6EF5218],
278+
[0xD6990624, 0x5565A910],
279+
[0xF40E3585, 0x5771202A],
280+
[0x106AA070, 0x32BBD1B8],
281+
[0x19A4C116, 0xB8D2D0C8],
282+
[0x1E376C08, 0x5141AB53],
283+
[0x2748774C, 0xDF8EEB99],
284+
[0x34B0BCB5, 0xE19B48A8],
285+
[0x391C0CB3, 0xC5C95A63],
286+
[0x4ED8AA4A, 0xE3418ACB],
287+
[0x5B9CCA4F, 0x7763E373],
288+
[0x682E6FF3, 0xD6B2B8A3],
289+
[0x748F82EE, 0x5DEFB2FC],
290+
[0x78A5636F, 0x43172F60],
291+
[0x84C87814, 0xA1F0AB72],
292+
[0x8CC70208, 0x1A6439EC],
293+
[0x90BEFFFA, 0x23631E28],
294+
[0xA4506CEB, 0xDE82BDE9],
295+
[0xBEF9A3F7, 0xB2C67915],
296+
[0xC67178F2, 0xE372532B],
297+
[0xCA273ECE, 0xEA26619C],
298+
[0xD186B8C7, 0x21C0C207],
299+
[0xEADA7DD6, 0xCDE0EB1E],
300+
[0xF57D4F7F, 0xEE6ED178],
301+
[0x06F067AA, 0x72176FBA],
302+
[0x0A637DC5, 0xA2C898A6],
303+
[0x113F9804, 0xBEF90DAE],
304+
[0x1B710B35, 0x131C471B],
305+
[0x28DB77F5, 0x23047D84],
306+
[0x32CAAB7B, 0x40C72493],
307+
[0x3C9EBE0A, 0x15C9BEBC],
308+
[0x431D67C4, 0x9C100D4C],
309+
[0x4CC5D4BE, 0xCB3E42B6],
310+
[0x597F299C, 0xFC657E2A],
311+
[0x5FCB6FAB, 0x3AD6FAEC],
312+
[0x6C44198C, 0x4A475817],
270313
].map(pair => [pair[0], pair[1]] as [number, number])
271314

272315
// Initial hash states
273316
_states = {
274317
'SHA-512': [
275-
[0x6A09E667, 0xF3BCC908], [0xBB67AE85, 0x84CAA73B],
276-
[0x3C6EF372, 0xFE94F82B], [0xA54FF53A, 0x5F1D36F1],
277-
[0x510E527F, 0xADE682D1], [0x9B05688C, 0x2B3E6C1F],
278-
[0x1F83D9AB, 0xFB41BD6B], [0x5BE0CD19, 0x137E2179],
318+
[0x6A09E667, 0xF3BCC908],
319+
[0xBB67AE85, 0x84CAA73B],
320+
[0x3C6EF372, 0xFE94F82B],
321+
[0xA54FF53A, 0x5F1D36F1],
322+
[0x510E527F, 0xADE682D1],
323+
[0x9B05688C, 0x2B3E6C1F],
324+
[0x1F83D9AB, 0xFB41BD6B],
325+
[0x5BE0CD19, 0x137E2179],
279326
].map(pair => [pair[0], pair[1]] as [number, number]),
280327
'SHA-384': [
281-
[0xCBBB9D5D, 0xC1059ED8], [0x629A292A, 0x367CD507],
282-
[0x9159015A, 0x3070DD17], [0x152FECD8, 0xF70E5939],
283-
[0x67332667, 0xFFC00B31], [0x8EB44A87, 0x68581511],
284-
[0xDB0C2E0D, 0x64F98FA7], [0x47B5481D, 0xBEFA4FA4],
328+
[0xCBBB9D5D, 0xC1059ED8],
329+
[0x629A292A, 0x367CD507],
330+
[0x9159015A, 0x3070DD17],
331+
[0x152FECD8, 0xF70E5939],
332+
[0x67332667, 0xFFC00B31],
333+
[0x8EB44A87, 0x68581511],
334+
[0xDB0C2E0D, 0x64F98FA7],
335+
[0x47B5481D, 0xBEFA4FA4],
285336
].map(pair => [pair[0], pair[1]] as [number, number]),
286337
'SHA-512/256': [
287-
[0x22312194, 0xFC2BF72C], [0x9F555FA3, 0xC84C64C2],
288-
[0x2393B86B, 0x6F53B151], [0x96387719, 0x5940EABD],
289-
[0x96283EE2, 0xA88EFFE3], [0xBE5E1E25, 0x53863992],
290-
[0x2B0199FC, 0x2C85B8AA], [0x0EB72DDC, 0x81C52CA2],
338+
[0x22312194, 0xFC2BF72C],
339+
[0x9F555FA3, 0xC84C64C2],
340+
[0x2393B86B, 0x6F53B151],
341+
[0x96387719, 0x5940EABD],
342+
[0x96283EE2, 0xA88EFFE3],
343+
[0xBE5E1E25, 0x53863992],
344+
[0x2B0199FC, 0x2C85B8AA],
345+
[0x0EB72DDC, 0x81C52CA2],
291346
].map(pair => [pair[0], pair[1]] as [number, number]),
292347
'SHA-512/224': [
293-
[0x8C3D37C8, 0x19544DA2], [0x73E19966, 0x89DCD4D6],
294-
[0x1DFAB7AE, 0x32FF9C82], [0x679DD514, 0x582F9FCF],
295-
[0x0F6D2B69, 0x7BD44DA8], [0x77E36F73, 0x04C48942],
296-
[0x3F9D85A8, 0x6A1D36C8], [0x1112E6AD, 0x91D692A1],
348+
[0x8C3D37C8, 0x19544DA2],
349+
[0x73E19966, 0x89DCD4D6],
350+
[0x1DFAB7AE, 0x32FF9C82],
351+
[0x679DD514, 0x582F9FCF],
352+
[0x0F6D2B69, 0x7BD44DA8],
353+
[0x77E36F73, 0x04C48942],
354+
[0x3F9D85A8, 0x6A1D36C8],
355+
[0x1112E6AD, 0x91D692A1],
297356
].map(pair => [pair[0], pair[1]] as [number, number]),
298357
}
299358

@@ -514,16 +573,16 @@ const createSHA512_224: () => MessageDigest = () => create('SHA-512/224')
514573

515574
// Export all implementations
516575
export const sha512: SHA512API = {
517-
create: create,
576+
create,
518577
sha384: { create: createSHA384 },
519578
sha256: { create: createSHA512_256 },
520579
sha224: { create: createSHA512_224 },
521580
}
522581

523582
// Export for compatibility with forge namespace
524583
export const algorithms: Record<string, { create: () => MessageDigest }> = {
525-
sha512: { create: create },
526-
sha384: { create: createSHA384 },
584+
'sha512': { create },
585+
'sha384': { create: createSHA384 },
527586
'sha512/256': { create: createSHA512_256 },
528587
'sha512/224': { create: createSHA512_224 },
529588
}

0 commit comments

Comments
 (0)