From ad0b7b3a9896cfeeeeee7bc3a8d5d26829a0497d Mon Sep 17 00:00:00 2001 From: Jay Geng Date: Tue, 17 Sep 2024 14:32:43 -0400 Subject: [PATCH] Add test for Fp out-of-range --- ...t__bls12_381__check_g1_is_in_subgroup.json | 90 +++++----- ...t__bls12_381__check_g2_is_in_subgroup.json | 90 +++++----- .../22/test__bls12_381__map_fp2_to_g2.json | 166 +++++++++--------- .../22/test__bls12_381__map_fp_to_g1.json | 166 +++++++++--------- soroban-env-host/src/crypto/bls12_381.rs | 8 +- soroban-env-host/src/test/bls12_381.rs | 51 ++++++ 6 files changed, 319 insertions(+), 252 deletions(-) diff --git a/soroban-env-host/observations/22/test__bls12_381__check_g1_is_in_subgroup.json b/soroban-env-host/observations/22/test__bls12_381__check_g1_is_in_subgroup.json index 6010b2502..1dd32fe3c 100644 --- a/soroban-env-host/observations/22/test__bls12_381__check_g1_is_in_subgroup.json +++ b/soroban-env-host/observations/22/test__bls12_381__check_g1_is_in_subgroup.json @@ -28,47 +28,51 @@ " 26 ret bls12_381_check_g1_is_in_subgroup -> Err(Error(Crypto, InvalidInput))": "cpu:18393", " 27 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#23))": "cpu:23007, mem:2113, objs:-/12@85f05c1a", " 28 ret bls12_381_check_g1_is_in_subgroup -> Err(Error(Crypto, InvalidInput))": "cpu:27033", - " 29 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#25))": "cpu:29340, mem:2289, objs:-/13@5aa03fef", - " 30 ret bls12_381_check_g1_is_in_subgroup -> Ok(True)": "cpu:763876", - " 31 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#27))": "cpu:766183, mem:2465, objs:-/14@38656519", - " 32 ret bls12_381_check_g1_is_in_subgroup -> Ok(True)": "cpu:1500719", - " 33 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#29))": "cpu:1503026, mem:2641, objs:-/15@c4a5e239", - " 34 ret bls12_381_check_g1_is_in_subgroup -> Ok(True)": "cpu:2237562", - " 35 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#31))": "cpu:2239869, mem:2817, objs:-/16@8ba02515", - " 36 ret bls12_381_check_g1_is_in_subgroup -> Ok(True)": "cpu:2974405", - " 37 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#33))": "cpu:2976712, mem:2993, objs:-/17@c29b4e55", - " 38 ret bls12_381_check_g1_is_in_subgroup -> Ok(True)": "cpu:3711248", - " 39 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#35))": "cpu:3713555, mem:3169, objs:-/18@1641d2ec", - " 40 ret bls12_381_check_g1_is_in_subgroup -> Ok(True)": "cpu:4448091", - " 41 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#37))": "cpu:4450398, mem:3345, objs:-/19@cc8d23ee", - " 42 ret bls12_381_check_g1_is_in_subgroup -> Ok(True)": "cpu:5184934", - " 43 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#39))": "cpu:5187241, mem:3521, objs:-/20@797d6389", - " 44 ret bls12_381_check_g1_is_in_subgroup -> Ok(True)": "cpu:5921777", - " 45 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#41))": "cpu:5924084, mem:3697, objs:-/21@1c345573", - " 46 ret bls12_381_check_g1_is_in_subgroup -> Ok(True)": "cpu:6658620", - " 47 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#43))": "cpu:6660927, mem:3873, objs:-/22@54d1ee5f", - " 48 ret bls12_381_check_g1_is_in_subgroup -> Ok(True)": "cpu:7395463", - " 49 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#45))": "cpu:7397770, mem:4049, objs:-/23@44d12712", - " 50 ret bls12_381_check_g1_is_in_subgroup -> Ok(True)": "cpu:8132306", - " 51 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#49))": "cpu:8136920, mem:4401, objs:-/25@eadeeca2", - " 52 ret bls12_381_check_g1_is_in_subgroup -> Ok(False)": "cpu:8871456", - " 53 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#53))": "cpu:8876070, mem:4753, objs:-/27@710f61db", - " 54 ret bls12_381_check_g1_is_in_subgroup -> Ok(False)": "cpu:9610606", - " 55 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#57))": "cpu:9615220, mem:5105, objs:-/29@7508f59d", - " 56 ret bls12_381_check_g1_is_in_subgroup -> Ok(False)": "cpu:10349756", - " 57 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#61))": "cpu:10354370, mem:5457, objs:-/31@8f31f30b", - " 58 ret bls12_381_check_g1_is_in_subgroup -> Ok(False)": "cpu:11088906", - " 59 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#65))": "cpu:11093520, mem:5809, objs:-/33@c198683c", - " 60 ret bls12_381_check_g1_is_in_subgroup -> Ok(False)": "cpu:11828056", - " 61 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#69))": "cpu:11832670, mem:6161, objs:-/35@324358fe", - " 62 ret bls12_381_check_g1_is_in_subgroup -> Ok(False)": "cpu:12567206", - " 63 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#73))": "cpu:12571820, mem:6513, objs:-/37@c149e38f", - " 64 ret bls12_381_check_g1_is_in_subgroup -> Ok(False)": "cpu:13306356", - " 65 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#77))": "cpu:13310970, mem:6865, objs:-/39@45c38f7f", - " 66 ret bls12_381_check_g1_is_in_subgroup -> Ok(False)": "cpu:14045506", - " 67 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#81))": "cpu:14050120, mem:7217, objs:-/41@1aa8b119", - " 68 ret bls12_381_check_g1_is_in_subgroup -> Ok(False)": "cpu:14784656", - " 69 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#85))": "cpu:14789270, mem:7569, objs:-/43@cb657d13", - " 70 ret bls12_381_check_g1_is_in_subgroup -> Ok(False)": "cpu:15523806", - " 71 end": "cpu:15523806, mem:7569, prngs:-/-, objs:-/43@cb657d13, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-" + " 29 call bytes_copy_from_slice(Bytes(obj#27), U32(0), 98)": "cpu:31647, mem:2465, objs:-/14@38656519", + " 30 ret bytes_copy_from_slice -> Ok(Bytes(obj#29))": "cpu:33181, mem:2659, objs:-/15@a4950fe8", + " 31 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#29))": "", + " 32 ret bls12_381_check_g1_is_in_subgroup -> Err(Error(Crypto, InvalidInput))": "cpu:33303", + " 33 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#31))": "cpu:35610, mem:2835, objs:-/16@500e79a7", + " 34 ret bls12_381_check_g1_is_in_subgroup -> Ok(True)": "cpu:770146", + " 35 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#33))": "cpu:772453, mem:3011, objs:-/17@8f4ffce", + " 36 ret bls12_381_check_g1_is_in_subgroup -> Ok(True)": "cpu:1506989", + " 37 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#35))": "cpu:1509296, mem:3187, objs:-/18@2f9e8c61", + " 38 ret bls12_381_check_g1_is_in_subgroup -> Ok(True)": "cpu:2243832", + " 39 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#37))": "cpu:2246139, mem:3363, objs:-/19@69985e40", + " 40 ret bls12_381_check_g1_is_in_subgroup -> Ok(True)": "cpu:2980675", + " 41 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#39))": "cpu:2982982, mem:3539, objs:-/20@d096ebd0", + " 42 ret bls12_381_check_g1_is_in_subgroup -> Ok(True)": "cpu:3717518", + " 43 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#41))": "cpu:3719825, mem:3715, objs:-/21@68ab7bd3", + " 44 ret bls12_381_check_g1_is_in_subgroup -> Ok(True)": "cpu:4454361", + " 45 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#43))": "cpu:4456668, mem:3891, objs:-/22@7e3dc994", + " 46 ret bls12_381_check_g1_is_in_subgroup -> Ok(True)": "cpu:5191204", + " 47 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#45))": "cpu:5193511, mem:4067, objs:-/23@a6f58142", + " 48 ret bls12_381_check_g1_is_in_subgroup -> Ok(True)": "cpu:5928047", + " 49 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#47))": "cpu:5930354, mem:4243, objs:-/24@25b1a124", + " 50 ret bls12_381_check_g1_is_in_subgroup -> Ok(True)": "cpu:6664890", + " 51 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#49))": "cpu:6667197, mem:4419, objs:-/25@ad6b88e5", + " 52 ret bls12_381_check_g1_is_in_subgroup -> Ok(True)": "cpu:7401733", + " 53 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#51))": "cpu:7404040, mem:4595, objs:-/26@bde93363", + " 54 ret bls12_381_check_g1_is_in_subgroup -> Ok(True)": "cpu:8138576", + " 55 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#55))": "cpu:8143190, mem:4947, objs:-/28@200189b4", + " 56 ret bls12_381_check_g1_is_in_subgroup -> Ok(False)": "cpu:8877726", + " 57 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#59))": "cpu:8882340, mem:5299, objs:-/30@9133038c", + " 58 ret bls12_381_check_g1_is_in_subgroup -> Ok(False)": "cpu:9616876", + " 59 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#63))": "cpu:9621490, mem:5651, objs:-/32@db0fc406", + " 60 ret bls12_381_check_g1_is_in_subgroup -> Ok(False)": "cpu:10356026", + " 61 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#67))": "cpu:10360640, mem:6003, objs:-/34@352a99fb", + " 62 ret bls12_381_check_g1_is_in_subgroup -> Ok(False)": "cpu:11095176", + " 63 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#71))": "cpu:11099790, mem:6355, objs:-/36@fc80803a", + " 64 ret bls12_381_check_g1_is_in_subgroup -> Ok(False)": "cpu:11834326", + " 65 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#75))": "cpu:11838940, mem:6707, objs:-/38@6e4b656f", + " 66 ret bls12_381_check_g1_is_in_subgroup -> Ok(False)": "cpu:12573476", + " 67 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#79))": "cpu:12578090, mem:7059, objs:-/40@874192c8", + " 68 ret bls12_381_check_g1_is_in_subgroup -> Ok(False)": "cpu:13312626", + " 69 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#83))": "cpu:13317240, mem:7411, objs:-/42@c24e82e7", + " 70 ret bls12_381_check_g1_is_in_subgroup -> Ok(False)": "cpu:14051776", + " 71 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#87))": "cpu:14056390, mem:7763, objs:-/44@bf8f3db5", + " 72 ret bls12_381_check_g1_is_in_subgroup -> Ok(False)": "cpu:14790926", + " 73 call bls12_381_check_g1_is_in_subgroup(Bytes(obj#91))": "cpu:14795540, mem:8115, objs:-/46@4de2e45d", + " 74 ret bls12_381_check_g1_is_in_subgroup -> Ok(False)": "cpu:15530076", + " 75 end": "cpu:15530076, mem:8115, prngs:-/-, objs:-/46@4de2e45d, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-" } \ No newline at end of file diff --git a/soroban-env-host/observations/22/test__bls12_381__check_g2_is_in_subgroup.json b/soroban-env-host/observations/22/test__bls12_381__check_g2_is_in_subgroup.json index c3d937a23..4b68ffe31 100644 --- a/soroban-env-host/observations/22/test__bls12_381__check_g2_is_in_subgroup.json +++ b/soroban-env-host/observations/22/test__bls12_381__check_g2_is_in_subgroup.json @@ -28,47 +28,51 @@ " 26 ret bls12_381_check_g2_is_in_subgroup -> Err(Error(Crypto, InvalidInput))": "cpu:25243", " 27 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#23))": "cpu:32549, mem:3265, objs:-/12@345f9e87", " 28 ret bls12_381_check_g2_is_in_subgroup -> Err(Error(Crypto, InvalidInput))": "cpu:42532", - " 29 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#25))": "cpu:46185, mem:3537, objs:-/13@376ef5fd", - " 30 ret bls12_381_check_g2_is_in_subgroup -> Ok(True)": "cpu:1113990", - " 31 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#27))": "cpu:1117643, mem:3809, objs:-/14@5bbf9054", - " 32 ret bls12_381_check_g2_is_in_subgroup -> Ok(True)": "cpu:2185448", - " 33 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#29))": "cpu:2189101, mem:4081, objs:-/15@416695be", - " 34 ret bls12_381_check_g2_is_in_subgroup -> Ok(True)": "cpu:3256906", - " 35 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#31))": "cpu:3260559, mem:4353, objs:-/16@8e09b5f", - " 36 ret bls12_381_check_g2_is_in_subgroup -> Ok(True)": "cpu:4328364", - " 37 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#33))": "cpu:4332017, mem:4625, objs:-/17@f009aea2", - " 38 ret bls12_381_check_g2_is_in_subgroup -> Ok(True)": "cpu:5399822", - " 39 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#35))": "cpu:5403475, mem:4897, objs:-/18@9ae14428", - " 40 ret bls12_381_check_g2_is_in_subgroup -> Ok(True)": "cpu:6471280", - " 41 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#37))": "cpu:6474933, mem:5169, objs:-/19@bd9dfac1", - " 42 ret bls12_381_check_g2_is_in_subgroup -> Ok(True)": "cpu:7542738", - " 43 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#39))": "cpu:7546391, mem:5441, objs:-/20@dcc1270c", - " 44 ret bls12_381_check_g2_is_in_subgroup -> Ok(True)": "cpu:8614196", - " 45 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#41))": "cpu:8617849, mem:5713, objs:-/21@a6b0db9", - " 46 ret bls12_381_check_g2_is_in_subgroup -> Ok(True)": "cpu:9685654", - " 47 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#43))": "cpu:9689307, mem:5985, objs:-/22@4a3f6fb7", - " 48 ret bls12_381_check_g2_is_in_subgroup -> Ok(True)": "cpu:10757112", - " 49 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#45))": "cpu:10760765, mem:6257, objs:-/23@d4c84a78", - " 50 ret bls12_381_check_g2_is_in_subgroup -> Ok(True)": "cpu:11828570", - " 51 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#49))": "cpu:11835876, mem:6801, objs:-/25@430fa4aa", - " 52 ret bls12_381_check_g2_is_in_subgroup -> Ok(False)": "cpu:12903681", - " 53 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#53))": "cpu:12910987, mem:7345, objs:-/27@9e31a04c", - " 54 ret bls12_381_check_g2_is_in_subgroup -> Ok(False)": "cpu:13978792", - " 55 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#57))": "cpu:13986098, mem:7889, objs:-/29@6047ea8d", - " 56 ret bls12_381_check_g2_is_in_subgroup -> Ok(False)": "cpu:15053903", - " 57 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#61))": "cpu:15061209, mem:8433, objs:-/31@3deb0a32", - " 58 ret bls12_381_check_g2_is_in_subgroup -> Ok(False)": "cpu:16129014", - " 59 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#65))": "cpu:16136320, mem:8977, objs:-/33@6c658f19", - " 60 ret bls12_381_check_g2_is_in_subgroup -> Ok(False)": "cpu:17204125", - " 61 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#69))": "cpu:17211431, mem:9521, objs:-/35@1eca5ef7", - " 62 ret bls12_381_check_g2_is_in_subgroup -> Ok(False)": "cpu:18279236", - " 63 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#73))": "cpu:18286542, mem:10065, objs:-/37@65689e4f", - " 64 ret bls12_381_check_g2_is_in_subgroup -> Ok(False)": "cpu:19354347", - " 65 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#77))": "cpu:19361653, mem:10609, objs:-/39@a28f171b", - " 66 ret bls12_381_check_g2_is_in_subgroup -> Ok(False)": "cpu:20429458", - " 67 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#81))": "cpu:20436764, mem:11153, objs:-/41@25bfb586", - " 68 ret bls12_381_check_g2_is_in_subgroup -> Ok(False)": "cpu:21504569", - " 69 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#85))": "cpu:21511875, mem:11697, objs:-/43@268e18bf", - " 70 ret bls12_381_check_g2_is_in_subgroup -> Ok(False)": "cpu:22579680", - " 71 end": "cpu:22579680, mem:11697, prngs:-/-, objs:-/43@268e18bf, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-" + " 29 call bytes_copy_from_slice(Bytes(obj#27), U32(0), 98)": "cpu:49838, mem:3809, objs:-/14@5bbf9054", + " 30 ret bytes_copy_from_slice -> Ok(Bytes(obj#29))": "cpu:50962, mem:4081, objs:-/15@59d72b9d", + " 31 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#29))": "", + " 32 ret bls12_381_check_g2_is_in_subgroup -> Err(Error(Crypto, InvalidInput))": "cpu:51084", + " 33 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#31))": "cpu:54737, mem:4353, objs:-/16@383aa473", + " 34 ret bls12_381_check_g2_is_in_subgroup -> Ok(True)": "cpu:1122542", + " 35 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#33))": "cpu:1126195, mem:4625, objs:-/17@10e08142", + " 36 ret bls12_381_check_g2_is_in_subgroup -> Ok(True)": "cpu:2194000", + " 37 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#35))": "cpu:2197653, mem:4897, objs:-/18@257c5aed", + " 38 ret bls12_381_check_g2_is_in_subgroup -> Ok(True)": "cpu:3265458", + " 39 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#37))": "cpu:3269111, mem:5169, objs:-/19@bd25c348", + " 40 ret bls12_381_check_g2_is_in_subgroup -> Ok(True)": "cpu:4336916", + " 41 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#39))": "cpu:4340569, mem:5441, objs:-/20@aac1ed33", + " 42 ret bls12_381_check_g2_is_in_subgroup -> Ok(True)": "cpu:5408374", + " 43 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#41))": "cpu:5412027, mem:5713, objs:-/21@485881be", + " 44 ret bls12_381_check_g2_is_in_subgroup -> Ok(True)": "cpu:6479832", + " 45 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#43))": "cpu:6483485, mem:5985, objs:-/22@f6c251d8", + " 46 ret bls12_381_check_g2_is_in_subgroup -> Ok(True)": "cpu:7551290", + " 47 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#45))": "cpu:7554943, mem:6257, objs:-/23@28f2277a", + " 48 ret bls12_381_check_g2_is_in_subgroup -> Ok(True)": "cpu:8622748", + " 49 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#47))": "cpu:8626401, mem:6529, objs:-/24@b60b70c0", + " 50 ret bls12_381_check_g2_is_in_subgroup -> Ok(True)": "cpu:9694206", + " 51 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#49))": "cpu:9697859, mem:6801, objs:-/25@b1831620", + " 52 ret bls12_381_check_g2_is_in_subgroup -> Ok(True)": "cpu:10765664", + " 53 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#51))": "cpu:10769317, mem:7073, objs:-/26@12a73c61", + " 54 ret bls12_381_check_g2_is_in_subgroup -> Ok(True)": "cpu:11837122", + " 55 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#55))": "cpu:11844428, mem:7617, objs:-/28@b222759", + " 56 ret bls12_381_check_g2_is_in_subgroup -> Ok(False)": "cpu:12912233", + " 57 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#59))": "cpu:12919539, mem:8161, objs:-/30@d53d3525", + " 58 ret bls12_381_check_g2_is_in_subgroup -> Ok(False)": "cpu:13987344", + " 59 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#63))": "cpu:13994650, mem:8705, objs:-/32@f338c504", + " 60 ret bls12_381_check_g2_is_in_subgroup -> Ok(False)": "cpu:15062455", + " 61 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#67))": "cpu:15069761, mem:9249, objs:-/34@355470cc", + " 62 ret bls12_381_check_g2_is_in_subgroup -> Ok(False)": "cpu:16137566", + " 63 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#71))": "cpu:16144872, mem:9793, objs:-/36@c13ff257", + " 64 ret bls12_381_check_g2_is_in_subgroup -> Ok(False)": "cpu:17212677", + " 65 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#75))": "cpu:17219983, mem:10337, objs:-/38@89aa31a3", + " 66 ret bls12_381_check_g2_is_in_subgroup -> Ok(False)": "cpu:18287788", + " 67 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#79))": "cpu:18295094, mem:10881, objs:-/40@6af1f9a8", + " 68 ret bls12_381_check_g2_is_in_subgroup -> Ok(False)": "cpu:19362899", + " 69 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#83))": "cpu:19370205, mem:11425, objs:-/42@563d3e28", + " 70 ret bls12_381_check_g2_is_in_subgroup -> Ok(False)": "cpu:20438010", + " 71 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#87))": "cpu:20445316, mem:11969, objs:-/44@3997f663", + " 72 ret bls12_381_check_g2_is_in_subgroup -> Ok(False)": "cpu:21513121", + " 73 call bls12_381_check_g2_is_in_subgroup(Bytes(obj#91))": "cpu:21520427, mem:12513, objs:-/46@ca7e6ad6", + " 74 ret bls12_381_check_g2_is_in_subgroup -> Ok(False)": "cpu:22588232", + " 75 end": "cpu:22588232, mem:12513, prngs:-/-, objs:-/46@ca7e6ad6, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-" } \ No newline at end of file diff --git a/soroban-env-host/observations/22/test__bls12_381__map_fp2_to_g2.json b/soroban-env-host/observations/22/test__bls12_381__map_fp2_to_g2.json index 858be58a0..36bf7e5b6 100644 --- a/soroban-env-host/observations/22/test__bls12_381__map_fp2_to_g2.json +++ b/soroban-env-host/observations/22/test__bls12_381__map_fp2_to_g2.json @@ -8,85 +8,89 @@ " 6 ret bytes_new_from_slice -> Ok(Bytes(obj#3))": "cpu:5395, mem:352, objs:-/2@b8cae411", " 7 call bls12_381_map_fp2_to_g2(Bytes(obj#3))": "", " 8 ret bls12_381_map_fp2_to_g2 -> Err(Error(Crypto, InvalidInput))": "cpu:5517", - " 9 call bytes_new_from_slice(192)": "cpu:0, mem:0", - " 10 ret bytes_new_from_slice -> Ok(Bytes(obj#5))": "cpu:1009, mem:272, objs:-/3@84cbabcf", - " 11 call bytes_new_from_slice(96)": "", - " 12 ret bytes_new_from_slice -> Ok(Bytes(obj#7))": "cpu:1994, mem:448, objs:-/4@de01dc4a", - " 13 call bls12_381_map_fp2_to_g2(Bytes(obj#7))": "", - " 14 ret bls12_381_map_fp2_to_g2 -> Ok(Bytes(obj#9))": "cpu:2428056, mem:4064, objs:-/5@c92c817b", - " 15 call obj_cmp(Bytes(obj#9), Bytes(obj#5))": "", - " 16 ret obj_cmp -> Ok(0)": "cpu:2428368", - " 17 call bytes_new_from_slice(192)": "", - " 18 ret bytes_new_from_slice -> Ok(Bytes(obj#11))": "cpu:2429377, mem:4336, objs:-/6@aab5467f", - " 19 call bytes_new_from_slice(96)": "", - " 20 ret bytes_new_from_slice -> Ok(Bytes(obj#13))": "cpu:2430362, mem:4512, objs:-/7@45b33a3f", - " 21 call bls12_381_map_fp2_to_g2(Bytes(obj#13))": "", - " 22 ret bls12_381_map_fp2_to_g2 -> Ok(Bytes(obj#15))": "cpu:4856424, mem:8128, objs:-/8@dc781659", - " 23 call obj_cmp(Bytes(obj#15), Bytes(obj#11))": "", - " 24 ret obj_cmp -> Ok(0)": "cpu:4856736", - " 25 call bytes_new_from_slice(192)": "", - " 26 ret bytes_new_from_slice -> Ok(Bytes(obj#17))": "cpu:4857745, mem:8400, objs:-/9@4596be6d", - " 27 call bytes_new_from_slice(96)": "", - " 28 ret bytes_new_from_slice -> Ok(Bytes(obj#19))": "cpu:4858730, mem:8576, objs:-/10@465cd103", - " 29 call bls12_381_map_fp2_to_g2(Bytes(obj#19))": "", - " 30 ret bls12_381_map_fp2_to_g2 -> Ok(Bytes(obj#21))": "cpu:7284792, mem:12192, objs:-/11@3f31c853", - " 31 call obj_cmp(Bytes(obj#21), Bytes(obj#17))": "", - " 32 ret obj_cmp -> Ok(0)": "cpu:7285104", - " 33 call bytes_new_from_slice(192)": "", - " 34 ret bytes_new_from_slice -> Ok(Bytes(obj#23))": "cpu:7286113, mem:12464, objs:-/12@9e7dcbde", - " 35 call bytes_new_from_slice(96)": "", - " 36 ret bytes_new_from_slice -> Ok(Bytes(obj#25))": "cpu:7287098, mem:12640, objs:-/13@e33cf4c0", - " 37 call bls12_381_map_fp2_to_g2(Bytes(obj#25))": "", - " 38 ret bls12_381_map_fp2_to_g2 -> Ok(Bytes(obj#27))": "cpu:9713160, mem:16256, objs:-/14@4d072f7e", - " 39 call obj_cmp(Bytes(obj#27), Bytes(obj#23))": "", - " 40 ret obj_cmp -> Ok(0)": "cpu:9713472", - " 41 call bytes_new_from_slice(192)": "", - " 42 ret bytes_new_from_slice -> Ok(Bytes(obj#29))": "cpu:9714481, mem:16528, objs:-/15@b619650", - " 43 call bytes_new_from_slice(96)": "", - " 44 ret bytes_new_from_slice -> Ok(Bytes(obj#31))": "cpu:9715466, mem:16704, objs:-/16@3251749c", - " 45 call bls12_381_map_fp2_to_g2(Bytes(obj#31))": "", - " 46 ret bls12_381_map_fp2_to_g2 -> Ok(Bytes(obj#33))": "cpu:12141528, mem:20320, objs:-/17@4d90808a", - " 47 call obj_cmp(Bytes(obj#33), Bytes(obj#29))": "", - " 48 ret obj_cmp -> Ok(0)": "cpu:12141840", - " 49 call bytes_new_from_slice(192)": "", - " 50 ret bytes_new_from_slice -> Ok(Bytes(obj#35))": "cpu:12142849, mem:20592, objs:-/18@a14b9884", - " 51 call bytes_new_from_slice(96)": "", - " 52 ret bytes_new_from_slice -> Ok(Bytes(obj#37))": "cpu:12143834, mem:20768, objs:-/19@2081cb8", - " 53 call bls12_381_map_fp2_to_g2(Bytes(obj#37))": "", - " 54 ret bls12_381_map_fp2_to_g2 -> Ok(Bytes(obj#39))": "cpu:14569896, mem:24384, objs:-/20@ded0041a", - " 55 call obj_cmp(Bytes(obj#39), Bytes(obj#35))": "", - " 56 ret obj_cmp -> Ok(0)": "cpu:14570208", - " 57 call bytes_new_from_slice(192)": "", - " 58 ret bytes_new_from_slice -> Ok(Bytes(obj#41))": "cpu:14571217, mem:24656, objs:-/21@efcbe3c4", - " 59 call bytes_new_from_slice(96)": "", - " 60 ret bytes_new_from_slice -> Ok(Bytes(obj#43))": "cpu:14572202, mem:24832, objs:-/22@a0f062d2", - " 61 call bls12_381_map_fp2_to_g2(Bytes(obj#43))": "", - " 62 ret bls12_381_map_fp2_to_g2 -> Ok(Bytes(obj#45))": "cpu:16998264, mem:28448, objs:-/23@b60831ac", - " 63 call obj_cmp(Bytes(obj#45), Bytes(obj#41))": "", - " 64 ret obj_cmp -> Ok(0)": "cpu:16998576", - " 65 call bytes_new_from_slice(192)": "", - " 66 ret bytes_new_from_slice -> Ok(Bytes(obj#47))": "cpu:16999585, mem:28720, objs:-/24@1a0db4f9", - " 67 call bytes_new_from_slice(96)": "", - " 68 ret bytes_new_from_slice -> Ok(Bytes(obj#49))": "cpu:17000570, mem:28896, objs:-/25@23f3cdc6", - " 69 call bls12_381_map_fp2_to_g2(Bytes(obj#49))": "", - " 70 ret bls12_381_map_fp2_to_g2 -> Ok(Bytes(obj#51))": "cpu:19426632, mem:32512, objs:-/26@1efe0c89", - " 71 call obj_cmp(Bytes(obj#51), Bytes(obj#47))": "", - " 72 ret obj_cmp -> Ok(0)": "cpu:19426944", - " 73 call bytes_new_from_slice(192)": "", - " 74 ret bytes_new_from_slice -> Ok(Bytes(obj#53))": "cpu:19427953, mem:32784, objs:-/27@29589445", - " 75 call bytes_new_from_slice(96)": "", - " 76 ret bytes_new_from_slice -> Ok(Bytes(obj#55))": "cpu:19428938, mem:32960, objs:-/28@3f0c9a15", - " 77 call bls12_381_map_fp2_to_g2(Bytes(obj#55))": "", - " 78 ret bls12_381_map_fp2_to_g2 -> Ok(Bytes(obj#57))": "cpu:21855000, mem:36576, objs:-/29@51b6b995", - " 79 call obj_cmp(Bytes(obj#57), Bytes(obj#53))": "", - " 80 ret obj_cmp -> Ok(0)": "cpu:21855312", - " 81 call bytes_new_from_slice(192)": "", - " 82 ret bytes_new_from_slice -> Ok(Bytes(obj#59))": "cpu:21856321, mem:36848, objs:-/30@9e658476", - " 83 call bytes_new_from_slice(96)": "", - " 84 ret bytes_new_from_slice -> Ok(Bytes(obj#61))": "cpu:21857306, mem:37024, objs:-/31@5b51107", - " 85 call bls12_381_map_fp2_to_g2(Bytes(obj#61))": "", - " 86 ret bls12_381_map_fp2_to_g2 -> Ok(Bytes(obj#63))": "cpu:24283368, mem:40640, objs:-/32@8da36b92", - " 87 call obj_cmp(Bytes(obj#63), Bytes(obj#59))": "", - " 88 ret obj_cmp -> Ok(0)": "cpu:24283680", - " 89 end": "cpu:24283680, mem:40640, prngs:-/-, objs:-/32@8da36b92, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-" + " 9 call bytes_new_from_slice(48)": "", + " 10 ret bytes_new_from_slice -> Ok(Bytes(obj#5))": "cpu:6490, mem:480, objs:-/3@7baf5e49", + " 11 call bls12_381_map_fp2_to_g2(Bytes(obj#5))": "", + " 12 ret bls12_381_map_fp2_to_g2 -> Err(Error(Crypto, InvalidInput))": "cpu:6612", + " 13 call bytes_new_from_slice(192)": "cpu:0, mem:0", + " 14 ret bytes_new_from_slice -> Ok(Bytes(obj#7))": "cpu:1009, mem:272, objs:-/4@b4677fca", + " 15 call bytes_new_from_slice(96)": "", + " 16 ret bytes_new_from_slice -> Ok(Bytes(obj#9))": "cpu:1994, mem:448, objs:-/5@51dc820f", + " 17 call bls12_381_map_fp2_to_g2(Bytes(obj#9))": "", + " 18 ret bls12_381_map_fp2_to_g2 -> Ok(Bytes(obj#11))": "cpu:2428056, mem:4064, objs:-/6@79529ee5", + " 19 call obj_cmp(Bytes(obj#11), Bytes(obj#7))": "", + " 20 ret obj_cmp -> Ok(0)": "cpu:2428368", + " 21 call bytes_new_from_slice(192)": "", + " 22 ret bytes_new_from_slice -> Ok(Bytes(obj#13))": "cpu:2429377, mem:4336, objs:-/7@63a0b212", + " 23 call bytes_new_from_slice(96)": "", + " 24 ret bytes_new_from_slice -> Ok(Bytes(obj#15))": "cpu:2430362, mem:4512, objs:-/8@cc13af37", + " 25 call bls12_381_map_fp2_to_g2(Bytes(obj#15))": "", + " 26 ret bls12_381_map_fp2_to_g2 -> Ok(Bytes(obj#17))": "cpu:4856424, mem:8128, objs:-/9@5b6d0aa0", + " 27 call obj_cmp(Bytes(obj#17), Bytes(obj#13))": "", + " 28 ret obj_cmp -> Ok(0)": "cpu:4856736", + " 29 call bytes_new_from_slice(192)": "", + " 30 ret bytes_new_from_slice -> Ok(Bytes(obj#19))": "cpu:4857745, mem:8400, objs:-/10@82ed820f", + " 31 call bytes_new_from_slice(96)": "", + " 32 ret bytes_new_from_slice -> Ok(Bytes(obj#21))": "cpu:4858730, mem:8576, objs:-/11@b92a252b", + " 33 call bls12_381_map_fp2_to_g2(Bytes(obj#21))": "", + " 34 ret bls12_381_map_fp2_to_g2 -> Ok(Bytes(obj#23))": "cpu:7284792, mem:12192, objs:-/12@ece25005", + " 35 call obj_cmp(Bytes(obj#23), Bytes(obj#19))": "", + " 36 ret obj_cmp -> Ok(0)": "cpu:7285104", + " 37 call bytes_new_from_slice(192)": "", + " 38 ret bytes_new_from_slice -> Ok(Bytes(obj#25))": "cpu:7286113, mem:12464, objs:-/13@bc2389f1", + " 39 call bytes_new_from_slice(96)": "", + " 40 ret bytes_new_from_slice -> Ok(Bytes(obj#27))": "cpu:7287098, mem:12640, objs:-/14@c5da4223", + " 41 call bls12_381_map_fp2_to_g2(Bytes(obj#27))": "", + " 42 ret bls12_381_map_fp2_to_g2 -> Ok(Bytes(obj#29))": "cpu:9713160, mem:16256, objs:-/15@fd857683", + " 43 call obj_cmp(Bytes(obj#29), Bytes(obj#25))": "", + " 44 ret obj_cmp -> Ok(0)": "cpu:9713472", + " 45 call bytes_new_from_slice(192)": "", + " 46 ret bytes_new_from_slice -> Ok(Bytes(obj#31))": "cpu:9714481, mem:16528, objs:-/16@6fb0f894", + " 47 call bytes_new_from_slice(96)": "", + " 48 ret bytes_new_from_slice -> Ok(Bytes(obj#33))": "cpu:9715466, mem:16704, objs:-/17@2a325ae4", + " 49 call bls12_381_map_fp2_to_g2(Bytes(obj#33))": "", + " 50 ret bls12_381_map_fp2_to_g2 -> Ok(Bytes(obj#35))": "cpu:12141528, mem:20320, objs:-/18@7c6c7549", + " 51 call obj_cmp(Bytes(obj#35), Bytes(obj#31))": "", + " 52 ret obj_cmp -> Ok(0)": "cpu:12141840", + " 53 call bytes_new_from_slice(192)": "", + " 54 ret bytes_new_from_slice -> Ok(Bytes(obj#37))": "cpu:12142849, mem:20592, objs:-/19@1fce6840", + " 55 call bytes_new_from_slice(96)": "", + " 56 ret bytes_new_from_slice -> Ok(Bytes(obj#39))": "cpu:12143834, mem:20768, objs:-/20@be9137c1", + " 57 call bls12_381_map_fp2_to_g2(Bytes(obj#39))": "", + " 58 ret bls12_381_map_fp2_to_g2 -> Ok(Bytes(obj#41))": "cpu:14569896, mem:24384, objs:-/21@9c7995a", + " 59 call obj_cmp(Bytes(obj#41), Bytes(obj#37))": "", + " 60 ret obj_cmp -> Ok(0)": "cpu:14570208", + " 61 call bytes_new_from_slice(192)": "", + " 62 ret bytes_new_from_slice -> Ok(Bytes(obj#43))": "cpu:14571217, mem:24656, objs:-/22@78f3899d", + " 63 call bytes_new_from_slice(96)": "", + " 64 ret bytes_new_from_slice -> Ok(Bytes(obj#45))": "cpu:14572202, mem:24832, objs:-/23@e72573e0", + " 65 call bls12_381_map_fp2_to_g2(Bytes(obj#45))": "", + " 66 ret bls12_381_map_fp2_to_g2 -> Ok(Bytes(obj#47))": "cpu:16998264, mem:28448, objs:-/24@f38a60c9", + " 67 call obj_cmp(Bytes(obj#47), Bytes(obj#43))": "", + " 68 ret obj_cmp -> Ok(0)": "cpu:16998576", + " 69 call bytes_new_from_slice(192)": "", + " 70 ret bytes_new_from_slice -> Ok(Bytes(obj#49))": "cpu:16999585, mem:28720, objs:-/25@14f7400d", + " 71 call bytes_new_from_slice(96)": "", + " 72 ret bytes_new_from_slice -> Ok(Bytes(obj#51))": "cpu:17000570, mem:28896, objs:-/26@2203764c", + " 73 call bls12_381_map_fp2_to_g2(Bytes(obj#51))": "", + " 74 ret bls12_381_map_fp2_to_g2 -> Ok(Bytes(obj#53))": "cpu:19426632, mem:32512, objs:-/27@d5d727e5", + " 75 call obj_cmp(Bytes(obj#53), Bytes(obj#49))": "", + " 76 ret obj_cmp -> Ok(0)": "cpu:19426944", + " 77 call bytes_new_from_slice(192)": "", + " 78 ret bytes_new_from_slice -> Ok(Bytes(obj#55))": "cpu:19427953, mem:32784, objs:-/28@ef906b0", + " 79 call bytes_new_from_slice(96)": "", + " 80 ret bytes_new_from_slice -> Ok(Bytes(obj#57))": "cpu:19428938, mem:32960, objs:-/29@851a81a4", + " 81 call bls12_381_map_fp2_to_g2(Bytes(obj#57))": "", + " 82 ret bls12_381_map_fp2_to_g2 -> Ok(Bytes(obj#59))": "cpu:21855000, mem:36576, objs:-/30@18e42593", + " 83 call obj_cmp(Bytes(obj#59), Bytes(obj#55))": "", + " 84 ret obj_cmp -> Ok(0)": "cpu:21855312", + " 85 call bytes_new_from_slice(192)": "", + " 86 ret bytes_new_from_slice -> Ok(Bytes(obj#61))": "cpu:21856321, mem:36848, objs:-/31@3b459b2e", + " 87 call bytes_new_from_slice(96)": "", + " 88 ret bytes_new_from_slice -> Ok(Bytes(obj#63))": "cpu:21857306, mem:37024, objs:-/32@9d03f4e3", + " 89 call bls12_381_map_fp2_to_g2(Bytes(obj#63))": "", + " 90 ret bls12_381_map_fp2_to_g2 -> Ok(Bytes(obj#65))": "cpu:24283368, mem:40640, objs:-/33@102db400", + " 91 call obj_cmp(Bytes(obj#65), Bytes(obj#61))": "", + " 92 ret obj_cmp -> Ok(0)": "cpu:24283680", + " 93 end": "cpu:24283680, mem:40640, prngs:-/-, objs:-/33@102db400, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-" } \ No newline at end of file diff --git a/soroban-env-host/observations/22/test__bls12_381__map_fp_to_g1.json b/soroban-env-host/observations/22/test__bls12_381__map_fp_to_g1.json index 69440959a..5fd970a29 100644 --- a/soroban-env-host/observations/22/test__bls12_381__map_fp_to_g1.json +++ b/soroban-env-host/observations/22/test__bls12_381__map_fp_to_g1.json @@ -8,85 +8,89 @@ " 6 ret bytes_new_from_slice -> Ok(Bytes(obj#3))": "cpu:4049, mem:256, objs:-/2@7385e39e", " 7 call bls12_381_map_fp_to_g1(Bytes(obj#3))": "", " 8 ret bls12_381_map_fp_to_g1 -> Err(Error(Crypto, InvalidInput))": "cpu:4171", - " 9 call bytes_new_from_slice(96)": "cpu:0, mem:0", - " 10 ret bytes_new_from_slice -> Ok(Bytes(obj#5))": "cpu:985, mem:176, objs:-/3@cdeaaaab", - " 11 call bytes_new_from_slice(48)": "", - " 12 ret bytes_new_from_slice -> Ok(Bytes(obj#7))": "cpu:1958, mem:304, objs:-/4@2e0f3b17", - " 13 call bls12_381_map_fp_to_g1(Bytes(obj#7))": "", - " 14 ret bls12_381_map_fp_to_g1 -> Ok(Bytes(obj#9))": "cpu:1547035, mem:6032, objs:-/5@29aed6cc", - " 15 call obj_cmp(Bytes(obj#9), Bytes(obj#5))": "", - " 16 ret obj_cmp -> Ok(0)": "cpu:1547335", - " 17 call bytes_new_from_slice(96)": "", - " 18 ret bytes_new_from_slice -> Ok(Bytes(obj#11))": "cpu:1548320, mem:6208, objs:-/6@821b5c9e", - " 19 call bytes_new_from_slice(48)": "", - " 20 ret bytes_new_from_slice -> Ok(Bytes(obj#13))": "cpu:1549293, mem:6336, objs:-/7@71870e60", - " 21 call bls12_381_map_fp_to_g1(Bytes(obj#13))": "", - " 22 ret bls12_381_map_fp_to_g1 -> Ok(Bytes(obj#15))": "cpu:3094370, mem:12064, objs:-/8@fd3d495a", - " 23 call obj_cmp(Bytes(obj#15), Bytes(obj#11))": "", - " 24 ret obj_cmp -> Ok(0)": "cpu:3094670", - " 25 call bytes_new_from_slice(96)": "", - " 26 ret bytes_new_from_slice -> Ok(Bytes(obj#17))": "cpu:3095655, mem:12240, objs:-/9@e01f72c2", - " 27 call bytes_new_from_slice(48)": "", - " 28 ret bytes_new_from_slice -> Ok(Bytes(obj#19))": "cpu:3096628, mem:12368, objs:-/10@c37ded65", - " 29 call bls12_381_map_fp_to_g1(Bytes(obj#19))": "", - " 30 ret bls12_381_map_fp_to_g1 -> Ok(Bytes(obj#21))": "cpu:4641705, mem:18096, objs:-/11@74ec3770", - " 31 call obj_cmp(Bytes(obj#21), Bytes(obj#17))": "", - " 32 ret obj_cmp -> Ok(0)": "cpu:4642005", - " 33 call bytes_new_from_slice(96)": "", - " 34 ret bytes_new_from_slice -> Ok(Bytes(obj#23))": "cpu:4642990, mem:18272, objs:-/12@bc8549c8", - " 35 call bytes_new_from_slice(48)": "", - " 36 ret bytes_new_from_slice -> Ok(Bytes(obj#25))": "cpu:4643963, mem:18400, objs:-/13@79cc3259", - " 37 call bls12_381_map_fp_to_g1(Bytes(obj#25))": "", - " 38 ret bls12_381_map_fp_to_g1 -> Ok(Bytes(obj#27))": "cpu:6189040, mem:24128, objs:-/14@97e7f723", - " 39 call obj_cmp(Bytes(obj#27), Bytes(obj#23))": "", - " 40 ret obj_cmp -> Ok(0)": "cpu:6189340", - " 41 call bytes_new_from_slice(96)": "", - " 42 ret bytes_new_from_slice -> Ok(Bytes(obj#29))": "cpu:6190325, mem:24304, objs:-/15@3746f16a", - " 43 call bytes_new_from_slice(48)": "", - " 44 ret bytes_new_from_slice -> Ok(Bytes(obj#31))": "cpu:6191298, mem:24432, objs:-/16@114ed45b", - " 45 call bls12_381_map_fp_to_g1(Bytes(obj#31))": "", - " 46 ret bls12_381_map_fp_to_g1 -> Ok(Bytes(obj#33))": "cpu:7736375, mem:30160, objs:-/17@448a6b86", - " 47 call obj_cmp(Bytes(obj#33), Bytes(obj#29))": "", - " 48 ret obj_cmp -> Ok(0)": "cpu:7736675", - " 49 call bytes_new_from_slice(96)": "", - " 50 ret bytes_new_from_slice -> Ok(Bytes(obj#35))": "cpu:7737660, mem:30336, objs:-/18@1b5f524f", - " 51 call bytes_new_from_slice(48)": "", - " 52 ret bytes_new_from_slice -> Ok(Bytes(obj#37))": "cpu:7738633, mem:30464, objs:-/19@fe79161", - " 53 call bls12_381_map_fp_to_g1(Bytes(obj#37))": "", - " 54 ret bls12_381_map_fp_to_g1 -> Ok(Bytes(obj#39))": "cpu:9283710, mem:36192, objs:-/20@af30d655", - " 55 call obj_cmp(Bytes(obj#39), Bytes(obj#35))": "", - " 56 ret obj_cmp -> Ok(0)": "cpu:9284010", - " 57 call bytes_new_from_slice(96)": "", - " 58 ret bytes_new_from_slice -> Ok(Bytes(obj#41))": "cpu:9284995, mem:36368, objs:-/21@8f40a475", - " 59 call bytes_new_from_slice(48)": "", - " 60 ret bytes_new_from_slice -> Ok(Bytes(obj#43))": "cpu:9285968, mem:36496, objs:-/22@37d82db9", - " 61 call bls12_381_map_fp_to_g1(Bytes(obj#43))": "", - " 62 ret bls12_381_map_fp_to_g1 -> Ok(Bytes(obj#45))": "cpu:10831045, mem:42224, objs:-/23@de5cb3dc", - " 63 call obj_cmp(Bytes(obj#45), Bytes(obj#41))": "", - " 64 ret obj_cmp -> Ok(0)": "cpu:10831345", - " 65 call bytes_new_from_slice(96)": "", - " 66 ret bytes_new_from_slice -> Ok(Bytes(obj#47))": "cpu:10832330, mem:42400, objs:-/24@613b7c76", - " 67 call bytes_new_from_slice(48)": "", - " 68 ret bytes_new_from_slice -> Ok(Bytes(obj#49))": "cpu:10833303, mem:42528, objs:-/25@fac3e5c0", - " 69 call bls12_381_map_fp_to_g1(Bytes(obj#49))": "", - " 70 ret bls12_381_map_fp_to_g1 -> Ok(Bytes(obj#51))": "cpu:12378380, mem:48256, objs:-/26@e7334e35", - " 71 call obj_cmp(Bytes(obj#51), Bytes(obj#47))": "", - " 72 ret obj_cmp -> Ok(0)": "cpu:12378680", - " 73 call bytes_new_from_slice(96)": "", - " 74 ret bytes_new_from_slice -> Ok(Bytes(obj#53))": "cpu:12379665, mem:48432, objs:-/27@a70654db", - " 75 call bytes_new_from_slice(48)": "", - " 76 ret bytes_new_from_slice -> Ok(Bytes(obj#55))": "cpu:12380638, mem:48560, objs:-/28@4f2c81bb", - " 77 call bls12_381_map_fp_to_g1(Bytes(obj#55))": "", - " 78 ret bls12_381_map_fp_to_g1 -> Ok(Bytes(obj#57))": "cpu:13925715, mem:54288, objs:-/29@6049ec79", - " 79 call obj_cmp(Bytes(obj#57), Bytes(obj#53))": "", - " 80 ret obj_cmp -> Ok(0)": "cpu:13926015", - " 81 call bytes_new_from_slice(96)": "", - " 82 ret bytes_new_from_slice -> Ok(Bytes(obj#59))": "cpu:13927000, mem:54464, objs:-/30@6a6fdc1d", - " 83 call bytes_new_from_slice(48)": "", - " 84 ret bytes_new_from_slice -> Ok(Bytes(obj#61))": "cpu:13927973, mem:54592, objs:-/31@c8870a0b", - " 85 call bls12_381_map_fp_to_g1(Bytes(obj#61))": "", - " 86 ret bls12_381_map_fp_to_g1 -> Ok(Bytes(obj#63))": "cpu:15473050, mem:60320, objs:-/32@15761a", - " 87 call obj_cmp(Bytes(obj#63), Bytes(obj#59))": "", - " 88 ret obj_cmp -> Ok(0)": "cpu:15473350", - " 89 end": "cpu:15473350, mem:60320, prngs:-/-, objs:-/32@15761a, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-" + " 9 call bytes_new_from_slice(48)": "", + " 10 ret bytes_new_from_slice -> Ok(Bytes(obj#5))": "cpu:5144, mem:384, objs:-/3@80e43591", + " 11 call bls12_381_map_fp_to_g1(Bytes(obj#5))": "", + " 12 ret bls12_381_map_fp_to_g1 -> Err(Error(Crypto, InvalidInput))": "cpu:6299", + " 13 call bytes_new_from_slice(96)": "cpu:0, mem:0", + " 14 ret bytes_new_from_slice -> Ok(Bytes(obj#7))": "cpu:985, mem:176, objs:-/4@6bc2aad1", + " 15 call bytes_new_from_slice(48)": "", + " 16 ret bytes_new_from_slice -> Ok(Bytes(obj#9))": "cpu:1958, mem:304, objs:-/5@5c1201b8", + " 17 call bls12_381_map_fp_to_g1(Bytes(obj#9))": "", + " 18 ret bls12_381_map_fp_to_g1 -> Ok(Bytes(obj#11))": "cpu:1547035, mem:6032, objs:-/6@efa8720b", + " 19 call obj_cmp(Bytes(obj#11), Bytes(obj#7))": "", + " 20 ret obj_cmp -> Ok(0)": "cpu:1547335", + " 21 call bytes_new_from_slice(96)": "", + " 22 ret bytes_new_from_slice -> Ok(Bytes(obj#13))": "cpu:1548320, mem:6208, objs:-/7@a344b20f", + " 23 call bytes_new_from_slice(48)": "", + " 24 ret bytes_new_from_slice -> Ok(Bytes(obj#15))": "cpu:1549293, mem:6336, objs:-/8@cebe8368", + " 25 call bls12_381_map_fp_to_g1(Bytes(obj#15))": "", + " 26 ret bls12_381_map_fp_to_g1 -> Ok(Bytes(obj#17))": "cpu:3094370, mem:12064, objs:-/9@60d4b257", + " 27 call obj_cmp(Bytes(obj#17), Bytes(obj#13))": "", + " 28 ret obj_cmp -> Ok(0)": "cpu:3094670", + " 29 call bytes_new_from_slice(96)": "", + " 30 ret bytes_new_from_slice -> Ok(Bytes(obj#19))": "cpu:3095655, mem:12240, objs:-/10@c8dd0777", + " 31 call bytes_new_from_slice(48)": "", + " 32 ret bytes_new_from_slice -> Ok(Bytes(obj#21))": "cpu:3096628, mem:12368, objs:-/11@7ded6720", + " 33 call bls12_381_map_fp_to_g1(Bytes(obj#21))": "", + " 34 ret bls12_381_map_fp_to_g1 -> Ok(Bytes(obj#23))": "cpu:4641705, mem:18096, objs:-/12@b43943ab", + " 35 call obj_cmp(Bytes(obj#23), Bytes(obj#19))": "", + " 36 ret obj_cmp -> Ok(0)": "cpu:4642005", + " 37 call bytes_new_from_slice(96)": "", + " 38 ret bytes_new_from_slice -> Ok(Bytes(obj#25))": "cpu:4642990, mem:18272, objs:-/13@a2684387", + " 39 call bytes_new_from_slice(48)": "", + " 40 ret bytes_new_from_slice -> Ok(Bytes(obj#27))": "cpu:4643963, mem:18400, objs:-/14@715274dc", + " 41 call bls12_381_map_fp_to_g1(Bytes(obj#27))": "", + " 42 ret bls12_381_map_fp_to_g1 -> Ok(Bytes(obj#29))": "cpu:6189040, mem:24128, objs:-/15@10993226", + " 43 call obj_cmp(Bytes(obj#29), Bytes(obj#25))": "", + " 44 ret obj_cmp -> Ok(0)": "cpu:6189340", + " 45 call bytes_new_from_slice(96)": "", + " 46 ret bytes_new_from_slice -> Ok(Bytes(obj#31))": "cpu:6190325, mem:24304, objs:-/16@6b210d16", + " 47 call bytes_new_from_slice(48)": "", + " 48 ret bytes_new_from_slice -> Ok(Bytes(obj#33))": "cpu:6191298, mem:24432, objs:-/17@200edbf", + " 49 call bls12_381_map_fp_to_g1(Bytes(obj#33))": "", + " 50 ret bls12_381_map_fp_to_g1 -> Ok(Bytes(obj#35))": "cpu:7736375, mem:30160, objs:-/18@b70ee9ef", + " 51 call obj_cmp(Bytes(obj#35), Bytes(obj#31))": "", + " 52 ret obj_cmp -> Ok(0)": "cpu:7736675", + " 53 call bytes_new_from_slice(96)": "", + " 54 ret bytes_new_from_slice -> Ok(Bytes(obj#37))": "cpu:7737660, mem:30336, objs:-/19@3870175b", + " 55 call bytes_new_from_slice(48)": "", + " 56 ret bytes_new_from_slice -> Ok(Bytes(obj#39))": "cpu:7738633, mem:30464, objs:-/20@d86aad53", + " 57 call bls12_381_map_fp_to_g1(Bytes(obj#39))": "", + " 58 ret bls12_381_map_fp_to_g1 -> Ok(Bytes(obj#41))": "cpu:9283710, mem:36192, objs:-/21@30c9e1a4", + " 59 call obj_cmp(Bytes(obj#41), Bytes(obj#37))": "", + " 60 ret obj_cmp -> Ok(0)": "cpu:9284010", + " 61 call bytes_new_from_slice(96)": "", + " 62 ret bytes_new_from_slice -> Ok(Bytes(obj#43))": "cpu:9284995, mem:36368, objs:-/22@90cc3e60", + " 63 call bytes_new_from_slice(48)": "", + " 64 ret bytes_new_from_slice -> Ok(Bytes(obj#45))": "cpu:9285968, mem:36496, objs:-/23@e85d1d60", + " 65 call bls12_381_map_fp_to_g1(Bytes(obj#45))": "", + " 66 ret bls12_381_map_fp_to_g1 -> Ok(Bytes(obj#47))": "cpu:10831045, mem:42224, objs:-/24@c6fa6f0c", + " 67 call obj_cmp(Bytes(obj#47), Bytes(obj#43))": "", + " 68 ret obj_cmp -> Ok(0)": "cpu:10831345", + " 69 call bytes_new_from_slice(96)": "", + " 70 ret bytes_new_from_slice -> Ok(Bytes(obj#49))": "cpu:10832330, mem:42400, objs:-/25@53450af3", + " 71 call bytes_new_from_slice(48)": "", + " 72 ret bytes_new_from_slice -> Ok(Bytes(obj#51))": "cpu:10833303, mem:42528, objs:-/26@f5960012", + " 73 call bls12_381_map_fp_to_g1(Bytes(obj#51))": "", + " 74 ret bls12_381_map_fp_to_g1 -> Ok(Bytes(obj#53))": "cpu:12378380, mem:48256, objs:-/27@9d2fb1f6", + " 75 call obj_cmp(Bytes(obj#53), Bytes(obj#49))": "", + " 76 ret obj_cmp -> Ok(0)": "cpu:12378680", + " 77 call bytes_new_from_slice(96)": "", + " 78 ret bytes_new_from_slice -> Ok(Bytes(obj#55))": "cpu:12379665, mem:48432, objs:-/28@a13fa1a3", + " 79 call bytes_new_from_slice(48)": "", + " 80 ret bytes_new_from_slice -> Ok(Bytes(obj#57))": "cpu:12380638, mem:48560, objs:-/29@2816bcaf", + " 81 call bls12_381_map_fp_to_g1(Bytes(obj#57))": "", + " 82 ret bls12_381_map_fp_to_g1 -> Ok(Bytes(obj#59))": "cpu:13925715, mem:54288, objs:-/30@7be5db06", + " 83 call obj_cmp(Bytes(obj#59), Bytes(obj#55))": "", + " 84 ret obj_cmp -> Ok(0)": "cpu:13926015", + " 85 call bytes_new_from_slice(96)": "", + " 86 ret bytes_new_from_slice -> Ok(Bytes(obj#61))": "cpu:13927000, mem:54464, objs:-/31@37bc8fe", + " 87 call bytes_new_from_slice(48)": "", + " 88 ret bytes_new_from_slice -> Ok(Bytes(obj#63))": "cpu:13927973, mem:54592, objs:-/32@73973499", + " 89 call bls12_381_map_fp_to_g1(Bytes(obj#63))": "", + " 90 ret bls12_381_map_fp_to_g1 -> Ok(Bytes(obj#65))": "cpu:15473050, mem:60320, objs:-/33@8a8027cd", + " 91 call obj_cmp(Bytes(obj#65), Bytes(obj#61))": "", + " 92 ret obj_cmp -> Ok(0)": "cpu:15473350", + " 93 end": "cpu:15473350, mem:60320, prngs:-/-, objs:-/33@8a8027cd, vm:-/-, evt:-, store:-/-, foot:-, stk:-, auth:-/-" } \ No newline at end of file diff --git a/soroban-env-host/src/crypto/bls12_381.rs b/soroban-env-host/src/crypto/bls12_381.rs index 8b8a26708..6178c8074 100644 --- a/soroban-env-host/src/crypto/bls12_381.rs +++ b/soroban-env-host/src/crypto/bls12_381.rs @@ -229,8 +229,8 @@ impl Host { // // internally when deserializing `Fp`, the flag bits are masked off // to get `X: Fp`. The Y however, does not have the top bits masked off - // so it is possible for Y to exceed 381 bits. I've checked all over and - // didn't find that being an invalid condition, so we will leave them as is. + // so it is possible for Y to exceed 381 bits. Internally Fp deserialization + // makes sure any value >= prime modulus results in an error. self.affine_deserialize::( bo, ContractCostType::Bls12381G1CheckPointOnCurve, @@ -260,8 +260,8 @@ impl Host { // // internally when deserializing `Fp`, the flag bits are masked off // to get `X: Fp`. The Y however, does not have the top bits masked off - // so it is possible for Y to exceed 381 bits. I've checked all over and - // didn't find that being an invalid condition, so we will leave them as is. + // so it is possible for Y to exceed 381 bits. Internally Fp deserialization + // makes sure any value >= prime modulus results in an error. self.affine_deserialize::( bo, ContractCostType::Bls12381G2CheckPointOnCurve, diff --git a/soroban-env-host/src/test/bls12_381.rs b/soroban-env-host/src/test/bls12_381.rs index 2666e3eaf..051385dd1 100644 --- a/soroban-env-host/src/test/bls12_381.rs +++ b/soroban-env-host/src/test/bls12_381.rs @@ -14,6 +14,8 @@ use rand::{rngs::StdRng, SeedableRng}; use serde::Deserialize; use std::cmp::Ordering; +const MODULUS: &str = "0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab"; + impl Host { pub(crate) fn fp_serialize_into_bytesobj(&self, fp: &Fq) -> Result { let mut buf = [0u8; FP_SERIALIZED_SIZE]; @@ -38,6 +40,7 @@ enum InvalidPointTypes { SortFlagSet, PointNotOnCurve, PointNotInSubgroup, + OutOfRange, } #[allow(unused)] @@ -117,6 +120,11 @@ fn sample_g1_not_in_subgroup(host: &Host, rng: &mut StdRng) -> Result Result { + let g1 = sample_g1(host, rng)?; + host.bytes_copy_from_slice(g1, U32Val::from(0), MODULUS.as_bytes()) +} + fn g1_zero(host: &Host) -> Result { host.g1_affine_serialize_uncompressed(&G1Affine::zero()) } @@ -160,6 +168,7 @@ fn invalid_g1( } InvalidPointTypes::PointNotOnCurve => sample_g1_not_on_curve(host, rng), InvalidPointTypes::PointNotInSubgroup => sample_g1_not_in_subgroup(host, rng), + InvalidPointTypes::OutOfRange => sample_g1_out_of_range(host, rng), } } @@ -194,6 +203,11 @@ fn g2_zero(host: &Host) -> Result { host.g2_affine_serialize_uncompressed(&G2Affine::zero()) } +fn sample_g2_out_of_range(host: &Host, rng: &mut StdRng) -> Result { + let g2 = sample_g2(host, rng)?; + host.bytes_copy_from_slice(g2, U32Val::from(0), MODULUS.as_bytes()) +} + fn neg_g2(bo: BytesObject, host: &Host) -> Result { let g2 = host.g2_affine_deserialize_from_bytesobj(bo, true)?; host.g2_affine_serialize_uncompressed(&-g2) @@ -233,6 +247,7 @@ fn invalid_g2( } InvalidPointTypes::PointNotOnCurve => sample_g2_not_on_curve(host, rng), InvalidPointTypes::PointNotInSubgroup => sample_g2_not_in_subgroup(host, rng), + InvalidPointTypes::OutOfRange => sample_g2_out_of_range(host, rng), } } @@ -274,6 +289,11 @@ fn invalid_fp( host.serialize_uncompressed_into_slice::(&fp, &mut buf, "test")?; host.bytes_new_from_slice(&buf[0..FP_SERIALIZED_SIZE - 1]) // take one less byte } + InvalidPointTypes::OutOfRange => { + // Fp can only take the range of (0, MODULUS-1) + let bytes = parse_hex(&MODULUS); + host.bytes_new_from_slice(bytes.as_slice()) + } _ => panic!("not available"), } } @@ -303,6 +323,11 @@ fn invalid_fp2( )?; host.bytes_new_from_slice(&buf[0..FP2_SERIALIZED_SIZE - 1]) // take one less byte } + InvalidPointTypes::OutOfRange => { + // Each Fp can only take the range of (0, MODULUS-1) + let bytes = parse_hex(&MODULUS); + host.bytes_new_from_slice(bytes.as_slice()) + } _ => panic!("not available"), } } @@ -423,6 +448,14 @@ fn check_g1_is_in_subgroup() -> Result<(), HostError> { )?), (ScErrorType::Crypto, ScErrorCode::InvalidInput) )); + assert!(HostError::result_matches_err( + host.bls12_381_check_g1_is_in_subgroup(invalid_g1( + &host, + InvalidPointTypes::OutOfRange, + &mut rng + )?), + (ScErrorType::Crypto, ScErrorCode::InvalidInput) + )); } // valid point in subgroup { @@ -820,6 +853,11 @@ fn map_fp_to_g1() -> Result<(), HostError> { host.bls12_381_map_fp_to_g1(p2), (ScErrorType::Crypto, ScErrorCode::InvalidInput) )); + let p3 = invalid_fp(&host, InvalidPointTypes::OutOfRange, &mut rng)?; + assert!(HostError::result_matches_err( + host.bls12_381_map_fp_to_g1(p3), + (ScErrorType::Crypto, ScErrorCode::InvalidInput) + )); } // Test cases from https://datatracker.ietf.org/doc/html/rfc9380#name-bls12381g1_xmdsha-256_sswu_ // To interpret the results, understand the steps it takes to hash a msg to curve @@ -962,6 +1000,14 @@ fn check_g2_is_in_subgroup() -> Result<(), HostError> { )?), (ScErrorType::Crypto, ScErrorCode::InvalidInput) )); + assert!(HostError::result_matches_err( + host.bls12_381_check_g2_is_in_subgroup(invalid_g2( + &host, + InvalidPointTypes::OutOfRange, + &mut rng + )?), + (ScErrorType::Crypto, ScErrorCode::InvalidInput) + )); } // valid point in subgroup { @@ -1359,6 +1405,11 @@ fn map_fp2_to_g2() -> Result<(), HostError> { host.bls12_381_map_fp2_to_g2(p2), (ScErrorType::Crypto, ScErrorCode::InvalidInput) )); + let p3 = invalid_fp2(&host, InvalidPointTypes::OutOfRange, &mut rng)?; + assert!(HostError::result_matches_err( + host.bls12_381_map_fp2_to_g2(p3), + (ScErrorType::Crypto, ScErrorCode::InvalidInput) + )); } // Test cases from https://datatracker.ietf.org/doc/html/rfc9380#name-bls12381g2_xmdsha-256_sswu_ // To interpret the results, understand the steps it takes to hash a msg to curve