Skip to content

Commit

Permalink
remove length check at higher level
Browse files Browse the repository at this point in the history
  • Loading branch information
jayz22 committed Sep 18, 2024
1 parent 20646da commit a4be80f
Show file tree
Hide file tree
Showing 6 changed files with 714 additions and 741 deletions.
710 changes: 359 additions & 351 deletions soroban-env-host/observations/22/test__bls12_381__g1_msm.json

Large diffs are not rendered by default.

592 changes: 300 additions & 292 deletions soroban-env-host/observations/22/test__bls12_381__g2_msm.json

Large diffs are not rendered by default.

52 changes: 26 additions & 26 deletions soroban-env-host/observations/22/test__bls12_381__hash_to_g1.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,54 +5,54 @@
" 3 call bytes_new_from_slice(12)": "",
" 4 ret bytes_new_from_slice -> Ok(Bytes(obj#3))": "cpu:1924, mem:172, objs:-/2@aa596e87",
" 5 call bls12_381_hash_to_g1(Bytes(obj#3), Bytes(obj#1))": "",
" 6 ret bls12_381_hash_to_g1 -> Err(Error(Crypto, InvalidInput))": "cpu:2168",
" 6 ret bls12_381_hash_to_g1 -> Err(Error(Crypto, InvalidInput))": "cpu:3213988, mem:9596",
" 7 call bytes_new_from_slice(256)": "",
" 8 ret bytes_new_from_slice -> Ok(Bytes(obj#5))": "cpu:3193, mem:508, objs:-/3@3a5eafff",
" 8 ret bytes_new_from_slice -> Ok(Bytes(obj#5))": "cpu:3215013, mem:9932, objs:-/3@3a5eafff",
" 9 call bytes_new_from_slice(12)": "",
" 10 ret bytes_new_from_slice -> Ok(Bytes(obj#7))": "cpu:4156, mem:600, objs:-/4@88a2acc3",
" 10 ret bytes_new_from_slice -> Ok(Bytes(obj#7))": "cpu:3215976, mem:10024, objs:-/4@88a2acc3",
" 11 call bls12_381_hash_to_g1(Bytes(obj#7), Bytes(obj#5))": "",
" 12 ret bls12_381_hash_to_g1 -> Err(Error(Crypto, InvalidInput))": "cpu:4400",
" 12 ret bls12_381_hash_to_g1 -> Err(Error(Crypto, InvalidInput))": "cpu:6428040, mem:19448",
" 13 call bytes_new_from_slice(50)": "",
" 14 ret bytes_new_from_slice -> Ok(Bytes(obj#9))": "cpu:5373, mem:730, objs:-/5@28b6d694",
" 14 ret bytes_new_from_slice -> Ok(Bytes(obj#9))": "cpu:6429013, mem:19578, objs:-/5@28b6d694",
" 15 call bytes_new_from_slice(0)": "",
" 16 ret bytes_new_from_slice -> Ok(Bytes(obj#11))": "cpu:6334, mem:810, objs:-/6@56ac3668",
" 16 ret bytes_new_from_slice -> Ok(Bytes(obj#11))": "cpu:6429974, mem:19658, objs:-/6@56ac3668",
" 17 call bls12_381_hash_to_g1(Bytes(obj#11), Bytes(obj#9))": "",
" 18 ret bls12_381_hash_to_g1 -> Ok(Bytes(obj#13))": "cpu:3220137, mem:10410, objs:-/7@9efbbcc1",
" 18 ret bls12_381_hash_to_g1 -> Ok(Bytes(obj#13))": "cpu:9643777, mem:29258, objs:-/7@9efbbcc1",
" 19 call bytes_new_from_slice(96)": "",
" 20 ret bytes_new_from_slice -> Ok(Bytes(obj#15))": "cpu:3221122, mem:10586, objs:-/8@51896357",
" 20 ret bytes_new_from_slice -> Ok(Bytes(obj#15))": "cpu:9644762, mem:29434, objs:-/8@51896357",
" 21 call obj_cmp(Bytes(obj#13), Bytes(obj#15))": "",
" 22 ret obj_cmp -> Ok(0)": "cpu:3221422",
" 22 ret obj_cmp -> Ok(0)": "cpu:9645062",
" 23 call bytes_new_from_slice(3)": "",
" 24 ret bytes_new_from_slice -> Ok(Bytes(obj#17))": "cpu:3222383, mem:10669, objs:-/9@5ec59f82",
" 24 ret bytes_new_from_slice -> Ok(Bytes(obj#17))": "cpu:9646023, mem:29517, objs:-/9@5ec59f82",
" 25 call bls12_381_hash_to_g1(Bytes(obj#17), Bytes(obj#9))": "",
" 26 ret bls12_381_hash_to_g1 -> Ok(Bytes(obj#19))": "cpu:6436343, mem:20269, objs:-/10@e79bbbfb",
" 26 ret bls12_381_hash_to_g1 -> Ok(Bytes(obj#19))": "cpu:12859983, mem:39117, objs:-/10@e79bbbfb",
" 27 call bytes_new_from_slice(96)": "",
" 28 ret bytes_new_from_slice -> Ok(Bytes(obj#21))": "cpu:6437328, mem:20445, objs:-/11@68e099a7",
" 28 ret bytes_new_from_slice -> Ok(Bytes(obj#21))": "cpu:12860968, mem:39293, objs:-/11@68e099a7",
" 29 call obj_cmp(Bytes(obj#19), Bytes(obj#21))": "",
" 30 ret obj_cmp -> Ok(0)": "cpu:6437628",
" 30 ret obj_cmp -> Ok(0)": "cpu:12861268",
" 31 call bytes_new_from_slice(16)": "",
" 32 ret bytes_new_from_slice -> Ok(Bytes(obj#23))": "cpu:6438593, mem:20541, objs:-/12@42e4358e",
" 32 ret bytes_new_from_slice -> Ok(Bytes(obj#23))": "cpu:12862233, mem:39389, objs:-/12@42e4358e",
" 33 call bls12_381_hash_to_g1(Bytes(obj#23), Bytes(obj#9))": "",
" 34 ret bls12_381_hash_to_g1 -> Ok(Bytes(obj#25))": "cpu:9653235, mem:30141, objs:-/13@a5112be9",
" 34 ret bls12_381_hash_to_g1 -> Ok(Bytes(obj#25))": "cpu:16076875, mem:48989, objs:-/13@a5112be9",
" 35 call bytes_new_from_slice(96)": "",
" 36 ret bytes_new_from_slice -> Ok(Bytes(obj#27))": "cpu:9654220, mem:30317, objs:-/14@c90f15b6",
" 36 ret bytes_new_from_slice -> Ok(Bytes(obj#27))": "cpu:16077860, mem:49165, objs:-/14@c90f15b6",
" 37 call obj_cmp(Bytes(obj#25), Bytes(obj#27))": "",
" 38 ret obj_cmp -> Ok(0)": "cpu:9654520",
" 38 ret obj_cmp -> Ok(0)": "cpu:16078160",
" 39 call bytes_new_from_slice(133)": "",
" 40 ret bytes_new_from_slice -> Ok(Bytes(obj#29))": "cpu:9655513, mem:30530, objs:-/15@78b64378",
" 40 ret bytes_new_from_slice -> Ok(Bytes(obj#29))": "cpu:16079153, mem:49378, objs:-/15@78b64378",
" 41 call bls12_381_hash_to_g1(Bytes(obj#29), Bytes(obj#9))": "",
" 42 ret bls12_381_hash_to_g1 -> Ok(Bytes(obj#31))": "cpu:12876291, mem:40130, objs:-/16@eb416cc7",
" 42 ret bls12_381_hash_to_g1 -> Ok(Bytes(obj#31))": "cpu:19299931, mem:58978, objs:-/16@eb416cc7",
" 43 call bytes_new_from_slice(96)": "",
" 44 ret bytes_new_from_slice -> Ok(Bytes(obj#33))": "cpu:12877276, mem:40306, objs:-/17@14001e17",
" 44 ret bytes_new_from_slice -> Ok(Bytes(obj#33))": "cpu:19300916, mem:59154, objs:-/17@14001e17",
" 45 call obj_cmp(Bytes(obj#31), Bytes(obj#33))": "",
" 46 ret obj_cmp -> Ok(0)": "cpu:12877576",
" 46 ret obj_cmp -> Ok(0)": "cpu:19301216",
" 47 call bytes_new_from_slice(517)": "",
" 48 ret bytes_new_from_slice -> Ok(Bytes(obj#35))": "cpu:12878665, mem:40903, objs:-/18@3077ed4e",
" 48 ret bytes_new_from_slice -> Ok(Bytes(obj#35))": "cpu:19302305, mem:59751, objs:-/18@3077ed4e",
" 49 call bls12_381_hash_to_g1(Bytes(obj#35), Bytes(obj#9))": "",
" 50 ret bls12_381_hash_to_g1 -> Ok(Bytes(obj#37))": "cpu:16119582, mem:50503, objs:-/19@70daa102",
" 50 ret bls12_381_hash_to_g1 -> Ok(Bytes(obj#37))": "cpu:22543222, mem:69351, objs:-/19@70daa102",
" 51 call bytes_new_from_slice(96)": "",
" 52 ret bytes_new_from_slice -> Ok(Bytes(obj#39))": "cpu:16120567, mem:50679, objs:-/20@19d2fca4",
" 52 ret bytes_new_from_slice -> Ok(Bytes(obj#39))": "cpu:22544207, mem:69527, objs:-/20@19d2fca4",
" 53 call obj_cmp(Bytes(obj#37), Bytes(obj#39))": "",
" 54 ret obj_cmp -> Ok(0)": "cpu:16120867",
" 55 end": "cpu:16120867, mem:50679, prngs:-/-, objs:-/20@19d2fca4, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-"
" 54 ret obj_cmp -> Ok(0)": "cpu:22544507",
" 55 end": "cpu:22544507, mem:69527, prngs:-/-, objs:-/20@19d2fca4, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-"
}
52 changes: 26 additions & 26 deletions soroban-env-host/observations/22/test__bls12_381__hash_to_g2.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,54 +5,54 @@
" 3 call bytes_new_from_slice(12)": "",
" 4 ret bytes_new_from_slice -> Ok(Bytes(obj#3))": "cpu:1924, mem:172, objs:-/2@aa596e87",
" 5 call bls12_381_hash_to_g2(Bytes(obj#3), Bytes(obj#1))": "",
" 6 ret bls12_381_hash_to_g2 -> Err(Error(Crypto, InvalidInput))": "cpu:2168",
" 6 ret bls12_381_hash_to_g2 -> Err(Error(Crypto, InvalidInput))": "cpu:7053369, mem:6988",
" 7 call bytes_new_from_slice(256)": "",
" 8 ret bytes_new_from_slice -> Ok(Bytes(obj#5))": "cpu:3193, mem:508, objs:-/3@3a5eafff",
" 8 ret bytes_new_from_slice -> Ok(Bytes(obj#5))": "cpu:7054394, mem:7324, objs:-/3@3a5eafff",
" 9 call bytes_new_from_slice(12)": "",
" 10 ret bytes_new_from_slice -> Ok(Bytes(obj#7))": "cpu:4156, mem:600, objs:-/4@88a2acc3",
" 10 ret bytes_new_from_slice -> Ok(Bytes(obj#7))": "cpu:7055357, mem:7416, objs:-/4@88a2acc3",
" 11 call bls12_381_hash_to_g2(Bytes(obj#7), Bytes(obj#5))": "",
" 12 ret bls12_381_hash_to_g2 -> Err(Error(Crypto, InvalidInput))": "cpu:4400",
" 12 ret bls12_381_hash_to_g2 -> Err(Error(Crypto, InvalidInput))": "cpu:14106802, mem:14232",
" 13 call bytes_new_from_slice(50)": "",
" 14 ret bytes_new_from_slice -> Ok(Bytes(obj#9))": "cpu:5373, mem:730, objs:-/5@3f4657f8",
" 14 ret bytes_new_from_slice -> Ok(Bytes(obj#9))": "cpu:14107775, mem:14362, objs:-/5@3f4657f8",
" 15 call bytes_new_from_slice(0)": "",
" 16 ret bytes_new_from_slice -> Ok(Bytes(obj#11))": "cpu:6334, mem:810, objs:-/6@2e40259c",
" 16 ret bytes_new_from_slice -> Ok(Bytes(obj#11))": "cpu:14108736, mem:14442, objs:-/6@2e40259c",
" 17 call bls12_381_hash_to_g2(Bytes(obj#11), Bytes(obj#9))": "",
" 18 ret bls12_381_hash_to_g2 -> Ok(Bytes(obj#13))": "cpu:7060856, mem:7898, objs:-/7@2d317ca4",
" 18 ret bls12_381_hash_to_g2 -> Ok(Bytes(obj#13))": "cpu:21163258, mem:21530, objs:-/7@2d317ca4",
" 19 call bytes_new_from_slice(192)": "",
" 20 ret bytes_new_from_slice -> Ok(Bytes(obj#15))": "cpu:7061865, mem:8170, objs:-/8@f21b2fa0",
" 20 ret bytes_new_from_slice -> Ok(Bytes(obj#15))": "cpu:21164267, mem:21802, objs:-/8@f21b2fa0",
" 21 call obj_cmp(Bytes(obj#13), Bytes(obj#15))": "",
" 22 ret obj_cmp -> Ok(0)": "cpu:7062177",
" 22 ret obj_cmp -> Ok(0)": "cpu:21164579",
" 23 call bytes_new_from_slice(3)": "",
" 24 ret bytes_new_from_slice -> Ok(Bytes(obj#17))": "cpu:7063138, mem:8253, objs:-/9@aba7a202",
" 24 ret bytes_new_from_slice -> Ok(Bytes(obj#17))": "cpu:21165540, mem:21885, objs:-/9@aba7a202",
" 25 call bls12_381_hash_to_g2(Bytes(obj#17), Bytes(obj#9))": "",
" 26 ret bls12_381_hash_to_g2 -> Ok(Bytes(obj#19))": "cpu:14117819, mem:15341, objs:-/10@ba39dec3",
" 26 ret bls12_381_hash_to_g2 -> Ok(Bytes(obj#19))": "cpu:28220221, mem:28973, objs:-/10@ba39dec3",
" 27 call bytes_new_from_slice(192)": "",
" 28 ret bytes_new_from_slice -> Ok(Bytes(obj#21))": "cpu:14118828, mem:15613, objs:-/11@dd6c306d",
" 28 ret bytes_new_from_slice -> Ok(Bytes(obj#21))": "cpu:28221230, mem:29245, objs:-/11@dd6c306d",
" 29 call obj_cmp(Bytes(obj#19), Bytes(obj#21))": "",
" 30 ret obj_cmp -> Ok(0)": "cpu:14119140",
" 30 ret obj_cmp -> Ok(0)": "cpu:28221542",
" 31 call bytes_new_from_slice(16)": "",
" 32 ret bytes_new_from_slice -> Ok(Bytes(obj#23))": "cpu:14120105, mem:15709, objs:-/12@aab36c6f",
" 32 ret bytes_new_from_slice -> Ok(Bytes(obj#23))": "cpu:28222507, mem:29341, objs:-/12@aab36c6f",
" 33 call bls12_381_hash_to_g2(Bytes(obj#23), Bytes(obj#9))": "",
" 34 ret bls12_381_hash_to_g2 -> Ok(Bytes(obj#25))": "cpu:21175476, mem:22797, objs:-/13@860c1403",
" 34 ret bls12_381_hash_to_g2 -> Ok(Bytes(obj#25))": "cpu:35277878, mem:36429, objs:-/13@860c1403",
" 35 call bytes_new_from_slice(192)": "",
" 36 ret bytes_new_from_slice -> Ok(Bytes(obj#27))": "cpu:21176485, mem:23069, objs:-/14@ca75fa0f",
" 36 ret bytes_new_from_slice -> Ok(Bytes(obj#27))": "cpu:35278887, mem:36701, objs:-/14@ca75fa0f",
" 37 call obj_cmp(Bytes(obj#25), Bytes(obj#27))": "",
" 38 ret obj_cmp -> Ok(0)": "cpu:21176797",
" 38 ret obj_cmp -> Ok(0)": "cpu:35279199",
" 39 call bytes_new_from_slice(133)": "",
" 40 ret bytes_new_from_slice -> Ok(Bytes(obj#29))": "cpu:21177790, mem:23282, objs:-/15@55b1f41",
" 40 ret bytes_new_from_slice -> Ok(Bytes(obj#29))": "cpu:35280192, mem:36914, objs:-/15@55b1f41",
" 41 call bls12_381_hash_to_g2(Bytes(obj#29), Bytes(obj#9))": "",
" 42 ret bls12_381_hash_to_g2 -> Ok(Bytes(obj#31))": "cpu:28239374, mem:30370, objs:-/16@67cc16f5",
" 42 ret bls12_381_hash_to_g2 -> Ok(Bytes(obj#31))": "cpu:42341776, mem:44002, objs:-/16@67cc16f5",
" 43 call bytes_new_from_slice(192)": "",
" 44 ret bytes_new_from_slice -> Ok(Bytes(obj#33))": "cpu:28240383, mem:30642, objs:-/17@91beebd2",
" 44 ret bytes_new_from_slice -> Ok(Bytes(obj#33))": "cpu:42342785, mem:44274, objs:-/17@91beebd2",
" 45 call obj_cmp(Bytes(obj#31), Bytes(obj#33))": "",
" 46 ret obj_cmp -> Ok(0)": "cpu:28240695",
" 46 ret obj_cmp -> Ok(0)": "cpu:42343097",
" 47 call bytes_new_from_slice(517)": "",
" 48 ret bytes_new_from_slice -> Ok(Bytes(obj#35))": "cpu:28241784, mem:31239, objs:-/18@77fa1166",
" 48 ret bytes_new_from_slice -> Ok(Bytes(obj#35))": "cpu:42344186, mem:44871, objs:-/18@77fa1166",
" 49 call bls12_381_hash_to_g2(Bytes(obj#35), Bytes(obj#9))": "",
" 50 ret bls12_381_hash_to_g2 -> Ok(Bytes(obj#37))": "cpu:35323759, mem:38327, objs:-/19@42a8b15f",
" 50 ret bls12_381_hash_to_g2 -> Ok(Bytes(obj#37))": "cpu:49426161, mem:51959, objs:-/19@42a8b15f",
" 51 call bytes_new_from_slice(192)": "",
" 52 ret bytes_new_from_slice -> Ok(Bytes(obj#39))": "cpu:35324768, mem:38599, objs:-/20@dd93bdf4",
" 52 ret bytes_new_from_slice -> Ok(Bytes(obj#39))": "cpu:49427170, mem:52231, objs:-/20@dd93bdf4",
" 53 call obj_cmp(Bytes(obj#37), Bytes(obj#39))": "",
" 54 ret obj_cmp -> Ok(0)": "cpu:35325080",
" 55 end": "cpu:35325080, mem:38599, prngs:-/-, objs:-/20@dd93bdf4, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-"
" 54 ret obj_cmp -> Ok(0)": "cpu:49427482",
" 55 end": "cpu:49427482, mem:52231, prngs:-/-, objs:-/20@dd93bdf4, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-"
}
48 changes: 2 additions & 46 deletions soroban-env-host/src/host.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2952,20 +2952,10 @@ impl VmCallerEnv for Host {

fn bls12_381_g1_msm(
&self,
vmcaller: &mut VmCaller<Host>,
_vmcaller: &mut VmCaller<Host>,
vp: VecObject,
vs: VecObject,
) -> Result<BytesObject, HostError> {
let p_len = self.vec_len(vmcaller, vp)?;
let s_len = self.vec_len(vmcaller, vs)?;
if u32::from(p_len) != u32::from(s_len) || u32::from(p_len) == 0 {
return Err(self.err(
ScErrorType::Crypto,
ScErrorCode::InvalidInput,
"g1_msm: invalid input vector lengths",
&[p_len.to_val(), s_len.to_val()],
));
}
let points = self.checked_g1_vec_from_vecobj(vp)?;
let scalars = self.fr_vec_from_vecobj(vs)?;
let res = self.msm_internal(&points, &scalars, &ContractCostType::Bls12381G1Msm, "G1")?;
Expand All @@ -2990,18 +2980,6 @@ impl VmCallerEnv for Host {
) -> Result<BytesObject, HostError> {
let g1 = self.visit_obj(mo, |msg: &ScBytes| {
self.visit_obj(dst, |dst: &ScBytes| {
let dst_len = dst.len();
if dst_len == 0 || dst_len > 255 {
return Err(self.err(
ScErrorType::Crypto,
ScErrorCode::InvalidInput,
format!(
"hash_to_g1: invalid input dst length {dst_len}, must be > 0 and < 256"
)
.as_str(),
&[],
));
}
self.hash_to_curve(
dst.as_slice(),
msg.as_slice(),
Expand Down Expand Up @@ -3048,20 +3026,10 @@ impl VmCallerEnv for Host {

fn bls12_381_g2_msm(
&self,
vmcaller: &mut VmCaller<Host>,
_vmcaller: &mut VmCaller<Host>,
vp: VecObject,
vs: VecObject,
) -> Result<BytesObject, HostError> {
let p_len = self.vec_len(vmcaller, vp)?;
let s_len = self.vec_len(vmcaller, vs)?;
if u32::from(p_len) != u32::from(s_len) || u32::from(p_len) == 0 {
return Err(self.err(
ScErrorType::Crypto,
ScErrorCode::InvalidInput,
"g2_msm: invalid input vector lengths",
&[p_len.to_val(), s_len.to_val()],
));
}
let points = self.checked_g2_vec_from_vecobj(vp)?;
let scalars = self.fr_vec_from_vecobj(vs)?;
let res = self.msm_internal(&points, &scalars, &ContractCostType::Bls12381G2Msm, "G2")?;
Expand All @@ -3086,18 +3054,6 @@ impl VmCallerEnv for Host {
) -> Result<BytesObject, HostError> {
let g2 = self.visit_obj(msg, |msg: &ScBytes| {
self.visit_obj(dst, |dst: &ScBytes| {
let dst_len = dst.len();
if dst_len == 0 || dst_len > 255 {
return Err(self.err(
ScErrorType::Crypto,
ScErrorCode::InvalidInput,
format!(
"hash_to_g2: invalid input dst length {dst_len}, must be > 0 and < 256"
)
.as_str(),
&[],
));
}
self.hash_to_curve(
dst.as_slice(),
msg.as_slice(),
Expand Down
1 change: 1 addition & 0 deletions soroban-env-host/src/test/bls12_381.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1312,6 +1312,7 @@ fn g2_msm() -> Result<(), HostError> {
}
// 6. g2 * (1) + g2 (-1) = 0
{
host.budget_ref().reset_default()?;
let pt = sample_g2(&host, &mut rng)?;
let zero = g2_zero(&host)?;
assert_ne!(
Expand Down

0 comments on commit a4be80f

Please sign in to comment.