LCOV - code coverage report
Current view: top level - ballet/bls - fd_bls.h (source / functions) Hit Total Coverage
Test: cov.lcov Lines: 9 9 100.0 %
Date: 2026-09-17 04:28:31 Functions: 0 0 -

          Line data    Source code
       1             : #ifndef HEADER_fd_src_ballet_bls_fd_bls_h
       2             : #define HEADER_fd_src_ballet_bls_fd_bls_h
       3             : 
       4             : #include "../../util/fd_util.h"
       5             : #include "../../third_party/blst/bindings/blst.h"
       6             : #include "fd_bls_err.h"
       7             : 
       8        2748 : #define FD_BLS_SEC_SZ            (32UL)
       9           3 : #define FD_BLS_PUB_SZ            (96UL)
      10         114 : #define FD_BLS_PUB_COMPRESSED_SZ (48UL)
      11         375 : #define FD_BLS_SIG_SZ            (192UL)
      12        1134 : #define FD_BLS_SIG_COMPRESSED_SZ (96UL)
      13       78633 : #define FD_BLS_SET_MAX           (2000UL) /* TODO make set_dynamic so this isn't dependent on the VAT cap */
      14       21774 : #define FD_BLS_DST               "BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_POP_"
      15       10887 : #define FD_BLS_DST_SZ            (sizeof(FD_BLS_DST)-1UL)
      16             : 
      17             : typedef blst_scalar fd_bls_sec_t;
      18             : typedef blst_p1     fd_bls_pub_t;
      19             : typedef blst_p2     fd_bls_sig_t;
      20             : 
      21             : 
      22             : #define SET_NAME fd_bls_set
      23          39 : #define SET_MAX  FD_BLS_SET_MAX
      24             : #include "../../util/tmpl/fd_set.c" /* TODO make set_dynamic so this isn't dependent on the VAT cap */
      25             : 
      26             : struct fd_bls_agg {
      27             :   fd_bls_pub_t pub;
      28             :   fd_bls_sig_t sig;
      29             :   fd_bls_set_t set[ fd_bls_set_word_cnt ]; /* each bit position corresponds to a signer's rank in the epoch (based on ag_epoch_info) */
      30             : };
      31             : typedef struct fd_bls_agg fd_bls_agg_t;
      32             : 
      33             : FD_PROTOTYPES_BEGIN
      34             : 
      35             : void
      36             : fd_bls_sec_to_pub( fd_bls_sec_t const * sec,
      37             :                    fd_bls_pub_t *       pub );
      38             : 
      39             : void
      40             : fd_bls_sec_derive( fd_bls_sec_t * sec,
      41             :                    uchar const *  ikm,
      42             :                    ulong          ikm_sz );
      43             : 
      44             : void
      45             : fd_bls_sec_sign( fd_bls_sec_t const * sec,
      46             :                  uchar const *        msg,
      47             :                  ulong                msg_sz,
      48             :                  fd_bls_sig_t *       sig );
      49             : 
      50             : void
      51             : fd_bls_sig_ser( fd_bls_sig_t const * sig,
      52             :                 uchar                buf[ static FD_BLS_SIG_SZ ] );
      53             : 
      54             : int
      55             : fd_bls_sig_de( fd_bls_sig_t * sig,
      56             :                uchar const    buf[ static FD_BLS_SIG_SZ ] );
      57             : 
      58             : int
      59             : fd_bls_pub_de( fd_bls_pub_t * pub,
      60             :                uchar const *  buf,
      61             :                ulong          buf_sz );
      62             : 
      63             : fd_bls_agg_t *
      64             : fd_bls_agg_construct( fd_bls_agg_t *       agg,
      65             :                       fd_bls_pub_t const * pub,
      66             :                       fd_bls_sig_t const * sig,
      67             :                       fd_bls_set_t const * set );
      68             : 
      69             : int
      70             : fd_bls_agg_verify( uchar const *        msg,
      71             :                    ulong                msg_sz,
      72             :                    fd_bls_pub_t const * pub,
      73             :                    fd_bls_sig_t const * sig );
      74             : 
      75             : fd_bls_set_t *
      76             : fd_bls_agg_verify_linear( fd_bls_agg_t const * agg,
      77             :                           uchar const *        msg,
      78             :                           ulong                msg_sz,
      79             :                           fd_bls_pub_t const * pub,
      80             :                           fd_bls_sig_t const * sig,
      81             :                           fd_bls_set_t *       bad );
      82             : 
      83             : fd_bls_set_t *
      84             : fd_bls_agg_verify_bisect( fd_bls_agg_t const * agg,
      85             :                           uchar const *        msg,
      86             :                           ulong                msg_sz,
      87             :                           fd_bls_pub_t const * pub,
      88             :                           fd_bls_sig_t const * sig,
      89             :                           fd_bls_set_t *       bad );
      90             : 
      91             : int
      92             : fd_bls_agg_verify_subtract( fd_bls_agg_t *       agg,
      93             :                             uchar const *        msg,
      94             :                             ulong                msg_sz,
      95             :                             fd_bls_pub_t const * pub,
      96             :                             fd_bls_sig_t const * sig,
      97             :                             fd_bls_set_t *       bad );
      98             : 
      99             : FD_PROTOTYPES_END
     100             : 
     101             : #endif

Generated by: LCOV version 1.14