aboutsummaryrefslogtreecommitdiffstats
path: root/go/bls
diff options
context:
space:
mode:
authorMITSUNARI Shigeo <herumi@nifty.com>2016-09-06 21:55:49 +0800
committerMITSUNARI Shigeo <herumi@nifty.com>2016-09-06 21:55:49 +0800
commita359f1b668fd8e385162379df5f5d8a9d4545d44 (patch)
treeb56a70f6dd80dc81053b90d2964971b9a390f4ae /go/bls
parent8d9d3dc516a0c286baea1555c0af20b8db06740d (diff)
downloaddexon-bls-a359f1b668fd8e385162379df5f5d8a9d4545d44.tar
dexon-bls-a359f1b668fd8e385162379df5f5d8a9d4545d44.tar.gz
dexon-bls-a359f1b668fd8e385162379df5f5d8a9d4545d44.tar.bz2
dexon-bls-a359f1b668fd8e385162379df5f5d8a9d4545d44.tar.lz
dexon-bls-a359f1b668fd8e385162379df5f5d8a9d4545d44.tar.xz
dexon-bls-a359f1b668fd8e385162379df5f5d8a9d4545d44.tar.zst
dexon-bls-a359f1b668fd8e385162379df5f5d8a9d4545d44.zip
add sample of recovering secret key for Go
Diffstat (limited to 'go/bls')
-rw-r--r--go/bls/bls.go32
1 files changed, 32 insertions, 0 deletions
diff --git a/go/bls/bls.go b/go/bls/bls.go
index 5ba2f24..c7749f5 100644
--- a/go/bls/bls.go
+++ b/go/bls/bls.go
@@ -94,6 +94,38 @@ func (sec *SecretKey) Add(rhs *SecretKey) {
C.blsSecretKeyAdd(sec.self, rhs.self);
}
+func (sec *SecretKey) GetMasterSecretKey(k int) (msk []SecretKey) {
+ msk = make([]SecretKey, k)
+ msk[0] = *sec
+ for i := 1; i < k; i++ {
+ msk[i] = *NewSecretKey()
+ msk[i].Init()
+ }
+ return msk
+}
+
+func (sec *SecretKey) Set(msk []SecretKey, id Id) {
+ n := len(msk)
+ v := make([]*C.blsSecretKey, n)
+ for i := 0; i < n; i++ {
+ v[i] = msk[i].self
+ }
+ C.blsSecretKeySet(sec.self, (**C.blsSecretKey)(unsafe.Pointer(&v[0])), C.size_t(n), id.self)
+}
+
+func (sec *SecretKey) Recover(secVec []SecretKey, idVec []Id) {
+ n := len(secVec)
+ sv := make([]*C.blsSecretKey, n)
+ for i := 0; i < n; i++ {
+ sv[i] = secVec[i].self
+ }
+ iv := make([]*C.blsId, n)
+ for i := 0; i < n; i++ {
+ iv[i] = idVec[i].self
+ }
+ C.blsSecretKeyRecover(sec.self, (**C.blsSecretKey)(unsafe.Pointer(&sv[0])), (**C.blsId)(unsafe.Pointer(&iv[0])), C.size_t(n))
+}
+
type PublicKey struct {
self *C.blsPublicKey
}