aboutsummaryrefslogtreecommitdiffstats
path: root/src/cli/speed.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/cli/speed.cpp')
-rw-r--r--src/cli/speed.cpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/cli/speed.cpp b/src/cli/speed.cpp
index c93f45ea6..9830c4f29 100644
--- a/src/cli/speed.cpp
+++ b/src/cli/speed.cpp
@@ -121,6 +121,10 @@
#include <botan/scrypt.h>
#endif
+#if defined(BOTAN_HAS_ARGON2)
+ #include <botan/argon2.h>
+#endif
+
#if defined(BOTAN_HAS_BCRYPT)
#include <botan/bcrypt.h>
#endif
@@ -646,6 +650,12 @@ class Speed final : public Command
bench_scrypt(provider, msec);
}
#endif
+#if defined(BOTAN_HAS_ARGON2)
+ else if(algo == "argon2")
+ {
+ bench_argon2(provider, msec);
+ }
+#endif
#if defined(BOTAN_HAS_BCRYPT)
else if(algo == "bcrypt")
{
@@ -2195,6 +2205,42 @@ class Speed final : public Command
#endif
+#if defined(BOTAN_HAS_ARGON2)
+
+ void bench_argon2(const std::string& /*provider*/,
+ std::chrono::milliseconds msec)
+ {
+ for(size_t M : { 8*1024, 64*1024, 256*1024 })
+ {
+ for(size_t t : { 1, 2, 4 })
+ {
+ for(size_t p : { 1 })
+ {
+ std::unique_ptr<Timer> timer = make_timer(
+ "Argon2id M=" + std::to_string(M) + " t=" + std::to_string(t) + " p=" + std::to_string(p));
+
+ const size_t mode = 2;
+ uint8_t out[64];
+ uint8_t salt[16];
+ rng().randomize(salt, sizeof(salt));
+
+ while(timer->under(msec))
+ {
+ timer->run([&] {
+ Botan::argon2(out, sizeof(out), "password", 8,
+ salt, sizeof(salt), nullptr, 0, nullptr, 0,
+ mode, p, M, t);
+ });
+ }
+
+ record_result(timer);
+ }
+ }
+ }
+ }
+
+#endif
+
#if defined(BOTAN_HAS_NEWHOPE) && defined(BOTAN_HAS_CHACHA_RNG)
void bench_newhope(const std::string& /*provider*/,
std::chrono::milliseconds msec)