33 lines
798 B
C++
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
|