All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Ensure result does not overlap with operands in calls to
cx_bn_gf2_n_mul()
- Give a warning if a user chooses 1-of-m shares when m > 1
- Use CBOR tag for version 2
sskr
- Update restrictions on when a release workflow is triggered
- Changed name of 'Generate BIP39' menus to 'Recover BIP39'
- Changed Second Montgomery constant used for
cx_bn_gf2_n_mul()
to a more suitable value - Improve efficiency of
cx_bn_gf2_n_mul()
for Nano S - Change cmocka git repo from cryptomilk.org to GitLab
- Using Ledger SDK
cx_crc32()
function rather than buggycx_crc32_hw()
. - Fix build with SDK master for Nano S
- Improve efficiency of SSS
interpolate()
function
- Added detailed documentation for all SSKR and SSS functions
- Changed Shamir interpolate function to use
cx_bn_gf2_n_mul()
syscalls - Changed some function names to be more descriptive
- Reorganised and renamed some of the SSKR and Shamir code
- Added a Release Policy document
- Updated version of cmocka used for unit tests
- Updated version of github actions used
- Assert HMAC return values
- Fixed failing Ledger rule enforcer check
- Use
cx_crc32_hw()
- Ledger have fixed their buggy implementation of CRC32 so we can start using it again
- Use CX_CHECK macro in
compare_recovery_phrase()
- Added a
cx_crc32()
function- The implementation of
cx_crc32_hw()
on Ledger devices is buggy and produces incorrect CRC32 checks. Ledger are fixingcx_crc32_hw()
on each device either through SDK or OS updates but until thencx_crc32()
can be used.
- The implementation of
- Added mandatory Ledger embedded application manifest file
- Combined BIP39 wordlist and SSKR wordlist unit tests
- Added unit tests for BIP39
- Added unit tests for BIP39 word list and SSKR word list
- Fixed CodeQL warnings about sign check of a bitwise operation
- Fixed issue with restarting input from a previous word on Nano S
- Save memory by setting the SSKR word buffer to a sensible size
- There is just enough memory available on Nano S to hold the phrases for 10 shares. Other devices can hold the full 16 shares.
- Tidied up code that sets 'Processing' screen on Nano S devices
- Changed all Variable Length Arrays to a defined length
- Fix freezing at 'Processing' screen on Nano S devices
- Added unit tests for shamir
- Added unit tests for SSKR
- Added unit tests for BIP39 <-> SSKR roundtrip
- Make generic SSKR functionality more Ledger specific
- Reduce size of Nano binaries slightly by removing duplicate flows
- Added option to recover BIP39 mnemonics from SSKR shares even if shares do not validate against seed on device
- A user may have lost or damaged original device and now needs to recover the BIP39 phrase from another secure device
- Fixed build warning about UNUSED macro
- Clear buffers before exiting
- Added BIP39 Check for Ledger Stax
- Fixed warnings about deprecated functions during build
- Added some Ledger specific preprocessor conditionals to bc-sskr and bc-shamir
- Changed memset(x, 0, y) to memzero(x, y) macro
- Fixed static analyzer warning about zero-length array
- Fixed CodeQL warnings about comparison of narrow type with wide type in loop condition
- Simplified flow code
- Removed duplicated nano code
- Added automated tests
- Added flow to set SSKR threshold values
- Fix issue with using 'cx_crc32_hw()' function in 'onboarding_seed_sskr.c' when testing with Speculos
- Some CodeQL suggested tidy ups
- Recover BIP39 mnemonic phrases from SSKR shares
- Add 'SSKR Check' menu option
- Add flow to the 'SSKR Check' menu
- Write SSKR to BIP39 functionality
- Test with 29-word SSKR shares
- Test with 46-word SSKR shares
- Test on nanos
- Test on nanosp
- Test on nanox
- Clone app-recovery-check and rename to app-sskr-check
- Add SSKR (bc-sskr and bc-shamir) to app-sskr-check
- Generate SSKR shares from BIP39 mnemonic phrase
- Write BIP39 to SSKR functionality
- Add SSKR flow to the Check BIP39 menu
- Test with 12-word BIP39 phrases
- Test with 18-word BIP39 phrases
- Test with 24-word BIP39 phrases
- Test on nanos
- Test on nanosp
- Test on nanox