LCOV - code coverage report
Current view: top level - ballet/bls - fd_bls.h (source / functions) Hit Total Coverage
Test: cov.lcov Lines: 0 9 0.0 %
Date: 2026-10-22 18:10:43 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             : 
       7           0 : #define FD_BLS_SEC_SZ            (32UL)
       8           0 : #define FD_BLS_PUB_SZ            (96UL)
       9           0 : #define FD_BLS_PUB_COMPRESSED_SZ (48UL)
      10           0 : #define FD_BLS_SIG_SZ            (192UL)
      11           0 : #define FD_BLS_SIG_COMPRESSED_SZ (96UL)
      12           0 : #define FD_BLS_SET_MAX           (2000UL) /* TODO make set_dynamic so this isn't dependent on the VAT cap */
      13           0 : #define FD_BLS_DST               "BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_POP_"
      14           0 : #define FD_BLS_DST_SZ            (sizeof(FD_BLS_DST)-1UL)
      15             : 
      16             : typedef blst_scalar    fd_bls_sec_t;
      17             : typedef blst_p1_affine fd_bls_pub_t;
      18             : typedef blst_p2_affine fd_bls_sig_t;
      19             : 
      20             : #define SET_NAME fd_bls_set
      21           0 : #define SET_MAX  FD_BLS_SET_MAX
      22             : #include "../../util/tmpl/fd_set.c" /* TODO make set_dynamic so this isn't dependent on the VAT cap */
      23             : 
      24             : struct fd_bls_agg {
      25             :   blst_p1      pub;
      26             :   blst_p2      sig;
      27             :   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) */
      28             : };
      29             : typedef struct fd_bls_agg fd_bls_agg_t;
      30             : 
      31             : FD_PROTOTYPES_BEGIN
      32             : 
      33             : void
      34             : fd_bls_sec_to_pub( fd_bls_sec_t const * sec,
      35             :                    fd_bls_pub_t *       pub );
      36             : 
      37             : void
      38             : fd_bls_sec_derive( fd_bls_sec_t * sec,
      39             :                    uchar const *  ikm,
      40             :                    ulong          ikm_sz );
      41             : 
      42             : void
      43             : fd_bls_sec_sign( fd_bls_sec_t const * sec,
      44             :                  uchar const *        msg,
      45             :                  ulong                msg_sz,
      46             :                  fd_bls_sig_t *       sig );
      47             : 
      48             : void
      49             : fd_bls_sig_ser( fd_bls_sig_t const * sig,
      50             :                 uchar                buf[ static FD_BLS_SIG_SZ ] );
      51             : 
      52             : int
      53             : fd_bls_sig_de( fd_bls_sig_t * sig,
      54             :                uchar const    buf[ static FD_BLS_SIG_SZ ] );
      55             : 
      56             : int
      57             : fd_bls_pub_de( fd_bls_pub_t * pub,
      58             :                uchar const *  buf,
      59             :                ulong          buf_sz );
      60             : 
      61             : fd_bls_agg_t *
      62             : fd_bls_agg_null( fd_bls_agg_t * agg );
      63             : 
      64             : fd_bls_agg_t *
      65             : fd_bls_agg_construct( fd_bls_agg_t *       agg,
      66             :                       fd_bls_pub_t const * pub,
      67             :                       fd_bls_sig_t const * sig,
      68             :                       fd_bls_set_t const * set );
      69             : 
      70             : blst_p1 *
      71             : fd_bls_pub_sum( blst_p1 *            pub,
      72             :                 fd_bls_pub_t const * key,
      73             :                 ulong                key_cnt,
      74             :                 fd_bls_set_t const * set,
      75             :                 blst_p1 const *      full );
      76             : 
      77             : void
      78             : fd_bls_hash_msg( uchar const *    msg,
      79             :                  ulong            msg_sz,
      80             :                  blst_p2_affine * h );
      81             : 
      82             : int
      83             : fd_bls_agg_verify_hashed( blst_p2_affine const * h,
      84             :                           blst_p1 const *        pub,
      85             :                           blst_p2 const *        sig );
      86             : 
      87             : int
      88             : fd_bls_agg_verify( uchar const *   msg,
      89             :                    ulong           msg_sz,
      90             :                    blst_p1 const * pub,
      91             :                    blst_p2 const * sig );
      92             : 
      93             : fd_bls_set_t *
      94             : fd_bls_agg_verify_linear( fd_bls_agg_t const * agg,
      95             :                           uchar const *        msg,
      96             :                           ulong                msg_sz,
      97             :                           fd_bls_pub_t const * pub,
      98             :                           fd_bls_sig_t const * sig,
      99             :                           fd_bls_set_t *       bad );
     100             : 
     101             : fd_bls_set_t *
     102             : fd_bls_agg_verify_bisect( fd_bls_agg_t const * agg,
     103             :                           uchar const *        msg,
     104             :                           ulong                msg_sz,
     105             :                           fd_bls_pub_t const * pub,
     106             :                           fd_bls_sig_t const * sig,
     107             :                           fd_bls_set_t *       bad );
     108             : 
     109             : int
     110             : fd_bls_agg_verify_subtract( fd_bls_agg_t *       agg,
     111             :                             uchar const *        msg,
     112             :                             ulong                msg_sz,
     113             :                             fd_bls_pub_t const * pub,
     114             :                             fd_bls_sig_t const * sig,
     115             :                             fd_bls_set_t *       bad );
     116             : 
     117             : FD_PROTOTYPES_END
     118             : 
     119             : #endif

Generated by: LCOV version 1.14