DECLARE_TEST(md5, reference) { md5_t* md5; char md5str[32]; string_t digest; md5 = md5_allocate(); md5_digest_finalize(md5); md5_digest(md5, "testing md5 implementation", 26); md5_digest_finalize(md5); digest = md5_get_digest(md5, md5str, sizeof(md5str)); EXPECT_STRINGEQ(digest, string_const(STRING_CONST("4E24E37E5E06F23210FA1518E97A50C4"))); md5_digest(md5, "testing md5 implementation", 26); md5_digest(md5, "", 0); md5_digest(md5, "further testing md5 implementation with long buffer > 32 bytes", 62); md5_digest_finalize(md5); digest = md5_get_digest(md5, md5str, sizeof(md5str)); EXPECT_STRINGEQ(digest, string_const(STRING_CONST("BD870884942EA7B32A9CB2547B02B871"))); md5_digest(md5, digest_test_string, 2000); md5_digest_finalize(md5); digest = md5_get_digest(md5, md5str, sizeof(md5str)); EXPECT_STRINGEQ(digest, string_const(STRING_CONST("137D3C94230A0E230C4DDFC97EACCCD2"))); md5_deallocate(md5); return 0; }
void password_generate_rpa(const char *pw, unsigned char result[]) { unsigned char *ucs2be_pw; size_t size; ucs2be_pw = ucs2be_str(unsafe_data_stack_pool, pw, &size); md5_get_digest(ucs2be_pw, size, result); safe_memset(ucs2be_pw, 0, size); }
bool mail_user_hash(const char *username, const char *format, unsigned int *hash_r, const char **error_r) { unsigned char md5[MD5_RESULTLEN]; unsigned int i, hash = 0; char *error_dup = NULL; int ret = 1; if (strcmp(format, "%u") == 0) { /* fast path */ md5_get_digest(username, strlen(username), md5); } else if (strcmp(format, "%Lu") == 0) { /* almost as fast path */ T_BEGIN { md5_get_digest(t_str_lcase(username), strlen(username), md5); } T_END; } else T_BEGIN {
DECLARE_TEST(md5, empty) { md5_t* md5; char md5str[32]; string_t digest; md5 = md5_allocate(); md5_digest_finalize(md5); digest = md5_get_digest(md5, md5str, sizeof(md5str)); EXPECT_STRINGEQ(digest, string_const(STRING_CONST("D41D8CD98F00B204E9800998ECF8427E"))); md5_initialize(md5); md5_digest_finalize(md5); digest = md5_get_digest(md5, md5str, sizeof(md5str)); EXPECT_STRINGEQ(digest, string_const(STRING_CONST("D41D8CD98F00B204E9800998ECF8427E"))); md5_deallocate(md5); return 0; }
unsigned int mail_user_hash(const char *username, const char *format) { static struct var_expand_table static_tab[] = { { 'u', NULL, "user" }, { 'n', NULL, "username" }, { 'd', NULL, "domain" }, { '\0', NULL, NULL } }; struct var_expand_table *tab; unsigned char md5[MD5_RESULTLEN]; unsigned int i, hash = 0; if (strcmp(format, "%u") == 0) { /* fast path */ md5_get_digest(username, strlen(username), md5); } else if (strcmp(format, "%Lu") == 0) { /* almost as fast path */ T_BEGIN { md5_get_digest(t_str_lcase(username), strlen(username), md5); } T_END; } else T_BEGIN {
DECLARE_TEST( md5, empty ) { md5_t* md5; char* md5str; md5 = md5_allocate(); md5_digest_finalize( md5 ); md5str = md5_get_digest( md5 ); EXPECT_STREQ( md5str, "D41D8CD98F00B204E9800998ECF8427E" ); string_deallocate( md5str ); md5_initialize( md5 ); md5_digest_finalize( md5 ); md5str = md5_get_digest( md5 ); EXPECT_STREQ( md5str, "D41D8CD98F00B204E9800998ECF8427E" ); string_deallocate( md5str ); md5_deallocate( md5 ); return 0; }
DECLARE_TEST( md5, reference ) { md5_t* md5; char* md5str; md5 = md5_allocate(); md5_digest_finalize( md5 ); md5_digest_raw( md5, "testing md5 implementation", 26 ); md5_digest_finalize( md5 ); md5str = md5_get_digest( md5 ); EXPECT_STREQ( md5str, "4E24E37E5E06F23210FA1518E97A50C4" ); string_deallocate( md5str ); md5_digest_raw( md5, "testing md5 implementation", 26 ); md5_digest_raw( md5, "", 0 ); md5_digest_raw( md5, "further testing md5 implementation with long buffer > 32 bytes", 62 ); md5_digest_finalize( md5 ); md5str = md5_get_digest( md5 ); EXPECT_STREQ( md5str, "BD870884942EA7B32A9CB2547B02B871" ); string_deallocate( md5str ); md5_digest_raw( md5, digest_test_string, 2000 ); md5_digest_finalize( md5 ); md5str = md5_get_digest( md5 ); EXPECT_STREQ( md5str, "137D3C94230A0E230C4DDFC97EACCCD2" ); string_deallocate( md5str ); md5_deallocate( md5 ); return 0; }
static CamelSummaryReferences * decode_references (const char *refstr, const char *irtstr) { struct _camel_header_references *refs, *irt, *r; CamelSummaryReferences *references; unsigned char md5sum[16]; guint32 i, n; refs = camel_header_references_decode (refstr); irt = camel_header_references_inreplyto_decode (irtstr); if (!refs && !irt) return NULL; if (irt) { /* The References field is populated from the `References' and/or `In-Reply-To' headers. If both headers exist, take the first thing in the In-Reply-To header that looks like a Message-ID, and append it to the References header. */ if (refs) { r = irt; while (r->next != NULL) r = r->next; r->next = refs; } refs = irt; } n = camel_header_references_list_size (&refs); references = g_malloc (sizeof (CamelSummaryReferences) + (sizeof (CamelSummaryMessageID) * (n - 1))); references->size = n; for (i = 0, r = refs; r != NULL; i++, r = r->next) { md5_get_digest (r->id, strlen (r->id), md5sum); memcpy (references->references[i].id.hash, md5sum, sizeof (CamelSummaryMessageID)); } camel_header_references_list_clear (&refs); return references; }
static void mbox_save_x_delivery_id(struct mbox_save_context *ctx) { unsigned char md5_result[MD5_RESULTLEN]; buffer_t *buf; string_t *str; void *randbuf; buf = buffer_create_dynamic(pool_datastack_create(), 256); buffer_append(buf, &ioloop_time, sizeof(ioloop_time)); buffer_append(buf, &ioloop_timeval.tv_usec, sizeof(ioloop_timeval.tv_usec)); randbuf = buffer_append_space_unsafe(buf, MBOX_DELIVERY_ID_RAND_BYTES); random_fill_weak(randbuf, MBOX_DELIVERY_ID_RAND_BYTES); md5_get_digest(buf->data, buf->used, md5_result); str = t_str_new(128); str_append(str, "X-Delivery-ID: "); base64_encode(md5_result, sizeof(md5_result), str); str_append_c(str, '\n'); ctx->x_delivery_id_header = i_strdup(str_c(str)); }
static gchar *thumb_std_cache_path(const gchar *path, const gchar *uri, gint local, const gchar *cache_subfolder) { gchar *result = NULL; gchar *cache_base; gchar *md5_text; guchar digest[16]; if (!path || !uri || !cache_subfolder) return NULL; if (local) { gchar *base; base = remove_level_from_path(path); cache_base = g_strconcat(base, "/", THUMB_FOLDER, "/", cache_subfolder, NULL); g_free(base); } else { cache_base = g_strconcat(homedir(), "/", THUMB_FOLDER, "/", cache_subfolder, NULL); } md5_get_digest((guchar *)uri, strlen(uri), digest); md5_text = md5_digest_to_text(digest); if (cache_base && md5_text) { result = g_strconcat(cache_base, "/", md5_text, THUMB_NAME_EXTENSION, NULL); } g_free(cache_base); g_free(md5_text); return result; }
static int decode_envelope (CamelIMAP4Engine *engine, CamelMessageInfo *info, camel_imap4_token_t *token, CamelException *ex) { CamelIMAP4MessageInfo *iinfo = (CamelIMAP4MessageInfo *) info; unsigned char md5sum[16]; char *nstring, *msgid; if (camel_imap4_engine_next_token (engine, token, ex) == -1) return -1; if (token->token != '(') { camel_imap4_utils_set_unexpected_token_error (ex, engine, token); return -1; } if (envelope_decode_date (engine, &iinfo->info.date_sent, ex) == -1) goto exception; /* subject */ if (envelope_decode_nstring (engine, &nstring, TRUE, ex) == -1) goto exception; iinfo->info.needs_free = TRUE; iinfo->info.subject = camel_pstring_strdup (nstring); g_free(nstring); /* from */ if (envelope_decode_addresses (engine, &nstring, ex) == -1) goto exception; iinfo->info.from = camel_pstring_strdup (nstring); g_free(nstring); /* sender */ if (envelope_decode_addresses (engine, &nstring, ex) == -1) goto exception; g_free (nstring); /* reply-to */ if (envelope_decode_addresses (engine, &nstring, ex) == -1) goto exception; g_free (nstring); /* to */ if (envelope_decode_addresses (engine, &nstring, ex) == -1) goto exception; iinfo->info.to = camel_pstring_strdup (nstring); g_free(nstring); /* cc */ if (envelope_decode_addresses (engine, &nstring, ex) == -1) goto exception; iinfo->info.cc = camel_pstring_strdup (nstring); g_free(nstring); /* bcc */ if (envelope_decode_addresses (engine, &nstring, ex) == -1) goto exception; g_free (nstring); /* in-reply-to */ if (envelope_decode_nstring (engine, &nstring, FALSE, ex) == -1) goto exception; if (nstring != NULL) { if (!iinfo->info.references) iinfo->info.references = decode_references (NULL, nstring); g_free (nstring); } /* message-id */ if (envelope_decode_nstring (engine, &nstring, FALSE, ex) == -1) goto exception; if (nstring != NULL) { if ((msgid = camel_header_msgid_decode (nstring))) { md5_get_digest (msgid, strlen (msgid), md5sum); memcpy (iinfo->info.message_id.id.hash, md5sum, sizeof (CamelSummaryMessageID)); g_free (msgid); } g_free (nstring); } if (camel_imap4_engine_next_token (engine, token, ex) == -1) return -1; if (token->token != ')') { camel_imap4_utils_set_unexpected_token_error (ex, engine, token); goto exception; } return 0; exception: return -1; }
static gchar *thumb_loader_std_cache_path(ThumbLoaderStd *tl, gint local, GdkPixbuf *pixbuf, gint fail) { #if 0 gchar *result = NULL; gchar *cache_base; #endif const gchar *folder_size; #if 0 const gchar *uri; gchar *md5_text; guchar digest[16]; #endif gint w, h; if (!tl->source_path || !tl->thumb_uri) return NULL; if (pixbuf) { w = gdk_pixbuf_get_width(pixbuf); h = gdk_pixbuf_get_height(pixbuf); } else { w = tl->requested_width; h = tl->requested_height; } if (fail) { folder_size = THUMB_FOLDER_FAIL; } else if (w > THUMB_SIZE_NORMAL || h > THUMB_SIZE_NORMAL) { folder_size = THUMB_FOLDER_LARGE; } else { folder_size = THUMB_FOLDER_NORMAL; } return thumb_std_cache_path(tl->source_path, (local) ? tl->local_uri : tl->thumb_uri, local, folder_size); #if 0 if (local) { gchar *base; base = remove_level_from_path(tl->source_path); cache_base = g_strconcat(base, "/", THUMB_FOLDER, "/", folder_size, NULL); g_free(base); } else { cache_base = g_strconcat(homedir(), "/", THUMB_FOLDER, "/", folder_size, NULL); } uri = (local) ? tl->local_uri : tl->thumb_uri; md5_get_digest(uri, strlen(uri), digest); md5_text = md5_digest_to_text(digest); if (cache_base && md5_text) { result = g_strconcat(cache_base, "/", md5_text, THUMB_NAME_EXTENSION, NULL); } g_free(cache_base); g_free(md5_text); return result; #endif }