* camel-object.c: New subclass of GtkObject which is now the base of the Camel object hierarchy. Currently the only difference between CamelObject and GtkObject is that CamelObjects don't start out floating. * *.h: Move a bunch of typedefs to camel-types.h. Standardize on using <camel/foo.h> in header files rather than <foo.h>, "foo.h", or "camel/foo.h". Remove some unneeded includes. * camel-address.c, camel-data-wrapper.c, camel-folder-search.c, camel-folder-summary.c, camel-folder.c, camel-mime-filter.c, camel-mime-parser.c, camel-service.c, camel-session.c, camel-stream.c: These are now subclasses of CamelObject. * camel-data-wrapper.c (set_output_stream): * camel-medium.c (set_content_object): * camel-seekable-substream.c (init_with_seekable_stream_and_bounds): * providers/mbox/camel-mbox-folder.c (mbox_get_message_by_uid): remove gtk_object_sink calls. * camel-stream-buffer.c (init_vbuf): * camel-stream-filter.c (camel_stream_filter_new_with_stream): ref the original stream. * camel-folder-summary.c (camel_folder_summary_finalise): unref the filters when finalizing. * camel-mime-part-utils.c (simple_data_wrapper_construct_from_parser, camel_mime_part_construct_content_from_parser): * camel-mime-part.c (camel_mime_part_set_content): Unref objects that are created only to be handed off to other objects. If they're going to be needed later, they will have been additionally ref'ed by the object that needs them. * providers/pop3/camel-pop3-folder.c (get_message_by_number): unref the message stream after creating the data from it. * camel-stream.c, camel-stream-buffer.c, camel-stream-filter.c, camel-stream-fs.c, camel-stream-mem.c: Remove camel_stream_close, since its semantics are dubious (what happens when you close a stream other people still have references on?). * providers/nntp/camel-nntp-store.c: * providers/smtp/camel-smtp-transport.c: * providers/pop3/camel-pop3-store.c: replace camel_stream_close calls with gtk_object_unref. * providers/mbox/camel-mbox-folder.c: * providers/nntp/camel-nntp-folder.c: * providers/sendmail/camel-sendmail-transport.c: replace camel_stream_close with camel_stream_flush + gtk_object_unref svn path=/trunk/; revision=2882
55 lines
1.6 KiB
C
55 lines
1.6 KiB
C
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
|
|
/*
|
|
* This code implements the MD5 message-digest algorithm.
|
|
* The algorithm is due to Ron Rivest. This code was
|
|
* written by Colin Plumb in 1993, no copyright is claimed.
|
|
* This code is in the public domain; do with it what you wish.
|
|
*
|
|
* Equivalent code is available from RSA Data Security, Inc.
|
|
* This code has been tested against that, and is equivalent,
|
|
* except that you don't need to include two pages of legalese
|
|
* with every copy.
|
|
*
|
|
* To compute the message digest of a chunk of bytes, declare an
|
|
* MD5Context structure, pass it to rpmMD5Init, call rpmMD5Update as
|
|
* needed on buffers full of bytes, and then call rpmMD5Final, which
|
|
* will fill a supplied 16-byte array with the digest.
|
|
*/
|
|
|
|
/* parts of this file are :
|
|
* Written March 1993 by Branko Lankester
|
|
* Modified June 1993 by Colin Plumb for altered md5.c.
|
|
* Modified October 1995 by Erik Troan for RPM
|
|
*/
|
|
|
|
|
|
#ifndef MD5_UTILS_H
|
|
#define MD5_UTILS_H
|
|
|
|
#include <glib.h>
|
|
#include <camel/camel-stream.h>
|
|
|
|
typedef struct {
|
|
guint32 buf[4];
|
|
guint32 bits[2];
|
|
guchar in[64];
|
|
gint doByteReverse;
|
|
|
|
} MD5Context ;
|
|
|
|
|
|
void md5_get_digest (const gchar *buffer, gint buffer_size, guchar digest[16]);
|
|
void md5_get_digest_from_stream (CamelStream *stream, guchar digest[16]);
|
|
|
|
/* use this one when speed is needed */
|
|
/* for use in provider code only */
|
|
void md5_get_digest_from_file (const gchar *filename, guchar digest[16]);
|
|
|
|
/* raw routines */
|
|
void md5_init (MD5Context *ctx);
|
|
void md5_update (MD5Context *ctx, const guchar *buf, guint32 len);
|
|
void md5_final (MD5Context *ctx, guchar digest[16]);
|
|
|
|
|
|
#endif /* MD5_UTILS_H */
|