* Add DER & PEM support for SigningKeySeed and VerificationKeyBytes (RFC 8410)
- Add encoding to and decoding from DER bytes and PEM strings for SigningKeySeed and VerificationKeyBytes.
- Add some functions so that the Java code mirrors, to a certain degree, the JDK 15 interface for Ed25519 keys and signatures.
- Add encoding and decoding for signatures (technically identity functions).
- Miscellaneous cleanup.
* Accommodate extra octet string in private key DER bytes
- In RFC 8410, DER-encoded private keys are in an octet string that's encapsulated by another octet string. Add the extra octet string, and adjust tests as necessary.
- In the tests, use the private key from RFC 8410, Sect. 10.3.
* Update pkcs8 to 0.7.0
* Cleanup
- Enhance PEM capabilities for SigningKey and VerificationKeyBytes. This also allowed for some tests to be simplified.
- From -> TryFrom for some VerificationKeyBytes impls.
* Upgrade JNI Rust bindings to PKCS8 0.7.5
- Make necessary changes to support the newer crate.
- Fix an unrelated compiler warning.
* More fixups
- Get code to compile after updating to the latest Rust.
- Fix a couple of failing tests (add LF to expected encoding output).
* Major update
- Update pkcs8 crate to 0.10.0, and update code as required to support the crate. This includes supporting the Decode(Public/Private)Key and Encode(Public/Private)Key traits so as to take advantage of Ed25519 DER and PEM code in the crate.
- Add the latest ed25519 crate (2.2.0) to support KeypairBytes and other features.
- Remove the signature code and implement Signature (Signer and Verifier traits) from the "signatures" crate included with the pkcs8 crate.
- Update the JNI code. This includes mandating Scala 3 usage.
- Minor cleanup (including warning fixes) and changes to make the code a bit clearer.
A follow-up commit will clean up the tests and probably add support for v2 private DER keys.
* Further code cleanup
- Update pkcs8 crate to 0.10.1.
- Fix PEM feature code.
- Update Ed25519 JNI code as needed.
- Remove dead code.
- Re-enable a couple of unit tests.
Note that a couple of Ed25519 JNI unit tests are still failing. A follow-up PR will have the fix.
* Add missing DER/PEM files for unit tests
* Add JNI comments to resolve publisher warnings
When executing `sbt publishLocal` and generating a JAR file, there are warnings regarding some functions not having public comments. Add public comments as needed.
* JNI README update
* Comment touchup
* Review fixups
- Finish adding PEM/PKCS8 tags and cfg items as needed to separate the features from default compilation.
- Revert some minor name changes.
- Make the JNI README more precise with regards to requirements.
- Add ARM64 macOS support to JNI. Untested but it should work, and it doesn't break Intel Macs.
- Miscellaneous cleanup, including fixing cargo and sbt warnings.
* Upgrade jni crate to 0.20.0
The 0.21.X crates feature a major refactor that breaks the code. Don't upgrade to them until some issues are resolved. (See https://github.com/jni-rs/jni-rs/issues/432 for more info.)
* Upgrade jni crate to 0.21.1
- A path forward to upgrading to 0.21.X was suggested by the jni-rs library developer (https://github.com/jni-rs/jni-rs/issues/439#issuecomment-1493074721). Upgrade the code, improving the safety of the JNI code.
- Cargo.toml fixups.
* cargo clippy / cargo fmt cleanup
Also do minor JNI README cleanup.
* Use an export to clean up some tests a bit
---------
Co-authored-by: Douglas Roark <douglas.roark@gemini.com>
* Add JNI code for ed25519-zebra
Add some code allowing other languages, via JNI, to interact with ed25519-zebra. The initial commit:
- Allows users to obtain a random 32 byte signing key seed.
- Allows users to obtain a 32 byte verification key from a signing key seed.
- Allows users to sign arbitrary data.
- Allows users to verify an Ed25519 signature.
- Includes a Java file that can be used.
- Includes some Scala-based JNI tests.
* Review fixups
- Minor Rust code optimizations.
- Rust build optimizations.
- Tweak the JNI JAR prereq script to match the new outputs.
* Significant cleanup
- More build system tidying. The primary goal is to try to firewall the JNI code from everything else.
- README tidying.
* Grab bag of improvements
- Clean up the wrapper classes (streamlining, make constructors private, more mutability safety).
- private -> public for a static variable intended for public usage.
- Minor comment & build system cleanup.
* Bump JNI version to 0.0.4-DEV
Decided to bump the version to reflect earlier changes.
* Hard-code the ed25519-zebra version for ed25519jni to use
* Unify ed25519 JNI version
Also add "-JNI" to assist with tagging and otherwise distinguish the JNI code from the main library version/code.
* Add code to make VerificationKeyBytes comparison easier
Also add a test suite for VerificationKeyBytes.
* VerificationKeyBytes cleanup
- Fix hashCode() override.
- Add a test.
- Remove unneecessary semicolons.
* Add Signature to JNI
Mirror the Signature struct from Rust and add some basic tests. Also do a bit of Scala test cleanup.