Line data Source code
1 : #include "ag_vote_serde.h"
2 :
3 : static void
4 : sign( ag_vote_t const * self,
5 : fd_bls_sign_fn sign_fn,
6 : void * sign_ctx,
7 : uchar const * public_key,
8 : ushort shred_version,
9 0 : fd_bls_sig_t * sig ) {
10 0 : uchar buf[ AG_VOTE_SIGNING_SER_MAX ];
11 0 : ulong sz = ag_vote_signing_ser( self->kind, ag_vote_slot( self ), ag_vote_block_hash( self ), shred_version, buf );
12 0 : sign_fn( sign_ctx, sig, public_key, buf, sz );
13 0 : }
14 :
15 : ag_vote_t
16 : ag_vote_construct_notar( fd_bls_sign_fn sign_fn,
17 : void * sign_ctx,
18 : uchar const * public_key,
19 : ulong slot,
20 : ag_block_hash_t const hash,
21 : ushort rank,
22 0 : ushort shred_version ) {
23 0 : ag_vote_t vote;
24 0 : vote.kind = AG_VOTE_KIND_NOTAR;
25 0 : vote.notar.slot = slot;
26 0 : vote.notar.rank = rank;
27 0 : vote.notar.shred_version = shred_version;
28 0 : memcpy( vote.notar.block_hash, hash, sizeof(ag_block_hash_t) );
29 0 : sign( &vote, sign_fn, sign_ctx, public_key, shred_version, &vote.notar.sig );
30 0 : return vote;
31 0 : }
32 :
33 : ag_vote_t
34 : ag_vote_construct_final( fd_bls_sign_fn sign_fn,
35 : void * sign_ctx,
36 : uchar const * public_key,
37 : ulong slot,
38 : ushort rank,
39 0 : ushort shred_version ) {
40 0 : ag_vote_t vote;
41 0 : vote.kind = AG_VOTE_KIND_FINAL;
42 0 : vote.final.slot = slot;
43 0 : vote.final.rank = rank;
44 0 : vote.final.shred_version = shred_version;
45 0 : sign( &vote, sign_fn, sign_ctx, public_key, shred_version, &vote.final.sig );
46 0 : return vote;
47 0 : }
48 :
49 : ag_vote_t
50 : ag_vote_construct_skip( fd_bls_sign_fn sign_fn,
51 : void * sign_ctx,
52 : uchar const * public_key,
53 : ulong slot,
54 : ushort rank,
55 0 : ushort shred_version ) {
56 0 : ag_vote_t vote;
57 0 : vote.kind = AG_VOTE_KIND_SKIP;
58 0 : vote.skip.slot = slot;
59 0 : vote.skip.rank = rank;
60 0 : vote.skip.shred_version = shred_version;
61 0 : sign( &vote, sign_fn, sign_ctx, public_key, shred_version, &vote.skip.sig );
62 0 : return vote;
63 0 : }
64 :
65 : ag_vote_t
66 : ag_vote_construct_notar_fallback( fd_bls_sign_fn sign_fn,
67 : void * sign_ctx,
68 : uchar const * public_key,
69 : ulong slot,
70 : ag_block_hash_t const hash,
71 : ushort rank,
72 0 : ushort shred_version ) {
73 0 : ag_vote_t vote;
74 0 : vote.kind = AG_VOTE_KIND_NOTAR_FALLBACK;
75 0 : vote.notar_fallback.slot = slot;
76 0 : vote.notar_fallback.rank = rank;
77 0 : vote.notar_fallback.shred_version = shred_version;
78 0 : memcpy( vote.notar_fallback.block_hash, hash, sizeof(ag_block_hash_t) );
79 0 : sign( &vote, sign_fn, sign_ctx, public_key, shred_version, &vote.notar_fallback.sig );
80 0 : return vote;
81 0 : }
82 :
83 : ag_vote_t
84 : ag_vote_construct_skip_fallback( fd_bls_sign_fn sign_fn,
85 : void * sign_ctx,
86 : uchar const * public_key,
87 : ulong slot,
88 : ushort rank,
89 0 : ushort shred_version ) {
90 0 : ag_vote_t vote;
91 0 : vote.kind = AG_VOTE_KIND_SKIP_FALLBACK;
92 0 : vote.skip_fallback.slot = slot;
93 0 : vote.skip_fallback.rank = rank;
94 0 : vote.skip_fallback.shred_version = shred_version;
95 0 : sign( &vote, sign_fn, sign_ctx, public_key, shred_version, &vote.skip_fallback.sig );
96 0 : return vote;
97 0 : }
|