Branch data TLA Line data Source code
1 : : // Copyright (c) 2017-2022 Thomas Fussell
2 : : // Copyright (c) 2024-2025 xlnt-community
3 : : //
4 : : // Permission is hereby granted, free of charge, to any person obtaining a copy
5 : : // of this software and associated documentation files (the "Software"), to deal
6 : : // in the Software without restriction, including without limitation the rights
7 : : // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 : : // copies of the Software, and to permit persons to whom the Software is
9 : : // furnished to do so, subject to the following conditions:
10 : : //
11 : : // The above copyright notice and this permission notice shall be included in
12 : : // all copies or substantial portions of the Software.
13 : : //
14 : : // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 : : // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 : : // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 : : // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 : : // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 : : // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20 : : // THE SOFTWARE
21 : : //
22 : : // @license: http://www.opensource.org/licenses/mit-license.php
23 : : // @author: see AUTHORS file
24 : :
25 : : #include <detail/cryptography/hash.hpp>
26 : : #include <detail/cryptography/sha.hpp>
27 : :
28 : : namespace xlnt {
29 : : namespace detail {
30 : :
31 :CBC 1750499 : void hash(hash_algorithm algorithm, const std::vector<std::uint8_t> &input, std::vector<std::uint8_t> &output)
32 : : {
33 [ + + ]: 1750499 : if (algorithm == hash_algorithm::sha512)
34 : : {
35 : 700168 : xlnt::detail::sha512(input, output);
36 : : }
37 [ + - ]: 1050331 : else if (algorithm == hash_algorithm::sha1)
38 : : {
39 : 1050331 : xlnt::detail::sha1(input, output);
40 : : }
41 : : else
42 : : {
43 [ # # ]:UBC 0 : throw xlnt::exception("unsupported hash algorithm");
44 : : }
45 :CBC 1750499 : }
46 : :
47 : 499 : std::vector<std::uint8_t> hash(hash_algorithm algorithm, const std::vector<std::uint8_t> &input)
48 : : {
49 : 499 : auto output = std::vector<std::uint8_t>();
50 [ + ]: 499 : hash(algorithm, input, output);
51 : :
52 : 499 : return output;
53 :UBC 0 : }
54 : :
55 : : }; // namespace detail
56 : : }; // namespace xlnt
|