aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMITSUNARI Shigeo <herumi@nifty.com>2018-09-17 10:43:16 +0800
committerMITSUNARI Shigeo <herumi@nifty.com>2018-09-17 10:43:16 +0800
commitaf2e557d9eb824a0c8d5c42a8cf1c8f09c8d16a7 (patch)
tree920ea3ff57d5fe3dbacd7d4841394dcf25aeaa47 /src
parent5aac84e9ab6b14d6c6402389d28fc1d488766444 (diff)
downloaddexon-bls-af2e557d9eb824a0c8d5c42a8cf1c8f09c8d16a7.tar
dexon-bls-af2e557d9eb824a0c8d5c42a8cf1c8f09c8d16a7.tar.gz
dexon-bls-af2e557d9eb824a0c8d5c42a8cf1c8f09c8d16a7.tar.bz2
dexon-bls-af2e557d9eb824a0c8d5c42a8cf1c8f09c8d16a7.tar.lz
dexon-bls-af2e557d9eb824a0c8d5c42a8cf1c8f09c8d16a7.tar.xz
dexon-bls-af2e557d9eb824a0c8d5c42a8cf1c8f09c8d16a7.tar.zst
dexon-bls-af2e557d9eb824a0c8d5c42a8cf1c8f09c8d16a7.zip
add signHash and verifyHash for hashed value
Diffstat (limited to 'src')
-rw-r--r--src/bls_c_impl.hpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/bls_c_impl.hpp b/src/bls_c_impl.hpp
index 75e5a44..768c206 100644
--- a/src/bls_c_impl.hpp
+++ b/src/bls_c_impl.hpp
@@ -267,6 +267,29 @@ int blsPublicKeyIsValidOrder(const blsPublicKey *pub)
}
#ifndef BLS_MINIMUM_API
+inline bool toG1(G1& Hm, const void *h, mclSize size)
+{
+ Fp t;
+ t.setArrayMask((const char *)h, size);
+ bool b;
+ BN::mapToG1(&b, Hm, t);
+ return b;
+}
+int blsSignHash(blsSignature *sig, const blsSecretKey *sec, const void *h, mclSize size)
+{
+ G1 Hm;
+ if (!toG1(Hm, h, size)) return -1;
+ mclBnG1_mulCT(&sig->v, cast(&Hm), &sec->v);
+ return 0;
+}
+
+int blsVerifyHash(const blsSignature *sig, const blsPublicKey *pub, const void *h, mclSize size)
+{
+ G1 Hm;
+ if (!toG1(Hm, h, size)) return 0;
+ return isEqualTwoPairings(*cast(&sig->v), getQcoeff().data(), Hm, *cast(&pub->v));
+}
+
void blsSecretKeySub(blsSecretKey *sec, const blsSecretKey *rhs)
{
mclBnFr_sub(&sec->v, &sec->v, &rhs->v);