|
| 1 | +import timeit |
| 2 | + |
| 3 | +from tlslite.utils.cryptomath import gmpyLoaded |
| 4 | + |
| 5 | +print("Acceleration backends loaded:") |
| 6 | +print("gmpy: {0}".format(gmpyLoaded)) |
| 7 | +print("") |
| 8 | + |
| 9 | +def do(setup_statements, statement): |
| 10 | + # extracted from timeit.py |
| 11 | + t = timeit.Timer(stmt=statement, setup="\n".join(setup_statements)) |
| 12 | + # determine number so that 0.2 <= total time < 2.0 |
| 13 | + for i in range(1, 10): |
| 14 | + number = 10 ** i |
| 15 | + x = t.timeit(number) |
| 16 | + if x >= 0.2: |
| 17 | + break |
| 18 | + return x / number |
| 19 | + |
| 20 | + |
| 21 | +prnt_form = ( |
| 22 | + "{name:>16}{sep:1} {keygen:>9{form}}{unit:1} " |
| 23 | + "{keygen_inv:>9{form_inv}} {sign:>9{form}}{unit:1} " |
| 24 | + "{sign_inv:>9{form_inv}} {verify:>9{form}}{unit:1} " |
| 25 | + "{verify_inv:>9{form_inv}}" |
| 26 | +) |
| 27 | + |
| 28 | +print( |
| 29 | + prnt_form.format( |
| 30 | + keygen="keygen", |
| 31 | + keygen_inv="keygen/s", |
| 32 | + sign="sign", |
| 33 | + sign_inv="sign/s", |
| 34 | + verify="verify", |
| 35 | + verify_inv="verify/s", |
| 36 | + name="", |
| 37 | + sep="", |
| 38 | + unit="", |
| 39 | + form="", |
| 40 | + form_inv="", |
| 41 | + ) |
| 42 | +) |
| 43 | + |
| 44 | +for size in [1024, 2048, 3072, 4096]: |
| 45 | + S1 = "from tlslite.utils.python_rsakey import Python_RSAKey" |
| 46 | + S2 = "from tlslite.utils.cryptomath import secureHash" |
| 47 | + S3 = "key = Python_RSAKey.generate(%s)" % size |
| 48 | + S4 = "msg = b'msg'" |
| 49 | + S5 = "msg_hash = secureHash(msg, 'sha1')" |
| 50 | + S6 = "sig = key.sign(msg_hash)" |
| 51 | + S7 = "key.verify(sig, msg_hash)" |
| 52 | + keygen = do([S1, S2], S3) |
| 53 | + sign = do([S1, S2, S3, S4, S5], S6) |
| 54 | + verf = do([S1, S2, S3, S4, S5, S6], S7) |
| 55 | + |
| 56 | + print( |
| 57 | + prnt_form.format( |
| 58 | + name="RSA {0} bits".format(size), |
| 59 | + sep=":", |
| 60 | + unit="s", |
| 61 | + keygen=keygen, |
| 62 | + keygen_inv=1.0 / keygen, |
| 63 | + sign=sign, |
| 64 | + sign_inv=1.0 / sign, |
| 65 | + verify=verf, |
| 66 | + verify_inv=1.0 / verf, |
| 67 | + form=".5f", |
| 68 | + form_inv=".2f", |
| 69 | + ) |
| 70 | + ) |
| 71 | + |
| 72 | +print("") |
| 73 | + |
0 commit comments