]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
mail_generate_guid_128_hash() is now a public function.
authorTimo Sirainen <tss@iki.fi>
Wed, 15 Jul 2009 22:29:42 +0000 (18:29 -0400)
committerTimo Sirainen <tss@iki.fi>
Wed, 15 Jul 2009 22:29:42 +0000 (18:29 -0400)
--HG--
branch : HEAD

src/lib-storage/mail-storage-private.h
src/lib-storage/mail-storage.c
src/lib-storage/mail-storage.h
src/lib-storage/mail.c

index b002d5c782583f85660f6338f68a8aadc407b466..8bb4a32a2fab40db8e30b62432d7428ef1d1f4db 100644 (file)
@@ -429,8 +429,6 @@ bool mail_storage_set_error_from_errno(struct mail_storage *storage);
 
 const char *mail_generate_guid_string(void);
 void mail_generate_guid_128(uint8_t guid[MAIL_GUID_128_SIZE]);
-void mail_generate_guid_128_hash(const char *input,
-                                uint8_t guid[MAIL_GUID_128_SIZE]);
 int mail_set_aborted(struct mail *mail);
 void mail_set_expunged(struct mail *mail);
 void mailbox_set_deleted(struct mailbox *box);
index 2898212d464dca5d6f4c4faa066c8024475a94d9..cf10e9b5ac2adb09cb0491daa7f630ac3e4db517 100644 (file)
@@ -1073,17 +1073,6 @@ void mailbox_set_deleted(struct mailbox *box)
        box->mailbox_deleted = TRUE;
 }
 
-bool mail_guid_128_is_empty(const uint8_t guid_128[MAIL_GUID_128_SIZE])
-{
-       unsigned int i;
-
-       for (i = 0; i < MAILBOX_GUID_SIZE; i++) {
-               if (guid_128[i] != 0)
-                       return FALSE;
-       }
-       return TRUE;
-}
-
 bool mailbox_guid_is_empty(const uint8_t guid[MAILBOX_GUID_SIZE])
 {
        return mail_guid_128_is_empty(guid);
index 7f8ecc49f4d5504343899b68aa28ac852f0d0523..94a7a6b8c03172fc2c180d548b2f46d84c5a9e34 100644 (file)
@@ -642,4 +642,10 @@ void mail_expunge(struct mail *mail);
 /* Mark a cached field corrupted and have it recalculated. */
 void mail_set_cache_corrupted(struct mail *mail, enum mail_fetch_field field);
 
+/* Return 128 bit GUID using input string. If guid is already 128 bit hex
+   encoded, it's returned as-is. Otherwise SHA1 sum is taken and its last
+   128 bits are returned. */
+void mail_generate_guid_128_hash(const char *guid,
+                                uint8_t guid_128[MAIL_GUID_128_SIZE]);
+
 #endif
index 65e6dc8823cd75a94b1f102453c3542eb7542c00..29141df94920fad1b2f46e80b198ac5b225e88db 100644 (file)
@@ -280,19 +280,19 @@ void mail_generate_guid_128(uint8_t guid[MAIL_GUID_128_SIZE])
        memcpy(guid + 8, guid_static, 8);
 }
 
-void mail_generate_guid_128_hash(const char *input,
-                                uint8_t guid[MAIL_GUID_128_SIZE])
+void mail_generate_guid_128_hash(const char *guid,
+                                uint8_t guid_128[MAIL_GUID_128_SIZE])
 {
        unsigned char sha1_sum[SHA1_RESULTLEN];
        buffer_t buf;
 
-       buffer_create_data(&buf, guid, MAIL_GUID_128_SIZE);
-       if (strlen(input) != MAIL_GUID_128_SIZE*2 ||
-           hex_to_binary(input, &buf) < 0 ||
+       buffer_create_data(&buf, guid_128, MAIL_GUID_128_SIZE);
+       if (strlen(guid) != MAIL_GUID_128_SIZE*2 ||
+           hex_to_binary(guid, &buf) < 0 ||
            buf.used != MAIL_GUID_128_SIZE) {
                /* not 128bit hex. use a hash of it instead. */
                buffer_set_used_size(&buf, 0);
-               sha1_get_digest(input, strlen(input), sha1_sum);
+               sha1_get_digest(guid, strlen(guid), sha1_sum);
 #if SHA1_RESULTLEN < DBOX_GUID_BIN_LEN
 #  error not possible
 #endif
@@ -301,3 +301,14 @@ void mail_generate_guid_128_hash(const char *input,
                              MAIL_GUID_128_SIZE);
        }
 }
+
+bool mail_guid_128_is_empty(const uint8_t guid_128[MAIL_GUID_128_SIZE])
+{
+       unsigned int i;
+
+       for (i = 0; i < MAILBOX_GUID_SIZE; i++) {
+               if (guid_128[i] != 0)
+                       return FALSE;
+       }
+       return TRUE;
+}