bls.hpp
Go to the documentation of this file.
83 static inline void init_accumulator(internal_accumulator_type &acc, const private_key_type &privkey) {
86 static inline void init_accumulator(internal_accumulator_type &acc, const public_key_type &pubkey) {
95 static inline void update(internal_accumulator_type &acc, InputIterator first, InputIterator last) {
99 static inline signature_type sign(internal_accumulator_type &acc, const private_key_type &privkey) {
149 static inline void init_accumulator(internal_accumulator_type &acc, const private_key_type &privkey) {
153 static inline void init_accumulator(internal_accumulator_type &acc, const public_key_type &pubkey) {
163 static inline void update(internal_accumulator_type &acc, InputIterator first, InputIterator last) {
167 static inline signature_type sign(internal_accumulator_type &acc, const private_key_type &privkey) {
218 static inline void init_accumulator(internal_accumulator_type &acc, const private_key_type &privkey) {
221 static inline void init_accumulator(internal_accumulator_type &acc, const public_key_type &pubkey) {
230 static inline void update(internal_accumulator_type &acc, InputIterator first, InputIterator last) {
234 static inline signature_type sign(internal_accumulator_type &acc, const private_key_type &privkey) {
301 static constexpr dst_type dst = {0x42, 0x4c, 0x53, 0x5f, 0x53, 0x49, 0x47, 0x5f, 0x42, 0x4c, 0x53,
381 static inline void update(internal_accumulator_type &acc, InputIterator first, InputIterator last) {
400 // TODO: support using of the same pubkey even if scheme policy differs in public params and scheme type
441 static inline void update(internal_accumulator_type &acc, InputIterator first, InputIterator last) {
454 // TODO: support using of the same privkey even if scheme policy differs in public params and scheme
488 static inline void update(internal_accumulator_type &acc, InputIterator first, InputIterator last) {
518 static inline void update(internal_accumulator_type &acc, const scheme_public_key_type &scheme_pubkey,
525 static inline void update(internal_accumulator_type &acc, const scheme_public_key_type &scheme_pubkey,
555 template<typename PublicParams, template<typename, typename> class BlsVersion, typename CurveType>
556 struct aggregate_verify_single_msg_op<bls<PublicParams, BlsVersion, bls_pop_scheme, CurveType>> {
608 static inline void update(internal_accumulator_type &acc, const scheme_public_key_type &scheme_pubkey) {
A struct representing a BLS12-381 and BLS12-377 curve.
Definition: curves/bls12.hpp:49
@ uniform_count
OutputIterator verify(InputIterator first, InputIterator last, OutputIterator out)
Definition: mac/include/nil/crypto3/mac/algorithm/verify.hpp:50
boost::mpl::apply< AccumulatorSet, tag::sign< ProcessingMode > >::type::result_type sign(const AccumulatorSet &acc)
Definition: accumulators/sign.hpp:113
boost::mpl::apply< AccumulatorSet, tag::aggregate_verify< ProcessingMode > >::type::result_type aggregate_verify(const AccumulatorSet &acc)
Definition: accumulators/aggregate_verify.hpp:131
boost::mpl::apply< AccumulatorSet, tag::pubkey< ProcessingMode > >::type::result_type pubkey(const AccumulatorSet &acc)
Definition: accumulators/pubkey.hpp:106
boost::mpl::apply< AccumulatorSet, tag::aggregate< ProcessingMode > >::type::result_type aggregate(const AccumulatorSet &acc)
Definition: accumulators/aggregate.hpp:106
Definition: pair.hpp:31
signature_type result_type
Definition: bls.hpp:476
signature_type internal_accumulator_type
Definition: bls.hpp:475
scheme_type::bls_scheme_type bls_scheme_type
Definition: bls.hpp:469
static void update(internal_accumulator_type &acc, const InputRange &range)
Definition: bls.hpp:483
static void update(internal_accumulator_type &acc, InputIterator first, InputIterator last)
Definition: bls.hpp:488
bls_scheme_type::private_key_type private_key_type
Definition: bls.hpp:471
static void init_accumulator(internal_accumulator_type &acc)
Definition: bls.hpp:478
nil::crypto3::pubkey::aggregate_op< bls< PublicParams, BlsVersion, BlsScheme, CurveType > >::process
static result_type process(internal_accumulator_type &acc)
Definition: bls.hpp:492
bls_scheme_type::signature_type signature_type
Definition: bls.hpp:473
bls_scheme_type::public_key_type public_key_type
Definition: bls.hpp:472
bls< PublicParams, BlsVersion, BlsScheme, CurveType > scheme_type
Definition: bls.hpp:468
Definition: aggregate_op.hpp:33
bls_scheme_type::signature_type signature_type
Definition: bls.hpp:506
public_key< scheme_type > scheme_public_key_type
Definition: bls.hpp:502
_internal_aggregation_accumulator_type internal_accumulator_type
Definition: bls.hpp:511
bool result_type
Definition: bls.hpp:512
static void update(internal_accumulator_type &acc, const scheme_public_key_type &scheme_pubkey, InputIterator first, InputIterator last)
Definition: bls.hpp:518
bls< PublicParams, BlsVersion, BlsScheme, CurveType > scheme_type
Definition: bls.hpp:500
static void init_accumulator(internal_accumulator_type &acc)
Definition: bls.hpp:514
static void update(internal_accumulator_type &acc, const scheme_public_key_type &scheme_pubkey, const InputRange &range)
Definition: bls.hpp:525
static result_type process(internal_accumulator_type &acc, const signature_type &sig)
Definition: bls.hpp:531
scheme_type::bls_scheme_type bls_scheme_type
Definition: bls.hpp:501
bls_scheme_type::internal_aggregation_accumulator_type _internal_aggregation_accumulator_type
Definition: bls.hpp:510
bls_scheme_type::public_key_type public_key_type
Definition: bls.hpp:505
bls_scheme_type::private_key_type private_key_type
Definition: bls.hpp:504
bls_scheme_type::internal_accumulator_type _internal_accumulator_type
Definition: bls.hpp:508
Definition: aggregate_verify_op.hpp:33
bls_scheme_type::signature_type signature_type
Definition: bls.hpp:563
bls_scheme_type::internal_accumulator_type _internal_accumulator_type
Definition: bls.hpp:565
bls_scheme_type::private_key_type private_key_type
Definition: bls.hpp:561
_internal_fast_aggregation_accumulator_type internal_accumulator_type
Definition: bls.hpp:568
static std::enable_if<!std::is_convertible< typename std::iterator_traits< InputIterator >::value_type, scheme_public_key_type >::value >::type update(internal_accumulator_type &acc, InputIterator first, InputIterator last)
Definition: bls.hpp:577
static std::enable_if< std::is_convertible< typename std::iterator_traits< typename InputRange::iterator >::value_type, scheme_public_key_type >::value >::type update(internal_accumulator_type &acc, const InputRange &range)
Definition: bls.hpp:602
static std::enable_if< std::is_convertible< typename std::iterator_traits< InputIterator >::value_type, scheme_public_key_type >::value >::type update(internal_accumulator_type &acc, InputIterator first, InputIterator last)
Definition: bls.hpp:592
static void update(internal_accumulator_type &acc, const scheme_public_key_type &scheme_pubkey)
Definition: bls.hpp:608
bool result_type
Definition: bls.hpp:569
public_key< scheme_type > scheme_public_key_type
Definition: bls.hpp:559
static std::enable_if< !std::is_convertible< typename std::iterator_traits< typename InputRange::iterator >::value_type, scheme_public_key_type >::value >::type update(internal_accumulator_type &acc, const InputRange &range)
Definition: bls.hpp:585
static result_type process(internal_accumulator_type &acc, const signature_type &sig)
Definition: bls.hpp:616
scheme_type::bls_scheme_type bls_scheme_type
Definition: bls.hpp:558
bls< PublicParams, BlsVersion, bls_pop_scheme, CurveType > scheme_type
Definition: bls.hpp:557
bls_scheme_type::public_key_type public_key_type
Definition: bls.hpp:562
static void init_accumulator(internal_accumulator_type &acc)
Definition: bls.hpp:571
bls_scheme_type::internal_fast_aggregation_accumulator_type _internal_fast_aggregation_accumulator_type
Definition: bls.hpp:567
Definition: aggregate_verify_single_msg_op.hpp:33
Definition: bls.hpp:133
static void init_accumulator(internal_accumulator_type &acc, const private_key_type &privkey)
Definition: bls.hpp:149
basic_functions::private_key_type private_key_type
Definition: bls.hpp:137
static void init_accumulator(internal_accumulator_type &acc, const public_key_type &pubkey)
Definition: bls.hpp:153
signature_version::basic_functions basic_functions
Definition: bls.hpp:135
static bool aggregate_verify(internal_aggregation_accumulator_type &acc, const signature_type &signature)
Definition: bls.hpp:187
basic_functions::internal_accumulator_type internal_accumulator_type
Definition: bls.hpp:141
static void update(internal_accumulator_type &acc, InputIterator first, InputIterator last)
Definition: bls.hpp:163
basic_functions::signature_type signature_type
Definition: bls.hpp:139
static void update(internal_accumulator_type &acc, const InputRange &range)
Definition: bls.hpp:158
SignatureVersion signature_version
Definition: bls.hpp:134
static public_key_type generate_public_key(const private_key_type &privkey)
Definition: bls.hpp:145
static void update_aggregate(signature_type &acc, const SignatureRange &signatures)
Definition: bls.hpp:177
static bool verify(internal_accumulator_type &acc, const public_key_type &pubkey, const signature_type &sig)
Definition: bls.hpp:171
static void update_aggregate(signature_type &acc, SignatureIterator sig_first, SignatureIterator sig_last)
Definition: bls.hpp:182
basic_functions::public_key_type public_key_type
Definition: bls.hpp:138
basic_functions::internal_aggregation_accumulator_type internal_aggregation_accumulator_type
Definition: bls.hpp:143
static signature_type sign(internal_accumulator_type &acc, const private_key_type &privkey)
Definition: bls.hpp:167
static void init_accumulator(internal_accumulator_type &acc, const public_key_type &pubkey)
Definition: bls.hpp:86
static public_key_type generate_public_key(const private_key_type &privkey)
Definition: bls.hpp:79
basic_functions::public_key_type public_key_type
Definition: bls.hpp:72
static void update_aggregate(signature_type &acc, SignatureIterator sig_first, SignatureIterator sig_last)
Definition: bls.hpp:114
static bool aggregate_verify(internal_aggregation_accumulator_type &acc, const signature_type &signature)
Definition: bls.hpp:119
SignatureVersion signature_version
Definition: bls.hpp:68
static void update(internal_accumulator_type &acc, const InputRange &range)
Definition: bls.hpp:90
static void update(internal_accumulator_type &acc, InputIterator first, InputIterator last)
Definition: bls.hpp:95
basic_functions::internal_aggregation_accumulator_type internal_aggregation_accumulator_type
Definition: bls.hpp:77
static void update_aggregate(signature_type &acc, const SignatureRange &signatures)
Definition: bls.hpp:109
static bool verify(internal_accumulator_type &acc, const public_key_type &pubkey, const signature_type &sig)
Definition: bls.hpp:103
signature_version::basic_functions basic_functions
Definition: bls.hpp:69
basic_functions::private_key_type private_key_type
Definition: bls.hpp:71
basic_functions::internal_accumulator_type internal_accumulator_type
Definition: bls.hpp:75
static void init_accumulator(internal_accumulator_type &acc, const private_key_type &privkey)
Definition: bls.hpp:83
basic_functions::signature_type signature_type
Definition: bls.hpp:73
static signature_type sign(internal_accumulator_type &acc, const private_key_type &privkey)
Definition: bls.hpp:99
Definition: bls.hpp:295
std::array< std::uint8_t, 43 > dst_type
Definition: bls.hpp:300
constexpr static hashes::ExpandMsgVariant expand_msg_variant
Definition: bls.hpp:297
constexpr static hashes::UniformityCount uniformity_count
Definition: bls.hpp:296
static constexpr dst_type dst
Definition: bls.hpp:301
Definition: bls.hpp:288
detail::bls_basic_functions< policy_type > basic_functions
Definition: bls.hpp:290
detail::bls_mps_ro_policy< PublicParams, CurveType > policy_type
Definition: bls.hpp:289
Definition: bls.hpp:278
detail::bls_basic_functions< policy_type > basic_functions
Definition: bls.hpp:280
detail::bls_mss_ro_policy< PublicParams, CurveType > policy_type
Definition: bls.hpp:279
Definition: bls.hpp:309
constexpr static hashes::ExpandMsgVariant expand_msg_variant
Definition: bls.hpp:311
constexpr static hashes::UniformityCount uniformity_count
Definition: bls.hpp:310
static dst_type dst
Definition: bls.hpp:314
std::vector< std::uint8_t > dst_type
Definition: bls.hpp:313
static void init_accumulator(internal_accumulator_type &acc, const private_key_type &privkey)
Definition: bls.hpp:218
basic_functions::internal_fast_aggregation_accumulator_type internal_fast_aggregation_accumulator_type
Definition: bls.hpp:212
SignatureVersion signature_version
Definition: bls.hpp:201
basic_functions::internal_accumulator_type internal_accumulator_type
Definition: bls.hpp:208
static signature_type pop_prove(const private_key_type &privkey)
Definition: bls.hpp:264
signature_version::basic_functions basic_functions
Definition: bls.hpp:202
static bool aggregate_verify(internal_fast_aggregation_accumulator_type &acc, const signature_type &signature)
Definition: bls.hpp:259
static public_key_type generate_public_key(const private_key_type &privkey)
Definition: bls.hpp:214
static signature_type sign(internal_accumulator_type &acc, const private_key_type &privkey)
Definition: bls.hpp:234
basic_functions::signature_type signature_type
Definition: bls.hpp:206
static bool aggregate_verify(internal_aggregation_accumulator_type &acc, const signature_type &signature)
Definition: bls.hpp:254
basic_functions::internal_aggregation_accumulator_type internal_aggregation_accumulator_type
Definition: bls.hpp:210
static bool verify(internal_accumulator_type &acc, const public_key_type &pubkey, const signature_type &sig)
Definition: bls.hpp:238
static void update(internal_accumulator_type &acc, const InputRange &range)
Definition: bls.hpp:225
static void update_aggregate(signature_type &acc, SignatureIterator sig_first, SignatureIterator sig_last)
Definition: bls.hpp:249
static void update_aggregate(signature_type &acc, const SignatureRange &signatures)
Definition: bls.hpp:244
basic_functions::private_key_type private_key_type
Definition: bls.hpp:204
static void init_accumulator(internal_accumulator_type &acc, const public_key_type &pubkey)
Definition: bls.hpp:221
basic_functions::public_key_type public_key_type
Definition: bls.hpp:205
static bool pop_verify(const public_key_type &pubkey, const signature_type &proof)
Definition: bls.hpp:268
static void update(internal_accumulator_type &acc, InputIterator first, InputIterator last)
Definition: bls.hpp:230
Definition: bls.hpp:323
std::vector< std::uint8_t > dst_type
Definition: bls.hpp:327
constexpr static hashes::ExpandMsgVariant expand_msg_variant
Definition: bls.hpp:325
constexpr static hashes::UniformityCount uniformity_count
Definition: bls.hpp:324
static dst_type dst
Definition: bls.hpp:328
Definition: bls.hpp:339
BlsVersion< PublicParams, CurveType > bls_version_type
Definition: bls.hpp:341
private_key< self_type > private_key_type
Definition: bls.hpp:345
public_key< self_type > public_key_type
Definition: bls.hpp:344
aggregate_op< self_type > aggregate_op_policy
Definition: bls.hpp:346
aggregate_verify_op< self_type > aggregate_verify_op_policy
Definition: bls.hpp:347
bls< PublicParams, BlsVersion, BlsScheme, CurveType > self_type
Definition: bls.hpp:340
BlsScheme< bls_version_type > bls_scheme_type
Definition: bls.hpp:342
Definition: bls_basic_functions.hpp:52
Definition: bls_basic_policy.hpp:95
Definition: bls_basic_policy.hpp:59
signature_type sign(internal_accumulator_type &acc) const
Definition: bls.hpp:445
signature_type pop_prove() const
Definition: bls.hpp:449
bls< PublicParams, BlsVersion, BlsScheme, CurveType > scheme_type
Definition: bls.hpp:414
bls_scheme_type::internal_accumulator_type internal_accumulator_type
Definition: bls.hpp:422
base_type::public_key_type public_key_type
Definition: bls.hpp:419
static void update(internal_accumulator_type &acc, InputIterator first, InputIterator last)
Definition: bls.hpp:441
private_key(const key_type &privkey)
Definition: bls.hpp:427
private_key()=delete
scheme_type::bls_scheme_type bls_scheme_type
Definition: bls.hpp:415
base_type::signature_type signature_type
Definition: bls.hpp:420
public_key< scheme_type > base_type
Definition: bls.hpp:416
base_type::private_key_type private_key_type
Definition: bls.hpp:418
private_key_type privkey
Definition: bls.hpp:462
nil::crypto3::pubkey::private_key< bls< PublicParams, BlsVersion, BlsScheme, CurveType > >::key_type
private_key_type key_type
Definition: bls.hpp:424
static void update(internal_accumulator_type &acc, const InputRange &range)
Definition: bls.hpp:436
void init_accumulator(internal_accumulator_type &acc) const
Definition: bls.hpp:431
Private key - a key known only to its owner. Only the user keeping his private key secret guarantees ...
Definition: private_key.hpp:47
bls< PublicParams, BlsVersion, BlsScheme, CurveType > scheme_type
Definition: bls.hpp:353
bls_scheme_type::private_key_type private_key_type
Definition: bls.hpp:356
void init_accumulator(internal_accumulator_type &acc) const
Definition: bls.hpp:371
public_key_type pubkey
Definition: bls.hpp:407
public_key_type public_key_data() const
Definition: bls.hpp:389
bls_scheme_type::public_key_type public_key_type
Definition: bls.hpp:357
bool pop_verify(FakeAccumulator, const signature_type &proof) const
Definition: bls.hpp:395
bool verify(internal_accumulator_type &acc, const signature_type &sig) const
Definition: bls.hpp:385
signature_type::group_type signature_group_type
Definition: bls.hpp:361
bls_scheme_type::signature_type signature_type
Definition: bls.hpp:358
bls_scheme_type::internal_accumulator_type internal_accumulator_type
Definition: bls.hpp:363
public_key(const key_type &pubkey)
Definition: bls.hpp:368
scheme_type::bls_scheme_type bls_scheme_type
Definition: bls.hpp:354
static void update(internal_accumulator_type &acc, InputIterator first, InputIterator last)
Definition: bls.hpp:381
static void update(internal_accumulator_type &acc, const InputRange &range)
Definition: bls.hpp:376
public_key_type::group_type public_key_group_type
Definition: bls.hpp:360
public_key()=delete
public_key_type key_type
Definition: bls.hpp:365
Public key - a key that can be published and used to verify the authenticity of the signed document,...
Definition: public_key.hpp:43