Commit Graph

101 Commits

Author SHA1 Message Date
dependabot[bot] b96c352cd1
Bump actions/checkout from 4.0.0 to 4.1.1 (#100)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.0.0 to 4.1.1.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4.0.0...v4.1.1)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-15 11:38:03 -03:00
Conrado Gouvea 5d3551a269
dependabot: remove hardcoded reviewer (#98) 2023-11-15 11:11:24 +01:00
Conrado Gouvea cd4aeed1a2
improve CI; bump to 4.0.3 (#95) 2023-09-11 15:28:01 -03:00
pinkforest(she/her) 9622f0a784
bump curve25519-dalek to 4.1 (#94) 2023-09-11 14:48:06 -03:00
Conrado Gouvea 7ad06a6896
bump curve25519-dalek to 4.0 (#91)
* bump curve25519-dalek to 4.0

* bump version and changelog
2023-08-21 15:39:10 -03:00
Conrado Gouvea 3829d875b6
update curve25519-dalek to 4.0.0-rc.3; bump version to 4.0.1 (#88)
* update curve25519-dalek to 4.0.0-rc.3; bump version to 4.0.1

* Apply suggestions from code review

Co-authored-by: teor <teor@riseup.net>

---------

Co-authored-by: teor <teor@riseup.net>
2023-07-06 22:08:44 -03:00
Conrado Gouvea 0db5c8e7e3
fix order() function used in tests that showed an incorrect order (#89) 2023-07-06 18:20:20 -03:00
dependabot[bot] 1ff62a63b4
Bump actions/checkout from 3.5.2 to 3.5.3 (#85)
Bumps [actions/checkout](https://github.com/actions/checkout) from 3.5.2 to 3.5.3.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3.5.2...v3.5.3)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-05 15:27:25 -03:00
Vlad Semenov c05bb6c3a6
cargo: serde no-default-features to avoid std (#87) 2023-07-05 15:26:02 -03:00
Daira Hopwood 95aa09743e
Update references to the major version number and to Canopy activation in the README (#84)
* README.md: update references to the major version.

Signed-off-by: Daira Emma Hopwood <daira@jacaranda.org>

* README.md: update the reference to Zcash Canopy activation.

Signed-off-by: Daira Emma Hopwood <daira@jacaranda.org>

---------

Signed-off-by: Daira Emma Hopwood <daira@jacaranda.org>
2023-06-12 13:45:19 -03:00
Conrado Gouvea cab0bcd1ab
Bump to 4.0.0; update curve25519-dalek (#82)
* upgrade curve25519-dalek to 4.0.0-rc.2

* clippy fixes

* activate ed25519/pem only when needed

* bump to 4.0.0; bump MSRV to 1.65; fix no_std support; test MSRV and no_std in CI

* use rust-toolchain instead of TOML to work with (unmaitained) actions-rs/toolchain
2023-06-08 12:23:21 +02:00
dependabot[bot] d08ae22108
Update criterion requirement from 0.3 to 0.5 (#80)
Updates the requirements on [criterion](https://github.com/bheisler/criterion.rs) to permit the latest version.
- [Changelog](https://github.com/bheisler/criterion.rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bheisler/criterion.rs/compare/0.3.0...0.5.0)

---
updated-dependencies:
- dependency-name: criterion
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-07 10:46:34 -03:00
dependabot[bot] 96b7b311fd
Update hashbrown requirement from 0.12.0 to 0.14.0 (#81)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-07 08:31:42 +10:00
Douglas Roark 346f4cde27
Add DER & PEM support for SigningKeySeed and VerificationKeyBytes (RFC 8410) (#46)
* 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>
2023-04-21 17:56:37 -03:00
Deirdre Connolly 79085903a0
Zeroize full signingkey (#73)
* Zeroize full signingkey

Includes Default and DefaultIsZeroes impl for VerificationKey.

Resolves #72

* derive Zeroize for SigningKey
2023-03-15 11:04:32 -03:00
Conrado Gouvea e8e58e37a1 fix documentation about batching 2023-03-14 15:50:28 -04:00
Deirdre Connolly e47a986a22
Do not log SigningKey seed, prefix, s, as part of impl Debug (#70) 2023-03-09 11:36:09 -03:00
Conrado Gouvea c079b0e507 update curve25519-dalek to 4.0.0-pre.5; sha2 to 0.10 2023-01-17 15:59:35 -05:00
Conrado Gouvea 612e51af2e v3.1.0 2022-10-26 16:28:40 -04:00
Christian Poveda 15e028616c
add `no_std` support (#57) 2022-05-05 10:40:29 -03:00
dependabot[bot] 7b8447ad79 Update color-eyre requirement from 0.5 to 0.6
Updates the requirements on [color-eyre](https://github.com/yaahc/color-eyre) to permit the latest version.
- [Release notes](https://github.com/yaahc/color-eyre/releases)
- [Changelog](https://github.com/yaahc/color-eyre/blob/master/CHANGELOG.md)
- [Commits](https://github.com/yaahc/color-eyre/compare/v0.5.2...v0.6.0)

---
updated-dependencies:
- dependency-name: color-eyre
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-19 17:06:12 -05:00
Deirdre Connolly 9dd5d07120 v3.0.0 2021-10-12 13:25:18 -04:00
Jose Daniel Hernandez 7fec3087c5 Add dependency and build status badges
Add dependency and build status badges to the README.md file.
2021-10-12 11:39:35 -04:00
Fintan Halpenny 5382ead398 dependencies: update zeroize to 1.2
There was a vulnerability reported[0] in zeroize which is patches with
versions >=1.2.0. This patch sets the bound to "1.2" in the Cargo.toml.

[0]: https://rustsec.org/advisories/RUSTSEC-2021-0115

Signed-off-by: Fintan Halpenny <fintan.halpenny@gmail.com>
2021-10-12 11:36:06 -04:00
Deirdre Connolly 2824139711 rustdoc cfg updates 2021-10-12 11:24:30 -04:00
Deirdre Connolly a3ad04778a Enable CI workflow for PRs and manual starts 2021-10-12 11:24:30 -04:00
José Daniel Hernández 68710ed83e
Add LICENSE files (#51)
Add LICENSE files to state MIT or Apache 2.0 as the licenses of this
repository.
This closes #33.
2021-10-11 09:44:57 +10:00
dependabot[bot] d351240022
Bump actions-rs/cargo from 1 to 1.0.3 (#48)
Bumps [actions-rs/cargo](https://github.com/actions-rs/cargo) from 1 to 1.0.3.
- [Release notes](https://github.com/actions-rs/cargo/releases)
- [Changelog](https://github.com/actions-rs/cargo/blob/master/CHANGELOG.md)
- [Commits](https://github.com/actions-rs/cargo/compare/v1...v1.0.3)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-05-14 12:52:17 +10:00
dependabot[bot] ed59300fe5
Bump actions-rs/toolchain from 1 to 1.0.7 (#47)
Bumps [actions-rs/toolchain](https://github.com/actions-rs/toolchain) from 1 to 1.0.7.
- [Release notes](https://github.com/actions-rs/toolchain/releases)
- [Changelog](https://github.com/actions-rs/toolchain/blob/master/CHANGELOG.md)
- [Commits](https://github.com/actions-rs/toolchain/compare/v1...v1.0.7)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-05-14 12:50:52 +10:00
Deirdre Connolly 539fad040c Update rand_core to 0.6 and rand to 0.8 2021-03-30 11:19:07 -04:00
Deirdre Connolly 9a2f706ace Revert "Update rand_core to 0.6 and rand to 0.8"
This reverts commit ae0c163b17.
2021-03-25 21:54:08 -04:00
Deirdre Connolly ae0c163b17 Update rand_core to 0.6 and rand to 0.8 2021-03-25 21:48:24 -04:00
Douglas Roark 2abe8b96b5
Add JNI code for ed25519-zebra (#37)
* 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.
2021-02-26 14:58:38 -08:00
Kim Altintop 0e7a96a267
Add Zeroize impl for SigningKey (#34)
* Add Zeroize impl for SigningKey
2020-12-03 13:10:52 -08:00
Dimitris Apostolou 014d823db6 Fix typo 2020-10-12 19:12:06 -07:00
Henry de Valence 72e1b17d86 Bump version to 2.2.0 2020-09-25 11:26:45 -07:00
Alexis Sellier a03df3776f Add *Ord instances to VerificationKeyBytes 2020-09-25 11:09:35 -07:00
Henry de Valence 2808cbd188 Bump version to 2.1.2 2020-08-17 20:09:26 -07:00
Henry de Valence 8fdd6a8d18 Update sha2 to 0.9 and curve25519-dalek to 3.0. 2020-08-17 20:07:42 -07:00
Henry de Valence a484604310 Bump version to 2.1.1 and update CHANGELOG 2020-07-30 10:20:27 -07:00
Henry de Valence 561bfa738e Test that individual and batch verification match. 2020-07-30 10:18:19 -07:00
Henry de Valence 71f276e32a Add missing mul_by_cofactor in batch verification.
This should have been added as part of the ZIP 215 work but I missed it.
2020-07-30 10:18:19 -07:00
Henry de Valence 42c308322c Merge branch 'release/2.1.0' into main 2020-07-15 12:37:15 -07:00
Henry de Valence af787e1dae Bump version to 2.1.0 2020-07-15 12:31:49 -07:00
Henry de Valence a62038f8f9
Add batch::Item::verify_single and Item: Clone + Debug. (#27)
* Add batch::Item::verify_single and Item: Clone + Debug.

This closes a gap in the API where it was impossible to retry items in a failed
batch, because the opaque Item type could not be verified individually.
2020-07-15 12:25:46 -07:00
dependabot[bot] 54ac8c2de3 Update color-eyre requirement from 0.4 to 0.5
Updates the requirements on [color-eyre](https://github.com/yaahc/color-eyre) to permit the latest version.
- [Release notes](https://github.com/yaahc/color-eyre/releases)
- [Commits](https://github.com/yaahc/color-eyre/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-10 15:35:12 -04:00
Henry de Valence 02521ccd9e Release 2.0.0 2020-07-06 19:43:29 -07:00
Henry de Valence e7afed68e5 Merge branch '1.x' into main 2020-07-06 19:41:12 -07:00
Henry de Valence d0a430b5e4
Implement ZIP 215 validation rules. (#24)
* Implement ZIP 215 validation rules.

These have the effect that batched and singleton verification are now
equivalent.

* Add ZIP 215 conformance tests.

This test constructs signatures on the message "Zcash" using small-order
verification keys, some with canonical and some with non-canonical encodings of
points.  All of these signatures should pass verification under the ZIP 215
rules, but most of them should fail verification under legacy rules.

These tests exercise all of the special-case behaviors from the specific
version of libsodium used by Zcashd:

* the all-zero check for the verification key;

* the excluded point encodings for the signature's R value;

* the choice to test equality of the encoded bytes of the recomputed R value
  rather than on the projective coordinates of the two points.

Running
```
cargo test -- --nocapture
```
will print a hex-formatted list of the test cases, which can also be found here:

https://gist.github.com/hdevalence/93ed42d17ecab8e42138b213812c8cc7

* Update spec links.

Thanks to @ebfull for pointing this out.

* No ... there is another.

@ebfull pointed out that two test cases were duplicates.  The cause was that I
misread the RFC8032 check was checking for the non-canonical encoding of
the identity point that NCC Group apparently brought up.  Carefully analyzing all
the cases instead of assuming reveals there is another non-canonically encoded
point (of order 2).

* Change formatting of printed test cases.
2020-07-06 19:40:20 -07:00
Henry de Valence 551af0690e Release 1.0.0 2020-07-06 19:37:14 -07:00