]> zoso.dev Git - libnemo.git/commitdiff
Tools hash function is only used within Tools itself, so don't bother exporting it...
authorChris Duncan <chris@zoso.dev>
Mon, 2 Dec 2024 19:59:01 +0000 (11:59 -0800)
committerChris Duncan <chris@zoso.dev>
Mon, 2 Dec 2024 19:59:01 +0000 (11:59 -0800)
src/lib/tools.ts
src/main.ts

index 26c7789cac8f216117bad1bb4007f223432e22da..8ea4a741f6ec434f1f38c162f5fe1eb21759e8eb 100644 (file)
@@ -10,6 +10,18 @@ import { Bip44Wallet, Blake2bWallet, LedgerWallet } from './wallet.js'
 import { SendBlock } from './block.js'
 import { NanoNaCl } from './nano-nacl.js'
 
+function hash (data: string | string[], encoding?: 'hex'): string {
+       if (!Array.isArray(data)) data = [data]
+       const hash = new Blake2b(32)
+       if (encoding === 'hex') {
+               data.forEach(str => hash.update(hex.toBytes(str)))
+       } else {
+               const enc = new TextEncoder()
+               data.forEach(str => hash.update(enc.encode(str)))
+       }
+       return hash.digest('hex').toUpperCase()
+}
+
 /**
 * Converts a decimal amount of nano from one unit divider to another.
 *
@@ -60,24 +72,6 @@ export async function convert (amount: bigint | string, inputUnit: string, outpu
        return `${i}${f ? '.' : ''}${f}`
 }
 
-/**
-* Converts one or more strings to hexadecimal and hashes them with BLAKE2b.
-*
-* @param {string|string[]} data - Input to hash
-* @returns {Promise<string>} 64-character hexadecimal hash of the input
-*/
-export async function hash (data: string | string[], encoding?: 'hex'): Promise<string> {
-       if (!Array.isArray(data)) data = [data]
-       const hash = new Blake2b(32)
-       if (encoding === 'hex') {
-               data.forEach(str => hash.update(hex.toBytes(str)))
-       } else {
-               const enc = new TextEncoder()
-               data.forEach(str => hash.update(enc.encode(str)))
-       }
-       return hash.digest('hex').toUpperCase()
-}
-
 /**
 * Signs arbitrary strings with a private key using the Ed25519 signature scheme.
 *
@@ -87,7 +81,7 @@ export async function hash (data: string | string[], encoding?: 'hex'): Promise<
 */
 export async function sign (key: string, ...input: string[]): Promise<string> {
        const account = await Account.fromPrivateKey(key)
-       const data = await hash(input)
+       const data = hash(input)
        const signature = NanoNaCl.sign(
                hex.toBytes(data),
                hex.toBytes(`${account.privateKey}${account.publicKey}`))
@@ -158,11 +152,11 @@ export async function sweep (rpc: Rpc | string | URL, wallet: Blake2bWallet | Bi
 * @returns {boolean} True if the data was signed by the public key's matching private key
 */
 export async function verify (key: string, signature: string, ...input: string[]): Promise<boolean> {
-       const data = await hash(input)
+       const data = hash(input)
        return NanoNaCl.verify(
                hex.toBytes(data),
                hex.toBytes(signature),
                hex.toBytes(key))
 }
 
-export default { convert, hash, sign, sweep, verify }
+export const Tools = { convert, sign, sweep, verify }
index 98f034e33a515d4602f8b64c48100df55e89d2f5..0b4fc2bdffe4064c1f9739a55091fcd07c17fd73 100644 (file)
@@ -7,7 +7,7 @@ import { Pow } from './lib/pow.js'
 import { Rpc } from './lib/rpc.js'
 import { Rolodex } from './lib/rolodex.js'
 import { Safe } from './lib/safe.js'
-import Tools from './lib/tools.js'
+import { Tools } from './lib/tools.js'
 import { Bip44Wallet, Blake2bWallet, LedgerWallet } from './lib/wallet.js'
 
 export { Account, SendBlock, ReceiveBlock, ChangeBlock, Pow, Rpc, Rolodex, Safe, Tools, Bip44Wallet, Blake2bWallet, LedgerWallet }