aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMITSUNARI Shigeo <herumi@nifty.com>2016-08-11 11:10:27 +0800
committerMITSUNARI Shigeo <herumi@nifty.com>2016-08-11 11:10:27 +0800
commit0ed60fb7254d28bc682feb3150ea1e3df79b2b77 (patch)
tree1b54a1ece9581bbfa2c7fee2a4135b91d90c6c42 /src
parent6293942d3896de58eacf8282bf6c055bedf59a63 (diff)
downloaddexon-bls-0ed60fb7254d28bc682feb3150ea1e3df79b2b77.tar
dexon-bls-0ed60fb7254d28bc682feb3150ea1e3df79b2b77.tar.gz
dexon-bls-0ed60fb7254d28bc682feb3150ea1e3df79b2b77.tar.bz2
dexon-bls-0ed60fb7254d28bc682feb3150ea1e3df79b2b77.tar.lz
dexon-bls-0ed60fb7254d28bc682feb3150ea1e3df79b2b77.tar.xz
dexon-bls-0ed60fb7254d28bc682feb3150ea1e3df79b2b77.tar.zst
dexon-bls-0ed60fb7254d28bc682feb3150ea1e3df79b2b77.zip
add PublicKey::recover
Diffstat (limited to 'src')
-rw-r--r--src/bls.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/bls.cpp b/src/bls.cpp
index 8c6ff4a..8577c95 100644
--- a/src/bls.cpp
+++ b/src/bls.cpp
@@ -152,6 +152,7 @@ struct PublicKey {
BN::pairing(e2, sQ, Hm); // e(sQ, Hm)
return e1 == e2;
}
+ const G2& get() const { return sQ; }
};
struct PrivateKey {
@@ -292,6 +293,14 @@ bool PublicKey::verify(const Sign& sign, const std::string& m) const
return self_->verify(*sign.self_, m);
}
+void PublicKey::recover(const std::vector<PublicKey>& pubVec)
+{
+ G2 sQ;
+ LagrangeInterpolation(sQ, pubVec);
+ self_->sQ = sQ;
+ id_ = 0;
+}
+
PrivateKey::PrivateKey()
: self_(new impl::PrivateKey())
, id_(0)