Line data Source code
1 : #ifndef HEADER_fd_src_choreo_votor_ag_bls_serde_h 2 : #define HEADER_fd_src_choreo_votor_ag_bls_serde_h 3 : 4 : #include "../../ballet/bls/fd_bls.h" 5 : 6 204 : #define AG_BLS_DE_SUCCESS ( 0) 7 24 : #define AG_BLS_DE_ERR_SZ (-1) /* Io(ReadSizeLimit), TrailingBytes, PreallocationSizeLimit */ 8 24 : #define AG_BLS_DE_ERR_INVAL (-2) /* InvalidTagEncoding, InvalidValue */ 9 : 10 : struct ag_bls_agg_serde { 11 : uchar version; /* solana_signer_store::Version (u8 tag), base2 or base3 */ 12 : ushort bit_cnt; /* solana_signer_store::num_bits (u16) */ 13 : uchar const * payload; /* solana_signer_store::data_bytes */ 14 : ulong payload_sz; /* bit_cnt rounded up to a byte (base2) or to five (base3) */ 15 : }; 16 : typedef struct ag_bls_agg_serde ag_bls_agg_serde_t; 17 : 18 1830 : #define AG_BLS_AGG_HDR_SZ ( sizeof(uchar) /* version */ + \ 19 1830 : sizeof(ushort) /* bit_cnt */ ) 20 : 21 129 : #define AG_BLS_AGG_SER_SZ( bit_cnt ) ( AG_BLS_AGG_HDR_SZ + ((bit_cnt)+7UL)/8UL ) 22 123 : #define AG_BLS_AGG_PAIR_SER_SZ( bit_cnt ) ( AG_BLS_AGG_HDR_SZ + ((bit_cnt)+4UL)/5UL ) 23 : 24 6 : #define AG_BLS_AGG_SER_MAX ( AG_BLS_AGG_SER_SZ ( FD_BLS_SET_MAX ) ) 25 9 : #define AG_BLS_AGG_PAIR_SER_MAX ( AG_BLS_AGG_PAIR_SER_SZ( FD_BLS_SET_MAX ) ) 26 : 27 : FD_STATIC_ASSERT( AG_BLS_AGG_SER_MAX ==253UL, ag_bls_serde ); 28 : FD_STATIC_ASSERT( AG_BLS_AGG_PAIR_SER_MAX==403UL, ag_bls_serde ); 29 : 30 : FD_PROTOTYPES_BEGIN 31 : 32 : FD_FN_PURE ulong 33 : ag_bls_agg_ser_sz( fd_bls_agg_t const * agg ); 34 : 35 : FD_FN_PURE ulong 36 : ag_bls_agg_pair_ser_sz( fd_bls_agg_t const * agg, 37 : fd_bls_agg_t const * agg_fb ); 38 : 39 : ulong 40 : ag_bls_agg_ser( fd_bls_agg_t const * agg, 41 : uchar * buf ); 42 : 43 : ulong 44 : ag_bls_agg_pair_ser( fd_bls_agg_t const * agg, 45 : fd_bls_agg_t const * agg_fb, 46 : uchar * buf ); 47 : 48 : int 49 : ag_bls_agg_de( fd_bls_agg_t * agg, 50 : uchar const * buf, 51 : ulong buf_sz ); 52 : 53 : int 54 : ag_bls_agg_pair_de( fd_bls_agg_t * agg, 55 : fd_bls_agg_t * agg_fb, 56 : uchar const * buf, 57 : ulong buf_sz ); 58 : 59 : FD_PROTOTYPES_END 60 : 61 : #endif /* HEADER_fd_src_choreo_votor_ag_bls_serde_h */