-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Closed
Description
The only purpose of these test-vectors is to give devs who aim to integrate HSMs some test-vectors for Vote.SignBytes:
Lines 81 to 138 in 28d75ec
| []byte{0x2a, 0xb, 0x8, 0x80, 0x92, 0xb8, 0xc3, 0x98, 0xfe, 0xff, 0xff, 0xff, 0x1}, | |
| }, | |
| // with proper (fixed size) height and round (PreCommit): | |
| { | |
| CanonicalizeVote("", &Vote{Height: 1, Round: 1, Type: PrecommitType}), | |
| []byte{ | |
| 0x8, // (field_number << 3) | wire_type | |
| 0x2, // PrecommitType | |
| 0x11, // (field_number << 3) | wire_type | |
| 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, // height | |
| 0x19, // (field_number << 3) | wire_type | |
| 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, // round | |
| 0x2a, // (field_number << 3) | wire_type | |
| // remaining fields (timestamp): | |
| 0xb, 0x8, 0x80, 0x92, 0xb8, 0xc3, 0x98, 0xfe, 0xff, 0xff, 0xff, 0x1}, | |
| }, | |
| // with proper (fixed size) height and round (PreVote): | |
| { | |
| CanonicalizeVote("", &Vote{Height: 1, Round: 1, Type: PrevoteType}), | |
| []byte{ | |
| 0x8, // (field_number << 3) | wire_type | |
| 0x1, // PrevoteType | |
| 0x11, // (field_number << 3) | wire_type | |
| 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, // height | |
| 0x19, // (field_number << 3) | wire_type | |
| 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, // round | |
| 0x2a, // (field_number << 3) | wire_type | |
| // remaining fields (timestamp): | |
| 0xb, 0x8, 0x80, 0x92, 0xb8, 0xc3, 0x98, 0xfe, 0xff, 0xff, 0xff, 0x1}, | |
| }, | |
| { | |
| vote, | |
| []byte{ | |
| 0x11, // (field_number << 3) | wire_type | |
| 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, // height | |
| 0x19, // (field_number << 3) | wire_type | |
| 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, // round | |
| // remaining fields (timestamp): | |
| 0x2a, | |
| 0xb, 0x8, 0x80, 0x92, 0xb8, 0xc3, 0x98, 0xfe, 0xff, 0xff, 0xff, 0x1}, | |
| }, | |
| // containing non-empty chain_id: | |
| { | |
| CanonicalizeVote("test_chain_id", &Vote{Height: 1, Round: 1}), | |
| []byte{ | |
| 0x11, // (field_number << 3) | wire_type | |
| 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, // height | |
| 0x19, // (field_number << 3) | wire_type | |
| 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, // round | |
| // remaining fields: | |
| 0x2a, // (field_number << 3) | wire_type | |
| 0xb, 0x8, 0x80, 0x92, 0xb8, 0xc3, 0x98, 0xfe, 0xff, 0xff, 0xff, 0x1, // timestamp | |
| 0x32, // (field_number << 3) | wire_type | |
| 0xd, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64}, // chainID | |
| }, | |
| } | |
| for i, tc := range tests { | |
| got, err := cdc.MarshalBinaryBare(tc.canonicalVote) |
Unfortunately, the vectors are generated using amino's MarshalBinaryBare instead of calling SignBytes (which uses MarshalBinaryLengthPrefixed instead). This lead to the test-vectors in the ledger app being incorrect: https://github.com/cosmos/ledger-cosmos/blob/aaae52d2692a586eae171577152378c3b756593f/tests/val/vote_parser.cpp#L81-L101
and some confusion here: tendermint/tmkms#171
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels