signature verifier tests

This commit is contained in:
antelle 2021-05-13 23:59:20 +02:00
parent 7feed36dac
commit a035796503
No known key found for this signature in database
GPG Key ID: 63C9777AAB7C563C
3 changed files with 34 additions and 5 deletions

View File

@ -31,13 +31,12 @@ const SignatureVerifier = {
signature = kdbxweb.ByteUtils.base64ToBytes(signature);
}
const signatureData = kdbxweb.ByteUtils.arrayToBuffer(signature);
const subtle = window.crypto.subtle;
const keyFormat = 'spki';
subtle
crypto.subtle
.importKey(keyFormat, pkData, algo, false, ['verify'])
.then((cryptoKey) => {
try {
subtle
crypto.subtle
.verify(
algo,
cryptoKey,

View File

@ -1,8 +1,8 @@
/* eslint-disable */
const Module = require('module');
const path = require('path');
const originalResolveFilename = Module._resolveFilename;
import * as path from 'path';
import * as fs from 'fs';
const appBasePath = path.resolve(__dirname, '..', 'app');
@ -13,6 +13,7 @@ const replacements = [
}
];
const originalResolveFilename = Module._resolveFilename;
Module._resolveFilename = function (request: string, _parent: any): string {
for (const { match, replace } of replacements) {
request = request.replace(match, replace);
@ -20,3 +21,23 @@ Module._resolveFilename = function (request: string, _parent: any): string {
arguments[0] = request;
return originalResolveFilename.apply(this, arguments);
};
function requireTextFile(filePath: string): () => { default: string } {
return () => {
filePath = path.resolve(__dirname, '..', filePath);
return { default: fs.readFileSync(filePath, 'utf8') };
};
}
const knownModules: { [name: string]: any } = {
'public-key.pem': requireTextFile('keys/public-key.pem'),
'public-key-new.pem': requireTextFile('keys/public-key-new.pem')
};
const originalRequire = Module.prototype.require;
Module.prototype.require = function (request: string, ...args: any[]): any {
if (knownModules[request]) {
return knownModules[request]();
}
return originalRequire.call(this, request, ...args);
};

View File

@ -0,0 +1,9 @@
import { expect } from 'chai';
import { SignatureVerifier } from 'util/data/signature-verifier';
describe('SignatureVerifier', () => {
it('verifies an invalid signature', async () => {
const valid = await SignatureVerifier.verify(new Uint8Array([1, 2, 3]), 'aaaa');
expect(valid).to.eql(false);
});
});