base64 - BASE64 のエンコードとデコード処理 ------------------------------------------------------------------------------ Base64Decoder struct _Base64Decoder { gint buf_len; gchar buf[4]; }; Base64Decoder は BASE64 のデコードに対してオブジェクト指向的なインタフェースを 提供します。 ------------------------------------------------------------------------------ void base64_encode (gchar *out, const guchar *in, gint inlen); inlen バイトのバイナリデータ in を BASE64 でエンコードし、 out に文字列として出力します。 out の領域は少なくとも inlen * 4 / 3 + 4 以上である必要があります。 out: BASE64 文字列を格納する領域 in: 入力データ inlen: 入力データの長さ(バイト数) ------------------------------------------------------------------------------ gint base64_decode (guchar *out, const gchar *in, gint inlen); BASE64 データ in を inlen の文字数デコードし、 out に出力します。 inlen が負の数の場合、あるいは in の文字列長より大きい場合は '\0' に到達するまでデコードします。 out の領域は少なくとも in の文字列長、あるいは inlen 以上である必要が あります。 out: BASE64 文字列からデコードしたデータを格納する領域 in: BASE64 文字列 inlen: BASE64 文字列からデコードする文字数 ------------------------------------------------------------------------------ Base64Decoder *base64_decoder_new (void); Base64Decoder 構造体を作成します。 作成した Base64Decoder 構造体は base64_decoder_free() で解放する 必要があります。 戻り値: 新規に作成した Base64Decoder 構造体へのポインタ ------------------------------------------------------------------------------ void base64_decoder_free (Base64Decoder *decoder); base64_decoder_new() で作成した Base64Decoder 構造体を解放します。 decoder: Base64Decoder 構造体へのポインタ ------------------------------------------------------------------------------ gint base64_decoder_decode (Base64Decoder *decoder, const gchar *in, guchar *out); BASE64 文字列 in をデコードし、 out に出力します。 out の領域は少なくとも in の文字列長以上である必要があります。 in が4バイト境界以外の場所で切れていた場合、その余りの部分はバッファされ、 次の呼び出し時に in に渡された文字列と結合して使用されます。 decoder: Base64Decoder 構造体へのポインタ in: BASE64 文字列 out: BASE64 文字列からデコードしたデータを格納する領域