* Pre-checks on verify input lengths * Small cleanup * Update error signatures
75 lines
2.1 KiB
TypeScript
75 lines
2.1 KiB
TypeScript
// Copyright 2017-2020 @polkadot/util-crypto authors & contributors
|
|
// This software may be modified and distributed under the terms
|
|
// of the Apache-2.0 license. See the LICENSE file for details.
|
|
|
|
import { stringToU8a } from '@polkadot/util';
|
|
import { waitReady } from '@polkadot/wasm-crypto';
|
|
|
|
import { naclVerify, naclKeypairFromSeed } from '.';
|
|
|
|
describe('naclVerify', (): void => {
|
|
let publicKey: Uint8Array;
|
|
let signature: Uint8Array;
|
|
|
|
beforeEach(async (): Promise<void> => {
|
|
await waitReady();
|
|
|
|
publicKey = naclKeypairFromSeed(
|
|
stringToU8a('12345678901234567890123456789012')
|
|
).publicKey;
|
|
signature = new Uint8Array([28, 58, 206, 239, 249, 70, 59, 191, 166, 40, 219, 218, 235, 170, 25, 79, 10, 94, 9, 197, 34, 126, 1, 150, 246, 68, 28, 238, 36, 26, 172, 163, 168, 90, 202, 211, 126, 246, 57, 212, 43, 24, 88, 197, 240, 113, 118, 76, 37, 81, 91, 110, 236, 50, 144, 134, 100, 223, 220, 238, 34, 185, 211, 7]);
|
|
});
|
|
|
|
it('validates a correctly signed message', (): void => {
|
|
expect(
|
|
naclVerify(
|
|
new Uint8Array([0x61, 0x62, 0x63, 0x64]),
|
|
signature,
|
|
publicKey
|
|
)
|
|
).toEqual(true);
|
|
});
|
|
|
|
it('fails a correctly signed message (message changed)', (): void => {
|
|
expect(
|
|
naclVerify(
|
|
new Uint8Array([0x61, 0x62, 0x63, 0x64, 0x65]),
|
|
signature,
|
|
publicKey
|
|
)
|
|
).toEqual(false);
|
|
});
|
|
|
|
it('fails a correctly signed message (signature changed)', (): void => {
|
|
signature[0] = 0xff;
|
|
|
|
expect(
|
|
naclVerify(
|
|
new Uint8Array([0x61, 0x62, 0x63, 0x64]),
|
|
signature,
|
|
publicKey
|
|
)
|
|
).toEqual(false);
|
|
});
|
|
|
|
it('throws error when publicKey lengths do not match', (): void => {
|
|
expect(
|
|
() => naclVerify(
|
|
new Uint8Array([0x61, 0x62, 0x63, 0x64]),
|
|
signature,
|
|
new Uint8Array([1, 2])
|
|
)
|
|
).toThrow(/Invalid publicKey/);
|
|
});
|
|
|
|
it('throws error when signature lengths do not match', (): void => {
|
|
expect(
|
|
() => naclVerify(
|
|
new Uint8Array([0x61, 0x62, 0x63, 0x64]),
|
|
new Uint8Array([1, 2]),
|
|
publicKey
|
|
)
|
|
).toThrow(/Invalid signature/);
|
|
});
|
|
});
|