betrusted-io / xous-core

The Xous microkernel
Apache License 2.0
533 stars 85 forks source link

Upgrade curve25519-dalek to version 4.1.1 #499

Closed kotval closed 7 months ago

kotval commented 9 months ago

To support recent versions of libsignal, version 4 release of curve25519-dalek is required. Work in progress here: https://github.com/kotval/curve25519-dalek/tree/update_to_v4

kotval commented 9 months ago

On xous-core, the work to get this integrated is here: https://github.com/kotval/xous-core/tree/dalek_to_v4. I was able to update the use of curve25519-dalek in the wycheproof tests, but I got stuck on a cryptic issue with Zeroize that I don't fully have the context for.

I cannot build service/root-keys due to Zeroize. It seems that Zeroize does not have the feature derive that it needs, but I don't seem to be able to add it, either by specifying that feature in the Cargo.toml or by manually adding zeroize_derive to the Cargo.toml and adjusting the code accordingly.

kotval commented 8 months ago

Since xous-core now builds with curve25519-dalek at 4.1.1, I can start working on getting libsignal working in sigchat.

There is still some work do be done to get hardware acceleration working. I switched to cfg flags rather than features, but it seems I missed something important in the docs that the dalek folks also missed. cfg flags can't enable arbitrary features. I am now working on fixing that here: https://github.com/betrusted-io/curve25519-dalek/pull/2. If @bunnie would like to take on the maintenance work, I can work on getting libsignal working in sigchat with the software backend for now.

I will wait to close this issue until we have upgraded the hardware acceleration. I will also open a PR from my xous-core, but note that is should not be merged until we fix hardware acceleration.

bunnie commented 7 months ago

OK, the hardware acceleration should be working and the PR merged. I'll go ahead and close out this issue because I think we're there. Thanks for all the hard work getting this together @kotval

I will also open a new issue to track some remaining items to be covered in terms of the locking and fall-back behaviors.