aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMITSUNARI Shigeo <herumi@nifty.com>2016-08-27 17:03:04 +0800
committerMITSUNARI Shigeo <herumi@nifty.com>2016-08-27 17:03:04 +0800
commitea600930c3e920b75d15fa1bffe3d48d818a294b (patch)
tree50f9845ac43a8e79422cc253416e28f78c56ce38
parentfec0cc33f5074e76764f87eaf6b26c7ed8bca5a4 (diff)
downloaddexon-bls-ea600930c3e920b75d15fa1bffe3d48d818a294b.tar
dexon-bls-ea600930c3e920b75d15fa1bffe3d48d818a294b.tar.gz
dexon-bls-ea600930c3e920b75d15fa1bffe3d48d818a294b.tar.bz2
dexon-bls-ea600930c3e920b75d15fa1bffe3d48d818a294b.tar.lz
dexon-bls-ea600930c3e920b75d15fa1bffe3d48d818a294b.tar.xz
dexon-bls-ea600930c3e920b75d15fa1bffe3d48d818a294b.tar.zst
dexon-bls-ea600930c3e920b75d15fa1bffe3d48d818a294b.zip
init by user defined p
-rw-r--r--include/bls.hpp5
-rw-r--r--src/bls.cpp12
2 files changed, 12 insertions, 5 deletions
diff --git a/include/bls.hpp b/include/bls.hpp
index 2c4017e..be6d17d 100644
--- a/include/bls.hpp
+++ b/include/bls.hpp
@@ -41,6 +41,8 @@ class SecretKey;
class PublicKey;
class Sign;
+const size_t keySize = 32;
+
typedef std::vector<SecretKey> SecretKeyVec;
typedef std::vector<PublicKey> PublicKeyVec;
typedef std::vector<Sign> SignVec;
@@ -67,8 +69,9 @@ public:
friend std::istream& operator>>(std::istream& is, SecretKey& sec);
/*
make a secret key for id = 0
+ set p[keySize] if p != 0
*/
- void init();
+ void init(const uint64_t *p = 0);
void getPublicKey(PublicKey& pub) const;
void sign(Sign& sign, const std::string& m) const;
/*
diff --git a/src/bls.cpp b/src/bls.cpp
index ab3d68b..40599af 100644
--- a/src/bls.cpp
+++ b/src/bls.cpp
@@ -180,9 +180,13 @@ inline bool Sign::verify(const PublicKey& pub, const std::string& m) const
struct SecretKey {
Fr s;
const Fr& get() const { return s; }
- void init()
+ void init(const uint64_t *p)
{
- s.setRand(getRG());
+ if (p) {
+ s.setArray(p, keySize);
+ } else {
+ s.setRand(getRG());
+ }
}
void getPublicKey(PublicKey& pub) const
{
@@ -367,9 +371,9 @@ std::istream& operator>>(std::istream& is, SecretKey& sec)
return is >> sec.id_ >> sec.self_->s;
}
-void SecretKey::init()
+void SecretKey::init(const uint64_t *p)
{
- self_->init();
+ self_->init(p);
}
void SecretKey::getPublicKey(PublicKey& pub) const