From 51f5a765b67ffda16104c91b7287dee2358ec44e Mon Sep 17 00:00:00 2001 From: upalinski Date: Wed, 8 Jan 2025 13:38:24 +0300 Subject: [PATCH] support path derivation in secretbox --- packages/embed-wallet/src/EmbedWallet.ts | 8 ++++---- packages/wallet-engine/src/engine/polkadot.ts | 10 ++++++++-- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/packages/embed-wallet/src/EmbedWallet.ts b/packages/embed-wallet/src/EmbedWallet.ts index d2d66e98..32f0b529 100644 --- a/packages/embed-wallet/src/EmbedWallet.ts +++ b/packages/embed-wallet/src/EmbedWallet.ts @@ -393,8 +393,8 @@ export class EmbedWallet { * console.log(secretBox); * ``` */ - async naclSecretbox(message: string): Promise { - return this.provider.request({ method: 'ed25519_nacl_secretbox', params: [message] }); + async naclSecretbox(message: string, path?: string): Promise { + return this.provider.request({ method: 'ed25519_nacl_secretbox', params: [message, path] }); } /** @@ -411,8 +411,8 @@ export class EmbedWallet { * console.log(message); * ``` */ - async naclSecretboxOpen(message: string): Promise { - return this.provider.request({ method: 'ed25519_nacl_secretbox_open', params: [message] }); + async naclSecretboxOpen(message: string, path?: string): Promise { + return this.provider.request({ method: 'ed25519_nacl_secretbox_open', params: [message, path] }); } /** diff --git a/packages/wallet-engine/src/engine/polkadot.ts b/packages/wallet-engine/src/engine/polkadot.ts index 88ac19c8..5710e4bb 100644 --- a/packages/wallet-engine/src/engine/polkadot.ts +++ b/packages/wallet-engine/src/engine/polkadot.ts @@ -125,7 +125,10 @@ export const createPolkadotEngine = ({ getPrivateKey, polkadotRpc }: PolkadotEng ed25519_nacl_secretbox: createAsyncMiddleware(async (req, res) => { const [message, path] = req.params as string[]; - const secretKey = getSecretKey(); + let secretKey = getSecretKey(); + if (path) { + secretKey = Buffer.concat([secretKey, Buffer.from(`/${path}`)]); + } const dek = blake2AsU8a(secretKey); res.result = u8aToHex(nacl.secretbox(new TextEncoder().encode(message), new Uint8Array(24), dek)); @@ -134,7 +137,10 @@ export const createPolkadotEngine = ({ getPrivateKey, polkadotRpc }: PolkadotEng ed25519_nacl_secretbox_open: createAsyncMiddleware(async (req, res) => { const [secretBox, path] = req.params as string[]; - const secretKey = getSecretKey(); + let secretKey = getSecretKey(); + if (path) { + secretKey = Buffer.concat([secretKey, Buffer.from(`/${path}`)]); + } const dek = blake2AsU8a(secretKey); const message = nacl.secretbox.open(hexToU8a(secretBox), new Uint8Array(24), dek);