Base64のエンコードを行います。Base64の各種変形版をサポートします。
[詳解]
#include "nn/nlib/Base64.h"
|
| Base64Encoder () noexcept |
| デフォルトコンストラクタです。 [詳解]
|
|
| ~Base64Encoder () noexcept |
| デストラクタです。
|
|
errno_t | Init (CharOption char_option=BASE64_DEFAULT) noexcept |
| 62番目、63番目の文字を指定してオブジェクトを初期化します。 [詳解]
|
|
errno_t | StepEncode (size_t *written, char *dst, size_t dstsize, const void *src, size_t srcsize) noexcept |
| Base64の分割エンコードを行います。末尾にヌル文字は追加されません。 [詳解]
|
|
template<size_t N> |
errno_t | StepEncode (size_t *written, char(&dst)[N], const void *src, size_t srcsize) noexcept |
| StepEncode(written, dst, N, src, srcsize) を実行します。
|
|
errno_t | Close (size_t *written, char *dst, size_t dstsize, bool padding) noexcept |
| Base64の分割エンコードを終了します。末端にヌル文字は追加されません。 [詳解]
|
|
template<size_t N> |
errno_t | Close (size_t *written, char(&dst)[N], bool padding) noexcept |
| Base64Encoder::Close(written, dst, N, padding) を実行します。
|
|
| operator bool () const |
| 初期化済みでエラーが発生していなければtrue を返します。
|
|
|
static size_t | GetRequiredSize (size_t srcsize) noexcept |
| データのエンコードに必要な領域のサイズを計算します。 [詳解]
|
|
static errno_t | Encode (char *dst, size_t dstsize, const void *src, size_t srcsize, CharOption char_option=BASE64_DEFAULT, bool padding=false) noexcept |
| データを一括してエンコードします。 [詳解]
|
|
template<size_t N> |
static errno_t | Encode (char(&dst)[N], const void *src, size_t srcsize, CharOption char_option=BASE64_DEFAULT, bool padding=false) noexcept |
| Encode(dst, N, src, srcsize, char_option, padding) を実行します。
|
|
static errno_t | Encode (UniquePtr< char[]> &dst, const void *src, size_t srcsize, CharOption char_option=BASE64_DEFAULT, bool padding=false) noexcept |
| データを一括してエンコードします。 [詳解]
|
|
Base64のエンコードを行います。Base64の各種変形版をサポートします。
- 説明
- このクラスはBase64の一括エンコード及び分割エンコードをサポートします。 Base64の各種変形版は
CharOption
型の値を指定することで利用可能です。 パディング出力の有無を指定することも可能です。 ただし、改行を出力することはありません。
- 一括エンコードは以下のようなコードで利用可能です。
- 分割エンコードを行う場合は以下のようなコードになります。 作成された文字列はヌル終端しないので注意が必要です。
....
errno_t MyStepEncode(
char** dst,
size_t* dstsize, uint8_t* src,
size_t srcsize) {
size_t written;
errno_t e = encoder.StepEncode(&written, *dst, *dstsize, src, srcsize)
*dst += written;
*dstsize -= written;
return 0;
}
errno_t MyCloseEncode(
char** dst,
size_t* dstsize) {
errno_t e = encoder.Close(&written, *dst, *dstsize,
false);
*dst += written;
*dstsize -= written;
if (dstsize == 0) { ERROR; }
*dst = '\0';
return 0;
}
- オブジェクトの状態遷移
- オブジェクトの状態遷移の概略は以下のとおりです。
- 参照
- https://www.ietf.org/rfc/rfc2045.txt
Base64.h の 10 行目に定義があります。
§ CharOption
Base64の62番目と63番目の文字のバリエーションを指定できます。
列挙値 |
---|
BASE64_PLUS_SLASH | 62番目の文字に'+' 、63番目の文字に'/' を指定します。
|
BASE64_PLUS_MINUS | 62番目の文字に'+' 、63番目の文字に'-' を指定します。
|
BASE64_MINUS_UNDERSCORE | 62番目の文字に'-' 、63番目の文字に'_' を指定します。
|
BASE64_DOT_MINUS | 62番目の文字に'.' 、63番目の文字に'-' を指定します。
|
BASE64_UNDERSCORE_COLON | 62番目の文字に'_' 、63番目の文字に':' を指定します。
|
BASE64_UNDERSCORE_MINUS | 62番目の文字に'_' 、63番目の文字に'-' を指定します。
|
BASE64_DOT_UNDERSCORE | 62番目の文字に'.' 、63番目の文字に'_' を指定します。
|
BASE64_EXCLAMATION_MINUS | 62番目の文字に'!' 、63番目の文字に'-' を指定します。
|
BASE64_DEFAULT | BASE64_PLUS_SLASHと同じです。
|
BASE64_URL_SAFE | BASE64_MINUS_UNDERSCOREと同じです。
|
Base64.h の 12 行目に定義があります。
§ Base64Encoder()
nn::nlib::Base64Encoder::Base64Encoder |
( |
| ) |
|
|
inlinenoexcept |
デフォルトコンストラクタです。
62番目、63番目の文字を指定してクラスを構築します。
Base64.h の 64 行目に定義があります。
§ Close()
nn::nlib::Base64Encoder::Close |
( |
size_t * |
written, |
|
|
char * |
dst, |
|
|
size_t |
dstsize, |
|
|
bool |
padding |
|
) |
| |
|
noexcept |
Base64の分割エンコードを終了します。末端にヌル文字は追加されません。
- 引数
-
[out] | written | dst に書き込まれたバイト数 |
[out] | dst | エンコードが格納されるバッファ |
[in] | dstsize | dst のサイズ |
[in] | padding | true の場合、最後にパディング文字'='を0-2個出力します。 |
- 戻り値
-
0 | 成功した場合 |
EINVAL | written , dst がNULL だった場合 |
EINVAL | 以前に何らかのエラーが発生している場合 |
ERANGE | dstsize が必要なサイズより小さかった場合 |
- 説明
dst
は4バイト以上の領域が必要です。
§ Encode() [1/2]
nn::nlib::Base64Encoder::Encode |
( |
char * |
dst, |
|
|
size_t |
dstsize, |
|
|
const void * |
src, |
|
|
size_t |
srcsize, |
|
|
CharOption |
char_option = BASE64_DEFAULT , |
|
|
bool |
padding = false |
|
) |
| |
|
staticnoexcept |
データを一括してエンコードします。
- 引数
-
[out] | dst | エンコードされた文字列が出力されるバッファ |
[in] | dstsize | dst のサイズ |
[in] | src | エンコードされるデータ |
[in] | srcsize | src のサイズ |
[in] | char_option | 62番目、63番目の文字を指定。 |
[in] | padding | true の場合、最後にパディング文字'='を0-2個出力します。 |
- 戻り値
- 0ならば成功
§ Encode() [2/2]
データを一括してエンコードします。
- 引数
-
[out] | dst | エンコードされた文字列 |
[in] | src | エンコードされるデータ |
[in] | srcsize | src のサイズ |
[in] | char_option | 62番目、63番目の文字を指定。 |
[in] | padding | true の場合、最後にパディング文字'='を0-2個出力します。 |
- 戻り値
-
0 | 成功した場合 |
EINVAL | src がNULL だった場合 |
ENOMEM | メモリの確保に失敗した場合 |
Base64.h の 47 行目に定義があります。
§ GetRequiredSize()
nn::nlib::Base64Encoder::GetRequiredSize |
( |
size_t |
srcsize | ) |
|
|
inlinestaticnoexcept |
データのエンコードに必要な領域のサイズを計算します。
- 引数
-
[in] | srcsize | エンコードするデータのサイズ |
- 戻り値
((srcsize + 2) / 3) * 4 + 1
を返します。
Base64.h の 27 行目に定義があります。
§ Init()
62番目、63番目の文字を指定してオブジェクトを初期化します。
- 引数
-
[in] | char_option | 62番目、63番目の文字を指定 |
- 戻り値
-
0 | 成功した場合 |
EALREADY | 既に初期化済みでエラーが発生していない場合 |
§ StepEncode()
nn::nlib::Base64Encoder::StepEncode |
( |
size_t * |
written, |
|
|
char * |
dst, |
|
|
size_t |
dstsize, |
|
|
const void * |
src, |
|
|
size_t |
srcsize |
|
) |
| |
|
noexcept |
Base64の分割エンコードを行います。末尾にヌル文字は追加されません。
- 引数
-
[out] | written | dst に書き込まれたバイト数 |
[out] | dst | エンコードが格納されるバッファ |
[in] | dstsize | dst のサイズ |
[in] | src | エンコードされるデータ |
[in] | srcsize | src のサイズ |
- 戻り値
-
0 | 成功した場合 |
EINVAL | written , dst 又はsrc がNULL である場合 |
EINVAL | 以前に何らかのエラーが発生している場合 |
ERANGE | dstsize が必要なサイズより小さかった場合 |
- 説明
dst
に必要なバッファ・サイズは、GetRequiredSize(srcsize)
で計算することができます。
このクラス詳解は次のファイルから抽出されました: