aboutsummaryrefslogtreecommitdiffstats
path: root/go/bls/bls.go
diff options
context:
space:
mode:
Diffstat (limited to 'go/bls/bls.go')
-rw-r--r--go/bls/bls.go296
1 files changed, 0 insertions, 296 deletions
diff --git a/go/bls/bls.go b/go/bls/bls.go
deleted file mode 100644
index 61a96f5..0000000
--- a/go/bls/bls.go
+++ /dev/null
@@ -1,296 +0,0 @@
-package bls
-
-/*
-#cgo CFLAGS:-DMCLBN_FP_UNIT_SIZE=6
-#cgo LDFLAGS:-lbls384_dy -lgmpxx -lstdc++ -lgmp -lcrypto
-#include <bls/bls.h>
-*/
-import "C"
-import "fmt"
-import "unsafe"
-
-// Init --
-// call this function before calling all the other operations
-// this function is not thread safe
-func Init(curve int) error {
- err := C.blsInit(C.int(curve), C.MCLBN_FP_UNIT_SIZE)
- if err != 0 {
- return fmt.Errorf("ERR Init curve=%d", curve)
- }
- return nil
-}
-
-// ID --
-type ID struct {
- v Fr
-}
-
-// getPointer --
-func (id *ID) getPointer() (p *C.blsId) {
- // #nosec
- return (*C.blsId)(unsafe.Pointer(id))
-}
-
-// GetLittleEndian --
-func (id *ID) GetLittleEndian() []byte {
- return id.v.Serialize()
-}
-
-// SetLittleEndian --
-func (id *ID) SetLittleEndian(buf []byte) error {
- return id.v.SetLittleEndian(buf)
-}
-
-// GetHexString --
-func (id *ID) GetHexString() string {
- return id.v.GetString(16)
-}
-
-// GetDecString --
-func (id *ID) GetDecString() string {
- return id.v.GetString(10)
-}
-
-// SetHexString --
-func (id *ID) SetHexString(s string) error {
- return id.v.SetString(s, 16)
-}
-
-// SetDecString --
-func (id *ID) SetDecString(s string) error {
- return id.v.SetString(s, 10)
-}
-
-// IsEqual --
-func (id *ID) IsEqual(rhs *ID) bool {
- return id.v.IsEqual(&rhs.v)
-}
-
-// SecretKey --
-type SecretKey struct {
- v Fr
-}
-
-// getPointer --
-func (sec *SecretKey) getPointer() (p *C.blsSecretKey) {
- // #nosec
- return (*C.blsSecretKey)(unsafe.Pointer(sec))
-}
-
-// GetLittleEndian --
-func (sec *SecretKey) GetLittleEndian() []byte {
- return sec.v.Serialize()
-}
-
-// SetLittleEndian --
-func (sec *SecretKey) SetLittleEndian(buf []byte) error {
- return sec.v.SetLittleEndian(buf)
-}
-
-// GetHexString --
-func (sec *SecretKey) GetHexString() string {
- return sec.v.GetString(16)
-}
-
-// GetDecString --
-func (sec *SecretKey) GetDecString() string {
- return sec.v.GetString(10)
-}
-
-// SetHexString --
-func (sec *SecretKey) SetHexString(s string) error {
- return sec.v.SetString(s, 16)
-}
-
-// SetDecString --
-func (sec *SecretKey) SetDecString(s string) error {
- return sec.v.SetString(s, 10)
-}
-
-// IsEqual --
-func (sec *SecretKey) IsEqual(rhs *SecretKey) bool {
- return sec.v.IsEqual(&rhs.v)
-}
-
-// SetByCSPRNG --
-func (sec *SecretKey) SetByCSPRNG() {
- sec.v.SetByCSPRNG()
-}
-
-// Add --
-func (sec *SecretKey) Add(rhs *SecretKey) {
- FrAdd(&sec.v, &sec.v, &rhs.v)
-}
-
-// GetMasterSecretKey --
-func (sec *SecretKey) GetMasterSecretKey(k int) (msk []SecretKey) {
- msk = make([]SecretKey, k)
- msk[0] = *sec
- for i := 1; i < k; i++ {
- msk[i].SetByCSPRNG()
- }
- return msk
-}
-
-// GetMasterPublicKey --
-func GetMasterPublicKey(msk []SecretKey) (mpk []PublicKey) {
- n := len(msk)
- mpk = make([]PublicKey, n)
- for i := 0; i < n; i++ {
- mpk[i] = *msk[i].GetPublicKey()
- }
- return mpk
-}
-
-// Set --
-func (sec *SecretKey) Set(msk []SecretKey, id *ID) error {
- // #nosec
- return FrEvaluatePolynomial(&sec.v, *(*[]Fr)(unsafe.Pointer(&msk)), &id.v)
-}
-
-// Recover --
-func (sec *SecretKey) Recover(secVec []SecretKey, idVec []ID) error {
- // #nosec
- return FrLagrangeInterpolation(&sec.v, *(*[]Fr)(unsafe.Pointer(&idVec)), *(*[]Fr)(unsafe.Pointer(&secVec)))
-}
-
-// GetPop --
-func (sec *SecretKey) GetPop() (sign *Sign) {
- sign = new(Sign)
- C.blsGetPop(sign.getPointer(), sec.getPointer())
- return sign
-}
-
-// PublicKey --
-type PublicKey struct {
- v G2
-}
-
-// getPointer --
-func (pub *PublicKey) getPointer() (p *C.blsPublicKey) {
- // #nosec
- return (*C.blsPublicKey)(unsafe.Pointer(pub))
-}
-
-// Serialize --
-func (pub *PublicKey) Serialize() []byte {
- return pub.v.Serialize()
-}
-
-// Deserialize --
-func (pub *PublicKey) Deserialize(buf []byte) error {
- return pub.v.Deserialize(buf)
-}
-
-// GetHexString --
-func (pub *PublicKey) GetHexString() string {
- return pub.v.GetString(16)
-}
-
-// SetHexString --
-func (pub *PublicKey) SetHexString(s string) error {
- return pub.v.SetString(s, 16)
-}
-
-// IsEqual --
-func (pub *PublicKey) IsEqual(rhs *PublicKey) bool {
- return pub.v.IsEqual(&rhs.v)
-}
-
-// Add --
-func (pub *PublicKey) Add(rhs *PublicKey) {
- G2Add(&pub.v, &pub.v, &rhs.v)
-}
-
-// Set --
-func (pub *PublicKey) Set(mpk []PublicKey, id *ID) error {
- // #nosec
- return G2EvaluatePolynomial(&pub.v, *(*[]G2)(unsafe.Pointer(&mpk)), &id.v)
-}
-
-// Recover --
-func (pub *PublicKey) Recover(pubVec []PublicKey, idVec []ID) error {
- // #nosec
- return G2LagrangeInterpolation(&pub.v, *(*[]Fr)(unsafe.Pointer(&idVec)), *(*[]G2)(unsafe.Pointer(&pubVec)))
-}
-
-// Sign --
-type Sign struct {
- v G1
-}
-
-// getPointer --
-func (sign *Sign) getPointer() (p *C.blsSignature) {
- // #nosec
- return (*C.blsSignature)(unsafe.Pointer(sign))
-}
-
-// Serialize --
-func (sign *Sign) Serialize() []byte {
- return sign.v.Serialize()
-}
-
-// Deserialize --
-func (sign *Sign) Deserialize(buf []byte) error {
- return sign.v.Deserialize(buf)
-}
-
-// GetHexString --
-func (sign *Sign) GetHexString() string {
- return sign.v.GetString(16)
-}
-
-// SetHexString --
-func (sign *Sign) SetHexString(s string) error {
- return sign.v.SetString(s, 16)
-}
-
-// IsEqual --
-func (sign *Sign) IsEqual(rhs *Sign) bool {
- return sign.v.IsEqual(&rhs.v)
-}
-
-// GetPublicKey --
-func (sec *SecretKey) GetPublicKey() (pub *PublicKey) {
- pub = new(PublicKey)
- C.blsGetPublicKey(pub.getPointer(), sec.getPointer())
- return pub
-}
-
-// Sign -- Constant Time version
-func (sec *SecretKey) Sign(m string) (sign *Sign) {
- sign = new(Sign)
- buf := []byte(m)
- // #nosec
- C.blsSign(sign.getPointer(), sec.getPointer(), unsafe.Pointer(&buf[0]), C.size_t(len(buf)))
- return sign
-}
-
-// Add --
-func (sign *Sign) Add(rhs *Sign) {
- C.blsSignatureAdd(sign.getPointer(), rhs.getPointer())
-}
-
-// Recover --
-func (sign *Sign) Recover(signVec []Sign, idVec []ID) error {
- // #nosec
- return G1LagrangeInterpolation(&sign.v, *(*[]Fr)(unsafe.Pointer(&idVec)), *(*[]G1)(unsafe.Pointer(&signVec)))
-}
-
-// Verify --
-func (sign *Sign) Verify(pub *PublicKey, m string) bool {
- buf := []byte(m)
- // #nosec
- return C.blsVerify(sign.getPointer(), pub.getPointer(), unsafe.Pointer(&buf[0]), C.size_t(len(buf))) == 1
-}
-
-// VerifyPop --
-func (sign *Sign) VerifyPop(pub *PublicKey) bool {
- return C.blsVerifyPop(sign.getPointer(), pub.getPointer()) == 1
-}
-
-// DHKeyExchange --
-func DHKeyExchange(sec *SecretKey, pub *PublicKey) (out PublicKey) {
- C.blsDHKeyExchange(out.getPointer(), sec.getPointer(), pub.getPointer())
- return out
-}