This looks like an interesting project, though I see you're using the NIST curves. Perhaps you don't know the [history](https://en.wikipedia.org/wiki/Elliptic-curve_cryptography#History)? [Should we trust the NIST-recommended ECC parameters?](https://crypto.stackexchange.com/questions/10263/should-we-trust-the-nist-recommended-ecc-parameters) My understanding is that we should be sticking with [25519](https://en.wikipedia.org/wiki/Curve25519) and apparently now also [448](https://en.wikipedia.org/wiki/Curve448). [Magic-wormhole](https://github.com/magic-wormhole/magic-wormhole), for example, which seems similar to your project, [uses 25519](https://lwn.net/Articles/692061/).