summaryrefslogtreecommitdiff
path: root/utils/imxtools/sbtools/crypto.cpp
diff options
context:
space:
mode:
authorAmaury Pouly <amaury.pouly@gmail.com>2017-01-03 16:09:34 +0100
committerAmaury Pouly <amaury.pouly@gmail.com>2017-01-16 19:59:28 +0100
commit759a78e5dff134f2632875f61aae60815eea6f5b (patch)
tree24110ff498d81535146094fdb80d766456bd513f /utils/imxtools/sbtools/crypto.cpp
parent8b3f5a8ad7434850804a4a664d2b07c6ffa9b1c7 (diff)
downloadrockbox-759a78e5dff134f2632875f61aae60815eea6f5b.zip
rockbox-759a78e5dff134f2632875f61aae60815eea6f5b.tar.gz
rockbox-759a78e5dff134f2632875f61aae60815eea6f5b.tar.bz2
rockbox-759a78e5dff134f2632875f61aae60815eea6f5b.tar.xz
imxtools/sbtools: switch SHA1 implementation to Crypto++
The current implementation was custom and super slow. Since we use Crypto++ anyway, we might as well get use a good implementation. Change-Id: I761ad7401653471e54000e1c2bc3d9882378112f
Diffstat (limited to 'utils/imxtools/sbtools/crypto.cpp')
-rw-r--r--utils/imxtools/sbtools/crypto.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/utils/imxtools/sbtools/crypto.cpp b/utils/imxtools/sbtools/crypto.cpp
index 5ccde27..d7ef04f 100644
--- a/utils/imxtools/sbtools/crypto.cpp
+++ b/utils/imxtools/sbtools/crypto.cpp
@@ -22,6 +22,7 @@
#include "misc.h"
#include <cryptopp/modes.h>
#include <cryptopp/aes.h>
+#include <cryptopp/sha.h>
using namespace CryptoPP;
@@ -124,3 +125,25 @@ int crypto_apply(
else
return CRYPTO_ERROR_BADSETUP;
}
+
+void sha_1_init(struct sha_1_params_t *params)
+{
+ params->object = new SHA1;
+}
+
+void sha_1_update(struct sha_1_params_t *params, byte *buffer, int size)
+{
+ reinterpret_cast<SHA1 *>(params->object)->Update(buffer, size);
+}
+
+void sha_1_finish(struct sha_1_params_t *params)
+{
+ SHA1 *obj = reinterpret_cast<SHA1 *>(params->object);
+ obj->Final(params->hash);
+ delete obj;
+}
+
+void sha_1_output(struct sha_1_params_t *params, byte *out)
+{
+ memcpy(out, params->hash, 20);
+}