Skip to content

Commit 244a3da

Browse files
committed
bindings/rust/src/lib.rs: restore aggregate_verify in no_std.
1 parent e99f7db commit 244a3da

File tree

1 file changed

+51
-39
lines changed

1 file changed

+51
-39
lines changed

bindings/rust/src/lib.rs

+51-39
Original file line numberDiff line numberDiff line change
@@ -1035,44 +1035,6 @@ macro_rules! sig_variant_impl {
10351035
Ok(sig)
10361036
}
10371037

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")]
10761038
pub fn verify(
10771039
&self,
10781040
sig_groupcheck: bool,
@@ -1092,6 +1054,57 @@ macro_rules! sig_variant_impl {
10921054
)
10931055
}
10941056

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+
10951108
#[cfg(feature = "std")]
10961109
pub fn aggregate_verify(
10971110
&self,
@@ -1556,7 +1569,6 @@ macro_rules! sig_variant_impl {
15561569
}
15571570

15581571
#[test]
1559-
#[cfg(feature = "std")]
15601572
fn test_aggregate() {
15611573
let num_msgs = 10;
15621574
let dst = b"BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_NUL_";

0 commit comments

Comments
 (0)