Introduce initial timing code for the library.
This commit is contained in:
parent
6bfa191f6b
commit
4e39bccab6
150
bench/timing.erl
Normal file
150
bench/timing.erl
Normal file
@ -0,0 +1,150 @@
|
||||
-module(timing).
|
||||
-export([test/0]).
|
||||
|
||||
test() ->
|
||||
randombytes(),
|
||||
randombytes(),
|
||||
randombytes(),
|
||||
hash(),
|
||||
box_keypair(),
|
||||
box(),
|
||||
box_before_after(),
|
||||
sign_keypair(),
|
||||
sign(),
|
||||
secretbox(),
|
||||
stream(),
|
||||
auth(),
|
||||
onetime_auth(),
|
||||
scalarmult(),
|
||||
ok.
|
||||
|
||||
randombytes() ->
|
||||
randombytes(100*1000).
|
||||
|
||||
randombytes(0) -> ok;
|
||||
randombytes(N) ->
|
||||
enacl:randombytes(1024),
|
||||
randombytes(N-1).
|
||||
|
||||
hash() ->
|
||||
B = binary:copy(<<0>>, 4096),
|
||||
hash(B, 10*1000).
|
||||
|
||||
hash(_B, 0) -> ok;
|
||||
hash(B, N) ->
|
||||
enacl:hash(B),
|
||||
hash(B, N-1).
|
||||
|
||||
box_keypair() ->
|
||||
box_keypair(10*1000).
|
||||
|
||||
box_keypair(0) -> ok;
|
||||
box_keypair(N) ->
|
||||
enacl:box_keypair(),
|
||||
box_keypair(N-1).
|
||||
|
||||
box() ->
|
||||
#{ public := PK1} = enacl:box_keypair(),
|
||||
#{ secret := SK2} = enacl:box_keypair(),
|
||||
B = binary:copy(<<0>>, 1),
|
||||
Nonce = binary:copy(<<0>>, enacl:box_nonce_size()),
|
||||
box(B, Nonce, PK1, SK2, 10*1000).
|
||||
|
||||
box(_B, _Nonce, _PK1, _SK2, 0) -> ok;
|
||||
box(B, Nonce, PK1, SK2, N) ->
|
||||
enacl:box(B, Nonce, PK1, SK2),
|
||||
enacl:box_seal(B, PK1),
|
||||
box(B, Nonce, PK1, SK2, N-1).
|
||||
|
||||
box_before_after() ->
|
||||
#{ public := PK1 } = enacl:box_keypair(),
|
||||
#{ secret := SK2 } = enacl:box_keypair(),
|
||||
box_beforenm(PK1, SK2, 10*1000),
|
||||
R = enacl:box_beforenm(PK1, SK2),
|
||||
B = binary:copy(<<0>>, 8192),
|
||||
Nonce = binary:copy(<<0>>, enacl:box_nonce_size()),
|
||||
box_afternm(B, Nonce, R, 10*1000),
|
||||
ok.
|
||||
|
||||
box_beforenm(_PK, _SK, 0) -> ok;
|
||||
box_beforenm(PK, SK, N) ->
|
||||
enacl:box_beforenm(PK, SK),
|
||||
box_beforenm(PK, SK, N-1).
|
||||
|
||||
box_afternm(_Msg, _Nonce, _Key, 0) -> ok;
|
||||
box_afternm(Msg, Nonce, Key, N) ->
|
||||
enacl:box_afternm(Msg, Nonce, Key),
|
||||
box_afternm(Msg, Nonce, Key, N-1).
|
||||
|
||||
sign_keypair() ->
|
||||
sign_keypair(10*1000).
|
||||
|
||||
sign_keypair(0) -> ok;
|
||||
sign_keypair(N) ->
|
||||
enacl:sign_keypair(),
|
||||
#{ public := PK, secret := SK} = enacl:crypto_sign_ed25519_keypair(),
|
||||
enacl:crypto_sign_ed25519_public_to_curve25519(PK),
|
||||
enacl:crypto_sign_ed25519_secret_to_curve25519(SK),
|
||||
sign_keypair(N-1).
|
||||
|
||||
sign() ->
|
||||
Msg = binary:copy(<<0>>, 1024),
|
||||
#{ secret := SK } = enacl:sign_keypair(),
|
||||
sign(Msg, SK, 10*1000).
|
||||
|
||||
sign(_Msg, _SK, 0) -> ok;
|
||||
sign(Msg, SK, N) ->
|
||||
enacl:sign(Msg, SK),
|
||||
enacl:sign_detached(Msg, SK),
|
||||
sign(Msg, SK, N-1).
|
||||
|
||||
secretbox() ->
|
||||
Msg = binary:copy(<<0>>, 8192),
|
||||
Nonce = binary:copy(<<0>>, enacl:secretbox_nonce_size()),
|
||||
Key = binary:copy(<<0>>, enacl:secretbox_key_size()),
|
||||
secretbox(Msg, Nonce, Key, 10*1000).
|
||||
|
||||
secretbox(_Msg, _Nonce, _Key, 0) -> ok;
|
||||
secretbox(Msg, Nonce, Key, N) ->
|
||||
enacl:secretbox(Msg, Nonce, Key),
|
||||
secretbox(Msg, Nonce, Key, N-1).
|
||||
|
||||
|
||||
stream() ->
|
||||
stream(16384, binary:copy(<<0>>, enacl:stream_nonce_size()), binary:copy(<<0>>, enacl:stream_key_size()), 10*1000).
|
||||
|
||||
stream(_L, _Nonce, _K, 0) -> ok;
|
||||
stream(L, Nonce, K, N) ->
|
||||
enacl:stream(L, Nonce, K),
|
||||
stream(L, Nonce, K, N-1).
|
||||
|
||||
auth() ->
|
||||
Msg = binary:copy(<<0>>, 4096),
|
||||
Key = binary:copy(<<0>>, enacl:auth_key_size()),
|
||||
auth(Msg, Key, 10*1000).
|
||||
|
||||
auth(_Msg, _Key, 0) -> ok;
|
||||
auth(Msg, Key, N) ->
|
||||
enacl:auth(Msg, Key),
|
||||
auth(Msg, Key, N-1).
|
||||
|
||||
onetime_auth() ->
|
||||
Msg = binary:copy(<<0>>, 16384),
|
||||
Key = binary:copy(<<0>>, enacl:onetime_auth_key_size()),
|
||||
onetime_auth(Msg, Key, 10*1000).
|
||||
|
||||
onetime_auth(_Msg, _Key, 0) -> ok;
|
||||
onetime_auth(Msg, Key, N) ->
|
||||
enacl:onetime_auth(Msg, Key),
|
||||
onetime_auth(Msg, Key, N-1).
|
||||
|
||||
scalarmult() ->
|
||||
Secret = binary:copy(<<0>>, 32),
|
||||
BasePoint = binary:copy(<<1>>, 32),
|
||||
scalarmult(Secret, BasePoint, 10*1000).
|
||||
|
||||
scalarmult(_S, _B, 0) -> ok;
|
||||
scalarmult(S, B, N) ->
|
||||
enacl:curve25519_scalarmult(S, B),
|
||||
scalarmult(S, B, N-1).
|
||||
|
Loading…
x
Reference in New Issue
Block a user