Chris Duncan [Tue, 19 Nov 2024 07:08:31 +0000 (23:08 -0800)]
Document test vector sources in TEST_VECTORS file, and remove repetitive warning from individual test files in favor of one very clear warning above test vector values.
Chris Duncan [Tue, 19 Nov 2024 06:55:55 +0000 (22:55 -0800)]
Integrate blake2b package, replacing blakejs and blake2b-wasm. Restore arrow notation to test methods. Remove ckd and thread class files for now, perhaps to be implemented later.
Chris Duncan [Sun, 10 Nov 2024 21:25:03 +0000 (13:25 -0800)]
Test additional accounts when deriving from BLAKE2b wallet. Test more BLAKE2b wallet seeds. Use Trezor wallet password instead of Nano password for consistency with Trezor test vectors.
Chris Duncan [Fri, 8 Nov 2024 18:48:00 +0000 (10:48 -0800)]
Revert promisification of serialize functions in BIP-32 ckd algorithm. Add type guards to serialization functions and log actual value instead of binary representation on errors. Simplify byte array construction and return now that convert methods accept padding values.
Chris Duncan [Wed, 6 Nov 2024 07:08:21 +0000 (23:08 -0800)]
Nano spec indicates account derivation should use index in unsigned 32-bit big endian format. This is opposite of many processor architectures, so add a check for endianness for BLAKE2b wallet accounts. Also move function to be in alphabetical order.
Chris Duncan [Sun, 13 Oct 2024 09:11:46 +0000 (02:11 -0700)]
Update Safe to use browser session storage. Mock global sessionStorage in tests. Update wallet to pack ID and both secrets in one JSON object when locking and unpack it all when unlocking.
Chris Duncan [Tue, 8 Oct 2024 09:02:56 +0000 (02:02 -0700)]
Return bigint directly from account properties to let consumers do math on the raw amounts since they can call toString() if necessary. Allow bigint to be passed to denomination converter and explicitly check its amount type.
Chris Duncan [Thu, 3 Oct 2024 09:10:17 +0000 (02:10 -0700)]
libname: A reimagining of the nanocurrency-web package.
Greater Changes
* Completely replace crypto-js dependency with the browser native Web Crypto API.
* Overhaul wallet system to align more with object-oriented design and to consolidate related but separated functionality.
* Add support for Ledger hardware wallets.
* Encrypt wallet secrets by default on initialization, and add lock/unlock feature to encrypt/decrypt on-demand.
* Add rolodex feature to enable contact management including signature verification using contact name associated with a public key in your rolodex.
* Add online functions to interact with nodes like fetching account info, generating PoW, and sending blocks for processing.
* Add sweep feature similar to the offering from Nault which sends all funds in a specified range of accounts in a wallet to a specific address.
* Refactor key derivation functions to align closer with spec as designed in the relevant BIPs.
* Adopt GPLv3 license and achieve REUSE compliance.
Lesser Changes
* Refactor as ESM instead of CJS and build for ESMNext target to enable more modern browser features.
* Utilize browser native features like bigint instead of bignumber.js dependency.
* Deprecate 'box' feature and with it the dependency on byte-base64.
* Replace chai/mocha test framework with built-in Node.js test runner, and add tons of tests.
* Replace webpack (and dependency ts-loader) with esbuild which offers faster builds and minification.
* Add online function to get the next unopened account of a wallet with the idea that a business could distribute addresses to customers in a custodial manner.
* Add tons of type checking to validate inputs and outputs.
* Deprecate lots of unused code or replace with native features.
Chris Duncan [Sat, 31 Aug 2024 20:13:26 +0000 (13:13 -0700)]
Fix module imports. Replace arrow functions on 'describe' calls since they mess up 'this' and prevent test data setup. Set mocha 'slow' to zero in order to report all test durations.