summaryrefslogtreecommitdiff
path: root/balloon-sha1.c
diff options
context:
space:
mode:
authorZoltan Fridrich <zfridric@redhat.com>2022-09-14 10:07:19 +0200
committerNiels Möller <nisse@lysator.liu.se>2022-09-14 21:09:34 +0200
commitf281a95547600bcc7a7069c84a6abc9b9dc3997d (patch)
treed8bc4d8b810df9b8cbe8587159eebac5d469c808 /balloon-sha1.c
parent8e2adda2c48152e6d7270035547ae5477756ceb8 (diff)
downloadnettle-f281a95547600bcc7a7069c84a6abc9b9dc3997d.tar.gz
Implement balloon password hashing
Diffstat (limited to 'balloon-sha1.c')
-rw-r--r--balloon-sha1.c54
1 files changed, 54 insertions, 0 deletions
diff --git a/balloon-sha1.c b/balloon-sha1.c
new file mode 100644
index 00000000..7238b487
--- /dev/null
+++ b/balloon-sha1.c
@@ -0,0 +1,54 @@
+/* balloon-sha1.c
+
+ Balloon password-hashing algorithm.
+
+ Copyright (C) 2022 Zoltan Fridrich
+
+ This file is part of GNU Nettle.
+
+ GNU Nettle is free software: you can redistribute it and/or
+ modify it under the terms of either:
+
+ * the GNU Lesser General Public License as published by the Free
+ Software Foundation; either version 3 of the License, or (at your
+ option) any later version.
+
+ or
+
+ * the GNU General Public License as published by the Free
+ Software Foundation; either version 2 of the License, or (at your
+ option) any later version.
+
+ or both in parallel, as here.
+
+ GNU Nettle is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received copies of the GNU General Public License and
+ the GNU Lesser General Public License along with this program. If
+ not, see http://www.gnu.org/licenses/.
+*/
+
+#if HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include "balloon.h"
+#include "sha1.h"
+
+void
+balloon_sha1(size_t s_cost, size_t t_cost,
+ size_t passwd_length, const uint8_t *passwd,
+ size_t salt_length, const uint8_t *salt,
+ uint8_t *scratch, uint8_t *dst)
+{
+ struct sha1_ctx ctx;
+ sha1_init(&ctx);
+ balloon(&ctx,
+ (nettle_hash_update_func*)sha1_update,
+ (nettle_hash_digest_func*)sha1_digest,
+ SHA1_DIGEST_SIZE, s_cost, t_cost,
+ passwd_length, passwd, salt_length, salt, scratch, dst);
+}