Skip to content

Commit

Permalink
handle parameters properly
Browse files Browse the repository at this point in the history
  • Loading branch information
arobsn committed Dec 25, 2024
1 parent 9a244b5 commit 78a3f53
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 4 deletions.
50 changes: 46 additions & 4 deletions packages/crypto/src/hashes.spec.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { describe, expect, it } from "vitest";
import { hex, utf8 } from "./coders";
import { blake2b, blake2b256, sha256 } from "./hashes";
import { randomBytes } from "@noble/hashes/utils";

describe("Hashes smoke tests", () => {
it("Should hash message using BLAKE2b256", () => {
Expand All @@ -11,19 +12,60 @@ describe("Hashes smoke tests", () => {
});

it("Should hash message using BLAKE2b with parameters", () => {
const xpk =
"0488b21e000000000000000000b345a673afdeb85091c35d02083035f6e0ca284b1846223b23b566c4070a0cec02a3ad1969b60e85426791b75eccf038e6105c3afab8167af7eb6b73e709b81882";
const xpk = utf8.decode(
"0488b21e000000000000000000b345a673afdeb85091c35d02083035f6e0ca284b1846223b23b566c4070a0cec02a3ad1969b60e85426791b75eccf038e6105c3afab8167af7eb6b73e709b81882"
);

expect(
hex.encode(
blake2b(utf8.decode(xpk), {
blake2b(xpk, {
dkLen: 64,
personalization: "wallets checksum"
personalization: utf8.decode("wallets checksum")
})
)
).to.be.equal(
"5d33031ea3bbba9d3332559b1dafd8612683092f535273a4c15ffa103ffa3fc11f7b6992f5a034b3c8dd30f6f103b24e500c44ba4cff2e5c7f6e3e2eb124cd32"
);

expect(
hex.encode(
blake2b(xpk, {
dkLen: 64,
personalization: hex.encode(utf8.decode("wallets checksum")),
salt: hex.decode("d877f8df03fd687ab7c0052e3ce88372")
})
)
).to.be.equal(
"f2afda2f44c2f5dd85d0e10e6d42b7c9220a1c8cfb0b25b8d7e554a0be570c39d8d299553fa8b2ecd56e4dc6eb240df93d67640558761df339c04638f2513d75"
);

expect(
hex.encode(
blake2b(xpk, {
dkLen: 64,
personalization: hex.encode(utf8.decode("wallets checksum")),
key: "6a9059057f259d733766f6b32081b66c",
salt: "d877f8df03fd687ab7c0052e3ce88372"
})
)
).to.be.equal(
"48cc44fc205ce4932349ad81156b65477029392cb9fd4d6b05519a9a4c4f2485b9902a59ace75bc9215430f226f411ca90e02a34761980ee557ac2b55cc01282"
);
});

it("Should handle strings as hex", () => {
const msg = randomBytes(32);
const key = randomBytes(32);
const salt = randomBytes(16);
const personalization = randomBytes(16);

expect(blake2b(msg, { key, salt, personalization })).to.be.deep.equal(
blake2b(msg, {
key: hex.encode(key),
salt: hex.encode(salt),
personalization: hex.encode(personalization)
})
);
});

it("Should have the same result regardless input format", () => {
Expand Down
5 changes: 5 additions & 0 deletions packages/crypto/src/hashes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,11 @@ export function ensureBytes(input: ByteInput): Uint8Array {
}

export function blake2b(message: ByteInput, options?: Blake2bOptions): Uint8Array {
if (options?.key) options.key = ensureBytes(options.key);
if (options?.salt) options.salt = ensureBytes(options.salt);
if (options?.personalization)
options.personalization = ensureBytes(options.personalization);

return _blake2b(ensureBytes(message), options);
}

Expand Down

0 comments on commit 78a3f53

Please sign in to comment.