ursa to utilize modified ed25519 library configured with SHA-3.
Add FFI bindings to expose functions for
ed25519 operations from
libursa's C API.
libursa into the Iroha cmake build system, as a configure-time option.
Implement a C++ CryptoProvider class that wraps Ursa.
shared_model/cryptography/crypto_provider/crypto_defaults.hpp depending on the cmake configure options.
Write and polish tests and documentation for all contributed code.
- Integrate Ursa with the Iroha build system
- Interface with Ursa's ed25519 signing functions
- Edit docs for Ursa FFI and memory bug fix
- Wrap Ursa calls in an Iroha crypto provider (expose same interface)
- Integrate Multihash library
- Automatically switch crypto providers depending on public key value
- First Quarter: June 3rd, 2019
- Begin researching integration plans
- Test Ursa's C interface over FFI
- Update docs for Ursa's C interface, remedying memory leak bugs
- Add Ursa as a cmake module within Iroha's cmake system, with build commands
- Second Quarter: July 15th, 2019
- Add a CryptoProvider for Ursa
- Set value of
DefaultCryptoAlgorithmTypeaccording to the build flag during compilation
- Update crypto-related test cases to point to
- Update Ursa C interface with a memory-safe string destructor
- Research approaches for multihash integration
- Third Quarter: August 26th, 2019
- Select and integrate a multihash library, plus dependencies
- Attempt one of integrating multihash with Iroha/Ursa keys – didn't work out
- Attempt two of integrating multihash with Iroha/Ursa keys – simplified implementation
- Change the CryptoVerifier to select between CryptoProviders depending on the public key's multihash encoding
- Fourth Quarter: October 7th, 2019
- Check the loaded keypair is in the ledger
- First pass at making block signing configurable: add a config file option
- Second pass simplified the code changes; instead of config file option, automatically sign with the multihash type of the public key
- Create slides for summary report presentation
- The ability for Iroha to re-use a common, well-maintained crypto library.
- Tighter integration in the Hyperledger ecosystem.