]> wimlib.net Git - wimlib/blobdiff - src/sha1.h
Inc version number, update NEWS
[wimlib] / src / sha1.h
index 5c1436170f8b2b79b6beb3098dd44bf36d737002..8573c5435bed079b83db967eabec52224e9afe35 100644 (file)
@@ -9,6 +9,8 @@
 
 #define SHA1_HASH_SIZE 20
 
+extern const u8 zero_hash[SHA1_HASH_SIZE];
+
 static inline void copy_hash(u8 dest[SHA1_HASH_SIZE],
                             const u8 src[SHA1_HASH_SIZE])
 {
@@ -25,13 +27,32 @@ static inline bool hashes_equal(const u8 h1[SHA1_HASH_SIZE],
 {
        return memcmp(h1, h2, SHA1_HASH_SIZE) == 0;
 }
+static inline int hashes_cmp(const u8 h1[SHA1_HASH_SIZE],
+                            const u8 h2[SHA1_HASH_SIZE])
+{
+       return memcmp(h1, h2, SHA1_HASH_SIZE);
+}
 
 /* Prints a hash code field. */
-static inline void print_hash(const u8 hash[])
+static inline void print_hash(const u8 hash[SHA1_HASH_SIZE])
 {
        print_byte_field(hash, SHA1_HASH_SIZE);
 }
 
+static inline bool is_zero_hash(const u8 hash[SHA1_HASH_SIZE])
+{
+       if (hash)
+               for (u8 i = 0; i < SHA1_HASH_SIZE / 4; i++)
+                       if (((u32*)hash)[i])
+                               return false;
+       return true;
+}
+
+static inline void zero_out_hash(u8 hash[SHA1_HASH_SIZE])
+{
+       memset(hash, 0, SHA1_HASH_SIZE);
+}
+
 
 #ifdef WITH_LIBCRYPTO