@@ -289,6 +289,13 @@ def create_modexp_variable_gas_test_cases():
289
289
# Test case definitions: (base, exponent, modulus, expected_result, test_id)
290
290
test_cases = [
291
291
("" , "" , "" , "" , "Z0" ),
292
+ ("01" * 32 , "00" * 32 , "" , "" , "Z1" ),
293
+ ("01" * 1024 , "00" * 32 , "" , "" , "Z2" ),
294
+ ("01" * 32 , "00" * 1024 , "" , "" , "Z3" ),
295
+ ("01" * 32 , "00" * 1023 + "01" , "" , "" , "Z4" ),
296
+ ("" , "" , "01" * 32 , "00" * 31 + "01" , "Z5" ),
297
+ ("" , "01" * 32 , "01" * 32 , "00" * 32 , "Z6" ),
298
+ ("" , "00" * 31 + "01" , "01" * 1024 , "00" * 1024 , "Z7" ),
292
299
("01" * 16 , "00" * 16 , "02" * 16 , "00" * 15 + "01" , "S0" ),
293
300
("01" * 16 , "00" * 15 + "03" , "02" * 16 , "01" * 16 , "S1" ),
294
301
("01" * 32 , "FF" * 32 , "02" * 32 , "01" * 32 , "S2" ),
@@ -307,9 +314,14 @@ def create_modexp_variable_gas_test_cases():
307
314
("01" * 33 , "01" , "02" * 31 , "00" * 29 + "01" * 2 , "B2" ),
308
315
("01" * 33 , "01" , "02" * 33 , "01" * 33 , "B4" ),
309
316
# Zero value edge cases
310
- ("00" * 32 , "00" * 32 , "01" * 32 , "00" * 31 + "01" , "Z1" ),
311
- ("01" * 32 , "00" * 32 , "00" * 32 , "00" * 32 , "Z2" ),
312
- ("00" * 32 , "01" * 32 , "02" * 32 , "00" * 32 , "Z3" ),
317
+ ("00" * 32 , "00" * 32 , "01" * 32 , "00" * 31 + "01" , "Z8" ),
318
+ ("01" * 32 , "00" * 32 , "00" * 32 , "00" * 32 , "Z9" ),
319
+ ("00" * 32 , "01" * 32 , "02" * 32 , "00" * 32 , "Z10" ),
320
+ ("00" * 32 , "00" * 33 , "01" * 32 , "00" * 31 + "01" , "Z11" ),
321
+ ("00" * 32 , "00" * 1024 , "01" * 32 , "00" * 31 + "01" , "Z12" ),
322
+ ("00" * 1024 , "00" * 32 , "01" * 32 , "00" * 31 + "01" , "Z13" ),
323
+ ("01" * 32 , "00" * 1024 , "00" * 32 , "00" * 32 , "Z14" ),
324
+ ("01" * 32 , "00" * 31 + "01" , "00" * 1024 , "00" * 1024 , "Z15" ),
313
325
# Maximum value stress tests
314
326
("FF" * 64 , "FF" * 64 , "FF" * 64 , "00" * 64 , "M1" ),
315
327
("FF" * 32 , "01" , "FF" * 32 , "00" * 32 , "M2" ),
@@ -356,6 +368,13 @@ def create_modexp_variable_gas_test_cases():
356
368
# │ ID │ Comp │ Rel │ Iter │ Clamp │ Gas │ Description │
357
369
# ├─────┼──────┼─────┼──────┼───────┼─────────┼───────────────────────────────────────────────┤
358
370
# │ Z0 │ - │ - │ - │ - │ 500 │ Zero case – empty inputs │
371
+ # │ Z1 │ S │ - │ A │ True │ 500 │ Non-zero base, zero exp, empty modulus │
372
+ # │ Z2 │ L │ - │ A │ False │ 32768 │ Large base (1024B), zero exp, empty modulus │
373
+ # │ Z3 │ S │ - │ C │ False │253936 │ Base, large zero exp (1024B), empty modulus │
374
+ # │ Z4 │ S │ - │ D │ False │253952 │ Base, large exp (last byte=1), empty modulus │
375
+ # │ Z5 │ S │ < │ A │ True │ 500 │ Empty base/exp, non-zero modulus only │
376
+ # │ Z6 │ S │ < │ B │ False │ 3968 │ Empty base, non-zero exp and modulus │
377
+ # │ Z7 │ L │ < │ B │ False │ 32768 │ Empty base, small exp, large modulus │
359
378
# │ S0 │ S │ = │ A │ True │ 500 │ Small, equal, zero exp, clamped │
360
379
# │ S1 │ S │ = │ B │ True │ 500 │ Small, equal, small exp, clamped │
361
380
# │ S2 │ S │ = │ B │ False │ 4080 │ Small, equal, large exp, unclamped │
@@ -372,9 +391,14 @@ def create_modexp_variable_gas_test_cases():
372
391
# │ B1 │ L │ < │ B │ True │ 500 │ Cross 32-byte boundary (31/33) │
373
392
# │ B2 │ L │ > │ B │ True │ 500 │ Cross 32-byte boundary (33/31) │
374
393
# │ B4 │ L │ = │ B │ True │ 500 │ Just over 32-byte boundary │
375
- # │ Z1 │ S │ = │ A │ True │ 500 │ All zeros except modulus │
376
- # │ Z2 │ S │ = │ A │ True │ 500 │ Zero modulus special case │
377
- # │ Z3 │ S │ = │ B │ False │ 3968 │ Zero base, large exponent │
394
+ # │ Z8 │ S │ = │ A │ True │ 500 │ All zeros except modulus │
395
+ # │ Z9 │ S │ = │ A │ True │ 500 │ Zero modulus special case │
396
+ # │ Z10 │ S │ = │ B │ False │ 3968 │ Zero base, large exponent │
397
+ # │ Z11 │ S │ = │ C │ True │ 500 │ Zero base, 33B zero exp, non-zero modulus │
398
+ # │ Z12 │ S │ = │ C │ False │253936 │ Zero base, large zero exp, non-zero modulus │
399
+ # │ Z13 │ L │ > │ A │ False │ 32768 │ Large zero base, zero exp, non-zero modulus │
400
+ # │ Z14 │ S │ = │ C │ False │253936 │ Base, large zero exp, zero modulus │
401
+ # │ Z15 │ L │ < │ B │ False │ 32768 │ Base, small exp, large zero modulus │
378
402
# │ M1 │ L │ = │ D │ False │ 98176 │ Maximum values stress test │
379
403
# │ M2 │ S │ = │ B │ True │ 500 │ Max base/mod, small exponent │
380
404
# │ M3 │ L │ < │ D │ False │ 98176 │ Small base, max exponent/mod │
0 commit comments