Use HashVerify
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
This commit is contained in:
parent
49b1acba43
commit
2a78ebabd9
@ -8,7 +8,6 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/Gurpartap/async"
|
"github.com/Gurpartap/async"
|
||||||
@ -949,23 +948,14 @@ func (syncer *Syncer) verifyBlsAggregate(ctx context.Context, sig *crypto.Signat
|
|||||||
trace.Int64Attribute("msgCount", int64(len(msgs))),
|
trace.Int64Attribute("msgCount", int64(len(msgs))),
|
||||||
)
|
)
|
||||||
|
|
||||||
var wg sync.WaitGroup
|
bmsgs := make([]bls.Message, len(msgs))
|
||||||
|
for i, m := range msgs {
|
||||||
digests := make([]bls.Digest, len(msgs))
|
bmsgs[i] = m.Bytes()
|
||||||
for i := 0; i < 10; i++ {
|
|
||||||
wg.Add(1)
|
|
||||||
go func(w int) {
|
|
||||||
defer wg.Done()
|
|
||||||
for j := 0; (j*10)+w < len(msgs); j++ {
|
|
||||||
digests[j*10+w] = bls.Hash(bls.Message(msgs[j*10+w].Bytes()))
|
|
||||||
}
|
|
||||||
}(i)
|
|
||||||
}
|
}
|
||||||
wg.Wait()
|
|
||||||
|
|
||||||
var bsig bls.Signature
|
var bsig bls.Signature
|
||||||
copy(bsig[:], sig.Data)
|
copy(bsig[:], sig.Data)
|
||||||
if !bls.Verify(&bsig, digests, pubks) {
|
if !bls.HashVerify(&bsig, bmsgs, pubks) {
|
||||||
return xerrors.New("bls aggregate signature failed to verify")
|
return xerrors.New("bls aggregate signature failed to verify")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,16 +33,16 @@ func (blsSigner) Sign(p []byte, msg []byte) ([]byte, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (blsSigner) Verify(sig []byte, a address.Address, msg []byte) error {
|
func (blsSigner) Verify(sig []byte, a address.Address, msg []byte) error {
|
||||||
digests := []ffi.Digest{ffi.Hash(ffi.Message(msg))}
|
|
||||||
|
|
||||||
var pubk ffi.PublicKey
|
var pubk ffi.PublicKey
|
||||||
copy(pubk[:], a.Payload())
|
copy(pubk[:], a.Payload())
|
||||||
pubkeys := []ffi.PublicKey{pubk}
|
pubkeys := []ffi.PublicKey{pubk}
|
||||||
|
digests := []ffi.Message{msg}
|
||||||
|
|
||||||
var s ffi.Signature
|
var s ffi.Signature
|
||||||
copy(s[:], sig)
|
copy(s[:], sig)
|
||||||
|
|
||||||
if !ffi.Verify(&s, digests, pubkeys) {
|
if !ffi.HashVerify(&s, digests, pubkeys) {
|
||||||
return fmt.Errorf("bls signature failed to verify")
|
return fmt.Errorf("bls signature failed to verify")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user