@@ -27,6 +27,8 @@ package blst
27
27
// }
28
28
// blst_pairing_init(new_ctx, hash_or_encode, DST, DST_len);
29
29
// }
30
+ // static void go_pairing_as_fp12(blst_fp12 *pt, blst_pairing *ctx)
31
+ // { *pt = *blst_pairing_as_fp12(ctx); }
30
32
//
31
33
// static void blst_p1slice_to_affine(blst_p1_affine dst[],
32
34
// const blst_p1 points[], size_t npoints)
@@ -151,110 +153,6 @@ func PairingCtx(hash_or_encode bool, DST []byte) Pairing {
151
153
return ctx
152
154
}
153
155
154
- func PairingAggregatePkInG1 (ctx Pairing , PK * P1Affine , pkValidate bool ,
155
- sig * P2Affine , sigGroupcheck bool , msg []byte ,
156
- optional ... []byte ) int { // aug
157
- var aug []byte
158
- var uaug * C.byte
159
- if len (optional ) > 0 {
160
- aug = optional [0 ]
161
- if len (aug ) > 0 {
162
- uaug = (* C .byte )(& aug [0 ])
163
- }
164
- }
165
- var umsg * C.byte
166
- if len (msg ) > 0 {
167
- umsg = (* C .byte )(& msg [0 ])
168
- }
169
-
170
- r := C .blst_pairing_chk_n_aggr_pk_in_g1 (& ctx [0 ],
171
- PK , C .bool (pkValidate ),
172
- sig , C .bool (sigGroupcheck ),
173
- umsg , C .size_t (len (msg )),
174
- uaug , C .size_t (len (aug )))
175
-
176
- return int (r )
177
- }
178
-
179
- func PairingAggregatePkInG2 (ctx Pairing , PK * P2Affine , pkValidate bool ,
180
- sig * P1Affine , sigGroupcheck bool , msg []byte ,
181
- optional ... []byte ) int { // aug
182
- var aug []byte
183
- var uaug * C.byte
184
- if len (optional ) > 0 {
185
- aug = optional [0 ]
186
- if len (aug ) > 0 {
187
- uaug = (* C .byte )(& aug [0 ])
188
- }
189
- }
190
- var umsg * C.byte
191
- if len (msg ) > 0 {
192
- umsg = (* C .byte )(& msg [0 ])
193
- }
194
-
195
- r := C .blst_pairing_chk_n_aggr_pk_in_g2 (& ctx [0 ],
196
- PK , C .bool (pkValidate ),
197
- sig , C .bool (sigGroupcheck ),
198
- umsg , C .size_t (len (msg )),
199
- uaug , C .size_t (len (aug )))
200
-
201
- return int (r )
202
- }
203
-
204
- func PairingMulNAggregatePkInG1 (ctx Pairing , PK * P1Affine , pkValidate bool ,
205
- sig * P2Affine , sigGroupcheck bool ,
206
- rand * Scalar , randBits int , msg []byte ,
207
- optional ... []byte ) int { // aug
208
- var aug []byte
209
- var uaug * C.byte
210
- if len (optional ) > 0 {
211
- aug = optional [0 ]
212
- if len (aug ) > 0 {
213
- uaug = (* C .byte )(& aug [0 ])
214
- }
215
- }
216
- var umsg * C.byte
217
- if len (msg ) > 0 {
218
- umsg = (* C .byte )(& msg [0 ])
219
- }
220
-
221
- r := C .blst_pairing_chk_n_mul_n_aggr_pk_in_g1 (& ctx [0 ],
222
- PK , C .bool (pkValidate ),
223
- sig , C .bool (sigGroupcheck ),
224
- & rand .b [0 ], C .size_t (randBits ),
225
- umsg , C .size_t (len (msg )),
226
- uaug , C .size_t (len (aug )))
227
-
228
- return int (r )
229
- }
230
-
231
- func PairingMulNAggregatePkInG2 (ctx Pairing , PK * P2Affine , pkValidate bool ,
232
- sig * P1Affine , sigGroupcheck bool ,
233
- rand * Scalar , randBits int , msg []byte ,
234
- optional ... []byte ) int { // aug
235
- var aug []byte
236
- var uaug * C.byte
237
- if len (optional ) > 0 {
238
- aug = optional [0 ]
239
- if len (aug ) > 0 {
240
- uaug = (* C .byte )(& aug [0 ])
241
- }
242
- }
243
- var umsg * C.byte
244
- if len (msg ) > 0 {
245
- umsg = (* C .byte )(& msg [0 ])
246
- }
247
-
248
- r := C .blst_pairing_chk_n_mul_n_aggr_pk_in_g2 (& ctx [0 ],
249
- PK , C .bool (pkValidate ),
250
- sig , C .bool (sigGroupcheck ),
251
- & rand .b [0 ], C .size_t (randBits ),
252
- umsg , C .size_t (len (msg )),
253
- uaug , C .size_t (len (aug )))
254
-
255
- return int (r )
256
- }
257
-
258
156
func PairingCommit (ctx Pairing ) {
259
157
C .blst_pairing_commit (& ctx [0 ])
260
158
}
@@ -276,8 +174,10 @@ func PairingRawAggregate(ctx Pairing, q *P2Affine, p *P1Affine) {
276
174
C .blst_pairing_raw_aggregate (& ctx [0 ], q , p )
277
175
}
278
176
279
- func PairingAsFp12 (ctx Pairing ) Fp12 {
280
- return * C .blst_pairing_as_fp12 (& ctx [0 ])
177
+ func PairingAsFp12 (ctx Pairing ) * Fp12 {
178
+ var pt Fp12
179
+ C .go_pairing_as_fp12 (& pt , & ctx [0 ])
180
+ return & pt
281
181
}
282
182
283
183
func Fp12One () Fp12 {
@@ -1471,6 +1371,57 @@ func (agg *P1Aggregate) aggregate(getter aggGetterP1, groupcheck bool,
1471
1371
}
1472
1372
return true
1473
1373
}
1374
+ func PairingAggregatePkInG1 (ctx Pairing , PK * P1Affine , pkValidate bool ,
1375
+ sig * P2Affine , sigGroupcheck bool , msg []byte ,
1376
+ optional ... []byte ) int { // aug
1377
+ var aug []byte
1378
+ var uaug * C.byte
1379
+ if len (optional ) > 0 {
1380
+ aug = optional [0 ]
1381
+ if len (aug ) > 0 {
1382
+ uaug = (* C .byte )(& aug [0 ])
1383
+ }
1384
+ }
1385
+ var umsg * C.byte
1386
+ if len (msg ) > 0 {
1387
+ umsg = (* C .byte )(& msg [0 ])
1388
+ }
1389
+
1390
+ r := C .blst_pairing_chk_n_aggr_pk_in_g1 (& ctx [0 ],
1391
+ PK , C .bool (pkValidate ),
1392
+ sig , C .bool (sigGroupcheck ),
1393
+ umsg , C .size_t (len (msg )),
1394
+ uaug , C .size_t (len (aug )))
1395
+
1396
+ return int (r )
1397
+ }
1398
+
1399
+ func PairingMulNAggregatePkInG1 (ctx Pairing , PK * P1Affine , pkValidate bool ,
1400
+ sig * P2Affine , sigGroupcheck bool ,
1401
+ rand * Scalar , randBits int , msg []byte ,
1402
+ optional ... []byte ) int { // aug
1403
+ var aug []byte
1404
+ var uaug * C.byte
1405
+ if len (optional ) > 0 {
1406
+ aug = optional [0 ]
1407
+ if len (aug ) > 0 {
1408
+ uaug = (* C .byte )(& aug [0 ])
1409
+ }
1410
+ }
1411
+ var umsg * C.byte
1412
+ if len (msg ) > 0 {
1413
+ umsg = (* C .byte )(& msg [0 ])
1414
+ }
1415
+
1416
+ r := C .blst_pairing_chk_n_mul_n_aggr_pk_in_g1 (& ctx [0 ],
1417
+ PK , C .bool (pkValidate ),
1418
+ sig , C .bool (sigGroupcheck ),
1419
+ & rand .b [0 ], C .size_t (randBits ),
1420
+ umsg , C .size_t (len (msg )),
1421
+ uaug , C .size_t (len (aug )))
1422
+
1423
+ return int (r )
1424
+ }
1474
1425
1475
1426
//
1476
1427
// Serialization/Deserialization.
@@ -1976,6 +1927,57 @@ func (points P1Affines) Mult(scalarsIf interface{}, nbits int) *P1 {
1976
1927
func (points P1s ) Mult (scalarsIf interface {}, nbits int ) * P1 {
1977
1928
return points .ToAffine ().Mult (scalarsIf , nbits )
1978
1929
}
1930
+ func PairingAggregatePkInG2 (ctx Pairing , PK * P2Affine , pkValidate bool ,
1931
+ sig * P1Affine , sigGroupcheck bool , msg []byte ,
1932
+ optional ... []byte ) int { // aug
1933
+ var aug []byte
1934
+ var uaug * C.byte
1935
+ if len (optional ) > 0 {
1936
+ aug = optional [0 ]
1937
+ if len (aug ) > 0 {
1938
+ uaug = (* C .byte )(& aug [0 ])
1939
+ }
1940
+ }
1941
+ var umsg * C.byte
1942
+ if len (msg ) > 0 {
1943
+ umsg = (* C .byte )(& msg [0 ])
1944
+ }
1945
+
1946
+ r := C .blst_pairing_chk_n_aggr_pk_in_g2 (& ctx [0 ],
1947
+ PK , C .bool (pkValidate ),
1948
+ sig , C .bool (sigGroupcheck ),
1949
+ umsg , C .size_t (len (msg )),
1950
+ uaug , C .size_t (len (aug )))
1951
+
1952
+ return int (r )
1953
+ }
1954
+
1955
+ func PairingMulNAggregatePkInG2 (ctx Pairing , PK * P2Affine , pkValidate bool ,
1956
+ sig * P1Affine , sigGroupcheck bool ,
1957
+ rand * Scalar , randBits int , msg []byte ,
1958
+ optional ... []byte ) int { // aug
1959
+ var aug []byte
1960
+ var uaug * C.byte
1961
+ if len (optional ) > 0 {
1962
+ aug = optional [0 ]
1963
+ if len (aug ) > 0 {
1964
+ uaug = (* C .byte )(& aug [0 ])
1965
+ }
1966
+ }
1967
+ var umsg * C.byte
1968
+ if len (msg ) > 0 {
1969
+ umsg = (* C .byte )(& msg [0 ])
1970
+ }
1971
+
1972
+ r := C .blst_pairing_chk_n_mul_n_aggr_pk_in_g2 (& ctx [0 ],
1973
+ PK , C .bool (pkValidate ),
1974
+ sig , C .bool (sigGroupcheck ),
1975
+ & rand .b [0 ], C .size_t (randBits ),
1976
+ umsg , C .size_t (len (msg )),
1977
+ uaug , C .size_t (len (aug )))
1978
+
1979
+ return int (r )
1980
+ }
1979
1981
1980
1982
//
1981
1983
// Serialization/Deserialization.
0 commit comments