Skip to content
This repository was archived by the owner on Jan 20, 2025. It is now read-only.

Commit 18942a0

Browse files
fix sha384 and sha512
1 parent 3f62bb2 commit 18942a0

File tree

6 files changed

+8
-8
lines changed

6 files changed

+8
-8
lines changed

src/crypto/sha/sha1.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { expect, test } from "vitest";
22
import { sha1 } from "./sha1.js";
33

44
test("sha256()", async () => {
5-
const randomValues = crypto.getRandomValues(new Uint8Array(100));
5+
const randomValues = crypto.getRandomValues(new Uint8Array(200));
66
for (let i = 0; i < randomValues.byteLength + 1; i++) {
77
const data = randomValues.slice(0, i);
88
const result = sha1(data);

src/crypto/sha/sha256.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { expect, test } from "vitest";
22
import { sha256 } from "./sha256.js";
33

44
test("sha256()", async () => {
5-
const randomValues = crypto.getRandomValues(new Uint8Array(100));
5+
const randomValues = crypto.getRandomValues(new Uint8Array(200));
66
for (let i = 0; i < randomValues.byteLength + 1; i++) {
77
const data = randomValues.slice(0, i);
88
const result = sha256(data);

src/crypto/sha/sha384.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { expect, test } from "vitest";
22
import { sha384 } from "./sha384.js";
33

44
test("sha384()", async () => {
5-
const randomValues = crypto.getRandomValues(new Uint8Array(100));
5+
const randomValues = crypto.getRandomValues(new Uint8Array(200));
66
for (let i = 0; i < randomValues.byteLength + 1; i++) {
77
const data = randomValues.slice(0, i);
88
const result = sha384(data);

src/crypto/sha/sha384.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -100,11 +100,11 @@ export function sha384(data: Uint8Array): Uint8Array {
100100
]);
101101

102102
const l = data.byteLength * 8;
103-
const targetLength = Math.ceil((data.length + 1 + 8) / 128) * 128;
103+
const targetLength = Math.ceil((data.length + 1 + 16) / 128) * 128;
104104
const buffer = new Uint8Array(targetLength);
105105
buffer[data.length] = 0x80;
106106
buffer.set(data);
107-
bigEndian.putUint32(buffer, l, targetLength - 4);
107+
bigEndian.putUint64(buffer, BigInt(l), targetLength - 8);
108108
for (let i = 0; i < buffer.length; i += 128) {
109109
for (let t = 0; t < 16; t++) {
110110
w[t] =

src/crypto/sha/sha512.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { expect, test } from "vitest";
22
import { sha512 } from "./sha512.js";
33

44
test("sha512()", async () => {
5-
const randomValues = crypto.getRandomValues(new Uint8Array(100));
5+
const randomValues = crypto.getRandomValues(new Uint8Array(200));
66
for (let i = 0; i < randomValues.byteLength + 1; i++) {
77
const data = randomValues.slice(0, i);
88
const result = sha512(data);

src/crypto/sha/sha512.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -100,11 +100,11 @@ export function sha512(data: Uint8Array): Uint8Array {
100100
]);
101101

102102
const l = data.byteLength * 8;
103-
const targetLength = Math.ceil((data.length + 1 + 8) / 128) * 128;
103+
const targetLength = Math.ceil((data.length + 1 + 16) / 128) * 128;
104104
const buffer = new Uint8Array(targetLength);
105105
buffer[data.length] = 0x80;
106106
buffer.set(data);
107-
bigEndian.putUint32(buffer, l, targetLength - 4);
107+
bigEndian.putUint64(buffer, BigInt(l), targetLength - 8);
108108
for (let i = 0; i < buffer.length; i += 128) {
109109
for (let t = 0; t < 16; t++) {
110110
w[t] =

0 commit comments

Comments
 (0)