From 457d201cf3d5bfd2361f198f2b062bc680b15e58 Mon Sep 17 00:00:00 2001 From: Jan W Date: Thu, 17 Oct 2024 17:38:14 +0200 Subject: [PATCH] feat: expose `sodium.sign` (#161) --- features/keychain/api/__tests__/index.test.js | 8 ++++++++ features/keychain/api/index.d.ts | 1 + features/keychain/api/index.js | 1 + 3 files changed, 10 insertions(+) diff --git a/features/keychain/api/__tests__/index.test.js b/features/keychain/api/__tests__/index.test.js index 56b88d71..e4eb1a14 100644 --- a/features/keychain/api/__tests__/index.test.js +++ b/features/keychain/api/__tests__/index.test.js @@ -159,6 +159,14 @@ describe('keychain api', () => { expect(data.compare(decrypted)).toBe(0) }) + test('sign signs data', async () => { + const data = Buffer.from("Batman's identity was revealed as Harvey Dent") + const signed = await api.sodium.sign({ seedId, keyId, data }) + expect(signed.toString('hex')).toBe( + 'f491a1264bd310c3cc0d412d4dcf2ba144cf99659a025d39b73586fcde6c4e103ccf82574a339f6f9410c57409bbb4b2df723b3bbeadc0a4d7ff3630192cb0014261746d616e2773206964656e74697479207761732072657665616c6564206173204861727665792044656e74' + ) + }) + test('signDetached signs data', async () => { const data = Buffer.from("Batman's identity was revealed as Harvey Dent") const signature = await api.sodium.signDetached({ seedId, keyId, data }) diff --git a/features/keychain/api/index.d.ts b/features/keychain/api/index.d.ts index 3537260a..f2e0653b 100644 --- a/features/keychain/api/index.d.ts +++ b/features/keychain/api/index.d.ts @@ -20,6 +20,7 @@ export interface KeychainApi { arePrivateKeysLocked(seeds: Buffer[]): boolean removeSeeds(seeds: Buffer[]): string[] sodium: { + sign(params: { data: Buffer } & KeySource): Promise signDetached(params: { data: Buffer } & KeySource): Promise getKeysFromSeed( params: KeySource diff --git a/features/keychain/api/index.js b/features/keychain/api/index.js index 30ee3ad6..a457264b 100644 --- a/features/keychain/api/index.js +++ b/features/keychain/api/index.js @@ -4,6 +4,7 @@ const createKeychainApi = ({ keychain }) => { exportKey: (...args) => keychain.exportKey(...args), arePrivateKeysLocked: (seeds) => keychain.arePrivateKeysLocked(seeds), sodium: { + sign: keychain.sodium.sign, signDetached: keychain.sodium.signDetached, encryptSecretBox: keychain.sodium.encryptSecretBox, decryptSecretBox: keychain.sodium.decryptSecretBox,