From: Timo Sirainen Date: Wed, 15 Jul 2009 22:29:42 +0000 (-0400) Subject: mail_generate_guid_128_hash() is now a public function. X-Git-Tag: 2.0.alpha1~416 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0f83592ccc280a29bdf01c4475805f6a4bad9abd;p=thirdparty%2Fdovecot%2Fcore.git mail_generate_guid_128_hash() is now a public function. --HG-- branch : HEAD --- diff --git a/src/lib-storage/mail-storage-private.h b/src/lib-storage/mail-storage-private.h index b002d5c782..8bb4a32a2f 100644 --- a/src/lib-storage/mail-storage-private.h +++ b/src/lib-storage/mail-storage-private.h @@ -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); diff --git a/src/lib-storage/mail-storage.c b/src/lib-storage/mail-storage.c index 2898212d46..cf10e9b5ac 100644 --- a/src/lib-storage/mail-storage.c +++ b/src/lib-storage/mail-storage.c @@ -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); diff --git a/src/lib-storage/mail-storage.h b/src/lib-storage/mail-storage.h index 7f8ecc49f4..94a7a6b8c0 100644 --- a/src/lib-storage/mail-storage.h +++ b/src/lib-storage/mail-storage.h @@ -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 diff --git a/src/lib-storage/mail.c b/src/lib-storage/mail.c index 65e6dc8823..29141df949 100644 --- a/src/lib-storage/mail.c +++ b/src/lib-storage/mail.c @@ -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; +}