@@ -1035,44 +1035,6 @@ macro_rules! sig_variant_impl {
1035
1035
Ok ( sig)
1036
1036
}
1037
1037
1038
- #[ cfg( not( feature = "std" ) ) ]
1039
- pub fn verify(
1040
- & self ,
1041
- sig_groupcheck: bool ,
1042
- msg: & [ u8 ] ,
1043
- dst: & [ u8 ] ,
1044
- aug: & [ u8 ] ,
1045
- pk: & PublicKey ,
1046
- pk_validate: bool ,
1047
- ) -> BLST_ERROR {
1048
- if sig_groupcheck {
1049
- match self . validate( false ) {
1050
- Err ( err) => return err,
1051
- _ => ( ) ,
1052
- }
1053
- }
1054
- if pk_validate {
1055
- match pk. validate( ) {
1056
- Err ( err) => return err,
1057
- _ => ( ) ,
1058
- }
1059
- }
1060
- unsafe {
1061
- $verify(
1062
- & pk. point,
1063
- & self . point,
1064
- $hash_or_encode,
1065
- msg. as_ptr( ) ,
1066
- msg. len( ) ,
1067
- dst. as_ptr( ) ,
1068
- dst. len( ) ,
1069
- aug. as_ptr( ) ,
1070
- aug. len( ) ,
1071
- )
1072
- }
1073
- }
1074
-
1075
- #[ cfg( feature = "std" ) ]
1076
1038
pub fn verify(
1077
1039
& self ,
1078
1040
sig_groupcheck: bool ,
@@ -1092,6 +1054,57 @@ macro_rules! sig_variant_impl {
1092
1054
)
1093
1055
}
1094
1056
1057
+ #[ cfg( not( feature = "std" ) ) ]
1058
+ pub fn aggregate_verify(
1059
+ & self ,
1060
+ sig_groupcheck: bool ,
1061
+ msgs: & [ & [ u8 ] ] ,
1062
+ dst: & [ u8 ] ,
1063
+ pks: & [ & PublicKey ] ,
1064
+ pks_validate: bool ,
1065
+ ) -> BLST_ERROR {
1066
+ let n_elems = pks. len( ) ;
1067
+ if n_elems == 0 || msgs. len( ) != n_elems {
1068
+ return BLST_ERROR :: BLST_VERIFY_FAIL ;
1069
+ }
1070
+
1071
+ let mut pairing = Pairing :: new( $hash_or_encode, dst) ;
1072
+
1073
+ let err = pairing. aggregate(
1074
+ & pks[ 0 ] . point,
1075
+ pks_validate,
1076
+ & self . point,
1077
+ sig_groupcheck,
1078
+ & msgs[ 0 ] ,
1079
+ & [ ] ,
1080
+ ) ;
1081
+ if err != BLST_ERROR :: BLST_SUCCESS {
1082
+ return err;
1083
+ }
1084
+
1085
+ for i in 1 ..n_elems {
1086
+ let err = pairing. aggregate(
1087
+ & pks[ i] . point,
1088
+ pks_validate,
1089
+ & unsafe { ptr:: null:: <$sig_aff>( ) . as_ref( ) } ,
1090
+ false ,
1091
+ & msgs[ i] ,
1092
+ & [ ] ,
1093
+ ) ;
1094
+ if err != BLST_ERROR :: BLST_SUCCESS {
1095
+ return err;
1096
+ }
1097
+ }
1098
+
1099
+ pairing. commit( ) ;
1100
+
1101
+ if pairing. finalverify( None ) {
1102
+ BLST_ERROR :: BLST_SUCCESS
1103
+ } else {
1104
+ BLST_ERROR :: BLST_VERIFY_FAIL
1105
+ }
1106
+ }
1107
+
1095
1108
#[ cfg( feature = "std" ) ]
1096
1109
pub fn aggregate_verify(
1097
1110
& self ,
@@ -1556,7 +1569,6 @@ macro_rules! sig_variant_impl {
1556
1569
}
1557
1570
1558
1571
#[ test]
1559
- #[ cfg( feature = "std" ) ]
1560
1572
fn test_aggregate( ) {
1561
1573
let num_msgs = 10 ;
1562
1574
let dst = b"BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_NUL_" ;
0 commit comments