md5 - MD5 の処理 ------------------------------------------------------------------------------ typedef struct _SMD5 SMD5; MD5 ハッシュを表す構造体です。 ------------------------------------------------------------------------------ #define S_GNET_MD5_HASH_LENGTH 16 MD5 ハッシュの長さ(バイト)です。 ------------------------------------------------------------------------------ SMD5* s_gnet_md5_new (const guchar* buffer, guint length); 長さ length の ハッシュデータ buffer から SMD5 構造体を作成します。 buffer: ハッシュデータを格納するバッファ length: buffer の長さ 戻り値: 新規 SMD5 構造体へのポインタ ------------------------------------------------------------------------------ SMD5* s_gnet_md5_new_string (const gchar* str); 16進数のハッシュ文字列 str から SMD5 構造体を作成します。 str: 16進数のハッシュ文字列 戻り値: 新規 SMD5 構造体へのポインタ ------------------------------------------------------------------------------ SMD5* s_gnet_md5_clone (const SMD5* md5); SMD5 構造体 md5 をコピーします。 md5: SMD5 構造体へのポインタ 戻り値: 新規 SMD5 構造体へのポインタ ------------------------------------------------------------------------------ void s_gnet_md5_delete (SMD5* md5); SMD5 構造体 md5 を削除します。 md5: SMD5 構造体へのポインタ ------------------------------------------------------------------------------ SMD5* s_gnet_md5_new_incremental (void); SMD5 構造体をインクリメンタルに作成します。 SMD5 を作成した後、 s_gnet_md5_update() を1度以上ハッシュデータに対して呼ぶ必要があります。 最後に s_gnet_md5_final() を呼んでハッシュ値を計算します。 戻り値: 新規 SMD5 構造体へのポインタ ------------------------------------------------------------------------------ void s_gnet_md5_update (SMD5* md5, const guchar* buffer, guint length); ハッシュ md5 を長さ length のハッシュデータ buffer で更新します。 s_gnet_md5_new_incremental() によって作成されたハッシュに対して s_gnet_md5_final() を呼んで完了するまでにこの関数を数回呼ぶことができます。 md5: SMD5 構造体へのポインタ buffer: 追加するハッシュデータ length: buffer の長さ ------------------------------------------------------------------------------ void s_gnet_md5_final (SMD5* md5); md5 の最終的なハッシュ値を計算します。この関数は s_gnet_md5_new_incremental() によって作成された SMD5 構造体に対してのみ呼ぶ必要があります。 md5: SMD5 構造体へのポインタ ------------------------------------------------------------------------------ gboolean s_gnet_md5_equal (gconstpointer p1, gconstpointer p2); 2つの SMD5 構造体 p1 と p2 が等しいかどうかを比較します。 p1: SMD5 構造体1へのポインタ p2: SMD5 構造体2へのポインタ 戻り値: p1 と p2 が等しい場合 TRUE 等しくない場合 FALSE ------------------------------------------------------------------------------ guint s_gnet_md5_hash (gconstpointer p); GHashTable で使用するための SMD5 構造体に対するハッシュ値を生成します。 この値は MD5 ダイジェストとは異なります。 p: SMD5 構造体へのポインタ 戻り値: p のハッシュ値 ------------------------------------------------------------------------------ gchar* s_gnet_md5_get_digest (const SMD5* md5); md5 の生のハッシュダイジェスト値を含むバッファを取得します。 バッファのサイズは S_GNET_MD5_HASH_LENGTH バイトです。 返った値は SMD5 側で保持しているため解放できません。 md5: SMD5 構造体へのポインタ 戻り値: MD5 ハッシュダイジェストを含むバッファへのポインタ ------------------------------------------------------------------------------ gchar* s_gnet_md5_get_string (const SMD5* md5); ダイジェスト値を16進文字列で取得します。文字列は 2 * S_GNET_MD5_HASH_LENGTH バイトで、ヌル文字で終端しています。 返った文字列は g_free() で解放する必要があります。 md5: SMD5 構造体へのポインタ 戻り値: ダイジェスト値を表す16進文字列 ------------------------------------------------------------------------------ void s_gnet_md5_copy_string (const SMD5* md5, gchar* buffer); ダイジェスト値を16進文字列として buffer にコピーします。文字列はヌル文字で 終端しません。 md5: SMD5 構造体へのポインタ buffer: 少なくとも 2 * S_GNET_MD5_HASH_LENGTH バイトのサイズのバッファ