dash/js-bindings/jsbindings.cpp
UdjinM6 730efde109 Squashed 'src/dashbls/' changes from 9329803969..795660db76
795660db76 chore: bump version to 1.3.0 (#84)
e8743b0139 Merge pull request #83 from UdjinM6/bp_370_371
72f0ad2d37 fix: add missing destructor for CoreMPL and final for nested classes (#371)
2f05059c60 Fix a typo in class PrivateKey testcase. (#370)
851c2c8f68 fix: reading unitialized memory from Util::HasOnlyZeros in G2Element deserialization (#77)
4dd28e9016 fix: js bindings build (#82)
3697c51521 fix: dash is no more pretending being a 'libdashbls' (#76)
37c53141d3 feat: implement memory-copy only of G1Element and G2Element (#74)
97ac99e8e6 build(bls-dash-sys): ignore wasm32 target arch (#70)
2d494d351e Merge pull request #71 from dashpay/feat/threshold_bindings
67fb70d40b chore: revert permission changes in bcce0b214876c0d9e668baaa30a48542b496cda2
5a58fce0ea fix: resolve rust-bindings compilation failure
8604e03761 build: fix cmake build error
c25957edf0 Merge remote-tracking branch 'dash/develop' into feat/threshold_bindings2
198e246f07 added a helper for verifying a message
a4b8a5dd6e added a helper for verifying a message
2d783c985e added a helper for signing from the private key
16f7873d6a changed to using a slice for recovery
a23d9708c0 feat: clone
0cf8a8eb96 feat: serde
47829e3e75 threshold_recovery functions
a5589e6fc8 fix: bls extended private key size
1ceaab56e3 [add cpp targts]
86eb28e2d7 [fix linker path for cpp]
85debcab29 [include 'src' into build]
f956c66b90 [switch into cc]
9ecb59bf9b [test linker]
3651a0fd79 [linker change]
d8564679eb [fix: iossim]
c829d4b6f1 [fix: aarch64-apple-darwin trigger]
fc3509e901 [chore: silence warning]
79ce6ded50 [feat: apple build for single platform+arch]
e580cb76db [feat: build for apple target]
17b2168955 feat: verifySecure method for BasicSchemeMPL in js bindings (#69)
4613425b60 chore: silence rust warnings
136d762607 [fix: target_arch]
0d8c8e9d41 [try to use ios.toolchain]
bd441623df [back]
8137f48897 [change relic src]
bdcba81d41 test: check patched relic
32b7f56d94 Merge pull request #1 from dashevo/rust-bindings-enhancement
6d359c6201 chore: test for extended private key from short seed
1cbeffe159 chore: add binding
dace793a1a fix: same as previous: BIP32ExtendedPrivateKeyFromSeed with len
65c84d063c fix: ok now add second blank line
24b25bac2d fix: now try from typing import Union
fe16287182 fix: try Union[Fq2, None]
3ffc96d409 fix: None
2d669a2cf8 chore: up version
fbb5a43b19 fix: pass length PrivateKeyFromSeedBIP32
5822076d1a chore: cargo:fmt
a8d3a7e956 test: add keys multiplication test
4b85f08937 fix: exchange keys when multiply
0bcefc68cb chore: add imports
7380332123 [chore: add binding for G1ElementMul]
881e6d7676 patch relic to be compatible with wasm
bcce0b2148 chore: fix mode
02801cf973 add deeper checks to example project
6d25c60ee5 compilation fixes
a4cebb4025 refactor: remove "C" prefix
995ef3796f refactor: bip32 feature
7ea0c34938 style: remove `get` prefix from getters
e316c00f7b add VerifySecure
da5536e1c5 feat: introduce PrivateKey::from_bip32_seed
4f03a1a1ae export legacy scheme
5c19e314d4 add extended private key
cc081c0956 feat: add G1 element's fingerprint and generate methods
f3e85b46d0 refactor: move back re-exports
e8155b4bdb refactor: move legacy code to submodule
f6e173242e add extendedpublickey
4f823249fb feat: legacy serialize and deserialize methods
90fd9f9c2c fix: comparison int with size_t
57237e5e87 Merge branch 'rust-bindings' of github.com:dashevo/bls-signatures into rust-bindings
a1f862480b refactor: implement Deref trait for SecureBox
0b6f94e41f add LegacySchemeMPL
aa19a77a40 refactor: small refactoring
dae8b31042 make schemes public
827d1ed162 add hdkeys
7b4ffae5ec improve agg sig test
18057687be add basic scheme
3e4fdda2bd aggregates
61a4d791c9 elements ser/de
8b5b6301f3 wip
126b7becea wip
c49514176e chore: remove autocxx variant
477c014bb7 refactor: increase `c_err_to_result` readability
5d52d0e59d Merge remote-tracking branch 'dashevo/rust-bindings' into rust-bindings
31724b39d1 chore: add example crate
c04c2941db safe wrappers for simple case
844779cd81 chore: remove cdylib from bls-signatures
d622625de4 chore: move all rust stuff into one
0d3c51106a Merge remote-tracking branch 'dashevo/rust-bindings' into rust-bindings
ecf0271950 revert: bring back necessary c binding files :)
20e1cfe37b wip
654fc5e6a6 chore: remove unnecessary files from c binding
92ffd63c28 refactor: cargo build script
1d4d76fb05 chore: remove wrapper.h
20cc668708 qfix
abb38804c7 Merge remote-tracking branch 'dashevo/rust-bindings' into rust-bindings
760a267ab7 build: fix mac related issues
8b083794a4 add destructors to bls-dash-sys basic test
6c54f0a01a Merge remote-tracking branch 'dashevo/rust-bindings' into rust-bindings
fd526ab0db build: pass gmp lib path to build.rs
a8aaccb510 rust-bindings sign and verify test simple
8447c1c112 wip bindings test
9390162e3c wip add rust-bindings tests
26ab7216c0 revert: bls header path
db55e40cb0 rename to sys
96188a6d52 build qfix
965ac58df4 build: automate build process part 2
05636207a0 build: automate build process part 1
73b146a961 experiment cross compiling with autocxx and bindgen
969e5e2102 experiment cross compiling with autocxx and bindgen
88ee9d0519 chore: WIP
525b4d49d9 feat: rust bindings

git-subtree-dir: src/dashbls
git-subtree-split: 795660db76636c92bea3bfccfee621f1aba371a3
2023-06-28 23:43:42 +03:00

111 lines
5.8 KiB
C++

// Copyright 2020 Chia Network Inc
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#include <emscripten/bind.h>
#include "wrappers/PrivateKeyWrapper.h"
#include "wrappers/SchemeMPLWrapper.h"
#include "wrappers/UtilWrapper.h"
using namespace emscripten;
namespace js_wrappers {
EMSCRIPTEN_BINDINGS(blsjs) {
class_<AugSchemeMPLWrapper>("AugSchemeMPL")
.class_function("skToG1", &AugSchemeMPLWrapper::SkToG1)
.class_function("keyGen", &AugSchemeMPLWrapper::KeyGen)
.class_function("sign", &AugSchemeMPLWrapper::Sign)
.class_function("signPrepend", &AugSchemeMPLWrapper::SignPrepend)
.class_function("verify", &AugSchemeMPLWrapper::Verify)
.class_function("aggregate", &AugSchemeMPLWrapper::Aggregate)
.class_function("aggregateVerify", &AugSchemeMPLWrapper::AggregateVerify)
.class_function("deriveChildSk", &AugSchemeMPLWrapper::DeriveChildSk)
.class_function("deriveChildSkUnhardened", &AugSchemeMPLWrapper::DeriveChildSkUnhardened)
.class_function("deriveChildPkUnhardened", &AugSchemeMPLWrapper::DeriveChildPkUnhardened);
class_<SchemeMPLWrapper<BasicSchemeMPL>>("BasicSchemeMPL")
.class_function("skToG1", &SchemeMPLWrapper<BasicSchemeMPL>::SkToG1)
.class_function("keyGen", &SchemeMPLWrapper<BasicSchemeMPL>::KeyGen)
.class_function("sign", &SchemeMPLWrapper<BasicSchemeMPL>::Sign)
.class_function("verify", &SchemeMPLWrapper<BasicSchemeMPL>::Verify)
.class_function("aggregate", &SchemeMPLWrapper<BasicSchemeMPL>::Aggregate)
.class_function("aggregateVerify", &SchemeMPLWrapper<BasicSchemeMPL>::AggregateVerify)
.class_function("deriveChildSk", &SchemeMPLWrapper<BasicSchemeMPL>::DeriveChildSk)
.class_function("deriveChildSkUnhardened", &SchemeMPLWrapper<BasicSchemeMPL>::DeriveChildSkUnhardened)
.class_function("deriveChildPkUnhardened", &SchemeMPLWrapper<BasicSchemeMPL>::DeriveChildPkUnhardened)
.class_function("verifySecure", &SchemeMPLWrapper<BasicSchemeMPL>::VerifySecure);
class_<PopSchemeMPLWrapper>("PopSchemeMPL")
.class_function("skToG1", &PopSchemeMPLWrapper::SkToG1)
.class_function("keyGen", &PopSchemeMPLWrapper::KeyGen)
.class_function("sign", &PopSchemeMPLWrapper::Sign)
.class_function("verify", &PopSchemeMPLWrapper::Verify)
.class_function("aggregate", &PopSchemeMPLWrapper::Aggregate)
.class_function("aggregateVerify", &PopSchemeMPLWrapper::AggregateVerify)
.class_function("deriveChildSk", &PopSchemeMPLWrapper::DeriveChildSk)
.class_function("deriveChildSkUnhardened", &PopSchemeMPLWrapper::DeriveChildSkUnhardened)
.class_function("deriveChildPkUnhardened", &PopSchemeMPLWrapper::DeriveChildPkUnhardened)
.class_function("popProve", &PopSchemeMPLWrapper::PopProve)
.class_function("popVerify", &PopSchemeMPLWrapper::PopVerify)
.class_function("fastAggregateVerify", &PopSchemeMPLWrapper::FastAggregateVerify);
class_<G1ElementWrapper>("G1Element")
.class_property("SIZE", &G1ElementWrapper::SIZE)
.constructor<>()
.class_function("fromBytes", &G1ElementWrapper::FromBytes)
.class_function("generator", &G2ElementWrapper::Generator)
.function("serialize", &G1ElementWrapper::Serialize)
.function("negate", &G1ElementWrapper::Negate)
.function("deepcopy", &G1ElementWrapper::Deepcopy)
.function("getFingerprint", &G1ElementWrapper::GetFingerprint)
.function("add", &G1ElementWrapper::Add)
.function("mul", &G1ElementWrapper::Mul)
.function("equalTo", &G1ElementWrapper::EqualTo);
class_<G2ElementWrapper>("G2Element")
.class_property("SIZE", &G2ElementWrapper::SIZE)
.constructor<>()
.class_function("fromBytes", &G2ElementWrapper::FromBytes)
.class_function("fromG2", &G2ElementWrapper::FromG2Element)
.class_function("aggregateSigs", &G2ElementWrapper::AggregateSigs)
.class_function("generator", &G2ElementWrapper::Generator)
.function("serialize", &G2ElementWrapper::Serialize)
.function("negate", &G2ElementWrapper::Negate)
.function("deepcopy", &G2ElementWrapper::Deepcopy)
.function("add", &G2ElementWrapper::Add)
.function("mul", &G2ElementWrapper::Mul)
.function("equalTo", &G2ElementWrapper::EqualTo);
class_<PrivateKeyWrapper>("PrivateKey")
.class_property("PRIVATE_KEY_SIZE", &PrivateKeyWrapper::PRIVATE_KEY_SIZE)
.class_function("fromBytes", &PrivateKeyWrapper::FromBytes)
.class_function("aggregate", &PrivateKeyWrapper::Aggregate)
.function("deepcopy", &PrivateKeyWrapper::Deepcopy)
.function("serialize", &PrivateKeyWrapper::Serialize)
.function("getG1", &PrivateKeyWrapper::GetG1)
.function("getG2", &PrivateKeyWrapper::GetG2)
.function("mulG1", &PrivateKeyWrapper::MulG1)
.function("mulG2", &PrivateKeyWrapper::MulG2)
.function("equalTo", &PrivateKeyWrapper::EqualTo);
class_<BignumWrapper>("Bignum")
.class_function("fromString", &BignumWrapper::FromString)
.function("toString", &BignumWrapper::ToString);
class_<UtilWrapper>("Util")
.class_function("hash256", &UtilWrapper::Hash256)
.class_function("hexStr", &UtilWrapper::HexStr);
};
} // namespace js_wrappers