diff options
author | MITSUNARI Shigeo <herumi@nifty.com> | 2016-09-06 17:00:38 +0800 |
---|---|---|
committer | MITSUNARI Shigeo <herumi@nifty.com> | 2016-09-06 17:00:38 +0800 |
commit | afc01080302fb3348536782e0af39cfb3943867f (patch) | |
tree | 29eb1f57d9e483a15fd2e3626629191d3805b3de /src/bls.cpp | |
parent | 00c3253835763f5f7da16981719c5e751bf7b3e7 (diff) | |
download | dexon-bls-afc01080302fb3348536782e0af39cfb3943867f.tar.gz dexon-bls-afc01080302fb3348536782e0af39cfb3943867f.tar.zst dexon-bls-afc01080302fb3348536782e0af39cfb3943867f.zip |
add Secret::set for c api
Diffstat (limited to 'src/bls.cpp')
-rw-r--r-- | src/bls.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/bls.cpp b/src/bls.cpp index 03f7d16..3dfab45 100644 --- a/src/bls.cpp +++ b/src/bls.cpp @@ -87,6 +87,18 @@ struct Wrap { size_t size() const { return pv->size(); } }; +template<class T, class G> +struct WrapPointer { + const T *const *v; + size_t k; + WrapPointer(const T *const *v, size_t k) : v(v), k(k) {} + const G& operator[](size_t i) const + { + return v[i]->self_->get(); + } + size_t size() const { return k; } +}; + struct Polynomial { FrVec c; // f[x] = sum_{i=0}^{k-1} c[i] x^i void init(const Fr& s, int k) @@ -426,6 +438,11 @@ void SecretKey::set(const SecretKeyVec& msk, const Id& id) Wrap<SecretKey, Fr> w(msk); evalPoly(self_->s, id.self_->v, w); } +void SecretKey::set(const SecretKey *const *msk, size_t k, const Id& id) +{ + WrapPointer<SecretKey, Fr> w(msk, k); + evalPoly(self_->s, id.self_->v, w); +} void SecretKey::recover(const SecretKeyVec& secVec, const IdVec& idVec) { |