aboutsummaryrefslogtreecommitdiff
path: root/src/tool_metalink.c
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2014-06-15 17:35:49 +0200
committerDaniel Stenberg <daniel@haxx.se>2014-06-17 00:42:53 +0200
commitc3c4fd267137a666606562c9e34a26cbc3b9a56a (patch)
tree620c2ab1b473dd1caefa05ccd61e210842ad06cd /src/tool_metalink.c
parentb56dff79add04a1de2e07a3cf58114cd4e76cc4c (diff)
tool_metalink: Support polarssl as digest provider
Diffstat (limited to 'src/tool_metalink.c')
-rw-r--r--src/tool_metalink.c63
1 files changed, 63 insertions, 0 deletions
diff --git a/src/tool_metalink.c b/src/tool_metalink.c
index cd8df41f9..3573b058b 100644
--- a/src/tool_metalink.c
+++ b/src/tool_metalink.c
@@ -55,6 +55,13 @@
# define SHA_CTX void *
# define SHA256_CTX void *
static NSSInitContext *nss_context;
+#elif defined(USE_POLARSSL)
+# include <polarssl/md5.h>
+# include <polarssl/sha1.h>
+# include <polarssl/sha256.h>
+# define MD5_CTX md5_context
+# define SHA_CTX sha1_context
+# define SHA256_CTX sha256_context
#elif (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && \
(__MAC_OS_X_VERSION_MAX_ALLOWED >= 1040)) || \
(defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && \
@@ -318,6 +325,62 @@ static void SHA256_Final(unsigned char digest[32], SHA256_CTX *pctx)
nss_hash_final(pctx, digest, 32);
}
+#elif defined(USE_POLARSSL)
+
+static int MD5_Init(MD5_CTX *ctx)
+{
+ md5_starts(ctx);
+ return 1;
+}
+
+static void MD5_Update(MD5_CTX *ctx,
+ const unsigned char *input,
+ unsigned int inputLen)
+{
+ md5_update(ctx, input, inputLen);
+}
+
+static void MD5_Final(unsigned char digest[16], MD5_CTX *ctx)
+{
+ md5_finish(ctx, digest);
+}
+
+static int SHA1_Init(SHA_CTX *ctx)
+{
+ sha1_starts(ctx);
+ return 1;
+}
+
+static void SHA1_Update(SHA_CTX *ctx,
+ const unsigned char *input,
+ unsigned int inputLen)
+{
+ sha1_update(ctx, input, inputLen);
+}
+
+static void SHA1_Final(unsigned char digest[20], SHA_CTX *ctx)
+{
+ sha1_finish(ctx, digest);
+}
+
+static int SHA256_Init(SHA256_CTX *ctx)
+{
+ sha256_starts(ctx, 0); /* 0 = sha256 */
+ return 1;
+}
+
+static void SHA256_Update(SHA256_CTX *ctx,
+ const unsigned char *input,
+ unsigned int inputLen)
+{
+ sha256_update(ctx, input, inputLen);
+}
+
+static void SHA256_Final(unsigned char digest[32], SHA256_CTX *ctx)
+{
+ sha256_finish(ctx, digest);
+}
+
#elif defined(_WIN32) && !defined(USE_SSLEAY)
static void win32_crypto_final(struct win32_crypto_hash *ctx,