summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorMax Kellermann <max@musicpd.org>2018-07-26 12:13:42 +0200
committerMax Kellermann <max@musicpd.org>2018-07-26 12:14:31 +0200
commit7f81375861eb65784e60d0f7a9ca5f416f67d772 (patch)
tree01fbb1cfe9a56ab75e27d4cb8603697407b5cea7 /src/lib
parent0de39a431b9950326376a53eda81f083a2c54ff7 (diff)
lib/gcrypt/MD5: move code to Hash.hxx
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/gcrypt/Hash.hxx55
-rw-r--r--src/lib/gcrypt/MD5.cxx9
2 files changed, 57 insertions, 7 deletions
diff --git a/src/lib/gcrypt/Hash.hxx b/src/lib/gcrypt/Hash.hxx
new file mode 100644
index 000000000..208d6e247
--- /dev/null
+++ b/src/lib/gcrypt/Hash.hxx
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2018 Max Kellermann <max.kellermann@gmail.com>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * - Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the
+ * distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef GCRYPT_HASH_HXX
+#define GCRYPT_HASH_HXX
+
+#include "util/ConstBuffer.hxx"
+#include "Compiler.h"
+
+#include <gcrypt.h>
+
+#include <array>
+
+namespace Gcrypt {
+
+template<int algo, size_t size>
+gcc_pure
+auto
+Hash(ConstBuffer<void> input) noexcept
+{
+ std::array<uint8_t, size> result;
+ gcry_md_hash_buffer(GCRY_MD_MD5, &result.front(),
+ input.data, input.size);
+ return result;
+}
+
+} /* namespace Gcrypt */
+
+#endif
diff --git a/src/lib/gcrypt/MD5.cxx b/src/lib/gcrypt/MD5.cxx
index 009d3da97..c45d3d9da 100644
--- a/src/lib/gcrypt/MD5.cxx
+++ b/src/lib/gcrypt/MD5.cxx
@@ -28,19 +28,14 @@
*/
#include "MD5.hxx"
-#include "util/ConstBuffer.hxx"
-
-#include <gcrypt.h>
+#include "Hash.hxx"
#include <stdio.h>
std::array<uint8_t, 16>
MD5(ConstBuffer<void> input) noexcept
{
- std::array<uint8_t, 16> result;
- gcry_md_hash_buffer(GCRY_MD_MD5, &result.front(),
- input.data, input.size);
- return result;
+ return Gcrypt::Hash<GCRY_MD_MD5, 16>(input);
}
std::array<char, 33>