summaryrefslogtreecommitdiff
path: root/src/buildtool/crypto/hash_impl_git.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/buildtool/crypto/hash_impl_git.cpp')
-rw-r--r--src/buildtool/crypto/hash_impl_git.cpp42
1 files changed, 0 insertions, 42 deletions
diff --git a/src/buildtool/crypto/hash_impl_git.cpp b/src/buildtool/crypto/hash_impl_git.cpp
deleted file mode 100644
index 9cb2a761..00000000
--- a/src/buildtool/crypto/hash_impl_git.cpp
+++ /dev/null
@@ -1,42 +0,0 @@
-#include <array>
-#include <cstdint>
-
-#include "openssl/sha.h"
-#include "src/buildtool/crypto/hash_impl.hpp"
-
-/// \brief Hash implementation for Git blob ids.
-/// Does not support incremental hashing.
-class HashImplGit final : public IHashImpl {
- public:
- auto Update(std::string const& /*data*/) noexcept -> bool final {
- return false;
- }
-
- auto Finalize() && noexcept -> std::optional<std::string> final {
- return std::nullopt;
- }
-
- auto Compute(std::string const& data) && noexcept -> std::string final {
- SHA_CTX ctx;
- std::string const header{"blob " + std::to_string(data.size()) + '\0'};
- if (SHA1_Init(&ctx) == 1 &&
- SHA1_Update(&ctx, header.data(), header.size()) == 1 &&
- SHA1_Update(&ctx, data.data(), data.size()) == 1) {
- auto out = std::array<std::uint8_t, SHA_DIGEST_LENGTH>{};
- if (SHA1_Final(out.data(), &ctx) == 1) {
- return std::string{out.begin(), out.end()};
- }
- }
- FatalError();
- return {};
- }
-
- [[nodiscard]] auto DigestLength() const noexcept -> std::size_t final {
- return SHA_DIGEST_LENGTH;
- }
-};
-
-/// \brief Factory for Git implementation
-auto CreateHashImplGit() -> std::unique_ptr<IHashImpl> {
- return std::make_unique<HashImplGit>();
-}