diff options
Diffstat (limited to 'src/libutil/hash.hh')
-rw-r--r-- | src/libutil/hash.hh | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/src/libutil/hash.hh b/src/libutil/hash.hh index 4490d2ff7ace..0c9d7b9cb936 100644 --- a/src/libutil/hash.hh +++ b/src/libutil/hash.hh @@ -8,7 +8,7 @@ using namespace std; -typedef enum { htMD5, htSHA1, htSHA256 } HashType; +typedef enum { htUnknown, htMD5, htSHA1, htSHA256 } HashType; const int md5HashSize = 16; @@ -24,7 +24,10 @@ struct Hash HashType type; - /* Create a zeroed hash object. */ + /* Create an unusable hash object. */ + Hash(); + + /* Create a zero-filled hash object. */ Hash(HashType type); /* Check whether two hash are equal. */ @@ -36,13 +39,20 @@ struct Hash /* For sorting. */ bool operator < (const Hash & h) const; - /* Convert a hash code into a hexadecimal representation. */ - operator string() const; }; +/* Convert a hash to a hexadecimal representation. */ +string printHash(const Hash & hash); + /* Parse a hexadecimal representation of a hash code. */ -Hash parseHash(const string & s); +Hash parseHash(HashType ht, const string & s); + +/* Convert a hash to a base-32 representation. */ +string printHash32(const Hash & hash); + +/* Parse a base-32 representation of a hash code. */ +Hash parseHash32(HashType ht, const string & s); /* Verify that the given string is a valid hash code. */ bool isHash(const string & s); @@ -57,5 +67,9 @@ Hash hashFile(const Path & path, HashType ht); md5(dump(path)). */ Hash hashPath(const Path & path, HashType ht); +/* Compress a hash to the specified number of bytes by cyclically + XORing bytes together. */ +Hash compressHash(const Hash & hash, unsigned int newSize); + #endif /* !__HASH_H */ |