13MakeError(BadHash, Error);
16enum class HashType :
char { MD5 = 42, SHA1, SHA256, SHA512 };
19const int md5HashSize = 16;
20const int sha1HashSize = 20;
21const int sha256HashSize = 32;
22const int sha512HashSize = 64;
24extern std::set<std::string> hashTypes;
26extern const std::string base32Chars;
28enum class Base :
int { Base64, Base32, Base16, SRI };
33 constexpr static size_t maxHashSize = 64;
35 uint8_t hash[maxHashSize] = {};
51 static Hash parseAny(std::string_view s, std::optional<HashType> type);
65 static Hash parseSRI(std::string_view original);
72 Hash(std::string_view s, HashType type,
bool isSRI);
103 return (hashSize * 8 - 1) / 5 + 1;
111 return ((4 * hashSize / 3) + 3) & ~3;
119 std::string
to_string(Base base,
bool includeType)
const;
121 std::string gitRev()
const
126 std::string gitShortRev()
const
128 return std::string(
to_string(Base::Base16,
false), 0, 7);
137Hash newHashAllowEmpty(std::string_view hashStr, std::optional<HashType> ht);
142std::string printHash16or32(
const Hash & hash);
147Hash hashString(HashType ht, std::string_view s);
152Hash hashFile(HashType ht,
const Path & path);
162 return hashPath(ht, *prepareDump(std::move(path)));
169Hash compressHash(
const Hash & hash,
unsigned int newSize);
174HashType parseHashType(std::string_view s);
179std::optional<HashType> parseHashTypeOpt(std::string_view s);
184std::string_view printHashType(HashType ht);
205 void writeUnbuffered(std::string_view data)
override;
std::pair< Hash, uint64_t > HashResult
Definition hash.hh:158
Definition serialise.hh:45
static Hash parseAnyPrefixed(std::string_view s)
Definition hash.cc:176
size_t base64Len() const
Definition hash.hh:109
size_t base16Len() const
Definition hash.hh:93
bool operator==(const Hash &h2) const
Definition hash.cc:43
static Hash parseNonSRIUnprefixed(std::string_view s, HashType type)
Definition hash.cc:205
size_t base32Len() const
Definition hash.hh:101
bool operator!=(const Hash &h2) const
Definition hash.cc:52
std::string to_string(Base base, bool includeType) const
Definition hash.cc:118
bool operator<(const Hash &h) const
Definition hash.cc:58
static Hash parseAny(std::string_view s, std::optional< HashType > type)
Definition hash.cc:189
Hash(HashType type)
Definition hash.cc:35
Definition serialise.hh:18
Definition serialise.hh:66
std::string Path
Definition types.hh:28