Support multiple BLS implementations (#1335)

## Issue Addressed

NA

## Proposed Changes

- Refactor the `bls` crate to support multiple BLS "backends" (e.g., milagro, blst, etc).
- Removes some duplicate, unused code in `common/rest_types/src/validator.rs`.
- Removes the old "upgrade legacy keypairs" functionality (these were unencrypted keys that haven't been supported for a few testnets, no one should be using them anymore).

## Additional Info

Most of the files changed are just inconsequential changes to function names.

## TODO

- [x] Optimization levels
- [x] Infinity point: https://github.com/supranational/blst/issues/11
- [x] Ensure milagro *and* blst are tested via CI
- [x] What to do with unsafe code?
- [x] Test infinity point in signature sets
This commit is contained in:
Paul Hauner
2020-07-25 02:03:18 +00:00
parent 21bcc8848d
commit b73c497be2
117 changed files with 3009 additions and 2463 deletions

View File

@@ -242,13 +242,13 @@ fn key_derivation_from_seed() {
.expect("should decrypt voting keypair");
assert_eq!(
voting_keypair.sk.as_bytes().as_ref(),
voting_keypair.sk.serialize().as_ref(),
&manually_derived_voting_key(i)[..],
"voting secret should match manually derived"
);
assert_eq!(
voting_keypair.sk.as_bytes().as_ref(),
voting_keypair.sk.serialize().as_ref(),
&recovered_voting_key(&wallet, i)[..],
"voting secret should match recovered"
);
@@ -259,20 +259,20 @@ fn key_derivation_from_seed() {
.expect("should decrypt withdrawal keypair");
assert_eq!(
withdrawal_keypair.sk.as_bytes().as_ref(),
withdrawal_keypair.sk.serialize().as_ref(),
&manually_derived_withdrawal_key(i)[..],
"withdrawal secret should match manually derived"
);
assert_eq!(
withdrawal_keypair.sk.as_bytes().as_ref(),
withdrawal_keypair.sk.serialize().as_ref(),
&recovered_withdrawal_key(&wallet, i)[..],
"withdrawal secret should match recovered"
);
assert_ne!(
withdrawal_keypair.sk.as_bytes().as_ref(),
voting_keypair.sk.as_bytes().as_bytes(),
withdrawal_keypair.sk.serialize().as_ref(),
voting_keypair.sk.serialize().as_bytes(),
"voting and withdrawal keypairs should be distinct"
);