Files
sphaira/sphaira/include/hasher.hpp

33 lines
798 B
C++

#pragma once
#include "fs.hpp"
#include "ui/progress_box.hpp"
#include <string>
#include <memory>
#include <span>
#include <switch.h>
namespace sphaira::hash {
enum class Type {
Crc32,
Md5,
Sha1,
Sha256,
};
struct BaseSource {
virtual ~BaseSource() = default;
virtual Result Size(s64* out) = 0;
virtual Result Read(void* buf, s64 off, s64 size, u64* bytes_read) = 0;
};
auto GetTypeStr(Type type) -> const char*;
// returns the hash string.
Result Hash(ui::ProgressBox* pbox, Type type, std::shared_ptr<BaseSource> source, std::string& out);
Result Hash(ui::ProgressBox* pbox, Type type, fs::Fs* fs, const fs::FsPath& path, std::string& out);
Result Hash(ui::ProgressBox* pbox, Type type, std::span<const u8> data, std::string& out);
} // namespace sphaira::hash