Henry de Valence
5be929559b
Merge pull request #17 from ZcashFoundation/rename
...
Rename to just `redjubjub`.
2019-12-09 13:54:55 -08:00
Henry de Valence
c20139bbf7
Rename to just `redjubjub`.
2019-12-09 13:54:10 -08:00
Henry de Valence
570cca07b5
Update Cargo.toml metadata
2019-12-09 13:20:56 -08:00
Henry de Valence
d8ad15059d
Try to prevent ChangePubkey tweaks from becoming a no-op.
...
Since we expect the signature to fail if ChangePubkey is applied, we need to
make sure it actually changes the signature test case.
2019-12-09 12:15:11 -08:00
Henry de Valence
a15b4721be
Merge pull request #16 from ZcashFoundation/canonical-secrets
...
Ensure SecretKey encoding is canonical.
2019-12-09 12:09:58 -08:00
Henry de Valence
92cb99f966
Ensure SecretKey encoding is canonical.
2019-12-09 12:08:13 -08:00
Henry de Valence
80239164f2
Merge pull request #15 from ZcashFoundation/serde
2019-12-09 11:59:16 -08:00
Henry de Valence
87f09b87b5
Add Serialize, Deserialize for SecretKey.
2019-12-09 11:55:56 -08:00
Henry de Valence
2ca445ad23
Add Serialize, Deserialize to PublicKey.
2019-12-09 11:55:53 -08:00
Henry de Valence
e58376fc47
Add Serialize, Deserialize for byte wrapper types.
2019-12-09 11:55:53 -08:00
Henry de Valence
798a3e4631
Fix trait bounds on SigType.
...
When Rust derives Copy, Clone, Eq, PartialEq, etc. on a type with
`PhantomData<T>`, it adds a `T: Clone` etc. bound, regardless of whether `T` is
only ever used inside of the `PhantomData`. A better fix would be to fix the
derived bounds themselves, but in the meantime this works, even if it's
slightly ugly.
2019-12-09 11:55:53 -08:00
Henry de Valence
76eb4c5928
Update README, fill missing impls.
2019-12-04 17:36:01 -08:00
Henry de Valence
27a1d73891
Merge pull request #13 from ZcashFoundation/randomize
...
Implement randomization.
2019-12-04 17:02:06 -08:00
Henry de Valence
ead4727ded
Implement randomization.
2019-12-04 17:00:55 -08:00
Henry de Valence
a3f0830bc1
Make Binding, SpendAuth enums so they show in a different Rustdoc section.
2019-12-04 16:41:16 -08:00
Henry de Valence
2c3b411362
Merge pull request #12 from ZcashFoundation/proptest
...
Add property tests, librustzcash test vectors.
2019-12-04 16:36:59 -08:00
Henry de Valence
e3e92af63b
Add more signature tweaks to proptest.
2019-12-04 16:35:25 -08:00
Henry de Valence
8aeb2f14f8
Add test vectors from librustzcash.
...
The `SpendAuth` test vectors were generated using
`FixedGenerators::SpendingKeyGenerator`, and the `Binding` test vectors
were generated using `FixedGenerators::ValueCommitmentRandomness`.
2019-12-04 16:14:44 -08:00
Henry de Valence
7b979ddd65
Add property tests for signatures.
2019-12-04 16:14:44 -08:00
Henry de Valence
f169ef06ed
Use published Jubjub.
2019-12-04 12:00:26 -08:00
Henry de Valence
19af25485b
Clean warnings.
2019-12-04 11:59:31 -08:00
Henry de Valence
24d856de2c
Merge pull request #11 from ZcashFoundation/signverify
...
Implement sign, verify operations.
2019-12-04 11:51:35 -08:00
Henry de Valence
8bcfeae920
Add a basic test.
...
This ran into problems with Clone/Copy bounds -- it seems like the
derived impls require that the phantom type T also be Clone / Copy /
Debug for the type to be. This commit does a hacky fix that makes it
work for now, but it should be cleaned up later.
2019-12-04 11:45:44 -08:00
Henry de Valence
d761316579
Implement verification.
2019-12-04 11:45:37 -08:00
Henry de Valence
d3b20d0f21
Store signature bytes in two parts.
2019-12-04 11:45:37 -08:00
Henry de Valence
2b37c71b57
Implement signing.
2019-12-04 11:45:30 -08:00
Henry de Valence
710ac6fba9
Add an hash-to-scalar implementation.
2019-12-04 11:45:30 -08:00
Henry de Valence
b202a22826
Unfortunately keygen can't be a From impl because coherence rules.
2019-12-04 11:45:30 -08:00
Henry de Valence
84b042003b
Add methods to the Sealed trait, simplifying types.
...
The motivation is as follows. The sealed trait pattern allows creating
a type-level equivalent of an enum: the trait corresponds to the enum
type and its implementors correspond to the enum variants; the `Sealed`
restriction ensures that there is a fixed set of enum variants.
In this picture, adding methods to the public trait corresponds to a
public method on an enum, while adding methods to the private trait
corresponds to a private method on an enum. This means that we can add
a method to get the basepoint (whose possible choices are enumerated by
SigType) and avoid having to do specialized impls.
2019-12-04 11:41:46 -08:00
Henry de Valence
b44f149381
Reorganize data types.
2019-12-03 15:59:24 -08:00
Henry de Valence
52951f7236
Add keygen.
2019-12-03 15:39:55 -08:00
Henry de Valence
09daa00fdf
Merge pull request #10 from ZcashFoundation/conversions
...
Add conversions for SecretKey -> PublicKey
2019-12-03 15:10:39 -08:00
Henry de Valence
01cddd493b
Add SecretKey -> PublicKey conversion.
2019-12-03 15:01:54 -08:00
Henry de Valence
06a0a6404d
Serialize PublicKey, SecretKey
2019-12-03 14:51:38 -08:00
Henry de Valence
36b3842f3d
fmt
2019-12-03 13:39:26 -08:00
Henry de Valence
faebd2b783
Add byte encodings for Binding, SpendAuth basepoints.
...
These were extracted by adding printlns to the test suite for librustzcash.
2019-12-03 13:37:12 -08:00
Henry de Valence
1b7f1b0047
Merge pull request #9 from ZcashFoundation/parameterize
...
Make the signature type be a type parameter.
2019-12-03 12:26:30 -08:00
Henry de Valence
6ca14abeec
Make the signature type be a type parameter.
...
This means that using a BindingSig as a SpendAuthSig or vice versa becomes a
compile error. Internally, we can share implementations, but having type
parameters and specialized impls means that the correct parameters can be
substituted in to whatever inner functions exist.
2019-12-03 12:22:35 -08:00
Henry de Valence
1a9569dca2
Add docs command.
2019-12-02 22:38:15 -08:00
Henry de Valence
eaaad6a0b8
Add rerandomization stub API.
2019-12-02 22:32:55 -08:00
Henry de Valence
b094cd92b9
Stub out the sign/verify API.
2019-12-02 22:28:11 -08:00
Henry de Valence
580b310713
Add underivable impls to Signature.
2019-12-02 22:10:56 -08:00
Henry de Valence
156c6b6e7c
Define main types for the library.
2019-12-02 21:58:19 -08:00
Henry de Valence
8bdb8580ff
Add error stub
2019-12-02 21:36:47 -08:00
Henry de Valence
c3fe237fe9
Add readme, module layout
2019-12-02 21:32:38 -08:00
Henry de Valence
fd5800065a
Add blake2b_simd dependency
2019-12-02 21:19:07 -08:00
Henry de Valence
47ce9add3e
Add jubjub dependency
2019-12-02 21:16:23 -08:00
Henry de Valence
ecac1f8205
cargo new --lib
2019-12-02 14:12:06 -08:00