diff options
author | Max Kellermann <max@musicpd.org> | 2018-07-26 12:13:42 +0200 |
---|---|---|
committer | Max Kellermann <max@musicpd.org> | 2018-07-26 12:14:31 +0200 |
commit | 7f81375861eb65784e60d0f7a9ca5f416f67d772 (patch) | |
tree | 01fbb1cfe9a56ab75e27d4cb8603697407b5cea7 /src/lib | |
parent | 0de39a431b9950326376a53eda81f083a2c54ff7 (diff) |
lib/gcrypt/MD5: move code to Hash.hxx
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/gcrypt/Hash.hxx | 55 | ||||
-rw-r--r-- | src/lib/gcrypt/MD5.cxx | 9 |
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> |