Skip to content

Commit 608e020

Browse files
committed
Merge branch 'dev'
2 parents f689196 + d89871a commit 608e020

6 files changed

Lines changed: 55 additions & 32 deletions

File tree

‎.github/workflows/main.yml‎

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ jobs:
66
name: Run on ubuntu
77
runs-on: ubuntu-latest
88
steps:
9-
- uses: actions/checkout@v4
10-
- uses: actions/setup-go@v5
9+
- uses: actions/checkout@v6
10+
- uses: actions/setup-go@v6
1111
with:
12-
go-version: '1.22.x'
12+
go-version: '1.26.x'
1313
- run: |
1414
git submodule update --init --recursive
1515
sudo apt update
@@ -22,10 +22,10 @@ jobs:
2222
name: Run on Intel macos
2323
runs-on: macos-15
2424
steps:
25-
- uses: actions/checkout@v4
26-
- uses: actions/setup-go@v5
25+
- uses: actions/checkout@v6
26+
- uses: actions/setup-go@v6
2727
with:
28-
go-version: '1.22.x'
28+
go-version: '1.26.x'
2929
- run: |
3030
git submodule update --init --recursive
3131
brew install nasm
@@ -38,10 +38,10 @@ jobs:
3838
# Intel Mac
3939
runs-on: macos-latest
4040
steps:
41-
- uses: actions/checkout@v4
42-
- uses: actions/setup-go@v5
41+
- uses: actions/checkout@v6
42+
- uses: actions/setup-go@v6
4343
with:
44-
go-version: '1.22.x'
44+
go-version: '1.26.x'
4545
- run: |
4646
git submodule update --init --recursive
4747
make clean

‎.github/workflows/release.yml‎

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ jobs:
2323

2424
steps:
2525
- name: Checkout code
26-
uses: actions/checkout@v4
26+
uses: actions/checkout@v6
2727

2828
- name: Create branch
2929
env:
@@ -45,20 +45,20 @@ jobs:
4545
needs: create-branch
4646
steps:
4747
- name: Checkout code
48-
uses: actions/checkout@v4
48+
uses: actions/checkout@v6
4949

5050
- name: Setup Go
51-
uses: actions/setup-go@v5
51+
uses: actions/setup-go@v6
5252
with:
53-
go-version: ^1.22
53+
go-version: ^1.26
5454

5555
- name: Install Java
56-
uses: actions/setup-java@v4
56+
uses: actions/setup-java@v5
5757
with:
5858
distribution: 'temurin'
5959
java-version: '17'
6060

61-
- uses: android-actions/setup-android@v3
61+
- uses: android-actions/setup-android@v4
6262

6363
- name: Install Android Platform
6464
run: |
@@ -134,12 +134,12 @@ jobs:
134134
needs: build-linux
135135
steps:
136136
- name: Checkout code
137-
uses: actions/checkout@v4
137+
uses: actions/checkout@v6
138138

139139
- name: Setup Go
140-
uses: actions/setup-go@v5
140+
uses: actions/setup-go@v6
141141
with:
142-
go-version: ^1.22
142+
go-version: ^1.26
143143

144144
- name: Build darwin
145145
env:
@@ -206,12 +206,12 @@ jobs:
206206
needs: build-macos
207207
steps:
208208
- name: Checkout code
209-
uses: actions/checkout@v4
209+
uses: actions/checkout@v6
210210

211211
- name: Setup Go
212-
uses: actions/setup-go@v5
212+
uses: actions/setup-go@v6
213213
with:
214-
go-version: ^1.22
214+
go-version: ^1.26
215215

216216
- name: Install MSYS2
217217
uses: msys2/setup-msys2@v2
@@ -253,7 +253,7 @@ jobs:
253253
needs: build-windows
254254
steps:
255255
- name: Checkout code
256-
uses: actions/checkout@v4
256+
uses: actions/checkout@v6
257257
- name: Set hash
258258
id: set-hash
259259
env:

‎bls/bls.go‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -775,6 +775,7 @@ func createSlice(buf *C.char, n C.uint) []byte {
775775
}
776776

777777
// this function can't be put in callback.go
778+
//
778779
//export wrapReadRandGo
779780
func wrapReadRandGo(buf *C.char, n C.uint) C.uint {
780781
slice := createSlice(buf, n)

‎bls/bls_test.go‎

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -548,6 +548,27 @@ func testGetSafePublicKey(t *testing.T) {
548548
}
549549
}
550550

551+
// https://github.com/herumi/bls-eth-go-binary/issues/70
552+
// replace uintptr with unsafe.Pointer and unsafe.Add
553+
func testMultiVerifyCheckptr(t *testing.T) {
554+
const n = 6
555+
sigs := make([]Sign, n)
556+
pubs := make([]PublicKey, n)
557+
concat := make([]byte, n*32)
558+
for i := 0; i < n; i++ {
559+
var sk SecretKey
560+
sk.SetByCSPRNG()
561+
pubs[i] = *sk.GetPublicKey()
562+
var msg [32]byte
563+
_, _ = rand.Read(msg[:])
564+
copy(concat[i*32:(i+1)*32], msg[:])
565+
sigs[i] = *sk.SignByte(msg[:])
566+
}
567+
if !MultiVerify(sigs, pubs, concat) {
568+
t.Fatal("MultiVerify failed")
569+
}
570+
}
571+
551572
func Test(t *testing.T) {
552573
if Init(BLS12_381) != nil {
553574
t.Fatalf("Init")
@@ -570,6 +591,7 @@ func Test(t *testing.T) {
570591
testEthDraft07(t)
571592
testMultiVerify(t)
572593
testGetSafePublicKey(t)
594+
testMultiVerifyCheckptr(t)
573595
}
574596

575597
func BenchmarkPairing(b *testing.B) {

‎bls/eth.go‎

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ func MultiVerify(sigs []Sign, pubs []PublicKey, concatenatedMsg []byte) bool {
2929

3030
var e C.mclBnGT
3131
var aggSig Sign
32-
msg := uintptr(unsafe.Pointer(&concatenatedMsg[0]))
33-
rp := uintptr(unsafe.Pointer(&randVec[0]))
32+
msg := unsafe.Pointer(&concatenatedMsg[0])
33+
rand := unsafe.Pointer(&randVec[0])
3434

3535
maxThreadN := 32
3636
if threadN > maxThreadN {
@@ -44,8 +44,8 @@ func MultiVerify(sigs []Sign, pubs []PublicKey, concatenatedMsg []byte) bool {
4444
q := blockN / threadN
4545
r := blockN % threadN
4646
cs := make(chan int, threadN)
47-
sub := func(i int, sigs []Sign, pubs []PublicKey, msg uintptr, rp uintptr, m int) {
48-
C.blsMultiVerifySub(&et[i], &aggSigt[i].v, &sigs[0].v, &pubs[0].v, (*C.char)(unsafe.Pointer(msg)), C.mclSize(msgSize), (*C.char)(unsafe.Pointer(rp)), C.mclSize(randSize), C.mclSize(m))
47+
sub := func(i int, sigs []Sign, pubs []PublicKey, msg, rand unsafe.Pointer, m int) {
48+
C.blsMultiVerifySub(&et[i], &aggSigt[i].v, &sigs[0].v, &pubs[0].v, (*C.char)(msg), C.mclSize(msgSize), (*C.char)(rand), C.mclSize(randSize), C.mclSize(m))
4949
cs <- 1
5050
}
5151
for i := 0; i < threadN; i++ {
@@ -62,12 +62,12 @@ func MultiVerify(sigs []Sign, pubs []PublicKey, concatenatedMsg []byte) bool {
6262
if i == threadN-1 {
6363
m = n // remain all
6464
}
65-
// C.blsMultiVerifySub(&et[i], &aggSigt[i].v, &sigs[0].v, &pubs[0].v, (*C.char)(unsafe.Pointer(msg)), C.mclSize(msgSize), (*C.char)(unsafe.Pointer(rp)), C.mclSize(randSize), C.mclSize(m))
66-
go sub(i, sigs, pubs, msg, rp, m)
65+
// C.blsMultiVerifySub(&et[i], &aggSigt[i].v, &sigs[0].v, &pubs[0].v, (*C.char)(msg), C.mclSize(msgSize), (*C.char)(rand), C.mclSize(randSize), C.mclSize(m))
66+
go sub(i, sigs, pubs, msg, rand, m)
6767
sigs = sigs[m:]
6868
pubs = pubs[m:]
69-
msg += uintptr(msgSize * m)
70-
rp += uintptr(randSize * m)
69+
msg = unsafe.Add(msg, msgSize*m)
70+
rand = unsafe.Add(rand, randSize*m)
7171
n -= m
7272
}
7373
for i := 0; i < threadN; i++ {
@@ -80,7 +80,7 @@ func MultiVerify(sigs []Sign, pubs []PublicKey, concatenatedMsg []byte) bool {
8080
aggSig.Add(&aggSigt[i])
8181
}
8282
} else {
83-
C.blsMultiVerifySub(&e, &aggSig.v, &sigs[0].v, &pubs[0].v, (*C.char)(unsafe.Pointer(msg)), C.mclSize(msgSize), (*C.char)(unsafe.Pointer(rp)), C.mclSize(randSize), C.mclSize(n))
83+
C.blsMultiVerifySub(&e, &aggSig.v, &sigs[0].v, &pubs[0].v, (*C.char)(msg), C.mclSize(msgSize), (*C.char)(rand), C.mclSize(randSize), C.mclSize(n))
8484
}
8585
return C.blsMultiVerifyFinal(&e, &aggSig.v) == 1
8686
}

0 commit comments

Comments
 (0)