[ja] update docs

This commit is contained in:
Masaki I.
2025-10-26 00:51:40 +09:00
committed by Masaki Iwai
parent 5922b5def5
commit 87c4646e97
59 changed files with 12219 additions and 5370 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1,40 +1,51 @@
/*!
\ingroup ARC4
\brief この関数は、バッファ内の入力メッセージを暗号化し、出力バッファーに暗号文を配置するか、またはバッファから暗号文を復号化したり、ARC4暗号化を使用して、出力バッファーOUTを出力したりします。この関数は暗号化と復号の両方に使用されます。この方法が呼び出される可能性がある場合は、まずWC_ARC4SETKEYを使用してARC4構造を初期化する必要があります。
\brief この関数は、バッファinから入力メッセージを暗号化し、暗号文を出力バッファoutに格納するか、またはバッファinから暗号文を復号し、平文を出力バッファoutに格納します。ARC4暗号化を使用します。この関数は暗号化と復号の両方に使用されます。このメソッドを呼び出す前に、wc_Arc4SetKeyを使用してARC4構造を初期化する必要があります。
\return none
\param arc4 メッセージの処理に使用されるARC4構造へのポインタ
\param out 処理されたメッセージを保存する出力バッファへのポインタ
\param in プロセスするメッセージを含む入力バッファへのポインタ
\param arc4 メッセージを処理するために使用されるARC4構造体へのポインタ
\param out 処理されたメッセージを格納する出力バッファへのポインタ
\param in 処理するメッセージを含む入力バッファへのポインタ
\param length 処理するメッセージの長さ
_Example_
\code
Arc4 enc;
byte key[] = { key to use for encryption };
byte key[] = { 暗号化に使用するキー };
wc_Arc4SetKey(&enc, key, sizeof(key));
byte plain[] = { plain text to encode };
byte plain[] = { エンコードする平文 };
byte cipher[sizeof(plain)];
byte decrypted[sizeof(plain)];
// encrypt the plain into cipher
// plainをcipherに暗号化
wc_Arc4Process(&enc, cipher, plain, sizeof(plain));
// decrypt the cipher
// cipherを復号
wc_Arc4Process(&enc, decrypted, cipher, sizeof(cipher));
\endcode
\sa wc_Arc4SetKey
*/
int wc_Arc4Process(Arc4* arc4, byte* out, const byte* in, word32 length);
/*!
\ingroup ARC4
\brief この関数はARC4オブジェクトのキーを設定し、それを暗号として使用するために初期化します。WC_ARC4PROCESSを使用した暗号化に使用する前に呼び出される必要があります。
\brief この関数は、ARC4オブジェクトのキーを設定し、暗号として使用するために初期化します。wc_Arc4Processで暗号化に使用する前に呼び出す必要があります。
\return none
\param arc4 暗号化に使用されるARC4構造へのポインタ
\param key ARC4構造を初期化するためのキー
\param arc4 暗号化に使用されるarc4構造体へのポインタ
\param key arc4構造体を初期化するために使用するキー
\param length arc4構造体を初期化するために使用するキーの長さ
_Example_
\code
Arc4 enc;
byte key[] = { initialize with key to use for encryption };
byte key[] = { 暗号化に使用するキーで初期化 };
wc_Arc4SetKey(&enc, key, sizeof(key));
\endcode
\sa wc_Arc4Process
*/
int wc_Arc4SetKey(Arc4* arc4, const byte* key, word32 length);
int wc_Arc4SetKey(Arc4* arc4, const byte* key, word32 length);

View File

@@ -0,0 +1,452 @@
/*!
\ingroup ASCON
\brief この関数は、ハッシュ化のためにASCONコンテキストを初期化します。
\return 0 成功時。
\return BAD_FUNC_ARG コンテキストポインタがNULLの場合。
\param a 初期化するASCONコンテキストへのポインタ。
_Example_
\code
wc_AsconHash256 a;
byte data[] = {0x01, 0x02, 0x03};
byte hash[ASCON_HASH256_SZ];
if (wc_AsconHash256_Init(&a) != 0)
// エラーを処理
if (wc_AsconHash256_Update(&ctx, data, sizeof(data)) != 0)
// エラーを処理
if (wc_AsconHash256_Final(&ctx, hash, sizeof(hash)) != 0)
// エラーを処理
// hashに最終ハッシュが含まれます
\endcode
\sa wc_AsconHash256_Update
\sa wc_AsconHash256_Final
*/
int wc_AsconHash256_Init(wc_AsconHash256* a);
/*!
\ingroup ASCON
\brief この関数は、入力データでASCONハッシュを更新します。
\return 0 成功時。
\return BAD_FUNC_ARG コンテキストまたは入力ポインタがNULLの場合。
\param ctx ASCONコンテキストへのポインタ。
\param in 入力データへのポインタ。
\param inSz 入力データのサイズ。
_Example_
\code
wc_AsconHash256 a;
byte data[] = {0x01, 0x02, 0x03};
byte hash[ASCON_HASH256_SZ];
if (wc_AsconHash256_Init(&a) != 0)
// エラーを処理
if (wc_AsconHash256_Update(&ctx, data, sizeof(data)) != 0)
// エラーを処理
if (wc_AsconHash256_Final(&ctx, hash, sizeof(hash)) != 0)
// エラーを処理
// hashに最終ハッシュが含まれます
\endcode
\sa wc_AsconHash256_Init
\sa wc_AsconHash256_Final
*/
int wc_AsconHash256_Update(wc_AsconHash256* a, const byte* data, word32 dataSz);
/*!
\ingroup ASCON
\brief この関数は、ASCONハッシュを完了し、出力を生成します。
\return 0 成功時。
\return BAD_FUNC_ARG コンテキストまたは出力ポインタがNULLの場合。
\param ctx ASCONコンテキストへのポインタ。
\param out 出力バッファへのポインタ。
\param outSz 出力バッファのサイズ、少なくともASCON_HASH256_SZである必要があります。
_Example_
\code
wc_AsconHash256 a;
byte data[] = {0x01, 0x02, 0x03};
byte hash[ASCON_HASH256_SZ];
if (wc_AsconHash256_Init(&a) != 0)
// エラーを処理
if (wc_AsconHash256_Update(&ctx, data, sizeof(data)) != 0)
// エラーを処理
if (wc_AsconHash256_Final(&ctx, hash, sizeof(hash)) != 0)
// エラーを処理
// hashに最終ハッシュが含まれます
\endcode
\sa wc_AsconHash256_Init
\sa wc_AsconHash256_Update
*/
int wc_AsconHash256_Final(wc_AsconHash256* a, byte* hash);
/*!
\ingroup ASCON
\brief この関数は、新しいAscon AEADコンテキストを割り当てて初期化します。
\return pointer 新しく割り当てられたAscon AEADコンテキストへのポインタ
\return NULL 失敗時。
_Example_
\code
wc_AsconAEAD128* a = wc_AsconAEAD128_New();
if (a == NULL) {
// 割り当てエラーを処理
}
wc_AsconAEAD128_Free(a);
\endcode
\sa wc_AsconAEAD128_Free
*/
wc_AsconAEAD128* wc_AsconAEAD128_New(void);
/*!
\ingroup ASCON
\brief この関数は、Ascon AEADコンテキストに関連付けられたリソースを解放します。
\param a 解放するAscon AEADコンテキストへのポインタ。
_Example_
\code
wc_AsconAEAD128* a = wc_AsconAEAD128_New();
if (a == NULL) {
// 割り当てエラーを処理
}
// コンテキストを使用
wc_AsconAEAD128_Free(a);
\endcode
\sa wc_AsconAEAD128_New
*/
void wc_AsconAEAD128_Free(wc_AsconAEAD128 *a);
/*!
\ingroup ASCON
\brief この関数は、Ascon AEADコンテキストを初期化します。
\return 0 成功時。
\return BAD_FUNC_ARG コンテキストまたは出力ポインタがNULLの場合。
\param a 初期化するAscon AEADコンテキストへのポインタ。
_Example_
\code
AsconAead a;
if (wc_AsconAEAD128_Init(&a) != 0)
// エラーを処理
\endcode
\sa wc_AsconAeadEncrypt
\sa wc_AsconAeadDecrypt
*/
int wc_AsconAEAD128_Init(wc_AsconAEAD128* a);
/*!
\ingroup ASCON
\brief この関数は、Ascon AEADコンテキストを非初期化します。コンテキストは解放しません。
\param a 非初期化するAscon AEADコンテキストへのポインタ。
_Example_
\code
AsconAead a;
if (wc_AsconAEAD128_Init(&a) != 0)
// エラーを処理
wc_AsconAEAD128_Clear(&a);
\endcode
\sa wc_AsconAeadEncrypt
\sa wc_AsconAeadDecrypt
*/
void wc_AsconAEAD128_Clear(wc_AsconAEAD128 *a);
/*!
\ingroup ASCON
\brief この関数は、Ascon AEADコンテキストの鍵を設定します。
\return 0 成功時。
\return BAD_FUNC_ARG コンテキストまたは鍵ポインタがNULLの場合。
\return BAD_STATE_E 鍵が既に設定されている場合。
\param a 初期化されたAscon AEADコンテキストへのポインタ。
\param key ASCON_AEAD128_KEY_SZの長さの鍵バッファへのポインタ。
_Example_
\code
wc_AsconAEAD128 a;
byte key[ASCON_AEAD128_KEY_SZ] = { ... };
if (wc_AsconAEAD128_Init(&a) != 0)
// エラーを処理
if (wc_AsconAEAD128_SetKey(&a, key) != 0)
// エラーを処理
\endcode
\sa wc_AsconAEAD128_Init
\sa wc_AsconAEAD128_SetNonce
\sa wc_AsconAEAD128_SetAD
*/
int wc_AsconAEAD128_SetKey(wc_AsconAEAD128* a, const byte* key);
/*!
\ingroup ASCON
\brief この関数は、Ascon AEADコンテキストのnonceを設定します。
\return 0 成功時。
\return BAD_FUNC_ARG コンテキストまたはnonceポインタがNULLの場合。
\return BAD_STATE_E nonceが既に設定されている場合。
\param a 初期化されたAscon AEADコンテキストへのポインタ。
\param nonce ASCON_AEAD128_NONCE_SZの長さのnonceバッファへのポインタ。
_Example_
\code
wc_AsconAEAD128 a;
byte nonce[ASCON_AEAD128_NONCE_SZ] = { ... };
if (wc_AsconAEAD128_Init(&a) != 0)
// エラーを処理
if (wc_AsconAEAD128_SetNonce(&a, nonce) != 0)
// エラーを処理
\endcode
\sa wc_AsconAEAD128_Init
\sa wc_AsconAEAD128_SetKey
\sa wc_AsconAEAD128_SetAD
*/
int wc_AsconAEAD128_SetNonce(wc_AsconAEAD128* a, const byte* nonce);
/*!
\ingroup ASCON
\brief この関数は、Ascon AEADコンテキストの関連データを設定します。
\return 0 成功時。
\return BAD_FUNC_ARG コンテキストまたは関連データポインタがNULLの場合。
\return BAD_STATE_E 鍵またはnonceが設定されていない場合。
\param a 初期化されたAscon AEADコンテキストへのポインタ。
\param ad 関連データバッファへのポインタ。
\param adSz 関連データバッファのサイズ。
_Example_
\code
wc_AsconAEAD128 a;
byte key[ASCON_AEAD128_KEY_SZ] = { ... };
byte nonce[ASCON_AEAD128_NONCE_SZ] = { ... };
byte ad[] = { ... };
if (wc_AsconAEAD128_Init(&a) != 0)
// エラーを処理
if (wc_AsconAEAD128_SetKey(&a, key) != 0)
// エラーを処理
if (wc_AsconAEAD128_SetNonce(&a, nonce) != 0)
// エラーを処理
if (wc_AsconAEAD128_SetAD(&a, ad, sizeof(ad)) != 0)
// エラーを処理
\endcode
\sa wc_AsconAEAD128_Init
\sa wc_AsconAEAD128_SetKey
\sa wc_AsconAEAD128_SetNonce
*/
int wc_AsconAEAD128_SetAD(wc_AsconAEAD128* a, const byte* ad, word32 adSz);
/*!
\ingroup ASCON
\brief この関数は、Ascon AEADを使用して平文メッセージを暗号化します。出力はoutバッファに格納されます。出力の長さは入力の長さと等しくなります。
\return 0 成功時。
\return BAD_FUNC_ARG コンテキストまたは出力ポインタがNULLの場合、または入力サイズが0より大きいのに入力がNULLの場合。
\return BAD_STATE_E 鍵、nonce、または追加データが設定されていない場合、またはコンテキストが以前に復号に使用された場合。
\param a 初期化されたAscon AEADコンテキストへのポインタ。
\param out 暗号文を格納する出力バッファへのポインタ。
\param in 平文メッセージを含む入力バッファへのポインタ。
\param inSz 入力バッファの長さ。
_Example_
\code
wc_AsconAEAD128 a;
byte key[ASCON_AEAD128_KEY_SZ] = { ... };
byte nonce[ASCON_AEAD128_NONCE_SZ] = { ... };
byte plaintext[PLAIN_TEXT_SIZE] = { ... };
byte ciphertext[CIPHER_TEXT_SIZE];
byte tag[ASCON_AEAD128_TAG_SZ] = { ... };
if (wc_AsconAeadInit(&a) != 0)
// エラーを処理
if (wc_AsconAEAD128_SetKey(&a, key) != 0)
// エラーを処理
if (wc_AsconAEAD128_SetNonce(&a, nonce) != 0)
// エラーを処理
if (wc_AsconAEAD128_SetAD(&a, ad, sizeof(ad)) != 0)
// エラーを処理
if (wc_AsconAEAD128_EncryptUpdate(&a, ciphertext, plaintext,
sizeof(plaintext)) != 0)
// エラーを処理
if (wc_AsconAEAD128_EncryptFinal(&a, tag) != 0)
// エラーを処理
\endcode
\sa wc_AsconAeadInit
\sa wc_AsconAEAD128_Clear
\sa wc_AsconAEAD128_SetKey
\sa wc_AsconAEAD128_SetNonce
\sa wc_AsconAEAD128_SetAD
\sa wc_AsconAEAD128_EncryptFinal
\sa wc_AsconAEAD128_DecryptUpdate
\sa wc_AsconAEAD128_DecryptFinal
*/
int wc_AsconAEAD128_EncryptUpdate(wc_AsconAEAD128* a, byte* out, const byte* in,
word32 inSz);
/*!
\ingroup ASCON
\brief この関数は、Ascon AEADを使用した暗号化プロセスを完了し、認証タグを生成します。
\return 0 成功時。
\return BAD_FUNC_ARG コンテキストまたは出力ポインタがNULLの場合、または入力サイズが0より大きいのに入力がNULLの場合。
\return BAD_STATE_E 鍵、nonce、または追加データが設定されていない場合、またはコンテキストが以前に復号に使用された場合。
\param a 初期化されたAscon AEADコンテキストへのポインタ。
\param tag 認証タグを格納する出力バッファへのポインタ。
_Example_
\code
wc_AsconAEAD128 a;
byte key[ASCON_AEAD128_KEY_SZ] = { ... };
byte nonce[ASCON_AEAD128_NONCE_SZ] = { ... };
byte plaintext[PLAIN_TEXT_SIZE] = { ... };
byte ciphertext[CIPHER_TEXT_SIZE];
byte tag[ASCON_AEAD128_TAG_SZ] = { ... };
if (wc_AsconAeadInit(&a) != 0)
// エラーを処理
if (wc_AsconAEAD128_SetKey(&a, key) != 0)
// エラーを処理
if (wc_AsconAEAD128_SetNonce(&a, nonce) != 0)
// エラーを処理
if (wc_AsconAEAD128_SetAD(&a, ad, sizeof(ad)) != 0)
// エラーを処理
if (wc_AsconAEAD128_EncryptUpdate(&a, ciphertext, plaintext,
sizeof(plaintext)) != 0)
// エラーを処理
if (wc_AsconAEAD128_EncryptFinal(&a, tag) != 0)
// エラーを処理
\endcode
\sa wc_AsconAEAD128_Init
\sa wc_AsconAEAD128_SetKey
\sa wc_AsconAEAD128_SetNonce
\sa wc_AsconAEAD128_SetAD
\sa wc_AsconAEAD128_EncryptUpdate
\sa wc_AsconAEAD128_DecryptUpdate
\sa wc_AsconAEAD128_DecryptFinal
*/
int wc_AsconAEAD128_EncryptFinal(wc_AsconAEAD128* a, byte* tag);
/*!
\ingroup ASCON
\brief この関数は、Ascon AEADを使用した復号プロセスを更新します。出力はoutバッファに格納されます。出力の長さは入力の長さと等しくなります。
\return 0 成功時。
\return BAD_FUNC_ARG コンテキストまたは出力ポインタがNULLの場合、または入力サイズが0より大きいのに入力がNULLの場合。
\return BAD_STATE_E 鍵、nonce、または追加データが設定されていない場合、またはコンテキストが以前に暗号化に使用された場合。
\param a 初期化されたAscon AEADコンテキストへのポインタ。
\param out 平文を格納する出力バッファへのポインタ。
\param in 暗号文メッセージを含む入力バッファへのポインタ。
\param inSz 入力バッファの長さ。
_Example_
\code
wc_AsconAEAD128 a;
byte key[ASCON_AEAD128_KEY_SZ] = { ... };
byte nonce[ASCON_AEAD128_NONCE_SZ] = { ... };
byte ciphertext[CIPHER_TEXT_SIZE] = { ... };
byte plaintext[PLAIN_TEXT_SIZE];
byte tag[ASCON_AEAD128_TAG_SZ] = { ... };
if (wc_AsconAeadInit(&a) != 0)
// エラーを処理
if (wc_AsconAEAD128_SetKey(&a, key) != 0)
// エラーを処理
if (wc_AsconAEAD128_SetNonce(&a, nonce) != 0)
// エラーを処理
if (wc_AsconAEAD128_SetAD(&a, ad, sizeof(ad)) != 0)
// エラーを処理
if (wc_AsconAEAD128_DecryptUpdate(&a, plaintext, ciphertext,
sizeof(ciphertext)) != 0)
// エラーを処理
if (wc_AsconAEAD128_DecryptFinal(&a, tag) != 0)
// エラーを処理
\endcode
\sa wc_AsconAEAD128_Init
\sa wc_AsconAEAD128_SetKey
\sa wc_AsconAEAD128_SetNonce
\sa wc_AsconAEAD128_SetAD
\sa wc_AsconAEAD128_EncryptUpdate
\sa wc_AsconAEAD128_EncryptFinal
\sa wc_AsconAEAD128_DecryptFinal
*/
int wc_AsconAEAD128_DecryptUpdate(wc_AsconAEAD128* a, byte* out, const byte* in,
word32 inSz);
/*!
\ingroup ASCON
\brief この関数は、Ascon AEADを使用した復号プロセスを完了し、認証タグを検証します。
\return 0 成功時。
\return BAD_FUNC_ARG コンテキストまたはタグポインタがNULLの場合。
\return BAD_STATE_E 鍵、nonce、または追加データが設定されていない場合、またはコンテキストが以前に暗号化に使用された場合。
\return ASCON_AUTH_E 認証タグが一致しない場合。
\param a 初期化されたAscon AEADコンテキストへのポインタ。
\param tag 検証する認証タグを含むバッファへのポインタ
_Example_
\code
wc_AsconAEAD128 a;
byte key[ASCON_AEAD128_KEY_SZ] = { ... };
byte nonce[ASCON_AEAD128_NONCE_SZ] = { ... };
byte ciphertext[CIPHER_TEXT_SIZE] = { ... };
byte plaintext[PLAIN_TEXT_SIZE];
byte tag[ASCON_AEAD128_TAG_SZ] = { ... };
if (wc_AsconAeadInit(&a) != 0)
// エラーを処理
if (wc_AsconAEAD128_SetKey(&a, key) != 0)
// エラーを処理
if (wc_AsconAEAD128_SetNonce(&a, nonce) != 0)
// エラーを処理
if (wc_AsconAEAD128_SetAD(&a, ad, sizeof(ad)) != 0)
// エラーを処理
if (wc_AsconAEAD128_DecryptUpdate(&a, plaintext, ciphertext,
sizeof(ciphertext)) != 0)
// エラーを処理
if (wc_AsconAEAD128_DecryptFinal(&a, tag) != 0)
// エラーを処理
\endcode
\sa wc_AsconAEAD128_Init
\sa wc_AsconAEAD128_SetKey
\sa wc_AsconAEAD128_SetNonce
\sa wc_AsconAEAD128_SetAD
\sa wc_AsconAEAD128_DecryptUpdate
\sa wc_AsconAEAD128_EncryptUpdate
\sa wc_AsconAEAD128_EncryptFinal
*/
int wc_AsconAEAD128_DecryptFinal(wc_AsconAEAD128* a, const byte* tag);

File diff suppressed because it is too large Load Diff

View File

@@ -1,39 +1,51 @@
/*!
\ingroup BLAKE2
\brief この関数はBlake2 Hash関数で使用するためのBlake2b構造を初期化します。
\return 0 Blake2B構造の初期化に成功し、ダイジェストサイズを設定したときに返されます。
\param b2b 初期化するためにBlake2b構造へのポインタ
\brief この関数は、Blake2ハッシュ関数で使用するためのBlake2b構造体を初期化します。
\return 0 Blake2b構造体の初期化とダイジェストサイズの設定に成功した場合に返されます。
\param b2b 初期化するBlake2b構造体へのポインタ
\param digestSz 実装するblake 2ダイジェストの長さ
_Example_
\code
Blake2b b2b;
// initialize Blake2b structure with 64 byte digest
// 64バイトダイジェストでBlake2b構造体を初期化
wc_InitBlake2b(&b2b, 64);
\endcode
\sa wc_Blake2bUpdate
*/
int wc_InitBlake2b(Blake2b* b2b, word32 digestSz);
/*!
\ingroup BLAKE2
\brief この関数は、与えられた入力データとBlake2Bハッシュを更新します。この関数は、wc_initblake2bの後に呼び出され、最後のハッシュwc_blake2bfinalの準備ができているまで繰り返します。
\return 0 与えられたデータを使用してBlake2B構造を正常に更新すると返されます。
\return -1 入力データの圧縮中に障害が発生した場合
\param b2b 更新するBlake2b構造へのポインタ
\param data 追加するデータを含むバッファへのポインタ
\brief この関数は、指定された入力データでBlake2bハッシュを更新します。この関数はwc_InitBlake2bの後に呼び出され、最終ハッシュ(wc_Blake2bFinal)の準備ができるまで繰り返されます。
\return 0 指定されたデータでBlake2b構造体の更新に成功した場合に返されます
\return -1 入力データの圧縮中に失敗した場合に返されます
\param b2b 更新するBlake2b構造体へのポインタ
\param data 追加するデータを含むバッファへのポインタ
\param sz 追加する入力データの長さ
_Example_
\code
int ret;
Blake2b b2b;
// initialize Blake2b structure with 64 byte digest
// 64バイトダイジェストでBlake2b構造体を初期化
wc_InitBlake2b(&b2b, 64);
byte plain[] = { // initialize input };
byte plain[] = { // 入力を初期化 };
ret = wc_Blake2bUpdate(&b2b, plain, sizeof(plain));
if( ret != 0) {
// error updating blake2b
// blake2bの更新エラー
}
\endcode
\sa wc_InitBlake2b
\sa wc_Blake2bFinal
*/
@@ -41,26 +53,34 @@ int wc_Blake2bUpdate(Blake2b* b2b, const byte* data, word32 sz);
/*!
\ingroup BLAKE2
\brief この関数は、以前に供給された入力データのBlake2bハッシュを計算します。出力ハッシュは長さREQUESTSZ、あるいは要求された場合はB2B構造のDigestSZを使用します。この関数は、wc_initblake2bの後に呼び出され、wc_blake2bupdateは必要な各入力データに対して処理されています。
\return 0 Blake2B Hashの計算に成功したときに返されました
\return -1 blake2bハッシュを解析している間に失敗がある場合
\param b2b 更新するBlake2b構造へのポインタ
\param final Blake2Bハッシュを保存するバッファへのポインタ。長さrequestszにする必要があります
\brief この関数は、以前に提供された入力データのBlake2bハッシュを計算します。出力ハッシュの長さはrequestSzになります。requestSz==0の場合は、b2b構造体のdigestSzが使用されます。この関数は、wc_InitBlake2bの後、および必要な各入力データに対してwc_Blake2bUpdateが処理された後に呼び出す必要があります。
\return 0 Blake2bハッシュの計算に成功した場合に返されます
\return -1 Blake2bハッシュの解析中に失敗した場合に返されます
\param b2b 更新するBlake2b構造体へのポインタ
\param final blake2bハッシュを格納するバッファへのポインタ。
requestSzの長さである必要があります
\param requestSz 計算するダイジェストの長さ。これがゼロの場合、
代わりにb2b->digestSzが使用されます
_Example_
\code
int ret;
Blake2b b2b;
byte hash[64];
// initialize Blake2b structure with 64 byte digest
// 64バイトダイジェストでBlake2b構造体を初期化
wc_InitBlake2b(&b2b, 64);
... // call wc_Blake2bUpdate to add data to hash
... // wc_Blake2bUpdateを呼び出してハッシュにデータを追加
ret = wc_Blake2bFinal(&b2b, hash, 64);
if( ret != 0) {
// error generating blake2b hash
// blake2bハッシュの生成エラー
}
\endcode
\sa wc_InitBlake2b
\sa wc_Blake2bUpdate
*/
int wc_Blake2bFinal(Blake2b* b2b, byte* final, word32 requestSz);
int wc_Blake2bFinal(Blake2b* b2b, byte* final, word32 requestSz);

View File

@@ -1,22 +1,28 @@
/*!
\ingroup openSSL
\brief この関数は、次の数学「R =A ^ PM」を実行します。
\return SSL_SUCCESS 数学操作をうまく実行します
\return SSL_FAILURE エラーケースに遭遇した場合
\param r 結果を保持するための構造
\param a 電力で上げられる値
\param p によって上げる力。
\param m 使用率
\brief この関数は次の数学演算を実行します "r = (a^p) % m"
\return SSL_SUCCESS 数学演算が正常に実行された場合
\return SSL_FAILURE エラーケースが発生した場合
\param r 結果を保持する構造体。
\param a 累乗される値。
\param p aを累乗する指数。
\param m 使用する剰余。
\param ctx 現在wolfSSLでは使用されていないため、NULLにできます。
_Example_
\code
WOLFSSL_BIGNUM r,a,p,m;
int ret;
// set big number values
// big number値を設定
ret = wolfSSL_BN_mod_exp(r, a, p, m, NULL);
// check ret value
// ret値を確認
\endcode
\sa wolfSSL_BN_new
\sa wolfSSL_BN_free
*/
int wolfSSL_BN_mod_exp(WOLFSSL_BIGNUM *r, const WOLFSSL_BIGNUM *a,
const WOLFSSL_BIGNUM *p, const WOLFSSL_BIGNUM *m, WOLFSSL_BN_CTX *ctx);
const WOLFSSL_BIGNUM *p, const WOLFSSL_BIGNUM *m, WOLFSSL_BN_CTX *ctx);

View File

@@ -1,23 +1,29 @@
/*!
\ingroup Camellia
\brief この関数は、Camelliaオブジェクトのキーと初期化ベクトルを設定し、それを暗号として使用するために初期化します。
\return 0 キーと初期化ベクトルを正常に設定すると返されます
\return BAD_FUNC_ARG 入力引数の1つがエラー処理がある場合に返されます
\return MEMORY_E xmallocでメモリを割り当てるエラーがある場合
\param cam キーとIVを設定する椿構造へのポインタ
\param key 暗号化と復号化に使用する16,24、または32バイトのキーを含むバッファへのポインタ
\param len 渡されたキーの長さ
\brief この関数は、camelliaオブジェクトのキーと初期化ベクトルを設定し、暗号として使用するために初期化します
\return 0 キーと初期化ベクトルの設定に成功した場合に返されます
\return BAD_FUNC_ARG 入力引数の1つの処理中にエラーが発生した場合に返されます
\return MEMORY_E XMALLOCでメモリ割り当て中にエラーが発生した場合に返されます
\param cam キーとivを設定するcamellia構造体へのポインタ
\param key 暗号化と復号に使用する16、24、または32バイトのキーを含むバッファへのポインタ
\param len 渡されるキーの長さ
\param iv このcamellia構造体で使用する16バイトの初期化ベクトルを含むバッファへのポインタ
_Example_
\code
Camellia cam;
byte key[32];
// initialize key
// キーを初期化
byte iv[16];
// initialize iv
// ivを初期化
if( wc_CamelliaSetKey(&cam, key, sizeof(key), iv) != 0) {
// error initializing camellia structure
// camellia構造体の初期化エラー
}
\endcode
\sa wc_CamelliaEncryptDirect
\sa wc_CamelliaDecryptDirect
\sa wc_CamelliaCbcEncrypt
@@ -28,38 +34,50 @@ int wc_CamelliaSetKey(Camellia* cam,
/*!
\ingroup Camellia
\brief この関数は、Camelliaオブジェクトの初期化ベクトルを設定します。
\return 0 キーと初期化ベクトルを正常に設定すると返されます
\return BAD_FUNC_ARG 入力引数の1つがエラー処理がある場合に返されます
\param cam IVを設定する椿構造へのポインタ
\brief この関数は、camelliaオブジェクトの初期化ベクトルを設定します
\return 0 キーと初期化ベクトルの設定に成功した場合に返されます
\return BAD_FUNC_ARG 入力引数の1つの処理中にエラーが発生した場合に返されます
\param cam ivを設定するcamellia構造体へのポインタ
\param iv このcamellia構造体で使用する16バイトの初期化ベクトルを含むバッファへのポインタ
_Example_
\code
Camellia cam;
byte iv[16];
// initialize iv
// ivを初期化
if( wc_CamelliaSetIV(&cam, iv) != 0) {
// error initializing camellia structure
// camellia構造体の初期化エラー
}
\endcode
\sa wc_CamelliaSetKey
*/
int wc_CamelliaSetIV(Camellia* cam, const byte* iv);
/*!
\ingroup Camellia
\brief この機能は、提供されたCamelliaオブジェクトを使用して1ブロック暗号化します。それはバッファーの最初の16バイトブロックを解析し、暗号化結果をバッファアウトに格納します。この機能を使用する前に、WC_CAMELLIASETKEYを使用してCamelliaオブジェクトを初期化する必要があります。
\return none いいえ返します。
\param cam 暗号化に使用する椿構造へのポインタ
\param out 暗号化されたブロックを保存するバッファへのポインタ
\brief この関数は、提供されたcamelliaオブジェクトを使用して1ブロックの暗号化を行います。バッファinから最初の16バイトブロックを解析し、暗号化された結果をバッファoutに格納します。この関数を使用する前に、wc_CamelliaSetKeyを使用してcamelliaオブジェクトを初期化する必要があります。
\return none 戻り値なし。
\param cam 暗号化に使用するcamellia構造体へのポインタ
\param out 暗号化されたブロックを格納するバッファへのポインタ
\param in 暗号化する平文ブロックを含むバッファへのポインタ
_Example_
\code
Camellia cam;
// initialize cam structure with key and iv
byte plain[] = { // initialize with message to encrypt };
// キーとivでcam構造体を初期化
byte plain[] = { // 暗号化するメッセージで初期化 };
byte cipher[16];
wc_CamelliaEncryptDirect(&ca, cipher, plain);
\endcode
\sa wc_CamelliaDecryptDirect
*/
int wc_CamelliaEncryptDirect(Camellia* cam, byte* out,
@@ -67,19 +85,25 @@ int wc_CamelliaEncryptDirect(Camellia* cam, byte* out,
/*!
\ingroup Camellia
\brief この機能は、提供されたCamelliaオブジェクトを使用して1ブロック復号化します。それはバッファ内の最初の16バイトブロックを解析し、それを復号化し、結果をバッファアウトに格納します。この機能を使用する前に、WC_CAMELLIASETKEYを使用してCamelliaオブジェクトを初期化する必要があります。
\return none いいえ返します。
\param cam 暗号化に使用する椿構造へのポインタ
\param out 復号化された平文ブロックを保存するバッファへのポインタ
\brief この関数は、提供されたcamelliaオブジェクトを使用して1ブロックの復号を行います。バッファinから最初の16バイトブロックを解析し、復号して、結果をバッファoutに格納します。この関数を使用する前に、wc_CamelliaSetKeyを使用してcamelliaオブジェクトを初期化する必要があります。
\return none 戻り値なし。
\param cam 暗号化に使用するcamellia構造体へのポインタ
\param out 復号された平文ブロックを格納するバッファへのポインタ
\param in 復号する暗号文ブロックを含むバッファへのポインタ
_Example_
\code
Camellia cam;
// initialize cam structure with key and iv
byte cipher[] = { // initialize with encrypted message to decrypt };
// キーとivでcam構造体を初期化
byte cipher[] = { // 復号する暗号化されたメッセージで初期化 };
byte decrypted[16];
wc_CamelliaDecryptDirect(&cam, decrypted, cipher);
\endcode
\sa wc_CamelliaEncryptDirect
*/
int wc_CamelliaDecryptDirect(Camellia* cam, byte* out,
@@ -87,20 +111,26 @@ int wc_CamelliaDecryptDirect(Camellia* cam, byte* out,
/*!
\ingroup Camellia
\brief この関数は、バッファーの平文を暗号化し、その出力をバッファOUTに格納します。暗号ブロックチェーンCBCを使用してCamelliaを使用してこの暗号化を実行します。
\return none いいえ返します。
\param cam 暗号化に使用する椿構造へのポインタ
\param out 暗号化された暗号文を保存するバッファへのポインタ
\param in 暗号化する平文を含むバッファへのポインタ
\brief この関数は、バッファinから平文を暗号化し、出力をバッファoutに格納します。暗号ブロック連鎖(CBC)モードのCamelliaを使用してこの暗号化を実行します。
\return none 戻り値なし。
\param cam 暗号化に使用するcamellia構造体へのポインタ
\param out 暗号化された暗号文を格納するバッファへのポインタ
\param in 暗号化する平文を含むバッファへのポインタ
\param sz 暗号化するメッセージのサイズ
_Example_
\code
Camellia cam;
// initialize cam structure with key and iv
byte plain[] = { // initialize with encrypted message to decrypt };
// キーとivでcam構造体を初期化
byte plain[] = { // 復号する暗号化されたメッセージで初期化 };
byte cipher[sizeof(plain)];
wc_CamelliaCbcEncrypt(&cam, cipher, plain, sizeof(plain));
\endcode
\sa wc_CamelliaCbcDecrypt
*/
int wc_CamelliaCbcEncrypt(Camellia* cam,
@@ -108,21 +138,27 @@ int wc_CamelliaCbcEncrypt(Camellia* cam,
/*!
\ingroup Camellia
\brief この関数は、バッファ内の暗号文を復号化し、その出力をバッファOUTに格納します。暗号ブロックチェーンCBCを搭載したCamelliaを使用してこの復号化を実行します。
\return none いいえ返します。
\param cam 暗号化に使用する椿構造へのポインタ
\param out 復号化されたメッセージを保存するバッファへのポインタ
\param in 暗号化された暗号文を含むバッファへのポインタ
\brief この関数は、バッファinから暗号文を復号し、出力をバッファoutに格納します。暗号ブロック連鎖(CBC)モードのCamelliaを使用してこの復号を実行します。
\return none 戻り値なし。
\param cam 暗号化に使用するcamellia構造体へのポインタ
\param out 復号されたメッセージを格納するバッファへのポインタ
\param in 暗号化された暗号文を含むバッファへのポインタ
\param sz 暗号化するメッセージのサイズ
_Example_
\code
Camellia cam;
// initialize cam structure with key and iv
byte cipher[] = { // initialize with encrypted message to decrypt };
// キーとivでcam構造体を初期化
byte cipher[] = { // 復号する暗号化されたメッセージで初期化 };
byte decrypted[sizeof(cipher)];
wc_CamelliaCbcDecrypt(&cam, decrypted, cipher, sizeof(cipher));
\endcode
\sa wc_CamelliaCbcEncrypt
*/
int wc_CamelliaCbcDecrypt(Camellia* cam,
byte* out, const byte* in, word32 sz);
byte* out, const byte* in, word32 sz);

View File

@@ -1,20 +1,26 @@
/*!
\ingroup ChaCha
\brief この関数はChachaオブジェクトの初期化ベクトルnonceを設定し、暗号として使用するために初期化します。WC_CHACHA_SETKEYを使用して、キーが設定された後に呼び出されるべきです。暗号化の各ラウンドに差し違いを使用する必要があります。
\return 0 初期化ベクトルを正常に設定すると返されます
\return BAD_FUNC_ARG CTX入力引数の処理中にエラーが発生した場合
\param ctx IVを設定するChacha構造へのポインタ
\param inIv Chacha構造を初期化するための12バイトの初期化ベクトルを含むバッファへのポインタ
\brief この関数は、ChaChaオブジェクトの初期化ベクトル(nonce)を設定し、暗号として使用するために初期化します。wc_Chacha_SetKeyを使用してキーが設定された後に呼び出す必要があります。暗号化のラウンドごとに異なるnonceを使用する必要があります。
\return 0 初期化ベクトルの設定に成功した場合に返されます
\return BAD_FUNC_ARG ctx入力引数の処理中にエラーが発生した場合に返されます
\param ctx ivを設定するChaCha構造体へのポインタ
\param inIv ChaCha構造体を初期化するための12バイトの初期化ベクトルを含むバッファへのポインタ
\param counter ブロックカウンタが開始すべき値--通常はゼロ。
_Example_
\code
ChaCha enc;
// initialize enc with wc_Chacha_SetKey
// wc_Chacha_SetKeyでencを初期化
byte iv[12];
// initialize iv
// ivを初期化
if( wc_Chacha_SetIV(&enc, iv, 0) != 0) {
// error initializing ChaCha structure
// ChaCha構造体の初期化エラー
}
\endcode
\sa wc_Chacha_SetKey
\sa wc_Chacha_Process
*/
@@ -22,23 +28,29 @@ int wc_Chacha_SetIV(ChaCha* ctx, const byte* inIv, word32 counter);
/*!
\ingroup ChaCha
\brief この関数は、バッファ入力からテキストを処理し、暗号化または復号化し、結果をバッファ出力に格納します。
\return 0 入力の暗号化または復号化に成功したときに返されます
\return BAD_FUNC_ARG CTX入力引数の処理中にエラーが発生した場合
\param ctx IVを設定するChacha構造へのポインタ
\param output 出力暗号文または復号化された平文を保存するバッファへのポインタ
\param input 暗号化する入力平文を含むバッファへのポインタまたは復号化する入力暗号文
\brief この関数は、バッファinputからテキストを処理し、暗号化または復号して、結果をバッファoutputに格納します
\return 0 入力の暗号化または復号に成功した場合に返されます
\return BAD_FUNC_ARG ctx入力引数の処理中にエラーが発生した場合に返されます
\param ctx ivを設定するChaCha構造体へのポインタ
\param output 出力暗号文または復号された平文を格納するバッファへのポインタ
\param input 暗号化する入力平文または復号する入力暗号文を含むバッファへのポインタ
\param msglen 暗号化するメッセージまたは復号する暗号文の長さ
_Example_
\code
ChaCha enc;
// initialize enc with wc_Chacha_SetKey and wc_Chacha_SetIV
// wc_Chacha_SetKeywc_Chacha_SetIVでencを初期化
byte plain[] = { // initialize plaintext };
byte plain[] = { // 平文を初期化 };
byte cipher[sizeof(plain)];
if( wc_Chacha_Process(&enc, cipher, plain, sizeof(plain)) != 0) {
// error processing ChaCha cipher
// ChaCha暗号の処理エラー
}
\endcode
\sa wc_Chacha_SetKey
\sa wc_Chacha_Process
*/
@@ -47,21 +59,27 @@ int wc_Chacha_Process(ChaCha* ctx, byte* cipher, const byte* plain,
/*!
\ingroup ChaCha
\brief この関数はChachaオブジェクトのキーを設定し、それを暗号として使用するために初期化します。NONCEをWC_CHACHA_SETIVで設定する前に、WC_CHACHA_PROCESSを使用した暗号化に使用する前に呼び出す必要があります。
\return 0 キー設定に成功したときに返されます
\return BAD_FUNC_ARG CTX入力引数の処理中にエラーが発生した場合、またはキーが16または32バイトの長さがある場合
\param ctx キー設定するChacha構造へのポインタ
\param key Chacha構造を初期化するための16または32バイトのキーを含むバッファへのポインタ
\brief この関数は、ChaChaオブジェクトのキー設定し、暗号として使用するために初期化します。wc_Chacha_SetIVでnonceを設定する前、およびwc_Chacha_Processで暗号化に使用する前に呼び出す必要があります。
\return 0 キー設定に成功した場合に返されます
\return BAD_FUNC_ARG ctx入力引数の処理中にエラーが発生した場合、またはキーが16バイトまたは32バイトでない場合に返されます
\param ctx キーを設定するChaCha構造体へのポインタ
\param key ChaCha構造体を初期化するための16バイトまたは32バイトのキーを含むバッファへのポインタ
\param keySz 渡されるキーの長さ
_Example_
\code
ChaCha enc;
byte key[] = { // initialize key };
byte key[] = { // キーを初期化 };
if( wc_Chacha_SetKey(&enc, key, sizeof(key)) != 0) {
// error initializing ChaCha structure
// ChaCha構造体の初期化エラー
}
\endcode
\sa wc_Chacha_SetIV
\sa wc_Chacha_Process
*/
int wc_Chacha_SetKey(ChaCha* ctx, const byte* key, word32 keySz);
int wc_Chacha_SetKey(ChaCha* ctx, const byte* key, word32 keySz);

View File

@@ -1,23 +1,27 @@
/*!
\ingroup ChaCha20Poly1305
\brief この関数は、Chacha20 Stream暗号を使用して、Output BufferTextに入力メッセージ、InPleaintextを暗号化します。
また、Poly-1305認証暗号テキスト)を実行し、生成た認証タグを出力バッファOutauthTagに格納します。
\return 0 メッセージの暗号化に成功したら返されます
\return BAD_FUNC_ARG 暗号化プロセス中にエラーがある場合
\param inKey 暗号化に使用する32バイトの鍵を含むバッファへのポインタ
\param inIv 暗号化に使用する12バイトのIVを含むバッファへのポインタ
\param inAAD 任意の長さの追加認証データAADを含むバッファへのポインタ
\param inAADLen 入力AADの長さ
\param inPlaintext 暗号化する平文を含むバッファへのポインタ
\param inPlaintextLen 暗号化するプレーンテキストの長さ
\param outCiphertext 暗号文を保存するバッファへのポインタ
\brief この関数は、入力メッセージinPlaintextをChaCha20ストリーム暗号を使用して暗号化し、出力バッファoutCiphertextに格納します。また、Poly-1305認証(暗号文に対して)を実行し、生成された認証タグを出力バッファoutAuthTagに格納します。
\return 0 メッセージの暗号化に成功した場合に返されます
\return BAD_FUNC_ARG 暗号化プロセス中にエラーが発生した場合に返されます
\param inKey 暗号化に使用する32バイトのキーを含むバッファへのポインタ
\param inIv 暗号化に使用する12バイトのivを含むバッファへのポインタ
\param inAAD 任意の長さの追加認証データ(AAD)を含むバッファへのポインタ
\param inAADLen 入力AADの長さ
\param inPlaintext 暗号化する平文を含むバッファへのポインタ
\param inPlaintextLen 暗号化する平文の長さ
\param outCiphertext 暗号文を格納するバッファへのポインタ
\param outAuthTag 認証タグを格納する16バイト幅のバッファへのポインタ
_Example_
\code
byte key[] = { // initialize 32 byte key };
byte iv[] = { // initialize 12 byte key };
byte inAAD[] = { // initialize AAD };
byte key[] = { // 32バイトのキーを初期化 };
byte iv[] = { // 12バイトのキーを初期化 };
byte inAAD[] = { // AADを初期化 };
byte plain[] = { // initialize message to encrypt };
byte plain[] = { // 暗号化するメッセージを初期化 };
byte cipher[sizeof(plain)];
byte authTag[16];
@@ -25,9 +29,10 @@
plain, sizeof(plain), cipher, authTag);
if(ret != 0) {
// error running encrypt
// 暗号化実行エラー
}
\endcode
\sa wc_ChaCha20Poly1305_Decrypt
\sa wc_ChaCha_*
\sa wc_Poly1305*
@@ -43,27 +48,32 @@ int wc_ChaCha20Poly1305_Encrypt(
/*!
\ingroup ChaCha20Poly1305
\brief この関数は、Chacha20 Stream暗号を使用して、出力バッファOutpleAntextに復号したデータを出力します。
また、Poly-1305認証を実行し、指定されたinAuthTaginAADで生成された認証(任意の長さの追加認証データ)と比較します。
注:生成された認証タグが提供された認証タグと一致しない場合、テキストは復号されません。
\return 0 メッセージの復号に成功したときに返されました
\return BAD_FUNC_ARG 関数引数のいずれかが予想されるものと一致しない場合に返されます
\return MAC_CMP_FAILED_E 生成された認証タグが提供されているinAuthTagと一致しない場合に返されます
\param inKey 復号に使用する32バイトの鍵を含むバッファへのポインタ
\param inIv 復号に使用する12バイトのIVを含むバッファへのポインタ
\param inAAD 任意の長さの追加認証データAADを含むバッファへのポインタ
\param inAADLen 入力AADの長さ
\param inCiphertext 復号する暗号文を含むバッファへのポインタ
\param outCiphertextLen 復号する暗号文の長さ
\param inAuthTag 認証のための16バイトのダイジェストを含むバッファへのポインタ
\brief この関数は、入力暗号文inCiphertextをChaCha20ストリーム暗号を使用して復号し、出力バッファoutPlaintextに格納します。また、Poly-1305認証を実行し、指定されたinAuthTaginAAD(任意の長さの追加認証データ)で生成された認証を比較します。ゼロ以外のエラーコードが返された場合、出力データoutPlaintextは未定義です。ただし、呼び出し元は平文データの漏洩を防ぐために、無条件に出力バッファをゼロ化する必要があります。
\return 0 メッセージの復号と認証に成功した場合に返されま
\return BAD_FUNC_ARG 関数引数が期待される内容と一致しない場合に返されます
\return MAC_CMP_FAILED_E 生成された認証タグが提供されinAuthTagと一致しない場合に返されます
\return MEMORY_E 内部バッファの割り当てに失敗した場合に返されます
\return CHACHA_POLY_OVERFLOW 入力が破損している場合に返される可能性があります
\param inKey 復号に使用する32バイトのキーを含むバッファへのポインタ
\param inIv 復号に使用する12バイトのivを含むバッファへのポインタ
\param inAAD 任意の長さの追加認証データ(AAD)を含むバッファへのポインタ
\param inAADLen 入力AADの長さ
\param inCiphertext 復号する暗号文を含むバッファへのポインタ
\param outCiphertextLen 復号する暗号文の長さ
\param inAuthTag 認証用の16バイトのダイジェストを含むバッファへのポインタ
\param outPlaintext 平文を格納するバッファへのポインタ
_Example_
\code
byte key[] = { // initialize 32 byte key };
byte iv[] = { // initialize 12 byte key };
byte inAAD[] = { // initialize AAD };
byte key[] = { // 32バイトのキーを初期化 };
byte iv[] = { // 12バイトのキーを初期化 };
byte inAAD[] = { // AADを初期化 };
byte cipher[] = { // initialize with received ciphertext };
byte authTag[16] = { // initialize with received authentication tag };
byte cipher[] = { // 受信した暗号文で初期化 };
byte authTag[16] = { // 受信した認証タグで初期化 };
byte plain[sizeof(cipher)];
@@ -71,11 +81,12 @@ int wc_ChaCha20Poly1305_Encrypt(
cipher, sizeof(cipher), authTag, plain);
if(ret == MAC_CMP_FAILED_E) {
// error during authentication
// 認証中のエラー
} else if( ret != 0) {
// error with function arguments
// 関数引数のエラー
}
\endcode
\sa wc_ChaCha20Poly1305_Encrypt
\sa wc_ChaCha_*
\sa wc_Poly1305*
@@ -87,4 +98,4 @@ int wc_ChaCha20Poly1305_Decrypt(
const byte* inAAD, const word32 inAADLen,
const byte* inCiphertext, const word32 inCiphertextLen,
const byte inAuthTag[CHACHA20_POLY1305_AEAD_AUTHTAG_SIZE],
byte* outPlaintext);
byte* outPlaintext);

View File

@@ -1,97 +1,98 @@
/*!
\ingroup CMAC
\brief Cmac構造体をデフォルト値で初期化します
\return 成功したら0を返します
\param cmac Cmac構造体へのポインタ
\param key 鍵データへのポインタ
\param keySz 鍵データのサイズ(16、24、または 32)
\param type 常にWC_CMAC_AES=1
\param unused 使用されていません。互換性に関する将来の潜在的な使用のために存在します
\ingroup CMAC
\brief Cmac構造体をデフォルト値で初期化します
\return 0 成功時
\param cmac Cmac構造体へのポインタ
\param key キーポインタ
\param keySz キーポインタのサイズ(16、24、または32)
\param type 常にWC_CMAC_AES = 1
\param unused 使用されません。互換性に関する将来の使用の可能性のために存在します
_例_
\code
Cmac cmac[1];
ret = wc_InitCmac(cmackeykeySzWC_CMAC_AESNULL);
if (ret == 0) {
ret = wc_CmacUpdate(cmac、in、inSz);
}
if (ret == 0) {
ret = wc_CmacFinal(cmac, out, outSz);
}
\endcode
_Example_
\code
Cmac cmac[1];
ret = wc_InitCmac(cmac, key, keySz, WC_CMAC_AES, NULL);
if (ret == 0) {
ret = wc_CmacUpdate(cmac, in, inSz);
}
if (ret == 0) {
ret = wc_CmacFinal(cmac, out, outSz);
}
\endcode
\sa wc_InitCmac_ex
\sa wc_CmacUpdate
\sa wc_CmacFinal
\sa wc_CmacFinalNoFree
\sa wc_CmacFree
\sa wc_InitCmac_ex
\sa wc_CmacUpdate
\sa wc_CmacFinal
\sa wc_CmacFinalNoFree
\sa wc_CmacFree
*/
int wc_InitCmac(Cmac* cmac,
const byte* keyword32 keySz
int typevoid* unused);
/*!
\ingroup CMAC
\brief Cmac構造体をデフォルト値で初期化します
\return 成功したら0を返します
\param cmac Cmac構造体へのポインタ
\param key 鍵データへのポインタ
\param keySz 鍵データのサイズ(16、24、または 32)
\param type 常にWC_CMAC_AES=1
\param unused 使用されていません。互換性に関する将来の潜在的な使用のために存在します
\param heap 動的割り当てに使用されるヒープヒントへのポインタ。 通常、スタティックメモリオプションで使用されます。 NULLにすることができます。
\param devId 非同期ハードウェアで使用するID。非同期ハードウェアを使用していない場合は、INVALID_DEVIDに設定します。
_例_
\code
Cmac cmac[1];
ret = wc_InitCmac_ex(cmac, key, keySz, WC_CMAC_AES, NULL, NULL, INVALID_DEVID);
if (ret == 0) {
ret = wc_CmacUpdate(cmac, in, inSz);
}
if (ret == 0) {
ret = wc_CmacFinal(cmac, out, &outSz);
}
\endcode
\sa wc_InitCmac_ex
\sa wc_CmacUpdate
\sa wc_CmacFinal
\sa wc_CmacFinalNoFree
\sa wc_CmacFree
*/
int wc_InitCmac_ex(Cmac* cmac,
const byte* key, word32 keySz,
int type, void* unusedvoid* heap, int devId);
/*!
\ingroup CMAC
\brief 暗号ベースのメッセージ認証コード入力データを追加
\return 成功したら0を返します
\param cmac Cmac構造体へのポインタ
\param in 処理する入力データへのポインタ
\param inSz 入力データのサイズ
_例_
\code
ret = wc_CmacUpdate(cmac、in、inSz);
\endcode
\sa wc_InitCmac
\sa wc_CmacFinal
\sa wc_CmacFinalNoFree
\sa wc_CmacFree
*/
int wc_CmacUpdate(Cmac* cmac,
const byte* in, word32 inSz);
const byte* key, word32 keySz,
int type, void* unused);
/*!
\ingroup CMAC
\brief 暗号ベースのメッセージ認証コードの最終結果を生成します。ただし、使用したコンテキストのクリーンアップは行いません。
\return 成功したら0を返します
\brief Cmac構造体をデフォルト値で初期化します
\return 0 成功時
\param cmac Cmac構造体へのポインタ
\param out 結果を格納するバッファへのポインタ
\param outSz 結果出力先バッファのサイズ
\param key キーポインタ
\param keySz キーポインタのサイズ(16、24、または32)
\param type 常にWC_CMAC_AES = 1
\param unused 使用されません。互換性に関する将来の使用の可能性のために存在します
\param heap 動的割り当てに使用されるヒープヒントへのポインタ。通常、静的メモリオプションで使用されます。NULLにできます。
\param devId 暗号コールバックまたは非同期ハードウェアで使用するID。使用しない場合はINVALID_DEVID(-2)に設定します
_Example_
\code
Cmac cmac[1];
ret = wc_InitCmac_ex(cmac, key, keySz, WC_CMAC_AES, NULL, NULL, INVALID_DEVID);
if (ret == 0) {
ret = wc_CmacUpdate(cmac, in, inSz);
}
if (ret == 0) {
ret = wc_CmacFinal(cmac, out, &outSz);
}
\endcode
\sa wc_InitCmac_ex
\sa wc_CmacUpdate
\sa wc_CmacFinal
\sa wc_CmacFinalNoFree
\sa wc_CmacFree
*/
int wc_InitCmac_ex(Cmac* cmac,
const byte* key, word32 keySz,
int type, void* unused, void* heap, int devId);
/*!
\ingroup CMAC
\brief 暗号ベースメッセージ認証コード入力データを追加します
\return 0 成功時
\param cmac Cmac構造体へのポインタ
\param in 処理する入力データ
\param inSz 入力データのサイズ
_Example_
\code
ret = wc_CmacUpdate(cmac, in, inSz);
\endcode
\sa wc_InitCmac
\sa wc_CmacFinal
\sa wc_CmacFinalNoFree
\sa wc_CmacFree
*/
int wc_CmacUpdate(Cmac* cmac,
const byte* in, word32 inSz);
/*!
\ingroup CMAC
\brief 暗号ベースメッセージ認証コードを使用して最終結果を生成し、コンテキストのクリーンアップを延期します。
\return 0 成功時
\param cmac Cmac構造体へのポインタ
\param out 結果を返すポインタ
\param outSz 出力のポインタサイズ(入出力)
_Example_
\code
@@ -106,31 +107,32 @@ int wc_CmacUpdate(Cmac* cmac,
*/
int wc_CmacFinalNoFree(Cmac* cmac,
byte* out, word32* outSz);
/*!
\ingroup CMAC
\brief 暗号ベースのメッセージ認証コードを使用して最終結果を生成します。加えて、内部でwc_CmacFreeを呼び出してコンテキスとをクリーンアップします。
\return 成功したら0を返します
\param cmac Cmac構造体へのポインタ
\param out 結果を格納するバッファへのポインタ
\param outSz 結果出力先バッファのサイズ
_例_
\code
ret = wc_CmacFinal(cmac, out, &outSz);
\endcode
\sa wc_InitCmac
\sa wc_CmacFinal
\sa wc_CmacFinalNoFree
\sa wc_CmacFree
*/
int wc_CmacFinal(Cmac* cmac,
byte* out, word32* outSz);
/*!
\ingroup CMAC
\brief CMAC処理中にCmac構造体内に確保されたオブジェクトを開放します。
\return 成功したら0を返します
\brief 暗号ベースメッセージ認証コードを使用して最終結果を生成し、wc_CmacFree()でコンテキストをクリーンアップします。
\return 0 成功時
\param cmac Cmac構造体へのポインタ
\param out 結果を返すポインタ
\param outSz 出力のポインタサイズ(入出力)
_Example_
\code
ret = wc_CmacFinal(cmac, out, &outSz);
\endcode
\sa wc_InitCmac
\sa wc_CmacFinalNoFree
\sa wc_CmacFinalNoFree
\sa wc_CmacFree
*/
int wc_CmacFinal(Cmac* cmac,
byte* out, word32* outSz);
/*!
\ingroup CMAC
\brief CMACコンテキスト内の割り当てをクリーンアップします。
\return 0 成功時
\param cmac Cmac構造体へのポインタ
_Example_
@@ -147,61 +149,60 @@ int wc_CmacFinal(Cmac* cmac,
int wc_CmacFree(Cmac* cmac);
/*!
\ingroup CMAC
\brief CMACを生成するためのシングルショット関数
\return 成功したら0を返します
\param out 結果の出力先バッファへのポインタ
\param outSz 出力のポインタサイズ (in/out)
\param in 処理する入力データのポインタ
\param inSz 入力データのサイズ
\param key 鍵データへのポインタ
\param keySz 鍵データのサイズ (16、24、または 32)
\ingroup CMAC
\brief CMACを生成するためのシングルショット関数
\return 0 成功時
\param out 結果を返すポインタ
\param outSz 出力のポインタサイズ(入出力)
\param in 処理する入力データ
\param inSz 入力データのサイズ
\param key キーポインタ
\param keySz キーポインタのサイズ(16、24、または32)
_例_
\code
ret = wc_AesCmacGenerate(mac, &macSz, msg, msgSz, key, keySz);
\endcode
_Example_
\code
ret = wc_AesCmacGenerate(mac, &macSz, msg, msgSz, key, keySz);
\endcode
\sa wc_AesCmacVerify
\sa wc_AesCmacVerify
*/
int wc_AesCmacGenerate(byte* out, word32* outSz,
const byte* inword32 inSz
const byte* key, word32 keySz);
const byte* in, word32 inSz,
const byte* key, word32 keySz);
/*!
\ingroup CMAC
\brief CMACを検証するためのシングルショット関数
\return 成功したら0を返します
\param check 検証対象となるCMAC処理結果データへのポインタ
\param checkSz CMAC処理結果データのサイズ
\param in 処理する入力データのポインタ
\param inSz 入力データのサイズ
\param key 鍵データへのポインタ
\param keySz 鍵データのサイズ (16、24、または 32)
\ingroup CMAC
\brief CMACを検証するためのシングルショット関数
\return 0 成功時
\param check 検証るCMAC
\param checkSz checkバッファのサイズ
\param in 処理する入力データ
\param inSz 入力データのサイズ
\param key キーポインタ
\param keySz キーポインタのサイズ(16、24、または32)
_例_
\code
ret = wc_AesCmacVerify(mac, macSz, msg, msgSz, key, keySz);
\endcode
_Example_
\code
ret = wc_AesCmacVerify(mac, macSz, msg, msgSz, key, keySz);
\endcode
\sa wc_AesCmacGenerate
\sa wc_AesCmacGenerate
*/
int wc_AesCmacVerify(const byte* check, word32 checkSz,
const byte* inword32 inSz
const byte* key, word32 keySz);
const byte* in, word32 inSz,
const byte* key, word32 keySz);
/*!
\ingroup CMAC
\brief WOLFSSL_HASH_KEEPマクロ定義時のみ使用可能。ハードウェアがシングルショットを必要とし、更新をメモリにキャッシュする必要がある場合に使用します
\return 成功したら0を返します
\param cmac Cmac構造体へのポイン
\param in 処理する入力データへのポインタ
\param inSz 入力データのサイズ
\ingroup CMAC
\brief ハードウェアがシングルショットを必要とし、更新をメモリにキャッシュする必要がある場合にWOLFSSL_HASH_KEEPでのみ使用されます
\return 0 成功時
\param in 処理する入力デー
\param inSz 入力データのサイズ
_例_
\code
ret = wc_CMAC_Grow(cmac、in、inSz)
\endcode
_Example_
\code
ret = wc_CMAC_Grow(cmac, in, inSz)
\endcode
*/
int wc_CMAC_Grow(Cmac* cmac, const byte* in, int inSz);
int wc_CMAC_Grow(Cmac* cmac, const byte* in, int inSz);

View File

@@ -1,24 +1,30 @@
/*!
\ingroup Base_Encoding
\brief この機能は、与えられたBASS64符号化入力、IN、および出力バッファを出力バッファOUTに格納します。また、変数outlen内の出力バッファに書き込まれたサイズも設定します。
\return 0 Base64エンコード入力の復号化に成功したときに返されます
\return BAD_FUNC_ARG 復号化された入力を保存するには、出力バッファが小さすぎる場合は返されます。
\return ASN_INPUT_E 入力バッファ内の文字がBASE64範囲[A-ZA-Z0-9 + / =]の外側にある場合、またはBASE64エンコード入力に無効な行が終了した場合
\param in デコードする入力バッファへのポインタ
\param inLen デコードする入力バッファの長さ
\param out デコードされたメッセージを保存する出力バッファへのポインタ
\brief この関数は、指定されたBase64エンコードされた入力inを復号し、結果を出力バッファoutに格納します。また、変数outLenに出力バッファに書き込まれたサイズを設定します
\return 0 Base64エンコードされた入力の復号に成功した場合に返されます
\return BAD_FUNC_ARG 出力バッファが復号された入力を格納するには小さすぎる場合に返されます
\return ASN_INPUT_E 入力バッファ内の文字がBase64の範囲([A-Za-z0-9+/=])外にある場合、またはBase64エンコードされた入力に無効な行末がある場合に返されます
\param in 復号する入力バッファへのポインタ
\param inLen 復号する入力バッファの長さ
\param out 復号されたメッセージを格納する出力バッファへのポインタ
\param outLen 出力バッファの長さへのポインタ。関数呼び出しの最後に書き込まれたバイト数で更新されます
_Example_
\code
byte encoded[] = { // initialize text to decode };
byte encoded[] = { // 復号するテキストを初期化 };
byte decoded[sizeof(encoded)];
// requires at least (sizeof(encoded) * 3 + 3) / 4 room
// 少なくとも(sizeof(encoded) * 3 + 3) / 4のスペースが必要
int outLen = sizeof(decoded);
if( Base64_Decode(encoded,sizeof(encoded), decoded, &outLen) != 0 ) {
// error decoding input buffer
// 入力バッファの復号エラー
}
\endcode
\sa Base64_Encode
\sa Base16_Decode
*/
@@ -27,24 +33,30 @@ int Base64_Decode(const byte* in, word32 inLen, byte* out,
/*!
\ingroup Base_Encoding
\brief この機能は与えられた入力を符号化し、符号化結果を出力バッファOUTに格納します。エスケープ0A行末の代わりに、従来の '\ N'行の終わりを持つデータを書き込みます。正常に完了すると、この機能はまた、出力バッファに書き込まれたバイト数に統一されます。
\return 0 Base64エンコード入力の復号化に成功したときに返されます
\return BAD_FUNC_ARG 出力バッファが小さすぎてエンコードされた入力を保存する場合は返されます。
\return BUFFER_E 出力バッファがエンコード中に部屋の外に実行された場合に返されます
\param in エンコードする入力バッファへのポインタ
\param inLen エンコードする入力バッファの長さ
\param out エンコードされたメッセージを保存する出力バッファへのポインタ
\brief この関数は、指定された入力inをエンコードし、Base64エンコードされた結果を出力バッファoutに格納します。エスケープされた%0A行末の代わりに、従来の'\n'行末でデータを書き込みます。正常に完了すると、この関数はoutLenを出力バッファに書き込まれたバイト数に設定します
\return 0 Base64エンコードされた入力の復号に成功した場合に返されます
\return BAD_FUNC_ARG 出力バッファがエンコードされた入力を格納するには小さすぎる場合に返されます
\return BUFFER_E エンコード中に出力バッファのスペースが不足した場合に返されます
\param in エンコードする入力バッファへのポインタ
\param inLen エンコードする入力バッファの長さ
\param out エンコードされたメッセージを格納する出力バッファへのポインタ
\param outLen エンコードされたメッセージを格納する出力バッファの長さへのポインタ
_Example_
\code
byte plain[] = { // initialize text to encode };
byte plain[] = { // エンコードするテキストを初期化 };
byte encoded[MAX_BUFFER_SIZE];
int outLen = sizeof(encoded);
if( Base64_Encode(plain, sizeof(plain), encoded, &outLen) != 0 ) {
// error encoding input buffer
// 入力バッファのエンコードエラー
}
\endcode
\sa Base64_EncodeEsc
\sa Base64_Decode
*/
@@ -54,25 +66,31 @@ int Base64_Encode(const byte* in, word32 inLen, byte* out,
/*!
\ingroup Base_Encoding
\brief この機能は与えられた入力を符号化し、符号化結果を出力バッファOUTに格納します。それは '\ n "行の終わりではなく、0aエスケープ行の終わりを持つデータを書き込みます。正常に完了すると、この機能はまた、出力バッファに書き込まれたバイト数に統一されます。
\return 0 Base64エンコード入力の復号化に成功したときに返されます
\return BAD_FUNC_ARG 出力バッファが小さすぎてエンコードされた入力を保存する場合は返されます。
\return BUFFER_E 出力バッファがエンコード中に部屋の外に実行された場合に返されます
\return ASN_INPUT_E 入力メッセージのデコードの処理中にエラーが発生した場合
\param in エンコードする入力バッファへのポインタ
\param inLen エンコードする入力バッファの長さ
\param out エンコードされたメッセージを保存する出力バッファへのポインタ
\brief この関数は、指定された入力inをエンコードし、Base64エンコードされた結果を出力バッファoutに格納します。'\n'行末の代わりに%0Aエスケープされた行末でデータを書き込みます。正常に完了すると、この関数はoutLenを出力バッファに書き込まれたバイト数に設定します
\return 0 Base64エンコードされた入力の復号に成功した場合に返されます
\return BAD_FUNC_ARG 出力バッファがエンコードされた入力を格納するには小さすぎる場合に返されます
\return BUFFER_E エンコード中に出力バッファのスペースが不足した場合に返されます
\return ASN_INPUT_E 入力メッセージの復号処理中にエラーが発生した場合に返されます
\param in エンコードする入力バッファへのポインタ
\param inLen エンコードする入力バッファの長さ
\param out エンコードされたメッセージを格納する出力バッファへのポインタ
\param outLen エンコードされたメッセージを格納する出力バッファの長さへのポインタ
_Example_
\code
byte plain[] = { // initialize text to encode };
byte plain[] = { // エンコードするテキストを初期化 };
byte encoded[MAX_BUFFER_SIZE];
int outLen = sizeof(encoded);
if( Base64_EncodeEsc(plain, sizeof(plain), encoded, &outLen) != 0 ) {
// error encoding input buffer
// 入力バッファのエンコードエラー
}
\endcode
\sa Base64_Encode
\sa Base64_Decode
*/
@@ -81,23 +99,29 @@ int Base64_EncodeEsc(const byte* in, word32 inLen, byte* out,
/*!
\ingroup Base_Encoding
\brief この機能は与えられた入力を符号化し、符号化結果を出力バッファOUTに格納します。それは新しい行なしでデータを書き込みます。正常に完了すると、この関数はまた、出力バッファに書き込まれたバイト数に統一されたものを設定します
\return 0 Base64エンコード入力の復号化に成功したときに返されます
\return BAD_FUNC_ARG 出力バッファが小さすぎてエンコードされた入力を保存する場合は返されます。
\return BUFFER_E 出力バッファがエンコード中に部屋の外に実行された場合に返されます
\return ASN_INPUT_E 入力メッセージのデコードの処理中にエラーが発生した場合
\param in エンコードする入力バッファへのポインタ
\param inLen エンコードする入力バッファの長さ
\param out エンコードされたメッセージを保存する出力バッファへのポインタ
\brief この関数は、指定された入力inをエンコードし、Base64エンコードされた結果を出力バッファoutに格納します。改行なしでデータを書き込みます。正常に完了すると、この関数はoutLenを出力バッファに書き込まれたバイト数に設定します
\return 0 Base64エンコードされた入力の復号に成功した場合に返されます
\return BAD_FUNC_ARG 出力バッファがエンコードされた入力を格納するには小さすぎる場合に返されます
\return BUFFER_E エンコード中に出力バッファのスペースが不足した場合に返されます
\return ASN_INPUT_E 入力メッセージの復号処理中にエラーが発生した場合に返されます
\param in エンコードする入力バッファへのポインタ
\param inLen エンコードする入力バッファの長さ
\param out エンコードされたメッセージを格納する出力バッファへのポインタ
\param outLen エンコードされたメッセージを格納する出力バッファの長さへのポインタ
_Example_
\code
byte plain[] = { // initialize text to encode };
byte plain[] = { // エンコードするテキストを初期化 };
byte encoded[MAX_BUFFER_SIZE];
int outLen = sizeof(encoded);
if( Base64_Encode_NoNl(plain, sizeof(plain), encoded, &outLen) != 0 ) {
// error encoding input buffer
// 入力バッファのエンコードエラー
}
\endcode
\sa Base64_Encode
\sa Base64_Decode
*/
@@ -107,23 +131,29 @@ int Base64_Encode_NoNl(const byte* in, word32 inLen, byte* out,
/*!
\ingroup Base_Encoding
\brief この機能は、与えられたBASE16符号化入力、IN、および出力バッファへの結果を記憶する。また、変数outlen内の出力バッファに書き込まれたサイズも設定します。
\return 0 Base16エンコード入力の復号にうまく復号化したときに返されます
\return BAD_FUNC_ARG 出力バッファが復号化された入力を保存するにも小さすぎる場合、または入力長が2つの倍数でない場合に返されます。
\return ASN_INPUT_E 入力バッファ内の文字がBASE16の範囲外にある場合返されます[0-9a-f]
\param in デコードする入力バッファへのポインタ
\param inLen デコードする入力バッファの長さ
\param out デコードされたメッセージを保存する出力バッファへのポインタ
\brief この関数は、指定されたBase16エンコードされた入力inを復号し、結果を出力バッファoutに格納します。また、変数outLenに出力バッファに書き込まれたサイズを設定します
\return 0 Base16エンコードされた入力の復号に成功した場合返されます
\return BAD_FUNC_ARG 出力バッファが復号された入力を格納するには小さすぎる場合、または入力長が2の倍数でない場合に返されます
\return ASN_INPUT_E 入力バッファ内の文字がBase16の範囲([0-9A-F])外にある場合に返されます
\param in 復号する入力バッファへのポインタ
\param inLen 復号する入力バッファの長さ
\param out 復号されたメッセージを格納する出力バッファへのポインタ
\param outLen 出力バッファの長さへのポインタ。関数呼び出しの最後に書き込まれたバイト数で更新されます
_Example_
\code
byte encoded[] = { // initialize text to decode };
byte encoded[] = { // 復号するテキストを初期化 };
byte decoded[sizeof(encoded)];
int outLen = sizeof(decoded);
if( Base16_Decode(encoded,sizeof(encoded), decoded, &outLen) != 0 ) {
// error decoding input buffer
// 入力バッファの復号エラー
}
\endcode
\sa Base64_Encode
\sa Base64_Decode
\sa Base16_Encode
@@ -133,26 +163,32 @@ int Base16_Decode(const byte* in, word32 inLen, byte* out, word32* outLen);
/*!
\ingroup Base_Encoding
\brief BASE16出力へのエンコード入力。
\return 0 成功
\return BAD_FUNC_ARG IN、OUT、またはoutlenがNULLの場合、またはoutlenがInlen Plus 1を超えている場合は返します。
\param in エンコードされる入力バッファへのポインタ。
\param inLen 入力バッファの長さ
\param out 出力バッファへのポインタ。
\brief 入力をbase16出力にエンコードします。
\return 0 成功
\return BAD_FUNC_ARG in、out、またはoutLenがnullの場合、またはoutLenがinLenの2倍プラス1未満の場合に返されます。
\param in エンコードする入力バッファへのポインタ。
\param inLen 入力バッファの長さ。
\param out 出力バッファへのポインタ。
\param outLen 出力バッファの長さ。エンコードされた出力の長さに設定されます。
_Example_
\code
byte in[] = { // Contents of something to be encoded };
byte in[] = { // エンコードする何かの内容 };
byte out[NECESSARY_OUTPUT_SIZE];
word32 outSz = sizeof(out);
if(Base16_Encode(in, sizeof(in), out, &outSz) != 0)
{
// Handle encode error
// エンコードエラーを処理
}
\endcode
\sa Base64_Encode
\sa Base64_Decode
\sa Base16_Decode
*/
int Base16_Encode(const byte* in, word32 inLen, byte* out, word32* outLen);
int Base16_Encode(const byte* in, word32 inLen, byte* out, word32* outLen);

View File

@@ -1,47 +1,59 @@
/*!
\ingroup Compression
\brief この関数は、ハフマン符号化を用いて与えられた入力データを圧縮し、出力をOUTに格納する。出力バッファは、圧縮が可能でないことが存在するため、出力バッファが入力バッファよりも大きいはずです。これはまだルックアップテーブルを必要とします。出力バッファに対してSRCSZ + 0.1+ 12を割り当てることをお勧めします。
\return On 入力データ圧縮に成功し、出力バッファに格納されているバイト数を返します。
\return COMPRESS_INIT_E 圧縮のためにストリームの初期化中にエラーがある場合
\return COMPRESS_E 圧縮中にエラーが発生した場合は返されます
\param out 圧縮データを格納する出力バッファへのポインタ
\param outSz 出力バッファで保存されているサイズ
\param in 圧縮するメッセージを含むバッファへのポインタ
\param inSz 圧縮する入力メッセージのサイズ
\brief この関数は、ハフマン符号化を使用して指定された入力データ圧縮し、出力をoutに格納します。出力バッファは入力バッファよりも大きくする必要があることに注意してください。圧縮が不可能な特定の入力が存在する場合でも、ルックアップテーブルが必要になるためです。出力バッファにはsrcSz + 0.1% + 12を割り当てることが推奨されます。
\return 入力データの圧縮に成功した場合、出力バッファに格納されたバイト数を返します
\return COMPRESS_INIT_E 圧縮用のストリームの初期化中にエラーが発生した場合に返されます
\return COMPRESS_E 圧縮中にエラーが発生した場合に返されます
\param out 圧縮されたデータを格納する出力バッファへのポインタ
\param outSz 格納に使用できる出力バッファのサイズ
\param in 圧縮するメッセージを含むバッファへのポインタ
\param inSz 圧縮する入力メッセージのサイズ
\param flags 圧縮の動作を制御するフラグ。通常の解凍には0を使用します
_Example_
\code
byte message[] = { // initialize text to compress };
byte message[] = { // 圧縮するテキストを初期化 };
byte compressed[(sizeof(message) + sizeof(message) * .001 + 12 )];
// Recommends at least srcSz + .1% + 12
// 少なくともsrcSz + .1% + 12を推奨
if( wc_Compress(compressed, sizeof(compressed), message, sizeof(message),
0) != 0){
// error compressing data
// データの圧縮エラー
}
\endcode
\sa wc_DeCompress
*/
int wc_Compress(byte* out, word32 outSz, const byte* in, word32 inSz, word32 flags);
/*!
\ingroup Compression
\brief この関数は、ハフマン符号化を用いて所定の圧縮データを解凍し、出力をOUTに格納する。
\return Success 入力データ解凍に成功した場合は、出力バッファに格納されているバイト数を返します。
\return COMPRESS_INIT_E: 圧縮のためにストリームの初期化中にエラーがある場合
\return COMPRESS_E: 圧縮中にエラーが発生した場合は返されます
\param out 解凍されたデータを格納する出力バッファへのポインタ
\param outSz 出力バッファで保存されているサイズ
\param in 解凍するメッセージを含むバッファへのポインタ
\brief この関数は、ハフマン符号化を使用して指定された圧縮データ解凍し、出力をoutに格納します。
\return Success 入力データの解凍に成功した場合、出力バッファに格納されたバイト数を返します
\return COMPRESS_INIT_E: 圧縮用のストリームの初期化中にエラーが発生した場合に返されます
\return COMPRESS_E: 圧縮中にエラーが発生した場合に返されます
\param out 解凍されたデータを格納する出力バッファへのポインタ
\param outSz 格納に使用できる出力バッファのサイズ
\param in 解凍するメッセージを含むバッファへのポインタ
\param inSz 解凍する入力メッセージのサイズ
_Example_
\code
byte compressed[] = { // initialize compressed message };
byte compressed[] = { // 圧縮されたメッセージを初期化 };
byte decompressed[MAX_MESSAGE_SIZE];
if( wc_DeCompress(decompressed, sizeof(decompressed),
compressed, sizeof(compressed)) != 0 ) {
// error decompressing data
// データの解凍エラー
}
\endcode
\sa wc_Compress
*/
int wc_DeCompress(byte* out, word32 outSz, const byte* in, word32 inSz);
int wc_DeCompress(byte* out, word32 outSz, const byte* in, word32 inSz);

View File

@@ -1,10 +1,20 @@
/*!
\ingroup CryptoCb
\brief この関数は、Crypto Operationsをキーストア、Secure Element、HSM、PKCS11またはTPMなどの外部ハードウェアにオフロードするための固有のデバイス識別子DEVIDとコールバック関数を登録します。CryptoコールバックのSTSAFEの場合は、wolfcrypt / src / port / st / stsafe.cとwolfssl_stsafe_cryptodevcb関数を参照してください。TPMベースのCryptoコールバックの例では、wolftpm src / tpm2_wrap.cのwolftpm2_cryptodevcb関数を参照してください。
\return CRYPTOCB_UNAVAILABLE ソフトウェア暗号を使用するためにフォールバックする
\return 0 成功のために
\return negative 失敗の値
\param devId -2invalid_devidではなく、一意の値ではありません。
\brief この関数は、Key Store、Secure Element、HSM、PKCS11、TPMなどの外部ハードウェアへの暗号操作のオフロードのために、一意のデバイス識別子(devID)とコールバック関数を登録します。
Crypto Callbacksを使用したSTSAFEの例については、wolfcrypt/src/port/st/stsafe.cとwolfSSL_STSAFE_CryptoDevCb関数を参照してください。
TPMベースの暗号コールバックの例については、wolfTPM src/tpm2_wrap.cのwolfTPM2_CryptoDevCb関数を参照してください。
\return CRYPTOCB_UNAVAILABLE ソフトウェア暗号の使用にフォールバックする場合
\return 0 成功時
\return 負の値 失敗時
\param devId -2(INVALID_DEVID)以外の任意の一意の値
\param cb 次のプロトタイプを持つコールバック関数:
typedef int (*CryptoDevCallbackFunc)(int devId, wc_CryptoInfo* info, void* ctx);
_Example_
\code
#include <wolfssl/wolfcrypt/settings.h>
@@ -19,7 +29,7 @@
switch (info->pk.rsa.type) {
case RSA_PUBLIC_ENCRYPT:
case RSA_PUBLIC_DECRYPT:
// RSA public op
// RSA公開鍵操作
ret = wc_RsaFunction(
info->pk.rsa.in, info->pk.rsa.inLen,
info->pk.rsa.out, info->pk.rsa.outLen,
@@ -28,7 +38,7 @@
break;
case RSA_PRIVATE_ENCRYPT:
case RSA_PRIVATE_DECRYPT:
// RSA private op
// RSA秘密鍵操作
ret = wc_RsaFunction(
info->pk.rsa.in, info->pk.rsa.inLen,
info->pk.rsa.out, info->pk.rsa.outLen,
@@ -49,7 +59,7 @@
#endif
#ifdef HAVE_ED25519
if (info->pk.type == WC_PK_TYPE_ED25519_SIGN) {
// ED25519 sign
// ED25519署名
ret = wc_ed25519_sign_msg_ex(
info->pk.ed25519sign.in, info->pk.ed25519sign.inLen,
info->pk.ed25519sign.out, info->pk.ed25519sign.outLen,
@@ -66,6 +76,7 @@
wc_CryptoCb_RegisterDevice(devId, myCryptoCb_Func, &myCtx);
wolfSSL_CTX_SetDevId(ctx, devId);
\endcode
\sa wc_CryptoCb_UnRegisterDevice
\sa wolfSSL_SetDevId
\sa wolfSSL_CTX_SetDevId
@@ -74,16 +85,22 @@ int wc_CryptoCb_RegisterDevice(int devId, CryptoDevCallbackFunc cb, void* ctx);
/*!
\ingroup CryptoCb
\brief この関数は、固有のデバイス識別子devidコールバック関数を除外します。
\return none いいえ返します。
\brief この関数は、一意のデバイス識別子(devID)のコールバック関数の登録を解除します。
\return none 戻り値なし。
\param devId -2(INVALID_DEVID)以外の任意の一意の値
_Example_
\code
wc_CryptoCb_UnRegisterDevice(devId);
devId = INVALID_DEVID;
wolfSSL_CTX_SetDevId(ctx, devId);
\endcode
\sa wc_CryptoCb_RegisterDevice
\sa wolfSSL_SetDevId
\sa wolfSSL_CTX_SetDevId
*/
void wc_CryptoCb_UnRegisterDevice(int devId);
void wc_CryptoCb_UnRegisterDevice(int devId);

View File

@@ -1,26 +1,32 @@
/*!
\ingroup Curve25519
\brief この関数は、与えられたサイズKeysizeの指定された乱数発生器RNGを使用してCurve25519キーを生成し、それを指定されたCurve25519_Key構造体に格納します。キー構造がWC_CURVE25519_INITを介して初期化された後に呼び出されるべきです。
\return 0 キーの生成に成功し、それを指定されたCurve25519_Key構造体に格納します。
\return ECC_BAD_ARG_E 入力キーサイズがCurve25519キー32バイトのキーシェイズに対応していない場合は返されます。
\return RNG_FAILURE_E RNGの内部ステータスがDRBG_OKでない場合、またはRNGを使用して次のランダムブロックを生成する場合に返されます。
\return BAD_FUNC_ARG 渡された入力パラメータのいずれかがNULLの場合に返されます。
\param [in] RNG ECCキーの生成に使用されるRNGオブジェクトへのポインタ
\param [in] キーサイズ生成キーのサイズ。Curve25519の32バイトでなければなりません
\brief この関数は、与えられた乱数生成器rngを使用して、与えられたサイズkeysizeのCurve25519鍵を生成し、与えられたcurve25519_key構造体に格納します。wc_curve25519_init()を通じて鍵構造体が初期化された後に呼び出す必要があります。
\return 0 鍵の生成に成功し、与えられたcurve25519_key構造体に格納された場合に返されます。
\return ECC_BAD_ARG_E 入力keysizeがcurve25519鍵のkeysizeに対応していない場合32バイトに返されます。
\return RNG_FAILURE_E rng内部ステータスがDRBG_OKでない場合、またはrngで次のランダムブロックを生成する際にエラーがある場合に返されます
\return BAD_FUNC_ARG 渡された入力パラメータのいずれかがNULLの場合に返されます
\param [in] rng ecc鍵を生成するために使用されるRNGオブジェクトへのポインタ。
\param [in] keysize 生成する鍵のサイズ。curve25519では32バイトである必要があります。
\param [in,out] key 生成された鍵を格納するcurve25519_key構造体へのポインタ。
_Example_
\code
int ret;
curve25519_key key;
wc_curve25519_init(&key); // initialize key
wc_curve25519_init(&key); // 鍵を初期化
WC_RNG rng;
wc_InitRng(&rng); // initialize random number generator
wc_InitRng(&rng); // 乱数生成器を初期化
ret = wc_curve25519_make_key(&rng, 32, &key);
if (ret != 0) {
// error making Curve25519 key
// Curve25519鍵作成エラー
}
\endcode
\sa wc_curve25519_init
*/
@@ -28,13 +34,18 @@ int wc_curve25519_make_key(WC_RNG* rng, int keysize, curve25519_key* key);
/*!
\ingroup Curve25519
\brief この関数は、秘密の秘密鍵と受信した公開鍵を考えると、共有秘密鍵を計算します。生成された秘密鍵をバッファアウトに保存し、ounlentの秘密鍵の変数を割り当てます。ビッグエンディアンのみをサポートします。
\return 0 共有秘密鍵を正常に計算したときに返されました
\return BAD_FUNC_ARG 渡された入力パラメータのいずれかがNULLの場合に返されます。
\return ECC_BAD_ARG_E 公開鍵の最初のビットが設定されている場合は、実装の指紋を避けるために返されます。
\param [in] Private_Key Curve25519_Key構造体の秘密鍵で初期化されました
\param [in] public_key受信した公開鍵を含むCurve25519_Key構造体へのポインタ
\param [out] 32バイト計算された秘密鍵を格納するバッファへのポインタ。
\brief この関数は、秘密の秘密鍵と受信した公開鍵を与えられた共有秘密鍵を計算します。生成された秘密鍵をバッファoutに格納し、秘密鍵の変数をoutlenに割り当てます。ビッグエンディアンのみをサポートします
\return 0 共有秘密鍵の計算に成功した場合に返されます。
\return BAD_FUNC_ARG 渡された入力パラメータのいずれかがNULLの場合に返されま
\return ECC_BAD_ARG_E 実装フィンガープリントを回避するために、公開鍵の最初のビットが設定されている場合に返されます
\param [in] private_key ユーザーの秘密鍵で初期化されたcurve25519_key構造体へのポインタ。
\param [in] public_key 受信した公開鍵を含むcurve25519_key構造体へのポインタ。
\param [out] out 32バイトの計算された秘密鍵を格納するバッファへのポインタ。
\param [in,out] outlen 出力バッファに書き込まれた長さを格納するポインタ。
_Example_
\code
int ret;
@@ -42,13 +53,14 @@ int wc_curve25519_make_key(WC_RNG* rng, int keysize, curve25519_key* key);
byte sharedKey[32];
word32 keySz;
curve25519_key privKey, pubKey;
// initialize both keys
// 両方の鍵を初期化
ret = wc_curve25519_shared_secret(&privKey, &pubKey, sharedKey, &keySz);
if (ret != 0) {
// error generating shared key
// 共有鍵生成エラー
}
\endcode
\sa wc_curve25519_init
\sa wc_curve25519_make_key
\sa wc_curve25519_shared_secret_ex
@@ -60,14 +72,19 @@ int wc_curve25519_shared_secret(curve25519_key* private_key,
/*!
\ingroup Curve25519
\brief この関数は、秘密の秘密鍵と受信した公開鍵を考えると、共有秘密鍵を計算します。生成された秘密鍵をバッファアウトに保存し、ounlentの秘密鍵の変数を割り当てます。ビッグ・リトルエンディアンの両方をサポートします。
\return 0 共有秘密鍵を正常に計算したときに返されました
\return BAD_FUNC_ARG 渡された入力パラメータのいずれかがNULLの場合に返されます。
\return ECC_BAD_ARG_E 公開鍵の最初のビットが設定されている場合は、実装の指紋を避けるために返されます。
\param [in] Private_Key Curve25519_Key構造体の秘密鍵で初期化されました
\param [in] public_key受信した公開鍵を含むCurve25519_Key構造体へのポインタ
\param [out] 32バイト計算された秘密鍵を格納するバッファへのポインタ。
\param pin,out] 出力バッファに書き込まれた長さを記憶するポインタの概要
\brief この関数は、秘密の秘密鍵と受信した公開鍵を与えられた共有秘密鍵を計算します。生成された秘密鍵をバッファoutに格納し、秘密鍵の変数をoutlenに割り当てます。ビッグエンディアンとリトルエンディアンの両方をサポートします
\return 0 共有秘密鍵の計算に成功した場合に返されます。
\return BAD_FUNC_ARG 渡された入力パラメータのいずれかがNULLの場合に返されま
\return ECC_BAD_ARG_E 実装フィンガープリントを回避するために、公開鍵の最初のビットが設定されている場合に返されます
\param [in] private_key ユーザーの秘密鍵で初期化されたcurve25519_key構造体へのポインタ。
\param [in] public_key 受信した公開鍵を含むcurve25519_key構造体へのポインタ。
\param [out] out 32バイトの計算された秘密鍵を格納するバッファへのポインタ。
\param [in,out] outlen 出力バッファに書き込まれた長さを格納するポインタ。
\param [in] endian 使用する形式を設定するためのEC25519_BIG_ENDIANまたはEC25519_LITTLE_ENDIAN。
_Example_
\code
int ret;
@@ -76,14 +93,15 @@ int wc_curve25519_shared_secret(curve25519_key* private_key,
word32 keySz;
curve25519_key privKey, pubKey;
// initialize both keys
// 両方の鍵を初期化
ret = wc_curve25519_shared_secret_ex(&privKey, &pubKey, sharedKey, &keySz,
EC25519_BIG_ENDIAN);
if (ret != 0) {
// error generating shared key
// 共有鍵生成エラー
}
\endcode
\sa wc_curve25519_init
\sa wc_curve25519_make_key
\sa wc_curve25519_shared_secret
@@ -95,15 +113,21 @@ int wc_curve25519_shared_secret_ex(curve25519_key* private_key,
/*!
\ingroup Curve25519
\brief この関数はCurve25519キーを初期化します。構造のキーを生成する前に呼び出されるべきです。
\return 0 Curve25519_Key構造体の初期化に成功しました
\return BAD_FUNC_ARG キーがNULLのときに返されます。
\brief この関数はCurve25519鍵を初期化します。構造体の鍵を生成する前に呼び出す必要があります
\return 0 curve25519_key構造体の初期化に成功した場合に返されます。
\return BAD_FUNC_ARG keyがNULLの場合に返されます。
\param [in,out] key 初期化するcurve25519_key構造体へのポインタ。
_Example_
\code
curve25519_key key;
wc_curve25519_init(&key); // initialize key
// make key and proceed to encryption
wc_curve25519_init(&key); // 鍵を初期化
// 鍵を作成し、暗号化に進む
\endcode
\sa wc_curve25519_make_key
*/
@@ -111,13 +135,18 @@ int wc_curve25519_init(curve25519_key* key);
/*!
\ingroup Curve25519
\brief この関数はCurve25519オブジェクトを解放します。
\brief この関数はCurve25519オブジェクトを解放します。
\param [in,out] key 解放する鍵オブジェクトへのポインタ。
_Example_
\code
curve25519_key privKey;
// initialize key, use it to generate shared secret key
// 鍵を初期化し、共有秘密鍵の生成に使用
wc_curve25519_free(&privKey);
\endcode
\sa wc_curve25519_init
\sa wc_curve25519_make_key
*/
@@ -126,25 +155,31 @@ void wc_curve25519_free(curve25519_key* key);
/*!
\ingroup Curve25519
\brief この関数はCurve25519秘密鍵のみをインポートします。ビッグエンディアン
\return 0 秘密鍵のインポートに成功しました。
\return BAD_FUNC_ARG キーまたはPRIVがNULLの場合は返します。
\return ECC_BAD_ARG_E PRIVSZがcurve25519_KEY_SIZEと等しくない場合は返します。
\param [in] インポートする秘密鍵を含むバッファへのポイント
\param [in] インポートする秘密鍵のPrivsz長
\brief この関数はcurve25519秘密鍵のみをインポートします。(ビッグエンディアン)
\return 0 秘密鍵のインポートに成功した場合に返されます。
\return BAD_FUNC_ARG keyまたはprivがnullの場合に返されます
\return ECC_BAD_ARG_E privSzがCURVE25519_KEY_SIZEと等しくない場合に返されます
\param [in] priv インポートする秘密鍵を含むバッファへのポインタ。
\param [in] privSz インポートする秘密鍵の長さ。
\param [in,out] key インポートされた鍵を格納する構造体へのポインタ。
_Example_
\code
int ret;
byte priv[] = { Contents of private key };
byte priv[] = { // 秘密鍵の内容 };
curve25519_key key;
wc_curve25519_init(&key);
ret = wc_curve25519_import_private(priv, sizeof(priv), &key);
if (ret != 0) {
// error importing keys
// 鍵のインポートエラー
}
\endcode
\sa wc_curve25519_import_private_ex
\sa wc_curve25519_size
*/
@@ -154,28 +189,34 @@ int wc_curve25519_import_private(const byte* priv, word32 privSz,
/*!
\ingroup Curve25519
\brief CURVE25519秘密鍵のインポートのみ。大きなエンディアン
\return 0 秘密鍵のインポートに成功しました。
\return BAD_FUNC_ARG キーまたはPRIVがNULLの場合は返します。
\return ECC_BAD_ARG_E PRIVSZがcurve25519_KEY_SIZEと等しくない場合は返します。
\param [in] インポートする秘密鍵を含むバッファへのポイント
\param [in] インポートする秘密鍵のPrivsz長
\param [in,out] インポートされたキーを保存する構造へのキーポインタ。
\brief curve25519秘密鍵のみのインポート。(ビッグエンディアンまたはリトルエンディアン)
\return 0 秘密鍵のインポートに成功した場合に返されます。
\return BAD_FUNC_ARG keyまたはprivがnullの場合に返されます
\return ECC_BAD_ARG_E privSzがCURVE25519_KEY_SIZEと等しくない場合に返されます
\param [in] priv インポートする秘密鍵を含むバッファへのポインタ。
\param [in] privSz インポートする秘密鍵の長さ。
\param [in,out] key インポートされた鍵を格納する構造体へのポインタ。
\param [in] endian 使用する形式を設定するためのEC25519_BIG_ENDIANまたはEC25519_LITTLE_ENDIAN。
_Example_
\code
int ret;
byte priv[] = { // Contents of private key };
byte priv[] = { // 秘密鍵の内容 };
curve25519_key key;
wc_curve25519_init(&key);
ret = wc_curve25519_import_private_ex(priv, sizeof(priv), &key,
EC25519_BIG_ENDIAN);
if (ret != 0) {
// error importing keys
// 鍵のインポートエラー
}
\endcode
\sa wc_curve25519_import_private
\sa wc_curve25519_size
*/
@@ -185,32 +226,38 @@ int wc_curve25519_import_private_ex(const byte* priv, word32 privSz,
/*!
\ingroup Curve25519
\brief この関数は、パブリック秘密鍵ペアをCurve25519_Key構造体にインポートします。ビッグエンディアンのみ。
\return 0 Curve25519_Key構造体へのインポートに返されます
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返します。
\return ECC_BAD_ARG_E 入力キーのキーサイズがPublicキーサイズまたは秘密鍵サイズと一致しない場合に返されます。
\param [in] インポートする秘密鍵を含むバッファへのポイント
\param [in] インポートする秘密鍵のPrivsz長
\param [in] パブリックキーをインポートするバッファへのPub。
\param [in] インポートする公開鍵のPubsz長さ
\brief この関数は、公開鍵-秘密鍵ペアをcurve25519_key構造体インポートします。ビッグエンディアンのみ。
\return 0 curve25519_key構造体へのインポートに成功した場合に返されます。
\return BAD_FUNC_ARG 入力パラメータのいずれかがnullの場合に返されます
\return ECC_BAD_ARG_E 入力鍵の鍵サイズが公開鍵または秘密鍵のサイズと一致しない場合に返されます
\param [in] priv インポートする秘密鍵を含むバッファへのポインタ
\param [in] privSz インポートする秘密鍵の長さ。
\param [in] pub インポートする公開鍵を含むバッファへのポインタ。
\param [in] pubSz インポートする公開鍵の長さ。
\param [in,out] key インポートされた鍵を格納する構造体へのポインタ。
_Example_
\code
int ret;
byte priv[32];
byte pub[32];
// initialize with public and private keys
// 公開鍵と秘密鍵で初期化
curve25519_key key;
wc_curve25519_init(&key);
// initialize key
// 鍵を初期化
ret = wc_curve25519_import_private_raw(&priv, sizeof(priv), pub,
sizeof(pub), &key);
if (ret != 0) {
// error importing keys
// 鍵のインポートエラー
}
\endcode
\sa wc_curve25519_init
\sa wc_curve25519_make_key
\sa wc_curve25519_import_public
@@ -222,32 +269,38 @@ int wc_curve25519_import_private_raw(const byte* priv, word32 privSz,
/*!
\ingroup Curve25519
\brief この関数は、パブリック秘密鍵ペアをCurve25519_Key構造体にインポートします。ビッグ・リトルエンディアンの両方をサポートします。
\return 0 Curve25519_Key構造体へのインポートに返されます
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返します。
\return ECC_BAD_ARG_E 戻されたIFまたは入力キーのキーサイズがパブリックキーサイズまたは秘密鍵サイズと一致しない場合
\param [in] インポートする秘密鍵を含むバッファへのポイント
\param [in] インポートする秘密鍵のPrivsz長
\param [in] パブリックキーをインポートするバッファへのPub。
\param [in] インポートする公開鍵のPubsz長さ
\param [in,out] インポートされたキーを保存する構造へのキーポインタ
\brief この関数は、公開鍵-秘密鍵ペアをcurve25519_key構造体インポートします。ビッグエンディアンとリトルエンディアンの両方をサポートします
\return 0 curve25519_key構造体へのインポートに成功した場合に返されます。
\return BAD_FUNC_ARG 入力パラメータのいずれかがnullの場合に返されます
\return ECC_BAD_ARG_E 入力鍵の鍵サイズが公開鍵または秘密鍵のサイズと一致しない場合に返されます
\param [in] priv インポートする秘密鍵を含むバッファへのポインタ
\param [in] privSz インポートする秘密鍵の長さ
\param [in] pub インポートする公開鍵を含むバッファへのポインタ。
\param [in] pubSz インポートする公開鍵の長さ。
\param [in,out] key インポートされた鍵を格納する構造体へのポインタ。
\param [in] endian 使用する形式を設定するためのEC25519_BIG_ENDIANまたはEC25519_LITTLE_ENDIAN。
_Example_
\code
int ret;
byte priv[32];
byte pub[32];
// initialize with public and private keys
// 公開鍵と秘密鍵で初期化
curve25519_key key;
wc_curve25519_init(&key);
// initialize key
// 鍵を初期化
ret = wc_curve25519_import_private_raw_ex(&priv, sizeof(priv), pub,
sizeof(pub), &key, EC25519_BIG_ENDIAN);
if (ret != 0) {
// error importing keys
// 鍵のインポートエラー
}
\endcode
\sa wc_curve25519_init
\sa wc_curve25519_make_key
\sa wc_curve25519_import_public
@@ -259,14 +312,21 @@ int wc_curve25519_import_private_raw_ex(const byte* priv, word32 privSz,
const byte* pub, word32 pubSz,
curve25519_key* key, int endian);
/*!
\ingroup Curve25519
\brief この関数はCurve25519_Key構造体から秘密鍵をエクスポートし、それを指定されたアウトバッファに格納します。また、エクスポートされたキーのサイズになるように概要を設定します。ビッグエンディアンのみ。
\return 0 Curve25519_Key構造体から秘密鍵を正常にエクスポートしました
\return BAD_FUNC_ARG 入力パラメータがNULLの場合に返されます。
\return ECC_BAD_ARG_E WC_CURVE25519_SIZEがキーと等しくない場合に返されます。
\param [in] キーをエクスポートする構造へのキーポインタ
\param [out] エクスポートされたキーを保存するバッファへのポインタ
\brief この関数は、curve25519_key構造体から秘密鍵をエクスポートし、与えられたoutバッファに格納します。また、outLenをエクスポートされた鍵のサイズに設定します。ビッグエンディアンのみ
\return 0 curve25519_key構造体から秘密鍵のエクスポートに成功した場合に返されます。
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます
\return ECC_BAD_ARG_E wc_curve25519_size()がkeyと等しくない場合に返されます
\param [in] key 鍵をエクスポートする構造体へのポインタ。
\param [out] out エクスポートされた鍵を格納するバッファへのポインタ。
\param [in,out] outLen 入力時は、outのバイト単位のサイズ。
出力時は、出力バッファに書き込まれたバイト数を格納します。
_Example_
\code
int ret;
@@ -274,13 +334,14 @@ int wc_curve25519_import_private_raw_ex(const byte* priv, word32 privSz,
int privSz;
curve25519_key key;
// initialize and make key
// 鍵を初期化して作成
ret = wc_curve25519_export_private_raw(&key, priv, &privSz);
if (ret != 0) {
// error exporting key
// 鍵のエクスポートエラー
}
\endcode
\sa wc_curve25519_init
\sa wc_curve25519_make_key
\sa wc_curve25519_import_private_raw
@@ -292,13 +353,19 @@ int wc_curve25519_export_private_raw(curve25519_key* key, byte* out,
/*!
\ingroup Curve25519
\brief この関数はCurve25519_Key構造体から秘密鍵をエクスポートし、それを指定されたアウトバッファに格納します。また、エクスポートされたキーのサイズになるように概要を設定します。それがビッグ・リトルエンディアンかを指定できます。
\return 0 Curve25519_Key構造体から秘密鍵を正常にエクスポートしました
\return BAD_FUNC_ARG 入力パラメータがNULLの場合に返されます。
\return ECC_BAD_ARG_E WC_CURVE25519_SIZEがキーと等しくない場合に返されます。
\param [in] キーをエクスポートする構造へのキーポインタ
\param [out] エクスポートされたキーを保存するバッファへのポインタ
\param [in,out] INに照会は、バイト数のサイズです。ON OUTでは、出力バッファに書き込まれたバイトを保存します。
\brief この関数は、curve25519_key構造体から秘密鍵をエクスポートし、与えられたoutバッファに格納します。また、outLenをエクスポートされた鍵のサイズに設定します。ビッグエンディアンまたはリトルエンディアンを指定できます
\return 0 curve25519_key構造体から秘密鍵のエクスポートに成功した場合に返されます。
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます
\return ECC_BAD_ARG_E wc_curve25519_size()がkeyと等しくない場合に返されます
\param [in] key 鍵をエクスポートする構造体へのポインタ。
\param [out] out エクスポートされた鍵を格納するバッファへのポインタ。
\param [in,out] outLen 入力時は、outのバイト単位のサイズ。
出力時は、出力バッファに書き込まれたバイト数を格納します。
\param [in] endian 使用する形式を設定するためのEC25519_BIG_ENDIANまたはEC25519_LITTLE_ENDIAN。
_Example_
\code
int ret;
@@ -306,13 +373,14 @@ int wc_curve25519_export_private_raw(curve25519_key* key, byte* out,
byte priv[32];
int privSz;
curve25519_key key;
// initialize and make key
// 鍵を初期化して作成
ret = wc_curve25519_export_private_raw_ex(&key, priv, &privSz,
EC25519_BIG_ENDIAN);
if (ret != 0) {
// error exporting key
// 鍵のエクスポートエラー
}
\endcode
\sa wc_curve25519_init
\sa wc_curve25519_make_key
\sa wc_curve25519_import_private_raw
@@ -325,27 +393,33 @@ int wc_curve25519_export_private_raw_ex(curve25519_key* key, byte* out,
/*!
\ingroup Curve25519
\brief この関数は、指定されたバッファから公開鍵をインポートし、それをCurve25519_Key構造体に格納します。
\return 0 公開鍵をCurve25519_Key構造体に正常にインポートしました
\return ECC_BAD_ARG_E InLenパラメータがキー構造のキーサイズと一致しない場合に返されます。
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます。
\param [in] インポートする公開鍵を含むバッファへのポインタ
\param [in] インポートする公開鍵のインレル長
\brief この関数は、与えられたinバッファから公開鍵をインポートし、curve25519_key構造体に格納します
\return 0 curve25519_key構造体への公開鍵のインポートに成功した場合に返されます。
\return ECC_BAD_ARG_E inLenパラメータが鍵構造体の鍵サイズと一致しない場合に返されます
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます
\param [in] in インポートする公開鍵を含むバッファへのポインタ。
\param [in] inLen インポートする公開鍵の長さ。
\param [in,out] key 鍵を格納するcurve25519_key構造体へのポインタ。
_Example_
\code
int ret;
byte pub[32];
// initialize pub with public key
// pubを公開鍵で初期化
curve25519_key key;
// initialize key
// 鍵を初期化
ret = wc_curve25519_import_public(pub,sizeof(pub), &key);
if (ret != 0) {
// error importing key
// 鍵のインポートエラー
}
\endcode
\sa wc_curve25519_init
\sa wc_curve25519_export_public
\sa wc_curve25519_import_private_raw
@@ -359,28 +433,34 @@ int wc_curve25519_import_public(const byte* in, word32 inLen,
/*!
\ingroup Curve25519
\brief この関数は、指定されたバッファから公開鍵をインポートし、それをCurve25519_Key構造体に格納します。
\return 0 公開鍵をCurve25519_Key構造体に正常にインポートしました
\return ECC_BAD_ARG_E InLenパラメータがキー構造のキーサイズと一致しない場合に返されます。
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます。
\param [in] インポートする公開鍵を含むバッファへのポインタ
\param [in] インポートする公開鍵のインレル長
\param [in,out] キーを保存するカーブ25519キー構造へのキーポインタ。
\brief この関数は、与えられたinバッファから公開鍵をインポートし、curve25519_key構造体に格納します
\return 0 curve25519_key構造体への公開鍵のインポートに成功した場合に返されます。
\return ECC_BAD_ARG_E inLenパラメータが鍵構造体の鍵サイズと一致しない場合に返されます
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます
\param [in] in インポートする公開鍵を含むバッファへのポインタ。
\param [in] inLen インポートする公開鍵の長さ。
\param [in,out] key 鍵を格納するcurve25519_key構造体へのポインタ。
\param [in] endian 使用する形式を設定するためのEC25519_BIG_ENDIANまたはEC25519_LITTLE_ENDIAN。
_Example_
\code
int ret;
byte pub[32];
// initialize pub with public key
// pubを公開鍵で初期化
curve25519_key key;
// initialize key
// 鍵を初期化
ret = wc_curve25519_import_public_ex(pub, sizeof(pub), &key,
EC25519_BIG_ENDIAN);
if (ret != 0) {
// error importing key
// 鍵のインポートエラー
}
\endcode
\sa wc_curve25519_init
\sa wc_curve25519_export_public
\sa wc_curve25519_import_private_raw
@@ -394,23 +474,29 @@ int wc_curve25519_import_public_ex(const byte* in, word32 inLen,
/*!
\ingroup Curve25519
\brief この関数は、公開鍵バッファが指定されたエンディアンに対して有効なCurve2519キー値を保持していることを確認します。
\return 0 公開鍵の値が有効なときに返されます。
\return ECC_BAD_ARG_E 公開鍵の値が無効な場合は返されます。
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます。
\param [in] チェックするための公開鍵を含むバッファへのPubポインタ
\param [in] チェックするための公開鍵の長さを掲載します。
\brief この関数は、エンディアン順序を考慮して、公開鍵バッファが有効なCurve25519鍵値を保持しているかどうかをチェックします。
\return 0 公開鍵の値が有効な場合に返されます。
\return ECC_BAD_ARG_E 公開鍵の値が有効でない場合に返されます
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます。
\param [in] pub チェックする公開鍵を含むバッファへのポインタ。
\param [in] pubLen チェックする公開鍵の長さ。
\param [in] endian 使用する形式を設定するためのEC25519_BIG_ENDIANまたはEC25519_LITTLE_ENDIAN。
_Example_
\code
int ret;
byte pub[] = { Contents of public key };
byte pub[] = { // 公開鍵の内容 };
ret = wc_curve25519_check_public_ex(pub, sizeof(pub), EC25519_BIG_ENDIAN);
if (ret != 0) {
// error importing key
// 鍵のインポートエラー
}
\endcode
\sa wc_curve25519_init
\sa wc_curve25519_import_public
\sa wc_curve25519_import_public_ex
@@ -421,12 +507,18 @@ int wc_curve25519_check_public(const byte* pub, word32 pubSz, int endian);
/*!
\ingroup Curve25519
\brief この関数は指定されたキー構造から公開鍵をエクスポートし、結果をアウトバッファに格納します。ビッグエンディアンのみ。
\return 0 Curve25519_Key構造体から公開鍵を正常にエクスポートする上で返されます
\return ECC_BAD_ARG_E outlenがcurve25519_pub_key_sizeより小さい場合に返されます。
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます。
\param [in] キーをエクスポートするCurve25519_Key構造体へのキーポインタ
\param [out] 公開鍵を保存するバッファへのポインタ
\brief この関数は、与えられた鍵構造体から公開鍵をエクスポートし、結果をoutバッファに格納します。ビッグエンディアンのみ
\return 0 curve25519_key構造体から公開鍵のエクスポートに成功した場合に返されます。
\return ECC_BAD_ARG_E outLenがCURVE25519_PUB_KEY_SIZEより小さい場合に返されます
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます
\param [in] key 鍵をエクスポートするcurve25519_key構造体へのポインタ。
\param [out] out 公開鍵を格納するバッファへのポインタ。
\param [in,out] outLen 入力時は、outのバイト単位のサイズ。
出力時は、出力バッファに書き込まれたバイト数を格納します。
_Example_
\code
int ret;
@@ -435,12 +527,13 @@ int wc_curve25519_check_public(const byte* pub, word32 pubSz, int endian);
int pubSz;
curve25519_key key;
// initialize and make key
// 鍵を初期化して作成
ret = wc_curve25519_export_public(&key, pub, &pubSz);
if (ret != 0) {
// error exporting key
// 鍵のエクスポートエラー
}
\endcode
\sa wc_curve25519_init
\sa wc_curve25519_export_private_raw
\sa wc_curve25519_import_public
@@ -450,13 +543,19 @@ int wc_curve25519_export_public(curve25519_key* key, byte* out, word32* outLen);
/*!
\ingroup Curve25519
\brief この関数は指定されたキー構造から公開鍵をエクスポートし、結果をアウトバッファに格納します。ビッグ・リトルエンディアンの両方をサポートします。
\return 0 Curve25519_Key構造体から公開鍵を正常にエクスポートする上で返されます。
\return ECC_BAD_ARG_E outlenがcurve25519_pub_key_sizeより小さい場合に返されます。
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます。
\param [in] キーをエクスポートするCurve25519_Key構造体へのキーポインタ
\param [out] 公開鍵を保存するバッファへのポインタ
\param [in,out] INに照会は、バイト数のサイズです。ON OUTでは、出力バッファに書き込まれたバイトを保存します。
\brief この関数は、与えられた鍵構造体から公開鍵をエクスポートし、結果をoutバッファに格納します。ビッグエンディアンとリトルエンディアンの両方をサポートします。
\return 0 curve25519_key構造体から公開鍵のエクスポートに成功した場合に返されます。
\return ECC_BAD_ARG_E outLenがCURVE25519_PUB_KEY_SIZEより小さい場合に返されます
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます
\param [in] key 鍵をエクスポートするcurve25519_key構造体へのポインタ。
\param [out] out 公開鍵を格納するバッファへのポインタ。
\param [in,out] outLen 入力時は、outのバイト単位のサイズ。
出力時は、出力バッファに書き込まれたバイト数を格納します。
\param [in] endian 使用する形式を設定するためのEC25519_BIG_ENDIANまたはEC25519_LITTLE_ENDIAN。
_Example_
\code
int ret;
@@ -465,13 +564,14 @@ int wc_curve25519_export_public(curve25519_key* key, byte* out, word32* outLen);
int pubSz;
curve25519_key key;
// initialize and make key
// 鍵を初期化して作成
ret = wc_curve25519_export_public_ex(&key, pub, &pubSz, EC25519_BIG_ENDIAN);
if (ret != 0) {
// error exporting key
// 鍵のエクスポートエラー
}
\endcode
\sa wc_curve25519_init
\sa wc_curve25519_export_private_raw
\sa wc_curve25519_import_public
@@ -482,14 +582,21 @@ int wc_curve25519_export_public_ex(curve25519_key* key, byte* out,
/*!
\ingroup Curve25519
\brief Export Curve25519キーペア。ビッグエンディアンのみ。
\return 0 Curve25519_Key構造体からキーペアエクスポートに成功しました
\return BAD_FUNC_ARG 入力パラメータがNULLの場合に返されます。
\return ECC_BAD_ARG_E PRIVSZがCURUV25519_SEY_SIZEまたはPUBSZよりも小さい場合は、PUBSZがCURUG25519_PUB_KEY_SIZEよりも小さい場合に返されます。
\param [in] キーペアをエクスポートするCURUN448_KEY構造体へのキーポインタ
\param [out] 秘密鍵を保存するバッファへのPRIVポインタ
\param [in,out] PRIVSZ ON INは、PRIVバッファのサイズをバイト単位でです。ON OUTは、PRIVバッファに書き込まれたバイトを保存します。
\param [out] パブリックキーを保存するバッファへのPub
\brief Curve25519ペアエクスポートします。ビッグエンディアンのみ
\return 0 curve25519_key構造体から鍵ペアのエクスポートに成功した場合に返されます。
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます
\return ECC_BAD_ARG_E privSzがCURVE25519_KEY_SIZEより小さい、またはpubSzがCURVE25519_PUB_KEY_SIZEより小さい場合に返されます
\param [in] key 鍵ペアをエクスポートするcurve448_key構造体へのポインタ
\param [out] priv 秘密鍵を格納するバッファへのポインタ。
\param [in,out] privSz 入力時は、privバッファのバイト単位のサイズ。
出力時は、privバッファに書き込まれたバイト数を格納します。
\param [out] pub 公開鍵を格納するバッファへのポインタ。
\param [in,out] pubSz 入力時は、pubバッファのバイト単位のサイズ。
出力時は、pubバッファに書き込まれたバイト数を格納します。
_Example_
\code
int ret;
@@ -500,13 +607,14 @@ int wc_curve25519_export_public_ex(curve25519_key* key, byte* out,
int privSz;
curve25519_key key;
// initialize and make key
// 鍵を初期化して作成
ret = wc_curve25519_export_key_raw(&key, priv, &privSz, pub, &pubSz);
if (ret != 0) {
// error exporting key
// 鍵のエクスポートエラー
}
\endcode
\sa wc_curve25519_export_key_raw_ex
\sa wc_curve25519_export_private_raw
*/
@@ -517,15 +625,22 @@ int wc_curve25519_export_key_raw(curve25519_key* key,
/*!
\ingroup Curve25519
\brief Export Curve25519キーペア。ビッグ・リトルエンディアン。
\return 0 Curve25519_Key構造体からキーペアエクスポートに成功しました
\return BAD_FUNC_ARG 入力パラメータがNULLの場合に返されます。
\return ECC_BAD_ARG_E PRIVSZがCURUV25519_SEY_SIZEまたはPUBSZよりも小さい場合は、PUBSZがCURUG25519_PUB_KEY_SIZEよりも小さい場合に返されます。
\param [in] キーペアをエクスポートするCURUN448_KEY構造体へのキーポインタ
\param [out] 秘密鍵を保存するバッファへのPRIVポインタ
\param [in,out] PRIVSZ ON INは、PRIVバッファのサイズをバイト単位でです。ON OUTは、PRIVバッファに書き込まれたバイトを保存します。
\param [out] パブリックキーを保存するバッファへのPub
\param [in,out] PUBSZ ON INは、パブバッファのサイズをバイト単位でです。ON OUTでは、PUBバッファに書き込まれたバイトを保存します
\brief curve25519鍵ペアエクスポートします。ビッグエンディアンまたはリトルエンディアン
\return 0 curve25519_key構造体から鍵ペアのエクスポートに成功した場合に返されます。
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます
\return ECC_BAD_ARG_E privSzがCURVE25519_KEY_SIZEより小さい、またはpubSzがCURVE25519_PUB_KEY_SIZEより小さい場合に返されます
\param [in] key 鍵ペアをエクスポートするcurve448_key構造体へのポインタ
\param [out] priv 秘密鍵を格納するバッファへのポインタ
\param [in,out] privSz 入力時は、privバッファのバイト単位のサイズ。
出力時は、privバッファに書き込まれたバイト数を格納します。
\param [out] pub 公開鍵を格納するバッファへのポインタ。
\param [in,out] pubSz 入力時は、pubバッファのバイト単位のサイズ。
出力時は、pubバッファに書き込まれたバイト数を格納します。
\param [in] endian 使用する形式を設定するためのEC25519_BIG_ENDIANまたはEC25519_LITTLE_ENDIAN。
_Example_
\code
int ret;
@@ -536,14 +651,15 @@ int wc_curve25519_export_key_raw(curve25519_key* key,
int privSz;
curve25519_key key;
// initialize and make key
// 鍵を初期化して作成
ret = wc_curve25519_export_key_raw_ex(&key,priv, &privSz, pub, &pubSz,
EC25519_BIG_ENDIAN);
if (ret != 0) {
// error exporting key
// 鍵のエクスポートエラー
}
\endcode
\sa wc_curve25519_export_key_raw
\sa wc_curve25519_export_private_raw_ex
\sa wc_curve25519_export_public_ex
@@ -556,20 +672,26 @@ int wc_curve25519_export_key_raw_ex(curve25519_key* key,
/*!
\ingroup Curve25519
\brief この関数は与えられたキー構造のキーサイズを返します。
\return Success 有効な初期化されたCurve25519_Key構造体を考慮すると、キーのサイズを返します。
\return 0 キーがNULLの場合は返されます
\brief この関数は、与えられた鍵構造体の鍵サイズを返します。
\return Success 有効で初期化されたcurve25519_key構造体が与えられた場合、鍵のサイズを返します。
\return 0 keyがNULLの場合に返されます。
\param [in] key 鍵サイズを決定するcurve25519_key構造体へのポインタ。
_Example_
\code
int keySz;
curve25519_key key;
// initialize and make key
// 鍵を初期化して作成
keySz = wc_curve25519_size(&key);
\endcode
\sa wc_curve25519_init
\sa wc_curve25519_make_key
*/
int wc_curve25519_size(curve25519_key* key);
int wc_curve25519_size(curve25519_key* key);

View File

@@ -1,26 +1,32 @@
/*!
\ingroup Curve448
\brief この関数は、与えられたサイズKeysizeのサイズの指定された乱数発生器RNGを使用してCurve448キーを生成し、それを指定されたCurve448_Key構造体に格納します。キー構造がWC_CURVE448_INITを介して初期化された後に呼び出されるべきです。
\return 0 キーの生成に成功し、それを指定されたCurve448_Key構造体に格納します。
\return ECC_BAD_ARG_E 入力キーサイズがCurve448キー56バイトのキーシェイズに対応していない場合は返されます。
\return RNG_FAILURE_E RNGの内部ステータスがDRBG_OKでない場合、またはRNGを使用して次のランダムブロックを生成する場合に返されます。
\return BAD_FUNC_ARG 渡された入力パラメータのいずれかがNULLの場合に返されます。
\param [in] RNG ECCキーの生成に使用されるRNGオブジェクトへのポインタ
\param [in] キーサイズ生成キーのサイズ。Curve448の場合は56バイトでなければなりません
\brief この関数は、与えられた乱数生成器rngを使用して、与えられたサイズkeysizeのCurve448鍵を生成し、与えられたcurve448_key構造体に格納します。wc_curve448_init()を通じて鍵構造体が初期化された後に呼び出す必要があります。
\return 0 鍵の生成に成功し、与えられたcurve448_key構造体に格納された場合に返されます。
\return ECC_BAD_ARG_E 入力keysizeがcurve448鍵のkeysizeに対応していない場合56バイトに返されます。
\return RNG_FAILURE_E rng内部ステータスがDRBG_OKでない場合、またはrngで次のランダムブロックを生成する際にエラーがある場合に返されます
\return BAD_FUNC_ARG 渡された入力パラメータのいずれかがNULLの場合に返されます
\param [in] rng ecc鍵を生成するために使用されるRNGオブジェクトへのポインタ。
\param [in] keysize 生成する鍵のサイズ。curve448では56バイトである必要があります。
\param [in,out] key 生成された鍵を格納するcurve448_key構造体へのポインタ。
_Example_
\code
int ret;
curve448_key key;
wc_curve448_init(&key); // initialize key
wc_curve448_init(&key); // 鍵を初期化
WC_RNG rng;
wc_InitRng(&rng); // initialize random number generator
wc_InitRng(&rng); // 乱数生成器を初期化
ret = wc_curve448_make_key(&rng, 56, &key);
if (ret != 0) {
// error making Curve448 key
// Curve448鍵作成エラー
}
\endcode
\sa wc_curve448_init
*/
@@ -28,12 +34,17 @@ int wc_curve448_make_key(WC_RNG* rng, int keysize, curve448_key* key);
/*!
\ingroup Curve448
\brief この関数は、秘密の秘密鍵と受信した公開鍵を考えると、共有秘密鍵を計算します。生成された秘密鍵をバッファアウトに保存し、ounlentの秘密鍵の変数を割り当てます。ビッグエンディアンのみをサポートします。
\return 0 共有秘密鍵を正常に計算する上で返却されました
\return BAD_FUNC_ARG 渡された入力パラメーターのいずれかがNULLの場合に返されます
\param [in] Private_Key Curve448_Key構造体へのポインタユーザーの秘密鍵で初期化されました
\param [in] public_key受信した公開鍵を含むCurve448_Key構造体へのポインタ
\param [out] 56バイトの計算された秘密鍵を保存するバッファへのポインタ。
\brief この関数は、秘密の秘密鍵と受信した公開鍵を与えられた共有秘密鍵を計算します。生成された秘密鍵をバッファoutに格納し、秘密鍵の変数をoutlenに割り当てます。ビッグエンディアンのみをサポートします。
\return 0 共有秘密鍵の計算に成功した場合に返されま
\return BAD_FUNC_ARG 渡された入力パラメータのいずれかがNULLの場合に返されます
\param [in] private_key ユーザーの秘密鍵で初期化されたcurve448_key構造体へのポインタ。
\param [in] public_key 受信した公開鍵を含むcurve448_key構造体へのポインタ。
\param [out] out 56バイトの計算された秘密鍵を格納するバッファへのポインタ。
\param [in,out] outlen 出力バッファに書き込まれた長さを格納するポインタ。
_Example_
\code
int ret;
@@ -41,13 +52,14 @@ int wc_curve448_make_key(WC_RNG* rng, int keysize, curve448_key* key);
byte sharedKey[56];
word32 keySz;
curve448_key privKey, pubKey;
// initialize both keys
// 両方の鍵を初期化
ret = wc_curve448_shared_secret(&privKey, &pubKey, sharedKey, &keySz);
if (ret != 0) {
// error generating shared key
// 共有鍵生成エラー
}
\endcode
\sa wc_curve448_init
\sa wc_curve448_make_key
\sa wc_curve448_shared_secret_ex
@@ -59,13 +71,18 @@ int wc_curve448_shared_secret(curve448_key* private_key,
/*!
\ingroup Curve448
\brief この関数は、秘密の秘密鍵と受信した公開鍵を考えると、共有秘密鍵を計算します。生成された秘密鍵をバッファアウトに保存し、ounlentの秘密鍵の変数を割り当てます。ビッグ・リトルエンディアンの両方をサポートします。
\return 0 共有秘密鍵を正常に計算したときに返されました
\return BAD_FUNC_ARG 渡された入力パラメータのいずれかがNULLの場合に返されます。
\param [in] Private_Key Curve448_Key構造体へのポインタユーザーの秘密鍵で初期化されました
\param [in] public_key受信した公開鍵を含むCurve448_Key構造体へのポインタ
\param [out] 56バイトの計算された秘密鍵を保存するバッファへのポインタ。
\param [in,out] 出力バッファに書き込まれた長さを記憶するポインタの概要
\brief この関数は、秘密の秘密鍵と受信した公開鍵を与えられた共有秘密鍵を計算します。生成された秘密鍵をバッファoutに格納し、秘密鍵の変数をoutlenに割り当てます。ビッグエンディアンとリトルエンディアンの両方をサポートします
\return 0 共有秘密鍵の計算に成功した場合に返されま
\return BAD_FUNC_ARG 渡された入力パラメータのいずれかがNULLの場合に返されます
\param [in] private_key ユーザーの秘密鍵で初期化されたcurve448_key構造体へのポインタ。
\param [in] public_key 受信した公開鍵を含むcurve448_key構造体へのポインタ。
\param [out] out 56バイトの計算された秘密鍵を格納するバッファへのポインタ。
\param [in,out] outlen 出力バッファに書き込まれた長さを格納するポインタ。
\param [in] endian 使用する形式を設定するためのEC448_BIG_ENDIANまたはEC448_LITTLE_ENDIAN。
_Example_
\code
int ret;
@@ -74,14 +91,15 @@ int wc_curve448_shared_secret(curve448_key* private_key,
word32 keySz;
curve448_key privKey, pubKey;
// initialize both keys
// 両方の鍵を初期化
ret = wc_curve448_shared_secret_ex(&privKey, &pubKey, sharedKey, &keySz,
EC448_BIG_ENDIAN);
if (ret != 0) {
// error generating shared key
// 共有鍵生成エラー
}
\endcode
\sa wc_curve448_init
\sa wc_curve448_make_key
\sa wc_curve448_shared_secret
@@ -93,15 +111,21 @@ int wc_curve448_shared_secret_ex(curve448_key* private_key,
/*!
\ingroup Curve448
\brief この関数はCurve448キーを初期化します。構造のキーを生成する前に呼び出されるべきです。
\return 0 Curve448_Key構造体の初期化に成功しました
\return BAD_FUNC_ARG キーがNULLのときに返されます。
\brief この関数はCurve448鍵を初期化します。構造体の鍵を生成する前に呼び出す必要があります
\return 0 curve448_key構造体の初期化に成功した場合に返されます。
\return BAD_FUNC_ARG keyがNULLの場合に返されます。
\param [in,out] key 初期化するcurve448_key構造体へのポインタ。
_Example_
\code
curve448_key key;
wc_curve448_init(&key); // initialize key
// make key and proceed to encryption
wc_curve448_init(&key); // 鍵を初期化
// 鍵を作成し、暗号化に進む
\endcode
\sa wc_curve448_make_key
*/
@@ -109,13 +133,18 @@ int wc_curve448_init(curve448_key* key);
/*!
\ingroup Curve448
\brief この関数はCurve448オブジェクトを解放します。
\brief この関数はCurve448オブジェクトを解放します。
\param [in,out] key 解放する鍵オブジェクトへのポインタ。
_Example_
\code
curve448_key privKey;
// initialize key, use it to generate shared secret key
// 鍵を初期化し、共有秘密鍵の生成に使用
wc_curve448_free(&privKey);
\endcode
\sa wc_curve448_init
\sa wc_curve448_make_key
*/
@@ -124,25 +153,31 @@ void wc_curve448_free(curve448_key* key);
/*!
\ingroup Curve448
\brief この関数はCurve448秘密鍵のみをインポートします。ビッグエンディアン
\return 0 秘密鍵のインポートに成功しました。
\return BAD_FUNC_ARG キーまたはPRIVがNULLの場合は返します。
\return ECC_BAD_ARG_E PRIVSZがCURUG448_KEY_SIZEと等しくない場合は返します。
\param [in] インポートする秘密鍵を含むバッファへのポイント
\param [in] インポートする秘密鍵のPrivsz長
\brief この関数はcurve448秘密鍵のみをインポートします。(ビッグエンディアン)
\return 0 秘密鍵のインポートに成功した場合に返されます。
\return BAD_FUNC_ARG keyまたはprivがnullの場合に返されます
\return ECC_BAD_ARG_E privSzがCURVE448_KEY_SIZEと等しくない場合に返されます
\param [in] priv インポートする秘密鍵を含むバッファへのポインタ。
\param [in] privSz インポートする秘密鍵の長さ。
\param [in,out] key インポートされた鍵を格納する構造体へのポインタ。
_Example_
\code
int ret;
byte priv[] = { Contents of private key };
byte priv[] = { // 秘密鍵の内容 };
curve448_key key;
wc_curve448_init(&key);
ret = wc_curve448_import_private(priv, sizeof(priv), &key);
if (ret != 0) {
// error importing key
// 鍵のインポートエラー
}
\endcode
\sa wc_curve448_import_private_ex
\sa wc_curve448_size
*/
@@ -152,28 +187,34 @@ int wc_curve448_import_private(const byte* priv, word32 privSz,
/*!
\ingroup Curve448
\brief CURVE448秘密鍵のインポートのみ。ビッグエンディアン
\return 0 秘密鍵のインポートに成功しました。
\return BAD_FUNC_ARG キーまたはPRIVがNULLの場合は返します。
\return ECC_BAD_ARG_E PRIVSZがCURUG448_KEY_SIZEと等しくない場合は返します。
\param [in] インポートする秘密鍵を含むバッファへのポイント
\param [in] インポートする秘密鍵のPrivsz長
\param [in,out] インポートされたキーを保存する構造へのキーポインタ。
\brief curve448秘密鍵のみのインポート。(ビッグエンディアンまたはリトルエンディアン)
\return 0 秘密鍵のインポートに成功した場合に返されます。
\return BAD_FUNC_ARG keyまたはprivがnullの場合に返されます
\return ECC_BAD_ARG_E privSzがCURVE448_KEY_SIZEと等しくない場合に返されます
\param [in] priv インポートする秘密鍵を含むバッファへのポインタ。
\param [in] privSz インポートする秘密鍵の長さ。
\param [in,out] key インポートされた鍵を格納する構造体へのポインタ。
\param [in] endian 使用する形式を設定するためのEC448_BIG_ENDIANまたはEC448_LITTLE_ENDIAN。
_Example_
\code
int ret;
byte priv[] = { // Contents of private key };
byte priv[] = { // 秘密鍵の内容 };
curve448_key key;
wc_curve448_init(&key);
ret = wc_curve448_import_private_ex(priv, sizeof(priv), &key,
EC448_BIG_ENDIAN);
if (ret != 0) {
// error importing key
// 鍵のインポートエラー
}
\endcode
\sa wc_curve448_import_private
\sa wc_curve448_size
*/
@@ -183,32 +224,38 @@ int wc_curve448_import_private_ex(const byte* priv, word32 privSz,
/*!
\ingroup Curve448
\brief この関数は、public-秘密鍵のペアをCurve448_Key構造体にインポートします。ビッグエンディアンのみ。
\return 0 Curve448_Key構造体へのインポート時に返されます
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返します。
\return ECC_BAD_ARG_E 入力キーのキーサイズがPublicキーサイズまたは秘密鍵サイズと一致しない場合に返されます。
\param [in] インポートする秘密鍵を含むバッファへのポイント
\param [in] インポートする秘密鍵のPrivsz長
\param [in] パブリックキーをインポートするバッファへのPub。
\param [in] インポートする公開鍵のPubsz長さ
\brief この関数は、公開鍵-秘密鍵ペアをcurve448_key構造体インポートします。ビッグエンディアンのみ
\return 0 curve448_key構造体へのインポートに成功した場合に返されます。
\return BAD_FUNC_ARG 入力パラメータのいずれかがnullの場合に返されます
\return ECC_BAD_ARG_E 入力鍵の鍵サイズが公開鍵または秘密鍵のサイズと一致しない場合に返されます
\param [in] priv インポートする秘密鍵を含むバッファへのポインタ
\param [in] privSz インポートする秘密鍵の長さ。
\param [in] pub インポートする公開鍵を含むバッファへのポインタ。
\param [in] pubSz インポートする公開鍵の長さ。
\param [in,out] key インポートされた鍵を格納する構造体へのポインタ。
_Example_
\code
int ret;
byte priv[56];
byte pub[56];
// initialize with public and private keys
// 公開鍵と秘密鍵で初期化
curve448_key key;
wc_curve448_init(&key);
// initialize key
// 鍵を初期化
ret = wc_curve448_import_private_raw(&priv, sizeof(priv), pub, sizeof(pub),
&key);
if (ret != 0) {
// error importing keys
// 鍵のインポートエラー
}
\endcode
\sa wc_curve448_init
\sa wc_curve448_make_key
\sa wc_curve448_import_public
@@ -220,33 +267,39 @@ int wc_curve448_import_private_raw(const byte* priv, word32 privSz,
/*!
\ingroup Curve448
\brief この関数は、public-秘密鍵のペアをCurve448_Key構造体にインポートします。ビッグ・リトルエンディアンの両方をサポートします。
\return 0 Curve448_Key構造体へのインポート時に返されます。
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返します。
\return ECC_BAD_ARG_E 入力キーのキーサイズがPublicキーサイズまたは秘密鍵サイズと一致しない場合に返されます。
\param [in] インポートする秘密鍵を含むバッファへのポイント
\param [in] インポートする秘密鍵のPrivsz長
\param [in] パブリックキーをインポートするバッファへのPub。
\param [in] インポートする公開鍵のPubsz長さ
\param [in,out] インポートされたキーを保存する構造へのキーポインタ
\brief この関数は、公開鍵-秘密鍵ペアをcurve448_key構造体インポートします。ビッグエンディアンとリトルエンディアンの両方をサポートします。
\return 0 curve448_key構造体へのインポートに成功した場合に返されます。
\return BAD_FUNC_ARG 入力パラメータのいずれかがnullの場合に返されます
\return ECC_BAD_ARG_E 入力鍵の鍵サイズが公開鍵または秘密鍵のサイズと一致しない場合に返されます
\param [in] priv インポートする秘密鍵を含むバッファへのポインタ
\param [in] privSz インポートする秘密鍵の長さ
\param [in] pub インポートする公開鍵を含むバッファへのポインタ。
\param [in] pubSz インポートする公開鍵の長さ。
\param [in,out] key インポートされた鍵を格納する構造体へのポインタ。
\param [in] endian 使用する形式を設定するためのEC448_BIG_ENDIANまたはEC448_LITTLE_ENDIAN。
_Example_
\code
int ret;
byte priv[56];
byte pub[56];
// initialize with public and private keys
// 公開鍵と秘密鍵で初期化
curve448_key key;
wc_curve448_init(&key);
// initialize key
// 鍵を初期化
ret = wc_curve448_import_private_raw_ex(&priv, sizeof(priv), pub,
sizeof(pub), &key, EC448_BIG_ENDIAN);
if (ret != 0) {
// error importing keys
// 鍵のインポートエラー
}
\endcode
\sa wc_curve448_init
\sa wc_curve448_make_key
\sa wc_curve448_import_public
@@ -260,12 +313,18 @@ int wc_curve448_import_private_raw_ex(const byte* priv, word32 privSz,
/*!
\ingroup Curve448
\brief この関数はCurve448_Key構造体から秘密鍵をエクスポートし、それを指定されたバッファに格納します。また、エクスポートされたキーのサイズになるように概要を設定します。ビッグエンディアンのみ。
\return 0 Curve448_Key構造体から秘密鍵を正常にエクスポートする上で返されました
\return BAD_FUNC_ARG 入力パラメータがNULLの場合に返されます。
\return ECC_BAD_ARG_E WC_CURVE448_SIZEがキーと等しくない場合に返されます。
\param [in] キーをエクスポートする構造へのキーポインタ
\param [out] エクスポートされたキーを保存するバッファへのポインタ
\brief この関数は、curve448_key構造体から秘密鍵をエクスポートし、与えられたoutバッファに格納します。また、outLenをエクスポートされた鍵のサイズに設定します。ビッグエンディアンのみ
\return 0 curve448_key構造体から秘密鍵のエクスポートに成功した場合に返されます。
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます
\return ECC_BAD_ARG_E wc_curve448_size()がkeyと等しくない場合に返されます
\param [in] key 鍵をエクスポートする構造体へのポインタ。
\param [out] out エクスポートされた鍵を格納するバッファへのポインタ。
\param [in,out] outLen 入力時は、outのバイト単位のサイズ。
出力時は、出力バッファに書き込まれたバイト数を格納します。
_Example_
\code
int ret;
@@ -273,13 +332,14 @@ int wc_curve448_import_private_raw_ex(const byte* priv, word32 privSz,
int privSz;
curve448_key key;
// initialize and make key
// 鍵を初期化して作成
ret = wc_curve448_export_private_raw(&key, priv, &privSz);
if (ret != 0) {
// error exporting key
// 鍵のエクスポートエラー
}
\endcode
\sa wc_curve448_init
\sa wc_curve448_make_key
\sa wc_curve448_import_private_raw
@@ -291,13 +351,19 @@ int wc_curve448_export_private_raw(curve448_key* key, byte* out,
/*!
\ingroup Curve448
\brief この関数はCurve448_Key構造体から秘密鍵をエクスポートし、それを指定されたバッファに格納します。また、エクスポートされたキーのサイズになるように概要を設定します。それが大きいかリトルエンディアンかを指定できます。
\return 0 Curve448_Key構造体から秘密鍵を正常にエクスポートする上で返されました
\return BAD_FUNC_ARG 入力パラメータがNULLの場合に返されます。
\return ECC_BAD_ARG_E WC_CURVE448_SIZEがキーと等しくない場合に返されます。
\param [in] キーをエクスポートする構造へのキーポインタ
\param [out] エクスポートされたキーを保存するバッファへのポインタ
\param [in,out] INに照会は、バイト数のサイズです。ON OUTでは、出力バッファに書き込まれたバイトを保存します。
\brief この関数は、curve448_key構造体から秘密鍵をエクスポートし、与えられたoutバッファに格納します。また、outLenをエクスポートされた鍵のサイズに設定します。ビッグエンディアンまたはリトルエンディアンを指定できます
\return 0 curve448_key構造体から秘密鍵のエクスポートに成功した場合に返されます。
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます
\return ECC_BAD_ARG_E wc_curve448_size()がkeyと等しくない場合に返されます
\param [in] key 鍵をエクスポートする構造体へのポインタ。
\param [out] out エクスポートされた鍵を格納するバッファへのポインタ。
\param [in,out] outLen 入力時は、outのバイト単位のサイズ。
出力時は、出力バッファに書き込まれたバイト数を格納します。
\param [in] endian 使用する形式を設定するためのEC448_BIG_ENDIANまたはEC448_LITTLE_ENDIAN。
_Example_
\code
int ret;
@@ -305,13 +371,14 @@ int wc_curve448_export_private_raw(curve448_key* key, byte* out,
byte priv[56];
int privSz;
curve448_key key;
// initialize and make key
// 鍵を初期化して作成
ret = wc_curve448_export_private_raw_ex(&key, priv, &privSz,
EC448_BIG_ENDIAN);
if (ret != 0) {
// error exporting key
// 鍵のエクスポートエラー
}
\endcode
\sa wc_curve448_init
\sa wc_curve448_make_key
\sa wc_curve448_import_private_raw
@@ -324,27 +391,33 @@ int wc_curve448_export_private_raw_ex(curve448_key* key, byte* out,
/*!
\ingroup Curve448
\brief この関数は、指定されたバッファから公開鍵をインポートし、それをCurve448_Key構造体に格納します。
\return 0 公開鍵をCurve448_Key構造体に正常にインポートしました
\return ECC_BAD_ARG_E InLenパラメータがキー構造のキーサイズと一致しない場合に返されます。
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます。
\param [in] インポートする公開鍵を含むバッファへのポインタ
\param [in] インポートする公開鍵のインレル長
\brief この関数は、与えられたinバッファから公開鍵をインポートし、curve448_key構造体に格納します
\return 0 curve448_key構造体への公開鍵のインポートに成功した場合に返されます。
\return ECC_BAD_ARG_E inLenパラメータが鍵構造体の鍵サイズと一致しない場合に返されます
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます
\param [in] in インポートする公開鍵を含むバッファへのポインタ。
\param [in] inLen インポートする公開鍵の長さ。
\param [in,out] key 鍵を格納するcurve448_key構造体へのポインタ。
_Example_
\code
int ret;
byte pub[56];
// initialize pub with public key
// pubを公開鍵で初期化
curve448_key key;
// initialize key
// 鍵を初期化
ret = wc_curve448_import_public(pub,sizeof(pub), &key);
if (ret != 0) {
// error importing key
// 鍵のインポートエラー
}
\endcode
\sa wc_curve448_init
\sa wc_curve448_export_public
\sa wc_curve448_import_private_raw
@@ -358,28 +431,34 @@ int wc_curve448_import_public(const byte* in, word32 inLen,
/*!
\ingroup Curve448
\brief この関数は、指定されたバッファから公開鍵をインポートし、それをCurve448_Key構造体に格納します。
\return 0 公開鍵をCurve448_Key構造体に正常にインポートしました
\return ECC_BAD_ARG_E InLenパラメータがキー構造のキーサイズと一致しない場合に返されます。
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます。
\param [in] インポートする公開鍵を含むバッファへのポインタ
\param [in] インポートする公開鍵のインレル長
\param [in,out] キーを保存するCurve448_Key構造体へのキーポインタ。
\brief この関数は、与えられたinバッファから公開鍵をインポートし、curve448_key構造体に格納します
\return 0 curve448_key構造体への公開鍵のインポートに成功した場合に返されます。
\return ECC_BAD_ARG_E inLenパラメータが鍵構造体の鍵サイズと一致しない場合に返されます
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます
\param [in] in インポートする公開鍵を含むバッファへのポインタ。
\param [in] inLen インポートする公開鍵の長さ。
\param [in,out] key 鍵を格納するcurve448_key構造体へのポインタ。
\param [in] endian 使用する形式を設定するためのEC448_BIG_ENDIANまたはEC448_LITTLE_ENDIAN。
_Example_
\code
int ret;
byte pub[56];
// initialize pub with public key
// pubを公開鍵で初期化
curve448_key key;
// initialize key
// 鍵を初期化
ret = wc_curve448_import_public_ex(pub, sizeof(pub), &key,
EC448_BIG_ENDIAN);
if (ret != 0) {
// error importing key
// 鍵のインポートエラー
}
\endcode
\sa wc_curve448_init
\sa wc_curve448_export_public
\sa wc_curve448_import_private_raw
@@ -393,23 +472,29 @@ int wc_curve448_import_public_ex(const byte* in, word32 inLen,
/*!
\ingroup Curve448
\brief この関数は、公開鍵バッファがエンディアン順序付けを与えられた有効なCurve448キー値を保持することを確認します。
\return 0 公開鍵の値が有効なときに返されます。
\return ECC_BAD_ARG_E 公開鍵の値が無効な場合は返されます。
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます。
\param [in] チェックするための公開鍵を含むバッファへのPubポインタ
\param [in] チェックするための公開鍵の長さを掲載します。
\brief この関数は、エンディアン順序を考慮して、公開鍵バッファが有効なCurve448鍵値を保持しているかどうかをチェックします。
\return 0 公開鍵の値が有効な場合に返されます。
\return ECC_BAD_ARG_E 公開鍵の値が有効でない場合に返されます
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます。
\param [in] pub チェックする公開鍵を含むバッファへのポインタ。
\param [in] pubLen チェックする公開鍵の長さ。
\param [in] endian 使用する形式を設定するためのEC448_BIG_ENDIANまたはEC448_LITTLE_ENDIAN。
_Example_
\code
int ret;
byte pub[] = { Contents of public key };
byte pub[] = { // 公開鍵の内容 };
ret = wc_curve448_check_public_ex(pub, sizeof(pub), EC448_BIG_ENDIAN);
if (ret != 0) {
// error importing key
// 鍵のインポートエラー
}
\endcode
\sa wc_curve448_init
\sa wc_curve448_import_public
\sa wc_curve448_import_public_ex
@@ -420,12 +505,18 @@ int wc_curve448_check_public(const byte* pub, word32 pubSz, int endian);
/*!
\ingroup Curve448
\brief この関数は指定されたキー構造から公開鍵をエクスポートし、結果をアウトバッファに格納します。ビッグエンディアンのみ。
\return 0 Curve448_Key構造体から公開鍵エクスポートに成功しました
\return ECC_BAD_ARG_E outlenがcurve448_pub_key_sizeより小さい場合に返されます。
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます。
\param [in] キーをエクスポートするCurve448_Key構造体へのキーポインタ
\param [out] 公開鍵を保存するバッファへのポインタ
\brief この関数は、与えられた鍵構造体から公開鍵エクスポートし、結果をoutバッファに格納します。ビッグエンディアンのみ
\return 0 curve448_key構造体から公開鍵のエクスポートに成功した場合に返されます。
\return ECC_BAD_ARG_E outLenがCURVE448_PUB_KEY_SIZEより小さい場合に返されます
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます
\param [in] key 鍵をエクスポートするcurve448_key構造体へのポインタ。
\param [out] out 公開鍵を格納するバッファへのポインタ。
\param [in,out] outLen 入力時は、outのバイト単位のサイズ。
出力時は、出力バッファに書き込まれたバイト数を格納します。
_Example_
\code
int ret;
@@ -434,13 +525,14 @@ int wc_curve448_check_public(const byte* pub, word32 pubSz, int endian);
int pubSz;
curve448_key key;
// initialize and make key
// 鍵を初期化して作成
ret = wc_curve448_export_public(&key, pub, &pubSz);
if (ret != 0) {
// error exporting key
// 鍵のエクスポートエラー
}
\endcode
\sa wc_curve448_init
\sa wc_curve448_export_private_raw
\sa wc_curve448_import_public
@@ -450,13 +542,19 @@ int wc_curve448_export_public(curve448_key* key, byte* out, word32* outLen);
/*!
\ingroup Curve448
\brief この関数は指定されたキー構造から公開鍵をエクスポートし、結果をアウトバッファに格納します。ビッグ・リトルエンディアンの両方をサポートします。
\return 0 Curve448_Key構造体から公開鍵エクスポートに成功しました
\return ECC_BAD_ARG_E outlenがcurve448_pub_key_sizeより小さい場合に返されます。
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます。
\param [in] キーをエクスポートするCurve448_Key構造体へのキーポインタ
\param [out] 公開鍵を保存するバッファへのポインタ
\param [in,out] INに照会は、バイト数のサイズです。ON OUTでは、出力バッファに書き込まれたバイトを保存します。
\brief この関数は、与えられた鍵構造体から公開鍵エクスポートし、結果をoutバッファに格納します。ビッグエンディアンとリトルエンディアンの両方をサポートします
\return 0 curve448_key構造体から公開鍵のエクスポートに成功した場合に返されます。
\return ECC_BAD_ARG_E outLenがCURVE448_PUB_KEY_SIZEより小さい場合に返されます
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます
\param [in] key 鍵をエクスポートするcurve448_key構造体へのポインタ。
\param [out] out 公開鍵を格納するバッファへのポインタ。
\param [in,out] outLen 入力時は、outのバイト単位のサイズ。
出力時は、出力バッファに書き込まれたバイト数を格納します。
\param [in] endian 使用する形式を設定するためのEC448_BIG_ENDIANまたはEC448_LITTLE_ENDIAN。
_Example_
\code
int ret;
@@ -465,13 +563,14 @@ int wc_curve448_export_public(curve448_key* key, byte* out, word32* outLen);
int pubSz;
curve448_key key;
// initialize and make key
// 鍵を初期化して作成
ret = wc_curve448_export_public_ex(&key, pub, &pubSz, EC448_BIG_ENDIAN);
if (ret != 0) {
// error exporting key
// 鍵のエクスポートエラー
}
\endcode
\sa wc_curve448_init
\sa wc_curve448_export_private_raw
\sa wc_curve448_import_public
@@ -482,14 +581,21 @@ int wc_curve448_export_public_ex(curve448_key* key, byte* out,
/*!
\ingroup Curve448
\brief この関数は指定されたキー構造からキーペアをエクスポートし、結果をアウトバッファに格納します。ビッグエンディアンのみ。
\return 0 Curve448_Key構造体からキーペアエクスポートに成功しました
\return BAD_FUNC_ARG 入力パラメータがNULLの場合に返されます。
\return ECC_BAD_ARG_E PRIVSZがCURUV448_KEY_SIZEまたはPUBSZよりも小さい場合は、Curge448_PUB_KEY_SIZEよりも小さい場合に返されます。
\param [in] キーペアをエクスポートするCURUN448_KEY構造体へのキーポインタ
\param [out] 秘密鍵を保存するバッファへのPRIVポインタ
\param [in,out] PRIVSZ ON INは、PRIVバッファのサイズをバイト単位でです。ON OUTは、PRIVバッファに書き込まれたバイトを保存します。
\param [out] パブリックキーを保存するバッファへのPub
\brief この関数は、与えられた鍵構造体からペアエクスポートし、結果をoutバッファに格納します。ビッグエンディアンのみ
\return 0 curve448_key構造体から鍵ペアのエクスポートに成功した場合に返されます。
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます
\return ECC_BAD_ARG_E privSzがCURVE448_KEY_SIZEより小さい、またはpubSzがCURVE448_PUB_KEY_SIZEより小さい場合に返されます
\param [in] key 鍵ペアをエクスポートするcurve448_key構造体へのポインタ
\param [out] priv 秘密鍵を格納するバッファへのポインタ。
\param [in,out] privSz 入力時は、privバッファのバイト単位のサイズ。
出力時は、privバッファに書き込まれたバイト数を格納します。
\param [out] pub 公開鍵を格納するバッファへのポインタ。
\param [in,out] pubSz 入力時は、pubバッファのバイト単位のサイズ。
出力時は、pubバッファに書き込まれたバイト数を格納します。
_Example_
\code
int ret;
@@ -500,13 +606,14 @@ int wc_curve448_export_public_ex(curve448_key* key, byte* out,
int privSz;
curve448_key key;
// initialize and make key
// 鍵を初期化して作成
ret = wc_curve448_export_key_raw(&key, priv, &privSz, pub, &pubSz);
if (ret != 0) {
// error exporting key
// 鍵のエクスポートエラー
}
\endcode
\sa wc_curve448_export_key_raw_ex
\sa wc_curve448_export_private_raw
*/
@@ -517,16 +624,23 @@ int wc_curve448_export_key_raw(curve448_key* key,
/*!
\ingroup Curve448
\brief Curve448キーペアをエクスポートします。ビッグ、またはリトルエンディアン。
\brief この関数は指定されたキー構造からキーペアをエクスポートし、結果をアウトバッファに格納します。ビッグ、またはリトルエンディアン。
\return 0 成功
\return BAD_FUNC_ARG 入力パラメータがNULLの場合に返されます。
\return ECC_BAD_ARG_E PRIVSZがCURUV448_KEY_SIZEまたはPUBSZよりも小さい場合は、Curge448_PUB_KEY_SIZEよりも小さい場合に返されます
\param [in] キーペアをエクスポートするCURUN448_KEY構造体へのキーポインタ
\param [out] 秘密鍵を保存するバッファへのPRIVポインタ
\param [in,out] PRIVSZ ON INは、PRIVバッファのサイズをバイト単位でです。ON OUTは、PRIVバッファに書き込まれたバイトを保存します。
\param [out] パブリックキーを保存するバッファへのPub
\param [in,out] PUBSZ ON INは、パブバッファのサイズをバイト単位でです。ON OUTでは、PUBバッファに書き込まれたバイトを保存します
\brief curve448鍵ペアをエクスポートします。ビッグエンディアンまたはリトルエンディアン。
\brief この関数は、与えられた鍵構造体から鍵ペアをエクスポートし、結果をoutバッファに格納します。ビッグエンディアンまたはリトルエンディアン。
\return 0 成功
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます
\return ECC_BAD_ARG_E privSzがCURVE448_KEY_SIZEより小さい、またはpubSzがCURVE448_PUB_KEY_SIZEより小さい場合に返されます
\param [in] key 鍵ペアをエクスポートするcurve448_key構造体へのポインタ
\param [out] priv 秘密鍵を格納するバッファへのポインタ
\param [in,out] privSz 入力時は、privバッファのバイト単位のサイズ。
出力時は、privバッファに書き込まれたバイト数を格納します。
\param [out] pub 公開鍵を格納するバッファへのポインタ。
\param [in,out] pubSz 入力時は、pubバッファのバイト単位のサイズ。
出力時は、pubバッファに書き込まれたバイト数を格納します。
\param [in] endian 使用する形式を設定するためのEC448_BIG_ENDIANまたはEC448_LITTLE_ENDIAN。
_Example_
\code
int ret;
@@ -537,14 +651,15 @@ int wc_curve448_export_key_raw(curve448_key* key,
int privSz;
curve448_key key;
// initialize and make key
// 鍵を初期化して作成
ret = wc_curve448_export_key_raw_ex(&key,priv, &privSz, pub, &pubSz,
EC448_BIG_ENDIAN);
if (ret != 0) {
// error exporting key
// 鍵のエクスポートエラー
}
\endcode
\sa wc_curve448_export_key_raw
\sa wc_curve448_export_private_raw_ex
\sa wc_curve448_export_public_ex
@@ -557,20 +672,26 @@ int wc_curve448_export_key_raw_ex(curve448_key* key,
/*!
\ingroup Curve448
\brief この関数は与えられたキー構造のキーサイズを返します。
\return Success 有効な初期化されたCurve448_Key構造体を考慮すると、キーのサイズを返します。
\return 0 キーがNULLの場合は返されます。
\brief この関数は、与えられた鍵構造体の鍵サイズを返します。
\return Success 有効で初期化されたcurve448_key構造体が与えられた場合、鍵のサイズを返します。
\return 0 keyがNULLの場合に返されます。
\param [in] key 鍵サイズを決定するcurve448_key構造体へのポインタ。
_Example_
\code
int keySz;
curve448_key key;
// initialize and make key
// 鍵を初期化して作成
keySz = wc_curve448_size(&key);
\endcode
\sa wc_curve448_init
\sa wc_curve448_make_key
*/
int wc_curve448_size(curve448_key* key);
int wc_curve448_size(curve448_key* key);

View File

@@ -1,22 +1,28 @@
/*!
\ingroup 3DES
\brief この関数は、引数として与えられたDES構造体のキーと初期化ベクトルIVを設定します。また、これらがまだ初期化されていない場合は、暗号化と復号化に必要なバッファーのスペースを初期化して割り当てます。注IVが指定されていない場合i.e.iv == null初期化ベクトルは、デフォルトのIV 0になります。
\return 0 DES構造体のキーと初期化ベクトルを正常に設定する
\param des 初期化するDES構造へのポインタ
\param key DES構造を初期化するための8バイトのキーを含むバッファへのポインタ
\param iv DES構造を初期化するための8バイトIVを含むバッファへのポインタ。これが提供されていない場合、IVはデフォルトで0になります
\brief この関数は、引数として与えられたDes構造体のと初期化ベクトル(iv)を設定します。また、暗号化と復号に必要なバッファがまだ初期化されていない場合、それらを初期化し、スペースを割り当てます。注意: ivが提供されない場合(つまりiv == NULL)、初期化ベクトルはデフォルトで0のivになります。
\return 0 Des構造体の鍵と初期化ベクトルの設定に成功した場合
\param des 初期化するDes構造体へのポインタ
\param key Des構造体を初期化するための8バイトの鍵を含むバッファへのポインタ
\param iv Des構造体を初期化するための8バイトのivを含むバッファへのポインタ。これが提供されない場合、ivはデフォルトで0になります
\param dir 暗号化の方向。有効なオプションは: DES_ENCRYPTIONとDES_DECRYPTIONです
_Example_
\code
Des enc; // Des structure used for encryption
Des enc; // 暗号化に使用されるDes構造体
int ret;
byte key[] = { // initialize with 8 byte key };
byte iv[] = { // initialize with 8 byte iv };
byte key[] = { // 8バイトの鍵で初期化 };
byte iv[] = { // 8バイトのivで初期化 };
ret = wc_Des_SetKey(&des, key, iv, DES_ENCRYPTION);
if (ret != 0) {
// error initializing des structure
// des構造体の初期化エラー
}
\endcode
\sa wc_Des_SetIV
\sa wc_Des3_SetKey
*/
@@ -25,40 +31,52 @@ int wc_Des_SetKey(Des* des, const byte* key,
/*!
\ingroup 3DES
\brief この関数は、引数として与えられたDES構造体の初期化ベクトルIVを設定します。NULL IVを渡したら、初期化ベクトルを0に設定します。
\return none いいえ返します。
\param des IVを設定するためのDES構造へのポインタ
\brief この関数は、引数として与えられたDes構造体の初期化ベクトル(iv)を設定します。NULLのivが渡された場合、初期化ベクトルを0に設定します。
\return none 戻り値なし。
\param des ivを設定するDes構造体へのポインタ
\param iv Des構造体を初期化するための8バイトのivを含むバッファへのポインタ。これが提供されない場合、ivはデフォルトで0になります
_Example_
\code
Des enc; // Des structure used for encryption
// initialize enc with wc_Des_SetKey
byte iv[] = { // initialize with 8 byte iv };
Des enc; // 暗号化に使用されるDes構造体
// wc_Des_SetKeyでencを初期化
byte iv[] = { // 8バイトのivで初期化 };
wc_Des_SetIV(&enc, iv);
}
\endcode
\sa wc_Des_SetKey
*/
void wc_Des_SetIV(Des* des, const byte* iv);
/*!
\ingroup 3DES
\brief この関数は入力メッセージを暗号化し、結果を出力バッファーに格納します。暗号ブロックチェーンチェーンCBCモードでDES暗号化を使用します。
\return 0 与えられた入力メッセージの暗号化に成功したときに返されます
\param des 暗号化に使用するDES構造へのポインタ
\param out 暗号化された暗号文を保存するバッファへのポインタ
\param in 暗号化するメッセージを含む入力バッファへのポインタ
\brief この関数は、入力メッセージinを暗号化し、結果を出力バッファoutに格納します。暗号ブロック連鎖(CBC)モードのDES暗号化を使用します
\return 0 指定された入力メッセージの暗号化に成功した場合に返されます
\param des 暗号化に使用するDes構造体へのポインタ
\param out 暗号化された暗号文を格納するバッファへのポインタ
\param in 暗号化するメッセージを含む入力バッファへのポインタ
\param sz 暗号化するメッセージの長さ
_Example_
\code
Des enc; // Des structure used for encryption
// initialize enc with wc_Des_SetKey, use mode DES_ENCRYPTION
Des enc; // 暗号化に使用されるDes構造体
// wc_Des_SetKeyでencを初期化、モードDES_ENCRYPTIONを使用
byte plain[] = { // initialize with message };
byte plain[] = { // メッセージで初期化 };
byte cipher[sizeof(plain)];
if ( wc_Des_CbcEncrypt(&enc, cipher, plain, sizeof(plain)) != 0) {
// error encrypting message
// メッセージの暗号化エラー
}
\endcode
\sa wc_Des_SetKey
\sa wc_Des_CbcDecrypt
*/
@@ -67,23 +85,29 @@ int wc_Des_CbcEncrypt(Des* des, byte* out,
/*!
\ingroup 3DES
\brief この関数は入力暗号文を復号化し、結果の平文を出力バッファーに出力します。暗号ブロックチェーンチェーンCBCモードでDES暗号化を使用します。
\return 0 与えられた暗号文を正常に復号化したときに返されました
\param des 復号化に使用するDES構造へのポインタ
\param out 復号化された平文を保存するバッファへのポインタ
\param in 暗号化された暗号文を含む入力バッファへのポインタ
\brief この関数は、入力暗号文inを復号し、結果の平文を出力バッファoutに格納します。暗号ブロック連鎖(CBC)モードのDES暗号化を使用します。
\return 0 指定された暗号文の復号に成功した場合に返されます
\param des 復号に使用するDes構造体へのポインタ
\param out 復号された平文を格納するバッファへのポインタ
\param in 暗号化された暗号文を含む入力バッファへのポインタ
\param sz 復号する暗号文の長さ
_Example_
\code
Des dec; // Des structure used for decryption
// initialize dec with wc_Des_SetKey, use mode DES_DECRYPTION
Des dec; // 復号に使用されるDes構造体
// wc_Des_SetKeyでdecを初期化、モードDES_DECRYPTIONを使用
byte cipher[] = { // initialize with ciphertext };
byte cipher[] = { // 暗号文で初期化 };
byte decoded[sizeof(cipher)];
if ( wc_Des_CbcDecrypt(&dec, decoded, cipher, sizeof(cipher)) != 0) {
// error decrypting message
// メッセージの復号エラー
}
\endcode
\sa wc_Des_SetKey
\sa wc_Des_CbcEncrypt
*/
@@ -92,23 +116,29 @@ int wc_Des_CbcDecrypt(Des* des, byte* out,
/*!
\ingroup 3DES
\brief この関数は入力メッセージを暗号化し、結果を出力バッファーに格納します。電子コードブックECBモードでDES暗号化を使用します。
\return 0: 与えられた平文を正常に暗号化すると返されます。
\param des 暗号化に使用するDES構造へのポインタ
\param out 暗号化されたメッセージを保存するバッファへのポインタ
\param in 暗号化する平文を含む入力バッファへのポインタ
\brief この関数は、入力メッセージinを暗号化し、結果を出力バッファoutに格納します。電子コードブック(ECB)モードのDes暗号化を使用します。
\return 0: 指定された平文の暗号化に成功した場合に返されます。
\param des 暗号化に使用するDes構造体へのポインタ
\param out 暗号化されたメッセージを格納するバッファへのポインタ
\param in 暗号化する平文を含む入力バッファへのポインタ
\param sz 暗号化する平文の長さ
_Example_
\code
Des enc; // Des structure used for encryption
// initialize enc with wc_Des_SetKey, use mode DES_ENCRYPTION
Des enc; // 暗号化に使用されるDes構造体
// wc_Des_SetKeyでencを初期化、モードDES_ENCRYPTIONを使用
byte plain[] = { // initialize with message to encrypt };
byte plain[] = { // 暗号化するメッセージで初期化 };
byte cipher[sizeof(plain)];
if ( wc_Des_EcbEncrypt(&enc,cipher, plain, sizeof(plain)) != 0) {
// error encrypting message
// メッセージの暗号化エラー
}
\endcode
\sa wc_Des_SetKe
*/
int wc_Des_EcbEncrypt(Des* des, byte* out,
@@ -116,23 +146,29 @@ int wc_Des_EcbEncrypt(Des* des, byte* out,
/*!
\ingroup 3DES
\brief この関数は入力メッセージを暗号化し、結果を出力バッファーに格納します。電子コードブックECBモードでDES3暗号化を使用します。警告ほぼすべてのユースケースでECBモードは安全性が低いと考えられています。可能な限りECB APIを直接使用しないでください。
\return 0 与えられた平文を正常に暗号化すると返されます
\param des3 暗号化に使用するDES3構造へのポインタ
\param out 暗号化されたメッセージを保存するバッファへのポインタ
\param in 暗号化する平文を含む入力バッファへのポインタ
\brief この関数は、入力メッセージinを暗号化し、結果を出力バッファoutに格納します。電子コードブック(ECB)モードのDes3暗号化を使用します。警告: ほぼすべてのユースケースで、ECBモードは安全性が低いと考えられています。可能な限りECB APIを直接使用することは避けてください。
\return 0 指定された平文の暗号化に成功した場合に返されます
\param des3 暗号化に使用するDes3構造体へのポインタ
\param out 暗号化されたメッセージを格納するバッファへのポインタ
\param in 暗号化する平文を含む入力バッファへのポインタ
\param sz 暗号化する平文の長さ
_Example_
\code
Des3 enc; // Des3 structure used for encryption
// initialize enc with wc_Des3_SetKey, use mode DES_ENCRYPTION
Des3 enc; // 暗号化に使用されるDes3構造体
// wc_Des3_SetKeyでencを初期化、モードDES_ENCRYPTIONを使用
byte plain[] = { // initialize with message to encrypt };
byte plain[] = { // 暗号化するメッセージで初期化 };
byte cipher[sizeof(plain)];
if ( wc_Des3_EcbEncrypt(&enc,cipher, plain, sizeof(plain)) != 0) {
// error encrypting message
// メッセージの暗号化エラー
}
\endcode
\sa wc_Des3_SetKey
*/
int wc_Des3_EcbEncrypt(Des3* des, byte* out,
@@ -140,23 +176,29 @@ int wc_Des3_EcbEncrypt(Des3* des, byte* out,
/*!
\ingroup 3DES
\brief この関数は、引数として与えられたDES3構造のキーと初期化ベクトルIVを設定します。また、これらがまだ初期化されていない場合は、暗号化と復号化に必要なバッファーのスペースを初期化して割り当てます。注IVが指定されていない場合i.e.iv == null初期化ベクトルは、デフォルトのIV 0になります。
\return 0 DES構造体のキーと初期化ベクトルを正常に設定する
\param des3 初期化するDES3構造へのポインタ
\param key DES3構造を初期化する24バイトのキーを含むバッファへのポインタ
\param iv DES3構造を初期化するための8バイトIVを含むバッファへのポインタ。これが提供されていない場合、IVはデフォルトで0になります
\brief この関数は、引数として与えられたDes3構造体のと初期化ベクトル(iv)を設定します。また、暗号化と復号に必要なバッファがまだ初期化されていない場合、それらを初期化し、スペースを割り当てます。注意: ivが提供されない場合(つまりiv == NULL)、初期化ベクトルはデフォルトで0のivになります。
\return 0 Des構造体の鍵と初期化ベクトルの設定に成功した場合
\param des3 初期化するDes3構造体へのポインタ
\param key Des3構造体を初期化するための24バイトの鍵を含むバッファへのポインタ
\param iv Des3構造体を初期化するための8バイトのivを含むバッファへのポインタ。これが提供されない場合、ivはデフォルトで0になります
\param dir 暗号化の方向。有効なオプションは: DES_ENCRYPTIONとDES_DECRYPTIONです
_Example_
\code
Des3 enc; // Des3 structure used for encryption
Des3 enc; // 暗号化に使用されるDes3構造体
int ret;
byte key[] = { // initialize with 24 byte key };
byte iv[] = { // initialize with 8 byte iv };
byte key[] = { // 24バイトの鍵で初期化 };
byte iv[] = { // 8バイトのivで初期化 };
ret = wc_Des3_SetKey(&des, key, iv, DES_ENCRYPTION);
if (ret != 0) {
// error initializing des structure
// des構造体の初期化エラー
}
\endcode
\sa wc_Des3_SetIV
\sa wc_Des3_CbcEncrypt
\sa wc_Des3_CbcDecrypt
@@ -166,42 +208,54 @@ int wc_Des3_SetKey(Des3* des, const byte* key,
/*!
\ingroup 3DES
\brief この関数は、引数として与えられたDES3構造の初期化ベクトルIVを設定します。NULL IVを渡したら、初期化ベクトルを0に設定します。
\return none いいえ返します。
\param des IVを設定するためのDES3構造へのポインタ
\brief この関数は、引数として与えられたDes3構造体の初期化ベクトル(iv)を設定します。NULLのivが渡された場合、初期化ベクトルを0に設定します。
\return none 戻り値なし。
\param des ivを設定するDes3構造体へのポインタ
\param iv Des3構造体を初期化するための8バイトのivを含むバッファへのポインタ。これが提供されない場合、ivはデフォルトで0になります
_Example_
\code
Des3 enc; // Des3 structure used for encryption
// initialize enc with wc_Des3_SetKey
Des3 enc; // 暗号化に使用されるDes3構造体
// wc_Des3_SetKeyでencを初期化
byte iv[] = { // initialize with 8 byte iv };
byte iv[] = { // 8バイトのivで初期化 };
wc_Des3_SetIV(&enc, iv);
}
\endcode
\sa wc_Des3_SetKey
*/
int wc_Des3_SetIV(Des3* des, const byte* iv);
/*!
\ingroup 3DES
\brief この関数は入力メッセージを暗号化し、結果を出力バッファーに格納します。暗号ブロックチェーンCBCモードでトリプルDES3DES暗号化を使用します。
\return 0 与えられた入力メッセージの暗号化に成功したときに返されます
\param des 暗号化に使用するDES3構造へのポインタ
\param out 暗号化された暗号文を保存するバッファへのポインタ
\param in 暗号化するメッセージを含む入力バッファへのポインタ
\brief この関数は、入力メッセージinを暗号化し、結果を出力バッファoutに格納します。暗号ブロック連鎖(CBC)モードのトリプルDes(3DES)暗号化を使用します
\return 0 指定された入力メッセージの暗号化に成功した場合に返されます
\param des 暗号化に使用するDes3構造体へのポインタ
\param out 暗号化された暗号文を格納するバッファへのポインタ
\param in 暗号化するメッセージを含む入力バッファへのポインタ
\param sz 暗号化するメッセージの長さ
_Example_
\code
Des3 enc; // Des3 structure used for encryption
// initialize enc with wc_Des3_SetKey, use mode DES_ENCRYPTION
Des3 enc; // 暗号化に使用されるDes3構造体
// wc_Des3_SetKeyでencを初期化、モードDES_ENCRYPTIONを使用
byte plain[] = { // initialize with message };
byte plain[] = { // メッセージで初期化 };
byte cipher[sizeof(plain)];
if ( wc_Des3_CbcEncrypt(&enc, cipher, plain, sizeof(plain)) != 0) {
// error encrypting message
// メッセージの暗号化エラー
}
\endcode
\sa wc_Des3_SetKey
\sa wc_Des3_CbcDecrypt
*/
@@ -210,25 +264,31 @@ int wc_Des3_CbcEncrypt(Des3* des, byte* out,
/*!
\ingroup 3DES
\brief この関数は入力暗号文を復号化し、結果の平文を出力バッファーに出力します。暗号ブロックチェーンCBCモードでトリプルDES3DES暗号化を使用します。
\return 0 与えられた暗号文を正常に復号化したときに返されました
\param des 復号化に使用するDES3構造へのポインタ
\param out 復号化された平文を保存するバッファへのポインタ
\param in 暗号化された暗号文を含む入力バッファへのポインタ
\brief この関数は、入力暗号文inを復号し、結果の平文を出力バッファoutに格納します。暗号ブロック連鎖(CBC)モードのトリプルDes(3DES)暗号化を使用します。
\return 0 指定された暗号文の復号に成功した場合に返されます
\param des 復号に使用するDes3構造体へのポインタ
\param out 復号された平文を格納するバッファへのポインタ
\param in 暗号化された暗号文を含む入力バッファへのポインタ
\param sz 復号する暗号文の長さ
_Example_
\code
Des3 dec; // Des structure used for decryption
// initialize dec with wc_Des3_SetKey, use mode DES_DECRYPTION
Des3 dec; // 復号に使用されるDes構造体
// wc_Des3_SetKeyでdecを初期化、モードDES_DECRYPTIONを使用
byte cipher[] = { // initialize with ciphertext };
byte cipher[] = { // 暗号文で初期化 };
byte decoded[sizeof(cipher)];
if ( wc_Des3_CbcDecrypt(&dec, decoded, cipher, sizeof(cipher)) != 0) {
// error decrypting message
// メッセージの復号エラー
}
\endcode
\sa wc_Des3_SetKey
\sa wc_Des3_CbcEncrypt
*/
int wc_Des3_CbcDecrypt(Des3* des, byte* out,
const byte* in,word32 sz);
const byte* in,word32 sz);

View File

@@ -1,12 +1,18 @@
/*!
\ingroup Diffie-Hellman
\brief この関数は、Diffie-Hellman Exchangeプロトコルを使用して安全な秘密鍵を交渉するのに使用するためのDiffie-Hellmanキーを初期化します。
\return none いいえ返します。
\brief この関数は、Diffie-Hellman鍵交換プロトコルで安全な秘密鍵をネゴシエートするために使用するDiffie-Hellman鍵を初期化します。
\return none 戻り値なし。
\param key 安全な鍵交換で使用するために初期化するDhKey構造体へのポインタ
_Example_
\code
DhKey key;
wc_InitDhKey(&key); // initialize DH key
wc_InitDhKey(&key); // DH鍵を初期化
\endcode
\sa wc_FreeDhKey
\sa wc_DhGenerateKeyPair
*/
@@ -14,33 +20,44 @@ int wc_InitDhKey(DhKey* key);
/*!
\ingroup Diffie-Hellman
\brief この関数は、Diffie-Hellman Exchangeプロトコルを使用して安全な秘密鍵をネゴシエートするために使用された後にDiffie-Hellmanキーを解放します。
\return none いいえ返します。
\brief この関数は、Diffie-Hellman鍵交換プロトコルで安全な秘密鍵をネゴシエートするために使用された後、Diffie-Hellman鍵を解放します。
\return none 戻り値なし。
\param key 解放するDhKey構造体へのポインタ
_Example_
\code
DhKey key;
// initialize key, perform key exchange
// 鍵を初期化、鍵交換を実行
wc_FreeDhKey(&key); // free DH key to avoid memory leaks
wc_FreeDhKey(&key); // メモリリークを避けるためにDH鍵を解放
\endcode
\sa wc_InitDhKey
*/
void wc_FreeDhKey(DhKey* key);
/*!
\ingroup Diffie-Hellman
\brief この関数はdiffie-hellmanパブリックパラメータに基づいてパブリック/秘密鍵ペアを生成し、PRIVSの秘密鍵とPubの公開鍵を格納します。初期化されたDiffie-Hellmanキーと初期化されたRNG構造を取ります。
\return BAD_FUNC_ARG この関数への入力の1つを解析するエラーがある場合に返されます
\return RNG_FAILURE_E RNGを使用して乱数を生成するエラーが発生した場合
\return MP_INIT_E 公開鍵の生成中に数学ライブラリにエラーがある場合は返却される可能性があります
\return MP_READ_E 公開鍵の生成中に数学ライブラリにエラーがある場合は返却される可能性があります
\return MP_EXPTMOD_E 公開鍵生成に数学ライブラリエラーがある場合は返却される可能性があります
\return MP_TO_E 公開鍵生成に数学ライブラリエラーがある場合は返却される可能性があります
\param key キーペアを生成するDHKEY構造体へのポインタ
\param rng キーを生成するための初期化された乱数発生器RNGへのポインタ
\param priv 秘密鍵を保存するバッファへのポインタ
\param privSz PRIVに書かれた秘密鍵のサイズを保存します
\param pub 公開鍵を保存するバッファへのポインタ
\brief この関数は、Diffie-Hellman公開パラメータに基づいて公開/秘密鍵ペアを生成し、秘密鍵をprivに、公開鍵をpubに格納します。初期化されたDiffie-Hellman鍵と初期化されたrng構造体を受け取ります
\return BAD_FUNC_ARG この関数への入力の1つを解析する際にエラーがある場合に返されます
\return RNG_FAILURE_E rngを使用して乱数を生成する際にエラーがある場合に返されます
\return MP_INIT_E 公開鍵生成する際に数学ライブラリエラーがある場合に返される可能性があります
\return MP_READ_E 公開鍵生成する際に数学ライブラリエラーがある場合に返される可能性があります
\return MP_EXPTMOD_E 公開鍵を生成する際に数学ライブラリでエラーがある場合に返される可能性があります
\return MP_TO_E 公開鍵を生成する際に数学ライブラリでエラーがある場合に返される可能性があります
\param key 鍵ペアを生成するDhKey構造体へのポインタ
\param rng 鍵を生成するために使用する初期化された乱数生成器(rng)へのポインタ
\param priv 秘密鍵を格納するバッファへのポインタ
\param privSz privに書き込まれた秘密鍵のサイズを格納します
\param pub 公開鍵を格納するバッファへのポインタ
\param pubSz pubに書き込まれた秘密鍵のサイズを格納します
_Example_
\code
DhKey key;
@@ -49,12 +66,13 @@ void wc_FreeDhKey(DhKey* key);
byte pub[256];
word32 privSz, pubSz;
wc_InitDhKey(&key); // initialize key
// Set DH parameters using wc_DhSetKey or wc_DhKeyDecode
wc_InitDhKey(&key); // 鍵を初期化
// wc_DhSetKeyまたはwc_DhKeyDecodeを使用してDHパラメータを設定
WC_RNG rng;
wc_InitRng(&rng); // initialize rng
wc_InitRng(&rng); // rngを初期化
ret = wc_DhGenerateKeyPair(&key, &rng, priv, &privSz, pub, &pubSz);
\endcode
\sa wc_InitDhKey
\sa wc_DhSetKey
\sa wc_DhKeyDecode
@@ -64,18 +82,23 @@ int wc_DhGenerateKeyPair(DhKey* key, WC_RNG* rng, byte* priv,
/*!
\ingroup Diffie-Hellman
\brief この関数は、ローカル秘密鍵と受信した公開鍵に基づいて合意された秘密鍵を生成します。交換の両側で完了した場合、この関数は対称通信のための秘密鍵の合意を生成します。共有秘密鍵の生成に成功すると、書かれた秘密鍵のサイズは仲間に保存されます。
\return 0 合意された秘密鍵の生成に成功しました
\return MP_INIT_E 共有秘密鍵の生成中にエラーが発生した場合に返却される可能性があります
\return MP_READ_E 共有秘密鍵の生成中にエラーが発生した場合に返される可能性があります
\return MP_EXPTMOD_E 共有秘密鍵の生成中にエラーが発生した場合に返される可能性があります
\return MP_TO_E 共有秘密鍵の生成中にエラーが発生した場合に返される可能性があります
\param key 共有キーを計算するために使用するDHKEY構造体へのポインタ
\param agree 秘密キーを保存するバッファへのポインタ
\param agreeSz 成功した後に秘密鍵のサイズを保持します
\param priv ローカル秘密鍵を含むバッファへのポインタ
\param privSz 地元の秘密鍵のサイズ
\param otherPub 受信した公開鍵を含むバッファへのポインタ
\brief この関数は、ローカル秘密鍵と受信した公開鍵に基づいて合意された秘密鍵を生成します。交換の両側で完了すると、この関数は対称通信用の合意された秘密鍵を生成します。共有秘密鍵の生成に成功すると、書き込まれた秘密鍵のサイズがagreeSzに格納されます。
\return 0 合意された秘密鍵の生成に成功した場合に返されます
\return MP_INIT_E 共有秘密鍵の生成中にエラーがある場合に返される可能性があります
\return MP_READ_E 共有秘密鍵の生成中にエラーがある場合に返される可能性があります
\return MP_EXPTMOD_E 共有秘密鍵の生成中にエラーがある場合に返される可能性があります
\return MP_TO_E 共有秘密鍵の生成中にエラーがある場合に返される可能性があります
\param key 共有鍵を計算するために使用するDhKey構造体へのポインタ
\param agree 秘密鍵を格納するバッファへのポインタ
\param agreeSz 生成成功後に秘密鍵のサイズを保持します
\param priv ローカル秘密鍵を含むバッファへのポインタ
\param privSz ローカル秘密鍵のサイズ
\param otherPub 受信した公開鍵を含むバッファへのポインタ
\param pubSz 受信した公開鍵のサイズ
_Example_
\code
DhKey key;
@@ -84,15 +107,16 @@ int wc_DhGenerateKeyPair(DhKey* key, WC_RNG* rng, byte* priv,
byte agree[256];
word32 agreeSz;
// initialize key, set key prime and base
// wc_DhGenerateKeyPair -- store private key in priv
byte pub[] = { // initialized with the received public key };
// 鍵を初期化、鍵素数とベースを設定
// wc_DhGenerateKeyPair -- 秘密鍵をprivに格納
byte pub[] = { // 受信した公開鍵で初期化 };
ret = wc_DhAgree(&key, agree, &agreeSz, priv, sizeof(priv), pub,
sizeof(pub));
if ( ret != 0 ) {
// error generating shared key
// 共有鍵生成エラー
}
\endcode
\sa wc_DhGenerateKeyPair
*/
int wc_DhAgree(DhKey* key, byte* agree, word32* agreeSz,
@@ -101,27 +125,33 @@ int wc_DhAgree(DhKey* key, byte* agree, word32* agreeSz,
/*!
\ingroup Diffie-Hellman
\brief この機能は、DERフォーマットのキーを含む与えられた入力バッファからDiffie-Hellmanキーをデコードします。結果をDHKEY構造体に格納します。
\return 0 入力キーの復号に成功したときに返されます
\return ASN_PARSE_E 入力のシーケンスを解析したエラーがある場合に返されます
\return ASN_DH_KEY_E 解析された入力から秘密鍵パラメータを読み取るエラーがある場合
\param input derフォーマットされたdiffie-hellmanキーを含むバッファへのポインタ
\param inOutIdx キーをデコードしている間に解析されたインデックスを保存する整数へのポインタ
\param key 入力キーで初期化するためのDHKEY構造体へのポインタ
\brief この関数は、DERフォーマットの鍵を含む指定された入力バッファからDiffie-Hellman鍵をデコードします。結果をDhKey構造体に格納します
\return 0 入力鍵のデコードに成功した場合に返されます
\return ASN_PARSE_E 入力のシーケンスを解析する際にエラーがある場合に返されます
\return ASN_DH_KEY_E 解析された入力から秘密鍵パラメータを読み取る際にエラーがある場合に返されます
\param input DERフォーマットのDiffie-Hellman鍵を含むバッファへのポインタ
\param inOutIdx 鍵をデコードする際に解析されたインデックスを格納する整数へのポインタ
\param key 入力鍵で初期化するDhKey構造体へのポインタ
\param inSz 入力バッファの長さ。読み取り可能な最大長を示します
_Example_
\code
DhKey key;
word32 idx = 0;
byte keyBuff[1024];
// initialize with DER formatted key
// DERフォーマットの鍵で初期化
wc_DhKeyInit(&key);
ret = wc_DhKeyDecode(keyBuff, &idx, &key, sizeof(keyBuff));
if ( ret != 0 ) {
// error decoding key
// 鍵のデコードエラー
}
\endcode
\sa wc_DhSetKey
*/
int wc_DhKeyDecode(const byte* input, word32* inOutIdx, DhKey* key,
@@ -129,28 +159,34 @@ int wc_DhKeyDecode(const byte* input, word32* inOutIdx, DhKey* key,
/*!
\ingroup Diffie-Hellman
\brief この関数は、入力秘密鍵パラメータを使用してDHKEY構造体のキーを設定します。WC_DHKEYDECODEとは異なり、この関数は入力キーがDERフォーマットでフォーマットされ、代わりにPARSED入力パラメータPPrimeとGBaseを受け入れる必要はありません。
\return 0 鍵の設定に成功しました
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLに評価された場合に返されます。
\return MP_INIT_E ストレージのキーパラメータの初期化中にエラーがある場合に返されます
\return ASN_DH_KEY_E DHキーパラメータPおよびGでエラーの読み取りがある場合返されます
\param key キーを設定するDHKEY構造体へのポインタ
\param p キーで使用するためのプライムを含むバッファへのポインタ
\param pSz 入力プライムの長さ
\param g キーで使用するためのベースを含むバッファへのポインタ
\brief この関数は、入力秘密鍵パラメータを使用してDhKey構造体の鍵を設定します。wc_DhKeyDecodeとは異なり、この関数は入力鍵がDERフォーマットでフォーマットされている必要はなく、代わりに単純に解析された入力パラメータp(素数)とg(ベース)を受け入れます。
\return 0 鍵の設定に成功した場合に返されます
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLと評価される場合返されます
\return MP_INIT_E 格納用の鍵パラメータを初期化する際にエラーがある場合に返されます
\return ASN_DH_KEY_E DH鍵パラメータpとgを読み取る際にエラーがある場合に返されます
\param key 鍵を設定するDhKey構造体へのポインタ
\param p 鍵で使用する素数を含むバッファへのポインタ
\param pSz 入力素数の長さ
\param g 鍵で使用するベースを含むバッファへのポインタ
\param gSz 入力ベースの長さ
_Example_
\code
DhKey key;
byte p[] = { // initialize with prime };
byte g[] = { // initialize with base };
byte p[] = { // 素数で初期化 };
byte g[] = { // ベースで初期化 };
wc_DhKeyInit(&key);
ret = wc_DhSetKey(key, p, sizeof(p), g, sizeof(g));
if ( ret != 0 ) {
// error setting key
// 鍵設定エラー
}
\endcode
\sa wc_DhKeyDecode
*/
int wc_DhSetKey(DhKey* key, const byte* p, word32 pSz, const byte* g,
@@ -158,18 +194,23 @@ int wc_DhSetKey(DhKey* key, const byte* p, word32 pSz, const byte* g,
/*!
\ingroup Diffie-Hellman
\brief この関数は、与えられた入力バッファからDiffie-HellmanパラメータPPrimeとGベースをフォーマットされています。
\return 0 DHパラメータの抽出に成功しました
\return ASN_PARSE_E DERフォーマットのDH証明書の解析中にエラーが発生した場合に返されます。
\return BUFFER_E 解析されたパラメータを格納するためにPまたはGに不適切なスペースがある場合
\param input 解析するDERフォーマットされたDifie-Hellman証明書を含むバッファへのポインタ
\param inSz 入力バッファのサイズ
\param p 解析されたプライムを保存するバッファへのポインタ
\param pInOutSz Pバッファ内の使用可能なサイズを含むWord32オブジェクトへのポインタ。関数呼び出しを完了した後にバッファに書き込まれたバイト数で上書きされます。
\param g 解析されたベースを保存するバッファへのポインタ
\brief この関数は、指定された入力バッファからDERフォーマットのDiffie-Hellmanパラメータp(素数)とg(ベース)をロードします。
\return 0 DHパラメータの抽出に成功した場合に返されます
\return ASN_PARSE_E DERフォーマットのDH証明書を解析する際にエラーが発生した場合に返されます
\return BUFFER_E pまたはgに解析されたパラメータを格納する十分なスペースがない場合に返されます
\param input 解析するDERフォーマットのDiffie-Hellman証明書を含むバッファへのポインタ
\param inSz 入力バッファのサイズ
\param p 解析された素数を格納するバッファへのポインタ
\param pInOutSz pバッファで利用可能なサイズを含むword32オブジェクトへのポインタ。関数呼び出しの完了後、バッファに書き込まれたバイト数で上書きされます
\param g 解析されたベースを格納するバッファへのポインタ
\param gInOutSz gバッファで利用可能なサイズを含むword32オブジェクトへのポインタ。関数呼び出しの完了後、バッファに書き込まれたバイト数で上書きされます
_Example_
\code
byte dhCert[] = { initialize with DER formatted certificate };
byte dhCert[] = { DERフォーマットの証明書で初期化 };
byte p[MAX_DH_SIZE];
byte g[MAX_DH_SIZE];
word32 pSz = MAX_DH_SIZE;
@@ -177,9 +218,10 @@ int wc_DhSetKey(DhKey* key, const byte* p, word32 pSz, const byte* g,
ret = wc_DhParamsLoad(dhCert, sizeof(dhCert), p, &pSz, g, &gSz);
if ( ret != 0 ) {
// error parsing inputs
// 入力の解析エラー
}
\endcode
\sa wc_DhSetKey
\sa wc_DhKeyDecode
*/
@@ -188,6 +230,9 @@ int wc_DhParamsLoad(const byte* input, word32 inSz, byte* p,
/*!
\ingroup Diffie-Hellman
\brief この関数は...を返し、HAVE_FFDHE_2048が定義されている必要があります。
\sa wc_Dh_ffdhe3072_Get
\sa wc_Dh_ffdhe4096_Get
\sa wc_Dh_ffdhe6144_Get
@@ -197,6 +242,9 @@ const DhParams* wc_Dh_ffdhe2048_Get(void);
/*!
\ingroup Diffie-Hellman
\brief この関数は...を返し、HAVE_FFDHE_3072が定義されている必要があります。
\sa wc_Dh_ffdhe2048_Get
\sa wc_Dh_ffdhe4096_Get
\sa wc_Dh_ffdhe6144_Get
@@ -206,6 +254,9 @@ const DhParams* wc_Dh_ffdhe3072_Get(void);
/*!
\ingroup Diffie-Hellman
\brief この関数は...を返し、HAVE_FFDHE_4096が定義されている必要があります。
\sa wc_Dh_ffdhe2048_Get
\sa wc_Dh_ffdhe3072_Get
\sa wc_Dh_ffdhe6144_Get
@@ -215,6 +266,9 @@ const DhParams* wc_Dh_ffdhe4096_Get(void);
/*!
\ingroup Diffie-Hellman
\brief この関数は...を返し、HAVE_FFDHE_6144が定義されている必要があります。
\sa wc_Dh_ffdhe2048_Get
\sa wc_Dh_ffdhe3072_Get
\sa wc_Dh_ffdhe4096_Get
@@ -224,6 +278,9 @@ const DhParams* wc_Dh_ffdhe6144_Get(void);
/*!
\ingroup Diffie-Hellman
\brief この関数は...を返し、HAVE_FFDHE_8192が定義されている必要があります。
\sa wc_Dh_ffdhe2048_Get
\sa wc_Dh_ffdhe3072_Get
\sa wc_Dh_ffdhe4096_Get
@@ -233,49 +290,61 @@ const DhParams* wc_Dh_ffdhe8192_Get(void);
/*!
\ingroup Diffie-Hellman
\brief FFCのSP 800-56Ar3、セクション5.6.2.1.4、メソッド(b)のプロセスに従って、DH鍵のペアワイズ整合性をチェックします。
*/
int wc_DhCheckKeyPair(DhKey* key, const byte* pub, word32 pubSz,
const byte* priv, word32 privSz);
/*!
\ingroup Diffie-Hellman
\brief 無効な数値についてDH秘密鍵をチェックします
*/
int wc_DhCheckPrivKey(DhKey* key, const byte* priv, word32 pubSz);
/*!
\ingroup Diffie-Hellman
*/
int wc_DhCheckPrivKey_ex(DhKey* key, const byte* priv, word32 pubSz,
const byte* prime, word32 primeSz);
/*!
\ingroup Diffie-Hellman
*/
int wc_DhCheckPubKey(DhKey* key, const byte* pub, word32 pubSz);
/*!
\ingroup Diffie-Hellman
*/
int wc_DhCheckPubKey_ex(DhKey* key, const byte* pub, word32 pubSz,
const byte* prime, word32 primeSz);
/*!
\ingroup Diffie-Hellman
*/
int wc_DhExportParamsRaw(DhKey* dh, byte* p, word32* pSz,
byte* q, word32* qSz, byte* g, word32* gSz);
/*!
\ingroup Diffie-Hellman
*/
int wc_DhGenerateParams(WC_RNG *rng, int modSz, DhKey *dh);
/*!
\ingroup Diffie-Hellman
*/
int wc_DhSetCheckKey(DhKey* key, const byte* p, word32 pSz,
const byte* g, word32 gSz, const byte* q, word32 qSz,
int trusted, WC_RNG* rng);
/*!
\ingroup Diffie-Hellman
*/
int wc_DhSetKey_ex(DhKey* key, const byte* p, word32 pSz,
const byte* g, word32 gSz, const byte* q, word32 qSz);
/*!
\ingroup Diffie-Hellman
*/
int wc_FreeDhKey(DhKey* key);
int wc_FreeDhKey(DhKey* key);

View File

@@ -1,244 +1,244 @@
/*!
\defgroup 3DES Algorithms - 3DES
\defgroup AES Algorithms - AES
\defgroup ARC4 Algorithms - ARC4
\defgroup BLAKE2 Algorithms - BLAKE2
\defgroup Camellia Algorithms - Camellia
\defgroup ChaCha Algorithms - ChaCha
\defgroup ChaCha20Poly1305 Algorithms - ChaCha20_Poly1305
 \defgroup CMAC Algorithm - CMAC
\defgroup Crypto Callbacks - CryptoCb
\defgroup Curve25519 Algorithms - Curve25519
\defgroup Curve448 Algorithms - Curve448
\defgroup DSA Algorithms - DSA
\defgroup Diffie-Hellman Algorithms - Diffie-Hellman
\defgroup ECC Algorithms - ECC
\defgroup ED25519 Algorithms - ED25519
\defgroup ED448 Algorithms - ED448
\defgroup ECCSI_Overview Overview of ECCSI
ECCSI (Elliptic Curve-Based Certificateless Signatures for Identity-Based Encryption) is specified in RFC 6507 (https://tools.ietf.org/html/rfc6507).
\defgroup 3DES アルゴリズム - 3DES
\defgroup AES アルゴリズム - AES
\defgroup ARC4 アルゴリズム - ARC4
\defgroup BLAKE2 アルゴリズム - BLAKE2
\defgroup Camellia アルゴリズム - Camellia
\defgroup ChaCha アルゴリズム - ChaCha
\defgroup ChaCha20Poly1305 アルゴリズム - ChaCha20_Poly1305
\defgroup CMAC アルゴリズム - CMAC
\defgroup Crypto Callbacksコールバック - CryptoCb
\defgroup Curve25519 アルゴリズム - Curve25519
\defgroup Curve448 アルゴリズム - Curve448
\defgroup DSA アルゴリズム - DSA
\defgroup Diffie-Hellman アルゴリズム - Diffie-Hellman
\defgroup ECC アルゴリズム - ECC
\defgroup ED25519 アルゴリズム - ED25519
\defgroup ED448 アルゴリズム - ED448
\defgroup ECCSI_Overview ECCSIの概要
ECCSI(楕円曲線ベースの証明書レス署名によるアイデンティティベース暗号化)は、RFC 6507(https://tools.ietf.org/html/rfc6507)で規定されています。
In Identity-Based cryptography, there is a Key Management Service that generates keys based on an identity for a client.
The private key (SSK) and public key (PVT) are delivered to the signer and the public key (PVT) only delivered to the verifier on request.\n\n
wolfCrypt offers the ability to:
-# Create KMS keys,
-# Generate signing key pairs,
-# Validate signing key pairs,
-# Sign messages and
-# Verify messages.
アイデンティティベース暗号化では、クライアントのアイデンティティに基づいてキーを生成する鍵管理サービスがあります。
秘密鍵(SSK)と公開鍵(PVT)は署名者に配信され、公開鍵(PVT)のみがリクエストに応じて検証者に配信されます。\n\n
wolfCryptは次の機能を提供します:
-# KMS鍵の作成
-# 署名鍵ペアの生成
-# 署名鍵ペアの検証
-# メッセージの署名
-# メッセージの検証
KMS:
-# Initialize ECCSI Key: wc_InitEccsiKey()
-# Make and save or load ECCSI Key:
-# wc_MakeEccsiKey(), wc_ExportEccsiKey(), wc_ExportEccsiPublicKey() or
-# ECCSI鍵の初期化: wc_InitEccsiKey()
-# ECCSI鍵の作成と保存またはロード:
-# wc_MakeEccsiKey(), wc_ExportEccsiKey(), wc_ExportEccsiPublicKey() または
-# wc_ImportEccsiKey()
-# Wait for request:
-# Receive signing ID from client.
-# Generate signing key pair from ID: wc_MakeEccsiPair()
-# Encode result:
-# For signer, signing key pair: wc_EncodeEccsiPair()
-# Send KPAK and result
-# Free ECCSI Key: wc_FreeEccsiKey()
-# リクエストを待機:
-# クライアントから署名IDを受信
-# IDから署名鍵ペアを生成: wc_MakeEccsiPair()
-# 結果をエンコード:
-# 署名者用に署名鍵ペア: wc_EncodeEccsiPair()
-# KPAKと結果を送信
-# ECCSI鍵の解放: wc_FreeEccsiKey()
Client, signer:
-# Initialize ECCSI Key: wc_InitEccsiKey()
-# (When signing pair not cached) Request KPAK and signing pair from KMS
-# Send signing ID to KMS.
-# Receive signing key pair from KMS.
-# Load KMS Public Key: wc_ImportEccsiPublicKey()
-# Decode signing key pair: wc_DecodeEccsiPair()
-# Validate the key pair: wc_ValidateEccsiPair()
-# (If not done above) Load KMS Public Key: wc_ImportEccsiPublicKey()
-# (If not cached) Calculate hash of the ID and PVT: wc_HashEccsiId()
-# For each message:
-# Set Hash of Identity: wc_SetEccsiHash()
-# Sign message: wc_SignEccsiHash()
-# Send hash ID, message and signature to peer.
-# Free ECCSI Key: wc_FreeEccsiKey()
クライアント、署名者:
-# ECCSI鍵の初期化: wc_InitEccsiKey()
-# (署名ペアがキャッシュされていない場合)KMSにKPAKと署名ペアをリクエスト
-# KMSに署名IDを送信
-# KMSから署名鍵ペアを受信
-# KMS公開鍵をロード: wc_ImportEccsiPublicKey()
-# 署名鍵ペアをデコード: wc_DecodeEccsiPair()
-# 鍵ペアを検証: wc_ValidateEccsiPair()
-# (上記で実行していない場合)KMS公開鍵をロード: wc_ImportEccsiPublicKey()
-# (キャッシュされていない場合)IDとPVTのハッシュを計算: wc_HashEccsiId()
-# 各メッセージに対して:
-# アイデンティティのハッシュを設定: wc_SetEccsiHash()
-# メッセージに署名: wc_SignEccsiHash()
-# ハッシュID、メッセージ、署名をピアに送信
-# ECCSI鍵の解放: wc_FreeEccsiKey()
Client, verifier:
-# Receive hash ID, message and signature from signer.
-# Request KPAK (if not cached) and PVT (if not cached) for hash ID from KMS.
-# Receive KPAK (if not cached) and PVT (if not cached) for hash ID from KMS.
-# Initialize ECCSI Key: wc_InitEccsiKey()
-# Load KMS Public Key: wc_ImportEccsiPublicKey()
-# Decode PVT: wc_DecodeEccsiPvtFromSig()
-# Calculate hash of the ID and PVT: wc_HashEccsiId()
-# Set ECCSI key pair: wc_SetEccsiPair()
-# Verify signature of message: wc_VerifyEccsiHash()
-# Free ECCSI Key: wc_FreeEccsiKey()
クライアント、検証者:
-# 署名者からハッシュID、メッセージ、署名を受信
-# KMSにKPAK(キャッシュされていない場合)とハッシュIDのPVT(キャッシュされていない場合)をリクエスト
-# KMSからKPAK(キャッシュされていない場合)とハッシュIDのPVT(キャッシュされていない場合)を受信
-# ECCSI鍵の初期化: wc_InitEccsiKey()
-# KMS公開鍵をロード: wc_ImportEccsiPublicKey()
-# PVTをデコード: wc_DecodeEccsiPvtFromSig()
-# IDとPVTのハッシュを計算: wc_HashEccsiId()
-# ECCSI鍵ペアを設定: wc_SetEccsiPair()
-# メッセージの署名を検証: wc_VerifyEccsiHash()
-# ECCSI鍵の解放: wc_FreeEccsiKey()
\defgroup ECCSI_Setup Setup ECCSI Key
Operations for establinshing an ECCSI key.
\defgroup ECCSI_Setup ECCSI鍵のセットアップ
ECCSI鍵を確立するための操作。
Initialize ECCSI Key before use (wc_InitEccsiKey()).\n
Initialize ECCSI Key before use (wc_InitEccsiKey_ex()) for use with a curve other than P256.\n
Either make a new key (wc_MakeEccsiKey()), import an existing key (wc_ImportEccsiKey()) or import existing private key (wc_ImportEccsiPrivateKey()) and public key (wc_ImportEccsiPublicKey()).\n
Export the key (wc_ExportEccsiKey()) after making a new key for future use.\n
Export the private key (wc_ExportEccsiPrivateKey()) after making a new key for future use.\n
Export the public key (wc_ExportEccsiPublicKey()) from KMS to pass to client.\n
Import the public key (wc_ImportEccsiPublicKey()) into client.\n
Free the ECCSI Key (wc_FreeEccsiKey()) when finished.
使用前にECCSI鍵を初期化(wc_InitEccsiKey())\n
P256以外の曲線を使用する場合は、使用前にECCSI鍵を初期化(wc_InitEccsiKey_ex())。\n
新しい鍵を作成(wc_MakeEccsiKey())、既存の鍵をインポート(wc_ImportEccsiKey())、または既存の秘密鍵(wc_ImportEccsiPrivateKey())と公開鍵(wc_ImportEccsiPublicKey())をインポート。\n
新しい鍵を作成した後、将来の使用のために鍵をエクスポート(wc_ExportEccsiKey())。\n
新しい鍵を作成した後、将来の使用のために秘密鍵をエクスポート(wc_ExportEccsiPrivateKey())。\n
KMSからクライアントに渡すために公開鍵をエクスポート(wc_ExportEccsiPublicKey())。\n
クライアントに公開鍵をインポート(wc_ImportEccsiPublicKey())\n
終了時にECCSI鍵を解放(wc_FreeEccsiKey())
\defgroup ECCSI_Operations Operations for Signing and Verifying with ECCSI Key
These operations are for signing and verifying with ECCSI keys.
\defgroup ECCSI_Operations ECCSI鍵での署名と検証のための操作
これらは、ECCSI鍵を使用した署名と検証のための操作です。
Make an ECCSI key pair (wc_MakeEccsiPair()) with the signer's ID for use when signing.\n
Validate the ECCSI key pair (wc_ValidateEccsiPair()) with the signer's ID.\n
Validate the ECCSI Public Validation Token (PVT) (wc_ValidateEccsiPvt()).\n
Encode the ECCSI key pair (wc_EncodeEccsiPair()) for transfer to client.\n
Encode the ECCSI SSK (wc_EncodeEccsiSsk()) for transfer to client.\n
Encode the ECCSI PVT (wc_EncodeEccsiPvt()) for transfer to verifier.\n
Decode the ECCSI key pair (wc_DecodeEccsiPair()) on client for signing.\n
Decode the ECCSI SSK (wc_DecodeEccsiSsk()) on client for signing.\n
Decode the ECCSI PVT (wc_DecodeEccsiPvt()) on client for signing.\n
Decode the ECCSI PVT from the signature (wc_DecodeEccsiPvtFromSig()) on client for verifying.\n
Calculate hash of the ID (wc_HashEccsiId()) for signing/verifying using ID and Public Validation Token (PVT).\n
Sign (wc_SignEccsiHash()) a message with the hash of the ID and the Secret Signing Key (SSK) and Public Validation Token (PVT).\n
Verify (wc_VerifyEccsiHash()) a message with the hash of the signer's ID.
署名時に使用する署名者のIDでECCSI鍵ペアを作成(wc_MakeEccsiPair())。\n
署名者のIDでECCSI鍵ペアを検証(wc_ValidateEccsiPair())\n
ECCSI公開検証トークン(PVT)を検証(wc_ValidateEccsiPvt())\n
クライアントへの転送のためにECCSI鍵ペアをエンコード(wc_EncodeEccsiPair())。\n
クライアントへの転送のためにECCSI SSKをエンコード(wc_EncodeEccsiSsk())\n
検証者への転送のためにECCSI PVTをエンコード(wc_EncodeEccsiPvt())\n
署名のためにクライアントでECCSI鍵ペアをデコード(wc_DecodeEccsiPair())。\n
署名のためにクライアントでECCSI SSKをデコード(wc_DecodeEccsiSsk())\n
署名のためにクライアントでECCSI PVTをデコード(wc_DecodeEccsiPvt())\n
検証のためにクライアントで署名からECCSI PVTをデコード(wc_DecodeEccsiPvtFromSig())\n
IDと公開検証トークン(PVT)を使用した署名/検証のためにIDのハッシュを計算(wc_HashEccsiId())。\n
IDのハッシュと秘密署名鍵(SSK)および公開検証トークン(PVT)でメッセージに署名(wc_SignEccsiHash())。\n
署名者のIDのハッシュでメッセージを検証(wc_VerifyEccsiHash())
\defgroup SAKKE_Overview Overview of SAKKE Key
SAKKE (Sakai-Kasahara Key Encryption) is specified in RFC 6508 (https://tools.ietf.org/html/rfc6508).
\defgroup SAKKE_Overview SAKKE鍵の概要
SAKKE(酒井-笠原鍵暗号化)は、RFC 6508(https://tools.ietf.org/html/rfc6508)で規定されています。
SAKKE is used to transfer a secret to a peer using Identity Based cryptography.\n
The Key Management Service (KMS) is responsible for issuing Receiver Secret %Keys (RSKs).
Data up to (2^hashlen)^hashlen bytes of data can be transferred.\n
The sender must know the identity of the receiver and the KMS Public Key.\n
The receiver must have obtained a Receiver Secret Key (RSK) for the identity from a KMS in order to derive the secret.
SAKKEは、アイデンティティベース暗号化を使用してピアに秘密を転送するために使用されます。\n
鍵管理サービス(KMS)は、受信者秘密%鍵(RSK)の発行を担当します。
最大(2^hashlen)^hashlenバイトのデータを転送できます。\n
送信者は受信者のアイデンティティとKMS公開鍵を知っている必要があります。\n
受信者は、秘密を導出するために、KMSからアイデンティティの受信者秘密鍵(RSK)を取得している必要があります。
KMS:
-# Initialize SAKKE Key: wc_InitSakkeKey()
-# Make and save or load SAKKE Key:
-# wc_MakeSakkeKey(), wc_ExportSakkeKey(), wc_ExportSakkePublicKey() or
-# SAKKE鍵の初期化: wc_InitSakkeKey()
-# SAKKE鍵の作成と保存またはロード:
-# wc_MakeSakkeKey(), wc_ExportSakkeKey(), wc_ExportSakkePublicKey() または
-# wc_ImportSakkeKey()
-# Wait for request:
-# Make an RSK base on ID for the client: wc_MakeSakkeRsk()
-# Encode RSK for transfer to client: wc_EncodeSakkeRsk()
-# Free SAKKE Key: wc_FreeSakkeKey()
-# リクエストを待機:
-# クライアントのIDに基づいてRSKを作成: wc_MakeSakkeRsk()
-# クライアントへの転送のためにRSKをエンコード: wc_EncodeSakkeRsk()
-# SAKKE鍵の解放: wc_FreeSakkeKey()
Key Exchange, Peer A:
-# Initialize SAKKE Key: wc_InitSakkeKey()
-# Load KMS Public Key: wc_ImportSakkePublicKey()
-# Generate a random SSV: wc_GenerateSakkeSSV()
-# Set the identity of Peer B: wc_SetSakkeIdentity()
-# Make an encapsulated SSV and auth data: wc_MakeSakkeEncapsulatedSSV()
-# Send encapsulated data to Peer B
-# Free SAKKE Key: wc_FreeSakkeKey()
鍵交換、ピアA:
-# SAKKE鍵の初期化: wc_InitSakkeKey()
-# KMS公開鍵をロード: wc_ImportSakkePublicKey()
-# ランダムなSSVを生成: wc_GenerateSakkeSSV()
-# ピアBのアイデンティティを設定: wc_SetSakkeIdentity()
-# カプセル化されたSSVと認証データを作成: wc_MakeSakkeEncapsulatedSSV()
-# カプセル化されたデータをピアBに送信
-# SAKKE鍵の解放: wc_FreeSakkeKey()
Key Exchange, Peer B:
-# Receive encapsulated data.
-# Initialize SAKKE Key: wc_InitSakkeKey()
-# Load KMS Public Key: wc_ImportSakkePublicKey()
-# Decode RSK transferred from KMS or stored locally: wc_DecodeSakkeRsk()
-# [Optional] Validate RSK before first use: wc_ValidateSakkeRsk()
-# Set the identity: wc_SetSakkeIdentity()
-# Set the RSK and, optionally precomputation table: wc_SetSakkeRsk()
-# Derive SSV with auth data: wc_DeriveSakkeSSV()
-# Free SAKKE Key: wc_FreeSakkeKey()
鍵交換、ピアB:
-# カプセル化されたデータを受信
-# SAKKE鍵の初期化: wc_InitSakkeKey()
-# KMS公開鍵をロード: wc_ImportSakkePublicKey()
-# KMSから転送されたまたはローカルに保存されたRSKをデコード: wc_DecodeSakkeRsk()
-# [オプション]最初の使用前にRSKを検証: wc_ValidateSakkeRsk()
-# アイデンティティを設定: wc_SetSakkeIdentity()
-# RSKと、オプションで事前計算テーブルを設定: wc_SetSakkeRsk()
-# 認証データでSSVを導出: wc_DeriveSakkeSSV()
-# SAKKE鍵の解放: wc_FreeSakkeKey()
Transfer secret, Peer A:
-# Initialize SAKKE Key: wc_InitSakkeKey()
-# Load KMS Public Key: wc_ImportSakkePublicKey()
-# Set the identity of Peer B: wc_SetSakkeIdentity()
-# Make an encapsulation of the SSV and auth data: wc_MakeSakkeEncapsulatedSSV()
-# Send encapsulated data to Peer B
-# Free SAKKE Key: wc_FreeSakkeKey()
秘密の転送、ピアA:
-# SAKKE鍵の初期化: wc_InitSakkeKey()
-# KMS公開鍵をロード: wc_ImportSakkePublicKey()
-# ピアBのアイデンティティを設定: wc_SetSakkeIdentity()
-# SSVと認証データのカプセル化を作成: wc_MakeSakkeEncapsulatedSSV()
-# カプセル化されたデータをピアBに送信
-# SAKKE鍵の解放: wc_FreeSakkeKey()
Transfer secret, Peer B:
-# Initialize SAKKE Key: wc_InitSakkeKey()
-# Load KMS Public Key: wc_ImportSakkePublicKey()
-# Decode RSK transferred from KMS or stored locally: wc_DecodeSakkeRsk()
-# [Optional] Validate RSK before first use: wc_ValidateSakkeRsk()
-# Receive encapsulated data.
-# Set the identity: wc_SetSakkeIdentity()
-# Set the RSK and, optionally precomputation table: wc_SetSakkeRsk()
-# Derive SSV and auth data: wc_DeriveSakkeSSV()
-# Free SAKKE Key: wc_FreeSakkeKey()
秘密の転送、ピアB:
-# SAKKE鍵の初期化: wc_InitSakkeKey()
-# KMS公開鍵をロード: wc_ImportSakkePublicKey()
-# KMSから転送されたまたはローカルに保存されたRSKをデコード: wc_DecodeSakkeRsk()
-# [オプション]最初の使用前にRSKを検証: wc_ValidateSakkeRsk()
-# カプセル化されたデータを受信
-# アイデンティティを設定: wc_SetSakkeIdentity()
-# RSKと、オプションで事前計算テーブルを設定: wc_SetSakkeRsk()
-# SSVと認証データを導出: wc_DeriveSakkeSSV()
-# SAKKE鍵の解放: wc_FreeSakkeKey()
\defgroup SAKKE_Setup Setup SAKKE Key
Operations for establishing a SAKKE key.
\defgroup SAKKE_Setup SAKKE鍵のセットアップ
SAKKE鍵を確立するための操作。
Initialization SAKKE Key before use (wc_InitSakkeKey() or wc_InitSakkeKey_ex()).\n
Either make a new key (wc_MakeSakkeKey()) or import an existing key (wc_ImportSakkeKey()).\n
Export the key (wc_ExportSakkeKey()) after making a new key for future use.\n
If only the private part of the KMS SAKKE Key is available, make the public key (wc_MakeSakkePublicKey()).\n
Export the private key (wc_ExportSakkePrivateKey()) from KMS from storage.\n
Import the private key (wc_ImportSakkePrivateKey()) into KMS from storage.\n
Export the public key (wc_ExportSakkePublicKey()) from KMS to pass to client.\n
Import the public key (wc_ImportSakkePublicKey()) into client.\n
Set the identity to use (wc_SetSakkeIdentity()) into client.\n
Free the SAKKE Key (wc_FreeSakkeKey()) when finished.
使用前にSAKKE鍵を初期化(wc_InitSakkeKey()またはwc_InitSakkeKey_ex())\n
新しい鍵を作成(wc_MakeSakkeKey())または既存の鍵をインポート(wc_ImportSakkeKey())\n
新しい鍵を作成した後、将来の使用のために鍵をエクスポート(wc_ExportSakkeKey())。\n
KMS SAKKE鍵の秘密部分のみが利用可能な場合、公開鍵を作成(wc_MakeSakkePublicKey())\n
ストレージからKMSから秘密鍵をエクスポート(wc_ExportSakkePrivateKey())\n
ストレージからKMSに秘密鍵をインポート(wc_ImportSakkePrivateKey())\n
KMSからクライアントに渡すために公開鍵をエクスポート(wc_ExportSakkePublicKey())。\n
クライアントに公開鍵をインポート(wc_ImportSakkePublicKey())\n
クライアントに使用するアイデンティティを設定(wc_SetSakkeIdentity())\n
終了時にSAKKE鍵を解放(wc_FreeSakkeKey())
\defgroup SAKKE_RSK Operations on/with SAKKE RSK
These operations make, validate, encode and decode a Receiver Secret Key (RSK).
\defgroup SAKKE_RSK SAKKE RSKに関する/を使用した操作
これらの操作は、受信者秘密鍵(RSK)を作成、検証、エンコード、デコードします。
An RSK is required to derive an SSV (see wc_DeriveSakkeSSV()).\n
On the KMS, make an RSK (wc_MakeSakkeRsk()) from the client's ID.\n
On the client, validate the RSK (wc_ValidateSakkeRsk()) with the ID.\n
Encode the RSK (wc_EncodeSakkeRsk()) to pass to client or for storage.\n
Decode the RSK (wc_DecodeSakkeRsk()) on the client when needed.\n
Import the RSK (wc_ImportSakkeRsk()) on the client when needed.\n
Set the RSK and, optionally, a pre-computation table (wc_SetSakkeRsk()) on the client when needed.
RSKは、SSVを導出するために必要です(wc_DeriveSakkeSSV()を参照)。\n
KMSで、クライアントのIDからRSKを作成(wc_MakeSakkeRsk())。\n
クライアントで、IDでRSKを検証(wc_ValidateSakkeRsk())\n
クライアントへの転送またはストレージのためにRSKをエンコード(wc_EncodeSakkeRsk())。\n
必要に応じてクライアントでRSKをデコード(wc_DecodeSakkeRsk())。\n
必要に応じてクライアントでRSKをインポート(wc_ImportSakkeRsk())。\n
必要に応じてクライアントでRSKと、オプションで事前計算テーブルを設定(wc_SetSakkeRsk())。
\defgroup SAKKE_Operations Operations using SAKKE Key
These operations transfer a Shared Secret Value (SSV) from one client to another. The SSV may be randomly generated.
\defgroup SAKKE_Operations SAKKE鍵を使用した操作
これらの操作は、共有秘密値(SSV)を1つのクライアントから別のクライアントに転送します。SSVはランダムに生成できます。
Calculate the size of the authentication data (wc_GetSakkeAuthSize()) to determine where the SSV starts in a buffer.\n
Make the intermediate point I (wc_MakeSakkePointI()) to speed making an encapsulated and deriving SSV.\n
Get intermediate point I (wc_GetSakkePointI()) for storage.\n
Set intermediate point I (wc_SetSakkePointI()) from storage.\n
Generate a pre-computation table for intermediate point I (wc_GenerateSakkePointITable()) to further enhance performance. Store as necessary.\n
Set the pre-computation table for intermediate point I (wc_SetSakkePointITable()) to further enhance performance.\n
Clear the pre-computation table for intermediate point I (wc_ClearSakkePointITable()) to remove reference to external table pointer.\n
Make an encapsulated SSV (wc_MakeSakkeEncapsulatedSSV()) to share with another client. Data in SSV is modified.\n
Generate a random SSV (wc_GenerateSakkeSSV()) for key exchange.\n
Derive the SSV, (wc_DeriveSakkeSSV()) on the recipient from the encapsulated SSV.
認証データのサイズを計算(wc_GetSakkeAuthSize())して、バッファ内のSSVの開始位置を決定。\n
中間点Iを作成(wc_MakeSakkePointI())して、カプセル化の作成とSSVの導出を高速化。\n
ストレージのために中間点Iを取得(wc_GetSakkePointI())\n
ストレージから中間点Iを設定(wc_SetSakkePointI())\n
中間点Iの事前計算テーブルを生成(wc_GenerateSakkePointITable())してパフォーマンスをさらに向上。必要に応じて保存。\n
中間点Iの事前計算テーブルを設定(wc_SetSakkePointITable())してパフォーマンスをさらに向上。\n
中間点Iの事前計算テーブルをクリア(wc_ClearSakkePointITable())して外部テーブルポインタへの参照を削除。\n
別のクライアントと共有するためにカプセル化されたSSVを作成(wc_MakeSakkeEncapsulatedSSV())。SSV内のデータが変更されます。\n
鍵交換のためにランダムなSSVを生成(wc_GenerateSakkeSSV())\n
カプセル化されたSSVから受信者でSSVを導出(wc_DeriveSakkeSSV())。
\defgroup HMAC Algorithms - HMAC
\defgroup MD2 Algorithms - MD2
\defgroup MD4 Algorithms - MD4
\defgroup MD5 Algorithms - MD5
\defgroup PKCS7 Algorithms - PKCS7
\defgroup PKCS11 Algorithms - PKCS11
\defgroup Password Algorithms - Password Based
\defgroup Poly1305 Algorithms - Poly1305
\defgroup RIPEMD Algorithms - RIPEMD
\defgroup RSA Algorithms - RSA
\defgroup SHA Algorithms - SHA 128/224/256/384/512
\defgroup SipHash Algorithm - SipHash
\defgroup SRP Algorithms - SRP
\defgroup HMAC アルゴリズム - HMAC
\defgroup MD2 アルゴリズム - MD2
\defgroup MD4 アルゴリズム - MD4
\defgroup MD5 アルゴリズム - MD5
\defgroup PKCS7 アルゴリズム - PKCS7
\defgroup PKCS11 アルゴリズム - PKCS11
\defgroup Password アルゴリズム - パスワードベース
\defgroup Poly1305 アルゴリズム - Poly1305
\defgroup RIPEMD アルゴリズム - RIPEMD
\defgroup RSA アルゴリズム - RSA
\defgroup SHA アルゴリズム - SHA 128/224/256/384/512
\defgroup SipHash アルゴリズム - SipHash
\defgroup SrtpKdf アルゴリズム - SRTP KDF
\defgroup SRP アルゴリズム - SRP
\defgroup ASN ASN.1
\defgroup Base_Encoding Base Encoding
\defgroup CertManager CertManager API
\defgroup Compression Compression
\defgroup Error Error Reporting
\defgroup IoTSafe IoT-Safe Module
IoT-Safe (IoT-SIM Applet For Secure End-2-End Communication) is a technology that leverage the SIM as robust,
scalable and standardized hardware Root of Trust to protect data communication.
\defgroup Base_Encoding ベースエンコーディング
\defgroup CertManager 証明書マネージャーAPI
\defgroup Compression 圧縮
\defgroup Error エラー報告
\defgroup IoTSafe IoT-Safeモジュール
IoT-Safe(IoT-SIM Applet For Secure End-2-End Communication)は、SIMを堅牢で
スケーラブルかつ標準化されたハードウェアRoot of Trustとして活用し、データ通信を保護する技術です。
IoT-Safe SSL sessions use the SIM as Hardware Security Module, offloading all the crypto public
key operations and reducing the attack surface by restricting access to certificate and keys
to the SIM.
IoT-Safe SSLセッションは、SIMをハードウェアセキュリティモジュールとして使用し、すべての暗号公開
鍵操作をオフロードし、証明書と鍵へのアクセスをSIMに制限することで攻撃対象領域を削減します。
IoT-Safe support can be enabled on an existing WOLFSSL_CTX context, using wolfSSL_CTX_iotsafe_enable().\n
Session created within the context can set the parameters for IoT-Safe key and files usage, and enable
the public keys callback, with wolfSSL_iotsafe_on().
IoT-Safeサポートは、wolfSSL_CTX_iotsafe_enable()を使用して既存のWOLFSSL_CTXコンテキストで有効にできます。\n
コンテキスト内で作成されたセッションは、IoT-Safe鍵とファイル使用のパラメータを設定し、
wolfSSL_iotsafe_on()で公開鍵コールバックを有効にできます。
If compiled in, the module supports IoT-Safe random number generator as source of entropy for wolfCrypt.
コンパイルされている場合、モジュールはwolfCryptのエントロピーソースとしてIoT-Safe乱数生成器をサポートします。
\defgroup PSA Platform Security Architecture (PSA) API
\defgroup Keys Key and Cert Conversion
\defgroup Logging Logging
\defgroup Math Math API
\defgroup Memory Memory Handling
\defgroup Random Random Number Generation
\defgroup Signature Signature API
\defgroup PSA プラットフォームセキュリティアーキテクチャ(PSA)API
\defgroup Keys 鍵と証明書の変換
\defgroup Logging ロギング
\defgroup Math 整数演算API
\defgroup Memory メモリ処理
\defgroup Random 乱数生成
\defgroup Signature 署名API
\defgroup openSSL OpenSSL API
\defgroup wolfCrypt wolfCrypt Init and Cleanup
\defgroup TLS wolfSSL Initialization/Shutdown
\defgroup CertsKeys wolfSSL Certificates and Keys
\defgroup Setup wolfSSL Context and Session Set Up
\defgroup IO wolfSSL Connection, Session, and I/O
\defgroup Debug wolfSSL Error Handling and Reporting
*/
\defgroup wolfCrypt wolfCryptの初期化とクリーンアップ
\defgroup TLS wolfSSLの初期化/シャットダウン
\defgroup CertsKeys wolfSSL証明書と鍵
\defgroup Setup wolfSSLコンテキストとセッションのセットアップ
\defgroup IO wolfSSL接続、セッション、I/O
\defgroup Debug wolfSSLエラー処理と報告
*/

View File

@@ -1,66 +1,84 @@
/*!
\ingroup DSA
\brief この関数は、デジタル署名アルゴリズムDSAを介した認証に使用するためにDSAKEYオブジェクトを初期化します。
\return 0 成功に戻りました
\return BAD_FUNC_ARG NULLキーが渡された場合に返されます。
\brief この関数は、デジタル署名アルゴリズム(DSA)による認証に使用するために、DsaKeyオブジェクトを初期化します
\return 0 成功時に返されます。
\return BAD_FUNC_ARG NULLキーが渡された場合に返されます。
\param key 初期化するDsaKey構造体へのポインタ
_Example_
\code
DsaKey key;
int ret;
ret = wc_InitDsaKey(&key); // initialize DSA key
ret = wc_InitDsaKey(&key); // DSA鍵を初期化
\endcode
\sa wc_FreeDsaKey
*/
int wc_InitDsaKey(DsaKey* key);
/*!
\ingroup DSA
\brief この関数は、使用された後にdsakeyオブジェクトを解放します。
\return none いいえ返します。
\brief この関数は、使用後にDsaKeyオブジェクトを解放します。
\return none 戻り値なし。
\param key 解放するDsaKey構造体へのポインタ
_Example_
\code
DsaKey key;
// initialize key, use for authentication
// 鍵を初期化、認証に使用
...
wc_FreeDsaKey(&key); // free DSA key
wc_FreeDsaKey(&key); // DSA鍵を解放
\endcode
\sa wc_FreeDsaKey
*/
void wc_FreeDsaKey(DsaKey* key);
/*!
\ingroup DSA
\brief この機能は入力ダイジェストに署名し、結果を出力バッファーに格納します。
\return 0 入力ダイジェストに正常に署名したときに返されました
\return MP_INIT_E DSA署名の処理にエラーがある場合は返される可能性があります。
\return MP_READ_E DSA署名の処理にエラーがある場合返される可能性があります
\return MP_CMP_E DSA署名の処理にエラーがある場合返される可能性があります。
\return MP_INVMOD_E DSA署名の処理にエラーがある場合返される可能性があります。
\return MP_EXPTMOD_E DSA署名の処理にエラーがある場合返される可能性があります。
\return MP_MOD_E DSA署名の処理にエラーがある場合返される可能性があります。
\return MP_MUL_E DSA署名の処理にエラーがある場合返される可能性があります。
\return MP_ADD_E DSA署名の処理にエラーがある場合返される可能性があります。
\return MP_MULMOD_E DSA署名の処理にエラーがある場合返される可能性があります。
\return MP_TO_E DSA署名の処理にエラーがある場合返される可能性があります。
\return MP_MEM DSA署名の処理にエラーがある場合返される可能性があります。
\param digest 署名するハッシュへのポインタ
\param out 署名を保存するバッファへのポインタ
\param key 署名を生成するための初期化されたDsakey構造へのポインタ
\brief この関数は、入力ダイジェストに署名し、結果を出力バッファoutに格納します。
\return 0 入力ダイジェストへの署名に成功した場合返されます
\return MP_INIT_E DSA署名の処理にエラーが発生した場合返される可能性があります。
\return MP_READ_E DSA署名の処理にエラーが発生した場合返される可能性があります。
\return MP_CMP_E DSA署名の処理にエラーが発生した場合返される可能性があります。
\return MP_INVMOD_E DSA署名の処理にエラーが発生した場合返される可能性があります。
\return MP_EXPTMOD_E DSA署名の処理にエラーが発生した場合返される可能性があります。
\return MP_MOD_E DSA署名の処理にエラーが発生した場合返される可能性があります。
\return MP_MUL_E DSA署名の処理にエラーが発生した場合返される可能性があります。
\return MP_ADD_E DSA署名の処理にエラーが発生した場合返される可能性があります。
\return MP_MULMOD_E DSA署名の処理にエラーが発生した場合返される可能性があります。
\return MP_TO_E DSA署名の処理中にエラーが発生した場合に返される可能性があります。
\return MP_MEM DSA署名の処理中にエラーが発生した場合に返される可能性があります。
\param digest 署名するハッシュへのポインタ
\param out 署名を格納するバッファへのポインタ
\param key 署名を生成するために使用する初期化されたDsaKey構造体へのポインタ
\param rng 署名生成で使用する初期化されたRNGへのポインタ
_Example_
\code
DsaKey key;
// initialize DSA key, load private Key
// DSA鍵を初期化、秘密鍵をロード
int ret;
WC_RNG rng;
wc_InitRng(&rng);
byte hash[] = { // initialize with hash digest };
byte signature[40]; // signature will be 40 bytes (320 bits)
byte hash[] = { // ハッシュダイジェストで初期化 };
byte signature[40]; // 署名は40バイト(320ビット)になります
ret = wc_DsaSign(hash, signature, &key, &rng);
if (ret != 0) {
// error generating DSA signature
// DSA署名生成エラー
}
\endcode
\sa wc_DsaVerify
*/
int wc_DsaSign(const byte* digest, byte* out,
@@ -68,38 +86,44 @@ int wc_DsaSign(const byte* digest, byte* out,
/*!
\ingroup DSA
\brief この関数は、秘密鍵を考えると、ダイジェストの署名を検証します。回答パラメータでキーが正しく検証されているかどうか、正常な検証に対応する1、および失敗した検証に対応する0が格納されます。
\return 0 検証要求の処理に成功したときに返されます。注:これは、署名が検証されていることを意味するわけではなく、関数が成功したというだけです。
\return MP_INIT_E DSA署名の処理にエラーがある場合は返される可能性があります。
\return MP_READ_E DSA署名の処理にエラーがある場合は返される可能性があります
\return MP_CMP_E DSA署名の処理にエラーがある場合返される可能性があります。
\return MP_INVMOD_E DSA署名の処理にエラーがある場合返される可能性があります。
\return MP_EXPTMOD_E DSA署名の処理にエラーがある場合返される可能性があります。
\return MP_MOD_E DSA署名の処理にエラーがある場合返される可能性があります。
\return MP_MUL_E DSA署名の処理にエラーがある場合返される可能性があります。
\return MP_ADD_E DSA署名の処理にエラーがある場合返される可能性があります。
\return MP_MULMOD_E DSA署名の処理にエラーがある場合返される可能性があります。
\return MP_TO_E DSA署名の処理にエラーがある場合返される可能性があります。
\return MP_MEM DSA署名の処理にエラーがある場合返される可能性があります。
\param digest 署名の主題を含むダイジェストへのポインタ
\param sig 確認する署名を含むバッファへのポインタ
\param key 署名を検証するための初期化されたDsakey構造へのポインタ
\brief この関数は、秘密鍵を使用してダイジェストの署名を検証します。検証が正しく行われたかどうかをanswerパラメータに格納します。1は検証成功、0は検証失敗に対応します。
\return 0 検証リクエストの処理に成功した場合に返されます。注意: これは署名が検証されたことを意味するのではなく、関数が成功したことのみを意味します
\return MP_INIT_E DSA署名の処理にエラーが発生した場合返される可能性があります。
\return MP_READ_E DSA署名の処理にエラーが発生した場合返される可能性があります。
\return MP_CMP_E DSA署名の処理にエラーが発生した場合返される可能性があります。
\return MP_INVMOD_E DSA署名の処理にエラーが発生した場合返される可能性があります。
\return MP_EXPTMOD_E DSA署名の処理にエラーが発生した場合返される可能性があります。
\return MP_MOD_E DSA署名の処理にエラーが発生した場合返される可能性があります。
\return MP_MUL_E DSA署名の処理にエラーが発生した場合返される可能性があります。
\return MP_ADD_E DSA署名の処理にエラーが発生した場合返される可能性があります。
\return MP_MULMOD_E DSA署名の処理にエラーが発生した場合返される可能性があります。
\return MP_TO_E DSA署名の処理中にエラーが発生した場合に返される可能性があります。
\return MP_MEM DSA署名の処理中にエラーが発生した場合に返される可能性があります。
\param digest 署名の対象を含むダイジェストへのポインタ
\param sig 検証する署名を含むバッファへのポインタ
\param key 署名を検証するために使用する初期化されたDsaKey構造体へのポインタ
\param answer 検証が成功したかどうかを格納する整数へのポインタ
_Example_
\code
DsaKey key;
// initialize DSA key, load public Key
// DSA鍵を初期化、公開鍵をロード
int ret;
int verified;
byte hash[] = { // initialize with hash digest };
byte signature[] = { // initialize with signature to verify };
byte hash[] = { // ハッシュダイジェストで初期化 };
byte signature[] = { // 検証する署名で初期化 };
ret = wc_DsaVerify(hash, signature, &key, &verified);
if (ret != 0) {
// error processing verify request
// 検証リクエストの処理エラー
} else if (answer == 0) {
// invalid signature
// 無効な署名
}
\endcode
\sa wc_DsaSign
*/
int wc_DsaVerify(const byte* digest, const byte* sig,
@@ -107,25 +131,31 @@ int wc_DsaVerify(const byte* digest, const byte* sig,
/*!
\ingroup DSA
\brief この機能は、DSA公開鍵を含むDERフォーマットの証明書バッファを復号し、与えられたDSakey構造体にキーを格納します。また、入力読み取りの長さに応じてINOUTIDXパラメータを設定します。
\return 0 dsakeyオブジェクトの公開鍵を正常に設定する
\return ASN_PARSE_E 証明書バッファを読みながらエンコーディングにエラーがある場合
\return ASN_DH_KEY_E DSAパラメータの1つが誤ってフォーマットされている場合に返されます
\param input DERフォーマットDSA公開鍵を含むバッファへのポインタ
\param inOutIdx 証明書の最後のインデックスを保存する整数へのポインタ
\param key 公開鍵を保存するDsakey構造へのポインタ
\brief この関数は、DSA公開鍵を含むDERフォーマットの証明書バッファをデコードし、与えられたDsaKey構造体に鍵を格納します。また、読み取られた入力の長さに応じてinOutIdxパラメータを設定します。
\return 0 DsaKeyオブジェクトの公開鍵の設定に成功した場合に返されます
\return ASN_PARSE_E 証明書バッファの読み取り中にエンコーディングエラーがある場合に返されます
\return ASN_DH_KEY_E DSAパラメータの1つが正しくフォーマットされていない場合に返されます
\param input DERフォーマットのDSA公開鍵を含むバッファへのポインタ
\param inOutIdx 読み取られた証明書の最終インデックスを格納する整数へのポインタ
\param key 公開鍵を格納するDsaKey構造体へのポインタ
\param inSz 入力バッファのサイズ
_Example_
\code
int ret, idx=0;
DsaKey key;
wc_InitDsaKey(&key);
byte derBuff[] = { // DSA public key};
byte derBuff[] = { // DSA公開鍵};
ret = wc_DsaPublicKeyDecode(derBuff, &idx, &key, inSz);
if (ret != 0) {
// error reading public key
// 公開鍵の読み取りエラー
}
\endcode
\sa wc_InitDsaKey
\sa wc_DsaPrivateKeyDecode
*/
@@ -134,25 +164,31 @@ int wc_DsaPublicKeyDecode(const byte* input, word32* inOutIdx,
/*!
\ingroup DSA
\brief この機能は、DSA秘密鍵を含むDERフォーマットの証明書バッファをデコードし、指定されたDSakey構造体にキーを格納します。また、入力読み取りの長さに応じてINOUTIDXパラメータを設定します。
\return 0 dsakeyオブジェクトの秘密鍵を正常に設定するに返されました
\return ASN_PARSE_E 証明書バッファを読みながらエンコーディングにエラーがある場合
\return ASN_DH_KEY_E DSAパラメータの1つが誤ってフォーマットされている場合に返されます
\param input DERフォーマットDSA秘密鍵を含むバッファへのポインタ
\param inOutIdx 証明書の最後のインデックスを保存する整数へのポインタ
\param key 秘密鍵を保存するDSakey構造へのポインタ
\brief この関数は、DSA秘密鍵を含むDERフォーマットの証明書バッファをデコードし、与えられたDsaKey構造体に鍵を格納します。また、読み取られた入力の長さに応じてinOutIdxパラメータを設定します。
\return 0 DsaKeyオブジェクトの秘密鍵の設定に成功した場合に返されます
\return ASN_PARSE_E 証明書バッファの読み取り中にエンコーディングエラーがある場合に返されます
\return ASN_DH_KEY_E DSAパラメータの1つが正しくフォーマットされていない場合に返されます
\param input DERフォーマットのDSA秘密鍵を含むバッファへのポインタ
\param inOutIdx 読み取られた証明書の最終インデックスを格納する整数へのポインタ
\param key 秘密鍵を格納するDsaKey構造体へのポインタ
\param inSz 入力バッファのサイズ
_Example_
\code
int ret, idx=0;
DsaKey key;
wc_InitDsaKey(&key);
byte derBuff[] = { // DSA private key };
byte derBuff[] = { // DSA秘密鍵 };
ret = wc_DsaPrivateKeyDecode(derBuff, &idx, &key, inSz);
if (ret != 0) {
// error reading private key
// 秘密鍵の読み取りエラー
}
\endcode
\sa wc_InitDsaKey
\sa wc_DsaPublicKeyDecode
*/
@@ -161,18 +197,23 @@ int wc_DsaPrivateKeyDecode(const byte* input, word32* inOutIdx,
/*!
\ingroup DSA
\brief DSAKEYキーをDERフォーマット、出力への書き込みInlen、書き込まれたバイトを返します。
\return outLen 成功、書かれたバイト数
\return BAD_FUNC_ARG キーまたは出力はNULLまたはキー - >タイプがDSA_PRIVATEではありません。
\return MEMORY_E メモリの割り当て中にエラーが発生しました。
\param key 変換するdsakey構造へのポインタ
\param output 変換キーの出力バッファへのポインタ
\brief DsaKey鍵をDERフォーマットに変換し、output(inLen)に書き込み、書き込まれたバイト数を返します。
\return outLen 成功、書き込まれたバイト数
\return BAD_FUNC_ARG keyまたはoutputがnullまたはkey->typeがDSA_PRIVATEでない場合
\return MEMORY_E メモリ割り当てエラー
\param key 変換するDsaKey構造体へのポインタ。
\param output 変換された鍵用の出力バッファへのポインタ。
\param inLen 鍵入力の長さ。
_Example_
\code
DsaKey key;
WC_RNG rng;
int derSz;
int bufferSize = // Sufficient buffer size;
int bufferSize = // 十分なバッファサイズ;
byte der[bufferSize];
wc_InitDsaKey(&key);
@@ -180,6 +221,7 @@ int wc_DsaPrivateKeyDecode(const byte* input, word32* inOutIdx,
wc_MakeDsaKey(&rng, &key);
derSz = wc_DsaKeyToDer(&key, der, bufferSize);
\endcode
\sa wc_InitDsaKey
\sa wc_FreeDsaKey
\sa wc_MakeDsaKey
@@ -188,12 +230,17 @@ int wc_DsaKeyToDer(DsaKey* key, byte* output, word32 inLen);
/*!
\ingroup DSA
\brief DSAキーを作成します。
\return MP_OKAY 成功
\return BAD_FUNC_ARG RNGまたはDSAのどちらかがnullです。
\return MEMORY_E バッファにメモリを割り当てることができませんでした。
\return MP_INIT_E MP_INTの初期化エラー
\param rng WC_RNG構造体へのポインタ
\brief DSA鍵を作成します。
\return MP_OKAY 成功
\return BAD_FUNC_ARG rngまたはdsaがnullの場合。
\return MEMORY_E バッファ用のメモリを割り当てられませんでした
\return MP_INIT_E mp_intの初期化エラー
\param rng WC_RNG構造体へのポインタ。
\param dsa DsaKey構造体へのポインタ。
_Example_
\code
WC_RNG rng;
@@ -202,9 +249,10 @@ int wc_DsaKeyToDer(DsaKey* key, byte* output, word32 inLen);
wc_InitDsa(&dsa);
if(wc_MakeDsaKey(&rng, &dsa) != 0)
{
// Error creating key
// 鍵作成エラー
}
\endcode
\sa wc_InitDsaKey
\sa wc_FreeDsaKey
\sa wc_DsaSign
@@ -213,12 +261,17 @@ int wc_MakeDsaKey(WC_RNG *rng, DsaKey *dsa);
/*!
\ingroup DSA
\brief FIPS 186-4は、modulus_size値の有効な値を定義します1024,1602048,2563072,256
\return 0 成功
\return BAD_FUNC_ARG RNGまたはDSAはNULLまたはMODULUS_SIZEが無効です。
\return MEMORY_E メモリを割り当てようとするエラーが発生しました。
\param rng WolfCrypt RNGへのポインタ
\param modulus_size 1024,2048、または3072は有効な値です
\brief FIPS 186-4は、modulus_size値として(1024, 160) (2048, 256) (3072, 256)を有効と定義しています
\return 0 成功
\return BAD_FUNC_ARG rngまたはdsaがnullまたはmodulus_sizeが無効な場合
\return MEMORY_E メモリ割り当て試行エラー
\param rng wolfCrypt rngへのポインタ。
\param modulus_size 1024、2048、または3072が有効な値です。
\param dsa DsaKey構造体へのポインタ。
_Example_
\code
DsaKey key;
@@ -227,11 +280,12 @@ int wc_MakeDsaKey(WC_RNG *rng, DsaKey *dsa);
wc_InitRng(&rng);
if(wc_MakeDsaParameters(&rng, 1024, &genKey) != 0)
{
// Handle error
// エラーを処理
}
\endcode
\sa wc_MakeDsaKey
\sa wc_DsaKeyToDer
\sa wc_InitDsaKey
*/
int wc_MakeDsaParameters(WC_RNG *rng, int modulus_size, DsaKey *dsa);
int wc_MakeDsaParameters(WC_RNG *rng, int modulus_size, DsaKey *dsa);

File diff suppressed because it is too large Load Diff

View File

@@ -1,104 +1,129 @@
/*!
\ingroup ECCSI_Setup
*/
int wc_InitEccsiKey(EccsiKey* key, void* heap, int devId);
/*!
\ingroup ECCSI_Setup
*/
int wc_InitEccsiKey_ex(EccsiKey* key, int keySz, int curveId,
void* heap, int devId);
/*!
\ingroup ECCSI_Setup
*/
void wc_FreeEccsiKey(EccsiKey* key);
/*!
\ingroup ECCSI_Setup
*/
int wc_MakeEccsiKey(EccsiKey* key, WC_RNG* rng);
/*!
\ingroup ECCSI_Operations
*/
int wc_MakeEccsiPair(EccsiKey* key, WC_RNG* rng,
enum wc_HashType hashType, const byte* id, word32 idSz, mp_int* ssk,
ecc_point* pvt);
/*!
\ingroup ECCSI_Operations
*/
int wc_ValidateEccsiPair(EccsiKey* key, enum wc_HashType hashType,
const byte* id, word32 idSz, const mp_int* ssk, ecc_point* pvt,
int* valid);
/*!
\ingroup ECCSI_Operations
*/
int wc_ValidateEccsiPvt(EccsiKey* key, const ecc_point* pvt,
int* valid);
/*!
\ingroup ECCSI_Operations
*/
int wc_EncodeEccsiPair(const EccsiKey* key, mp_int* ssk,
ecc_point* pvt, byte* data, word32* sz);
/*!
\ingroup ECCSI_Operations
*/
int wc_EncodeEccsiSsk(const EccsiKey* key, mp_int* ssk, byte* data,
word32* sz);
/*!
\ingroup ECCSI_Operations
*/
int wc_EncodeEccsiPvt(const EccsiKey* key, ecc_point* pvt,
byte* data, word32* sz, int raw);
/*!
\ingroup ECCSI_Operations
*/
int wc_DecodeEccsiPair(const EccsiKey* key, const byte* data,
word32 sz, mp_int* ssk, ecc_point* pvt);
/*!
\ingroup ECCSI_Operations
*/
int wc_DecodeEccsiSsk(const EccsiKey* key, const byte* data,
word32 sz, mp_int* ssk);
/*!
\ingroup ECCSI_Operations
*/
int wc_DecodeEccsiPvt(const EccsiKey* key, const byte* data,
word32 sz, ecc_point* pvt);
/*!
\ingroup ECCSI_Operations
*/
int wc_DecodeEccsiPvtFromSig(const EccsiKey* key, const byte* sig,
word32 sz, ecc_point* pvt);
/*!
\ingroup ECCSI_Setup
*/
int wc_ExportEccsiKey(EccsiKey* key, byte* data, word32* sz);
/*!
\ingroup ECCSI_Setup
*/
int wc_ImportEccsiKey(EccsiKey* key, const byte* data, word32 sz);
/*!
\ingroup ECCSI_Setup
*/
int wc_ExportEccsiPrivateKey(EccsiKey* key, byte* data, word32* sz);
/*!
\ingroup ECCSI_Setup
*/
int wc_ImportEccsiPrivateKey(EccsiKey* key, const byte* data,
word32 sz);
/*!
\ingroup ECCSI_Setup
*/
int wc_ExportEccsiPublicKey(EccsiKey* key, byte* data, word32* sz,
int raw);
/*!
\ingroup ECCSI_Setup
*/
int wc_ImportEccsiPublicKey(EccsiKey* key, const byte* data,
word32 sz, int trusted);
/*!
\ingroup ECCSI_Operations
*/
int wc_HashEccsiId(EccsiKey* key, enum wc_HashType hashType,
const byte* id, word32 idSz, ecc_point* pvt, byte* hash, byte* hashSz);
/*!
\ingroup ECCSI_Setup
*/
int wc_SetEccsiHash(EccsiKey* key, const byte* hash, byte hashSz);
/*!
\ingroup ECCSI_Setup
*/
int wc_SetEccsiPair(EccsiKey* key, const mp_int* ssk,
const ecc_point* pvt);
/*!
\ingroup ECCSI_Operations
*/
int wc_SignEccsiHash(EccsiKey* key, WC_RNG* rng,
enum wc_HashType hashType, const byte* msg, word32 msgSz, byte* sig,
word32* sigSz);
/*!
\ingroup ECCSI_Operations
*/
int wc_VerifyEccsiHash(EccsiKey* key, enum wc_HashType hashType,
const byte* msg, word32 msgSz, const byte* sig, word32 sigSz,

File diff suppressed because it is too large Load Diff

View File

@@ -1,17 +1,22 @@
/*!
\ingroup ED448
\brief この関数は、秘密鍵からED448公開鍵を生成します。公開鍵をバッファPubkeyに格納し、Pubkeyszでこのバッファに書き込まれたバイトを設定します。
\return 0 公開鍵の作成に成功したときに返されます。
\return BAD_FUNC_ARG IFIキーまたはPubKeyがNULLに評価された場合、または指定されたキーサイズが57バイトではない場合ED448には57バイトのキーがあります
\return MEMORY_E 関数の実行中にメモリを割り当てるエラーがある場合に返されます。
\param [in] キーを生成するED448_Keyへのキーポインタ
\param [out] 公開鍵を保存するバッファへのポインタ
\brief この関数は、秘密鍵からEd448公開鍵を生成します。公開鍵をバッファpubKeyに格納し、このバッファに書き込まれたバイト数をpubKeySzに設定します。
\return 0 公開鍵の作成に成功した場合に返されます。
\return BAD_FUNC_ARG keyまたはpubKeyがNULLと評価された場合、または指定されたキーサイズが57バイトでない場合に返されますEd448は57バイトのキーを持ちます
\return MEMORY_E 関数実行中にメモリの割り当てエラーが発生した場合に返されます
\param [in] key キーを生成するed448_keyへのポインタ。
\param [out] out 公開鍵を格納するバッファへのポインタ。
\param [in,out] outLen outで利用可能なサイズを持つword32オブジェクトへのポインタ。公開鍵のエクスポートに成功した後、outに書き込まれたバイト数が設定されます。
_Example_
\code
int ret;
ed448_key key;
byte priv[] = { initialize with 57 byte private key };
byte priv[] = { 57バイトの秘密鍵で初期化 };
byte pub[57];
word32 pubSz = sizeof(pub);
@@ -19,9 +24,10 @@
wc_ed448_import_private_only(priv, sizeof(priv), &key);
ret = wc_ed448_make_public(&key, pub, &pubSz);
if (ret != 0) {
// error making public key
// 公開鍵の作成エラー
}
\endcode
\sa wc_ed448_init
\sa wc_ed448_import_private_only
\sa wc_ed448_make_key
@@ -32,12 +38,17 @@ int wc_ed448_make_public(ed448_key* key, unsigned char* pubKey,
/*!
\ingroup ED448
\brief この関数は新しいED448キーを生成し、それをキーに格納します。
\return 0 ED448_Keyを正常に作成したときに返されます。
\return BAD_FUNC_ARG RNGまたはKeyがNULLに評価された場合、または指定されたキーサイズが57バイトではない場合ED448には57バイトのキーがあります
\return MEMORY_E 関数の実行中にメモリを割り当てるエラーがある場合に返されます。
\param [in] RNGキーを生成する初期化されたRNGオブジェクトへのポインタ
\param [in] keysize keyの長さを生成します。ED448の場合は常に57になります。
\brief この関数は新しいEd448キーを生成し、それをkeyに格納します。
\return 0 ed448_keyの作成に成功した場合に返されます。
\return BAD_FUNC_ARG rngまたはkeyがNULLと評価された場合、または指定されたキーサイズが57バイトでない場合に返されますEd448は57バイトのキーを持ちます
\return MEMORY_E 関数実行中にメモリの割り当てエラーが発生した場合に返されます。
\param [in] rng キーを生成するために使用する初期化済みRNGオブジェクトへのポインタ。
\param [in] keysize 生成するキーの長さ。Ed448の場合は常に57である必要があります。
\param [in,out] key キーを生成するed448_keyへのポインタ。
_Example_
\code
int ret;
@@ -49,9 +60,10 @@ int wc_ed448_make_public(ed448_key* key, unsigned char* pubKey,
wc_ed448_init(&key);
ret = wc_ed448_make_key(&rng, 57, &key);
if (ret != 0) {
// error making key
// キー作成エラー
}
\endcode
\sa wc_ed448_init
*/
@@ -59,32 +71,38 @@ int wc_ed448_make_key(WC_RNG* rng, int keysize, ed448_key* key);
/*!
\ingroup ED448
\brief この関数は、ED448_Keyオブジェクトを使用したメッセージに正解を保証します。
\return 0 メッセージ署名を正常に生成すると返されます。
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLに評価された場合、または出力バッファが小さすぎて生成された署名を保存する場合は返されます。
\return MEMORY_E 関数の実行中にメモリを割り当てるエラーがある場合に返されます。
\param [in] 署名するメッセージを含むバッファへのポインタ
\param [in] 署名するメッセージのインレル長
\param [out] 生成された署名を格納するためのバッファー。
\param [in,out] 出力バッファの最大長の範囲内。メッセージ署名の生成に成功したときに、書き込まれたバイトを保存します
\brief この関数は、真正性を保証するためにed448_keyオブジェクトを使用してメッセージ署名ます。
\return 0 メッセージの署名の生成に成功した場合に返されます。
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLと評価された場合、または出力バッファが生成された署名を格納するには小さすぎる場合に返されます
\return MEMORY_E 関数実行中にメモリの割り当てエラーが発生した場合に返されます
\param [in] in 署名するメッセージを含むバッファへのポインタ
\param [in] inlen 署名するメッセージの長さ。
\param [out] out 生成された署名を格納するバッファ。
\param [in,out] outlen 出力バッファの最大長。メッセージ署名の生成に成功した後、outに書き込まれたバイト数が格納されます。
\param [in] key 署名を生成するために使用する秘密ed448_keyへのポインタ。
_Example_
\code
ed448_key key;
WC_RNG rng;
int ret, sigSz;
byte sig[114]; // will hold generated signature
byte sig[114]; // 生成された署名を保持
sigSz = sizeof(sig);
byte message[] = { initialize with message };
byte message[] = { メッセージで初期化 };
wc_InitRng(&rng); // initialize rng
wc_ed448_init(&key); // initialize key
wc_ed448_make_key(&rng, 57, &key); // make public/private key pair
wc_InitRng(&rng); // rngを初期化
wc_ed448_init(&key); // keyを初期化
wc_ed448_make_key(&rng, 57, &key); // 公開/秘密鍵ペアを作成
ret = wc_ed448_sign_msg(message, sizeof(message), sig, &sigSz, &key);
if (ret != 0 ) {
// error generating message signature
// メッセージ署名の生成エラー
}
\endcode
\sa wc_ed448ph_sign_hash
\sa wc_ed448ph_sign_msg
\sa wc_ed448_verify_msg
@@ -95,36 +113,42 @@ int wc_ed448_sign_msg(const byte* in, word32 inlen, byte* out,
/*!
\ingroup ED448
\brief この関数は、Ed448_Keyオブジェクトを使用してメッセージダイジェストに署名して信頼性を保証します。コンテキストは署名されたデータの一部として含まれています。ハッシュは、署名計算前のプリハッシュメッセージです。メッセージダイジェストを作成するために使用されるハッシュアルゴリズムはShake-256でなければなりません。
\return 0 メッセージダイジェスト署名を正常に生成すると返されます。
\return BAD_FUNC_ARG 返された入力パラメータはNULLに評価されます。出力バッファが小さすぎて生成された署名を保存するには小さすぎます。
\return MEMORY_E 関数の実行中にメモリを割り当てるエラーがある場合に返されます。
\param [in] サインへのメッセージのハッシュを含むバッファへのハッシュポインタ
\param [in] サインへのメッセージのハッシュのハッシュの長さ
\param [out] 生成された署名を格納するためのバッファー。
\param [in,out] 出力バッファの最大長の範囲内。メッセージ署名の生成に成功したときに、書き込まれたバイトを保存します
\param [in] 署名を生成するためのプライベートED448_Keyへのキーポインタ
\param [in] メッセージが署名されているコンテキストを含むバッファへのコンテキストポインタ
\brief この関数は、真正性を保証するためにed448_keyオブジェクトを使用してメッセージダイジェスト署名します。コンテキストは署名されるデータの一部として含まれます。ハッシュは署名計算前の事前ハッシュ化されたメッセージです。
\return 0 メッセージダイジェストの署名の生成に成功した場合に返されます。
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLと評価された場合、または出力バッファが生成された署名を格納するには小さすぎる場合に返されます
\return MEMORY_E 関数実行中にメモリの割り当てエラーが発生した場合に返されます
\param [in] hash 署名するメッセージのハッシュを含むバッファへのポインタ
\param [in] hashLen 署名するメッセージのハッシュの長さ
\param [out] out 生成された署名を格納するバッファ
\param [in,out] outlen 出力バッファの最大長。メッセージ署名の生成に成功した後、outに書き込まれたバイト数が格納されます。
\param [in] key 署名を生成するために使用する秘密ed448_keyへのポインタ。
\param [in] context メッセージが署名されているコンテキストを含むバッファへのポインタ。
\param [in] contextLen コンテキストバッファの長さ。
_Example_
\code
ed448_key key;
WC_RNG rng;
int ret, sigSz;
byte sig[114]; // will hold generated signature
byte sig[114]; // 生成された署名を保持
sigSz = sizeof(sig);
byte hash[] = { initialize with SHAKE-256 hash of message };
byte context[] = { initialize with context of signing };
byte hash[] = { メッセージのハッシュで初期化 };
byte context[] = { 署名のコンテキストで初期化 };
wc_InitRng(&rng); // initialize rng
wc_ed448_init(&key); // initialize key
wc_ed448_make_key(&rng, 57, &key); // make public/private key pair
wc_InitRng(&rng); // rngを初期化
wc_ed448_init(&key); // keyを初期化
wc_ed448_make_key(&rng, 57, &key); // 公開/秘密鍵ペアを作成
ret = wc_ed448ph_sign_hash(hash, sizeof(hash), sig, &sigSz, &key,
context, sizeof(context));
if (ret != 0) {
// error generating message signature
// メッセージ署名の生成エラー
}
\endcode
\sa wc_ed448_sign_msg
\sa wc_ed448ph_sign_msg
\sa wc_ed448ph_verify_hash
@@ -136,74 +160,86 @@ int wc_ed448ph_sign_hash(const byte* hash, word32 hashLen, byte* out,
/*!
\ingroup ED448
\brief この関数は、ED448_Keyオブジェクトを使用したメッセージに正解を保証します。コンテキストは署名されたデータの一部として含まれています。署名計算の前にメッセージは事前にハッシュされています。
\return 0 メッセージ署名を正常に生成すると返されます。
\return BAD_FUNC_ARG 返された入力パラメータはNULLに評価されます。出力バッファが小さすぎて生成された署名を保存するには小さすぎます。
\return MEMORY_E 関数の実行中にメモリを割り当てるエラーがある場合に返されます。
\param [in] 署名するメッセージを含むバッファへのポインタ
\param [in] 署名するメッセージのインレル長
\param [out] 生成された署名を格納するためのバッファー。
\param [in,out] 出力バッファの最大長の範囲内。メッセージ署名の生成に成功したときに、書き込まれたバイトを保存します
\param [in] 署名を生成するためのプライベートED448_Keyへのキーポインタ
\param [in] メッセージが署名されているコンテキストを含むバッファへのコンテキストポインタ
\brief この関数は、真正性を保証するためにed448_keyオブジェクトを使用してメッセージ署名します。コンテキストは署名されるデータの一部として含まれます。メッセージは署名計算前に事前ハッシュ化されます。
\return 0 メッセージの署名の生成に成功した場合に返されます。
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLと評価された場合、または出力バッファが生成された署名を格納するには小さすぎる場合に返されます
\return MEMORY_E 関数実行中にメモリの割り当てエラーが発生した場合に返されます
\param [in] in 署名するメッセージを含むバッファへのポインタ
\param [in] inlen 署名するメッセージの長さ
\param [out] out 生成された署名を格納するバッファ
\param [in,out] outlen 出力バッファの最大長。メッセージ署名の生成に成功した後、outに書き込まれたバイト数が格納されます。
\param [in] key 署名を生成するために使用する秘密ed448_keyへのポインタ。
\param [in] context メッセージが署名されているコンテキストを含むバッファへのポインタ。
\param [in] contextLen コンテキストバッファの長さ。
_Example_
\code
ed448_key key;
WC_RNG rng;
int ret, sigSz;
byte sig[114]; // will hold generated signature
byte sig[114]; // 生成された署名を保持
sigSz = sizeof(sig);
byte message[] = { initialize with message };
byte context[] = { initialize with context of signing };
byte message[] = { メッセージで初期化 };
byte context[] = { 署名のコンテキストで初期化 };
wc_InitRng(&rng); // initialize rng
wc_ed448_init(&key); // initialize key
wc_ed448_make_key(&rng, 57, &key); // make public/private key pair
wc_InitRng(&rng); // rngを初期化
wc_ed448_init(&key); // keyを初期化
wc_ed448_make_key(&rng, 57, &key); // 公開/秘密鍵ペアを作成
ret = wc_ed448ph_sign_msg(message, sizeof(message), sig, &sigSz, &key,
context, sizeof(context));
if (ret != 0) {
// error generating message signature
// メッセージ署名の生成エラー
}
\endcode
\sa wc_ed448_sign_msg
\sa wc_ed448ph_sign_hash
\sa wc_ed448ph_verify_msg
*/
int wc_ed448ph_sign_msg(const byte* in, word32 inLen, byte* out,
word32 *outLen, ed448_key* key, const byte* context,
byte contextLen);
int wc_ed448ph_sign_msg(const byte* in, word32 inlen, byte* out,
word32 *outlen, ed448_key* key,
const byte* context, byte contextLen);
/*!
\ingroup ED448
\brief この関数は、メッセージのED448署名を確認して信頼性を確保します。文脈はデータ検証済みの一部として含まれています。答えはRESを介して返され、有効な署名に対応する1、無効な署名に対応する0を返します。
\return 0 署名検証と認証を正常に実行したときに返されます。
\return BAD_FUNC_ARG いずれかの入力パラメータがNULLに評価された場合、またはSIGLENが署名の実際の長さと一致しない場合に返されます。
\return SIG_VERIFY_E 検証が完了した場合返されますが、生成された署名は提供された署名と一致しません
\param [in] 検証するシグネチャを含むバッファへのSIGポインタ
\param [in] 検証するシグネチャのシグレンの長さ
\param [in] メッセージを含むバッファへのMSGポインタを確認する。
\param [in] 検証するメッセージのMSGlen長
\param [in] 署名を検証するためのパブリックED448キーへのキーポインタ
\param [in] メッセージが署名されたコンテキストを含むバッファへのコンテキストポインタ。
\brief この関数は、真正性を保証するためにメッセージのEd448署名検証します。コンテキストは検証されるデータの一部として含まれます。答えはresを通じて返され、1は有効な署名に対応し、0は無効な署名に対応します。
\return 0 署名の検証と認証の実行に成功した場合返されます。
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLと評価された場合、またはsiglenが署名の実際の長さと一致しない場合に返されます
\return SIG_VERIFY_E 検証は完了したが、生成された署名が提供された署名と一致しない場合に返されます
\param [in] sig 検証する署名を含むバッファへのポインタ
\param [in] siglen 検証する署名の長さ
\param [in] msg 検証するメッセージを含むバッファへのポインタ。
\param [in] msgLen 検証するメッセージの長さ。
\param [in] key 署名を検証するために使用する公開Ed448鍵へのポインタ。
\param [in] context メッセージが署名されたコンテキストを含むバッファへのポインタ。
\param [in] contextLen コンテキストバッファの長さ。
_Example_
\code
ed448_key key;
int ret, verified = 0;
byte sig[] { initialize with received signature };
byte msg[] = { initialize with message };
byte context[] = { initialize with context of signature };
// initialize key with received public key
byte sig[] { 受信した署名で初期化 };
byte msg[] = { メッセージで初期化 };
byte context[] = { 署名のコンテキストで初期化 };
// 受信した公開鍵でkeyを初期化
ret = wc_ed448_verify_msg(sig, sizeof(sig), msg, sizeof(msg), &verified,
&key, context, sizeof(context));
if (ret < 0) {
// error performing verification
// 検証実行エラー
} else if (verified == 0)
// the signature is invalid
// 署名が無効
}
\endcode
\sa wc_ed448ph_verify_hash
\sa wc_ed448ph_verify_msg
\sa wc_ed448_sign_msg
@@ -215,33 +251,39 @@ int wc_ed448_verify_msg(const byte* sig, word32 siglen, const byte* msg,
/*!
\ingroup ED448
\brief この関数は、メッセージのダイジェストのED448シグネチャを検証して、信頼性を確保します。文脈はデータ検証済みの一部として含まれています。ハッシュは、署名計算前のプリハッシュメッセージです。メッセージダイジェストを作成するために使用されるハッシュアルゴリズムはShake-256でなければなりません。答えはRESを介して返され、有効な署名に対応する1、無効な署名に対応する0を返します。
\return 0 署名検証と認証を正常に実行したときに返されます。
\return BAD_FUNC_ARG いずれかの入力パラメータがNULLに評価された場合、またはSIGLENが署名の実際の長さと一致しない場合に返されます。
\return SIG_VERIFY_E 検証が完了した場合返されますが、生成された署名は提供された署名と一致しません
\param [in] 検証するシグネチャを含むバッファへのSIGポインタ
\param [in] 検証するシグネチャのシグレンの長さ
\param [in] 検証するメッセージのハッシュを含むバッファへのハッシュポインタ。
\param [in] 検証するハッシュのハッシュレン長
\param [in] 署名を検証するためのパブリックED448キーへのキーポインタ
\param [in] メッセージが署名されたコンテキストを含むバッファへのコンテキストポインタ。
\brief この関数は、真正性を保証するためにメッセージのダイジェストのEd448署名検証します。コンテキストは検証されるデータの一部として含まれます。ハッシュは署名計算前の事前ハッシュ化されたメッセージです。答えはresを通じて返され、1は有効な署名に対応し、0は無効な署名に対応します。
\return 0 署名の検証と認証の実行に成功した場合返されます。
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLと評価された場合、またはsiglenが署名の実際の長さと一致しない場合に返されます
\return SIG_VERIFY_E 検証は完了したが、生成された署名が提供された署名と一致しない場合に返されます
\param [in] sig 検証する署名を含むバッファへのポインタ
\param [in] siglen 検証する署名の長さ
\param [in] hash 検証するメッセージのハッシュを含むバッファへのポインタ。
\param [in] hashLen 検証するハッシュの長さ。
\param [in] key 署名を検証するために使用する公開Ed448鍵へのポインタ。
\param [in] context メッセージが署名されたコンテキストを含むバッファへのポインタ。
\param [in] contextLen コンテキストバッファの長さ。
_Example_
\code
ed448_key key;
int ret, verified = 0;
byte sig[] { initialize with received signature };
byte hash[] = { initialize with SHAKE-256 hash of message };
byte context[] = { initialize with context of signature };
// initialize key with received public key
byte sig[] { 受信した署名で初期化 };
byte hash[] = { メッセージのハッシュで初期化 };
byte context[] = { 署名のコンテキストで初期化 };
// 受信した公開鍵でkeyを初期化
ret = wc_ed448ph_verify_hash(sig, sizeof(sig), hash, sizeof(hash),
&verified, &key, context, sizeof(context));
if (ret < 0) {
// error performing verification
// 検証実行エラー
} else if (verified == 0)
// the signature is invalid
// 署名が無効
}
\endcode
\sa wc_ed448_verify_msg
\sa wc_ed448ph_verify_msg
\sa wc_ed448ph_sign_hash
@@ -253,33 +295,39 @@ int wc_ed448ph_verify_hash(const byte* sig, word32 siglen, const byte* hash,
/*!
\ingroup ED448
\brief この関数は、メッセージのED448署名を確認して信頼性を確保します。文脈はデータ検証済みの一部として含まれています。検証前にメッセージがプリハッシュされています。答えはRESを介して返され、有効な署名に対応する1、無効な署名に対応する0を返します。
\return 0 署名検証と認証を正常に実行したときに返されます。
\return BAD_FUNC_ARG いずれかの入力パラメータがNULLに評価された場合、またはSIGLENが署名の実際の長さと一致しない場合に返されます。
\return SIG_VERIFY_E 検証が完了した場合返されますが、生成された署名は提供された署名と一致しません
\param [in] 検証するシグネチャを含むバッファへのSIGポインタ
\param [in] 検証するシグネチャのシグレンの長さ
\param [in] メッセージを含むバッファへのMSGポインタを確認する。
\param [in] 検証するメッセージのMSGlen長
\param [in] 署名を検証するためのパブリックED448キーへのキーポインタ
\param [in] メッセージが署名されたコンテキストを含むバッファへのコンテキストポインタ。
\brief この関数は、真正性を保証するためにメッセージのEd448署名検証します。コンテキストは検証されるデータの一部として含まれます。メッセージは検証前に事前ハッシュ化されます。答えはresを通じて返され、1は有効な署名に対応し、0は無効な署名に対応します。
\return 0 署名の検証と認証の実行に成功した場合返されます。
\return BAD_FUNC_ARG 入力パラメータのいずれかがNULLと評価された場合、またはsiglenが署名の実際の長さと一致しない場合に返されます
\return SIG_VERIFY_E 検証は完了したが、生成された署名が提供された署名と一致しない場合に返されます
\param [in] sig 検証する署名を含むバッファへのポインタ
\param [in] siglen 検証する署名の長さ
\param [in] msg 検証するメッセージを含むバッファへのポインタ。
\param [in] msgLen 検証するメッセージの長さ。
\param [in] key 署名を検証するために使用する公開Ed448鍵へのポインタ。
\param [in] context メッセージが署名されたコンテキストを含むバッファへのポインタ。
\param [in] contextLen コンテキストバッファの長さ。
_Example_
\code
ed448_key key;
int ret, verified = 0;
byte sig[] { initialize with received signature };
byte msg[] = { initialize with message };
byte context[] = { initialize with context of signature };
// initialize key with received public key
byte sig[] { 受信した署名で初期化 };
byte msg[] = { メッセージで初期化 };
byte context[] = { 署名のコンテキストで初期化 };
// 受信した公開鍵でkeyを初期化
ret = wc_ed448ph_verify_msg(sig, sizeof(sig), msg, sizeof(msg), &verified,
&key, context, sizeof(context));
if (ret < 0) {
// error performing verification
// 検証実行エラー
} else if (verified == 0)
// the signature is invalid
// 署名が無効
}
\endcode
\sa wc_ed448_verify_msg
\sa wc_ed448ph_verify_hash
\sa wc_ed448ph_sign_msg
@@ -291,14 +339,20 @@ int wc_ed448ph_verify_msg(const byte* sig, word32 siglen, const byte* msg,
/*!
\ingroup ED448
\brief この関数は、メッセージ検証で将来の使用のためにED448_Keyオブジェクトを初期化します。
\return 0 ED448_Keyオブジェクト初期化に成功したら返されます。
\return BAD_FUNC_ARG キーがNULLの場合は返されます。
\brief この関数は、メッセージ検証での将来の使用のためにed448_keyオブジェクト初期化ます。
\return 0 ed448_keyオブジェクトの初期化に成功した場合に返されます。
\return BAD_FUNC_ARG keyがNULLの場合に返されます。
\param [in,out] key 初期化するed448_keyオブジェクトへのポインタ。
_Example_
\code
ed448_key key;
wc_ed448_init(&key);
\endcode
\sa wc_ed448_make_key
\sa wc_ed448_free
*/
@@ -307,14 +361,19 @@ int wc_ed448_init(ed448_key* key);
/*!
\ingroup ED448
\brief この関数は、それが使用された後にED448オブジェクトを解放します。
\brief この関数は、使用後にEd448オブジェクトを解放します。
\param [in,out] key 解放するed448_keyオブジェクトへのポインタ
_Example_
\code
ed448_key key;
// initialize key and perform secure exchanges
// keyを初期化し、安全な交換を実行
...
wc_ed448_free(&key);
\endcode
\sa wc_ed448_init
*/
@@ -322,24 +381,32 @@ void wc_ed448_free(ed448_key* key);
/*!
\ingroup ED448
\brief この関数は、公開鍵を含むバッファからPublic ED448_Keyペアをインポートします。この関数は圧縮キーと非圧縮キーの両方を処理します。
\return 0 ED448_Keyインポートに成功しました
\return BAD_FUNC_ARG INまたはKEYがNULLに評価されている場合、またはINLENがED448キーのサイズより小さい場合に返されます。
\param [in] 公開鍵を含むバッファへのポインタ
\param [in] 公開鍵を含むバッファのインレル長
\brief この関数は、公開鍵を含むバッファから公開ed448_keyペアをインポートします。この関数は、圧縮キーと非圧縮キーの両方を処理します。公開鍵は、秘密鍵が存在する場合にそれと一致するかチェックされます
\return 0 ed448_keyのインポートに成功した場合に返されます
\return BAD_FUNC_ARG inまたはkeyがNULLと評価された場合、またはinLenがEd448鍵のサイズより小さい場合に返されます
\param [in] in 公開鍵を含むバッファへのポインタ。
\param [in] inLen 公開鍵を含むバッファの長さ。
\param [in,out] key 公開鍵を格納するed448_keyオブジェクトへのポインタ。
_Example_
\code
int ret;
byte pub[] = { initialize Ed448 public key };
byte pub[] = { Ed448公開鍵で初期化 };
ed_448 key;
wc_ed448_init_key(&key);
ret = wc_ed448_import_public(pub, sizeof(pub), &key);
if (ret != 0) {
// error importing key
// 鍵のインポートエラー
}
\endcode
\sa wc_ed448_import_public_ex
\sa wc_ed448_import_private_key
\sa wc_ed448_import_private_key_ex
\sa wc_ed448_export_public
*/
@@ -347,25 +414,68 @@ int wc_ed448_import_public(const byte* in, word32 inLen, ed448_key* key);
/*!
\ingroup ED448
\brief この関数は、ed448秘密鍵をバッファからのみインポートします。
\return 0 ED448秘密鍵のインポートに成功しました
\return BAD_FUNC_ARG INまたはKEYがNULLに評価された場合、またはPRIVSZがED448_KEY_SIZEよりも小さい場合に返されます。
\param [in] 秘密鍵を含むバッファへのPRIVポインタ
\param [in] 秘密鍵のPrivsz長さ
\brief この関数は、公開鍵を含むバッファから公開ed448_keyペアをインポートします。この関数は、圧縮キーと非圧縮キーの両方を処理します。信頼されていない場合、秘密鍵が存在するときに公開鍵が秘密鍵と一致するかチェックします
\return 0 ed448_keyのインポートに成功した場合に返されます
\return BAD_FUNC_ARG inまたはkeyがNULLと評価された場合、またはinLenがEd448鍵のサイズより小さい場合に返されます
\param [in] in 公開鍵を含むバッファへのポインタ。
\param [in] inLen 公開鍵を含むバッファの長さ。
\param [in,out] key 公開鍵を格納するed448_keyオブジェクトへのポインタ。
\param [in] trusted 公開鍵データが信頼されているかどうか。
_Example_
\code
int ret;
byte priv[] = { initialize with 57 byte private key };
byte pub[] = { Ed448公開鍵で初期化 };
ed_448 key;
wc_ed448_init_key(&key);
ret = wc_ed448_import_public_ex(pub, sizeof(pub), &key, 1);
if (ret != 0) {
// 鍵のインポートエラー
}
\endcode
\sa wc_ed448_import_public
\sa wc_ed448_import_private_key
\sa wc_ed448_import_private_key_ex
\sa wc_ed448_export_public
*/
int wc_ed448_import_public_ex(const byte* in, word32 inLen, ed448_key* key,
int trusted);
/*!
\ingroup ED448
\brief この関数は、バッファからEd448秘密鍵のみをインポートします。
\return 0 Ed448秘密鍵のインポートに成功した場合に返されます。
\return BAD_FUNC_ARG inまたはkeyがNULLと評価された場合、またはprivSzがED448_KEY_SIZEより小さい場合に返されます。
\param [in] priv 秘密鍵を含むバッファへのポインタ。
\param [in] privSz 秘密鍵の長さ。
\param [in,out] key インポートされた秘密鍵を格納するed448_keyオブジェクトへのポインタ。
_Example_
\code
int ret;
byte priv[] = { 57バイトの秘密鍵で初期化 };
ed448_key key;
wc_ed448_init_key(&key);
ret = wc_ed448_import_private_only(priv, sizeof(priv), &key);
if (ret != 0) {
// error importing private key
// 秘密鍵のインポートエラー
}
\endcode
\sa wc_ed448_import_public
\sa wc_ed448_import_public_ex
\sa wc_ed448_import_private_key
\sa wc_ed448_import_private_key_ex
\sa wc_ed448_export_private_only
*/
@@ -374,29 +484,37 @@ int wc_ed448_import_private_only(const byte* priv, word32 privSz,
/*!
\ingroup ED448
\brief この関数は、一対のバッファからパブリック/プライベートED448キーペアをインポートします。この関数は圧縮キーと非圧縮キーの両方を処理します。
\return 0 ED448キーのインポートに成功しました
\return BAD_FUNC_ARG INまたはKEYがNULLに評価された場合、またはPROVSZがED448_KEY_SIZEまたはPUBSZのいずれかがeD448_PUB_KEY_SIZEよりも小さい場合に返されます。
\param [in] 秘密鍵を含むバッファへのPRIVポインタ
\param [in] 秘密鍵のPrivsz長さ
\param [in] 公開鍵を含むバッファへのPubポインタ。
\param [in] 公開鍵のPubszの長さ
\brief この関数は、一対のバッファから公開/秘密Ed448鍵ペアをインポートします。この関数は、圧縮キーと非圧縮キーの両方を処理します
\return 0 Ed448鍵のインポートに成功した場合に返されます
\return BAD_FUNC_ARG inまたはkeyがNULLと評価された場合、またはprivSzがED448_KEY_SIZEより小さい、もしくはpubSzがED448_PUB_KEY_SIZEより小さい場合に返されます
\param [in] priv 秘密鍵を含むバッファへのポインタ
\param [in] privSz 秘密鍵の長さ。
\param [in] pub 公開鍵を含むバッファへのポインタ。
\param [in] pubSz 公開鍵の長さ。
\param [in,out] key インポートされた秘密/公開鍵ペアを格納するed448_keyオブジェクトへのポインタ。
_Example_
\code
int ret;
byte priv[] = { initialize with 57 byte private key };
byte pub[] = { initialize with the corresponding public key };
byte priv[] = { 57バイトの秘密鍵で初期化 };
byte pub[] = { 対応する公開鍵で初期化 };
ed448_key key;
wc_ed448_init_key(&key);
ret = wc_ed448_import_private_key(priv, sizeof(priv), pub, sizeof(pub),
&key);
if (ret != 0) {
// error importing key
// 鍵のインポートエラー
}
\endcode
\sa wc_ed448_import_public
\sa wc_ed448_import_public_ex
\sa wc_ed448_import_private_only
\sa wc_ed448_import_private_key_ex
\sa wc_ed448_export_private
*/
@@ -405,27 +523,74 @@ int wc_ed448_import_private_key(const byte* priv, word32 privSz,
/*!
\ingroup ED448
\brief この関数は、ED448_Key構造体から秘密鍵をエクスポートします。公開鍵をバッファアウトに格納し、ounterenでこのバッファに書き込まれたバイトを設定します。
\return 0 公開鍵のエクスポートに成功したら返されます。
\return BAD_FUNC_ARG いずれかの入力値がNULLに評価された場合に返されます。
\return BUFFER_E 提供されたバッファーが秘密鍵を保存するのに十分な大きさでない場合に返されます。このエラーを返すと、outlenに必要なサイズを設定します。
\param [in] 公開鍵をエクスポートするED448_Key構造体へのキーポインタ
\param [out] 公開鍵を保存するバッファへのポインタ。
\brief この関数は、一対のバッファから公開/秘密Ed448鍵ペアをインポートします。この関数は、圧縮キーと非圧縮キーの両方を処理します。信頼されていない場合、公開鍵が秘密鍵に対してチェックされます。
\return 0 Ed448鍵のインポートに成功した場合に返されます。
\return BAD_FUNC_ARG inまたはkeyがNULLと評価された場合、またはprivSzがED448_KEY_SIZEより小さい、もしくはpubSzがED448_PUB_KEY_SIZEより小さい場合に返されます
\param [in] priv 秘密鍵を含むバッファへのポインタ。
\param [in] privSz 秘密鍵の長さ。
\param [in] pub 公開鍵を含むバッファへのポインタ。
\param [in] pubSz 公開鍵の長さ。
\param [in,out] key インポートされた秘密/公開鍵ペアを格納するed448_keyオブジェクトへのポインタ。
\param [in] trusted 公開鍵データが信頼されているかどうか。
_Example_
\code
int ret;
byte priv[] = { 57バイトの秘密鍵で初期化 };
byte pub[] = { 対応する公開鍵で初期化 };
ed448_key key;
wc_ed448_init_key(&key);
ret = wc_ed448_import_private_key_ex(priv, sizeof(priv), pub, sizeof(pub),
&key, 1);
if (ret != 0) {
// 鍵のインポートエラー
}
\endcode
\sa wc_ed448_import_public
\sa wc_ed448_import_public_ex
\sa wc_ed448_import_private_only
\sa wc_ed448_import_private_key
\sa wc_ed448_export_private
*/
int wc_ed448_import_private_key_ex(const byte* priv, word32 privSz,
const byte* pub, word32 pubSz, ed448_key* key, int trusted);
/*!
\ingroup ED448
\brief この関数は、ed448_key構造体から秘密鍵をエクスポートします。公開鍵をバッファoutに格納し、このバッファに書き込まれたバイト数をoutLenに設定します。
\return 0 公開鍵のエクスポートに成功した場合に返されます。
\return BAD_FUNC_ARG 入力値のいずれかがNULLと評価された場合に返されます。
\return BUFFER_E 提供されたバッファが秘密鍵を格納するのに十分な大きさでない場合に返されます。このエラーを返す際、関数はoutLenに必要なサイズを設定します。
\param [in] key 公開鍵をエクスポートするed448_key構造体へのポインタ。
\param [out] out 公開鍵を格納するバッファへのポインタ。
\param [in,out] outLen outで利用可能なサイズを持つword32オブジェクトへのポインタ。公開鍵のエクスポートに成功した後、outに書き込まれたバイト数が設定されます。
_Example_
\code
int ret;
ed448_key key;
// initialize key, make key
// keyを初期化し、keyを作成
char pub[57];
word32 pubSz = sizeof(pub);
ret = wc_ed448_export_public(&key, pub, &pubSz);
if (ret != 0) {
// error exporting public key
// 公開鍵のエクスポートエラー
}
\endcode
\sa wc_ed448_import_public
\sa wc_ed448_import_public_ex
\sa wc_ed448_export_private_only
*/
@@ -433,39 +598,51 @@ int wc_ed448_export_public(ed448_key* key, byte* out, word32* outLen);
/*!
\ingroup ED448
\brief この関数は、ED448_Key構造体からの秘密鍵のみをエクスポートします。秘密鍵をバッファアウトに格納し、outlenにこのバッファに書き込まれたバイトを設定します。
\return 0 秘密鍵のエクスポートに成功したら返されます。
\return ECC_BAD_ARG_E いずれかの入力値がNULLに評価された場合に返されます。
\return BUFFER_E 提供されたバッファーが秘密鍵を保存するのに十分な大きさでない場合に返されます。
\param [in] 秘密鍵をエクスポートするED448_Key構造体へのキーポインタ
\param [out] 秘密鍵を保存するバッファへのポインタ
\brief この関数は、ed448_key構造体から秘密鍵のみをエクスポートします。秘密鍵をバッファoutに格納し、このバッファに書き込まれたバイト数をoutLenに設定します。
\return 0 秘密鍵のエクスポートに成功した場合に返されます。
\return ECC_BAD_ARG_E 入力値のいずれかがNULLと評価された場合に返されます
\return BUFFER_E 提供されたバッファが秘密鍵を格納するのに十分な大きさでない場合に返されます
\param [in] key 秘密鍵をエクスポートするed448_key構造体へのポインタ。
\param [out] out 秘密鍵を格納するバッファへのポインタ。
\param [in,out] outLen outで利用可能なサイズを持つword32オブジェクトへのポインタ。秘密鍵のエクスポートに成功した後、outに書き込まれたバイト数が設定されます。
_Example_
\code
int ret;
ed448_key key;
// initialize key, make key
// keyを初期化し、keyを作成
char priv[57]; // 57 bytes because only private key
char priv[57]; // 秘密鍵のみなので57バイト
word32 privSz = sizeof(priv);
ret = wc_ed448_export_private_only(&key, priv, &privSz);
if (ret != 0) {
// error exporting private key
// 秘密鍵のエクスポートエラー
}
\endcode
\sa wc_ed448_export_public
\sa wc_ed448_import_private_key
\sa wc_ed448_import_private_key_ex
*/
int wc_ed448_export_private_only(ed448_key* key, byte* out, word32* outLen);
/*!
\ingroup ED448
\brief この関数は、ED448_Key構造体からキーペアをエクスポートします。キーペアをバッファOUTに格納し、ounterenでこのバッファに書き込まれたバイトを設定します。
\return 0 キーペアエクスポートに成功したら返されます。
\return ECC_BAD_ARG_E いずれかの入力値がNULLに評価された場合に返されます。
\return BUFFER_E 提供されているバッファーがキーペアを保存するのに十分な大きさでない場合に返されます。
\param [in] キーペアをエクスポートするためのED448_Key構造体へのキーポインタ
\param [out] キーペアを保存するバッファへのポインタ
\brief この関数は、ed448_key構造体から鍵ペアエクスポートします。鍵ペアをバッファoutに格納し、このバッファに書き込まれたバイト数をoutLenに設定します。
\return 0 鍵ペアのエクスポートに成功した場合に返されます。
\return ECC_BAD_ARG_E 入力値のいずれかがNULLと評価された場合に返されます
\return BUFFER_E 提供されたバッファが鍵ペアを格納するのに十分な大きさでない場合に返されます
\param [in] key 鍵ペアをエクスポートするed448_key構造体へのポインタ。
\param [out] out 鍵ペアを格納するバッファへのポインタ。
\param [in,out] outLen outで利用可能なサイズを持つword32オブジェクトへのポインタ。鍵ペアのエクスポートに成功した後、outに書き込まれたバイト数が設定されます。
_Example_
\code
ed448_key key;
@@ -474,15 +651,16 @@ int wc_ed448_export_private_only(ed448_key* key, byte* out, word32* outLen);
WC_RNG rng;
wc_InitRng(&rng);
wc_ed448_make_key(&rng, 57, &key); // initialize 57 byte Ed448 key
wc_ed448_make_key(&rng, 57, &key); // 57バイトのEd448鍵を初期化
byte out[114]; // out needs to be a sufficient buffer size
byte out[114]; // outは十分なバッファサイズである必要があります
word32 outLen = sizeof(out);
int key_size = wc_ed448_export_private(&key, out, &outLen);
if (key_size == BUFFER_E) {
// Check size of out compared to outLen to see if function reset outLen
// 関数がoutLenをリセットしたかどうかを確認するため、outのサイズとoutLenを比較
}
\endcode
\sa wc_ed448_import_private
\sa wc_ed448_export_private_only
*/
@@ -491,19 +669,24 @@ int wc_ed448_export_private(ed448_key* key, byte* out, word32* outLen);
/*!
\ingroup ED448
\brief この関数は、ED448_Key構造体とは別にプライベートキーと公開鍵をエクスポートします。秘密鍵をバッファーPrivに格納し、PRIVSZでこのバッファに書き込まれたバイトを設定します。公開鍵をバッファPUBに格納し、Pubszでこのバッファに書き込まれたバイトを設定します。
\return 0 キーペアのエクスポートに成功したら返されます。
\return ECC_BAD_ARG_E いずれかの入力値がNULLに評価された場合に返されます。
\return BUFFER_E 提供されているバッファーがキーペアを保存するのに十分な大きさでない場合に返されます。
\param [in] キーペアをエクスポートするためのED448_Key構造体へのキーポインタ
\param [out] 秘密鍵を保存するバッファへのPRIVポインタ
\param [in,out] PRIVSZ PIVINSZポインタサイズが表示されているサイズを持つWord32オブジェクトへのポインタ。秘密鍵のエクスポート後に書き込まれたバイト数を設定します。
\param [out] パブリックキーを保存するバッファへのPub
\brief この関数は、ed448_key構造体から秘密鍵と公開鍵を個別にエクスポートします。秘密鍵をバッファprivに格納し、このバッファに書き込まれたバイト数をprivSzに設定します。公開鍵をバッファpubに格納し、このバッファに書き込まれたバイト数をpubSzに設定します。
\return 0 鍵ペアのエクスポートに成功した場合に返されます。
\return ECC_BAD_ARG_E 入力値のいずれかがNULLと評価された場合に返されます
\return BUFFER_E 提供されたバッファが鍵ペアを格納するのに十分な大きさでない場合に返されます
\param [in] key 鍵ペアをエクスポートするed448_key構造体へのポインタ
\param [out] priv 秘密鍵を格納するバッファへのポインタ。
\param [in,out] privSz outで利用可能なサイズを持つword32オブジェクトへのポインタ。秘密鍵のエクスポートに成功した後、outに書き込まれたバイト数が設定されます。
\param [out] pub 公開鍵を格納するバッファへのポインタ。
\param [in,out] pubSz outで利用可能なサイズを持つword32オブジェクトへのポインタ。公開鍵のエクスポートに成功した後、outに書き込まれたバイト数が設定されます。
_Example_
\code
int ret;
ed448_key key;
// initialize key, make key
// keyを初期化し、keyを作成
char pub[57];
word32 pubSz = sizeof(pub);
@@ -512,9 +695,10 @@ int wc_ed448_export_private(ed448_key* key, byte* out, word32* outLen);
ret = wc_ed448_export_key(&key, priv, &pubSz, pub, &pubSz);
if (ret != 0) {
// error exporting private and public key
// 秘密鍵と公開鍵のエクスポートエラー
}
\endcode
\sa wc_ed448_export_private
\sa wc_ed448_export_public
*/
@@ -525,24 +709,32 @@ int wc_ed448_export_key(ed448_key* key,
/*!
\ingroup ED448
\brief この関数は、ed448_key構造体の公開鍵をチェックします。
\return 0 プライベートキーと公開鍵が一致した場合に返されます。
\return BAD_FUNC_ARGS 与えられたキーがNULLの場合に返されます。
\brief この関数は、ed448_key構造体内の公開鍵が秘密鍵と一致するかチェックします。
\return 0 秘密鍵と公開鍵が一致した場合に返されます。
\return BAD_FUNC_ARGS 指定されたkeyがNULLの場合に返されます。
\param [in] key 秘密鍵と公開鍵を保持するed448_key構造体へのポインタ。
_Example_
\code
int ret;
byte priv[] = { initialize with 57 byte private key };
byte pub[] = { initialize with the corresponding public key };
byte priv[] = { 57バイトの秘密鍵で初期化 };
byte pub[] = { 対応する公開鍵で初期化 };
ed448_key key;
wc_ed448_init_key(&key);
wc_ed448_import_private_key(priv, sizeof(priv), pub, sizeof(pub), &key);
wc_ed448_import_private_key_ex(priv, sizeof(priv), pub, sizeof(pub), &key,
1);
ret = wc_ed448_check_key(&key);
if (ret != 0) {
// error checking key
// 鍵のチェックエラー
}
\endcode
\sa wc_ed448_import_private_key
\sa wc_ed448_import_private_key_ex
*/
int wc_ed448_check_key(ed448_key* key);
@@ -550,19 +742,25 @@ int wc_ed448_check_key(ed448_key* key);
/*!
\ingroup ED448
\brief この関数は、ED448秘密鍵のサイズ - 57バイトを返します。
\return ED448_KEY_SIZE 有効な秘密鍵のサイズ57バイト
\return BAD_FUNC_ARGS 与えられたキーがNULLの場合に返されます。
\brief この関数は、Ed448秘密鍵のサイズ57バイトを返します
\return ED448_KEY_SIZE 有効な秘密鍵のサイズ57バイト
\return BAD_FUNC_ARGS 指定されたkeyがNULLの場合に返されます。
\param [in] key 鍵サイズを取得するed448_key構造体へのポインタ。
_Example_
\code
int keySz;
ed448_key key;
// initialize key, make key
// keyを初期化し、keyを作成
keySz = wc_ed448_size(&key);
if (keySz == 0) {
// error determining key size
// 鍵サイズの決定エラー
}
\endcode
\sa wc_ed448_make_key
*/
@@ -570,9 +768,14 @@ int wc_ed448_size(ed448_key* key);
/*!
\ingroup ED448
\brief この関数は、秘密鍵サイズsecret + publicをバイト単位で返します。
\return ED448_PRV_KEY_SIZE 秘密鍵のサイズ114バイト
\return BAD_FUNC_ARG key引数がnullの場合は返します。
\brief この関数は、秘密鍵のサイズ(秘密 + 公開)をバイト単位で返します
\return ED448_PRV_KEY_SIZE 秘密鍵のサイズ114バイト
\return BAD_FUNC_ARG key引数がNULLの場合に返されます。
\param [in] key 鍵サイズを取得するed448_key構造体へのポインタ。
_Example_
\code
ed448_key key;
@@ -581,9 +784,10 @@ int wc_ed448_size(ed448_key* key);
WC_RNG rng;
wc_InitRng(&rng);
wc_ed448_make_key(&rng, 57, &key); // initialize 57 byte Ed448 key
wc_ed448_make_key(&rng, 57, &key); // 57バイトのEd448鍵を初期化
int key_size = wc_ed448_priv_size(&key);
\endcode
\sa wc_ed448_pub_size
*/
@@ -591,9 +795,14 @@ int wc_ed448_priv_size(ed448_key* key);
/*!
\ingroup ED448
\brief この関数は圧縮鍵サイズをバイト単位で返します(公開鍵)。
\return ED448_PUB_KEY_SIZE 圧縮公開鍵のサイズ57バイト)。
\return BAD_FUNC_ARG key引数がnullの場合は返します。
\brief この関数は、圧縮鍵のサイズをバイト単位で返します(公開鍵)。
\return ED448_PUB_KEY_SIZE 圧縮公開鍵のサイズ57バイト
\return BAD_FUNC_ARG key引数がNULLの場合に返されます。
\param [in] key 鍵サイズを取得するed448_key構造体へのポインタ。
_Example_
\code
ed448_key key;
@@ -601,9 +810,10 @@ int wc_ed448_priv_size(ed448_key* key);
WC_RNG rng;
wc_InitRng(&rng);
wc_ed448_make_key(&rng, 57, &key); // initialize 57 byte Ed448 key
wc_ed448_make_key(&rng, 57, &key); // 57バイトのEd448鍵を初期化
int key_size = wc_ed448_pub_size(&key);
\endcode
\sa wc_ed448_priv_size
*/
@@ -611,21 +821,27 @@ int wc_ed448_pub_size(ed448_key* key);
/*!
\ingroup ED448
\brief この関数は、ED448シグネチャのサイズバイト数114を返します。
\return ED448_SIG_SIZE ED448シグネチャ114バイトのサイズ
\return BAD_FUNC_ARG key引数がnullの場合は返します。
\brief この関数は、Ed448署名のサイズバイト単位で114を返します
\return ED448_SIG_SIZE Ed448署名のサイズ114バイト
\return BAD_FUNC_ARG key引数がNULLの場合に返されます。
\param [in] key 署名サイズを取得するed448_key構造体へのポインタ。
_Example_
\code
int sigSz;
ed448_key key;
// initialize key, make key
// keyを初期化し、keyを作成
sigSz = wc_ed448_sig_size(&key);
if (sigSz == 0) {
// error determining sig size
// 署名サイズの決定エラー
}
\endcode
\sa wc_ed448_sign_msg
*/
int wc_ed448_sig_size(ed448_key* key);
int wc_ed448_sig_size(ed448_key* key);

View File

@@ -1,34 +1,46 @@
/*!
\ingroup Error
\brief この関数は、特定のバッファ内の特定のエラーコードのエラー文字列を格納します。
\return none いいえ返します。
\param error 文字列を取得するためのエラーコード
\brief この関数は、特定のエラーコードに対するエラー文字列を指定されたバッファに格納します。
\return none 戻り値なし。
\param error 文字列を取得するエラーコード
\param buffer エラー文字列を格納するバッファ。バッファは少なくともWOLFSSL_MAX_ERROR_SZ(80バイト)の長さである必要があります
_Example_
\code
char errorMsg[WOLFSSL_MAX_ERROR_SZ];
int err = wc_some_function();
if( err != 0) { // error occurred
if( err != 0) { // エラーが発生
wc_ErrorString(err, errorMsg);
}
\endcode
\sa wc_GetErrorString
*/
void wc_ErrorString(int err, char* buff);
/*!
\ingroup Error
\brief この関数は、特定のエラーコードのエラー文字列を返します。
\return string エラーコードエラー文字列を文字列リテラルとして返します。
\brief この関数は、特定のエラーコードに対するエラー文字列を返します。
\return string エラーコードに対するエラー文字列を文字列リテラルとして返します。
\param error 文字列を取得するエラーコード
_Example_
\code
char * errorMsg;
int err = wc_some_function();
if( err != 0) { // error occurred
if( err != 0) { // エラーが発生
errorMsg = wc_GetErrorString(err);
}
\endcode
\sa wc_ErrorString
*/
const char* wc_GetErrorString(int error);
const char* wc_GetErrorString(int error);

View File

@@ -1,7 +1,12 @@
/*!
\ingroup openSSL
\brief それぞれのwolfssl_evp_cipherポインタのゲッター関数。最初にプログラム内でwolfssl_evp_initを1回呼び出す必要があります。wolfssl_des_ecbマクロは、wolfssl_evp_des_ede3_ecbに対して定義する必要があります。
\return pointer DES EDE3操作のためのwolfssl_evp_cipherポインタを返します。
\brief それぞれのWOLFSSL_EVP_CIPHERポインタのゲッター関数。これらの暗号文字列を設定するには、まずプログラムでwolfSSL_EVP_init()を一度呼び出す必要があります。wolfSSL_EVP_des_ede3_ecb()の場合、WOLFSSL_DES_ECBマクロが定義されている必要があります。
\return pointer DES EDE3操作用のWOLFSSL_EVP_CIPHERポインタを返します。
\param none パラメータなし。
_Example_
\code
printf("block size des ede3 cbc = %d\n",
@@ -9,31 +14,43 @@
printf("block size des ede3 ecb = %d\n",
wolfSSL_EVP_CIPHER_block_size(wolfSSL_EVP_des_ede3_ecb()));
\endcode
\sa wolfSSL_EVP_CIPHER_CTX_init
*/
const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_des_ede3_ecb(void);
/*!
\ingroup openSSL
\brief それぞれのwolfssl_evp_cipherポインタのゲッター関数。最初にプログラム内でwolfssl_evp_initを1回呼び出す必要があります。wolfssl_des_ecbマクロは、wolfssl_evp_des_ecbに対して定義する必要があります。
\return pointer DES操作のためのwolfssl_evp_cipherポインタを返します。
\brief それぞれのWOLFSSL_EVP_CIPHERポインタのゲッター関数。これらの暗号文字列を設定するには、まずプログラムでwolfSSL_EVP_init()を一度呼び出す必要があります。wolfSSL_EVP_des_ecb()の場合、WOLFSSL_DES_ECBマクロが定義されている必要があります。
\return pointer DES操作用のWOLFSSL_EVP_CIPHERポインタを返します。
\param none パラメータなし。
_Example_
\code
WOLFSSL_EVP_CIPHER* cipher;
cipher = wolfSSL_EVP_des_cbc();
\endcode
\sa wolfSSL_EVP_CIPHER_CTX_init
*/
const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_des_cbc(void);
/*!
\ingroup openSSL
\brief wolfssl_evp_md_ctxを初期化する機能。この関数はwolfssl_engineがwolfssl_engineを使用しないため、wolfssl_evp_digestinitのラッパーです。
\return SSL_SUCCESS 正常に設定されている場合
\return SSL_FAILURE 成功しなかった場合
\param ctx 初期化する構造
\param type SHAなどのハッシュの種類
\brief WOLFSSL_EVP_MD_CTXを初期化する関数。この関数は、wolfSSLがWOLFSSL_ENGINEを使用しないため、wolfSSL_EVP_DigestInit()のラッパーです
\return SSL_SUCCESS 正常に設定された場合。
\return SSL_FAILURE 成功しなかった場合
\param ctx 初期化する構造体。
\param type 実行するハッシュのタイプ、例えばSHA。
\param impl 使用するエンジン。wolfSSLでは該当なし、NULLでも可。
_Example_
\code
WOLFSSL_EVP_MD_CTX* md = NULL;
@@ -45,8 +62,9 @@ const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_des_cbc(void);
}
printf("cipher md init ret = %d\n", wolfSSL_EVP_DigestInit_ex(md,
wolfSSL_EVP_sha1(), e));
//free resources
//リソースを解放
\endcode
\sa wolfSSL_EVP_MD_CTX_new
\sa wolfCrypt_Init
\sa wolfSSL_EVP_MD_CTX_free
@@ -57,14 +75,19 @@ int wolfSSL_EVP_DigestInit_ex(WOLFSSL_EVP_MD_CTX* ctx,
/*!
\ingroup openSSL
\brief wolfssl_evp_cipher_ctxを初期化する機能。この関数はwolfssl_engineがwolfssl_engineを使用しないため、wolfssl_ciphinitのラッパーです。
\return SSL_SUCCESS 正常に設定されている場合
\return SSL_FAILURE 成功しなかった場合
\param ctx 初期化する構造
\param type AESなどの暗号化/復号化の種類
\param impl 使用するエンジン。wolfsslのn / aは、nullになることができます。
\param key 設定するキー
\param iv アルゴリズムで必要な場合はIV
\brief WOLFSSL_EVP_CIPHER_CTXを初期化する関数。この関数は、wolfSSLがWOLFSSL_ENGINEを使用しないため、wolfSSL_CipherInit()のラッパーです
\return SSL_SUCCESS 正常に設定された場合。
\return SSL_FAILURE 成功しなかった場合
\param ctx 初期化する構造体。
\param type 実行する暗号化/復号のタイプ、例えばAES
\param impl 使用するエンジン。wolfSSLでは該当なし、NULLでも可。
\param key 設定する鍵。
\param iv アルゴリズムが必要とする場合のiv。
\param enc 暗号化(1)または復号(0)フラグ。
_Example_
\code
WOLFSSL_EVP_CIPHER_CTX* ctx = NULL;
@@ -82,8 +105,9 @@ int wolfSSL_EVP_DigestInit_ex(WOLFSSL_EVP_MD_CTX* ctx,
EVP_aes_128_ cbc(), e, key, iv, 1));
printf("cipher init ex success ret = %d\n", wolfSSL_EVP_CipherInit_ex(ctx,
EVP_aes_128_c bc(), e, key, iv, 1));
// free resources
// リソースを解放
\endcode
\sa wolfSSL_EVP_CIPHER_CTX_new
\sa wolfCrypt_Init
\sa wolfSSL_EVP_CIPHER_CTX_free
@@ -97,13 +121,18 @@ int wolfSSL_EVP_CipherInit_ex(WOLFSSL_EVP_CIPHER_CTX* ctx,
/*!
\ingroup openSSL
\brief wolfssl_evp_cipher_ctxを初期化する機能。WolfSSLはWOLFSSL_ENGINEを使用しないため、この関数はwolfssl_evp_ciphinitのラッパーです。暗号化フラグを暗号化するように設定します。
\return SSL_SUCCESS 正常に設定されている場合
\return SSL_FAILURE 成功しなかった場合
\param ctx 初期化する構造
\param type AESなどの暗号化の種類
\param impl 使用するエンジン。wolfsslのn / aは、nullになることができます。
\param key 使用する鍵
\brief WOLFSSL_EVP_CIPHER_CTXを初期化する関数。この関数は、wolfSSLがWOLFSSL_ENGINEを使用しないため、wolfSSL_EVP_CipherInit()のラッパーです。暗号化フラグを暗号化に設定します
\return SSL_SUCCESS 正常に設定された場合。
\return SSL_FAILURE 成功しなかった場合
\param ctx 初期化する構造体。
\param type 実行する暗号化のタイプ、例えばAES。
\param impl 使用するエンジン。wolfSSLでは該当なし、NULLでも可。
\param key 使用する鍵。
\param iv 使用するiv。
_Example_
\code
WOLFSSL_EVP_CIPHER_CTX* ctx = NULL;
@@ -115,8 +144,9 @@ int wolfSSL_EVP_CipherInit_ex(WOLFSSL_EVP_CIPHER_CTX* ctx,
}
printf("cipher ctx init ret = %d\n", wolfSSL_EVP_EncryptInit_ex(ctx,
wolfSSL_EVP_aes_128_cbc(), e, key, iv));
//free resources
//リソースを解放
\endcode
\sa wolfSSL_EVP_CIPHER_CTX_new
\sa wolfCrypt_Init
\sa wolfSSL_EVP_CIPHER_CTX_free
@@ -129,14 +159,19 @@ int wolfSSL_EVP_EncryptInit_ex(WOLFSSL_EVP_CIPHER_CTX* ctx,
/*!
\ingroup openSSL
\brief wolfssl_evp_cipher_ctxを初期化する機能。WolfSSLはWOLFSSL_ENGINEを使用しないため、この関数はwolfssl_evp_ciphinitのラッパーです。暗号化フラグを復号化するように設定します。
\return SSL_SUCCESS 正常に設定されている場合
\return SSL_FAILURE 成功しなかった場合
\param ctx 初期化する構造
\param type AESなどの暗号化/復号化の種類
\param impl 使用するエンジン。wolfsslのn / aは、nullになることができます。
\param key 設定するキー
\param iv アルゴリズムで必要な場合はIV
\brief WOLFSSL_EVP_CIPHER_CTXを初期化する関数。この関数は、wolfSSLがWOLFSSL_ENGINEを使用しないため、wolfSSL_EVP_CipherInit()のラッパーです。暗号化フラグを復号に設定します
\return SSL_SUCCESS 正常に設定された場合。
\return SSL_FAILURE 成功しなかった場合
\param ctx 初期化する構造体。
\param type 実行する暗号化/復号のタイプ、例えばAES
\param impl 使用するエンジン。wolfSSLでは該当なし、NULLでも可。
\param key 設定する鍵。
\param iv アルゴリズムが必要とする場合のiv。
\param enc 暗号化(1)または復号(0)フラグ。
_Example_
\code
WOLFSSL_EVP_CIPHER_CTX* ctx = NULL;
@@ -156,8 +191,9 @@ int wolfSSL_EVP_EncryptInit_ex(WOLFSSL_EVP_CIPHER_CTX* ctx,
EVP_aes_128_ cbc(), e, key, iv, 1));
printf("cipher init ex success ret = %d\n", wolfSSL_EVP_DecryptInit_ex(ctx,
EVP_aes_128_c bc(), e, key, iv, 1));
// free resources
// リソースを解放
\endcode
\sa wolfSSL_EVP_CIPHER_CTX_new
\sa wolfCrypt_Init
\sa wolfSSL_EVP_CIPHER_CTX_free
@@ -170,13 +206,18 @@ int wolfSSL_EVP_DecryptInit_ex(WOLFSSL_EVP_CIPHER_CTX* ctx,
/*!
\ingroup openSSL
\brief データを暗号化/復号化する機能。バッファ内では暗号化または復号化され、OUTバッファが結果を保持します。OUTORは暗号化/復号化された情報の長さになります。
\return SSL_SUCCESS 成功した場合
\return SSL_FAILURE 成功しなかった場合
\param ctx から暗号化の種類を取得するための構造
\param out 出力を保持するためのバッファ
\param outl 出力のサイズになるように調整しました。
\param in 操作を実行するためのバッファー
\brief データを暗号化/復号する関数。inバッファが暗号化または復号される対象として追加され、outバッファが結果を保持します。outlは暗号化/復号された情報の長さになります。
\return SSL_SUCCESS 成功した場合
\return SSL_FAILURE 成功しなかった場合
\param ctx 暗号タイプを取得する構造体
\param out 出力を保持するバッファ。
\param outl 出力のサイズに調整されます。
\param in 操作を実行するバッファ。
\param inl 入力バッファの長さ。
_Example_
\code
WOLFSSL_EVP_CIPHER_CTX* ctx = NULL;
@@ -186,12 +227,13 @@ int wolfSSL_EVP_DecryptInit_ex(WOLFSSL_EVP_CIPHER_CTX* ctx,
int inl = 100;
ctx = wolfSSL_EVP_CIPHER_CTX_new();
// set up ctx
// ctxをセットアップ
ret = wolfSSL_EVP_CipherUpdate(ctx, out, outl, in, inl);
// check ret value
// buffer out holds outl bytes of data
// free resources
// ret値をチェック
// バッファoutはoutlバイトのデータを保持
// リソースを解放
\endcode
\sa wolfSSL_EVP_CIPHER_CTX_new
\sa wolfCrypt_Init
\sa wolfSSL_EVP_CIPHER_CTX_free
@@ -202,19 +244,25 @@ int wolfSSL_EVP_CipherUpdate(WOLFSSL_EVP_CIPHER_CTX *ctx,
/*!
\ingroup openSSL
\brief この関数は、パディングを追加する最終暗号化操作を実行します。wolfssl_evp_ciph_no_paddingフラグがwolfssl_evp_cipher_ctx構造に設定されている場合、1が返され、暗号化/復号化は行われません。PADDING FLAGがSETIパディングを追加して暗号化すると、暗号化にCTXが設定されていると、復号化されたときにパディング値がチェックされます。
\return 1 成功に戻りました
\return 0 失敗に遭遇した場合
\param ctx 復号化/暗号化する構造
\param out 最後の復号化/暗号化のためのバッファ
\brief この関数は、パディングを追加する最終暗号操作を実行します。WOLFSSL_EVP_CIPHER_CTX構造体にWOLFSSL_EVP_CIPH_NO_PADDINGフラグが設定されている場合、1が返され、暗号化/復号は実行されません。パディングフラグが設定されている場合、ctxが暗号化に設定されているときにパディングが追加され暗号化され、復号に設定されているときにパディング値がチェックされます
\return 1 成功時に返されます
\return 0 失敗が発生した場合
\param ctx 復号/暗号化に使用する構造体。
\param out 最終復号/暗号化用のバッファ。
\param out1 関数によってデータが追加されたときのoutバッファのサイズ。
_Example_
\code
WOLFSSL_EVP_CIPHER_CTX* ctx;
int out1;
unsigned char out[64];
// create ctx
// ctxを作成
wolfSSL_EVP_CipherFinal(ctx, out, &out1);
\endcode
\sa wolfSSL_EVP_CIPHER_CTX_new
*/
int wolfSSL_EVP_CipherFinal(WOLFSSL_EVP_CIPHER_CTX *ctx,
@@ -222,17 +270,23 @@ int wolfSSL_EVP_CipherFinal(WOLFSSL_EVP_CIPHER_CTX *ctx,
/*!
\ingroup openSSL
\brief WolfSSL EVP_CIPHER_CTX構造キー長の設定機能
\return SSL_SUCCESS 正常に設定されている場合
\return SSL_FAILURE キーの長さを設定できなかった場合。
\param ctx キーの長さを設定する構造
\brief WOLFSSL_EVP_CIPHER_CTX構造体の鍵長のセッター関数
\return SSL_SUCCESS 正常に設定された場合。
\return SSL_FAILURE 鍵長の設定に失敗した場合。
\param ctx 鍵長を設定する構造体。
\param keylen 鍵の長さ。
_Example_
\code
WOLFSSL_EVP_CIPHER_CTX* ctx;
int keylen;
// create ctx
// ctxを作成
wolfSSL_EVP_CIPHER_CTX_set_key_length(ctx, keylen);
\endcode
\sa wolfSSL_EVP_CIPHER_flags
*/
int wolfSSL_EVP_CIPHER_CTX_set_key_length(WOLFSSL_EVP_CIPHER_CTX* ctx,
@@ -240,43 +294,61 @@ int wolfSSL_EVP_CIPHER_CTX_set_key_length(WOLFSSL_EVP_CIPHER_CTX* ctx,
/*!
\ingroup openSSL
\brief これはCTXブロックサイズのGetter関数です。
\return size ctx-> block_sizeを返します。
\brief これはctxブロックサイズのゲッター関数です。
\return size ctx->block_sizeを返します。
\param ctx ブロックサイズを取得する暗号ctx。
_Example_
\code
const WOLFSSL_CVP_CIPHER_CTX* ctx;
//set up ctx
printf(block size = %d\n, wolfSSL_EVP_CIPHER_CTX_block_size(ctx));
//ctxをセットアップ
printf("block size = %d\n", wolfSSL_EVP_CIPHER_CTX_block_size(ctx));
\endcode
\sa wolfSSL_EVP_CIPHER_block_size
*/
int wolfSSL_EVP_CIPHER_CTX_block_size(const WOLFSSL_EVP_CIPHER_CTX *ctx);
/*!
\ingroup openSSL
\brief これは暗号のブロックサイズのゲッター関数です。
\return size ブロックサイズを返します。
\brief これは暗号のブロックサイズのゲッター関数です。
\return size ブロックサイズを返します。
\param cipher ブロックサイズを取得する暗号。
_Example_
\code
printf(block size = %d\n,
printf("block size = %d\n",
wolfSSL_EVP_CIPHER_block_size(wolfSSL_EVP_aes_256_ecb()));
\endcode
\sa wolfSSL_EVP_aes_256_ctr
*/
int wolfSSL_EVP_CIPHER_block_size(const WOLFSSL_EVP_CIPHER *cipher);
/*!
\ingroup openSSL
\brief WolfSSL evp_cipher_ctx構造の設定機能
\return none いいえ返します
\param ctx フラグを設定する構造
\brief WOLFSSL_EVP_CIPHER_CTX構造体のセッター関数
\return none 戻り値なし。
\param ctx フラグを設定する構造体。
\param flag 構造体に設定するフラグ。
_Example_
\code
WOLFSSL_EVP_CIPHER_CTX* ctx;
int flag;
// create ctx
// ctxを作成
wolfSSL_EVP_CIPHER_CTX_set_flags(ctx, flag);
\endcode
\sa wolfSSL_EVP_CIPHER_flags
\sa wolfSSL_EVP_CIPHER_CTX_flags
*/
@@ -284,16 +356,22 @@ void wolfSSL_EVP_CIPHER_CTX_set_flags(WOLFSSL_EVP_CIPHER_CTX *ctx, int flags);
/*!
\ingroup openSSL
\brief WolfSSL evp_cipher_ctx構造のクリア機能
\return none いいえ返します
\param ctx フラグをクリアするための構造
\brief WOLFSSL_EVP_CIPHER_CTX構造体のクリア関数
\return none 戻り値なし。
\param ctx フラグをクリアする構造体。
\param flag 構造体でクリアするフラグ値。
_Example_
\code
WOLFSSL_EVP_CIPHER_CTX* ctx;
int flag;
// create ctx
// ctxを作成
wolfSSL_EVP_CIPHER_CTX_clear_flags(ctx, flag);
\endcode
\sa wolfSSL_EVP_CIPHER_flags
\sa wolfSSL_EVP_CIPHER_CTX_flags
*/
@@ -301,16 +379,22 @@ void wolfSSL_EVP_CIPHER_CTX_clear_flags(WOLFSSL_EVP_CIPHER_CTX *ctx, int flags);
/*!
\ingroup openSSL
\brief wolfssl_evp_cipher_ctx構造のためのセッター機能パディングを使用する。
\return SSL_SUCCESS 正常に設定されている場合
\return BAD_FUNC_ARG NULL引数が渡された場合。
\param ctx パディングフラグを設定する構造
\brief パディングを使用するためのWOLFSSL_EVP_CIPHER_CTX構造体のセッター関数
\return SSL_SUCCESS 正常に設定された場合。
\return BAD_FUNC_ARG null引数が渡された場合。
\param ctx パディングフラグを設定する構造体。
\param padding パディングを設定しない場合は0、パディングを設定する場合は1。
_Example_
\code
WOLFSSL_EVP_CIPHER_CTX* ctx;
// create ctx
// ctxを作成
wolfSSL_EVP_CIPHER_CTX_set_padding(ctx, 1);
\endcode
\sa wolfSSL_EVP_CIPHER_CTX_new
*/
int wolfSSL_EVP_CIPHER_CTX_set_padding(WOLFSSL_EVP_CIPHER_CTX *c, int pad);
@@ -318,8 +402,13 @@ int wolfSSL_EVP_CIPHER_CTX_set_padding(WOLFSSL_EVP_CIPHER_CTX *c, int pad);
/*!
\ingroup openSSL
\brief wolfssl_evp_cipher_ctx構造のゲッター関数廃止予定のV1.1.0
\return unsigned フラグ/モードの長い。
\brief WOLFSSL_EVP_CIPHER_CTX構造体のゲッター関数。v1.1.0で非推奨
\return unsigned long フラグ/モードのunsigned long。
\param ctx フラグを取得する構造体。
_Example_
\code
WOLFSSL_EVP_CIPHER_CTX* ctx;
@@ -327,7 +416,8 @@ int wolfSSL_EVP_CIPHER_CTX_set_padding(WOLFSSL_EVP_CIPHER_CTX *c, int pad);
ctx = wolfSSL_EVP_CIPHER_CTX_new()
flags = wolfSSL_EVP_CIPHER_CTX_flags(ctx);
\endcode
\sa wolfSSL_EVP_CIPHER_CTX_new
\sa wolfSSL_EVP_CIPHER_flags
*/
unsigned long wolfSSL_EVP_CIPHER_CTX_flags(const WOLFSSL_EVP_CIPHER_CTX *ctx);
unsigned long wolfSSL_EVP_CIPHER_CTX_flags(const WOLFSSL_EVP_CIPHER_CTX *ctx);

View File

@@ -1,17 +1,23 @@
/*!
\ingroup wolfCrypt
\brief この関数は提供されたwc_hashtypeのOIDを返します。
\return OID 戻り値0を超えてください
\return HASH_TYPE_E ハッシュ型はサポートされていません。
\return BAD_FUNC_ARG 提供された引数の1つが正しくありません。
\brief この関数は、提供されたwc_HashTypeのOIDを返します。
\return OID 0より大きい値を返します
\return HASH_TYPE_E ハッシュタイプがサポートされていません。
\return BAD_FUNC_ARG 提供された引数の1つが正しくありません。
\param hash_type "WC_HASH_TYPE_SHA256"などの"enum wc_HashType"からのハッシュタイプ。
_Example_
\code
enum wc_HashType hash_type = WC_HASH_TYPE_SHA256;
int oid = wc_HashGetOID(hash_type);
if (oid > 0) {
// Success
// 成功
}
\endcode
\sa wc_HashGetDigestSize
\sa wc_Hash
*/
@@ -19,10 +25,15 @@ int wc_HashGetOID(enum wc_HashType hash_type);
/*!
\ingroup wolfCrypt
\brief この関数は、hash_typeのダイジェスト出力のサイズを返します。返品サイズは、WC_HASHに提供される出力バッファが十分に大きいことを確認するために使用されます。
\return Success 正の戻り値は、ハッシュのダイジェストサイズを示します。
\return Error hash_typeがサポートされていない場合はhash_type_eを返します。
\return Failure 無効なhash_typeが使用された場合、bad_func_argを返します。
\brief この関数は、hash_typeのダイジェスト(出力)のサイズを返します。返されるサイズは、wc_Hashに提供される出力バッファが十分な大きさであることを確認するために使用されます。
\return Success 正の戻り値は、ハッシュのダイジェストサイズを示します。
\return Error hash_typeがサポートされていない場合、HASH_TYPE_Eを返します。
\return Failure 無効なhash_typeが使用された場合、BAD_FUNC_ARGを返します。
\param hash_type "WC_HASH_TYPE_SHA256"などの"enum wc_HashType"からのハッシュタイプ。
_Example_
\code
int hash_len = wc_HashGetDigestSize(hash_type);
@@ -31,18 +42,24 @@ int wc_HashGetOID(enum wc_HashType hash_type);
return BAD_FUNC_ARG;
}
\endcode
\sa wc_Hash
*/
int wc_HashGetDigestSize(enum wc_HashType hash_type);
/*!
\ingroup wolfCrypt
\brief この関数は、提供されたデータバッファ上にハッシュを実行し、提供されたハッシュバッファにそれを返します。
\return 0 そうでなければ、それ以外の誤りbad_func_argやbuffer_eなど
\param hash_type "wc_hash_type_sha256"などの "enum wc_hashtype"からのハッシュ型。
\param data ハッシュへのデータを含むバッファへのポインタ
\param data_len データバッファの長さ。
\param hash 最後のハッシュを出力するために使用されるバッファへのポインタ
\brief この関数は、提供されたデータバッファに対してハッシュを実行し、提供されたハッシュバッファに結果を返します
\return 0 成功、それ以外はエラー(BAD_FUNC_ARGやBUFFER_Eなど)
\param hash_type "WC_HASH_TYPE_SHA256"などの"enum wc_HashType"からのハッシュタイプ
\param data ハッシュ化するデータを含むバッファへのポインタ。
\param data_len データバッファの長さ。
\param hash 最終ハッシュを出力するために使用されるバッファへのポインタ。
\param hash_len ハッシュバッファの長さ。
_Example_
\code
enum wc_HashType hash_type = WC_HASH_TYPE_SHA256;
@@ -50,10 +67,11 @@ int wc_HashGetDigestSize(enum wc_HashType hash_type);
if (hash_len > 0) {
int ret = wc_Hash(hash_type, data, data_len, hash_data, hash_len);
if(ret == 0) {
// Success
// 成功
}
}
\endcode
\sa wc_HashGetDigestSize
*/
int wc_Hash(enum wc_HashType hash_type,
@@ -62,11 +80,16 @@ int wc_Hash(enum wc_HashType hash_type,
/*!
\ingroup MD5
\brief 利便性機能は、すべてのハッシュを処理し、その結果をハッシュに入れます。
\return 0 データを正常にハッシュしたときに返されます。
\return Memory_E メモリエラー、メモリを割り当てることができません。これは、小さなスタックオプションが有効になっているだけです。
\param data ハッシュへのデータ
\param len データの長さ
\brief 便利な関数で、すべてのハッシュ処理を行い、結果をhashに格納します。
\return 0 データのハッシュ化に成功した場合に返されます。
\return Memory_E メモリエラー、メモリを割り当てられません。これは小さいスタックオプションが有効な場合にのみ可能です。
\param data ハッシュ化するデータ
\param len データの長さ
\param hash ハッシュ値を保持するバイト配列。
_Example_
\code
const byte* data;
@@ -76,9 +99,10 @@ int wc_Hash(enum wc_HashType hash_type,
...
ret = wc_Md5Hash(data, data_len, hash);
if (ret != 0) {
// Md5 Hash Failure Case.
// Md5ハッシュ失敗のケース。
}
\endcode
\sa wc_Md5Hash
\sa wc_Md5Final
\sa wc_InitMd5
@@ -87,15 +111,21 @@ int wc_Md5Hash(const byte* data, word32 len, byte* hash);
/*!
\ingroup SHA
\brief 利便性機能は、すべてのハッシュを処理し、その結果をハッシュに入れます。
\return 0 うまく返されました...
\return Memory_E メモリエラー、メモリを割り当てることができません。これは、小さなスタックオプションが有効になっているだけです。
\param data ハッシュへのデータ
\param len データの長さ
\brief 便利な関数で、すべてのハッシュ処理を行い、結果をhashに格納します
\return 0 正常に….の場合に返されます。
\return Memory_E メモリエラー、メモリを割り当てられません。これは小さいスタックオプションが有効な場合にのみ可能です。
\param data ハッシュ化するデータ
\param len データの長さ
\param hash ハッシュ値を保持するバイト配列。
_Example_
\code
none
\endcode
\sa wc_ShaHash
\sa wc_ShaFinal
\sa wc_InitSha
@@ -104,32 +134,21 @@ int wc_ShaHash(const byte* data, word32 len, byte* hash);
/*!
\ingroup SHA
\brief 利便性機能は、すべてのハッシュを処理し、その結果をハッシュに入れます。
\return 0 うまく返されました...
\return Memory_E メモリエラー、メモリを割り当てることができません。これは、小さなスタックオプションが有効になっているだけです。
\param data ハッシュへのデータ
\param len データの長さ
_Example_
\code
none
\endcode
\sa wc_Sha256Hash
\sa wc_Sha256Final
\sa wc_InitSha256
*/
int wc_Sha256Hash(const byte* data, word32 len, byte* hash);
/*!
\ingroup SHA
\brief 利便性機能は、すべてのハッシュを処理し、その結果をハッシュに入れます。
\return 0 成功
\return <0 エラー
\param data ハッシュへのデータ
\param len データの長さ
\brief 便利な関数で、すべてのハッシュ処理を行い、結果をhashに格納します。
\return 0 成功
\return <0 エラー
\param data ハッシュ化するデータ
\param len データの長さ
\param hash ハッシュ値を保持するバイト配列。
_Example_
\code
none
\endcode
\sa wc_InitSha224
\sa wc_Sha224Update
\sa wc_Sha224Final
@@ -138,15 +157,67 @@ int wc_Sha224Hash(const byte* data, word32 len, byte* hash);
/*!
\ingroup SHA
\brief 利便性機能は、すべてのハッシュを処理し、その結果をハッシュに入れます。
\return 0 入力されたデータを正常にハッシュしたときに返されます
\return Memory_E メモリエラー、メモリを割り当てることができません。これは、小さなスタックオプションが有効になっているだけです。
\param data ハッシュへのデータ
\param len データの長さ
\brief 便利な関数で、すべてのハッシュ処理を行い、結果をhashに格納します
\return 0 正常に…の場合に返されます
\return Memory_E メモリエラー、メモリを割り当てられません。これは小さいスタックオプションが有効な場合にのみ可能です。
\param data ハッシュ化するデータ
\param len データの長さ
\param hash ハッシュ値を保持するバイト配列。
_Example_
\code
none
\endcode
\sa wc_Sha256Hash
\sa wc_Sha256Final
\sa wc_InitSha256
*/
int wc_Sha256Hash(const byte* data, word32 len, byte* hash);
/*!
\ingroup SHA
\brief 便利な関数で、すべてのハッシュ処理を行い、結果をhashに格納します。
\return 0 データのハッシュ化に成功した場合に返されます
\return Memory_E メモリエラー、メモリを割り当てられません。これは小さいスタックオプションが有効な場合にのみ可能です。
\param data ハッシュ化するデータ
\param len データの長さ
\param hash ハッシュ値を保持するバイト配列。
_Example_
\code
none
\endcode
\sa wc_Sha384Hash
\sa wc_Sha384Final
\sa wc_InitSha384
*/
int wc_Sha384Hash(const byte* data, word32 len, byte* hash);
/*!
\ingroup SHA
\brief 便利な関数で、すべてのハッシュ処理を行い、結果をhashに格納します。
\return 0 入力されたデータのハッシュ化に成功した場合に返されます
\return Memory_E メモリエラー、メモリを割り当てられません。これは小さいスタックオプションが有効な場合にのみ可能です。
\param data ハッシュ化するデータ
\param len データの長さ
\param hash ハッシュ値を保持するバイト配列。
_Example_
\code
none
\endcode
\sa wc_Sha512Hash
\sa wc_Sha512Final
\sa wc_InitSha512
@@ -155,17 +226,138 @@ int wc_Sha512Hash(const byte* data, word32 len, byte* hash);
/*!
\ingroup SHA
\brief 利便性機能は、すべてのハッシュを処理し、その結果をハッシュに入れます。
\return 0 データを正常にハッシュしたときに返されます
\return Memory_E メモリエラー、メモリを割り当てることができません。これは、小さなスタックオプションが有効になっているだけです。
\param data ハッシュへのデータ
\param len データの長さ
\brief 便利な関数で、すべてのハッシュ処理を行い、結果をhashに格納します
\return 0 データのハッシュ化に成功した場合に返されます
\return Memory_E メモリエラー、メモリを割り当てられません。これは小さいスタックオプションが有効な場合にのみ可能です。
\param data ハッシュ化するデータ
\param len データの長さ
\param hash ハッシュ値を保持するバイト配列。
_Example_
\code
none
\endcode
\sa wc_Sha384Hash
\sa wc_Sha384Final
\sa wc_InitSha384
\sa wc_InitSha3_224
\sa wc_Sha3_224_Update
\sa wc_Sha3_224_Final
*/
int wc_Sha384Hash(const byte* data, word32 len, byte* hash);
int wc_Sha3_224Hash(const byte* data, word32 len, byte* hash);
/*!
\ingroup SHA
\brief 便利な関数で、すべてのハッシュ処理を行い、結果をhashに格納します。
\return 0 データのハッシュ化に成功した場合に返されます
\return Memory_E メモリエラー、メモリを割り当てられません。これは小さいスタックオプションが有効な場合にのみ可能です。
\param data ハッシュ化するデータ
\param len データの長さ
\param hash ハッシュ値を保持するバイト配列。
_Example_
\code
none
\endcode
\sa wc_InitSha3_256
\sa wc_Sha3_256_Update
\sa wc_Sha3_256_Final
*/
int wc_Sha3_256Hash(const byte* data, word32 len, byte* hash);
/*!
\ingroup SHA
\brief 便利な関数で、すべてのハッシュ処理を行い、結果をhashに格納します。
\return 0 データのハッシュ化に成功した場合に返されます
\return Memory_E メモリエラー、メモリを割り当てられません。これは小さいスタックオプションが有効な場合にのみ可能です。
\param data ハッシュ化するデータ
\param len データの長さ
\param hash ハッシュ値を保持するバイト配列。
_Example_
\code
none
\endcode
\sa wc_InitSha3_384
\sa wc_Sha3_384_Update
\sa wc_Sha3_384_Final
*/
int wc_Sha3_384Hash(const byte* data, word32 len, byte* hash);
/*!
\ingroup SHA
\brief 便利な関数で、すべてのハッシュ処理を行い、結果をhashに格納します。
\return 0 入力されたデータのハッシュ化に成功した場合に返されます
\return Memory_E メモリエラー、メモリを割り当てられません。これは小さいスタックオプションが有効な場合にのみ可能です。
\param data ハッシュ化するデータ
\param len データの長さ
\param hash ハッシュ値を保持するバイト配列。
_Example_
\code
none
\endcode
\sa wc_InitSha3_512
\sa wc_Sha3_512_Update
\sa wc_Sha3_512_Final
*/
int wc_Sha3_512Hash(const byte* data, word32 len, byte* hash);
/*!
\ingroup SHA
\brief 便利な関数で、すべてのハッシュ処理を行い、結果をhashに格納します。
\return 0 入力されたデータのハッシュ化に成功した場合に返されます
\return Memory_E メモリエラー、メモリを割り当てられません。これは小さいスタックオプションが有効な場合にのみ可能です。
\param data ハッシュ化するデータ
\param len データの長さ
\param hash ハッシュ値を保持するバイト配列。
_Example_
\code
none
\endcode
\sa wc_InitShake128
\sa wc_Shake128_Update
\sa wc_Shake128_Final
*/
int wc_Shake128Hash(const byte* data, word32 len, byte* hash);
/*!
\ingroup SHA
\brief 便利な関数で、すべてのハッシュ処理を行い、結果をhashに格納します。
\return 0 入力されたデータのハッシュ化に成功した場合に返されます
\return Memory_E メモリエラー、メモリを割り当てられません。これは小さいスタックオプションが有効な場合にのみ可能です。
\param data ハッシュ化するデータ
\param len データの長さ
\param hash ハッシュ値を保持するバイト配列。
_Example_
\code
none
\endcode
\sa wc_InitShake256
\sa wc_Shake256_Update
\sa wc_Shake256_Final
*/
int wc_Shake256Hash(const byte* data, word32 len, byte* hash);

View File

@@ -1,21 +1,27 @@
/*!
\ingroup HMAC
\brief この関数はHMACオブジェクトを初期化し、その暗号化タイプ、キー、およびHMACの長さを設定します。
\return 0 HMACオブジェクト初期化に成功しました
\return BAD_FUNC_ARG 入力タイプが無効な場合は返されます。有効なオプションは次のとおりです.MD5、SHA、SHA256、SHA384、SHA3-224、SHA3-256、SHA3-384、SHA3-512
\return MEMORY_E ハッシュに使用する構造体の割り当てメモリの割り当てエラーがある場合
\return HMAC_MIN_KEYLEN_E FIPS実装を使用するときに、指定されたキーがFIPS規格の最小許容(14バイト)よりも短い
\param hmac 初期化するHMACオブジェクトへのポインタ
\param type HMACオブジェクトを使用する暗号化方式を指定します。有効なオプションは次のとおりです.MD5、SHA、SHA256、SHA384、SHA3-224、SHA3-256、SHA3-384、SHA3-512
\param key HMACオブジェクトを初期化するキーを含むバッファへのポインタ
\brief この関数はHmacオブジェクト初期化し、暗号化タイプ、鍵、およびHMAC長を設定します。
\return 0 Hmacオブジェクトの初期化に成功した場合に返されます。
\return BAD_FUNC_ARG 入力タイプが無効な場合に返されますtypeパラメータを参照
\return MEMORY_E ハッシュに使用する構造体のメモリ割り当てエラーがある場合に返されます。
\return HMAC_MIN_KEYLEN_E FIPS実装を使用していて、指定された鍵の長さが最小許容FIPS標準の14バイトより短い場合に返されます。
\param hmac 初期化するHmacオブジェクトへのポインタ。
\param type Hmacオブジェクトが使用する暗号化方式を指定するタイプ。有効なオプションはWC_MD5、WC_SHA、WC_SHA256、WC_SHA384、WC_SHA512、WC_SHA3_224、WC_SHA3_256、WC_SHA3_384、またはWC_SHA3_512。
\param key Hmacオブジェクトを初期化する鍵を含むバッファへのポインタ。
\param length 鍵の長さ。
_Example_
\code
Hmac hmac;
byte key[] = { // initialize with key to use for encryption };
if (wc_HmacSetKey(&hmac, MD5, key, sizeof(key)) != 0) {
// error initializing Hmac object
byte key[] = { // 暗号化に使用する鍵で初期化 };
if (wc_HmacSetKey(&hmac, WC_MD5, key, sizeof(key)) != 0) {
// Hmacオブジェクトの初期化エラー
}
\endcode
\sa wc_HmacUpdate
\sa wc_HmacFinal
*/
@@ -23,24 +29,30 @@ int wc_HmacSetKey(Hmac* hmac, int type, const byte* key, word32 keySz);
/*!
\ingroup HMAC
\brief この関数は、HMACを使用して認証するメッセージを更新します。HMACオブジェクトがWC_HMACSETKEYで初期化された後に呼び出されるべきです。この関数は、ハッシュへのメッセージを更新するために複数回呼び出されることがあります。必要に応じてwc_hmacupdateを呼び出した後、最終認証済みメッセージタグを取得するためにwc_hmacfinalを呼び出す必要があります。
\return 0 認証するメッセージの更新に成功しました
\return MEMORY_E ハッシュアルゴリズムで使用するためのメモリ割り当てエラーがある場合
\param hmac メッセージ更新するHMACオブジェクトへのポインタ
\param msg 追加するメッセージを含むバッファへのポインタ
\brief この関数は、HMACを使用して認証するメッセージを更新します。wc_HmacSetKeyでHmacオブジェクトが初期化された後に呼び出す必要があります。この関数は、ハッシュするメッセージを更新するために複数回呼び出すことができます。必要に応じてwc_HmacUpdateを呼び出した後、wc_HmacFinalを呼び出して最終的な認証メッセージタグを取得する必要があります。
\return 0 認証するメッセージ更新に成功した場合に返されます。
\return MEMORY_E ハッシュアルゴリズムで使用するメモリ割り当てエラーがある場合に返されます。
\param hmac メッセージを更新するHmacオブジェクトへのポインタ。
\param msg 追加するメッセージを含むバッファへのポインタ。
\param length 追加するメッセージの長さ。
_Example_
\code
Hmac hmac;
byte msg[] = { // initialize with message to authenticate };
byte msg2[] = { // initialize with second half of message };
// initialize hmac
byte msg[] = { // 認証するメッセージで初期化 };
byte msg2[] = { // メッセージの後半で初期化 };
// hmacを初期化
if( wc_HmacUpdate(&hmac, msg, sizeof(msg)) != 0) {
// error updating message
// メッセージ更新エラー
}
if( wc_HmacUpdate(&hmac, msg2, sizeof(msg)) != 0) {
// error updating with second message
// 2番目のメッセージでの更新エラー
}
\endcode
\sa wc_HmacSetKey
\sa wc_HmacFinal
*/
@@ -48,21 +60,27 @@ int wc_HmacUpdate(Hmac* hmac, const byte* in, word32 sz);
/*!
\ingroup HMAC
\brief この関数は、HMACオブジェクトのメッセージの最終ハッシュを計算します。
\return 0 最後のハッシュ計算に成功した
\return MEMORY_E ハッシュアルゴリズムで使用するためにメモリを割り当てるエラーがある場合
\param hmac 最終ハッシュ計算するHMACオブジェクトへのポインタ
\brief この関数は、Hmacオブジェクトのメッセージの最終ハッシュ計算します。
\return 0 最終ハッシュ計算に成功した場合に返されます。
\return MEMORY_E ハッシュアルゴリズムで使用するメモリ割り当てエラーがある場合に返されます。
\param hmac 最終ハッシュを計算するHmacオブジェクトへのポインタ。
\param hash 最終ハッシュを保存するバッファへのポインタ。選択したハッシュアルゴリズムに必要なスペースを確保する必要があります。
_Example_
\code
Hmac hmac;
byte hash[MD5_DIGEST_SIZE];
// initialize hmac with MD5 as type
// wc_HmacUpdate() with messages
// タイプとしてMD5でhmacを初期化
// メッセージでwc_HmacUpdate()
if (wc_HmacFinal(&hmac, hash) != 0) {
// error computing hash
// ハッシュ計算エラー
}
\endcode
\sa wc_HmacSetKey
\sa wc_HmacUpdate
*/
@@ -70,46 +88,435 @@ int wc_HmacFinal(Hmac* hmac, byte* out);
/*!
\ingroup HMAC
\brief この関数は、構成された暗号スイートに基づいて使用可能な最大のHMACダイジェストサイズを返します。
\return Success 設定された暗号スイートに基づいて使用可能な最大のHMACダイジェストサイズを返します
\brief この関数は、設定された暗号スイートに基づいて用可能な最大のHMACダイジェストサイズを返します
\return Success 設定された暗号スイートに基づいて利用可能な最大のHMACダイジェストサイズを返します。
\param none パラメータなし。
_Example_
\code
int maxDigestSz = wolfSSL_GetHmacMaxSize();
\endcode
\sa none
*/
int wolfSSL_GetHmacMaxSize(void);
/*!
\ingroup HMAC
\brief この関数は、HMACキー導出機能HKDFへのアクセスを提供します。HMACを利用して、任意のSALTとオプションの情報を派生したキーに変換します。0またはNULLが指定されている場合、ハッシュ型はデフォルトでMD5になります。
\return 0 与えられた入力でキーの生成に成功したら返されます
\return BAD_FUNC_ARG 無効なハッシュ型が引数として指定されている場合に返されます。有効な型は次のとおりです.MD5、SHA、SHA256、SHA384、SHA3-224、SHA3-256、SHA3-384、SHA3-512
\return MEMORY_E メモリの割り当て中にエラーが発生した場合に返されます
\return HMAC_MIN_KEYLEN_E FIPS実装を使用するときに返されることがあり、指定されたキー長は最小許容FIPS規格よりも短いです。
\param type HKDFに使用するハッシュタイプ。有効な型は次のとおりです.MD5、SHA、SHA256、SHA384、SHA3-224、SHA3-256、SHA3-384、SHA3-512
\param inKey KDFに使用するキーを含むバッファへのポインタ
\param inKeySz 入力キーの長さ
\param salt 任意のソルトを含むバッファへのポインタ。ソルトを使用しない場合は代わりにNULLを使用してください
\param saltSz ソルトの長さ。ソルトを使用しない場合は0を使用してください
\param info オプションの追加情報を含むバッファへのポインタ。追加情報を追加していない場合はNULLを使用してください
\param infoSz 追加情報の長さ追加情報を使用しない場合は0を使用してください
\param out 派生キーを保存するバッファへのポインタ
\brief この関数は、HMAC鍵導出関数HKDFへのアクセスを提供します。HMACを利用して、オプションのソルトとオプションの情報を含むinKeyを導出鍵に変換し、outに保存します。ハッシュタイプは、0またはNULLが指定された場合、デフォルトでMD5になります
HMAC設定オプションは--enable-hmacデフォルトでオン、またはソースを直接ビルドする場合はHAVE_HKDFです。
\return 0 指定された入力で鍵の生成に成功した場合に返されます。
\return BAD_FUNC_ARG 無効なハッシュタイプが指定された場合に返されますtypeパラメータを参照
\return MEMORY_E メモリ割り当てエラーがある場合に返されます。
\return HMAC_MIN_KEYLEN_E FIPS実装を使用していて、指定された鍵の長さが最小許容FIPS標準より短い場合に返される可能性があります。
\param type HKDFに使用するハッシュタイプ。有効なタイプはWC_MD5、WC_SHA、WC_SHA256、WC_SHA384、WC_SHA512、WC_SHA3_224、WC_SHA3_256、WC_SHA3_384、またはWC_SHA3_512。
\param inKey KDFに使用する鍵を含むバッファへのポインタ。
\param inKeySz 入力鍵の長さ。
\param salt オプションのソルトを含むバッファへのポインタ。ソルトを使用しない場合はNULLを使用します。
\param saltSz ソルトの長さ。ソルトを使用しない場合は0を使用します。
\param info オプションの追加情報を含むバッファへのポインタ。追加情報を追加しない場合はNULLを使用します。
\param infoSz 追加情報の長さ。追加情報を使用しない場合は0を使用します。
\param out 導出鍵を保存するバッファへのポインタ。
\param outSz 生成された鍵を保存する出力バッファで利用可能なスペース。
_Example_
\code
byte key[] = { // initialize with key };
byte salt[] = { // initialize with salt };
byte key[] = { // 鍵で初期化 };
byte salt[] = { // ソルトで初期化 };
byte derivedKey[MAX_DIGEST_SIZE];
int ret = wc_HKDF(SHA512, key, sizeof(key), salt, sizeof(salt),
int ret = wc_HKDF(WC_SHA512, key, sizeof(key), salt, sizeof(salt),
NULL, 0, derivedKey, sizeof(derivedKey));
if ( ret != 0 ) {
// error generating derived key
// 導出鍵の生成エラー
}
\endcode
\sa wc_HmacSetKey
*/
int wc_HKDF(int type, const byte* inKey, word32 inKeySz,
const byte* salt, word32 saltSz,
const byte* info, word32 infoSz,
byte* out, word32 outSz);
/*!
\ingroup HMAC
\brief この関数は、HMAC鍵導出関数HKDFへのアクセスを提供します。HMACを利用して、オプションのソルトを含むinKeyを導出鍵に変換し、outに保存します。ハッシュタイプは、0またはNULLが指定された場合、デフォルトでMD5になります。
HMAC設定オプションは--enable-hmacデフォルトでオン、またはソースを直接ビルドする場合はHAVE_HKDFです。
\return 0 指定された入力で鍵の生成に成功した場合に返されます。
\return BAD_FUNC_ARG 無効なハッシュタイプが指定された場合に返されますtypeパラメータを参照
\return MEMORY_E メモリ割り当てエラーがある場合に返されます。
\return HMAC_MIN_KEYLEN_E FIPS実装を使用していて、指定された鍵の長さが最小許容FIPS標準より短い場合に返される可能性があります。
\param type HKDFに使用するハッシュタイプ。有効なタイプはWC_MD5、WC_SHA、WC_SHA256、WC_SHA384、WC_SHA512、WC_SHA3_224、WC_SHA3_256、WC_SHA3_384、またはWC_SHA3_512。
\param salt オプションのソルトを含むバッファへのポインタ。ソルトを使用しない場合はNULLを使用します。
\param saltSz ソルトの長さ。ソルトを使用しない場合は0を使用します。
\param inKey KDFに使用する鍵を含むバッファへのポインタ。
\param inKeySz 入力鍵の長さ。
\param out 導出鍵を保存するバッファへのポインタ。
_Example_
\code
byte key[] = { // 鍵で初期化 };
byte salt[] = { // ソルトで初期化 };
byte derivedKey[MAX_DIGEST_SIZE];
int ret = wc_HKDF_Extract(WC_SHA512, salt, sizeof(salt), key, sizeof(key),
derivedKey);
if ( ret != 0 ) {
// 導出鍵の生成エラー
}
\endcode
\sa wc_HKDF
\sa wc_HKDF_Extract_ex
\sa wc_HKDF_Expand
\sa wc_HKDF_Expand_ex
*/
int wc_HKDF_Extract(
int type,
const byte* salt, word32 saltSz,
const byte* inKey, word32 inKeySz,
byte* out);
/*!
\ingroup HMAC
\brief この関数は、HMAC鍵導出関数HKDFへのアクセスを提供します。HMACを利用して、オプションのソルトを含むinKeyを導出鍵に変換し、outに保存します。ハッシュタイプは、0またはNULLが指定された場合、デフォルトでMD5になります。これは、ヒープヒントとデバイス識別子を追加する_exバージョンです。
HMAC設定オプションは--enable-hmacデフォルトでオン、またはソースを直接ビルドする場合はHAVE_HKDFです。
\return 0 指定された入力で鍵の生成に成功した場合に返されます。
\return BAD_FUNC_ARG 無効なハッシュタイプが指定された場合に返されますtypeパラメータを参照
\return MEMORY_E メモリ割り当てエラーがある場合に返されます。
\return HMAC_MIN_KEYLEN_E FIPS実装を使用していて、指定された鍵の長さが最小許容FIPS標準より短い場合に返される可能性があります。
\param type HKDFに使用するハッシュタイプ。有効なタイプはWC_MD5、WC_SHA、WC_SHA256、WC_SHA384、WC_SHA512、WC_SHA3_224、WC_SHA3_256、WC_SHA3_384、またはWC_SHA3_512。
\param salt オプションのソルトを含むバッファへのポインタ。ソルトを使用しない場合はNULLを使用します。
\param saltSz ソルトの長さ。ソルトを使用しない場合は0を使用します。
\param inKey KDFに使用する鍵を含むバッファへのポインタ。
\param inKeySz 入力鍵の長さ。
\param out 導出鍵を保存するバッファへのポインタ。
\param heap メモリに使用するヒープヒント。NULLにできます。
\param devId 暗号コールバックまたは非同期ハードウェアで使用するID。使用しない場合はINVALID_DEVID-2に設定します。
_Example_
\code
byte key[] = { // 鍵で初期化 };
byte salt[] = { // ソルトで初期化 };
byte derivedKey[MAX_DIGEST_SIZE];
int ret = wc_HKDF_Extract_ex(WC_SHA512, salt, sizeof(salt), key, sizeof(key),
derivedKey, NULL, INVALID_DEVID);
if ( ret != 0 ) {
// 導出鍵の生成エラー
}
\endcode
\sa wc_HKDF
\sa wc_HKDF_Extract
\sa wc_HKDF_Expand
\sa wc_HKDF_Expand_ex
*/
int wc_HKDF_Extract_ex(
int type,
const byte* salt, word32 saltSz,
const byte* inKey, word32 inKeySz,
byte* out,
void* heap, int devId);
/*!
\ingroup HMAC
\brief この関数は、HMAC鍵導出関数HKDFへのアクセスを提供します。HMACを利用して、オプションの情報を含むinKeyを導出鍵に変換し、outに保存します。ハッシュタイプは、0またはNULLが指定された場合、デフォルトでMD5になります。
HMAC設定オプションは--enable-hmacデフォルトでオン、またはソースを直接ビルドする場合はHAVE_HKDFです。
\return 0 指定された入力で鍵の生成に成功した場合に返されます。
\return BAD_FUNC_ARG 無効なハッシュタイプが指定された場合に返されますtypeパラメータを参照
\return MEMORY_E メモリ割り当てエラーがある場合に返されます。
\return HMAC_MIN_KEYLEN_E FIPS実装を使用していて、指定された鍵の長さが最小許容FIPS標準より短い場合に返される可能性があります。
\param type HKDFに使用するハッシュタイプ。有効なタイプはWC_MD5、WC_SHA、WC_SHA256、WC_SHA384、WC_SHA512、WC_SHA3_224、WC_SHA3_256、WC_SHA3_384、またはWC_SHA3_512。
\param inKey KDFに使用する鍵を含むバッファへのポインタ。
\param inKeySz 入力鍵の長さ。
\param info オプションの追加情報を含むバッファへのポインタ。追加情報を追加しない場合はNULLを使用します。
\param infoSz 追加情報の長さ。追加情報を使用しない場合は0を使用します。
\param out 導出鍵を保存するバッファへのポインタ。
\param outSz 生成された鍵を保存する出力バッファで利用可能なスペース。
_Example_
\code
byte key[] = { // 鍵で初期化 };
byte salt[] = { // ソルトで初期化 };
byte derivedKey[MAX_DIGEST_SIZE];
int ret = wc_HKDF_Expand(WC_SHA512, key, sizeof(key), NULL, 0,
derivedKey, sizeof(derivedKey));
if ( ret != 0 ) {
// 導出鍵の生成エラー
}
\endcode
\sa wc_HKDF
\sa wc_HKDF_Extract
\sa wc_HKDF_Extract_ex
\sa wc_HKDF_Expand_ex
*/
int wc_HKDF_Expand(
int type,
const byte* inKey, word32 inKeySz,
const byte* info, word32 infoSz,
byte* out, word32 outSz);
/*!
\ingroup HMAC
\brief この関数は、HMAC鍵導出関数HKDFへのアクセスを提供します。HMACを利用して、オプションの情報を含むinKeyを導出鍵に変換し、outに保存します。ハッシュタイプは、0またはNULLが指定された場合、デフォルトでMD5になります。これは、ヒープヒントとデバイス識別子を追加する_exバージョンです。
HMAC設定オプションは--enable-hmacデフォルトでオン、またはソースを直接ビルドする場合はHAVE_HKDFです。
\return 0 指定された入力で鍵の生成に成功した場合に返されます。
\return BAD_FUNC_ARG 無効なハッシュタイプが指定された場合に返されますtypeパラメータを参照
\return MEMORY_E メモリ割り当てエラーがある場合に返されます。
\return HMAC_MIN_KEYLEN_E FIPS実装を使用していて、指定された鍵の長さが最小許容FIPS標準より短い場合に返される可能性があります。
\param type HKDFに使用するハッシュタイプ。有効なタイプはWC_MD5、WC_SHA、WC_SHA256、WC_SHA384、WC_SHA512、WC_SHA3_224、WC_SHA3_256、WC_SHA3_384、またはWC_SHA3_512。
\param inKey KDFに使用する鍵を含むバッファへのポインタ。
\param inKeySz 入力鍵の長さ。
\param info オプションの追加情報を含むバッファへのポインタ。追加情報を追加しない場合はNULLを使用します。
\param infoSz 追加情報の長さ。追加情報を使用しない場合は0を使用します。
\param out 導出鍵を保存するバッファへのポインタ。
\param outSz 生成された鍵を保存する出力バッファで利用可能なスペース。
\param heap メモリに使用するヒープヒント。NULLにできます。
\param devId 暗号コールバックまたは非同期ハードウェアで使用するID。使用しない場合はINVALID_DEVID-2に設定します。
_Example_
\code
byte key[] = { // 鍵で初期化 };
byte salt[] = { // ソルトで初期化 };
byte derivedKey[MAX_DIGEST_SIZE];
int ret = wc_HKDF_Expand_ex(WC_SHA512, key, sizeof(key), NULL, 0,
derivedKey, sizeof(derivedKey), NULL, INVALID_DEVID);
if ( ret != 0 ) {
// 導出鍵の生成エラー
}
\endcode
\sa wc_HKDF
\sa wc_HKDF_Extract
\sa wc_HKDF_Extract_ex
\sa wc_HKDF_Expand
*/
int wc_HKDF_Expand_ex(
int type,
const byte* inKey, word32 inKeySz,
const byte* info, word32 infoSz,
byte* out, word32 outSz,
void* heap, int devId);
/*!
\ingroup HMAC
\brief この関数は、TLS v1.3鍵導出のためのRFC 5869 HMACベース抽出拡張鍵導出関数HKDFへのアクセスを提供します。
\return 0 指定された入力で鍵の生成に成功した場合に返されます。
\return BAD_FUNC_ARG 無効なハッシュタイプが指定された場合に返されますtypeパラメータを参照
\return MEMORY_E メモリ割り当てエラーがある場合に返されます。
\return HMAC_MIN_KEYLEN_E FIPS実装を使用していて、指定された鍵の長さが最小許容FIPS標準より短い場合に返される可能性があります。
\param prk 生成された疑似ランダム鍵。
\param salt ソルト。
\param saltLen ソルトの長さ。
\param ikm 鍵材料の出力へのポインタ。
\param ikmLen 入力鍵材料バッファの長さ。
\param digest HKDFに使用するハッシュタイプ。有効なタイプはWC_SHA256、WC_SHA384、またはWC_SHA512。
_Example_
\code
byte secret[] = { // ランダム鍵で初期化 };
byte salt[] = { // オプションのソルトで初期化 };
byte masterSecret[MAX_DIGEST_SIZE];
int ret = wc_Tls13_HKDF_Extract(secret, salt, sizeof(salt), 0,
masterSecret, sizeof(masterSecret), WC_SHA512);
if ( ret != 0 ) {
// 導出鍵の生成エラー
}
\endcode
\sa wc_HKDF
\sa wc_HKDF_Extract
\sa wc_HKDF_Extract_ex
\sa wc_HKDF_Expand
\sa wc_Tls13_HKDF_Extract_ex
*/
int wc_Tls13_HKDF_Extract(
byte* prk,
const byte* salt, word32 saltLen,
byte* ikm, word32 ikmLen, int digest);
/*!
\ingroup HMAC
\brief この関数は、TLS v1.3鍵導出のためのRFC 5869 HMACベース抽出拡張鍵導出関数HKDFへのアクセスを提供します。これは、ヒープヒントとデバイス識別子を追加する_exバージョンです。
\return 0 指定された入力で鍵の生成に成功した場合に返されます。
\return BAD_FUNC_ARG 無効なハッシュタイプが指定された場合に返されますtypeパラメータを参照
\return MEMORY_E メモリ割り当てエラーがある場合に返されます。
\return HMAC_MIN_KEYLEN_E FIPS実装を使用していて、指定された鍵の長さが最小許容FIPS標準より短い場合に返される可能性があります。
\param prk 生成された疑似ランダム鍵。
\param salt ソルト。
\param saltLen ソルトの長さ。
\param ikm 鍵材料の出力へのポインタ。
\param ikmLen 入力鍵材料バッファの長さ。
\param digest HKDFに使用するハッシュタイプ。有効なタイプはWC_SHA256、WC_SHA384、またはWC_SHA512。
\param heap メモリに使用するヒープヒント。NULLにできます。
\param devId 暗号コールバックまたは非同期ハードウェアで使用するID。使用しない場合はINVALID_DEVID-2に設定します。
_Example_
\code
byte secret[] = { // ランダム鍵で初期化 };
byte salt[] = { // オプションのソルトで初期化 };
byte masterSecret[MAX_DIGEST_SIZE];
int ret = wc_Tls13_HKDF_Extract_ex(secret, salt, sizeof(salt), 0,
masterSecret, sizeof(masterSecret), WC_SHA512, NULL, INVALID_DEVID);
if ( ret != 0 ) {
// 導出鍵の生成エラー
}
\endcode
\sa wc_HKDF
\sa wc_HKDF_Extract
\sa wc_HKDF_Extract_ex
\sa wc_HKDF_Expand
\sa wc_Tls13_HKDF_Extract
*/
int wc_Tls13_HKDF_Extract_ex(
byte* prk,
const byte* salt, word32 saltLen,
byte* ikm, word32 ikmLen, int digest,
void* heap, int devId);
/*!
\ingroup HMAC
\brief HMAC、ソルト、ラベル、および情報を使用してデータを拡張します。TLS v1.3は鍵導出のためにこの関数を定義しています。これは、ヒープヒントとデバイス識別子を追加する_exバージョンです。
\return 0 指定された入力で鍵の生成に成功した場合に返されます。
\return BAD_FUNC_ARG 無効なハッシュタイプが指定された場合に返されますtypeパラメータを参照
\return MEMORY_E メモリ割り当てエラーがある場合に返されます。
\return HMAC_MIN_KEYLEN_E FIPS実装を使用していて、指定された鍵の長さが最小許容FIPS標準より短い場合に返される可能性があります。
\param okm 生成された疑似ランダム鍵 - 出力鍵材料。
\param okmLen 生成された疑似ランダム鍵の長さ - 出力鍵材料。
\param prk ソルト - 疑似ランダム鍵。
\param prkLen ソルトの長さ - 疑似ランダム鍵。
\param protocol TLSプロトコルラベル。
\param protocolLen TLSプロトコルラベルの長さ。
\param info 拡張する情報。
\param infoLen 情報の長さ。
\param digest HKDFに使用するハッシュタイプ。有効なタイプはWC_SHA256、WC_SHA384、またはWC_SHA512。
\param heap メモリに使用するヒープヒント。NULLにできます。
\param devId 暗号コールバックまたは非同期ハードウェアで使用するID。使用しない場合はINVALID_DEVID-2に設定します。
\sa wc_HKDF
\sa wc_HKDF_Extract
\sa wc_HKDF_Extract_ex
\sa wc_HKDF_Expand
\sa wc_Tls13_HKDF_Expand_Label
\sa wc_Tls13_HKDF_Expand_Label_Alloc
*/
int wc_Tls13_HKDF_Expand_Label_ex(
byte* okm, word32 okmLen,
const byte* prk, word32 prkLen,
const byte* protocol, word32 protocolLen,
const byte* label, word32 labelLen,
const byte* info, word32 infoLen,
int digest,
void* heap, int devId);
/*!
\ingroup HMAC
\brief HMAC、ソルト、ラベル、および情報を使用してデータを拡張します。TLS v1.3は鍵導出のためにこの関数を定義しています。
\return 0 指定された入力で鍵の生成に成功した場合に返されます。
\return BAD_FUNC_ARG 無効なハッシュタイプが指定された場合に返されますtypeパラメータを参照
\return MEMORY_E メモリ割り当てエラーがある場合に返されます。
\return HMAC_MIN_KEYLEN_E FIPS実装を使用していて、指定された鍵の長さが最小許容FIPS標準より短い場合に返される可能性があります。
\param okm 生成された疑似ランダム鍵 - 出力鍵材料。
\param okmLen 生成された疑似ランダム鍵の長さ - 出力鍵材料。
\param prk ソルト - 疑似ランダム鍵。
\param prkLen ソルトの長さ - 疑似ランダム鍵。
\param protocol TLSプロトコルラベル。
\param protocolLen TLSプロトコルラベルの長さ。
\param info 拡張する情報。
\param infoLen 情報の長さ。
\param digest HKDFに使用するハッシュタイプ。有効なタイプはWC_SHA256、WC_SHA384、またはWC_SHA512。
\sa wc_HKDF
\sa wc_HKDF_Extract
\sa wc_HKDF_Extract_ex
\sa wc_HKDF_Expand
\sa wc_Tls13_HKDF_Expand_Label_ex
\sa wc_Tls13_HKDF_Expand_Label_Alloc
*/
int wc_Tls13_HKDF_Expand_Label(
byte* okm, word32 okmLen,
const byte* prk, word32 prkLen,
const byte* protocol, word32 protocolLen,
const byte* label, word32 labelLen,
const byte* info, word32 infoLen,
int digest);
/*!
\ingroup HMAC
\brief この関数はwc_Tls13_HKDF_Expand_Label()と非常に似ていますが、通常使用されるスタックスペースが十分でない場合にメモリを割り当てます。HMAC、ソルト、ラベル、および情報を使用してデータを拡張します。TLS v1.3は鍵導出のためにこの関数を定義しています。これは、ヒープヒントとデバイス識別子を追加する_exバージョンです。
\return 0 指定された入力で鍵の生成に成功した場合に返されます。
\return BAD_FUNC_ARG 無効なハッシュタイプが指定された場合に返されますtypeパラメータを参照
\return MEMORY_E メモリ割り当てエラーがある場合に返されます。
\return HMAC_MIN_KEYLEN_E FIPS実装を使用していて、指定された鍵の長さが最小許容FIPS標準より短い場合に返される可能性があります。
\param okm 生成された疑似ランダム鍵 - 出力鍵材料。
\param okmLen 生成された疑似ランダム鍵の長さ - 出力鍵材料。
\param prk ソルト - 疑似ランダム鍵。
\param prkLen ソルトの長さ - 疑似ランダム鍵。
\param protocol TLSプロトコルラベル。
\param protocolLen TLSプロトコルラベルの長さ。
\param info 拡張する情報。
\param infoLen 情報の長さ。
\param digest HKDFに使用するハッシュタイプ。有効なタイプはWC_SHA256、WC_SHA384、またはWC_SHA512。
\param heap メモリに使用するヒープヒント。NULLにできます。
\sa wc_HKDF
\sa wc_HKDF_Extract
\sa wc_HKDF_Extract_ex
\sa wc_HKDF_Expand
\sa wc_Tls13_HKDF_Expand_Label
\sa wc_Tls13_HKDF_Expand_Label_ex
*/
int wc_Tls13_HKDF_Expand_Label_Alloc(
byte* okm, word32 okmLen,
const byte* prk, word32 prkLen,
const byte* protocol, word32 protocolLen,
const byte* label, word32 labelLen,
const byte* info, word32 infoLen,
int digest, void* heap);

View File

@@ -1,8 +1,11 @@
/*!
\ingroup IoTSafe
\brief この関数は与えられたコンテキストでIoTセーフサポートを有効にします。
\param ctx IOTセーフサポートを有効にする必要があるWOLFSSL_CTXオブジェクトへのポインタ
\return 0 成功した
\brief この関数は、指定されたコンテキストでIoT-Safeサポートを有効にします。
\param ctx IoT-safeサポートを有効にする必要があるWOLFSSL_CTXオブジェクトへのポインタ
\return 0 成功時
\return WC_HW_E ハードウェアエラー時
_Example_
\code
WOLFSSL_CTX *ctx;
@@ -11,6 +14,7 @@
return NULL;
wolfSSL_CTX_iotsafe_enable(ctx);
\endcode
\sa wolfSSL_iotsafe_on
\sa wolfIoTSafe_SetCSIM_read_cb
\sa wolfIoTSafe_SetCSIM_write_cb
@@ -20,33 +24,38 @@ int wolfSSL_CTX_iotsafe_enable(WOLFSSL_CTX *ctx);
/*!
\ingroup IoTSafe
\brief この関数は、IOT-SAFE TLSコールバックを特定のSSLセッションに接続します。
\brief スロットのIDが1バイトの長さの場合SSLセッションをIoT-Safeアプレットに接続するように呼び出す必要があります。IOTセーフスロットのIDが2バイト以上の場合、\ REF WOLFSSL_IOTSAFE_ON_EX「WOLFSSL_IOTSAFE_ON_EX」を使用する必要があります。
\param ssl コールバックが有効になるWolfSSLオブジェクトへのポインタ
\param privkey_id ホストの秘密鍵を含むIOTセーフなアプレットスロットのID
\param ecdh_keypair_slot ECDH鍵ペアを保存するためのIoT安全アプレットスロットのID
\param peer_pubkey_slot ECDH用の他のエンドポイントの公開鍵を保存するためのIOT-SAFEアプレットスロットのID
\param peer_cert_slot 検証のための他のエンドポイントの公開鍵を保存するためのIOTセーフなアプレットスロットのID
\return 0 成功すると
\return NOT_COMPILED_IN habe_pk_callbacksが無効になっている場合
\brief この関数は、IoT-Safe TLSコールバックを指定されたSSLセッションに接続します。
\brief これは、スロットのIDが1バイトの場合SSLセッションをIoT-Safeアプレットに接続するために呼び出す必要があります。
IoT-SAFEスロットのIDが2バイト以上の場合は、代わりに\ref wolfSSL_iotsafe_on_ex "wolfSSL_iotsafe_on_ex()"を使用する必要があります。
\param ssl コールバックが有効になるWOLFSSLオブジェクトへのポインタ
\param privkey_id ホストの秘密鍵を含むiot-safeアプレットスロットのID
\param ecdh_keypair_slot ECDH鍵ペアを格納するiot-safeアプレットスロットのID
\param peer_pubkey_slot ECDH用に他のエンドポイントの公開鍵を格納するiot-safeアプレットスロットのID
\param peer_cert_slot 検証用に他のエンドポイントの公開鍵を格納するiot-safeアプレットスロットのID
\return 0 成功時
\return NOT_COMPILED_IN HAVE_PK_CALLBACKSが無効な場合
\return BAD_FUNC_ARG sslポインタが無効な場合
_Example_
\code
// Define key ids for IoT-Safe
// IoT-Safe用の鍵IDを定義
#define PRIVKEY_ID 0x02
#define ECDH_KEYPAIR_ID 0x03
#define PEER_PUBKEY_ID 0x04
#define PEER_CERT_ID 0x05
// Create new ssl session
// 新しいsslセッションを作成
WOLFSSL *ssl;
ssl = wolfSSL_new(ctx);
if (!ssl)
return NULL;
// Enable IoT-Safe and associate key slots
// IoT-Safeを有効にして鍵スロットを関連付け
ret = wolfSSL_CTX_iotsafe_enable(ctx);
if (ret == 0) {
ret = wolfSSL_iotsafe_on(ssl, PRIVKEY_ID, ECDH_KEYPAIR_ID, PEER_PUBKEY_ID, PEER_CERT_ID);
}
\endcode
\sa wolfSSL_iotsafe_on_ex
\sa wolfSSL_CTX_iotsafe_enable
*/
@@ -56,18 +65,23 @@ int wolfSSL_iotsafe_on(WOLFSSL *ssl, byte privkey_id,
/*!
\ingroup IoTSafe
\brief この関数は、IOT-SAFE TLSコールバックを特定のSSLセッションに接続します。これは、IOTセーフスロットのIDを参照で渡すことができ、IDフィールドの長さをパラメータ "id_size"で指定できます。
\param ssl コールバックが有効になるWolfSSLオブジェクトへのポインタ
\param privkey_id ホストの秘密鍵を含むIoTセーフアプレットスロットのIDへのポインタ
\param ecdh_keypair_slot ECDH鍵ペアを保存するIOT-SafeアプレットスロットのIDへのポインタ
\param peer_pubkey_slot ECDH用の他のエンドポイントの公開鍵を保存するIOTセーフアプレットスロットのIDへのポインタ
\param peer_cert_slot 検証のために他のエンドポイントの公開鍵を保存するためのIOT-SAFEアプレットスロットのIDへのポインタ
\param id_size 各スロットIDのサイズ
\return 0 成功すると
\return NOT_COMPILED_IN habe_pk_callbacksが無効になっている場合
\brief この関数は、IoT-Safe TLSコールバックを指定されたSSLセッションに接続します。
これは\ref wolfSSL_iotsafe_on "wolfSSL_iotsafe_on"と同等ですが、IoT-SAFEスロットのIDを参照渡しでき、IDフィールドの長さをパラメータ"id_size"で指定できる点が異なります。
\param ssl コールバックが有効になるWOLFSSLオブジェクトへのポインタ
\param privkey_id ホストの秘密鍵を含むiot-safeアプレットスロットのIDへのポインタ
\param ecdh_keypair_slot ECDH鍵ペアを格納するiot-safeアプレットスロットIDへのポインタ
\param peer_pubkey_slot ECDH用に他のエンドポイントの公開鍵を格納するiot-safeアプレットスロットのIDへのポインタ
\param peer_cert_slot 検証用に他のエンドポイントの公開鍵を格納するiot-safeアプレットスロットのIDへのポインタ
\param id_size 各スロットIDのサイズ
\return 0 成功時
\return NOT_COMPILED_IN HAVE_PK_CALLBACKSが無効な場合
\return BAD_FUNC_ARG sslポインタが無効な場合
_Example_
\code
// Define key ids for IoT-Safe (16 bit, little endian)
// IoT-Safe用の鍵IDを定義(16ビット、リトルエンディアン)
#define PRIVKEY_ID 0x0201
#define ECDH_KEYPAIR_ID 0x0301
#define PEER_PUBKEY_ID 0x0401
@@ -81,17 +95,18 @@ int wolfSSL_iotsafe_on(WOLFSSL *ssl, byte privkey_id,
// Create new ssl session
// 新しいsslセッションを作成
WOLFSSL *ssl;
ssl = wolfSSL_new(ctx);
if (!ssl)
return NULL;
// Enable IoT-Safe and associate key slots
// IoT-Safeを有効にして鍵スロットを関連付け
ret = wolfSSL_CTX_iotsafe_enable(ctx);
if (ret == 0) {
ret = wolfSSL_CTX_iotsafe_on_ex(ssl, &privkey, &ecdh_keypair, &peer_pubkey, &peer_cert, ID_SIZE);
}
\endcode
\sa wolfSSL_iotsafe_on
\sa wolfSSL_CTX_iotsafe_enable
*/
@@ -101,29 +116,35 @@ int wolfSSL_iotsafe_on_ex(WOLFSSL *ssl, byte *privkey_id,
/*!
\ingroup IoTSafe
\brief AT + CSIMコマンドのリードコールバックを関連付けます。この入力関数は通常、モデムと通信するUARTチャネルの読み取りイベントに関連付けられています。読み取りコールバックが関連付けられているのは、同時にIoT-Safeサポートを使用するすべてのコンテキストのグローバルと変更です。
\brief AT+CSIMコマンド用の読み取りコールバックを関連付けます。この入力関数は通常、モデムと通信するUARTチャネルの読み取りイベントに関連付けられます。関連付けられる読み取りコールバックはグローバルで、同時にIoT-safeサポートを使用するすべてのコンテキストに対して変更されます。
\param rf UART読み取りイベントに関連付けられる読み取りコールバック。コールバック関数は2つの引数(buf、len)を受け取り、lenまで読み取られた文字数を返します。改行文字に遭遇すると、コールバックはこれまでに受信した文字数(改行文字を含む)を返す必要があります。
_Example_
\code
// USART read function, defined elsewhere
// USART読み取り関数、他の場所で定義
int usart_read(char *buf, int len);
wolfIoTSafe_SetCSIM_read_cb(usart_read);
\endcode
\sa wolfIoTSafe_SetCSIM_write_cb
*/
void wolfIoTSafe_SetCSIM_read_cb(wolfSSL_IOTSafe_CSIM_read_cb rf);
/*!
\ingroup IoTSafe
\brief AT + CSIMコマンドの書き込みコールバックを関連付けます。この出力関数は通常、モデムと通信するUARTチャネル上のライトイベントに関連付けられています。Write Callbackが関連付けられているのは、同時にIoT-Safeサポートを使用するすべてのコンテキストのグローバルと変更です。
\brief AT+CSIMコマンドの書き込みコールバックを関連付けます。この出力関数は通常、モデムと通信するUARTチャネルの書き込みイベントに関連付けられます。関連付けられる書き込みコールバックはグローバルで、同時にIoT-safeサポートを使用するすべてのコンテキストに対して変更されます。
\param rf UART書き込みイベントに関連付けられる書き込みコールバック。コールバック関数は2つの引数(buf、len)を受け取り、lenまで書き込まれた文字数を返します。
_Example_
\code
// USART write function, defined elsewhere
// USART書き込み関数、他の場所で定義
int usart_write(const char *buf, int len);
wolfIoTSafe_SetCSIM_write_cb(usart_write);
\endcode
\sa wolfIoTSafe_SetCSIM_read_cb
*/
void wolfIoTSafe_SetCSIM_write_cb(wolfSSL_IOTSafe_CSIM_write_cb wf);
@@ -132,25 +153,31 @@ void wolfIoTSafe_SetCSIM_write_cb(wolfSSL_IOTSafe_CSIM_write_cb wf);
/*!
\ingroup IoTSafe
\brief IOTセーフ機能getrandomを使用して、指定されたサイズのランダムバッファを生成します。この関数は、WolfCrypt RNGオブジェクトによって自動的に使用されます。
\param out ランダムなバイトシーケンスが格納されているバッファ。
\param sz 生成するランダムシーケンスのサイズ(バイト単位)
\brief IoT-Safe関数GetRandomを使用して、指定されたサイズのランダムバッファを生成します。この関数はwolfCrypt RNGオブジェクトによって自動的に使用されます。
\param out ランダムなバイトシーケンスが格納されるバッファ。
\param sz 生成するランダムシーケンスのサイズ(バイト単位)
\return 0 成功時
*/
int wolfIoTSafe_GetRandom(unsigned char* out, word32 sz);
/*!
\ingroup IoTSafe
\brief IOT-Safeアプレット上のファイルに保存されている証明書をインポートし、ローカルにメモリに保存します。1バイトのファイルIDフィールドで動作します。
\param id 証明書が保存されているIOTセーフ・アプレットのファイルID
\param output 証明書がインポートされるバッファー
\param sz バッファ出力で使用可能な最大サイズ
\return the 輸入された証明書の長さ
\brief IoT-Safeアプレット上のファイルに保存されている証明書をインポートし、メモリ内にローカルに保存します。1バイトのファイルIDフィールドで動作します。
\param id 証明書が保存されているIoT-Safeアプレット内のファイルID
\param output 証明書がインポートされるバッファ
\param sz バッファoutputで利用可能な最大サイズ
\return インポートされた証明書の長さ
\return < 0 失敗の場合
_Example_
\code
#define CRT_CLIENT_FILE_ID 0x03
unsigned char cert_buffer[2048];
// Get the certificate into the buffer
// 証明書をバッファに取得
cert_buffer_size = wolfIoTSafe_GetCert(CRT_CLIENT_FILE_ID, cert_buffer, 2048);
if (cert_buffer_size < 1) {
printf("Bad cli cert\n");
@@ -158,7 +185,7 @@ int wolfIoTSafe_GetRandom(unsigned char* out, word32 sz);
}
printf("Loaded Client certificate from IoT-Safe, size = %lu\n", cert_buffer_size);
// Use the certificate buffer as identity for the TLS client context
// TLSクライアントコンテキストのアイデンティティとして証明書バッファを使用
if (wolfSSL_CTX_use_certificate_buffer(cli_ctx, cert_buffer,
cert_buffer_size, SSL_FILETYPE_ASN1) != SSL_SUCCESS) {
printf("Cannot load client cert\n");
@@ -166,173 +193,204 @@ int wolfIoTSafe_GetRandom(unsigned char* out, word32 sz);
}
printf("Client certificate successfully imported.\n");
\endcode
*/
int wolfIoTSafe_GetCert(uint8_t id, unsigned char *output, unsigned long sz);
*/
int wolfIoTSafe_GetCert(byte id, unsigned char *output, unsigned long sz);
/*!
\ingroup IoTSafe
\brief IOT-Safeアプレット上のファイルに保存されている証明書をインポートし、ローカルにメモリに保存します。\ ref wolfiotsafe_getcert "wolfiotsafe_getcert"と同等です。ただし、2バイト以上のファイルIDで呼び出すことができます。
\param id 証明書が保存されているIOT-SAFEアプレットのファイルIDへのポインタ
\param id_sz ファイルIDのサイズバイト数
\param output 証明書がインポートされるバッファー
\param sz バッファ出力で使用可能な最大サイズ
\return the 輸入された証明書の長さ
\brief IoT-Safeアプレット上のファイルに保存されている証明書をインポートし、メモリ内にローカルに保存します。\ref wolfIoTSafe_GetCert "wolfIoTSafe_GetCert"と同等です、2バイト以上のファイルIDで呼び出すことができます。
\param id 証明書が保存されているIoT-Safeアプレット内のファイルIDへのポインタ
\param id_sz ファイルIDのサイズ
\param output 証明書がインポートされるバッファ
\param sz バッファoutputで利用可能な最大サイズ
\return インポートされた証明書の長さ
\return < 0 失敗の場合
_Example_
\code
#define CRT_CLIENT_FILE_ID 0x0302
#define ID_SIZE (sizeof(word16))
unsigned char cert_buffer[2048];
word16 client_file_id = CRT_CLIENT_FILE_ID;
// Get the certificate into the buffer
cert_buffer_size = wolfIoTSafe_GetCert_ex(&client_file_id, ID_SIZE, cert_buffer, 2048);
if (cert_buffer_size < 1) {
printf("Bad cli cert\n");
return -1;
}
printf("Loaded Client certificate from IoT-Safe, size = %lu\n", cert_buffer_size);
// Use the certificate buffer as identity for the TLS client context
if (wolfSSL_CTX_use_certificate_buffer(cli_ctx, cert_buffer,
cert_buffer_size, SSL_FILETYPE_ASN1) != SSL_SUCCESS) {
printf("Cannot load client cert\n");
return -1;
}
printf("Client certificate successfully imported.\n");
\endcode
*/
int wolfIoTSafe_GetCert_ex(uint8_t *id, uint16_t id_sz, unsigned char *output, unsigned long sz);
/*!
\ingroup IoTSafe
\brief IOTセーフアプレットに格納されているECC 256ビット公開鍵をECC_Keyオブジェクトにインポートします。
\param key IOT-SAFEアプレットからインポートされたキーを含むECC_KEYオブジェクト
\param id 公開鍵が保存されているIOTセーフアプレットのキーID
\return 0 成功すると
\brief IoT-Safeアプレットに保存されているECC 256ビット公開鍵をecc_keyオブジェクトにインポートします。
\param key IoT-Safeアプレットからインポートされた鍵を含むecc_keyオブジェクト
\param id 公開鍵が保存されているIoT-Safeアプレット内の鍵ID
\return 0 成功時
\return < 0 失敗の場合
\sa wc_iotsafe_ecc_export_public
\sa wc_iotsafe_ecc_export_private
*/
int wc_iotsafe_ecc_import_public(ecc_key *key, byte key_id);
/*!
\ingroup IoTSafe
\brief ECC_KEYオブジェクトからIOT-SAFEアプレットの書き込み可能なパブリックキースロットにECC 256ビット公開鍵をエクスポートします。
\param key エクスポートする鍵を含むecc_keyオブジェクト
\param id 公開鍵が保存されているIOTセーフアプレットのキーID
\return 0 成功すると
\brief ECC 256ビット公開鍵をecc_keyオブジェクトからIoT-Safeアプレットの書き込み可能な公開鍵スロットにエクスポートします。
\param key エクスポートする鍵を含むecc_keyオブジェクト
\param id 公開鍵が保存されるIoT-Safeアプレット内の鍵ID
\return 0 成功
\return < 0 失敗の場合
\sa wc_iotsafe_ecc_import_public_ex
\sa wc_iotsafe_ecc_export_private
*/
int wc_iotsafe_ecc_export_public(ecc_key *key, byte key_id);
/*!
\ingroup IoTSafe
\brief ECC_KEYオブジェクトからIOT-SAFEアプレットの書き込み可能なパブリックキースロットにECC 256ビット公開鍵をエクスポートします。\ ref WC_IOTSAFE_ECC_IMPORT_PUBLIC「WC_IOTSAFE_ECC_IMPORT_PUBLIC」と同等のものは、2バイト以上のキーIDで呼び出すことができる点を除きます。
\param key エクスポートする鍵を含むecc_keyオブジェクト
\param id 公開鍵が保存されるIOTセーフアプレットのキーIDへのポインタ
\param id_size キーIDサイズ
\return 0 成功すると
\brief ECC 256ビット公開鍵をecc_keyオブジェクトからIoT-Safeアプレットの書き込み可能な公開鍵スロットにエクスポートします。
\ref wc_iotsafe_ecc_import_public "wc_iotsafe_ecc_import_public"と同等ですが、2バイト以上の鍵IDで呼び出すことができます。
\param key エクスポートする鍵を含むecc_keyオブジェクト
\param id 公開鍵が保存されるIoT-Safeアプレット内の鍵IDへのポインタ
\param id_size 鍵IDのサイズ
\return 0 成功時
\return < 0 失敗の場合
\sa wc_iotsafe_ecc_import_public
\sa wc_iotsafe_ecc_export_private
*/
int wc_iotsafe_ecc_import_public_ex(ecc_key *key, byte *key_id, word16 id_size);
/*!
\ingroup IoTSafe
\brief ECC 256ビットキーをECC_KEYオブジェクトからIOTセーフアプレット書き込み可能なプライベートキースロットにエクスポートします。
\param key エクスポートする鍵を含むecc_keyオブジェクト
\param id 秘密鍵が保存されるIOTセーフアプレットのキーID
\return 0 成功すると
\brief ECC 256ビット鍵をecc_keyオブジェクトからIoT-Safeアプレット内の書き込み可能な秘密鍵スロットにエクスポートします。
\param key エクスポートする鍵を含むecc_keyオブジェクト
\param id 秘密鍵が保存されるIoT-Safeアプレット内の鍵ID
\return 0 成功
\return < 0 失敗の場合
\sa wc_iotsafe_ecc_export_private_ex
\sa wc_iotsafe_ecc_import_public
\sa wc_iotsafe_ecc_export_public
*/
int wc_iotsafe_ecc_export_private(ecc_key *key, byte key_id);
/*!
\ingroup IoTSafe
\brief ECC 256ビットキーをECC_KEYオブジェクトからIOTセーフアプレット書き込み可能なプライベートキースロットにエクスポートします。\ ref WC_IOTSAFE_ECC_EXPORT_PRIVATE「WC_IOTSAFE_ECC_EXPORT_PRIVATE」を除き、2バイト以上のキーIDを呼び出すことができる点を除き、
\param key エクスポートする鍵を含むecc_keyオブジェクト
\param id 秘密鍵が保存されるIOTセーフアプレットのキーIDへのポインタ
\param id_size キーIDサイズ
\return 0 成功すると
\brief ECC 256ビット鍵をecc_keyオブジェクトからIoT-Safeアプレット内の書き込み可能な秘密鍵スロットにエクスポートします。
\ref wc_iotsafe_ecc_export_private "wc_iotsafe_ecc_export_private"と同等ですが、2バイト以上の鍵IDで呼び出すことができます。
\param key エクスポートする鍵を含むecc_keyオブジェクト
\param id 秘密鍵が保存されるIoT-Safeアプレット内の鍵IDへのポインタ
\param id_size 鍵IDのサイズ
\return 0 成功時
\return < 0 失敗の場合
\sa wc_iotsafe_ecc_export_private
\sa wc_iotsafe_ecc_import_public
\sa wc_iotsafe_ecc_export_public
*/
int wc_iotsafe_ecc_export_private_ex(ecc_key *key, byte *key_id, word16 id_size);
/*!
\ingroup IoTSafe
\brief 事前計算された256ビットハッシュに署名して、IOT-SAFEアプレットに、以前に保存されたプライベートキー、またはプリプロビジョニングされています。
\param in サインするメッセージハッシュを含むバッファへのポインタ
\param inlen 署名するメッセージの長さ
\param out 生成された署名を保存するためのバッファ
\param outlen 出力バッファの最大長。バイトを保存します
\param id メッセージ署名の生成に成功したときに書き込まれたペイロードに署名するための秘密鍵を含むスロットのIOTセーフアプレットのキーID
\return 0 成功すると
\brief IoT-Safeアプレット内に事前に保存または事前プロビジョニングされた秘密鍵を使用して、事前計算されたハッシュに署名します。
\param in 署名するメッセージハッシュを含むバッファへのポインタ
\param inlen 署名するメッセージハッシュの長さ
\param out 生成された署名を格納するバッファ
\param outlen 出力バッファの最大長。メッセージ署名の生成に成功すると、outに書き込まれたバイト数を格納します
\param id ペイロードに署名する秘密鍵を含むスロットのIoT-Safeアプレット内の鍵ID
\return 0 成功時
\return < 0 失敗の場合
\sa wc_iotsafe_ecc_sign_hash_ex
\sa wc_iotsafe_ecc_verify_hash
\sa wc_iotsafe_ecc_gen_k
*/
int wc_iotsafe_ecc_sign_hash(byte *in, word32 inlen, byte *out, word32 *outlen, byte key_id);
/*!
\ingroup IoTSafe
\brief 事前計算された256ビットハッシュに署名して、IOT-SAFEアプレットに、以前に保存されたプライベートキー、またはプリプロビジョニングされています。\ ref wc_iotsafe_ecc_sign_hash "wc_iotsafe_ecc_sign_hash"と同等です。ただし、2バイト以上のキーIDで呼び出すことができます。
\param in サインするメッセージハッシュを含むバッファへのポインタ
\param inlen 署名するメッセージの長さ
\param out 生成された署名を保存するためのバッファ
\param outlen 出力バッファの最大長。バイトを保存します
\param id 秘密鍵を含むスロットのIOT-SAFEアプレットのキーIDへのポインタメッセージ署名の生成に成功したときに書き込まれるペイロードに署名する
\param id_size キーIDサイズ
\return 0 成功すると
\brief IoT-Safeアプレット内に事前に保存または事前プロビジョニングされた秘密鍵を使用して、事前計算されたハッシュに署名します。\ref wc_iotsafe_ecc_sign_hash "wc_iotsafe_ecc_sign_hash"と同等です、2バイト以上のIDで呼び出すことができます。
\param in 署名するメッセージハッシュを含むバッファへのポインタ
\param inlen 署名するメッセージハッシュの長さ
\param out 生成された署名を格納するバッファ
\param outlen 出力バッファの最大長。メッセージ署名の生成に成功すると、outに書き込まれたバイト数を格納します
\param id ペイロードに署名する秘密鍵を含むスロットのIoT-Safeアプレット内の鍵IDへのポインタ
\param id_size 鍵IDのサイズ
\return 0 成功時
\return < 0 失敗の場合
\sa wc_iotsafe_ecc_sign_hash
\sa wc_iotsafe_ecc_verify_hash
\sa wc_iotsafe_ecc_gen_k
*/
int wc_iotsafe_ecc_sign_hash_ex(byte *in, word32 inlen, byte *out, word32 *outlen, byte *key_id, word16 id_size);
/*!
\ingroup IoTSafe
\brief 予め計算された256ビットハッシュに対するECCシグネチャを、IOT-SAFEアプレット内のプリプロビジョニング、またはプロビジョニングされたプリプロビジョニングを使用します。結果はRESに書き込まれます。1有効、0無効です。有効なテストに戻り値を使用しないでください。Resのみを使用してください。
\return 0 成功すると(署名が無効であっても)
\return < 故障の場合は0
\brief IoT-Safeアプレット内に事前に保存または事前プロビジョニングされた公開鍵を使用して、事前計算されたハッシュに対するECC署名を検証します。結果はresに書き込まれます。1有効、0無効です。
注意: 有効性をテストするために戻り値を使用しないでください。resのみを使用してください。
\return 0 成功時(署名が有効でない場合でも)
\return < 0 失敗の場合。
\param sig 検証する署名を含むバッファ
\param hash 署名されたハッシュメッセージダイジェスト
\param hashlen ハッシュの長さオクテット
\param res 署名の結果、1 ==有効、0 ==無効
\param hash 署名されたハッシュ(メッセージダイジェスト)
\param hashlen ハッシュの長さ(オクテット)
\param res 署名の結果、1==有効、0==無効
\param key_id IoT-Safeアプレット内に公開ECC鍵が保存されているスロットのID
\sa wc_iotsafe_ecc_verify_hash_ex
\sa wc_iotsafe_ecc_sign_hash
\sa wc_iotsafe_ecc_gen_k
*/
int wc_iotsafe_ecc_verify_hash(byte *sig, word32 siglen, byte *hash, word32 hashlen, int *res, byte key_id);
/*!
\ingroup IoTSafe
\brief 予め計算された256ビットハッシュに対するECCシグネチャを、IOT-SAFEアプレット内のプリプロビジョニング、またはプロビジョニングされたプリプロビジョニングを使用します。結果はRESに書き込まれます。1有効、0無効です。有効なテストに戻り値を使用しないでください。Resのみを使用してください。\ ref WC_IOTSAFE_ECC_VERIFY_HASH "WC_IOTSAFE_ECC_VERIFY_HASH"を除き、2バイト以上のキーIDで呼び出すことができる点を除きます。
\return 0 成功すると(署名が無効であっても)
\return < 故障の場合は0
\brief IoT-Safeアプレット内に事前に保存または事前プロビジョニングされた公開鍵を使用して、事前計算されたハッシュに対するECC署名を検証します。結果はresに書き込まれます。1有効、0無効です。
注意: 有効性をテストするために戻り値を使用しないでください。resのみを使用してください。
\ref wc_iotsafe_ecc_verify_hash "wc_iotsafe_ecc_verify_hash"と同等ですが、2バイト以上の鍵IDで呼び出すことができます。
\return 0 成功時(署名が有効でない場合でも)
\return < 0 失敗の場合。
\param sig 検証する署名を含むバッファ
\param hash 署名されたハッシュメッセージダイジェスト
\param hashlen ハッシュの長さオクテット
\param res 署名の結果、1 ==有効、0 ==無効
\param key_id パブリックECCキーがIOTセーフアプレットに保存されているスロットのID
\param hash 署名されたハッシュ(メッセージダイジェスト)
\param hashlen ハッシュの長さ(オクテット)
\param res 署名の結果、1==有効、0==無効
\param key_id IoT-Safeアプレット内に公開ECC鍵が保存されているスロットのID
\param id_size 鍵IDのサイズ
\sa wc_iotsafe_ecc_verify_hash
\sa wc_iotsafe_ecc_sign_hash
\sa wc_iotsafe_ecc_gen_k
*/
int wc_iotsafe_ecc_verify_hash_ex(byte *sig, word32 siglen, byte *hash, word32 hashlen, int *res, byte *key_id, word16 id_size);
/*!
\ingroup IoTSafe
\brief ECC 256ビットのキーペアを生成し、それを(書き込み可能なスロットにIOTセーフなアプレットに保存します。
\param key_id ECCキーペアがIOTセーフアプレットに格納されているスロットのID。
\return 0 成功すると
\brief ECC 256ビットペアを生成し、IoT-Safeアプレット内の(書き込み可能な)スロットに保存します。
\param key_id IoT-Safeアプレット内にECC鍵ペアが保存されているスロットのID。
\return 0 成功
\return < 0 失敗の場合。
\sa wc_iotsafe_ecc_gen_k_ex
\sa wc_iotsafe_ecc_sign_hash
\sa wc_iotsafe_ecc_verify_hash
@@ -341,12 +399,15 @@ int wc_iotsafe_ecc_gen_k(byte key_id);
/*!
\ingroup IoTSafe
\brief ECC 256ビットのキーペアを生成し、それを(書き込み可能なスロットにIOTセーフなアプレットに保存します。\ ref wc_iotsafe_ecc_gen_k "wc_iotsafe_ecc_gen_k"と同等です。ただし、2バイト以上のキーIDで呼び出すことができます。
\param key_id ECCキーペアがIOTセーフアプレットに格納されているスロットのID
\param id_size キーIDサイズ
\return 0 成功すると
\brief ECC 256ビットペアを生成し、IoT-Safeアプレット内の(書き込み可能な)スロットに保存します。
\ref wc_iotsafe_ecc_gen_k "wc_iotsafe_ecc_gen_k"と同等ですが、2バイト以上の鍵IDで呼び出すことができます
\param key_id IoT-Safeアプレット内にECC鍵ペアが保存されているスロットのID。
\param id_size 鍵IDのサイズ
\return 0 成功時
\return < 0 失敗の場合。
\sa wc_iotsafe_ecc_gen_k
\sa wc_iotsafe_ecc_sign_hash_ex
\sa wc_iotsafe_ecc_verify_hash_ex
*/
int wc_iotsafe_ecc_gen_k(byte key_id);
int wc_iotsafe_ecc_gen_k(byte key_id);

View File

@@ -0,0 +1,258 @@
/*!
\ingroup SrtpKdf
\brief この関数はSRTP KDFアルゴリズムを使用して鍵を導出します。
\return 0 鍵の導出に成功した場合に返されます。
\return BAD_FUNC_ARG keyまたはsaltがNULLの場合に返されます
\return BAD_FUNC_ARG 鍵の長さが16、24、または32でない場合に返されます。
\return BAD_FUNC_ARG saltSzが14より大きい場合に返されます。
\return BAD_FUNC_ARG kdrIdxが-1未満または24より大きい場合に返されます。
\return MEMORY_E 動的メモリ割り当ての失敗時。
\param [in] key 暗号化で使用する鍵。
\param [in] keySz 鍵のサイズ(バイト単位)。
\param [in] salt ランダムな非秘密値。
\param [in] saltSz ランダム値のサイズ(バイト単位)。
\param [in] kdrIdx 鍵導出率。-1の場合kdr = 0、それ以外の場合kdr = 2^kdrIdx。
\param [in] idx XORするインデックス値。
\param [out] key1 最初の鍵。ラベル値は0x00。
\param [in] key1Sz 最初の鍵のサイズ(バイト単位)。
\param [out] key2 2番目の鍵。ラベル値は0x01。
\param [in] key2Sz 2番目の鍵のサイズ(バイト単位)。
\param [out] key3 3番目の鍵。ラベル値は0x02。
\param [in] key3Sz 3番目の鍵のサイズ(バイト単位)。
_Example_
\code
unsigned char key[16] = { ... };
unsigned char salt[14] = { ... };
unsigned char idx[6] = { ... };
unsigned char keyE[16];
unsigned char keyA[20];
unsigned char keyS[14];
int kdrIdx = 0; // インデックスのすべてを使用
int ret;
ret = wc_SRTP_KDF(key, sizeof(key), salt, sizeof(salt), kdrIdx, idx,
keyE, sizeof(keyE), keyA, sizeof(keyA), keyS, sizeof(keyS));
if (ret != 0) {
WOLFSSL_MSG("wc_SRTP_KDF failed");
}
\endcode
\sa wc_SRTCP_KDF
\sa wc_SRTP_KDF_label
\sa wc_SRTCP_KDF_label
\sa wc_SRTP_KDF_kdr_to_idx
*/
int wc_SRTP_KDF(const byte* key, word32 keySz, const byte* salt, word32 saltSz,
int kdrIdx, const byte* idx, byte* key1, word32 key1Sz, byte* key2,
word32 key2Sz, byte* key3, word32 key3Sz);
/*!
\ingroup SrtpKdf
\brief この関数はSRTCP KDFアルゴリズムを使用して鍵を導出します。
\return 0 鍵の導出に成功した場合に返されます。
\return BAD_FUNC_ARG keyまたはsaltがNULLの場合に返されます
\return BAD_FUNC_ARG 鍵の長さが16、24、または32でない場合に返されます。
\return BAD_FUNC_ARG saltSzが14より大きい場合に返されます。
\return BAD_FUNC_ARG kdrIdxが-1未満または24より大きい場合に返されます。
\return MEMORY_E 動的メモリ割り当ての失敗時。
\param [in] key 暗号化で使用する鍵。
\param [in] keySz 鍵のサイズ(バイト単位)。
\param [in] salt ランダムな非秘密値。
\param [in] saltSz ランダム値のサイズ(バイト単位)。
\param [in] kdrIdx 鍵導出率。-1の場合kdr = 0、それ以外の場合kdr = 2^kdrIdx。
\param [in] idx XORするインデックス値。
\param [out] key1 最初の鍵。ラベル値は0x00。
\param [in] key1Sz 最初の鍵のサイズ(バイト単位)。
\param [out] key2 2番目の鍵。ラベル値は0x01。
\param [in] key2Sz 2番目の鍵のサイズ(バイト単位)。
\param [out] key3 3番目の鍵。ラベル値は0x02。
\param [in] key3Sz 3番目の鍵のサイズ(バイト単位)。
_Example_
\code
unsigned char key[16] = { ... };
unsigned char salt[14] = { ... };
unsigned char idx[4] = { ... };
unsigned char keyE[16];
unsigned char keyA[20];
unsigned char keyS[14];
int kdrIdx = 0; // インデックスのすべてを使用
int ret;
ret = wc_SRTCP_KDF(key, sizeof(key), salt, sizeof(salt), kdrIdx, idx,
keyE, sizeof(keyE), keyA, sizeof(keyA), keyS, sizeof(keyS));
if (ret != 0) {
WOLFSSL_MSG("wc_SRTP_KDF failed");
}
\endcode
\sa wc_SRTP_KDF
\sa wc_SRTP_KDF_label
\sa wc_SRTCP_KDF_label
\sa wc_SRTP_KDF_kdr_to_idx
*/
int wc_SRTCP_KDF(const byte* key, word32 keySz, const byte* salt, word32 saltSz,
int kdrIdx, const byte* idx, byte* key1, word32 key1Sz, byte* key2,
word32 key2Sz, byte* key3, word32 key3Sz);
/*!
\ingroup SrtpKdf
\brief この関数はSRTP KDFアルゴリズムを使用してラベル付きの鍵を導出します。
\return 0 鍵の導出に成功した場合に返されます。
\return BAD_FUNC_ARG key、salt、またはoutKeyがNULLの場合に返されます
\return BAD_FUNC_ARG 鍵の長さが16、24、または32でない場合に返されます。
\return BAD_FUNC_ARG saltSzが14より大きい場合に返されます。
\return BAD_FUNC_ARG kdrIdxが-1未満または24より大きい場合に返されます。
\return MEMORY_E 動的メモリ割り当ての失敗時。
\param [in] key 暗号化で使用する鍵。
\param [in] keySz 鍵のサイズ(バイト単位)。
\param [in] salt ランダムな非秘密値。
\param [in] saltSz ランダム値のサイズ(バイト単位)。
\param [in] kdrIdx 鍵導出率。-1の場合kdr = 0、それ以外の場合kdr = 2^kdrIdx。
\param [in] idx XORするインデックス値。
\param [in] label 鍵を導出する際に使用するラベル。
\param [out] outKey 導出された鍵。
\param [in] outKeySz 導出された鍵のサイズ(バイト単位)。
_Example_
\code
unsigned char key[16] = { ... };
unsigned char salt[14] = { ... };
unsigned char idx[6] = { ... };
unsigned char keyE[16];
int kdrIdx = 0; // インデックスのすべてを使用
int ret;
ret = wc_SRTP_KDF_label(key, sizeof(key), salt, sizeof(salt), kdrIdx, idx,
WC_SRTP_LABEL_ENCRYPTION, keyE, sizeof(keyE));
if (ret != 0) {
WOLFSSL_MSG("wc_SRTP_KDF failed");
}
\endcode
\sa wc_SRTP_KDF
\sa wc_SRTCP_KDF
\sa wc_SRTCP_KDF_label
\sa wc_SRTP_KDF_kdr_to_idx
*/
int wc_SRTP_KDF_label(const byte* key, word32 keySz, const byte* salt,
word32 saltSz, int kdrIdx, const byte* idx, byte label, byte* outKey,
word32 outKeySz);
/*!
\ingroup SrtpKdf
\brief この関数はSRTCP KDFアルゴリズムを使用してラベル付きの鍵を導出します。
\return 0 鍵の導出に成功した場合に返されます。
\return BAD_FUNC_ARG key、salt、またはoutKeyがNULLの場合に返されます
\return BAD_FUNC_ARG 鍵の長さが16、24、または32でない場合に返されます。
\return BAD_FUNC_ARG saltSzが14より大きい場合に返されます。
\return BAD_FUNC_ARG kdrIdxが-1未満または24より大きい場合に返されます。
\return MEMORY_E 動的メモリ割り当ての失敗時。
\param [in] key 暗号化で使用する鍵。
\param [in] keySz 鍵のサイズ(バイト単位)。
\param [in] salt ランダムな非秘密値。
\param [in] saltSz ランダム値のサイズ(バイト単位)。
\param [in] kdrIdx 鍵導出率。-1の場合kdr = 0、それ以外の場合kdr = 2^kdrIdx。
\param [in] idx XORするインデックス値。
\param [in] label 鍵を導出する際に使用するラベル。
\param [out] outKey 導出された鍵。
\param [in] outKeySz 導出された鍵のサイズ(バイト単位)。
_Example_
\code
unsigned char key[16] = { ... };
unsigned char salt[14] = { ... };
unsigned char idx[4] = { ... };
unsigned char keyE[16];
int kdrIdx = 0; // インデックスのすべてを使用
int ret;
ret = wc_SRTCP_KDF_label(key, sizeof(key), salt, sizeof(salt), kdrIdx,
idx, WC_SRTCP_LABEL_ENCRYPTION, keyE, sizeof(keyE));
if (ret != 0) {
WOLFSSL_MSG("wc_SRTP_KDF failed");
}
\endcode
\sa wc_SRTP_KDF
\sa wc_SRTCP_KDF
\sa wc_SRTP_KDF_label
\sa wc_SRTP_KDF_kdr_to_idx
*/
int wc_SRTCP_KDF_label(const byte* key, word32 keySz, const byte* salt,
word32 saltSz, int kdrIdx, const byte* idx, byte label, byte* outKey,
word32 outKeySz);
/*!
\ingroup SrtpKdf
\brief この関数はkdr値をSRTP/SRTCP KDF APIで使用するインデックスに変換します。
\return インデックスとしての鍵導出率。
\param [in] kdr 変換する鍵導出率。
_Example_
\code
word32 kdr = 0x00000010;
int kdrIdx;
int ret;
kdrIdx = wc_SRTP_KDF_kdr_to_idx(kdr);
\endcode
\sa wc_SRTP_KDF
\sa wc_SRTCP_KDF
\sa wc_SRTP_KDF_label
\sa wc_SRTCP_KDF_label
*/
int wc_SRTP_KDF_kdr_to_idx(word32 kdr);
/**
* \brief SP800-56Cオプション1で規定されている単一ステップ鍵導出関数(KDF)を実行します。
*
* \param [in] z 入力鍵材料。
* \param [in] zSz 入力鍵材料のサイズ。
* \param [in] fixedInfo KDFに含める固定情報。
* \param [in] fixedInfoSz 固定情報のサイズ。
* \param [in] derivedSecretSz 導出される秘密の希望サイズ。
* \param [in] hashType KDFで使用するハッシュアルゴリズム。
* \param [out] output 導出された秘密を格納するバッファ。
* \param [in] outputSz 出力バッファのサイズ。
*
* \return 0 KDF操作が成功した場合、
* \return BAD_FUNC_ARG 入力パラメータが無効な場合。
* \return 負のエラーコード KDF操作が失敗した場合。
*
* _Example_
\code
unsigned char z[32] = { ... };
unsigned char fixedInfo[16] = { ... };
unsigned char output[32];
int ret;
ret = wc_KDA_KDF_onestep(z, sizeof(z), fixedInfo, sizeof(fixedInfo),
sizeof(output), WC_HASH_TYPE_SHA256, output, sizeof(output));
if (ret != 0) {
WOLFSSL_MSG("wc_KDA_KDF_onestep failed");
}
\endcode
*/
int wc_KDA_KDF_onestep(const byte* z, word32 zSz,
const byte* fixedInfo, word32 fixedInfoSz, word32 derivedSecretSz,
enum wc_HashType hashType, byte* output, word32 outputSz);

View File

@@ -1,23 +1,30 @@
/*!
\ingroup Logging
\brief この関数は、WolfSSLログメッセージを処理するために使用されるロギングコールバックを登録します。デフォルトでは、システムがIT fprintfをSTDERRにサポートしている場合は、この関数を使用することによって、ユーザーによって何でも実行できます。
\return Success 成功した場合、この関数は0を返します。
\return BAD_FUNC_ARG 関数ポインタが提供されていない場合に返されるエラーです。
\brief この関数は、wolfSSLログメッセージを処理するために使用されるロギングコールバックを登録します。デフォルトでは、システムがサポートしている場合、stderrへのfprintf()が使用されますが、この関数を使用することでユーザーは任意の処理を行うことができます。
\return Success 成功した場合、この関数は0を返します。
\return BAD_FUNC_ARG 関数ポインタが提供されていない場合に返されるエラーです。
\param log_function ロギングコールバックとして登録する関数。
関数シグネチャは上記のプロトタイプに従う必要があります。
_Example_
\code
int ret = 0;
// Logging callback prototype
// ロギングコールバックのプロトタイプ
void MyLoggingCallback(const int logLevel, const char* const logMessage);
// Register the custom logging callback with wolfSSL
// カスタムロギングコールバックをwolfSSLに登録
ret = wolfSSL_SetLoggingCb(MyLoggingCallback);
if (ret != 0) {
// failed to set logging callback
// ロギングコールバックの設定に失敗
}
void MyLoggingCallback(const int logLevel, const char* const logMessage)
{
// custom logging function
// カスタムロギング関数
}
\endcode
\sa wolfSSL_Debugging_ON
\sa wolfSSL_Debugging_OFF
*/
@@ -25,13 +32,19 @@ int wolfSSL_SetLoggingCb(wolfSSL_Logging_cb log_function);
/*!
\ingroup Debug
\brief ビルド時にロギングが有効になっている場合、この関数は実行時にロギングをオンにします。ビルド時にログ記録を有効にするには--enable-debugまたはdebug_wolfsslを定義します。
\return 0 成功すると
\return NOT_COMPILED_IN このビルドに対してロギングが有効になっていない場合は返されるエラーです。
\brief ビルド時にロギングが有効になっている場合、この関数は実行時にロギングを有効にします。ビルド時にロギングを有効にするには、--enable-debugを使用するか、DEBUG_WOLFSSLを定義します
\return 0 成功時。
\return NOT_COMPILED_IN このビルドでロギングが有効になっていない場合に返されるエラーです。
\param none パラメータなし。
_Example_
\code
wolfSSL_Debugging_ON();
\endcode
\sa wolfSSL_Debugging_OFF
\sa wolfSSL_SetLoggingCb
*/
@@ -39,13 +52,19 @@ int wolfSSL_Debugging_ON(void);
/*!
\ingroup Debug
\brief この関数はランタイムロギングメッセージをオフにします。彼らがすでに消えている場合は、行動はとられません。
\return none いいえ返します
\brief この関数は、実行時のロギングメッセージを無効にします。既に無効になっている場合、何も行われません
\return none 戻り値なし。
\param none パラメータなし。
_Example_
\code
wolfSSL_Debugging_OFF();
\endcode
\sa wolfSSL_Debugging_ON
\sa wolfSSL_SetLoggingCb
*/
void wolfSSL_Debugging_OFF(void);
void wolfSSL_Debugging_OFF(void);

View File

@@ -1,7 +1,12 @@
/*!
\ingroup MD2
\brief この関数はMD2を初期化します。これはWC_MD2HASHによって自動的に呼び出されます。
\return 0 初期化に成功したときに返されます
\brief この関数はmd2を初期化します。これはwc_Md2Hashによって自動的に呼び出されます
\return 0 初期化に成功した場合に返されます
\param md2 暗号化に使用するmd2構造体へのポインタ
_Example_
\code
md2 md2[1];
@@ -13,6 +18,7 @@
wc_Md2Final(md2, hash);
}
\endcode
\sa wc_Md2Hash
\sa wc_Md2Update
\sa wc_Md2Final
@@ -21,14 +27,19 @@ void wc_InitMd2(Md2*);
/*!
\ingroup MD2
\brief 長さLENの提供されたバイト配列を絶えずハッシュするように呼び出すことができます。
\return 0 データをダイジェストに正常に追加すると返されます。
\param md2 暗号化に使用するMD2構造へのポインタ
\param data ハッシュするデータ
\brief 長さlenの提供されたバイト配列を継続的にハッシュするために呼び出すことができます。
\return 0 ダイジェストへのデータ追加に成功した場合に返されます。
\param md2 暗号化に使用するmd2構造体へのポインタ
\param data ハッシュ化されるデータ
\param len ハッシュ化されるデータの長さ
_Example_
\code
md2 md2[1];
byte data[] = { }; // Data to be hashed
byte data[] = { }; // ハッシュ化されるデータ
word32 len = sizeof(data);
if ((ret = wc_InitMd2(md2)) != 0) {
@@ -39,6 +50,7 @@ void wc_InitMd2(Md2*);
wc_Md2Final(md2, hash);
}
\endcode
\sa wc_Md2Hash
\sa wc_Md2Final
\sa wc_InitMd2
@@ -47,13 +59,18 @@ void wc_Md2Update(Md2* md2, const byte* data, word32 len);
/*!
\ingroup MD2
\brief データのハッシュを確定します。結果はハッシュに入れられます。
\return 0 ファイナライズに成功したときに返されます。
\param md2 暗号化に使用するMD2構造へのポインタ
\brief データのハッシュ化を完了します。結果はhashに格納されます。
\return 0 完了に成功した場合に返されます。
\param md2 暗号化に使用するmd2構造体へのポインタ
\param hash ハッシュ値を保持するバイト配列。
_Example_
\code
md2 md2[1];
byte data[] = { }; // Data to be hashed
byte data[] = { }; // ハッシュ化されるデータ
word32 len = sizeof(data);
if ((ret = wc_InitMd2(md2)) != 0) {
@@ -64,6 +81,7 @@ void wc_Md2Update(Md2* md2, const byte* data, word32 len);
wc_Md2Final(md2, hash);
}
\endcode
\sa wc_Md2Hash
\sa wc_Md2Final
\sa wc_InitMd2
@@ -72,17 +90,23 @@ void wc_Md2Final(Md2* md2, byte* hash);
/*!
\ingroup MD2
\brief 利便性機能は、すべてのハッシュを処理し、その結果をハッシュに入れます。
\return 0 データを正常にハッシュしたときに返されます。
\return Memory_E メモリエラー、メモリを割り当てることができません。これは、小さなスタックオプションが有効になっているだけです。
\param data ハッシュへのデータ
\param len データの長さ
\brief 便利な関数で、すべてのハッシュ化を処理し、結果をhashに格納します。
\return 0 データのハッシュ化に成功した場合に返されます。
\return Memory_E メモリエラー、メモリを割り当てることができません。これはスモールスタックオプションが有効な場合にのみ発生します。
\param data ハッシュ化するデータ
\param len データの長さ
\param hash ハッシュ値を保持するバイト配列。
_Example_
\code
none
\endcode
\sa wc_Md2Hash
\sa wc_Md2Final
\sa wc_InitMd2
*/
int wc_Md2Hash(const byte* data, word32 len, byte* hash);
int wc_Md2Hash(const byte* data, word32 len, byte* hash);

View File

@@ -1,7 +1,12 @@
/*!
\ingroup MD4
\brief この関数はMD4を初期化します。これはWC_MD4HASHによって自動的に呼び出されます。
\return 0 初期化に成功したときに返されます
\brief この関数はmd4を初期化します。これはwc_Md4Hashによって自動的に呼び出されます
\return 0 初期化に成功した場合に返されます
\param md4 暗号化に使用するmd4構造体へのポインタ
_Example_
\code
md4 md4[1];
@@ -13,6 +18,7 @@
wc_Md4Final(md4, hash);
}
\endcode
\sa wc_Md4Hash
\sa wc_Md4Update
\sa wc_Md4Final
@@ -21,14 +27,19 @@ void wc_InitMd4(Md4*);
/*!
\ingroup MD4
\brief 長さLENの提供されたバイト配列を絶えずハッシュするように呼び出すことができます。
\return 0 データをダイジェストに正常に追加すると返されます。
\param md4 暗号化に使用するMD4構造へのポインタ
\param data ハッシュするデータ
\brief 長さlenの提供されたバイト配列を継続的にハッシュするために呼び出すことができます。
\return 0 ダイジェストへのデータ追加に成功した場合に返されます。
\param md4 暗号化に使用するmd4構造体へのポインタ
\param data ハッシュ化されるデータ
\param len ハッシュ化されるデータの長さ
_Example_
\code
md4 md4[1];
byte data[] = { }; // Data to be hashed
byte data[] = { }; // ハッシュ化されるデータ
word32 len = sizeof(data);
if ((ret = wc_InitMd4(md4)) != 0) {
@@ -39,6 +50,7 @@ void wc_InitMd4(Md4*);
wc_Md4Final(md4, hash);
}
\endcode
\sa wc_Md4Hash
\sa wc_Md4Final
\sa wc_InitMd4
@@ -47,9 +59,14 @@ void wc_Md4Update(Md4* md4, const byte* data, word32 len);
/*!
\ingroup MD4
\brief データのハッシュを確定します。結果はハッシュに入れられます。
\return 0 ファイナライズに成功したときに返されます。
\param md4 暗号化に使用するMD4構造へのポインタ
\brief データのハッシュ化を完了します。結果はhashに格納されます。
\return 0 完了に成功した場合に返されます。
\param md4 暗号化に使用するmd4構造体へのポインタ
\param hash ハッシュ値を保持するバイト配列。
_Example_
\code
md4 md4[1];
@@ -61,8 +78,9 @@ void wc_Md4Update(Md4* md4, const byte* data, word32 len);
wc_Md4Final(md4, hash);
}
\endcode
\sa wc_Md4Hash
\sa wc_Md4Final
\sa wc_InitMd4
*/
void wc_Md4Final(Md4* md4, byte* hash);
void wc_Md4Final(Md4* md4, byte* hash);

View File

@@ -1,8 +1,13 @@
/*!
\ingroup MD5
\brief この関数はMD5を初期化します。これはWC_MD5HASHによって自動的に呼び出されます。
\return 0 初期化に成功したときに返されます。
\return BAD_FUNC_ARG MD5構造がNULL値として渡された場合に返されます。
\brief この関数はmd5を初期化します。これはwc_Md5Hashによって自動的に呼び出されます。
\return 0 正常に初期化された場合に返されます。
\return BAD_FUNC_ARG Md5構造体がNULL値として渡された場合に返されます。
\param md5 暗号化に使用するmd5構造体へのポインタ
_Example_
\code
Md5 md5;
@@ -13,14 +18,15 @@
else {
ret = wc_Md5Update(&md5, data, len);
if (ret != 0) {
// Md5 Update Failure Case.
// Md5 Update失敗のケース。
}
ret = wc_Md5Final(&md5, hash);
if (ret != 0) {
// Md5 Final Failure Case.
// Md5 Final失敗のケース。
}
}
\endcode
\sa wc_Md5Hash
\sa wc_Md5Update
\sa wc_Md5Final
@@ -29,15 +35,20 @@ int wc_InitMd5(wc_Md5*);
/*!
\ingroup MD5
\brief 長さLENの提供されたバイト配列を絶えずハッシュするように呼び出すことができます。
\return 0 データをダイジェストに正常に追加すると返されます。
\return BAD_FUNC_ARG MD5構造がNULLの場合、またはデータがNULLで、LENがゼロより大きい場合に返されます。DATAパラメーターがNULLでLENがゼロの場合、関数はエラーを返してはいけません。
\param md5 暗号化に使用するMD5構造へのポインタ
\param data ハッシュするデータ
\brief 長さlenの提供されたバイト配列を継続的にハッシュするために呼び出すことができます。
\return 0 ダイジェストへのデータ追加に成功した場合に返されます。
\return BAD_FUNC_ARG Md5構造体がNULLの場合、またはdataがNULLでlenがゼロより大きい場合に返されます。dataパラメータがNULLでlenがゼロの場合、関数はエラーを返すべきではありません。
\param md5 暗号化に使用するmd5構造体へのポインタ
\param data ハッシュ化されるデータ
\param len ハッシュ化されるデータの長さ
_Example_
\code
Md5 md5;
byte data[] = { Data to be hashed };
byte data[] = { ハッシュ化されるデータ };
word32 len = sizeof(data);
if ((ret = wc_InitMd5(&md5)) != 0) {
@@ -46,14 +57,15 @@ int wc_InitMd5(wc_Md5*);
else {
ret = wc_Md5Update(&md5, data, len);
if (ret != 0) {
// Md5 Update Error Case.
// Md5 Updateエラーのケース。
}
ret = wc_Md5Final(&md5, hash);
if (ret != 0) {
// Md5 Final Error Case.
// Md5 Finalエラーのケース。
}
}
\endcode
\sa wc_Md5Hash
\sa wc_Md5Final
\sa wc_InitMd5
@@ -62,14 +74,19 @@ int wc_Md5Update(wc_Md5* md5, const byte* data, word32 len);
/*!
\ingroup MD5
\brief データのハッシュを確定します。結果はハッシュに入れられます。MD5構造体がリセットされます。注この関数は、habe_intel_qaが定義されている場合にintelqasymmd5を呼び出す結果も返します。
\return 0 ファイナライズに成功したときに返されます。
\return BAD_FUNC_ARG MD5構造またはハッシュポインタがNULLで渡された場合に返されます。
\param md5 暗号化に使用するMD5構造へのポインタ
\brief データのハッシュ化を完了します。結果はhashに格納されます。Md5構造体はリセットされます。注意この関数は、HAVE_INTEL_QAが定義されている場合にIntelQaSymMd5()を呼び出した結果も返します。
\return 0 正常に完了した場合に返されます。
\return BAD_FUNC_ARG Md5構造体またはhashポインタがNULLで渡された場合に返されます。
\param md5 暗号化に使用するmd5構造体へのポインタ
\param hash ハッシュ値を保持するバイト配列。
_Example_
\code
md5 md5[1];
byte data[] = { Data to be hashed };
byte data[] = { ハッシュ化されるデータ };
word32 len = sizeof(data);
if ((ret = wc_InitMd5(md5)) != 0) {
@@ -78,14 +95,15 @@ int wc_Md5Update(wc_Md5* md5, const byte* data, word32 len);
else {
ret = wc_Md5Update(md5, data, len);
if (ret != 0) {
// Md5 Update Failure Case.
// Md5 Update失敗のケース。
}
ret = wc_Md5Final(md5, hash);
if (ret != 0) {
// Md5 Final Failure Case.
// Md5 Final失敗のケース。
}
}
\endcode
\sa wc_Md5Hash
\sa wc_InitMd5
\sa wc_Md5GetHash
@@ -94,12 +112,17 @@ int wc_Md5Final(wc_Md5* md5, byte* hash);
/*!
\ingroup MD5
\brief MD5構造をリセットします。注これは、wolfssl_ti_hashが定義されている場合にのみサポートされています。
\return none いいえ返します。
\brief Md5構造体をリセットします。注意これはWOLFSSL_TI_HASHが定義されている場合にのみサポートされます。
\return none 戻り値なし。
\param md5 リセットするMd5構造体へのポインタ。
_Example_
\code
Md5 md5;
byte data[] = { Data to be hashed };
byte data[] = { ハッシュ化されるデータ };
word32 len = sizeof(data);
if ((ret = wc_InitMd5(&md5)) != 0) {
@@ -111,6 +134,7 @@ int wc_Md5Final(wc_Md5* md5, byte* hash);
wc_Md5Free(&md5);
}
\endcode
\sa wc_InitMd5
\sa wc_Md5Update
\sa wc_Md5Final
@@ -119,9 +143,14 @@ void wc_Md5Free(wc_Md5*);
/*!
\ingroup MD5
\brief ハッシュデータを取得します。結果はハッシュに入れられます。MD5構造はリセットされません。
\return none いいえリターン
\param md5 暗号化に使用するMD5構造へのポインタ。
\brief ハッシュデータを取得します。結果はhashに格納されます。Md5構造体はリセットされません。
\return none 戻り値なし
\param md5 暗号化に使用するmd5構造体へのポインタ。
\param hash ハッシュ値を保持するバイト配列。
_Example_
\code
md5 md5[1];
@@ -133,8 +162,9 @@ void wc_Md5Free(wc_Md5*);
wc_Md5GetHash(md5, hash);
}
\endcode
\sa wc_Md5Hash
\sa wc_Md5Final
\sa wc_InitMd5
*/
int wc_Md5GetHash(wc_Md5* md5, byte* hash);
int wc_Md5GetHash(wc_Md5* md5, byte* hash);

View File

@@ -1,14 +1,21 @@
/*!
\ingroup Memory
\brief この関数はmallocと似ていますが、WolfSSLが使用するように構成されているメモリ割り当て関数を呼び出します。デフォルトでは、WolfSSLはmallocを使用します。これは、WolfSSLメモリ抽象化レイヤを使用して変更できます - wolfssl_setAllocatorを参照してください。注WOLFSSL_MALLOCは、WOLFSSLによって直接呼び出されませんが、代わりにMacro XMallocによって呼び出されます。デフォルトのビルドの場合、size引数のみが存在します。wolfssl_static_memoryビルドを使用する場合は、ヒープとタイプ引数が含まれます。
\return pointer 成功した場合、この関数は割り当てられたメモリへのポインタを返します
\return error エラーがある場合は、NULLが返されます。
\param size 割り当てるメモリのサイズ(バイト)
\param heap メモリに使用するヒントヒント。nullになることができます
\brief この関数はmalloc()に似ていますが、wolfSSLが使用するように設定されたメモリ割り当て関数を呼び出します。デフォルトでは、wolfSSLはmalloc()を使用します。これはwolfSSLメモリ抽象化レイヤーを使用して変更できます - wolfSSL_SetAllocators()を参照してください。wolfSSL_Mallocは直接wolfSSLによって呼び出されるのではなく、代わりにマクロXMALLOCによって呼び出されることに注意してください
デフォルトのビルドでは、sizeパラメータのみが存在します。WOLFSSL_STATIC_MEMORYビルドを使用している場合は、heapとtypeパラメータが含まれます。
\return pointer 成功した場合、この関数は割り当てられたメモリへのポインタを返します
\return error エラーがある場合、NULLが返されます。
\param size 割り当てるメモリのバイト単位のサイズ。
\param heap メモリに使用するヒープヒント。NULLにできます。
\param type 動的タイプtypes.hのDYNAMIC_TYPE_リストを参照
_Example_
\code
int* tenInts = (int*)wolfSSL_Malloc(sizeof(int)*10);
\endcode
\sa wolfSSL_Free
\sa wolfSSL_Realloc
\sa wolfSSL_SetAllocators
@@ -20,19 +27,26 @@ void* wolfSSL_Malloc(size_t size, void* heap, int type);
/*!
\ingroup Memory
\brief この関数はfreeと似ていますが、WolfSSLが使用するように構成されているメモリフリー機能を呼び出します。デフォルトでは、WolfSSLはfreeを使用します。これは、WolfSSLメモリ抽象化レイヤを使用して変更できます - wolfssl_setAllocatorを参照してください。注WOLFSSL_FREEはWOLFSSLによって直接呼び出されませんが、代わりにマクロXFreeによって呼び出されます。デフォルトのビルドの場合、PTR引数のみが存在します。wolfssl_static_memoryビルドを使用する場合は、ヒープとタイプ引数が含まれます。
\return none いいえ返します
\param ptr 解放されるメモリへのポインタ
\param heap メモリに使用するヒントヒント。nullになることができます
\brief この関数はfree()に似ていますが、wolfSSLが使用するように設定されたメモリ解放関数を呼び出します。デフォルトでは、wolfSSLはfree()を使用します。これはwolfSSLメモリ抽象化レイヤーを使用して変更できます - wolfSSL_SetAllocators()を参照してください。wolfSSL_Freeは直接wolfSSLによって呼び出されるのではなく、代わりにマクロXFREEによって呼び出されることに注意してください
デフォルトのビルドでは、ptrパラメータのみが存在します。WOLFSSL_STATIC_MEMORYビルドを使用している場合は、heapとtypeパラメータが含まれます
\return none 戻り値なし。
\param ptr 解放するメモリへのポインタ。
\param heap メモリに使用するヒープヒント。NULLにできます。
\param type 動的タイプtypes.hのDYNAMIC_TYPE_リストを参照
_Example_
\code
int* tenInts = (int*)wolfSSL_Malloc(sizeof(int)*10);
// process data as desired
// 必要に応じてデータを処理
...
if(tenInts) {
wolfSSL_Free(tenInts);
}
\endcode
\sa wolfSSL_Alloc
\sa wolfSSL_Realloc
\sa wolfSSL_SetAllocators
@@ -44,17 +58,24 @@ void wolfSSL_Free(void *ptr, void* heap, int type);
/*!
\ingroup Memory
\brief この関数はREALLOCと似ていますが、WolfSSLが使用するように構成されているメモリ再割り当て機能を呼び出します。デフォルトでは、WolfSSLはRealLocを使用します。これは、WolfSSLメモリ抽象化レイヤを使用して変更できます - wolfssl_setAllocatorを参照してください。注WOLFSSL_REALLOCはWOLFSSLによって直接呼び出されませんが、代わりにマクロXreallocによって呼び出されます。デフォルトのビルドの場合、size引数のみが存在します。wolfssl_static_memoryビルドを使用する場合は、ヒープとタイプ引数が含まれます。
\return pointer 成功した場合、この関数はマイポイントを再割り当てするためのポインタを返します。これはPTRと同じポインタ、または新しいポインタの場所であり得る
\return Null エラーがある場合は、NULLが返されます。
\param ptr 再割り当てされているメモリへのポインタ。
\param size 割り当てるバイト数
\param heap メモリに使用するヒントヒント。nullになることができます
\brief この関数はrealloc()に似ていますが、wolfSSLが使用するように設定されたメモリ再割り当て関数を呼び出します。デフォルトでは、wolfSSLはrealloc()を使用します。これはwolfSSLメモリ抽象化レイヤーを使用して変更できます - wolfSSL_SetAllocators()を参照してください
wolfSSL_Reallocは直接wolfSSLによって呼び出されるのではなく、代わりにマクロXREALLOCによって呼び出されることに注意してください。デフォルトのビルドでは、sizeパラメータのみが存在します。WOLFSSL_STATIC_MEMORYビルドを使用している場合は、heapとtypeパラメータが含まれます。
\return pointer 成功した場合、この関数は再割り当てされたメモリへのポインタを返します。これはptrと同じポインタである場合もあれば、新しいポインタの場所である場合もあります
\return Null エラーがある場合、NULLが返されます
\param ptr 再割り当てする、以前に割り当てられたメモリへのポインタ。
\param size 割り当てるバイト数。
\param heap メモリに使用するヒープヒント。NULLにできます。
\param type 動的タイプtypes.hのDYNAMIC_TYPE_リストを参照
_Example_
\code
int* tenInts = (int*)wolfSSL_Malloc(sizeof(int)*10);
int* twentyInts = (int*)wolfSSL_Realloc(tenInts, sizeof(int)*20);
\endcode
\sa wolfSSL_Free
\sa wolfSSL_Malloc
\sa wolfSSL_SetAllocators
@@ -66,34 +87,40 @@ void* wolfSSL_Realloc(void *ptr, size_t size, void* heap, int type);
/*!
\ingroup Memory
\brief この機能は、WolfSSLが使用する割り当て関数を登録します。デフォルトでは、システムがそれをサポートしている場合、Malloc / FreeとRealLocが使用されます。この機能を使用すると、実行時にユーザーは独自のメモリハンドラをインストールできます。
\return Success 成功した場合、この関数は0を返します。
\return BAD_FUNC_ARG 関数ポインタが提供されていない場合に返されるエラーです。
\param malloc_function 使用するWolfSSLのメモリ割り当て機能関数署名は、上記のwolfssl_malloc_cbプロトタイプと一致する必要があります。
\param free_function 使用するWolfSSLのメモリフリー機能関数シグネチャは、上記のwolfssl_free_cbプロトタイプと一致する必要があります
\brief この関数は、wolfSSLが使用する割り当て関数を登録します。デフォルトでは、システムがサポートしている場合、malloc/freeとreallocが使用されます。この関数を使用すると、ユーザーは実行時に独自のメモリハンドラをインストールできます。
\return Success 成功した場合、この関数は0を返します。
\return BAD_FUNC_ARG 関数ポインタが提供されていない場合に返されるエラー
\param malloc_function wolfSSLが使用するメモリ割り当て関数。関数シグネチャは上記のwolfSSL_Malloc_cbプロトタイプと一致する必要があります。
\param free_function wolfSSLが使用するメモリ解放関数。関数シグネチャは上記のwolfSSL_Free_cbプロトタイプと一致する必要があります。
\param realloc_function wolfSSLが使用するメモリ再割り当て関数。関数シグネチャは上記のwolfSSL_Realloc_cbプロトタイプと一致する必要があります。
_Example_
\code
static void* MyMalloc(size_t size)
{
// custom malloc function
// カスタムmalloc関数
}
static void MyFree(void* ptr)
{
// custom free function
// カスタムfree関数
}
static void* MyRealloc(void* ptr, size_t size)
{
// custom realloc function
// カスタムrealloc関数
}
// Register custom memory functions with wolfSSL
// カスタムメモリ関数をwolfSSLに登録
int ret = wolfSSL_SetAllocators(MyMalloc, MyFree, MyRealloc);
if (ret != 0) {
// failed to set memory functions
// メモリ関数の設定に失敗
}
\endcode
\sa none
*/
int wolfSSL_SetAllocators(wolfSSL_Malloc_cb,
@@ -102,22 +129,30 @@ int wolfSSL_SetAllocators(wolfSSL_Malloc_cb,
/*!
\ingroup Memory
\brief この機能は、静的メモリ機能が使用されている場合(--enable-staticMemoryの場合に使用できます。メモリの「バケット」に最適なバッファサイズを示します。これにより、パーティション化された後に追加の未使用のメモリが終了しないように、バッファサイズを計算する方法が可能になります。返された値は、正の場合、使用するコンピュータのバッファサイズです。
\return Success バッファサイズ計算を正常に完了すると、正の値が返されます。この返された値は最適なバッファサイズです。
\return Failure すべての負の値はエラーの場合と見なされます。
\param buffer バッファへのポインタ
\param size バッファのサイズ
\brief この関数は、静的メモリ機能が使用されている場合に利用可能です(--enable-staticmemory。メモリ「バケット」の最適なバッファサイズを提供します。これにより、パーティション化された後に余分な未使用メモリが残らないようにバッファサイズを計算する方法が提供されます。この関数の非_exバージョンでは、コンパイル時に設定されたデフォルトのバケットと配布リストが使用されます。
返される値が正の場合、使用する計算されたバッファサイズです。
\return Success バッファサイズの計算が正常に完了すると、正の値が返されます。この返される値は最適なバッファサイズです。
\return Failure すべての負の値はエラーケースと見なされます。
\param buffer バッファへのポインタ。
\param size バッファのサイズ。
\param type 希望するメモリタイプ、つまりWOLFMEM_GENERALまたはWOLFMEM_IO_POOL。
_Example_
\code
byte buffer[1000];
word32 size = sizeof(buffer);
int optimum;
optimum = wolfSSL_StaticBufferSz(buffer, size, WOLFMEM_GENERAL);
if (optimum < 0) { //handle error case }
printf(“The optimum buffer size to make use of all memory is %d\n,
if (optimum < 0) { //エラーケースを処理 }
printf("すべてのメモリを利用するための最適なバッファサイズは %d です\n",
optimum);
...
\endcode
\sa wolfSSL_Malloc
\sa wolfSSL_Free
*/
@@ -125,21 +160,415 @@ int wolfSSL_StaticBufferSz(byte* buffer, word32 sz, int flag);
/*!
\ingroup Memory
\brief この機能は、静的メモリ機能が使用されている場合(--enable-staticMemoryの場合に使用できます。メモリの各パーティションに必要なパディングのサイズを示します。このパディングサイズは、メモリアライメントのために追加のメモリ管理構造を含む必要があるサイズになります。
\return On 正常なメモリパディング計算戻り値は正の値になります
\return All 負の値はエラーケースと見なされます。
\brief この関数は、静的メモリ機能が使用されている場合に利用可能です(--enable-staticmemory。メモリの各パーティションに必要なパディングのサイズを提供します。このパディングサイズは、メモリ管理構造体を含むために必要なサイズと、メモリアライメントのための追加分になります
\return メモリパディングの計算が成功すると、戻り値は正の値になります。
\return すべての負の値はエラーケースと見なされます。
\param none パラメータなし。
_Example_
\code
int padding;
padding = wolfSSL_MemoryPaddingSz();
if (padding < 0) { //handle error case }
printf(“The padding size needed for each \”bucket\” of memory is %d\n,
if (padding < 0) { //エラーケースを処理 }
printf("メモリの各「バケット」に必要なパディングサイズは %d です\n",
padding);
// calculation of buffer for IO POOL size is number of buckets
// times (padding + WOLFMEM_IO_SZ)
// IO POOLサイズのバッファの計算は、バケット数
// × (padding + WOLFMEM_IO_SZ)
...
\endcode
\sa wolfSSL_Malloc
\sa wolfSSL_Free
*/
int wolfSSL_MemoryPaddingSz(void);
/*!
\ingroup Memory
\brief この関数は、CTXのために静的メモリを確保するために使用されます。確保されたメモリは、CTXの存続期間中およびCTXから作成されたすべてのSSLオブジェクトに使用されます。NULLのctxポインタとwolfSSL_method_func関数を渡すことにより、CTX自体の作成も静的メモリを使用します。wolfSSL_method_funcは、WOLFSSL_METHOD* (*wolfSSL_method_func)(void* heap);の関数シグネチャを持ちます。
maxに0を渡すと、設定されていないかのように動作し、最大同時使用制限が適用されません。
渡されるflag値は、メモリの使用方法と動作中の動作を決定します。
利用可能なフラグは次のとおりです。
0 - デフォルトの一般メモリ
WOLFMEM_IO_POOL - メッセージの送受信時の入出力バッファに使用されます。一般メモリをオーバーライドするため、渡されたバッファ内のすべてのメモリがIOに使用されます。
WOLFMEM_IO_FIXED - WOLFMEM_IO_POOLと同じですが、各SSLは存続期間中に2つのバッファを保持します。
WOLFMEM_TRACK_STATS - 各SSLは実行中にメモリ統計を追跡します。
\return 成功した場合、SSL_SUCCESSが返されます。
\return すべての失敗した戻り値は0未満またはSSL_FAILUREと等しくなります。
\param ctx WOLFSSL_CTX構造体へのポインタのアドレス。
\param method プロトコルを作成する関数。ctxもNULLでない場合はNULLである必要があります
\param buf すべての操作に使用するメモリ。
\param sz 渡されるメモリバッファのサイズ。
\param flag メモリのタイプ。
\param max 最大同時操作数。
_Example_
\code
WOLFSSL_CTX* ctx;
WOLFSSL* ssl;
int ret;
unsigned char memory[MAX];
int memorySz = MAX;
unsigned char IO[MAX];
int IOSz = MAX;
int flag = WOLFMEM_IO_FIXED | WOLFMEM_TRACK_STATS;
...
// 静的メモリを使用してctxも作成、使用する一般メモリから開始
ctx = NULL:
ret = wolfSSL_CTX_load_static_memory(&ctx, wolfSSLv23_server_method_ex, memory, memorySz, 0,
MAX_CONCURRENT_HANDSHAKES);
if (ret != SSL_SUCCESS) {
// エラーケースを処理
}
// IOで使用するメモリをロード
ret = wolfSSL_CTX_load_static_memory(&ctx, NULL, IO, IOSz, flag, MAX_CONCURRENT_IO);
if (ret != SSL_SUCCESS) {
// エラーケースを処理
}
...
\endcode
\sa wolfSSL_CTX_new
\sa wolfSSL_CTX_is_static_memory
\sa wolfSSL_is_static_memory
*/
int wolfSSL_CTX_load_static_memory(WOLFSSL_CTX** ctx, wolfSSL_method_func method,
unsigned char* buf, unsigned int sz, int flag, int max);
/*!
\ingroup Memory
\brief この関数は接続の動作を変更せず、静的メモリ使用に関する情報を収集するためにのみ使用されます。
\return CTXに静的メモリを使用している場合は1の値が返されます。
\return 静的メモリを使用していない場合は0が返されます。
\param ctx wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ。
\param mem_stats 静的メモリ使用に関する情報を保持する構造体。
_Example_
\code
WOLFSSL_CTX* ctx;
int ret;
WOLFSSL_MEM_STATS mem_stats;
...
//CTXでの静的メモリに関する情報を取得
ret = wolfSSL_CTX_is_static_memory(ctx, &mem_stats);
if (ret == 1) {
// 静的メモリを使用しているケースを処理
// mem_statsの要素を出力または検査
}
if (ret == 0) {
//ctxが静的メモリを使用していないケースを処理
}
...
\endcode
\sa wolfSSL_CTX_new
\sa wolfSSL_CTX_load_static_memory
\sa wolfSSL_is_static_memory
*/
int wolfSSL_CTX_is_static_memory(WOLFSSL_CTX* ctx, WOLFSSL_MEM_STATS* mem_stats);
/*!
\ingroup Memory
\brief wolfSSL_is_static_memoryは、SSLの静的メモリ使用に関する情報を収集するために使用されます。戻り値は、静的メモリが使用されているかどうかを示し、WOLFSSL_MEM_CONN_STATSは、静的メモリをロードする際に親CTXにWOLFMEM_TRACK_STATSフラグが渡された場合にのみ入力されます。
\return CTXに静的メモリを使用している場合は1の値が返されます。
\return 静的メモリを使用していない場合は0が返されます。
\param ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
\param mem_stats 静的メモリ使用を含む構造体。
_Example_
\code
WOLFSSL* ssl;
int ret;
WOLFSSL_MEM_CONN_STATS mem_stats;
...
ret = wolfSSL_is_static_memory(ssl, mem_stats);
if (ret == 1) {
// 静的メモリの場合のケースを処理
// WOLFMEM_TRACK_STATSフラグがある場合はmem_statsの要素を調査
}
...
\endcode
\sa wolfSSL_new
\sa wolfSSL_CTX_is_static_memory
*/
int wolfSSL_is_static_memory(WOLFSSL* ssl, WOLFSSL_MEM_CONN_STATS* mem_stats);
/*!
\ingroup Memory
\brief この関数は、wolfCrypt使用のために静的メモリを確保するために使用されます。作成されたヒープヒントを関数に渡すことでメモリを使用できます。この例は、wc_InitRng_exを呼び出すときです。渡されるflag値は、メモリの使用方法と動作中の動作を決定します。一般的に、wolfCrypt操作はWOLFMEM_GENERALプールからメモリを使用します。
利用可能なフラグは次のとおりです。
WOLFMEM_GENERAL - デフォルトの一般メモリ
WOLFMEM_IO_POOL - メッセージの送受信時の入出力バッファに使用されます。一般メモリをオーバーライドするため、渡されたバッファ内のすべてのメモリがIOに使用されます。
WOLFMEM_IO_FIXED - WOLFMEM_IO_POOLと同じですが、各SSLは存続期間中に2つのバッファを保持します。
WOLFMEM_TRACK_STATS - 各SSLは実行中にメモリ統計を追跡します。
\return 成功した場合、0が返されます。
\return すべての失敗した戻り値は0未満になります。
\param hint 使用するWOLFSSL_HEAP_HINT構造体。
\param buf すべての操作に使用するメモリ。
\param sz 渡されるメモリバッファのサイズ。
\param flag メモリのタイプ。
\param max 最大同時操作数ハンドシェイク、IO
_Example_
\code
WOLFSSL_HEAP_HINT hint;
int ret;
unsigned char memory[MAX];
int memorySz = MAX;
int flag = WOLFMEM_GENERAL | WOLFMEM_TRACK_STATS;
...
// 使用するメモリをロード
ret = wc_LoadStaticMemory(&hint, memory, memorySz, flag, 0);
if (ret != SSL_SUCCESS) {
// エラーケースを処理
}
...
ret = wc_InitRng_ex(&rng, hint, 0);
// ret値をチェック
\endcode
\sa none
*/
int wc_LoadStaticMemory(WOLFSSL_HEAP_HINT* hint, unsigned char* buf, unsigned int sz,
int flag, int max);
/*!
\ingroup Memory
\brief この関数は、カスタムバケットサイズと配分を使用してwolfCrypt使用のために静的メモリを確保するために使用されます。作成されたヒープヒントを関数に渡すことでメモリを使用できます。この拡張バージョンでは、デフォルトの事前定義されたサイズを使用する代わりに、カスタムバケットサイズと配分を使用できます。
\return 成功した場合、0が返されます。
\return すべての失敗した戻り値は0未満になります。
\param hint 使用するWOLFSSL_HEAP_HINT構造体。
\param buf すべての操作に使用するメモリ。
\param sz 渡されるメモリバッファのサイズ。
\param flag メモリのタイプ。
\param max 最大同時操作数ハンドシェイク、IO
\param bucket_sizes 使用するバケットサイズの配列。
\param bucket_count 配列内のバケットサイズの数。
_Example_
\code
WOLFSSL_HEAP_HINT hint;
int ret;
unsigned char memory[MAX];
int memorySz = MAX;
int flag = WOLFMEM_GENERAL | WOLFMEM_TRACK_STATS;
word16 bucket_sizes[] = {64, 128, 256, 512, 1024};
int bucket_count = 5;
...
// カスタムバケットサイズで使用するメモリをロード
ret = wc_LoadStaticMemory_ex(&hint, memory, memorySz, flag, 0,
bucket_sizes, bucket_count);
if (ret != SSL_SUCCESS) {
// エラーケースを処理
}
...
ret = wc_InitRng_ex(&rng, hint, 0);
// ret値をチェック
\endcode
\sa wc_LoadStaticMemory
\sa wc_UnloadStaticMemory
*/
int wc_LoadStaticMemory_ex(WOLFSSL_HEAP_HINT* hint, unsigned char* buf, unsigned int sz,
int flag, int max, word16* bucket_sizes, int bucket_count);
/*!
\ingroup Memory
\brief この関数は、NULLヒープヒントがメモリ割り当て関数に渡されたときに使用されるグローバルヒープヒントを設定します。これにより、アプリケーション全体で使用されるデフォルトのヒープヒントを設定できます。
\return 設定されていた以前のグローバルヒープヒントを返します。
\param hint グローバルヒープヒントとして使用するWOLFSSL_HEAP_HINT構造体。
_Example_
\code
WOLFSSL_HEAP_HINT hint;
WOLFSSL_HEAP_HINT* prev_hint;
int ret;
unsigned char memory[MAX];
int memorySz = MAX;
...
// 使用するメモリをロード
ret = wc_LoadStaticMemory(&hint, memory, memorySz, WOLFMEM_GENERAL, 0);
if (ret != SSL_SUCCESS) {
// エラーケースを処理
}
// グローバルヒープヒントとして設定
prev_hint = wolfSSL_SetGlobalHeapHint(&hint);
if (prev_hint != NULL) {
// 以前のグローバルヒープヒントがありました
}
\endcode
\sa wolfSSL_GetGlobalHeapHint
\sa wc_LoadStaticMemory
*/
WOLFSSL_HEAP_HINT* wolfSSL_SetGlobalHeapHint(WOLFSSL_HEAP_HINT* hint);
/*!
\ingroup Memory
\brief この関数は、NULLヒープヒントがメモリ割り当て関数に渡されたときに使用される現在のグローバルヒープヒントを取得します。
\return 現在のグローバルヒープヒントを返します。設定されていない場合はNULLを返します。
\param none パラメータなし。
_Example_
\code
WOLFSSL_HEAP_HINT* current_hint;
...
current_hint = wolfSSL_GetGlobalHeapHint();
if (current_hint != NULL) {
// グローバルヒープヒントが設定されています
// current_hintを操作に使用できます
}
\endcode
\sa wolfSSL_SetGlobalHeapHint
\sa wc_LoadStaticMemory
*/
WOLFSSL_HEAP_HINT* wolfSSL_GetGlobalHeapHint(void);
/*!
\ingroup Memory
\brief この関数は、静的メモリ割り当て追跡用のデバッグコールバック関数を設定します。WOLFSSL_STATIC_MEMORY_DEBUG_CALLBACKビルドオプションと共に使用されます。コールバック関数は、メモリ割り当ておよび割り当て解除操作中に呼び出され、デバッグ情報を提供します。
\return 成功した場合、0が返されます。
\return すべての失敗した戻り値は0未満になります。
\param cb 設定するデバッグコールバック関数。
_Example_
\code
static void debug_memory_cb(const char* func, const char* file, int line,
void* ptr, size_t size, int type)
{
printf("Memory %s: %s:%d ptr=%p size=%zu type=%d\n",
func, file, line, ptr, size, type);
}
...
// デバッグコールバックを設定
int ret = wolfSSL_SetDebugMemoryCb(debug_memory_cb);
if (ret != 0) {
// エラーケースを処理
}
\endcode
\sa none
*/
int wolfSSL_SetDebugMemoryCb(wolfSSL_DebugMemoryCb cb);
/*!
\ingroup Memory
\brief この関数は、静的メモリヒープと関連するミューテックスを解放します。静的メモリ割り当ての使用が完了したときに、リソースを適切にクリーンアップするために呼び出す必要があります。
\return 成功した場合、0が返されます。
\return すべての失敗した戻り値は0未満になります。
\param hint アンロードするWOLFSSL_HEAP_HINT構造体。
_Example_
\code
WOLFSSL_HEAP_HINT hint;
int ret;
unsigned char memory[MAX];
int memorySz = MAX;
...
// 使用するメモリをロード
ret = wc_LoadStaticMemory(&hint, memory, memorySz, WOLFMEM_GENERAL, 0);
if (ret != SSL_SUCCESS) {
// エラーケースを処理
}
// 操作にメモリを使用
...
// 完了時にクリーンアップ
ret = wc_UnloadStaticMemory(&hint);
if (ret != 0) {
// エラーケースを処理
}
\endcode
\sa wc_LoadStaticMemory
\sa wc_LoadStaticMemory_ex
*/
int wc_UnloadStaticMemory(WOLFSSL_HEAP_HINT* hint);
/*!
\ingroup Memory
\brief この関数は、カスタムバケットサイズと配分を使用した静的メモリ割り当てに必要なバッファサイズを計算します。この拡張バージョンでは、デフォルトの事前定義されたサイズを使用する代わりに、カスタムバケットサイズを使用できます。
\return バッファサイズの計算が正常に完了すると、正の値が返されます。
\return すべての負の値はエラーケースと見なされます。
\param bucket_sizes 使用するバケットサイズの配列。
\param bucket_count 配列内のバケットサイズの数。
\param flag 希望するメモリタイプ、つまりWOLFMEM_GENERALまたはWOLFMEM_IO_POOL。
_Example_
\code
word32 sizeList[] = {64, 128, 256, 512, 1024};
word32 distList[] = {1, 2, 1, 1, 1};
int listSz = 5;
int optimum;
optimum = wolfSSL_StaticBufferSz_ex(listSz, sizeList, distList, NULL, 0,
WOLFMEM_GENERAL);
if (optimum < 0) { //エラーケースを処理 }
printf("カスタムバケットでの最適なバッファサイズは %d です\n", optimum);
...
\endcode
\sa wolfSSL_StaticBufferSz
\sa wc_LoadStaticMemory_ex
*/
int wolfSSL_StaticBufferSz_ex(unsigned int listSz,
const word32 *sizeList, const word32 *distList,
byte* buffer, word32 sz, int flag);

View File

@@ -0,0 +1,48 @@
/*!
\ingroup OCSP
\brief OCSPコンテキストを割り当てて初期化します。
この関数は、OCSP操作で使用するためのWOLFSSL_OCSP構造体を割り当てて初期化します。
\param cm 証明書マネージャーへのポインタ。
\return 成功時に割り当てられたWOLFSSL_OCSPへのポインタ
\return 失敗時にNULL
\sa wc_FreeOCSP
*/
WOLFSSL_OCSP* wc_NewOCSP(WOLFSSL_CERT_MANAGER* cm);
/*!
\ingroup OCSP
\brief OCSPコンテキストに関連付けられたリソースを解放します。
この関数は、WOLFSSL_OCSP構造体に関連付けられたすべてのリソースを解放します。
\param ocsp 解放するWOLFSSL_OCSP構造体へのポインタ。
\return void
\sa wc_NewOCSP
*/
void wc_FreeOCSP(WOLFSSL_OCSP* ocsp);
/*!
\ingroup OCSP
\brief 指定された証明書のOCSPレスポンスをチェックします。
この関数は、特定の証明書のOCSPレスポンスを検証します。
\param ocsp WOLFSSL_OCSP構造体へのポインタ。
\param cert デコードされた証明書へのポインタ。
\param response OCSPレスポンスバッファへのポインタ。
\param responseSz OCSPレスポンスバッファのサイズ。
\param heap オプションのヒープポインタ。
\return 0 成功時
\return <0 失敗時
*/
int wc_CheckCertOcspResponse(WOLFSSL_OCSP *ocsp, DecodedCert *cert, byte *response, int responseSz, void* heap);

View File

@@ -1,27 +1,33 @@
/*!
\ingroup openSSL
\brief この関数は、PEM形式のwolfssl_bio構造体にキーを書き込みます。
\return SSL_SUCCESS 成功すると
\return SSL_FAILURE 失敗すると。
\param bio wolfssl_bio構造体からPEMバッファを取得します
\param key PEM形式に変換するためのキー
\param cipher EVP暗号構造
\param passwd パスワード
\param len パスワードの長さ
\param cb パスワードコールバック
\brief この関数は、WOLFSSL_BIO構造体にキーをPEM形式で書き込みます
\return SSL_SUCCESS 成功時
\return SSL_FAILURE 失敗時
\param bio PEMバッファを取得するWOLFSSL_BIO構造体
\param key PEM形式に変換するキー。
\param cipher EVP暗号構造体。
\param passwd パスワード。
\param len パスワードの長さ。
\param cb パスワードコールバック。
\param arg オプション引数。
_Example_
\code
WOLFSSL_BIO* bio;
WOLFSSL_EVP_PKEY* key;
int ret;
// create bio and setup key
// bioを作成してキーをセットアップ
ret = wolfSSL_PEM_write_bio_PrivateKey(bio, key, NULL, NULL, 0, NULL, NULL);
//check ret value
//ret値を確認
\endcode
\sa wolfSSL_PEM_read_bio_X509_AUX
*/
int wolfSSL_PEM_write_bio_PrivateKey(WOLFSSL_BIO* bio, WOLFSSL_EVP_PKEY* key,
const WOLFSSL_EVP_CIPHER* cipher,
unsigned char* passwd, int len,
wc_pem_password_cb* cb, void* arg);
wc_pem_password_cb* cb, void* arg);

View File

@@ -1,35 +1,43 @@
/*!
\ingroup PKCS11
*/
int wc_Pkcs11_Initialize(Pkcs11Dev* dev, const char* library,
void* heap);
/*!
\ingroup PKCS11
*/
void wc_Pkcs11_Finalize(Pkcs11Dev* dev);
/*!
\ingroup PKCS11
*/
int wc_Pkcs11Token_Init(Pkcs11Token* token, Pkcs11Dev* dev,
int slotId, const char* tokenName, const unsigned char *userPin,
int userPinSz);
/*!
\ingroup PKCS11
*/
void wc_Pkcs11Token_Final(Pkcs11Token* token);
/*!
\ingroup PKCS11
*/
int wc_Pkcs11Token_Open(Pkcs11Token* token, int readWrite);
/*!
\ingroup PKCS11
*/
void wc_Pkcs11Token_Close(Pkcs11Token* token);
/*!
\ingroup PKCS11
*/
int wc_Pkcs11StoreKey(Pkcs11Token* token, int type, int clear,
/*!
\ingroup PKCS11
*/
int wc_Pkcs11_CryptoDevCb(int devId, wc_CryptoInfo* info,
void* ctx);

View File

@@ -1,80 +1,116 @@
/*!
\ingroup PKCS7
\brief この関数は、DERフォーマットの証明書を使用してPKCS7構造を初期化します。空のPKCS7構造を初期化するには、NULL CERTとCERTSZの場合は0を渡すことができます。
\return 0 PKCS7構造の初期化に成功しました
\return MEMORY_E xmallocでメモリを割り当てるエラーがある場合
\return ASN_PARSE_E 証明書ヘッダーの解析中にエラーがある場合
\return ASN_OBJECT_ID_E 証明書から暗号化タイプの解析中にエラーがある場合に返されます
\return ASN_EXPECT_0_E CERTファイルの暗号化仕様にフォーマットエラーがある場合
\return ASN_BEFORE_DATE_E 日付が証明書開始日以前の場合返却
\return ASN_AFTER_DATE_E 日付が証明書の有効期限の後にある場合に返されます
\return ASN_BITSTR_E 証明書からビット文字列を解析したエラーがある場合に返されます
\return ECC_CURVE_OID_E 証明書からECCキーの解析中にエラーがある場合
\return ASN_UNKNOWN_OID_E 証明書が不明なキーオブジェクトIDを使用している場合に返されます
\return ASN_VERSION_E allow_v1_extensionsオプションが定義されておらず、証明書がV1またはV2の証明書の場合に返されます
\return BAD_FUNC_ARG 証明書拡張機能の処理中にエラーがある場合
\return ASN_CRIT_EXT_E 証明書の処理中になじみのない重要な拡張機能が発生した場合に返されます。
\return ASN_SIG_OID_E 署名暗号化タイプが提供されたファイル内の証明書の暗号化タイプと同じでない場合に返されます。
\return ASN_SIG_CONFIRM_E 認証署名が失敗したことを確認した場合に返されます
\return ASN_NAME_INVALID_E 証明書の名前がCA名制約によって許可されていない場合に返されます。
\return ASN_NO_SIGNER_E 証明書の真正性を確認するためのCA署名者がない場合に返されました
\param pkcs7 デコードされた証明書を保存するPKCS7構造へのポインタ
\param cert PKCS7構造を初期化するためのDERフォーマットのASN.1証明書を含むバッファへのポインタ
\brief カスタムAES鍵ラップ/アンラップ操作に使用されるコールバック。
\return 成功時には、出力バッファに書き込まれたラップ/アンラップされた鍵のサイズを返す必要があります。戻り値0またはエラーコード< 0は失敗を示します。
\param[in] key 使用する鍵を指定します。
\param[in] keySz 使用する鍵のサイズ。
\param[in] in ラップ/アンラップする入力データを指定します
\param[in] inSz 入力データのサイズ
\param[in] wrap 要求された操作が鍵ラップの場合は1、アンラップの場合は0。
\param[out] out 出力バッファを指定します
\param[out] outSz 出力バッファのサイズ
*/
typedef int (*CallbackAESKeyWrapUnwrap)(const byte* key, word32 keySz,
const byte* in, word32 inSz, int wrap, byte* out, word32 outSz);
/*!
\ingroup PKCS7
\brief この関数は、DER形式の証明書でPKCS7構造を初期化します。空のPKCS7構造体を初期化するには、certにNULLを、certSzに0を渡すことができます。
\return 0 PKCS7構造体の初期化に成功した場合に返されます。
\return MEMORY_E XMALLOCでメモリ割り当てエラーがある場合に返されます。
\return ASN_PARSE_E 証明書ヘッダーの解析エラーがある場合に返されます。
\return ASN_OBJECT_ID_E 証明書から暗号化タイプの解析エラーがある場合に返されます。
\return ASN_EXPECT_0_E 証明書ファイルの暗号化仕様にフォーマットエラーがある場合に返されます。
\return ASN_BEFORE_DATE_E 日付が証明書開始日より前の場合に返されます。
\return ASN_AFTER_DATE_E 日付が証明書有効期限より後の場合に返されます。
\return ASN_BITSTR_E 証明書からビット文字列の解析エラーがある場合に返されます。
\return ECC_CURVE_OID_E 証明書からECC鍵の解析エラーがある場合に返されます。
\return ASN_UNKNOWN_OID_E 証明書が不明な鍵オブジェクトIDを使用している場合に返されます。
\return ASN_VERSION_E ALLOW_V1_EXTENSIONSオプションが定義されておらず、証明書がV1またはV2証明書の場合に返されます。
\return BAD_FUNC_ARG 証明書拡張の処理エラーがある場合に返されます。
\return ASN_CRIT_EXT_E 証明書の処理中に不明なクリティカル拡張に遭遇した場合に返されます。
\return ASN_SIG_OID_E 署名暗号化タイプが提供されたファイル内の証明書の暗号化タイプと同じでない場合に返されます。
\return ASN_SIG_CONFIRM_E 証明書署名の確認に失敗した場合に返されます。
\return ASN_NAME_INVALID_E 証明書の名前がCA名前制約によって許可されていない場合に返されます。
\return ASN_NO_SIGNER_E 証明書の真正性を検証するCA署名者がいない場合に返されます。
\param pkcs7 デコードされた証明書を格納するPKCS7構造体へのポインタ。
\param cert PKCS7構造体を初期化するためのDER形式ASN.1証明書を含むバッファへのポインタ。
\param certSz 証明書バッファのサイズ。
_Example_
\code
PKCS7 pkcs7;
byte derBuff[] = { }; // initialize with DER-encoded certificate
byte derBuff[] = { }; // DERエンコードされた証明書で初期化
if ( wc_PKCS7_InitWithCert(&pkcs7, derBuff, sizeof(derBuff)) != 0 ) {
// error parsing certificate into pkcs7 format
// 証明書のpkcs7形式への解析エラー
}
\endcode
\sa wc_PKCS7_Free
*/
int wc_PKCS7_InitWithCert(PKCS7* pkcs7, byte* cert, word32 certSz);
/*!
\ingroup PKCS7
\brief この関数は、PKCS7の初期化装置によって割り当てられたメモリを解放します。
\return none いいえ返します。
\brief この関数は、PKCS7初期化子によって割り当てられたメモリを解放します。
\return none 戻り値なし。
\param pkcs7 解放するPKCS7構造体へのポインタ。
_Example_
\code
PKCS7 pkcs7;
// initialize and use PKCS7 object
// PKCS7オブジェクトを初期化して使用
wc_PKCS7_Free(pkcs7);
\endcode
\sa wc_PKCS7_InitWithCert
*/
void wc_PKCS7_Free(PKCS7* pkcs7);
/*!
\ingroup PKCS7
\brief この関数はPKCS7データコンテンツタイプを構築し、PKCS7構造をパーセル可能なPKCS7データパケットを含むバッファにエンコードします。
\return Success PKCS7データをバッファに正常にエンコードすると、PKCS7構造内の索引を返します。このインデックスは、出力バッファに書き込まれたバイトにも対応しています。
\return BUFFER_E 指定されたバッファがエンコードされた証明書を保持するのに十分な大きさでない場合に返されます
\param pkcs7 符号化するPKCS7構造へのポインタ
\param output エンコードされた証明書を保するバッファへのポインタ
\brief この関数は、PKCS7データコンテンツタイプをビルドし、PKCS7構造体を解析可能なPKCS7データパケットを含むバッファにエンコードします。
\return Success PKCS7データをバッファに正常にエンコードした場合、PKCS7構造体で解析されたインデックスまで返します。このインデックスは、出力バッファに書き込まれたバイト数にも対応します。
\return BUFFER_E 指定されたバッファがエンコードされた証明書を保するのに十分な大きさでない場合に返されます。
\param pkcs7 エンコードするPKCS7構造体へのポインタ。
\param output エンコードされた証明書を格納するバッファへのポインタ。
\param outputSz 出力バッファで利用可能なサイズ。
_Example_
\code
PKCS7 pkcs7;
int ret;
byte derBuff[] = { }; // initialize with DER-encoded certificate
byte derBuff[] = { }; // DERエンコードされた証明書で初期化
byte pkcs7Buff[FOURK_BUF];
wc_PKCS7_InitWithCert(&pkcs7, derBuff, sizeof(derBuff));
// update message and data to encode
// エンコードするメッセージとデータを更新
pkcs7.privateKey = key;
pkcs7.privateKeySz = keySz;
pkcs7.content = data;
pkcs7.contentSz = dataSz;
... etc.
... など
ret = wc_PKCS7_EncodeData(&pkcs7, pkcs7Buff, sizeof(pkcs7Buff));
if ( ret != 0 ) {
// error encoding into output buffer
// 出力バッファへのエンコードエラー
}
\endcode
\sa wc_PKCS7_InitWithCert
*/
int wc_PKCS7_EncodeData(PKCS7* pkcs7, byte* output,
@@ -82,52 +118,58 @@ int wc_PKCS7_EncodeData(PKCS7* pkcs7, byte* output,
/*!
\ingroup PKCS7
\brief この関数はPKCS7署名付きデータコンテンツタイプを構築し、PKCS7構造をPARSable PKCS7署名付きデータパケットを含むバッファにエンコードします。
\return Success PKCS7データをバッファに正常にエンコードすると、PKCS7構造内の索引を返します。このインデックスは、出力バッファに書き込まれたバイトにも対応しています。
\return BAD_FUNC_ARG PKCS7構造が署名付きデータパケットを生成するための1つ以上の要求要素が欠落している場合に返されます。
\return MEMORY_E メモリの割り当て中にエラーが発生した場合に返されます
\return PUBLIC_KEY_E 公開鍵の解析中にエラーがある場合
\return RSA_BUFFER_E バッファエラーが発生した場合は、小さすぎたり入力が大きすぎたりし過ぎました
\return BUFFER_E 指定されたバッファがエンコードされた証明書を保持するのに十分な大きさでない場合に返されます
\return MP_INIT_E 署名を生成するエラーがある場合は返却される可能性があります
\return MP_READ_E 署名を生成するエラーがある場合は返却される可能性があります
\return MP_CMP_E 署名生成するエラーがある場合は返却される可能性があります
\return MP_INVMOD_E 署名生成するエラーがある場合は返却される可能性があります
\return MP_EXPTMOD_E 署名生成するエラーがある場合は返却される可能性があります
\return MP_MOD_E 署名生成するエラーがある場合は返却される可能性があります
\return MP_MUL_E 署名生成するエラーがある場合は返却される可能性があります
\return MP_ADD_E 署名生成するエラーがある場合は返却される可能性があります
\return MP_MULMOD_E 署名生成するエラーがある場合は返却される可能性があります
\return MP_TO_E 署名生成するエラーがある場合は返却される可能性があります
\return MP_MEM 署名生成するエラーがある場合は返却される可能性があります
\param pkcs7 符号化するPKCS7構造へのポインタ
\param output エンコードされた証明書を保存するバッファへのポインタ
\brief この関数は、PKCS7署名付きデータコンテンツタイプをビルドし、PKCS7構造体を解析可能なPKCS7署名付きデータパケットを含むバッファにエンコードします。
\return Success PKCS7データをバッファに正常にエンコードした場合、PKCS7構造体で解析されたインデックスまで返します。このインデックスは、出力バッファに書き込まれたバイト数にも対応します。
\return BAD_FUNC_ARG 署名付きデータパケットを生成するために必要な1つ以上の要素がPKCS7構造体に欠けている場合に返されます。
\return MEMORY_E メモリ割り当てエラーがある場合に返されます。
\return PUBLIC_KEY_E 公開鍵の解析エラーがある場合に返されます
\return RSA_BUFFER_E バッファエラー、出力が小さすぎるか入力が大きすぎる場合に返されます
\return BUFFER_E 指定されたバッファがエンコードされた証明書を保持するのに十分な大きさでない場合に返されます
\return MP_INIT_E 署名生成エラーがある場合に返される可能性があります
\return MP_READ_E 署名生成エラーがある場合に返される可能性があります
\return MP_CMP_E 署名生成エラーがある場合に返される可能性があります
\return MP_INVMOD_E 署名生成エラーがある場合に返される可能性があります
\return MP_EXPTMOD_E 署名生成エラーがある場合に返される可能性があります
\return MP_MOD_E 署名生成エラーがある場合に返される可能性があります
\return MP_MUL_E 署名生成エラーがある場合に返される可能性があります
\return MP_ADD_E 署名生成エラーがある場合に返される可能性があります
\return MP_MULMOD_E 署名生成エラーがある場合に返される可能性があります
\return MP_TO_E 署名の生成エラーがある場合に返される可能性があります。
\return MP_MEM 署名の生成エラーがある場合に返される可能性があります。
\param pkcs7 エンコードするPKCS7構造体へのポインタ。
\param output エンコードされた証明書を格納するバッファへのポインタ。
\param outputSz 出力バッファで利用可能なサイズ。
_Example_
\code
PKCS7 pkcs7;
int ret;
byte data[] = {}; // initialize with data to sign
byte derBuff[] = { }; // initialize with DER-encoded certificate
byte data[] = {}; // 署名するデータで初期化
byte derBuff[] = { }; // DERエンコードされた証明書で初期化
byte pkcs7Buff[FOURK_BUF];
wc_PKCS7_InitWithCert(&pkcs7, derBuff, sizeof(derBuff));
// update message and data to encode
// エンコードするメッセージとデータを更新
pkcs7.privateKey = key;
pkcs7.privateKeySz = keySz;
pkcs7.content = data;
pkcs7.contentSz = dataSz;
pkcs7.hashOID = SHAh;
pkcs7.rng = &rng;
... etc.
... など
ret = wc_PKCS7_EncodeSignedData(&pkcs7, pkcs7Buff, sizeof(pkcs7Buff));
if ( ret != 0 ) {
// error encoding into output buffer
// 出力バッファへのエンコードエラー
}
wc_PKCS7_Free(&pkcs7);
\endcode
\sa wc_PKCS7_InitWithCert
\sa wc_PKCS7_VerifySignedData
*/
@@ -136,36 +178,42 @@ int wc_PKCS7_EncodeSignedData(PKCS7* pkcs7,
/*!
\ingroup PKCS7
\brief この関数は、PKCS7の署名付きデータコンテンツタイプを構築し、PKCS7構造をエンコードし、Parsable PKCS7署名付きデータパケットを含むヘッダーおよびフッターバッファにエンコードします。これにはコンテンツは含まれません。ハッシュを計算してデータに提供する必要があります
\brief この関数は、PKCS7署名付きデータコンテンツタイプをビルドし、PKCS7構造体を解析可能なPKCS7署名付きデータパケットを含むヘッダーとフッターバッファにエンコードします。これにはコンテンツは含まれません。
データのハッシュを計算して提供する必要があります。
\return 0=Success
\return BAD_FUNC_ARG PKCS7構造が署名付きデータパケットを生成するため1つ以上の要求要素が欠落している場合に返されます。
\return MEMORY_E メモリ割り当て中にエラーが発生した場合に返されます
\return PUBLIC_KEY_E 公開鍵の解析中にエラーがある場合
\return RSA_BUFFER_E バッファエラーが発生した場合は、小さすぎたり入力が大きすぎたりし過ぎました
\return BUFFER_E 指定されたバッファがエンコードされた証明書を保持するのに十分な大きさでない場合に返されます
\return MP_INIT_E 署名生成するエラーがある場合は返却される可能性があります
\return MP_READ_E 署名生成するエラーがある場合は返却される可能性があります
\return MP_CMP_E 署名生成するエラーがある場合は返却される可能性があります
\return MP_INVMOD_E 署名生成するエラーがある場合は返却される可能性があります
\return MP_EXPTMOD_E 署名生成するエラーがある場合は返却される可能性があります
\return MP_MOD_E 署名生成するエラーがある場合は返却される可能性があります
\return MP_MUL_E 署名生成するエラーがある場合は返却される可能性があります
\return MP_ADD_E 署名生成するエラーがある場合は返却される可能性があります
\return MP_MULMOD_E 署名生成するエラーがある場合は返却される可能性があります
\return MP_TO_E 署名生成するエラーがある場合は返却される可能性があります
\return MP_MEM 署名生成するエラーがある場合は返却される可能性があります
\param pkcs7 符号化するPKCS7構造へのポインタ
\param hashBuf コンテンツデータの計算ハッシュへのポインタ
\param hashSz ダイジェストのサイズ
\param outputHead エンコードされた証明書ヘッダーを保存するバッファへのポインタ
\param outputHeadSz 出力ヘッダーバッファのサイズが入力され、実際のサイズを返します
\param outputFoot エンコードされた証明書フッターを保存するバッファへのポインタ
\return BAD_FUNC_ARG 署名付きデータパケットを生成するために必要な1つ以上の要素がPKCS7構造体に欠けている場合に返されます。
\return MEMORY_E メモリ割り当てエラーがある場合に返されます
\return PUBLIC_KEY_E 公開鍵の解析エラーがある場合に返されます。
\return RSA_BUFFER_E バッファエラー、出力が小さすぎるか入力が大きすぎる場合に返されます。
\return BUFFER_E 指定されたバッファがエンコードされた証明書を保持するのに十分な大きさでない場合に返されます
\return MP_INIT_E 署名生成エラーがある場合に返される可能性があります
\return MP_READ_E 署名生成エラーがある場合に返される可能性があります
\return MP_CMP_E 署名生成エラーがある場合に返される可能性があります
\return MP_INVMOD_E 署名生成エラーがある場合に返される可能性があります
\return MP_EXPTMOD_E 署名生成エラーがある場合に返される可能性があります
\return MP_MOD_E 署名生成エラーがある場合に返される可能性があります
\return MP_MUL_E 署名生成エラーがある場合に返される可能性があります
\return MP_ADD_E 署名生成エラーがある場合に返される可能性があります
\return MP_MULMOD_E 署名生成エラーがある場合に返される可能性があります
\return MP_TO_E 署名生成エラーがある場合に返される可能性があります
\return MP_MEM 署名生成エラーがある場合に返される可能性があります
\param pkcs7 エンコードするPKCS7構造体へのポインタ
\param hashBuf コンテンツデータの計算されたハッシュへのポインタ。
\param hashSz ダイジェストのサイズ。
\param outputHead エンコードされた証明書ヘッダーを格納するバッファへのポインタ
\param outputHeadSz 出力ヘッダーバッファのサイズが入力され、実際のサイズを返します。
\param outputFoot エンコードされた証明書フッターを格納するバッファへのポインタ。
\param outputFootSz 出力フッターバッファのサイズが入力され、実際のサイズを返します。
_Example_
\code
PKCS7 pkcs7;
int ret;
byte derBuff[] = { }; // initialize with DER-encoded certificate
byte data[] = {}; // initialize with data to sign
byte derBuff[] = { }; // DERエンコードされた証明書で初期化
byte data[] = {}; // 署名するデータで初期化
byte pkcs7HeadBuff[FOURK_BUF/2];
byte pkcs7FootBuff[FOURK_BUF/2];
word32 pkcs7HeadSz = (word32)sizeof(pkcs7HeadBuff);
@@ -175,16 +223,16 @@ int wc_PKCS7_EncodeSignedData(PKCS7* pkcs7,
word32 hashSz = wc_HashGetDigestSize(hashType);
wc_PKCS7_InitWithCert(&pkcs7, derBuff, sizeof(derBuff));
// update message and data to encode
// エンコードするメッセージとデータを更新
pkcs7.privateKey = key;
pkcs7.privateKeySz = keySz;
pkcs7.content = NULL;
pkcs7.contentSz = dataSz;
pkcs7.hashOID = SHAh;
pkcs7.rng = &rng;
... etc.
... など
// calculate hash for content
// コンテンツのハッシュを計算
ret = wc_HashInit(&hash, hashType);
if (ret == 0) {
ret = wc_HashUpdate(&hash, hashType, data, sizeof(data));
@@ -197,11 +245,12 @@ int wc_PKCS7_EncodeSignedData(PKCS7* pkcs7,
ret = wc_PKCS7_EncodeSignedData_ex(&pkcs7, hashBuf, hashSz, pkcs7HeadBuff,
&pkcs7HeadSz, pkcs7FootBuff, &pkcs7FootSz);
if ( ret != 0 ) {
// error encoding into output buffer
// 出力バッファへのエンコードエラー
}
wc_PKCS7_Free(&pkcs7);
\endcode
\sa wc_PKCS7_InitWithCert
\sa wc_PKCS7_VerifySignedData_ex
*/
@@ -211,107 +260,117 @@ int wc_PKCS7_EncodeSignedData_ex(PKCS7* pkcs7, const byte* hashBuf,
/*!
\ingroup PKCS7
\brief この関数は、送信されたPKCS7の署名付きデータメッセージを取り、証明書リストと証明書失効リストを抽出してから署名を検証します。与えられたPKCS7構造に抽出されたコンテンツを格納します。
\return 0 メッセージから情報を抽出することに成功しました
\return BAD_FUNC_ARG 入力パラメータの1つが無効な場合は返されます
\return ASN_PARSE_E 与えられたPKIMSGから解析中のエラーがある場合に返されます
\return PKCS7_OID_E 与えられたPKIMSGが署名付きデータ型ではない場合に返されます
\return ASN_VERSION_E PKCS7署名者情報がバージョン1ではない場合に返されます
\return MEMORY_E メモリの割り当て中にエラーが発生した場合に返されます
\return PUBLIC_KEY_E 公開鍵の解析中にエラーがある場合
\return RSA_BUFFER_E バッファエラーが発生した場合は、小さすぎたり入力が大きすぎたりし過ぎません
\return BUFFER_E 指定されたバッファがエンコードされた証明書を保持するのに十分な大きさでない場合に返されます
\return MP_INIT_E 署名を生成するエラーがある場合は返却される可能性があります
\return MP_READ_E 署名を生成するエラーがある場合は返却される可能性があります
\return MP_CMP_E 署名生成するエラーがある場合は返却される可能性があります
\return MP_INVMOD_E 署名生成するエラーがある場合は返却される可能性があります
\return MP_EXPTMOD_E 署名生成するエラーがある場合は返却される可能性があります
\return MP_MOD_E 署名生成するエラーがある場合は返却される可能性があります
\return MP_MUL_E 署名生成するエラーがある場合は返却される可能性があります
\return MP_ADD_E 署名生成するエラーがある場合は返却される可能性があります
\return MP_MULMOD_E 署名生成するエラーがある場合は返却される可能性があります
\return MP_TO_E 署名生成するエラーがある場合は返却される可能性があります
\return MP_MEM 署名生成するエラーがある場合は返却される可能性があります
\param pkcs7 解析された証明書を保存するPKCS7構造へのポインタ
\param pkiMsg 署名されたメッセージを含むバッファへのポインタを検証および復号化する
\brief この関数は、送信されたPKCS7署名付きデータメッセージを受け取り、証明書リストと証明書失効リストを抽出し、署名を検証します。抽出されたコンテンツを与えられたPKCS7構造体に格納します。
\return 0 メッセージから情報を正常に抽出した場合に返されます
\return BAD_FUNC_ARG 入力パラメータの1つが無効な場合に返されます
\return ASN_PARSE_E 与えられたpkiMsgの解析エラーがある場合に返されます
\return PKCS7_OID_E 与えられたpkiMsgが署名付きデータタイプでない場合に返されます
\return ASN_VERSION_E PKCS7署名者情報がバージョン1でない場合に返されます。
\return MEMORY_E メモリ割り当てエラーがある場合に返されます。
\return PUBLIC_KEY_E 公開鍵の解析エラーがある場合に返されます
\return RSA_BUFFER_E バッファエラー、出力が小さすぎるか入力が大きすぎる場合に返されます
\return BUFFER_E 指定されたバッファがエンコードされた証明書を保持するのに十分な大きさでない場合に返されます
\return MP_INIT_E 署名生成エラーがある場合に返される可能性があります
\return MP_READ_E 署名生成エラーがある場合に返される可能性があります
\return MP_CMP_E 署名生成エラーがある場合に返される可能性があります
\return MP_INVMOD_E 署名生成エラーがある場合に返される可能性があります
\return MP_EXPTMOD_E 署名生成エラーがある場合に返される可能性があります
\return MP_MOD_E 署名生成エラーがある場合に返される可能性があります
\return MP_MUL_E 署名生成エラーがある場合に返される可能性があります
\return MP_ADD_E 署名生成エラーがある場合に返される可能性があります
\return MP_MULMOD_E 署名生成エラーがある場合に返される可能性があります
\return MP_TO_E 署名の生成エラーがある場合に返される可能性があります。
\return MP_MEM 署名の生成エラーがある場合に返される可能性があります。
\param pkcs7 解析された証明書を格納するPKCS7構造体へのポインタ。
\param pkiMsg 検証およびデコードする署名付きメッセージを含むバッファへのポインタ。
\param pkiMsgSz 署名付きメッセージのサイズ。
_Example_
\code
PKCS7 pkcs7;
int ret;
byte pkcs7Buff[] = {}; // the PKCS7 signature
byte pkcs7Buff[] = {}; // PKCS7署名
wc_PKCS7_InitWithCert(&pkcs7, NULL, 0);
// update message and data to encode
// エンコードするメッセージとデータを更新
pkcs7.privateKey = key;
pkcs7.privateKeySz = keySz;
pkcs7.content = data;
pkcs7.contentSz = dataSz;
... etc.
... など
ret = wc_PKCS7_VerifySignedData(&pkcs7, pkcs7Buff, sizeof(pkcs7Buff));
if ( ret != 0 ) {
// error encoding into output buffer
// 出力バッファへのエンコードエラー
}
wc_PKCS7_Free(&pkcs7);
\endcode
\sa wc_PKCS7_InitWithCert
\sa wc_PKCS7_EncodeSignedData
*/
int wc_PKCS7_VerifySignedData(PKCS7* pkcs7,
byte* pkiMsg, word32 pkiMsgSz);
/*!
\ingroup PKCS7
\brief この機能は、送信されたPKCS7署名付きデータメッセージをHASH /ヘッダー/フッターとして取り出してから、証明書リストと証明書失効リストを抽出してから、署名を検証します。与えられたPKCS7構造に抽出されたコンテンツを格納します。
\return 0 メッセージから情報を抽出することに成功しました
\return BAD_FUNC_ARG 入力パラメータの1つが無効な場合は返されます
\return ASN_PARSE_E 与えられたPKIMSGから解析中のエラーがある場合に返されます
\return PKCS7_OID_E 与えられたPKIMSGが署名付きデータ型ではない場合に返されます
\return ASN_VERSION_E PKCS7署名者情報がバージョン1ではない場合に返されます
\return MEMORY_E メモリの割り当て中にエラーが発生した場合に返されます
\return PUBLIC_KEY_E 公開鍵の解析中にエラーがある場合
\return RSA_BUFFER_E バッファエラーが発生した場合は、小さすぎたり入力が大きすぎたりし過ぎません
\return BUFFER_E 指定されたバッファがエンコードされた証明書を保持するのに十分な大きさでない場合に返されます
\return MP_INIT_E 署名を生成するエラーがある場合は返却される可能性があります
\return MP_READ_E 署名を生成するエラーがある場合は返却される可能性があります
\return MP_CMP_E 署名生成するエラーがある場合は返却される可能性があります
\return MP_INVMOD_E 署名生成するエラーがある場合は返却される可能性があります
\return MP_EXPTMOD_E 署名生成するエラーがある場合は返却される可能性があります
\return MP_MOD_E 署名生成するエラーがある場合は返却される可能性があります
\return MP_MUL_E 署名生成するエラーがある場合は返却される可能性があります
\return MP_ADD_E 署名生成するエラーがある場合は返却される可能性があります
\return MP_MULMOD_E 署名生成するエラーがある場合は返却される可能性があります
\return MP_TO_E 署名生成するエラーがある場合は返却される可能性があります
\return MP_MEM 署名生成するエラーがある場合は返却される可能性があります
\param pkcs7 解析された証明書を保存するPKCS7構造へのポインタ
\param hashBuf コンテンツデータの計算ハッシュへのポインタ
\param hashSz ダイジェストのサイズ
\param pkiMsgHead 署名されたメッセージヘッダーを含むバッファへのポインタを検証およびデコードする
\param pkiMsgHeadSz 署名付きメッセージヘッダーのサイズ
\param pkiMsgFoot 署名されたメッセージフッターを含むバッファへのポインタを検証してデコードする
\brief この関数は、ハッシュ/ヘッダー/フッターとして送信されたPKCS7署名付きデータメッセージを受け取り、証明書リストと証明書失効リストを抽出し、署名を検証します。抽出されたコンテンツを与えられたPKCS7構造体に格納します。
\return 0 メッセージから情報を正常に抽出した場合に返されます
\return BAD_FUNC_ARG 入力パラメータの1つが無効な場合に返されます
\return ASN_PARSE_E 与えられたpkiMsgの解析エラーがある場合に返されます
\return PKCS7_OID_E 与えられたpkiMsgが署名付きデータタイプでない場合に返されます
\return ASN_VERSION_E PKCS7署名者情報がバージョン1でない場合に返されます。
\return MEMORY_E メモリ割り当てエラーがある場合に返されます。
\return PUBLIC_KEY_E 公開鍵の解析エラーがある場合に返されます
\return RSA_BUFFER_E バッファエラー、出力が小さすぎるか入力が大きすぎる場合に返されます
\return BUFFER_E 指定されたバッファがエンコードされた証明書を保持するのに十分な大きさでない場合に返されます
\return MP_INIT_E 署名生成エラーがある場合に返される可能性があります
\return MP_READ_E 署名生成エラーがある場合に返される可能性があります
\return MP_CMP_E 署名生成エラーがある場合に返される可能性があります
\return MP_INVMOD_E 署名生成エラーがある場合に返される可能性があります
\return MP_EXPTMOD_E 署名生成エラーがある場合に返される可能性があります
\return MP_MOD_E 署名生成エラーがある場合に返される可能性があります
\return MP_MUL_E 署名生成エラーがある場合に返される可能性があります
\return MP_ADD_E 署名生成エラーがある場合に返される可能性があります
\return MP_MULMOD_E 署名生成エラーがある場合に返される可能性があります
\return MP_TO_E 署名の生成エラーがある場合に返される可能性があります。
\return MP_MEM 署名の生成エラーがある場合に返される可能性があります。
\param pkcs7 解析された証明書を格納するPKCS7構造体へのポインタ。
\param hashBuf コンテンツデータの計算されたハッシュへのポインタ。
\param hashSz ダイジェストのサイズ。
\param pkiMsgHead 検証およびデコードする署名付きメッセージヘッダーを含むバッファへのポインタ。
\param pkiMsgHeadSz 署名付きメッセージヘッダーのサイズ。
\param pkiMsgFoot 検証およびデコードする署名付きメッセージフッターを含むバッファへのポインタ。
\param pkiMsgFootSz 署名付きメッセージフッターのサイズ。
_Example_
\code
PKCS7 pkcs7;
int ret;
byte data[] = {}; // initialize with data to sign
byte pkcs7HeadBuff[] = {}; // initialize with PKCS7 header
byte pkcs7FootBuff[] = {}; // initialize with PKCS7 footer
byte data[] = {}; // 署名するデータで初期化
byte pkcs7HeadBuff[] = {}; // PKCS7ヘッダーで初期化
byte pkcs7FootBuff[] = {}; // PKCS7フッターで初期化
enum wc_HashType hashType = WC_HASH_TYPE_SHA;
byte hashBuf[WC_MAX_DIGEST_SIZE];
word32 hashSz = wc_HashGetDigestSize(hashType);
wc_PKCS7_InitWithCert(&pkcs7, NULL, 0);
// update message and data to encode
// エンコードするメッセージとデータを更新
pkcs7.privateKey = key;
pkcs7.privateKeySz = keySz;
pkcs7.content = NULL;
pkcs7.contentSz = dataSz;
pkcs7.rng = &rng;
... etc.
... など
// calculate hash for content
// コンテンツのハッシュを計算
ret = wc_HashInit(&hash, hashType);
if (ret == 0) {
ret = wc_HashUpdate(&hash, hashType, data, sizeof(data));
@@ -324,11 +383,12 @@ int wc_PKCS7_VerifySignedData(PKCS7* pkcs7,
ret = wc_PKCS7_VerifySignedData_ex(&pkcs7, hashBuf, hashSz, pkcs7HeadBuff,
sizeof(pkcs7HeadBuff), pkcs7FootBuff, sizeof(pkcs7FootBuff));
if ( ret != 0 ) {
// error encoding into output buffer
// 出力バッファへのエンコードエラー
}
wc_PKCS7_Free(&pkcs7);
\endcode
\sa wc_PKCS7_InitWithCert
\sa wc_PKCS7_EncodeSignedData_ex
*/
@@ -338,37 +398,58 @@ int wc_PKCS7_VerifySignedData_ex(PKCS7* pkcs7, const byte* hashBuf,
/*!
\ingroup PKCS7
\brief この関数は、PKCS7構造を編集し、PKCS7構造を符号化し、Parsable PKCS7エンベロープデータパケットを含むバッファに編集します。
\return Success エンベロープデータ形式でメッセージを正常にエンコードする上で返信され、出力バッファに書き込まれたサイズを返します。
\return BAD_FUNC_ARG: 入力パラメータの1つが無効な場合、またはPKCS7構造が必要な要素を欠落している場合
\return ALGO_ID_E pkcs7構造がサポートされていないアルゴリズムタイプを使用している場合に返されます。現在、DESBとDES3Bのみがサポートされています
\return BUFFER_E 与えられた出力バッファが小さすぎて出力データを保存する場合に返されます
\return MEMORY_E メモリの割り当て中にエラーが発生した場合に返されます
\return RNG_FAILURE_E 暗号化の乱数発生器の初期化中にエラーがある場合
\return DRBG_FAILED 暗号化に使用される乱数発生器を使用して数字を生成するエラーが発生した場合
\param pkcs7 符号化するPKCS7構造へのポインタ
\param output エンコードされた証明書を保存するバッファへのポインタ
\brief カスタムAES鍵ラップ/アンラップ操作を実行するために使用されるコールバック関数を設定します。
\retval 0 コールバック関数が正常に設定されました。
\retval BAD_FUNC_ARG パラメータpkcs7がNULLです。
\param pkcs7 PKCS7構造体へのポインタ。
\param aesKeyWrapCb カスタムAES鍵ラップ/アンラップ関数へのポインタ。
*/
int wc_PKCS7_SetAESKeyWrapUnwrapCb(wc_PKCS7* pkcs7,
CallbackAESKeyWrapUnwrap aesKeyWrapCb);
/*!
\ingroup PKCS7
\brief この関数は、PKCS7エンベロープデータコンテンツタイプをビルドし、PKCS7構造体を解析可能なPKCS7エンベロープデータパケットを含むバッファにエンコードします。
\return Success エンベロープデータ形式でメッセージを正常にエンコードした場合、出力バッファに書き込まれたサイズを返します。
\return BAD_FUNC_ARG: 入力パラメータの1つが無効な場合、またはPKCS7構造体に必要な要素が欠けている場合に返されます。
\return ALGO_ID_E PKCS7構造体がサポートされていないアルゴリズムタイプを使用している場合に返されます。現在、DesbとDES3bのみがサポートされています。
\return BUFFER_E 指定された出力バッファが出力データを格納するのに小さすぎる場合に返されます。
\return MEMORY_E メモリ割り当てエラーがある場合に返されます。
\return RNG_FAILURE_E 暗号化用の乱数生成器の初期化エラーがある場合に返されます。
\return DRBG_FAILED 暗号化に使用される乱数生成器で数値の生成エラーがある場合に返されます。
\return NOT_COMPILED_IN ECC鍵を使用していて、wolfSSLがHAVE_X963_KDFサポートなしでビルドされている場合に返される可能性があります。
\param pkcs7 エンコードするPKCS7構造体へのポインタ。
\param output エンコードされた証明書を格納するバッファへのポインタ。
\param outputSz 出力バッファで利用可能なサイズ。
_Example_
\code
PKCS7 pkcs7;
int ret;
byte derBuff[] = { }; // initialize with DER-encoded certificate
byte derBuff[] = { }; // DERエンコードされた証明書で初期化
byte pkcs7Buff[FOURK_BUF];
wc_PKCS7_InitWithCert(&pkcs7, derBuff, sizeof(derBuff));
// update message and data to encode
// エンコードするメッセージとデータを更新
pkcs7.privateKey = key;
pkcs7.privateKeySz = keySz;
pkcs7.content = data;
pkcs7.contentSz = dataSz;
... etc.
... など
ret = wc_PKCS7_EncodeEnvelopedData(&pkcs7, pkcs7Buff, sizeof(pkcs7Buff));
if ( ret != 0 ) {
// error encoding into output buffer
if ( ret < 0 ) {
// 出力バッファへのエンコードエラー
}
\endcode
\sa wc_PKCS7_InitWithCert
\sa wc_PKCS7_DecodeEnvelopedData
*/
@@ -377,52 +458,243 @@ int wc_PKCS7_EncodeEnvelopedData(PKCS7* pkcs7,
/*!
\ingroup PKCS7
\brief この関数はPKCS7エンベロープデータコンテンツタイプをアントラップして復号化し、メッセージを出力にデコードします。渡されたPKCS7オブジェクトの秘密鍵を使用してメッセージを復号化します。
\return On メッセージから情報を抽出するには、出力に書き込まれたバイト数を返します。
\return BAD_FUNC_ARG 入力パラメータの1つが無効な場合は返されます
\return ASN_PARSE_E 与えられたPKIMSGから解析中のエラーがある場合に返されます
\return PKCS7_OID_E 与えられたPKIMSGがエンベロープデータ型ではない場合に返されます
\return ASN_VERSION_E PKCS7署名者情報がバージョン0ではない場合に返されます
\return MEMORY_E メモリの割り当て中にエラーが発生した場合に返されます
\return ALGO_ID_E pkcs7構造がサポートされていないアルゴリズムタイプを使用している場合に返されます。現在、Signature Generation for Signature GenerationのRSAKを使用して、DESBとDES3Bのみが暗号化でサポートされています。
\return PKCS7_RECIP_E 提供された受信者と一致するエンベロープデータに受信者が見つからない場合
\return RSA_BUFFER_E バッファエラーが原因でRSAシグネチャ検証中にエラーがある場合は、小さすぎたり入力が大きすぎたりすると元に戻されます。
\return MP_INIT_E 署名検証中にエラーがある場合は返却される可能性があります
\return MP_READ_E 署名検証中にエラーがある場合は返却される可能性があります
\return MP_CMP_E 署名検証中にエラーがある場合は返却される可能性があります
\return MP_INVMOD_E 署名検証中エラーがある場合は返却される可能性があります
\return MP_EXPTMOD_E 署名検証中にエラーがある場合は返却される可能性があります
\return MP_MOD_E 署名検証中にエラーがある場合は返却される可能性があります
\return MP_MUL_E 署名検証中にエラーがある場合は返却される可能性があります
\return MP_ADD_E 署名検証中にエラーがある場合は返却される可能性があります
\return MP_MULMOD_E 署名検証中にエラーがある場合は返却される可能性があります
\return MP_TO_E 署名検証中にエラーがある場合は返却される可能性があります
\return MP_MEM 署名検証中にエラーがある場合は返却される可能性があります
\param pkcs7 エンベロープデータパッケージをデコードする秘密鍵を含むPKCS7構造へのポインタ
\param pkiMsg エンベロープデータパッケージを含むバッファへのポインタ
\param pkiMsgSz 包み込まれたデータパッケージのサイズ
\param output デコードされたメッセージを保存するバッファへのポインタ
\brief この関数は、PKCS7エンベロープデータコンテンツタイプをアンラップして復号し、メッセージをoutputにデコードします。渡されたPKCS7オブジェクトの秘密鍵を使用してメッセージを復号します。
注意: EnvelopedDataがECC鍵とKeyAgreementRecipientInfo構造体を使用して暗号化されている場合、wolfcrypt組み込みのAES鍵ラップ/アンラップ機能を有効にするためにHAVE_AES_KEYWRAPビルドオプションを有効にするか、wc_PKCS7_SetAESKeyWrapUnwrapCb()を使用してカスタムAES鍵ラップ/アンラップコールバックを設定する必要があります。これらのいずれも該当しない場合、復号は失敗します
\return メッセージから情報を正常に抽出した場合、outputに書き込まれたバイト数を返します
\return BAD_FUNC_ARG 入力パラメータの1つが無効な場合に返されます
\return ASN_PARSE_E 与えられたpkiMsgの解析エラーがある場合に返されます。
\return PKCS7_OID_E 与えられたpkiMsgがエンベロープデータタイプでない場合に返されます。
\return ASN_VERSION_E PKCS7署名者情報がバージョン0でない場合に返されます。
\return MEMORY_E メモリ割り当てエラーがある場合に返されます
\return ALGO_ID_E PKCS7構造体がサポートされていないアルゴリズムタイプを使用している場合に返されます。現在、暗号化にはDesbとDES3bのみがサポートされており、署名生成にはRSAkがサポートされています
\return PKCS7_RECIP_E エンベロープデータ内に提供された受信者と一致する受信者が見つからない場合に返されます
\return RSA_BUFFER_E バッファエラー、出力が小さすぎるか入力が大きすぎることによるRSA署名検証中エラーがある場合に返されます
\return MP_INIT_E 署名検証中にエラーがある場合に返される可能性があります
\return MP_READ_E 署名検証中にエラーがある場合に返される可能性があります
\return MP_CMP_E 署名検証中にエラーがある場合に返される可能性があります
\return MP_INVMOD_E 署名検証中にエラーがある場合に返される可能性があります
\return MP_EXPTMOD_E 署名検証中にエラーがある場合に返される可能性があります
\return MP_MOD_E 署名検証中にエラーがある場合に返される可能性があります
\return MP_MUL_E 署名検証中にエラーがある場合に返される可能性があります
\return MP_ADD_E 署名検証中にエラーがある場合に返される可能性があります。
\return MP_MULMOD_E 署名検証中にエラーがある場合に返される可能性があります。
\return MP_TO_E 署名検証中にエラーがある場合に返される可能性があります。
\return MP_MEM 署名検証中にエラーがある場合に返される可能性があります。
\return NOT_COMPILED_IN EnvelopedDataがECC鍵を使用して暗号化されていて、wolfSSLがHAVE_X963_KDFサポートなしでビルドされている場合に返される可能性があります。
\param pkcs7 エンベロープデータパッケージをデコードするための秘密鍵を含むPKCS7構造体へのポインタ。
\param pkiMsg エンベロープデータパッケージを含むバッファへのポインタ。
\param pkiMsgSz エンベロープデータパッケージのサイズ。
\param output デコードされたメッセージを格納するバッファへのポインタ。
\param outputSz 出力バッファで利用可能なサイズ。
_Example_
\code
PKCS7 pkcs7;
byte received[] = { }; // initialize with received enveloped message
byte received[] = { }; // 受信したエンベロープデータメッセージで初期化
byte decoded[FOURK_BUF];
int decodedSz;
// initialize pkcs7 with certificate
// update key
// 証明書でpkcs7を初期化
// 鍵を更新
pkcs7.privateKey = key;
pkcs7.privateKeySz = keySz;
decodedSz = wc_PKCS7_DecodeEnvelopedData(&pkcs7, received,
sizeof(received),decoded, sizeof(decoded));
if ( decodedSz != 0 ) {
// error decoding message
decodedSz = wc_PKCS7_DecodeEnvelopedData(&pkcs7, received, sizeof(received),
decoded, sizeof(decoded));
if ( decodedSz < 0 ) {
// メッセージのデコードエラー
}
\endcode
\sa wc_PKCS7_InitWithCert
\sa wc_PKCS7_EncodeEnvelopedData
*/
int wc_PKCS7_DecodeEnvelopedData(PKCS7* pkcs7, byte* pkiMsg,
word32 pkiMsgSz, byte* output,
word32 outputSz);
word32 pkiMsgSz, byte* output, word32 outputSz);
/*!
\ingroup PKCS7
\brief この関数は、KeyAgreeRecipientInfo RecipientInfoオブジェクトを含むEnvelopedDataパッケージからKeyAgreeRecipientIdentifierオブジェクトを抽出します。最初のRecipientInfoで見つかった最初のKeyAgreeRecipientIdentiferのみがコピーされます。この関数は、複数のRecipientInfoオブジェクトやKeyAgreeRecipientInfo内の複数のRecipientEncryptedKeyオブジェクトをサポートしていません。
\return 成功時に0を返します。
\return BAD_FUNC_ARG 入力パラメータの1つが無効な場合に返されます。
\return ASN_PARSE_E 入力メッセージの解析エラーがある場合に返されます。
\return PKCS7_OID_E 入力メッセージがエンベロープデータタイプでない場合に返されます。
\return BUFFER_E 出力バッファに十分なスペースがない場合に返されます。
\param[in] in EnvelopedData ContentInfoメッセージを含む入力バッファ。
\param[in] inSz 入力バッファのサイズ。
\param[out] out 出力バッファ。
\param[in,out] outSz 入力時の出力バッファサイズ、出力時に書き込まれたサイズ。
*/
int wc_PKCS7_GetEnvelopedDataKariRid(const byte * in, word32 inSz,
byte * out, word32 * outSz);
/*!
\ingroup PKCS7
\brief この関数は、PKCS7暗号化データコンテンツタイプをアンラップして復号し、メッセージをoutputにデコードします。pkcs7->encryptionKeyとpkcs7->encryptionKeySzを介して渡されたPKCS7オブジェクトの暗号化鍵を使用してメッセージを復号します。
\return メッセージから情報を正常に抽出した場合、outputに書き込まれたバイト数を返します。
\return BAD_FUNC_ARG 入力パラメータの1つが無効な場合に返されます。
\return ASN_PARSE_E 与えられたpkiMsgの解析エラーがある場合に返されます。
\return PKCS7_OID_E 与えられたpkiMsgが暗号化データタイプでない場合に返されます。
\return ASN_VERSION_E PKCS7署名者情報がバージョン0でない場合に返されます。
\return MEMORY_E メモリ割り当てエラーがある場合に返されます。
\return BUFFER_E 暗号化されたコンテンツのサイズが無効な場合に返されます。
\param pkcs7 暗号化データパッケージをデコードするための暗号化鍵を含むPKCS7構造体へのポインタ。
\param pkiMsg 暗号化データパッケージを含むバッファへのポインタ。
\param pkiMsgSz 暗号化データパッケージのサイズ。
\param output デコードされたメッセージを格納するバッファへのポインタ。
\param outputSz 出力バッファで利用可能なサイズ。
_Example_
\code
PKCS7 pkcs7;
byte received[] = { }; // 受信した暗号化データメッセージで初期化
byte decoded[FOURK_BUF];
int decodedSz;
// 証明書でpkcs7を初期化
// 鍵を更新
pkcs7.encryptionKey = key;
pkcs7.encryptionKeySz = keySz;
decodedSz = wc_PKCS7_DecodeEncryptedData(&pkcs7, received,
sizeof(received), decoded, sizeof(decoded));
if ( decodedSz < 0 ) {
// メッセージのデコードエラー
}
\endcode
\sa wc_PKCS7_InitWithCert
*/
int wc_PKCS7_DecodeEncryptedData(PKCS7* pkcs7, byte* pkiMsg,
word32 pkiMsgSz, byte* output, word32 outputSz);
/*!
\ingroup PKCS7
\brief この関数は、PKCS7暗号化鍵パッケージコンテンツタイプをアンラップして復号し、メッセージをoutputにデコードします。ラップされたコンテンツタイプがEncryptedDataの場合、pkcs7入力構造体に暗号化鍵を設定する必要がありますpkcs7->encryptionKeyとpkcs7->encryptionKeySzを介して。ラップされたコンテンツタイプがEnvelopedDataの場合、pkcs7入力構造体に秘密鍵を設定する必要がありますpkcs7->privateKeyとpkcs7->privateKeySzを介して
AuthEnvelopedDataのラップされたコンテンツタイプは現在サポートされていません。
この関数は、ラップされたコンテンツタイプに応じて、wc_PKCS7_DecodeEnvelopedData()またはwc_PKCS7_DecodeEncryptedData()を自動的に呼び出します。この関数は、ここにリストされているエラーコードに加えて、これらの関数のいずれかからのエラーコードを返す可能性があります。
\return メッセージから情報を正常に抽出した場合、outputに書き込まれたバイト数を返します。
\return BAD_FUNC_ARG 入力パラメータの1つが無効な場合に返されます。
\return ASN_PARSE_E 与えられたpkiMsgの解析エラーがある場合、またはラップされたコンテンツタイプがEncryptedDataで、EncryptedDataのサポートがコンパイルされていない場合例: NO_PKCS7_ENCRYPTED_DATAが設定されている場合に返されます。
\return PKCS7_OID_E 与えられたpkiMsgが暗号化鍵パッケージデータタイプでない場合に返されます。
\param pkcs7 暗号化鍵パッケージをデコードするための秘密鍵または暗号化鍵を含むPKCS7構造体へのポインタ。
\param pkiMsg 暗号化鍵パッケージメッセージを含むバッファへのポインタ。
\param pkiMsgSz 暗号化鍵パッケージメッセージのサイズ。
\param output デコードされた出力を格納するバッファへのポインタ。
\param outputSz 出力バッファで利用可能なサイズ。
_Example_
\code
PKCS7 pkcs7;
byte received[] = { }; // 受信した暗号化データメッセージで初期化
byte decoded[FOURK_BUF];
int decodedSz;
// 証明書でpkcs7を初期化
// 予想されるEnvelopedDataの鍵を更新
pkcs7.privateKey = key;
pkcs7.privateKeySz = keySz;
decodedSz = wc_PKCS7_DecodeEncryptedKeyPackage(&pkcs7, received,
sizeof(received), decoded, sizeof(decoded));
if ( decodedSz < 0 ) {
// メッセージのデコードエラー
}
\endcode
\sa wc_PKCS7_InitWithCert
*/
int wc_PKCS7_DecodeEncryptedKeyPackage(wc_PKCS7 * pkcs7,
byte * pkiMsg, word32 pkiMsgSz, byte * output, word32 outputSz);
/*!
\ingroup PKCS7
\brief この関数は、SymmetricKeyPackage属性へのアクセスを提供します。
\return 0 要求された属性が正常に見つかりました。
attrとattrSz出力変数には、属性のアドレスとサイズが入力されます。属性は、skp入力ポインタを介して渡されたのと同じバッファ内にあります。
\return BAD_FUNC_ARG 入力パラメータの1つが無効です。
\return ASN_PARSE_E 入力オブジェクトの解析中にエラーが発生しました。
\return BAD_INDEX_E 要求された属性インデックスが無効でした。
\param[in] skp SymmetricKeyPackageオブジェクトを含む入力バッファ。
\param[in] skpSz SymmetricKeyPackageオブジェクトのサイズ。
\param[in] index アクセスする属性のインデックス。
\param[out] attr 要求された属性オブジェクトへのポインタを格納するバッファ。
\param[out] attrSz 要求された属性オブジェクトのサイズを格納するバッファ。
*/
int wc_PKCS7_DecodeSymmetricKeyPackageAttribute(const byte * skp,
word32 skpSz, size_t index, const byte ** attr, word32 * attrSz);
/*!
\ingroup PKCS7
\brief この関数は、SymmetricKeyPackage鍵へのアクセスを提供します。
\return 0 要求された鍵が正常に見つかりました。
keyとkeySz出力変数には、鍵のアドレスとサイズが入力されます。鍵は、skp入力ポインタを介して渡されたのと同じバッファ内にあります。
\return BAD_FUNC_ARG 入力パラメータの1つが無効です。
\return ASN_PARSE_E 入力オブジェクトの解析中にエラーが発生しました。
\return BAD_INDEX_E 要求された鍵インデックスが無効でした。
\param[in] skp SymmetricKeyPackageオブジェクトを含む入力バッファ。
\param[in] skpSz SymmetricKeyPackageオブジェクトのサイズ。
\param[in] index アクセスする鍵のインデックス。
\param[out] key 要求された鍵オブジェクトへのポインタを格納するバッファ。
\param[out] keySz 要求された鍵オブジェクトのサイズを格納するバッファ。
*/
int wc_PKCS7_DecodeSymmetricKeyPackageKey(const byte * skp,
word32 skpSz, size_t index, const byte ** key, word32 * keySz);
/*!
\ingroup PKCS7
\brief この関数は、OneSymmetricKey属性へのアクセスを提供します。
\return 0 要求された属性が正常に見つかりました。
attrとattrSz出力変数には、属性のアドレスとサイズが入力されます。属性は、osk入力ポインタを介して渡されたのと同じバッファ内にあります。
\return BAD_FUNC_ARG 入力パラメータの1つが無効です。
\return ASN_PARSE_E 入力オブジェクトの解析中にエラーが発生しました。
\return BAD_INDEX_E 要求された属性インデックスが無効でした。
\param[in] osk OneSymmetricKeyオブジェクトを含む入力バッファ。
\param[in] oskSz OneSymmetricKeyオブジェクトのサイズ。
\param[in] index アクセスする属性のインデックス。
\param[out] attr 要求された属性オブジェクトへのポインタを格納するバッファ。
\param[out] attrSz 要求された属性オブジェクトのサイズを格納するバッファ。
*/
int wc_PKCS7_DecodeOneSymmetricKeyAttribute(const byte * osk,
word32 oskSz, size_t index, const byte ** attr, word32 * attrSz);
/*!
\ingroup PKCS7
\brief この関数は、OneSymmetricKey鍵へのアクセスを提供します。
\return 0 要求された鍵が正常に見つかりました。
keyとkeySz出力変数には、鍵のアドレスとサイズが入力されます。鍵は、osk入力ポインタを介して渡されたのと同じバッファ内にあります。
\return BAD_FUNC_ARG 入力パラメータの1つが無効です。
\return ASN_PARSE_E 入力オブジェクトの解析中にエラーが発生しました。
\param[in] osk OneSymmetricKeyオブジェクトを含む入力バッファ。
\param[in] oskSz OneSymmetricKeyオブジェクトのサイズ。
\param[out] key 要求された鍵オブジェクトへのポインタを格納するバッファ。
\param[out] keySz 要求された鍵オブジェクトのサイズを格納するバッファ。
*/
int wc_PKCS7_DecodeOneSymmetricKeyKey(const byte * osk,
word32 oskSz, const byte ** key, word32 * keySz);

View File

@@ -1,16 +1,22 @@
/*!
\ingroup Poly1305
\brief この関数は、Poly1305コンテキスト構造のキーを設定し、ハッシュに初期化します。注セキュリティを確保するために、WC_POLY1305FINALでメッセージハッシュを生成した後に新しいキーを設定する必要があります。
\return 0 キーを正常に設定し、Poly1305構造の初期化
\return BAD_FUNC_ARG 与えられたキーが32バイトの長さでない場合、またはPoly1305コンテキストがNULLの場合
\param ctx 初期化するためのPoly1305構造へのポインタ
\param key ハッシュに使用する鍵を含むバッファへのポインタ
\brief この関数は、Poly1305コンテキスト構造体のキーを設定し、ハッシュ化のために初期化します。注意: wc_Poly1305Finalでメッセージハッシュを生成した後、セキュリティを確保するために新しいキーを設定する必要があります。
\return 0 キーの設定とPoly1305構造体の初期化に成功した場合に返されます
\return BAD_FUNC_ARG 指定されたキーが32バイトでない場合、またはPoly1305コンテキストがNULLの場合に返されます
\param ctx 初期化するPoly1305構造体へのポインタ
\param key ハッシュ化に使用するキーを含むバッファへのポインタ
\param keySz バッファ内のキーのサイズ。32バイトである必要があります
_Example_
\code
Poly1305 enc;
byte key[] = { initialize with 32 byte key to use for hashing };
byte key[] = { ハッシュ化に使用する32バイトのキーで初期化 };
wc_Poly1305SetKey(&enc, key, sizeof(key));
\endcode
\sa wc_Poly1305Update
\sa wc_Poly1305Final
*/
@@ -19,23 +25,29 @@ int wc_Poly1305SetKey(Poly1305* poly1305, const byte* key,
/*!
\ingroup Poly1305
\brief この関数は、Poly1305構造を持つハッシュにメッセージを更新します。
\return 0 ハッシュへのメッセージ更新に成功しました
\return BAD_FUNC_ARG Poly1305構造がNULLの場合に返されます
\param ctx HASHにメッセージ更新するためのPoly1305構造へのポインタ
\param m ハッシュに追加する必要があるメッセージを含むバッファへのポインタ
\brief この関数は、Poly1305構造体でハッシュ化するメッセージ更新します。
\return 0 ハッシュ化するメッセージ更新に成功した場合に返されます
\return BAD_FUNC_ARG Poly1305構造体がNULLの場合に返されます
\param ctx ハッシュ化するメッセージを更新するPoly1305構造体へのポインタ
\param m ハッシュに追加するメッセージを含むバッファへのポインタ
\param bytes ハッシュ化するメッセージのサイズ
_Example_
\code
Poly1305 enc;
byte key[] = { }; // initialize with 32 byte key to use for encryption
byte key[] = { }; // 暗号化に使用する32バイトのキーで初期化
byte msg[] = { }; // initialize with message to hash
byte msg[] = { }; // ハッシュ化するメッセージで初期化
wc_Poly1305SetKey(&enc, key, sizeof(key));
if( wc_Poly1305Update(key, msg, sizeof(msg)) != 0 ) {
// error updating message to hash
// ハッシュ化するメッセージの更新エラー
}
\endcode
\sa wc_Poly1305SetKey
\sa wc_Poly1305Final
*/
@@ -43,25 +55,32 @@ int wc_Poly1305Update(Poly1305* poly1305, const byte* m, word32 bytes);
/*!
\ingroup Poly1305
\brief この関数は入力メッセージのハッシュを計算し、結果をMACに格納します。この後、キーをリセットする必要があります。
\return 0 最後のMacの計算に成功した
\return BAD_FUNC_ARG Poly1305構造がNULLの場合に返されます
\param ctx MACを生成するためのPoly1305構造へのポインタ
\brief この関数は、入力メッセージのハッシュを計算し、結果をmacに格納します。この関数を呼び出した後、キーをリセットする必要があります。
\return 0 最終MACの計算に成功した場合に返されます
\return BAD_FUNC_ARG Poly1305構造体がNULLの場合に返されます
\param ctx MACを生成するために使用するPoly1305構造体へのポインタ
\param mac MACを格納するバッファへのポインタ。
POLY1305_DIGEST_SIZE(16バイト)幅である必要があります
_Example_
\code
Poly1305 enc;
byte mac[POLY1305_DIGEST_SIZE]; // space for a 16 byte mac
byte mac[POLY1305_DIGEST_SIZE]; // 16バイトのmac用のスペース
byte key[] = { }; // initialize with 32 byte key to use for encryption
byte key[] = { }; // 暗号化に使用する32バイトのキーで初期化
byte msg[] = { }; // initialize with message to hash
byte msg[] = { }; // ハッシュ化するメッセージで初期化
wc_Poly1305SetKey(&enc, key, sizeof(key));
wc_Poly1305Update(key, msg, sizeof(msg));
if ( wc_Poly1305Final(&enc, mac) != 0 ) {
// error computing final MAC
// 最終MACの計算エラー
}
\endcode
\sa wc_Poly1305SetKey
\sa wc_Poly1305Update
*/
@@ -69,33 +88,39 @@ int wc_Poly1305Final(Poly1305* poly1305, byte* tag);
/*!
\ingroup Poly1305
\brief 鍵がロードされ、最近のTLS AEADパディング方式を使用してMACタグを作成する初期化されたPoly1305構造体を取ります。
\return 0 成功
\return BAD_FUNC_ARG CTX、INPUT、またはTAGがNULLの場合、または追加がNULLで、ADDSZが0より大きい場合、またはTAGSZがWC_POLY1305_MAC_SZより小さい場合に返されます。
\param ctx 初期化されたPoly1305構造物
\param additional 使用する追加データ
\param addSz 追加バッファのサイズ
\param input からタグを作成するための入力バッファ
\param sz 入力バッファのサイズ
\param tag 作成したタグを保持するためのバッファー
\brief キーがロードされた初期化済みのPoly1305構造体を受け取り、最新のTLS AEADパディングスキームを使用してMAC(タグ)を作成します。
\return 0 成功
\return BAD_FUNC_ARG ctx、input、またはtagがnullの場合、またはadditionalがnullでaddSzが0より大きい場合、またはtagSzがWC_POLY1305_MAC_SZ未満の場合に返されます。
\param ctx 使用する初期化済みのPoly1305構造体
\param additional 使用する追加データ
\param addSz additionalバッファのサイズ
\param input タグを作成する入力バッファ
\param sz 入力バッファのサイズ
\param tag 作成されたタグを保持するバッファ
\param tagSz 入力タグバッファのサイズ(少なくともWC_POLY1305_MAC_SZ(16)である必要があります)
_Example_
\code
Poly1305 ctx;
byte key[] = { }; // initialize with 32 byte key to use for hashing
byte additional[] = { }; // initialize with additional data
byte msg[] = { }; // initialize with message
byte key[] = { }; // ハッシュ化に使用する32バイトのキーで初期化
byte additional[] = { }; // 追加データで初期化
byte msg[] = { }; // メッセージで初期化
byte tag[16];
wc_Poly1305SetKey(&ctx, key, sizeof(key));
if(wc_Poly1305_MAC(&ctx, additional, sizeof(additional), (byte*)msg,
sizeof(msg), tag, sizeof(tag)) != 0)
{
// Handle the error
// エラーを処理
}
\endcode
\sa wc_Poly1305SetKey
\sa wc_Poly1305Update
\sa wcPoly1305Final
*/
int wc_Poly1305_MAC(Poly1305* ctx, byte* additional, word32 addSz,
byte* input, word32 sz, byte* tag, word32 tagSz);
byte* input, word32 sz, byte* tag, word32 tagSz);

View File

@@ -1,8 +1,11 @@
/*!
\ingroup PSA
\brief この関数は、与えられたコンテキストでPSAサポートを可能にします。
\param ctx PSAサポートを有効にする必要があるWOLFSSL_CTXオブジェクトへのポインタ
\return WOLFSSL_SUCCESS 成功した
\brief この関数は、指定されたコンテキストでPSAサポートを有効にします。
\param ctx PSAサポートを有効にする必要があるWOLFSSL_CTXオブジェクトへのポインタ
\return WOLFSSL_SUCCESS 成功時
\return BAD_FUNC_ARG ctx == NULLの場合
_Example_
\code
WOLFSSL_CTX *ctx;
@@ -14,27 +17,36 @@
printf("can't enable PSA on ctx");
\endcode
\sa wolfSSL_set_psa_ctx
*/
int wolfSSL_CTX_psa_enable(WOLFSSL_CTX *ctx);
/*!
\ingroup PSA
\brief 与えられたSSLセッションのPSAコンテキストを設定する機能
\param ssl CTXが有効になるWolfSSLへのポインタ
\param ctx Struct PSA_SSL_CTXへのポインタSSLセッションに固有である必要があります
\return WOLFSSL_SUCCESS 成功した
\brief この関数は、指定されたSSLセッションのPSAコンテキストをセットアップします
\param ssl ctxを有効にするWOLFSSLへのポインタ
\param ctx struct psa_ssl_ctxへのポインタ(SSLセッションごとに一意である必要があります)
\return WOLFSSL_SUCCESS 成功時
\return BAD_FUNC_ARG sslまたはctxがNULLの場合
この関数は、指定されたSSLセッションへのTLSコールバック用のPSAコンテキストをセットアップします。セッションの終了時に、コンテキストによって使用されたリソースは、wolfSSL_free_psa_ctx()を使用して解放する必要があります。
_Example_
\code
// Create new ssl session
// 新しいSSLセッションを作成
WOLFSSL *ssl;
struct psa_ssl_ctx psa_ctx = { 0 };
ssl = wolfSSL_new(ctx);
if (!ssl)
return NULL;
// setup PSA context
// PSAコンテキストをセットアップ
ret = wolfSSL_set_psa_ctx(ssl, ctx);
\endcode
\sa wolfSSL_psa_set_private_key_id
\sa wolfSSL_psa_free_psa_ctx
*/
@@ -42,23 +54,29 @@ int wolfSSL_set_psa_ctx(WOLFSSL *ssl, struct psa_ssl_ctx *ctx);
/*!
\ingroup PSA
\brief この関数はPSAコンテキストによって使用されるリソースを解放します
\brief この関数はPSAコンテキストによって使用されるリソースを解放します
\param ctx struct psa_ssl_ctxへのポインタ
\sa wolfSSL_set_psa_ctx
*/
void wolfSSL_free_psa_ctx(struct psa_ssl_ctx *ctx);
/*!
\ingroup PSA
\brief この関数は、SSLセッションによって使用される秘密鍵を設定します
\param ctx 構造体PSA_SSL_CTXへのポインタ
\brief この関数は、SSLセッション使用される秘密鍵を設定します
\param ctx struct psa_ssl_ctxへのポインタ
\param id 秘密鍵として使用されるキーのPSA ID
_Example_
\code
// Create new ssl session
// 新しいSSLセッションを作成
WOLFSSL *ssl;
struct psa_ssl_ctx psa_ctx = { 0 };
psa_key_id_t key_id;
// key provisioning already done
// キープロビジョニングは既に完了
get_private_key_id(&key_id);
ssl = wolfSSL_new(ctx);
@@ -68,8 +86,9 @@ void wolfSSL_free_psa_ctx(struct psa_ssl_ctx *ctx);
wolfSSL_psa_set_private_key_id(&psa_ctx, key_id);
wolfSSL_set_psa_ctx(ssl, ctx);
\endcode
\sa wolfSSL_set_psa_ctx
*/
int wolfSSL_psa_set_private_key_id(struct psa_ssl_ctx *ctx,
psa_key_id_t id);
psa_key_id_t id);

View File

@@ -1,110 +1,128 @@
/*!
\ingroup Password
\brief この機能はパスワードベースの鍵導出機能1PBKDF1を実装し、入力パスワードを連結ソルトと共により安全な鍵に変換し、出力に記憶する。これにより、HASH関数としてSHAとMD5を選択できます。
\return 0 入力パスワードからキーの派生に正常に戻された
\return BAD_FUNC_ARG 与えられた無効なハッシュタイプがある場合有効なタイプはMD5とSHA、反復は1未満、または要求されたキーの長さKlenは提供されたハッシュのハッシュ長よりも大きいです。
\return MEMORY_E SHAまたはMD5オブジェクトにメモリを割り当てるエラーがある場合返されます
\param output 生成されたキーを保存するバッファへのポインタ。少なくともklen longになるべきで
\param passwd キーの派生に使用するパスワードを含むバッファへのポインタ
\param pLen キーの派生に使用するパスワードの長さ
\param salt 鍵由来に使用するソルトを含むバッファへのポインター
\param sLen ソルトの長さ
\param iterations ハッシュを処理するための回数
\param kLen 派生キーの希望の長さ。選択したハッシュのダイジェストサイズより長くしてはいけません
\brief この関数は、パスワードベース鍵導出関数1(PBKDF1)を実装し、連結されたソルトを持つ入力パスワードをより安全な鍵に変換し、それをoutputに格納します。ユーザーはハッシュ関数としてSHAとMD5のいずれかを選択できます。
\return 0 入力パスワードから鍵の導出に成功した場合返されます
\return BAD_FUNC_ARG 無効なハッシュタイプが指定された場合(有効なタイプはMD5とSHA)、iterationsが1未満の場合、または要求された鍵の長さ(kLen)が提供されたハッシュのハッシュ長より大きい場合に返されま
\return MEMORY_E SHAまたはMD5オブジェクトのメモリ割り当て中にエラーが発生した場合に返されます
\param output 生成された鍵を格納するバッファへのポインタ。少なくともkLenの長さである必要があります
\param passwd 鍵導出に使用するパスワードを含むバッファへのポインタ
\param pLen 鍵導出に使用するパスワードの長さ
\param salt 鍵導出に使用するソルトを含むバッファへのポインタ
\param sLen ソルトの長さ
\param iterations ハッシュを処理する回数
\param kLen 導出される鍵の希望の長さ。選択されたハッシュのダイジェストサイズより長くしないでください
\param hashType 使用するハッシュアルゴリズム。有効な選択肢はWC_MD5とWC_SHAです
_Example_
\code
int ret;
byte key[MD5_DIGEST_SIZE];
byte pass[] = { }; // initialize with password
byte salt[] = { }; // initialize with salt
byte key[WC_MD5_DIGEST_SIZE];
byte pass[] = { }; // パスワードで初期化
byte salt[] = { }; // ソルトで初期化
ret = wc_PBKDF1(key, pass, sizeof(pass), salt, sizeof(salt), 1000,
sizeof(key), MD5);
sizeof(key), WC_MD5);
if ( ret != 0 ) {
// error deriving key from password
// パスワードからの鍵導出エラー
}
\endcode
\sa wc_PBKDF2
\sa wc_PKCS12_PBKDF
*/
int wc_PBKDF1(byte* output, const byte* passwd, int pLen,
const byte* salt, int sLen, int iterations, int kLen,
int typeH);
int hashType);
/*!
\ingroup Password
\brief この機能はパスワードベースのキー導出機能2PBKDF2を実装し、入力パスワードを連結されたソルトとともにより安全なキーに変換し、出力に記憶されています。これにより、MD5、SHA、SHA256、SHA384、SHA512、およびBLAKE2Bなど、サポートされているHMACハッシュ関数のいずれかを選択できます。
\return 0 入力パスワードからキーの派生に正常に戻された
\return BAD_FUNC_ARG 無効なハッシュタイプがある場合、または反復が1未満の場合は返されます。
\return MEMORY_E HMACオブジェクトに割り振りメモリがある場合
\param output 生成されたキーを保存するバッファへのポインタ。klen longにするべきで
\param passwd キーの派生に使用するパスワードを含むバッファへのポインタ
\param pLen キーの派生に使用するパスワードの長さ
\param salt 鍵由来に使用するソルトを含むバッファへのポインター
\param sLen ソルトの長さ
\param iterations ハッシュを処理するための回数
\param kLen 派生鍵の望ましい長さ
\brief この関数は、パスワードベース鍵導出関数2(PBKDF2)を実装し、連結されたソルトを持つ入力パスワードをより安全な鍵に変換し、それをoutputに格納します。ユーザーは、WC_MD5、WC_SHA、WC_SHA256、WC_SHA384、WC_SHA512、WC_SHA3_224、WC_SHA3_256、WC_SHA3_384、またはWC_SHA3_512を含む、サポートされているHMACハッシュ関数のいずれかを選択できます。
\return 0 入力パスワードから鍵の導出に成功した場合に返されます
\return BAD_FUNC_ARG 無効なハッシュタイプが指定された場合、またはiterationsが1未満の場合に返されま
\return MEMORY_E HMACオブジェクトのメモリ割り当て中にエラーが発生した場合に返されます
\param output 生成された鍵を格納するバッファへのポインタ。kLenの長さである必要があります
\param passwd 鍵導出に使用するパスワードを含むバッファへのポインタ
\param pLen 鍵導出に使用するパスワードの長さ
\param salt 鍵導出に使用するソルトを含むバッファへのポインタ
\param sLen ソルトの長さ
\param iterations ハッシュを処理する回数
\param kLen 導出される鍵の希望の長さ
\param hashType 使用するハッシュアルゴリズム。有効な選択肢は、WC_MD5、WC_SHA、WC_SHA256、WC_SHA384、WC_SHA512、WC_SHA3_224、WC_SHA3_256、WC_SHA3_384、またはWC_SHA3_512です
_Example_
\code
int ret;
byte key[64];
byte pass[] = { }; // initialize with password
byte salt[] = { }; // initialize with salt
byte pass[] = { }; // パスワードで初期化
byte salt[] = { }; // ソルトで初期化
ret = wc_PBKDF2(key, pass, sizeof(pass), salt, sizeof(salt), 2048, sizeof(key),
SHA512);
WC_SHA512);
if ( ret != 0 ) {
// error deriving key from password
// パスワードからの鍵導出エラー
}
\endcode
\sa wc_PBKDF1
\sa wc_PKCS12_PBKDF
*/
int wc_PBKDF2(byte* output, const byte* passwd, int pLen,
const byte* salt, int sLen, int iterations, int kLen,
int typeH);
int hashType);
/*!
\ingroup Password
\brief この関数は、RFC 7292付録Bに記載されているパスワードベースのキー導出機能PBKDFを実装しています。この関数は、入力パスワードを連結ソルトでより安全なキーに変換します。それは、MD5、SHA、SHA256、SHA384、SHA512、およびBLAKE2Bを含む、ユーザーはサポートされているHMACハッシュ関数のいずれかを選択できます。
\return 0 入力パスワードからキーの派生に正常に戻された
\return BAD_FUNC_ARG 返された無効なハッシュタイプが与えられた場合、繰り返しは1未満、または要求されたキーの長さklenが提供されたハッシュのハッシュ長よりも大きいです。
\return MEMORY_E 割り当てメモリがある場合返されます
\return MP_INIT_E キー生成中にエラーがある場合は返却される可能性があります
\return MP_READ_E キー生成中にエラーがある場合は返却される可能性があります
\return MP_CMP_E キー生成中にエラーがある場合は返却される可能性があります
\return MP_INVMOD_E キー生成中にエラーがある場合は返却される可能性があります
\return MP_EXPTMOD_E キー生成中にエラーがある場合は返却される可能性があります
\return MP_MOD_E キー生成中にエラーがある場合は返却される可能性があります
\return MP_MUL_E キー生成中にエラーがある場合は返却される可能性があります
\return MP_ADD_E キー生成中にエラーがある場合は返却される可能性があります
\return MP_MULMOD_E キー生成中にエラーがある場合は返却される可能性があります
\return MP_TO_E キー生成中にエラーがある場合は返却される可能性があります
\return MP_MEM キー生成中にエラーがある場合は返却される可能性があります
\param output 生成されたキーを保存するバッファへのポインタ。klen longにするべきで
\param passwd キーの派生に使用するパスワードを含むバッファへのポインタ
\param pLen キーの派生に使用するパスワードの長さ
\param salt 鍵由来に使用するソルトを含むバッファへのポインター
\param sLen ソルトの長さ
\param iterations ハッシュを処理するための回数
\param kLen 派生鍵の望ましい長さ
\param hashType 使用するハッシュアルゴリズム有効な選択肢は次のとおりです.MD5、SHA、SHA256、SHA384、SHA512、およびBLAKE2B
\brief この関数は、RFC 7292付録Bに記述されているパスワードベース鍵導出関数(PBKDF)を実装します。この関数は、連結されたソルトを持つ入力パスワードをより安全な鍵に変換し、それをoutputに格納します。ユーザーは、WC_MD5、WC_SHA、WC_SHA256、WC_SHA384、WC_SHA512、WC_SHA3_224、WC_SHA3_256、WC_SHA3_384、またはWC_SHA3_512を含む、サポートされているHMACハッシュ関数のいずれかを選択できます。
\return 0 入力パスワードから鍵の導出に成功した場合返されます
\return BAD_FUNC_ARG 無効なハッシュタイプが指定された場合、iterationsが1未満の場合、または要求された鍵の長さ(kLen)が提供されたハッシュのハッシュ長より大きい場合に返されます
\return MEMORY_E メモリ割り当て中にエラーが発生した場合に返されます
\return MP_INIT_E 鍵生成中にエラーが発生した場合に返される可能性があります
\return MP_READ_E 生成中にエラーが発生した場合に返される可能性があります
\return MP_CMP_E 鍵生成中にエラーが発生した場合に返される可能性があります
\return MP_INVMOD_E 生成中にエラーが発生した場合に返される可能性があります
\return MP_EXPTMOD_E 鍵生成中にエラーが発生した場合に返される可能性があります
\return MP_MOD_E 生成中にエラーが発生した場合に返される可能性があります
\return MP_MUL_E 鍵生成中にエラーが発生した場合に返される可能性があります
\return MP_ADD_E 鍵生成中にエラーが発生した場合に返される可能性があります
\return MP_MULMOD_E 鍵生成中にエラーが発生した場合に返される可能性があります
\return MP_TO_E 鍵生成中にエラーが発生した場合に返される可能性がありま
\return MP_MEM 鍵生成中にエラーが発生した場合に返される可能性があります
\param output 生成された鍵を格納するバッファへのポインタ。kLenの長さである必要があります
\param passwd 鍵導出に使用するパスワードを含むバッファへのポインタ
\param passLen 鍵導出に使用するパスワードの長さ
\param salt 鍵導出に使用するソルトを含むバッファへのポインタ
\param saltLen ソルトの長さ
\param iterations ハッシュを処理する回数
\param kLen 導出される鍵の希望の長さ
\param hashType 使用するハッシュアルゴリズム。有効な選択肢は、WC_MD5、WC_SHA、WC_SHA256、WC_SHA384、WC_SHA512、WC_SHA3_224、WC_SHA3_256、WC_SHA3_384、またはWC_SHA3_512です
\param id 鍵生成の目的を示すバイト識別子。鍵出力を多様化するために使用され、次のように割り当てる必要があります。ID=1: 疑似乱数ビットは、暗号化または復号を実行するための鍵材料として使用されます。ID=2: 疑似乱数ビットは、暗号化または復号のためのIV(初期値)として使用されます。ID=3: 疑似乱数ビットは、MAC処理のための完全性鍵として使用されます。
_Example_
\code
int ret;
byte key[64];
byte pass[] = { }; // initialize with password
byte salt[] = { }; // initialize with salt
byte pass[] = { }; // パスワードで初期化
byte salt[] = { }; // ソルトで初期化
ret = wc_PKCS512_PBKDF(key, pass, sizeof(pass), salt, sizeof(salt), 2048,
sizeof(key), SHA512, 1);
sizeof(key), WC_SHA512, 1);
if ( ret != 0 ) {
// error deriving key from password
// パスワードからの鍵導出エラー
}
\endcode
\sa wc_PBKDF1
\sa wc_PBKDF2
*/
int wc_PKCS12_PBKDF(byte* output, const byte* passwd, int pLen,
const byte* salt, int sLen, int iterations,
int kLen, int typeH, int purpose);
int wc_PKCS12_PBKDF(byte* output, const byte* passwd, int passLen,
const byte* salt, int saltLen, int iterations,
int kLen, int hashType, int id);

View File

@@ -1,603 +1,575 @@
/*!
\ingroup QUIC
\ingroup QUIC
\brief ハンドシェイク中にシークレットが生成されたときに呼び出されるコールバック。
QUIC プロトコル ハンドラはパケットの暗号化/復号を実行するため、
レベル Early_data/handshake/application のネゴシエートされたシークレットが必要です。
\brief ハンドシェイク中にシークレットが生成されたときに呼び出されるコールバック。
QUICプロトコルハンドラはパケットの暗号化/復号を実行するため、early_data/handshake/applicationレベルのネゴシエートされたシークレットが必要です。
コールバックはハンドシェイク中に数回呼び出されます。 両方のどちらか
または、読み取りシークレットまたは書き込みシークレットのみが提供される場合があります。 これは、
指定された暗号化レベルはすでに有効になっています。
このコールバックはハンドシェイク中に数回呼び出されます。読み取りまたは書き込みシークレットの両方、または一方のみが提供される場合があります。これは、与えられた暗号化レベルがすでに有効になっていることを意味するものではありません。
\return 成功すると 1 を返し、失敗すると 0 を返します
\return 1 成功時、0 失敗時
\param ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。
\param level - シークレット暗号化レベル
\param read_secret - 特定のレベルで復号に使用されるシークレットNULL の場合があります。
\param write_secret - 特定のレベルで暗号化に使用されるシークレットNULL の場合があります。
\param secret_len - シークレットの長さ
\param ssl - wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
\param level - シークレットが対応する暗号化レベル
\param read_secret - 与えられたレベルで復号に使用されるシークレットNULLの場合があります。
\param write_secret - 与えられたレベルで暗号化に使用されるシークレットNULLの場合があります。
\param secret_len - シークレットの長さ
\sa wolfSSL_set_quic_method
\sa wolfSSL_set_quic_method
*/
int (*set_encryption_secrets)(WOLFSSL *ssl, WOLFSSL_ENCRYPTION_LEVEL ,
const uint8_t *read_secret,
const uint8_t *write_secret, size_t secret_len);
int (*set_encryption_secrets)(WOLFSSL *ssl, WOLFSSL_ENCRYPTION_LEVEL level,
const uint8_t *read_secret,
const uint8_t *write_secret, size_t secret_len);
/*!
\ingroup QUIC
\ingroup QUIC
\brief ハンドシェイク CRYPTO データをピアに転送するために呼び出されるコールバック。
この方法で転送されるデータは暗号化されません。 QUICの仕事です
これを行うためのプロトコル実装。 どのシークレットを使用するか
指定された暗号化レベルによって決まります。
\brief ハンドシェイクCRYPTOデータをピアに転送するために呼び出されるコールバック。
この方法で転送されるデータは暗号化されていません。これを行うのはQUICプロトコル実装の役割です。使用するシークレットは、指定された暗号化レベルによって決定されます。
このコールバックは、ハンドシェイクまたはポスト ハンドシェイク中に数回呼び出される場合があります。
処理。 データは完全な CRYPTO レコードをカバーする場合がありますが、
部分的であること。 ただし、コールバックは以前にすべてのレコード データを受信しています。
別の暗号化レベルを使用しています。
このコールバックは、ハンドシェイクまたはポストハンドシェイク処理中に数回呼び出される場合があります。データは完全なCRYPTOレコードをカバーする場合もありますが、部分的な場合もあります。ただし、別の暗号化レベルを使用する前に、コールバックはすべてのレコードデータを受信します。
\return 成功すると 1 を返し、失敗すると 0 を返します
\return 1 成功時、0 失敗時
\param ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。
\param level - データの暗号化に使用する暗号化レベル
\param data - データ自体
\param len - データの長さ
\param ssl - wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
\param level - データの暗号化に使用する暗号化レベル
\param data - データ自体
\param len - データの長さ
\sa wolfSSL_set_quic_method
\sa wolfSSL_set_quic_method
*/
int (*add_handshake_data)(WOLFSSL *ssl, WOLFSSL_ENCRYPTION_LEVEL ,
const uint8_t *data, size_t len);
int (*add_handshake_data)(WOLFSSL *ssl, WOLFSSL_ENCRYPTION_LEVEL level,
const uint8_t *data, size_t len);
/*!
\ingroup QUIC
\ingroup QUIC
\brief 送信するデータのアドバイザリ フラッシュのために呼び出されるコールバック。
\brief 送信するデータのアドバイザリフラッシュのために呼び出されるコールバック。
\return 成功すると 1 を返し、失敗すると 0 を返します
\return 1 成功時、0 失敗時
\param ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。
\param ssl - wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
\sa wolfSSL_set_quic_method
\sa wolfSSL_set_quic_method
*/
int (*flush_flight)(WOLFSSL *ssl);
/*!
\ingroup QUIC
\ingroup QUIC
\brief 処理中に SSL アラートが発生したときに呼び出されるコールバック。
\brief 処理中にSSLアラートが発生したときに呼び出されるコールバック。
\return 成功すると 1 を返し、失敗すると 0 を返します
\return 1 成功時、0 失敗時
\param ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。
\param level - アラートが発生したときに有効だった暗号化レベル
\param alert - エラー
\param ssl - wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
\param level - アラートが発生したときに有効だった暗号化レベル
\param alert - エラー
\sa wolfSSL_set_quic_method
\sa wolfSSL_set_quic_method
*/
int (*send_alert)(WOLFSSL *ssl, WOLFSSL_ENCRYPTION_LEVEL , uint8_t );
int (*send_alert)(WOLFSSL *ssl, WOLFSSL_ENCRYPTION_LEVEL level, uint8_t alert);
/*!
\ingroup QUIC
\ingroup QUIC
\brief WOLFSSL_CTX および派生したすべての WOLFSSL インスタンスに対して QUIC プロトコルを有効します
必要な 4 つのコールバックを提供します。 CTX は TLSv1.3 である必要があります。
\brief 必要な4つのコールバックを提供することにより、WOLFSSL_CTXおよびすべての派生WOLFSSLインスタンスに対してQUICプロトコルを有効します。CTXはTLSv1.3である必要があります。
渡された quic_methodは、SSL インスタンスよりも長い寿命が必要です。
コピーされません。 すべてのコールバックを提供する必要があります。
渡されたquic_methodは、SSLインスタンスよりも長い寿命を持つ必要があります。コピーされません。すべてのコールバックを提供する必要があります。
\return WOLFSSL_SUCCESS 成功した場合。
\return WOLFSSL_SUCCESS 成功した場合。
\param ctx - wolfSSL_CTX_new() を使用して作成された WOLFSSL_CTX 構造体へのポインタ
\param quic_method - コールバック構造
\param ctx - wolfSSL_CTX_new()を使用して作成されたWOLFSSL_CTX構造体へのポインタ。
\param quic_method - コールバック構造体。
\sa wolfSSL_is_quic
\sa wolfSSL_set_quic_method
\sa wolfSSL_is_quic
\sa wolfSSL_set_quic_method
*/
int wolfSSL_CTX_set_quic_method(WOLFSSL_CTX *ctx, const WOLFSSL_QUIC_METHOD *quic_method);
/*!
\ingroup QUIC
\ingroup QUIC
\brief を提供して、WOLFSSL インスタンスQUIC プロトコルを有効にします。
4 つのコールバックが必要です。 WOLFSSL は TLSv1.3 である必要があります。
\brief 必要な4つのコールバックを提供することにより、WOLFSSLインスタンスに対してQUICプロトコルを有効化します。WOLFSSLはTLSv1.3である必要があります。
渡された quic_methodは、SSL インスタンスよりも長い寿命が必要です。
コピーされません。 すべてのコールバックを提供する必要があります。
渡されたquic_methodは、SSLインスタンスよりも長い寿命を持つ必要があります。コピーされません。すべてのコールバックを提供する必要があります。
\return WOLFSSL_SUCCESS 成功した場合。
\return WOLFSSL_SUCCESS 成功した場合。
\param ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。
\param quic_method - コールバック構造
\param ssl - wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
\param quic_method - コールバック構造体。
\sa wolfSSL_is_quic
\sa wolfSSL_CTX_set_quic_method
\sa wolfSSL_is_quic
\sa wolfSSL_CTX_set_quic_method
*/
int wolfSSL_set_quic_method(WOLFSSL *ssl, const WOLFSSL_QUIC_METHOD *quic_method);
/*!
\ingroup QUIC
\ingroup QUIC
\brief QUIC が WOLFSSL インスタンスでアクティブ化されているかどうかを確認します。
\brief WOLFSSLインスタンスでQUICが有効化されているかどうかを確認します。
\return WOLFSSLQUIC を使用している場合は 1 を返します
\return 1 WOLFSSLQUICを使用している場合。
\param ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。
\param ssl - wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
\sa wolfSSL_CTX_quic_method
\sa wolfSSL_CTX_set_quic_method
\sa wolfSSL_CTX_quic_method
\sa wolfSSL_CTX_set_quic_method
*/
int wolfSSL_is_quic(WOLFSSL *ssl);
/*!
\ingroup QUIC
\ingroup QUIC
\brief 現在使用中の読み取りの暗号化レベルを決定します。 場合にのみ意味があります。
WOLFSSL インスタンスは QUIC を使用しています。
\brief 現在使用中の読み取りの暗号化レベルを決定します。WOLFSSLインスタンスがQUICを使用している場合にのみ意味があります。
有効レベルは、データを返すときは常にパラメーターであることに注意してください
前方へ。 ピアからのデータは、これを介して報告される以外のレベルで到着する可能性があります
関数。
有効レベルは、データをやり取りする際に常にパラメータです。ピアからのデータは、この関数で報告されるレベル以外のレベルで到着する可能性があります
\return 暗号化レベル。
\return 暗号化レベル。
\param ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。
\param ssl - wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
\sa wolfSSL_quic_write_level
\sa wolfSSL_quic_write_level
*/
WOLFSSL_ENCRYPTION_LEVEL wolfSSL_quic_read_level(const WOLFSSL *ssl);
/*!
\ingroup QUIC
\ingroup QUIC
\brief 現在使用中の書き込みの暗号化レベルを決定します。 場合にのみ意味があります。
WOLFSSL インスタンスは QUIC を使用しています。
\brief 現在使用中の書き込みの暗号化レベルを決定します。WOLFSSLインスタンスがQUICを使用している場合にのみ意味があります。
有効レベルは、データを返すときは常にパラメーターであることに注意してください
前方へ。 ピアからのデータは、これを介して報告される以外のレベルで到着する可能性があります
関数。
有効レベルは、データをやり取りする際に常にパラメータです。ピアからのデータは、この関数で報告されるレベル以外のレベルで到着する可能性があります
\return 暗号化レベル。
\return 暗号化レベル。
\param ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。
\param ssl - wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
\sa wolfSSL_quic_read_level
\sa wolfSSL_quic_read_level
*/
WOLFSSL_ENCRYPTION_LEVEL wolfSSL_quic_write_level(const WOLFSSL *ssl);
/*!
\ingroup QUIC
\ingroup QUIC
\brief どの QUIC バージョンを使用するかを設定します。 これを呼ばずに、
WOLFSSL は両方 (draft-27 と v1) をサーバーに提供します。 受け入れる
クライアントからの両方と、最新のものをネゴシエートします。
\brief 使用するQUICバージョンを設定します。これを呼び出さない場合、WOLFSSLは両方draft-27とv1をサーバーに提供し、またはクライアントから両方を受け入れて最新のものをネゴシエートします。
\return WOLFSSL_SUCCESS 成功した場合。
\return WOLFSSL_SUCCESS 成功した場合。
\param ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。
\param use_legacy - ドラフト 27 を使用する場合は true、QUICv1 のみを使用する場合は 0。
\param ssl - wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
\param use_legacy - draft-27を使用する場合はtrue、QUICv1のみを使用する場合は0。
\sa wolfSSL_set_quic_transport_version
\sa wolfSSL_set_quic_transport_version
*/
void wolfSSL_set_quic_use_legacy_codepoint(WOLFSSL *ssl, int use_legacy);
/*!
\ingroup QUIC
\ingroup QUIC
\brief どの QUIC バージョンを使用するかを設定します。
\brief 使用するQUICバージョンを設定します。
\return WOLFSSL_SUCCESS 成功した場合。
\return WOLFSSL_SUCCESS 成功した場合。
\param ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。
\param version - QUIC バージョンに定義された TLS 拡張。
\param ssl - wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
\param version - QUICバージョンに定義されたTLS拡張。
\sa wolfSSL_set_quic_use_legacy_codepoint
\sa wolfSSL_set_quic_use_legacy_codepoint
*/
void wolfSSL_set_quic_transport_version(WOLFSSL *ssl, int );
void wolfSSL_set_quic_transport_version(WOLFSSL *ssl, int version);
/*!
\ingroup QUIC
\ingroup QUIC
\brief 構成された QUIC バージョンを取得します。
\brief 設定されたQUICバージョンを取得します。
\return 構成されたバージョンの TLS 拡張。
\return 設定されたバージョンのTLS拡張。
\param ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。
\param ssl - wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
\sa wolfSSL_set_quic_use_legacy_codepoint
\sa wolfSSL_set_quic_transport_version
\sa wolfSSL_set_quic_use_legacy_codepoint
\sa wolfSSL_set_quic_transport_version
*/
int wolfSSL_get_quic_transport_version(const WOLFSSL *ssl);
/*!
\ingroup QUIC
\ingroup QUIC
\brief 使用する QUIC トランスポート パラメータを設定します。
\brief 使用するQUICトランスポートパラメータを設定します。
\return WOLFSSL_SUCCESS 成功した場合。
\return WOLFSSL_SUCCESS 成功した場合。
\param ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。
\param params - 使用するパラメータ バイト
·param params_len - パラメータの長さ
\param ssl - wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
\param params - 使用するパラメータバイト
\param params_len - パラメータの長さ
\sa wolfSSL_set_quic_use_legacy_codepoint
\sa wolfSSL_set_quic_transport_version
\sa wolfSSL_set_quic_use_legacy_codepoint
\sa wolfSSL_set_quic_transport_version
*/
int wolfSSL_set_quic_transport_params(WOLFSSL *ssl, const uint8_t *params, size_t params_len);
/*!
\ingroup QUIC
\ingroup QUIC
\brief ネゴシエートされた QUIC トランスポート バージョンを取得します。 これは与えるだけです
それぞれの TLS 拡張機能が有効になった後に呼び出されると、意味のある結果が得られます。
ピアから見られました。
\brief ネゴシエートされたQUICトランスポートバージョンを取得します。これは、ピアからの該当するTLS拡張が確認された後に呼び出された場合にのみ意味のある結果を提供します。
\return ネゴシエートされたバージョンまたは -1 を返します
\return ネゴシエートされたバージョンまたは-1。
\param ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。
\param ssl - wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
\sa wolfSSL_set_quic_use_legacy_codepoint
\sa wolfSSL_set_quic_transport_version
\sa wolfSSL_set_quic_use_legacy_codepoint
\sa wolfSSL_set_quic_transport_version
*/
int wolfSSL_get_peer_quic_transport_version(const WOLFSSL *ssl);
/*!
\ingroup QUIC
\ingroup QUIC
\brief ネゴシエートされた QUIC トランスポート パラメータを取得します。 これは与えるだけです
それぞれの TLS 拡張機能が有効になった後に呼び出されると、意味のある結果が得られます。
ピアから見られました。
\brief ネゴシエートされたQUICトランスポートパラメータを取得します。これは、ピアからの該当するTLS拡張が確認された後に呼び出された場合にのみ意味のある結果を提供します。
\param ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。
\param out_params - ピアに送信されパラメーター。利用できない場合は NULL に設定されます。
\param out_params_len - ピアに送信されパラメータの長さ利用できない場合は 0 に設定
\param ssl - wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
\param out_params - ピアによって送信されパラメータ利用できない場合はNULLに設定されます。
\param out_params_len - ピアによって送信されパラメータの長さ利用できない場合は0に設定されます。
\sa wolfSSL_get_peer_quic_transport_version
\sa wolfSSL_get_peer_quic_transport_version
*/
void wolfSSL_get_peer_quic_transport_params(const WOLFSSL *ssl, const uint8_t **out_params, size_t *out_params_len);
/*!
\ingroup QUIC
\ingroup QUIC
\brief 初期データを有効にするかどうかを構成します。 サーバーがシグナルを送ることを目的としています
これをクライアントに。
\brief Early Dataが有効かどうかを設定します。サーバーがクライアントにこれを通知することを目的としています
\param ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。
\param enabled - != 初期データが有効な場合は 0
\param ssl - wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
\param enabled - early dataが有効な場合は!= 0
*/
void wolfSSL_set_quic_early_data_enabled(WOLFSSL *ssl, int enabled);
/*!
\ingroup QUIC
\ingroup QUIC
\brief 「飛行中」のデータ量についてアドバイスを得る。 未承認
指定された暗号化レベルで。 これはWOLFSSLインスタンスのデータ量です
バッファする準備ができています。
\brief 与えられた暗号化レベルで「インフライト」であるべき、つまり未確認であるべきデータ量についてアドバイスを取得します。これは、WOLFSSLインスタンスがバッファリングする準備ができているデータの量です。
\return 飛行中の推奨最大データを返す
\return 推奨される最大インフライトデータ。
\param ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。
\param level - 問い合わせる暗号化レベル
\param ssl - wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
\param level - 問い合わせる暗号化レベル
*/
size_t wolfSSL_quic_max_handshake_flight_len(const WOLFSSL *ssl, WOLFSSL_ENCRYPTION_LEVEL );
size_t wolfSSL_quic_max_handshake_flight_len(const WOLFSSL *ssl, WOLFSSL_ENCRYPTION_LEVEL level);
/*!
\ingroup QUIC
\ingroup QUIC
\brief 復号された CRYPTO データを、さらに処理するために WOLFSSL インスタンスに渡します。
通話間の暗号化レベルは、すべて増加することが許可されており
また、暗号化の変更前にデータレコードが完全であることを確認しました
レベルが受け入れられます。
\brief 復号されたCRYPTOデータをWOLFSSLインスタンスに渡してさらに処理します。
呼び出し間の暗号化レベルは増加することのみが許可され、暗号化レベルの変更が受け入れられる前にデータレコードが完全であることもチェックされます。
\return WOLFSSL_SUCCESS 成功した場合。
\return WOLFSSL_SUCCESS 成功した場合。
\param ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。
\param level - データが暗号化されたレベル
\param data - データ自体
\param len - データの長さ
\param ssl - wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
\param level - データが暗号化されていたレベル
\param data - データ自体
\param len - データの長さ
\sa wolfSSL_process_quic_post_handshake
\sa wolfSSL_process_quic_post_handshake
\sa wolfSSL_quic_read_write
\sa wolfSSL_accept
\sa wolfSSL_connect
*/
int wolfSSL_provide_quic_data(WOLFSSL *ssl, WOLFSSL_ENCRYPTION_LEVEL , const uint8_t *data, size_t len);
int wolfSSL_provide_quic_data(WOLFSSL *ssl, WOLFSSL_ENCRYPTION_LEVEL level, const uint8_t *data, size_t len);
/*!
\ingroup QUIC
\ingroup QUIC
\brief ハンドシェイク後に提供されたすべての CRYPTO レコードを処理します
完了しました。 それより前に呼び出すと失敗します。
\brief ハンドシェイクが完了した後に提供されたCRYPTOレコードを処理します。それ以前に呼び出された場合は失敗します。
\return WOLFSSL_SUCCESS 成功した場合。
\return WOLFSSL_SUCCESS 成功した場合。
\param ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。
\param ssl - wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
\sa wolfSSL_provide_quic_data
\sa wolfSSL_quic_read_write
\sa wolfSSL_accept
\sa wolfSSL_connect
\sa wolfSSL_provide_quic_data
\sa wolfSSL_quic_read_write
\sa wolfSSL_accept
\sa wolfSSL_connect
*/
WOLFSSL_API int wolfSSL_process_quic_post_handshake(WOLFSSL *ssl);
/*!
\ingroup QUIC
\ingroup QUIC
\brief ハンドシェイク中またはハンドシェイク後に提供されたすべての CRYPTO レコードを処理します。
ハンドシェイクがまだ完了していない場合は進行し、そうでない場合は次のように機能します
wolfSSL_process_quic_post_handshake()。
\brief ハンドシェイク中またはハンドシェイク後に提供されたCRYPTOレコードを処理します。
ハンドシェイクがまだ完了していない場合はハンドシェイクを進行させ、そうでない場合はwolfSSL_process_quic_post_handshake()のように動作します
\return WOLFSSL_SUCCESS 成功した場合。
\return WOLFSSL_SUCCESS 成功した場合。
\param ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。
\param ssl - wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
\sa wolfSSL_provide_quic_data
\sa wolfSSL_quic_read_write
\sa wolfSSL_accept
\sa wolfSSL_connect
\sa wolfSSL_provide_quic_data
\sa wolfSSL_quic_read_write
\sa wolfSSL_accept
\sa wolfSSL_connect
*/
int wolfSSL_quic_read_write(WOLFSSL *ssl);
/*!
\ingroup QUIC
\ingroup QUIC
\brief TLS ハンドシェイクでネゴシエートされた AEAD 暗号を取得します。
\brief TLSハンドシェイクでネゴシエートされたAEAD暗号を取得します。
\return ネゴシエートされた暗号、または決定されない場合は NULL を返します
\return ネゴシエートされた暗号、または決定されていない場合はNULL。
\param ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。
\param ssl - wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
\sa wolfSSL_quic_aad_is_gcm
\sa wolfSSL_quic_aad_is_ccm
\sa wolfSSL_quic_aad_is_chacha20
\sa wolfSSL_quic_get_aad_tag_len
\sa wolfSSL_quic_get_md
\sa wolfSSL_quic_get_hp
\sa wolfSSL_quic_crypt_new
\sa wolfSSL_quic_aad_encrypt
\sa wolfSSL_quic_aad_decrypt
\sa wolfSSL_quic_aead_is_gcm
\sa wolfSSL_quic_aead_is_ccm
\sa wolfSSL_quic_aead_is_chacha20
\sa wolfSSL_quic_get_aead_tag_len
\sa wolfSSL_quic_get_md
\sa wolfSSL_quic_get_hp
\sa wolfSSL_quic_crypt_new
\sa wolfSSL_quic_aead_encrypt
\sa wolfSSL_quic_aead_decrypt
*/
const WOLFSSL_EVP_CIPHER *wolfSSL_quic_get_aad(WOLFSSL *ssl);
const WOLFSSL_EVP_CIPHER *wolfSSL_quic_get_aead(WOLFSSL *ssl);
/*!
\ingroup QUIC
\ingroup QUIC
\brief AEAD 暗号が GCM かどうかを確認します。
\brief AEAD暗号がGCMであるかどうかを確認します。
\return != 0 (AEAD 暗号が GCM の場合)
\return AEAD暗号がGCMの場合は!= 0
\param cipher - 暗号
\param cipher - 暗号
\sa wolfSSL_quic_get_aad
\sa wolfSSL_quic_aad_is_ccm
\sa wolfSSL_quic_aad_is_chacha20
\sa wolfSSL_quic_get_aad_tag_len
\sa wolfSSL_quic_get_md
\sa wolfSSL_quic_get_hp
\sa wolfSSL_quic_crypt_new
\sa wolfSSL_quic_aad_encrypt
\sa wolfSSL_quic_aad_decrypt
\sa wolfSSL_quic_get_aead
\sa wolfSSL_quic_aead_is_ccm
\sa wolfSSL_quic_aead_is_chacha20
\sa wolfSSL_quic_get_aead_tag_len
\sa wolfSSL_quic_get_md
\sa wolfSSL_quic_get_hp
\sa wolfSSL_quic_crypt_new
\sa wolfSSL_quic_aead_encrypt
\sa wolfSSL_quic_aead_decrypt
*/
int wolfSSL_quic_aead_is_gcm(const WOLFSSL_EVP_CIPHER *aead_cipher);
/*!
\ingroup QUIC
\ingroup QUIC
\brief AEAD 暗号が CCM かどうかを確認します。
\brief AEAD暗号がCCMであるかどうかを確認します。
\return != 0 AEAD 暗号が CCM の場合。
\return AEAD暗号がCCMの場合は!= 0
\param cipher - 暗号
\param cipher - 暗号
\sa wolfSSL_quic_get_aad
\sa wolfSSL_quic_aad_is_gcm
\sa wolfSSL_quic_aad_is_chacha20
\sa wolfSSL_quic_get_aad_tag_len
\sa wolfSSL_quic_get_md
\sa wolfSSL_quic_get_hp
\sa wolfSSL_quic_crypt_new
\sa wolfSSL_quic_aad_encrypt
\sa wolfSSL_quic_aad_decrypt
\sa wolfSSL_quic_get_aead
\sa wolfSSL_quic_aead_is_gcm
\sa wolfSSL_quic_aead_is_chacha20
\sa wolfSSL_quic_get_aead_tag_len
\sa wolfSSL_quic_get_md
\sa wolfSSL_quic_get_hp
\sa wolfSSL_quic_crypt_new
\sa wolfSSL_quic_aead_encrypt
\sa wolfSSL_quic_aead_decrypt
*/
int wolfSSL_quic_aead_is_ccm(const WOLFSSL_EVP_CIPHER *aead_cipher);
/*!
\ingroup QUIC
\ingroup QUIC
\brief AEAD 暗号が CHACHA20 かどうかを確認します。
\brief AEAD暗号がCHACHA20であるかどうかを確認します。
\return != 0 は、AEAD 暗号が CHACHA20 の場合です
\return AEAD暗号がCHACHA20の場合は!= 0
\param cipher - 暗号
\param cipher - 暗号
\sa wolfSSL_quic_get_aad
\sa wolfSSL_quic_aad_is_ccm
\sa wolfSSL_quic_aad_is_gcm
\sa wolfSSL_quic_get_aad_tag_len
\sa wolfSSL_quic_get_md
\sa wolfSSL_quic_get_hp
\sa wolfSSL_quic_crypt_new
\sa wolfSSL_quic_aad_encrypt
\sa wolfSSL_quic_aad_decrypt
\sa wolfSSL_quic_get_aead
\sa wolfSSL_quic_aead_is_ccm
\sa wolfSSL_quic_aead_is_gcm
\sa wolfSSL_quic_get_aead_tag_len
\sa wolfSSL_quic_get_md
\sa wolfSSL_quic_get_hp
\sa wolfSSL_quic_crypt_new
\sa wolfSSL_quic_aead_encrypt
\sa wolfSSL_quic_aead_decrypt
*/
int wolfSSL_quic_aead_is_chacha20(const WOLFSSL_EVP_CIPHER *aead_cipher);
/*!
\ingroup QUIC
\ingroup QUIC
\brief AEAD 暗号のタグの長さを決定します。
\brief AEAD暗号のタグを決定します。
\return AEAD 暗号のタグ長。
\return AEAD暗号のタグ長。
\param cipher - 暗号
\param cipher - 暗号
\sa wolfSSL_quic_get_aad
\sa wolfSSL_quic_get_aead
*/
WOLFSSL_API size_t wolfSSL_quic_get_aead_tag_len(const WOLFSSL_EVP_CIPHER *aead_cipher);
/*!
\ingroup QUIC
\ingroup QUIC
\brief TLS ハンドシェイクでネゴシエートされたメッセージ ダイジェストを決定します。
\brief TLSハンドシェイクでネゴシエートされたメッセージダイジェストを決定します。
\return TLS ハンドシェイクでネゴシエートされたメッセージ ダイジェストを返す
\return TLSハンドシェイクでネゴシエートされたメッセージダイジェスト
\param ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。
\param ssl - wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
\sa wolfSSL_quic_get_aad
\sa wolfSSL_quic_get_hp
\sa wolfSSL_quic_get_aead
\sa wolfSSL_quic_get_hp
*/
WOLFSSL_API const WOLFSSL_EVP_MD *wolfSSL_quic_get_md(WOLFSSL *ssl);
/*!
\ingroup QUIC
\ingroup QUIC
\brief TLS ハンドシェイクでネゴシエートされたヘッダー保護暗号を決定します。
\brief TLSハンドシェイクでネゴシエートされたヘッダー保護暗号を決定します。
\return TLS ハンドシェイクでネゴシエートされたヘッダー保護暗号を返します
\return TLSハンドシェイクでネゴシエートされたヘッダー保護暗号
\param ssl - wolfSSL_new() を使用して作成された WOLFSSL 構造体へのポインタ。
\param ssl - wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
\sa wolfSSL_quic_get_aad
\sa wolfSSL_quic_get_md
\sa wolfSSL_quic_get_aead
\sa wolfSSL_quic_get_md
*/
const WOLFSSL_EVP_CIPHER *wolfSSL_quic_get_hp(WOLFSSL *ssl);
/*!
\ingroup QUIC
\ingroup QUIC
\brief 暗号化/復号化のための暗号コンテキストを作成します。
\brief 暗号化/復号の暗号コンテキストを作成します。
\return エラーの場合は、作成されたコンテキストまたは NULL を返します
\return 作成されたコンテキストまたはエラーの場合はNULL
\param cipher - コンテキストで使用する暗号。
\param key - コンテキストで使用するキー
\param iv - コンテキストで使用する iv。
\param encrypt - 暗号化の場合は != 0、それ以外の場合は復号
\param cipher - コンテキストで使用する暗号。
\param key - コンテキストで使用する
\param iv - コンテキストで使用するiv。
\param encrypt - 暗号化の場合は!= 0、そうでない場合は復号
\sa wolfSSL_quic_get_aad
\sa wolfSSL_quic_get_hp
\sa wolfSSL_quic_aad_encrypt
\sa wolfSSL_quic_aad_decrypt
\sa wolfSSL_quic_get_aead
\sa wolfSSL_quic_get_hp
\sa wolfSSL_quic_aead_encrypt
\sa wolfSSL_quic_aead_decrypt
*/
WOLFSSL_EVP_CIPHER_CTX *wolfSSL_quic_crypt_new(const WOLFSSL_EVP_CIPHER *cipher,
const uint8_t *key, const uint8_t *iv, int encrypt);
const uint8_t *key, const uint8_t *iv, int encrypt);
/*!
\ingroup QUIC
\ingroup QUIC
\brief 指定されたコンテキストでプレーン テキストを暗号化します。
\brief 与えられたコンテキストで平文を暗号化します。
\return WOLFSSL_SUCCESS 成功した場合。
\return WOLFSSL_SUCCESS 成功した場合。
\param dest - 暗号化されたデータ書き込み先
\param aead_ctx - 使用する暗号コンテキスト
\param plain - 暗号化するプレーン データ
\param plainlen - プレーン データの長さ
\param iv - 使用する iv
\param aad - 使用する追加
\param aadlen - aad の長さ
\param dest - 暗号化されたデータ書き込む宛先。
\param aead_ctx - 使用する暗号コンテキスト
\param plain - 暗号化する平文データ
\param plainlen - 平文データの長さ
\param iv - 使用するiv
\param aad - 使用するaad。
\param aadlen - aadの長さ
\sa wolfSSL_quic_get_aad
\sa wolfSSL_quic_get_hp
\sa wolfSSL_quic_crypt_new
\sa wolfSSL_quic_aad_decrypt
\sa wolfSSL_quic_get_aead
\sa wolfSSL_quic_get_hp
\sa wolfSSL_quic_crypt_new
\sa wolfSSL_quic_aead_decrypt
*/
int wolfSSL_quic_aead_encrypt(uint8_t *dest, WOLFSSL_EVP_CIPHER_CTX *aead_ctx,
const uint8_t *plain, size_t plainlen,
const uint8_t *iv, const uint8_t *aad, size_t aadlen);
const uint8_t *plain, size_t plainlen,
const uint8_t *iv, const uint8_t *aad, size_t aadlen);
/*!
\ingroup QUIC
\ingroup QUIC
\brief 指定されたコンテキストで暗号文を復号します。
\brief 与えられたコンテキストで暗号文を復号します。
\return WOLFSSL_SUCCESS 成功した場合。
\return WOLFSSL_SUCCESS 成功した場合。
\param dest - プレーンテキストの書き込み先
\param ctx - 使用する暗号コンテキスト
\param enc - 復号する暗号化データ
\param envlen - 暗号化されたデータの長さ
\param iv - 使用する iv
\param aad - 使用する追加
\param aadlen - aad の長さ
\param dest - 平文を書き込む宛先。
\param ctx - 使用する暗号コンテキスト
\param enc - 復号する暗号化データ
\param envlen - 暗号化データの長さ
\param iv - 使用するiv
\param aad - 使用するaad。
\param aadlen - aadの長さ
\sa wolfSSL_quic_get_aad
\sa wolfSSL_quic_get_hp
\sa wolfSSL_quic_crypt_new
\sa wolfSSL_quic_aad_encrypt
\sa wolfSSL_quic_get_aead
\sa wolfSSL_quic_get_hp
\sa wolfSSL_quic_crypt_new
\sa wolfSSL_quic_aead_encrypt
*/
int wolfSSL_quic_aad_decrypt(uint8_t *dest, WOLFSSL_EVP_CIPHER_CTX *ctx,
const uint8_t *enc, size_t enclen,
const uint8_t *iv, const uint8_t *aad, size_t aadlen);
int wolfSSL_quic_aead_decrypt(uint8_t *dest, WOLFSSL_EVP_CIPHER_CTX *ctx,
const uint8_t *enc, size_t enclen,
const uint8_t *iv, const uint8_t *aad, size_t aadlen);
/*!
\ingroup QUIC
\ingroup QUIC
\brief 擬似乱数キーを抽出します。
\brief 疑似ランダム鍵を抽出します。
\return WOLFSSL_SUCCESS 成功した場合。
\return WOLFSSL_SUCCESS 成功した場合。
\param dest - キーの書き込み先
\param md - 使用するメッセージ ダイジェスト
\param secret - 使用するシークレット
\param secretlen - シークレットの長さ
\param salt - 使用するソルト
\param saltlen - ソルトの長さ
\param dest - 鍵を書き込む宛先。
\param md - 使用するメッセージダイジェスト
\param secret - 使用するシークレット
\param secretlen - シークレットの長さ
\param salt - 使用するソルト
\param saltlen - ソルトの長さ
\sa wolfSSL_quic_hkdf_expand
\sa wolfSSL_quic_hkdf
\sa wolfSSL_quic_hkdf_expand
\sa wolfSSL_quic_hkdf
*/
int wolfSSL_quic_hkdf_extract(uint8_t *dest, const WOLFSSL_EVP_MD *md,
const uint8_t *secret, size_t secretlen,
const uint8_t *salt, size_t saltlen);
const uint8_t *secret, size_t secretlen,
const uint8_t *salt, size_t saltlen);
/*!
\ingroup QUIC
\ingroup QUIC
\brief 疑似ランダム キーを新しいキーに展開します。
\brief 疑似ランダムを新しい鍵に拡張します。
\return WOLFSSL_SUCCESS 成功した場合。
\return WOLFSSL_SUCCESS 成功した場合。
\param dest - キーの書き込み先
\param destlen - 展開するキーの長さ
\param md - 使用するメッセージ ダイジェスト
\param secret - 使用するシークレット
\param secretlen - シークレットの長さ
\param info - 使用する情報
\param infolen - 情報の長さ
\param dest - 鍵を書き込む宛先。
\param destlen - 拡張する鍵の長さ
\param md - 使用するメッセージダイジェスト
\param secret - 使用するシークレット
\param secretlen - シークレットの長さ
\param info - 使用する情報
\param infolen - 情報の長さ
\sa wolfSSL_quic_hkdf_extract
\sa wolfSSL_quic_hkdf
\sa wolfSSL_quic_hkdf_extract
\sa wolfSSL_quic_hkdf
*/
int wolfSSL_quic_hkdf_expand(uint8_t *dest, size_t destlen,
const WOLFSSL_EVP_MD *md,
const uint8_t *secret, size_t secretlen,
const uint8_t *info, size_t infolen);
const WOLFSSL_EVP_MD *md,
const uint8_t *secret, size_t secretlen,
const uint8_t *info, size_t infolen);
/*!
\ingroup QUIC
\ingroup QUIC
\brief 疑似乱数キーを展開して抽出します。
\brief 疑似ランダム鍵を拡張および抽出します。
\return WOLFSSL_SUCCESS 成功した場合。
\return WOLFSSL_SUCCESS 成功した場合。
\param dest - キーの書き込み先
\param destlen - キーの長さ
\param md - 使用するメッセージ ダイジェスト
\param secret - 使用するシークレット
\param secretlen - シークレットの長さ
\param salt - 使用するソルト
\param saltlen - ソルトの長さ
\param info - 使用する情報
\param infolen - 情報の長さ
\param dest - 鍵を書き込む宛先。
\param destlen - の長さ
\param md - 使用するメッセージダイジェスト
\param secret - 使用するシークレット
\param secretlen - シークレットの長さ
\param salt - 使用するソルト
\param saltlen - ソルトの長さ
\param info - 使用する情報
\param infolen - 情報の長さ
\sa wolfSSL_quic_hkdf_extract
\sa wolfSSL_quic_hkdf_expand
\sa wolfSSL_quic_hkdf_extract
\sa wolfSSL_quic_hkdf_expand
*/
int wolfSSL_quic_hkdf(uint8_t *dest, size_t destlen,
const WOLFSSL_EVP_MD *md,
const uint8_t *secret, size_t secretlen,
const uint8_t *salt, size_t saltlen,
const uint8_t *info, size_t infolen);
const WOLFSSL_EVP_MD *md,
const uint8_t *secret, size_t secretlen,
const uint8_t *salt, size_t saltlen,
const uint8_t *info, size_t infolen);

View File

@@ -1,52 +1,69 @@
/*!
\ingroup Random
\brief Init Global WhiteWood Netrandomのコンテキスト
\return 0 成功
\return BAD_FUNC_ARG configfileがnullまたはタイムアウトのどちらかが否定的です。
\return RNG_FAILURE_E RNGの初期化に失敗しました。
\param configFile 設定ファイルへのパス
\param hmac_cb HMACコールバックを作成するにはオプションです
\brief グローバルWhitewood netRandomコンテキストを初期化します
\return 0 成功
\return BAD_FUNC_ARG configFileがnullまたはtimeoutが負の値の場合。
\return RNG_FAILURE_E rngの初期化に失敗しました
\param configFile 設定ファイルへのパス
\param hmac_cb HMACコールバックを作成するためのオプション。
\param timeout タイムアウト期間。
_Example_
\code
char* config = "path/to/config/example.conf";
int time = // Some sufficient timeout value;
int time = // 十分なタイムアウト値;
if (wc_InitNetRandom(config, NULL, time) != 0)
{
// Some error occurred
// エラーが発生しました
}
\endcode
\sa wc_FreeNetRandom
*/
int wc_InitNetRandom(const char* configFile, wnr_hmac_key hmac_cb, int timeout);
/*!
\ingroup Random
\brief 無料のGlobal WhiteWood Netrandomコンテキスト。
\return 0 成功
\return BAD_MUTEX_E Wnr_Mutexでミューテックスをロックするエラー
\brief グローバルWhitewood netRandomコンテキストを解放します。
\return 0 成功
\return BAD_MUTEX_E wnr_mutexのミューテックスロックエラー
\param none 戻り値なし。
_Example_
\code
int ret = wc_FreeNetRandom();
if(ret != 0)
{
// Handle the error
// エラーを処理
}
\endcode
\sa wc_InitNetRandom
*/
int wc_FreeNetRandom(void);
/*!
\ingroup Random
\brief RNGのシードOSからとキー暗号を取得します。割り当てられたRNG-> DRBG決定論的ランダムビットジェネレータが割り当てられますWC_FREERNGで割り当てられている必要があります。これはブロッキング操作です。
\return 0 成功しています。
\return MEMORY_E XMallocに失敗しました
\return WINCRYPT_E WC_GENERATSEEDコンテキストの取得に失敗しました
\return CRYPTGEN_E WC_GENERATSEEDランダムになりました
\return BAD_FUNC_ARG WC_RNG_GenerateBlock入力はNULLまたはSZがMAX_REQUEST_LENを超えています
\return DRBG_CONT_FIPS_E wc_rng_generateblockhash_genはdrbg_cont_failureを返しました
\return RNG_FAILURE_E wc_rng_generateBlockデフォルトエラーです。RNGのステータスはもともとOKではなく、drbg_failedに設定されています
\brief rng用のシード(OSから)と鍵暗号を取得します。rng->drbg(決定論的乱数ビット生成器)が割り当てられます(wc_FreeRngで割り当て解除する必要があります)。これはブロッキング操作です。
\return 0 成功時。
\return MEMORY_E XMALLOCが失敗しました
\return WINCRYPT_E wc_GenerateSeed: コンテキストの取得に失敗しました
\return CRYPTGEN_E wc_GenerateSeed: ランダムの取得に失敗しました
\return BAD_FUNC_ARG wc_RNG_GenerateBlock入力がnullまたはszがMAX_REQUEST_LENを超えています
\return DRBG_CONT_FIPS_E wc_RNG_GenerateBlock: Hash_genがDRBG_CONT_FAILUREを返しました
\return RNG_FAILURE_E wc_RNG_GenerateBlock: デフォルトエラー。rngのステータスが元々okでないか、DRBG_FAILEDに設定されています
\param rng シードと鍵暗号で使用するために初期化される乱数生成器
_Example_
\code
RNG rng;
@@ -55,16 +72,17 @@ int wc_FreeNetRandom(void);
#ifdef HAVE_CAVIUM
ret = wc_InitRngCavium(&rng, CAVIUM_DEV_ID);
if (ret != 0){
printf(RNG Nitrox init for device: %d failed, CAVIUM_DEV_ID);
printf("RNG Nitrox init for device: %d failed", CAVIUM_DEV_ID);
return -1;
}
#endif
ret = wc_InitRng(&rng);
if (ret != 0){
printf(RNG init failed);
printf("RNG init failed");
return -1;
}
\endcode
\sa wc_InitRngCavium
\sa wc_RNG_GenerateBlock
\sa wc_RNG_GenerateByte
@@ -75,13 +93,18 @@ int wc_InitRng(WC_RNG*);
/*!
\ingroup Random
\brief 疑似ランダムデータのSZバイトを出力にコピーします。必要に応じてRNGブロッキングします。
\return 0 成功した
\return BAD_FUNC_ARG 入力はNULLまたはSZがMAX_REQUEST_LENを超えています
\return DRBG_CONT_FIPS_E hash_genはdrbg_cont_failureを返しました
\return RNG_FAILURE_E デフォルトのエラーRNGのステータスはもともとOKではなく、drbg_failedに設定されています
\param rng 乱数発生器はWC_INITRNGで初期化され
\param output ブロックがコピーされるバッファ
\brief 疑似乱数データのszバイトをoutputにコピーします。必要に応じてrngを再シードします(ブロッキング)。
\return 0 成功時
\return BAD_FUNC_ARG 入力がnullまたはszがMAX_REQUEST_LENを超えています
\return DRBG_CONT_FIPS_E Hash_genがDRBG_CONT_FAILUREを返しまし
\return RNG_FAILURE_E デフォルトエラー。rngのステータスが元々okでないか、DRBG_FAILEDに設定されています
\param rng wc_InitRngで初期化された乱数生成器
\param output ブロックがコピーされるバッファ
\param sz 出力のサイズ(バイト単位)
_Example_
\code
RNG rng;
@@ -90,14 +113,15 @@ int wc_InitRng(WC_RNG*);
int ret = wc_InitRng(&rng);
if (ret != 0) {
return -1; //init of rng failed!
return -1; //rngの初期化失敗!
}
ret = wc_RNG_GenerateBlock(&rng, block, sz);
if (ret != 0) {
return -1; //generating block failed!
return -1; //ブロック生成失敗!
}
\endcode
\sa wc_InitRngCavium, wc_InitRng
\sa wc_RNG_GenerateByte
\sa wc_FreeRng
@@ -107,21 +131,29 @@ int wc_RNG_GenerateBlock(WC_RNG* rng, byte* b, word32 sz);
/*!
\ingroup Random
\brief 新しいWC_RNG構造を作成します。
\return WC_RNG 成功の構造
\return NULL 誤りに
\param heap ヒープ識別子へのポインタ
\param nonce nonceを含むバッファへのポインタ
\brief 新しいWC_RNG構造体を作成します。
\return WC_RNG 成功時の構造体
\return NULL エラー時
\param heap ヒープ識別子へのポインタ
\param nonce nonceを含むバッファへのポインタ
\param nonceSz nonceの長さ
_Example_
\code
RNG rng;
byte nonce[] = { initialize nonce };
byte nonce[] = { nonceを初期化 };
word32 nonceSz = sizeof(nonce);
wc_rng_new(&nonce, nonceSz, &heap);
\endcode
\sa wc_InitRng
\sa wc_rng_free
\sa wc_FreeRng
@@ -131,12 +163,17 @@ WC_RNG* wc_rng_new(byte* nonce, word32 nonceSz, void* heap)
/*!
\ingroup Random
\brief wc_rng_generateBlockを呼び出して、疑似ランダムデータのバイトをbにコピーします。必要に応じてRNGが再販されます。
\return 0 成功した
\return BAD_FUNC_ARG 入力はNULLまたはSZがMAX_REQUEST_LENを超えています
\return DRBG_CONT_FIPS_E hash_genはdrbg_cont_failureを返しました
\return RNG_FAILURE_E デフォルトのエラーRNGのステータスはもともとOKではなく、drbg_failedに設定されています
\param rng: 乱数発生器はWC_INITRNGで初期化され
\brief 疑似乱数データの1バイトをbにコピーするためにwc_RNG_GenerateBlockを呼び出します。必要に応じてrngを再シードします。
\return 0 成功時
\return BAD_FUNC_ARG 入力がnullまたはszがMAX_REQUEST_LENを超えています
\return DRBG_CONT_FIPS_E Hash_genがDRBG_CONT_FAILUREを返しまし
\return RNG_FAILURE_E デフォルトエラー。rngのステータスが元々okでないか、DRBG_FAILEDに設定されています
\param rng: wc_InitRngで初期化された乱数生成器
\param b ブロックがコピーされる1バイトのバッファ
_Example_
\code
RNG rng;
@@ -145,14 +182,15 @@ WC_RNG* wc_rng_new(byte* nonce, word32 nonceSz, void* heap)
int ret = wc_InitRng(&rng);
if (ret != 0) {
return -1; //init of rng failed!
return -1; //rngの初期化失敗!
}
ret = wc_RNG_GenerateByte(&rng, b);
if (ret != 0) {
return -1; //generating block failed!
return -1; //ブロック生成失敗!
}
\endcode
\sa wc_InitRngCavium
\sa wc_InitRng
\sa wc_RNG_GenerateBlock
@@ -163,23 +201,29 @@ int wc_RNG_GenerateByte(WC_RNG* rng, byte* b);
/*!
\ingroup Random
\brief RNGがDRGBを安全に解放するために必要なときに呼び出されるべきです。ゼロとXfrees RNG-DRBG。
\return 0 成功した
\return BAD_FUNC_ARG RNGまたはRNG-> DRGB NULL
\return RNG_FAILURE_E DRBGの割り当て解除に失敗しました
\brief drgbを安全に解放するために、RNGが不要になったときに呼び出す必要があります。rng-drbgをゼロ化しXFREEします。
\return 0 成功時
\return BAD_FUNC_ARG rngまたはrng->drgbがnull
\return RNG_FAILURE_E drbgの割り当て解除に失敗しました
\param rng wc_InitRngで初期化された乱数生成器
_Example_
\code
RNG rng;
int ret = wc_InitRng(&rng);
if (ret != 0) {
return -1; //init of rng failed!
return -1; //rngの初期化失敗!
}
int ret = wc_FreeRng(&rng);
if (ret != 0) {
return -1; //free of rng failed!
return -1; //rngの解放失敗!
}
\endcode
\sa wc_InitRngCavium
\sa wc_InitRng
\sa wc_RNG_GenerateBlock
@@ -190,20 +234,26 @@ int wc_FreeRng(WC_RNG*);
/*!
\ingroup Random
\brief RNGを安全に自由に解放するためにRNGが不要になったときに呼び出されるべきです。
\brief rngを安全に解放するために、RNGが不要になったときに呼び出す必要があります。
\param rng wc_InitRngで初期化された乱数生成器
_Example_
\code
RNG rng;
byte nonce[] = { initialize nonce };
byte nonce[] = { nonceを初期化 };
word32 nonceSz = sizeof(nonce);
rng = wc_rng_new(&nonce, nonceSz, &heap);
// use rng
// rngを使用
wc_rng_free(&rng);
\endcode
\sa wc_InitRng
\sa wc_rng_new
\sa wc_FreeRng
@@ -213,46 +263,50 @@ WC_RNG* wc_rng_free(WC_RNG* rng);
/*!
\ingroup Random
\brief DRBGの機能を作成しテストします。
\return 0 成功した
\return BAD_FUNC_ARG ELTOPYAと出力はNULLにしないでください。Reseed Set EntropybがNULLでなければならない場合
\return -1 テスト失敗
\param int RESEED設定されている場合は、Reseed機能をテストします
\param entropyA: DRGBをインスタンス化するエントロピー
\param entropyASz: バイト数のエントロピヤのサイズ
\param entropyB: Reseed Setを設定した場合、DRBGはEntropybでリサイードされます
\param entropyBSz: バイト単位のEntropybのサイズ
\param output: SEADRANDOMが設定されている場合は、Entropybに播種されたランダムなデータに初期化され、それ以外の場合はEntropya
\brief drbgの機能を作成してテストします。
\return 0 成功時
\return BAD_FUNC_ARG seedAとoutputはnullであってはなりません。reseedが設定されている場合、seedBはnullであってはなりません
\return -1 テスト失敗
\param int reseed: 設定されている場合、再シード機能をテストします
\param seedA: drgbをインスタンス化するシード
\param seedASz: seedAのサイズ(バイト単位)
\param seedB: reseedが設定されている場合、drbgはseedBで再シードされます
\param seedBSz: seedBのサイズ(バイト単位)
\param output: seedrandomが設定されている場合はseedBでシードされたランダムデータに初期化され、それ以外の場合はseedAでシードされます
\param outputSz: outputの長さ(バイト単位)
_Example_
\code
byte output[SHA256_DIGEST_SIZE * 4];
const byte test1EntropyB[] = ....; // test input for reseed false
const byte test1Output[] = ....; // testvector: expected output of
// reseed false
const byte test1EntropyB[] = ....; // reseed falseのテスト入力
const byte test1Output[] = ....; // テストベクター: reseed falseの期待出力
ret = wc_RNG_HealthTest(0, test1Entropy, sizeof(test1Entropy), NULL, 0,
output, sizeof(output));
if (ret != 0)
return -1;//healthtest without reseed failed
return -1;//再シードなしのヘルステスト失敗
if (XMEMCMP(test1Output, output, sizeof(output)) != 0)
return -1; //compare to testvector failed: unexpected output
return -1; //テストベクターとの比較失敗: 予期しない出力
const byte test2EntropyB[] = ....; // test input for reseed
const byte test2Output[] = ....; // testvector expected output of reseed
const byte test2EntropyB[] = ....; // reseedのテスト入力
const byte test2Output[] = ....; // テストベクターreseedの期待出力
ret = wc_RNG_HealthTest(1, test2EntropyA, sizeof(test2EntropyA),
test2EntropyB, sizeof(test2EntropyB),
output, sizeof(output));
if (XMEMCMP(test2Output, output, sizeof(output)) != 0)
return -1; //compare to testvector failed
return -1; //テストベクターとの比較失敗
\endcode
\sa wc_InitRngCavium
\sa wc_InitRng
\sa wc_RNG_GenerateBlock
\sa wc_RNG_GenerateByte
\sa wc_FreeRng
*/
int wc_RNG_HealthTest(int reseed,
const byte* entropyA, word32 entropyASz,
const byte* entropyB, word32 entropyBSz,
byte* output, word32 outputSz);
int wc_RNG_HealthTest(int reseed, const byte* seedA, word32 seedASz,
const byte* seedB, word32 seedBSz,
byte* output, word32 outputSz);

View File

@@ -1,17 +1,23 @@
/*!
\ingroup RIPEMD
\brief この関数は、RIPemdのダイジェスト、バッファ、LOLEN ,HILENを初期化することによってRIPemd構造を初期化します。
\return 0 機能の実行に成功したことに戻ります。RIPEMD構造が初期化されます。
\return BAD_FUNC_ARG RIPEMD構造がNULLの場合に返されます。
\brief この関数は、ripemdのダイジェスト、バッファ、loLenおよびhiLenを初期化することで、ripemd構造体を初期化ます。
\return 0 関数の実行が成功した場合に返されます。RipeMd構造体が初期化されます。
\return BAD_FUNC_ARG RipeMd構造体がNULLの場合に返されます。
\param ripemd 初期化するripemd構造体へのポインタ
_Example_
\code
RipeMd md;
int ret;
ret = wc_InitRipeMd(&md);
if (ret != 0) {
// Failure case.
// 失敗ケース
}
\endcode
\sa wc_RipeMdUpdate
\sa wc_RipeMdFinal
*/
@@ -19,14 +25,19 @@ int wc_InitRipeMd(RipeMd*);
/*!
\ingroup RIPEMD
\brief この関数はデータ入力のRIPemdダイジェストを生成し、結果をRIPemd-> Digestバッファに格納します。WC_RIPEMDUPDATEを実行した後、生成されたRIPemd-> Digestを既知の認証タグに比較してメッセージの信頼性を比較する必要があります。
\return 0 機能の実行に成功したことに戻ります。
\return BAD_FUNC_ARG RIPEMD構造がNULLの場合、またはデータがNULLで、LENがゼロでない場合に返されます。データがNULLであり、LENが0の場合、この関数は実行されるはずです。
\param ripemd: WC_INTRIPEMDで初期化されるRIPEMD構造へのポインタ
\param data ハッシュするデータ
\brief この関数は、入力データのRipeMdダイジェストを生成し、結果をripemd->digestバッファに格納します。wc_RipeMdUpdateを実行した後、生成されたripemd->digestを既知の認証タグと比較して、メッセージの真正性を検証する必要があります。
\return 0 関数の実行が成功した場合に返されます。
\return BAD_FUNC_ARG RipeMd構造体がNULLの場合、またはdataがNULLでlenがゼロでない場合に返されます。この関数は、dataがNULLでlenが0の場合は実行されるべきです。
\param ripemd wc_InitRipeMdで初期化されるripemd構造体へのポインタ
\param data ハッシュ化されるデータ
\param len データのサイズ(バイト単位)
_Example_
\code
const byte* data; // The data to be hashed
const byte* data; // ハッシュ化されるデータ
....
RipeMd md;
int ret;
@@ -34,8 +45,9 @@ int wc_InitRipeMd(RipeMd*);
if (ret == 0) {
ret = wc_RipeMdUpdate(&md, plain, sizeof(plain));
if (ret != 0) {
// Failure case
// 失敗ケース
\endcode
\sa wc_InitRipeMd
\sa wc_RipeMdFinal
*/
@@ -43,28 +55,34 @@ int wc_RipeMdUpdate(RipeMd* ripemd, const byte* data, word32 len);
/*!
\ingroup RIPEMD
\brief この関数は計算されたダイジェストをハッシュにコピーします。無傷のブロックがある場合、この方法ではブロックを0Sでパッケージし、ハッシュにコピーする前にそのブロックのラウンドをダイジェストに含めます。RIPEMDの状態がリセットされます。
\return 0 機能の実行に成功したことに戻ります。RIPEMD構造の状態リセットされました
\return BAD_FUNC_ARG RIPEMD構造体またはハッシュパラメータがNULLの場合に返されます。
\param ripemd WC_INITRIPEMDで初期化するRIPEMD構造へのポインタ、およびWC_RIPEMDUPDATEからハッシュを含む。状態リセットされま
\brief この関数は、計算されたダイジェストをhashにコピーします。部分的にハッシュ化されていないブロックがある場合、このメソッドはブロックを0でパディングし、hashにコピーする前にそのブロックのラウンドをダイジェストに含めます。ripemdの状態リセットされま
\return 0 関数の実行が成功した場合に返されます。RipeMd構造体の状態リセットされました。
\return BAD_FUNC_ARG RipeMd構造体またはhashパラメータがNULLの場合に返されます。
\param ripemd wc_InitRipeMdで初期化され、wc_RipeMdUpdateからのハッシュを含むripemd構造体へのポインタ。状態はリセットされます
\param hash ダイジェストをコピーするバッファ。RIPEMD_DIGEST_SIZEバイトである必要があります
_Example_
\code
RipeMd md;
int ret;
byte digest[RIPEMD_DIGEST_SIZE];
const byte* data; // The data to be hashed
const byte* data; // ハッシュ化されるデータ
...
ret = wc_InitRipeMd(&md);
if (ret == 0) {
ret = wc_RipeMdUpdate(&md, plain, sizeof(plain));
if (ret != 0) {
// RipeMd Update Failure Case.
// RipeMd更新失敗ケース
}
ret = wc_RipeMdFinal(&md, digest);
if (ret != 0) {
// RipeMd Final Failure Case.
// RipeMd Final失敗ケース
}...
\endcode
\sa none
*/
int wc_RipeMdFinal(RipeMd* ripemd, byte* hash);
int wc_RipeMdFinal(RipeMd* ripemd, byte* hash);

File diff suppressed because it is too large Load Diff

View File

@@ -1,112 +1,141 @@
/*!
\ingroup SAKKE_Setup
*/
int wc_InitSakkeKey(SakkeKey* key, void* heap, int devId);
/*!
\ingroup SAKKE_Setup
*/
int wc_InitSakkeKey_ex(SakkeKey* key, int keySize, int curveId,
void* heap, int devId);
/*!
\ingroup SAKKE_Setup
*/
void wc_FreeSakkeKey(SakkeKey* key);
/*!
\ingroup SAKKE_Setup
*/
int wc_MakeSakkeKey(SakkeKey* key, WC_RNG* rng);
/*!
\ingroup SAKKE_Setup
*/
int wc_MakeSakkePublicKey(SakkeKey* key, ecc_point* pub);
/*!
\ingroup SAKKE_RSK
*/
int wc_MakeSakkeRsk(SakkeKey* key, const byte* id, word16 idSz,
ecc_point* rsk);
/*!
\ingroup SAKKE_RSK
*/
int wc_ValidateSakkeRsk(SakkeKey* key, const byte* id, word16 idSz,
ecc_point* rsk, int* valid);
/*!
\ingroup SAKKE_RSK
*/
int wc_GenerateSakkeRskTable(const SakkeKey* key,
const ecc_point* rsk, byte* table, word32* len);
/*!
\ingroup SAKKE_Setup
*/
int wc_ExportSakkeKey(SakkeKey* key, byte* data, word32* sz);
/*!
\ingroup SAKKE_Setup
*/
int wc_ImportSakkeKey(SakkeKey* key, const byte* data, word32 sz);
/*!
\ingroup SAKKE_Setup
*/
int wc_ExportSakkePrivateKey(SakkeKey* key, byte* data, word32* sz);
/*!
\ingroup SAKKE_Setup
*/
int wc_ImportSakkePrivateKey(SakkeKey* key, const byte* data,
word32 sz);
/*!
\ingroup SAKKE_RSK
*/
int wc_EncodeSakkeRsk(const SakkeKey* key, ecc_point* rsk,
byte* out, word32* sz, int raw);
/*!
\ingroup SAKKE_RSK
*/
int wc_DecodeSakkeRsk(const SakkeKey* key, const byte* data,
word32 sz, ecc_point* rsk);
/*!
\ingroup SAKKE_RSK
*/
int wc_ImportSakkeRsk(SakkeKey* key, const byte* data, word32 sz);
/*!
\ingroup SAKKE_Setup
*/
int wc_ExportSakkePublicKey(SakkeKey* key, byte* data,
word32* sz, int raw);
/*!
\ingroup SAKKE_Setup
*/
int wc_ImportSakkePublicKey(SakkeKey* key, const byte* data,
word32 sz, int trusted);
/*!
\ingroup SAKKE_Operations
*/
int wc_GetSakkeAuthSize(SakkeKey* key, word16* authSz);
/*!
\ingroup SAKKE_Setup
*/
int wc_SetSakkeIdentity(SakkeKey* key, const byte* id, word16 idSz);
/*!
\ingroup SAKKE_Operations
*/
int wc_MakeSakkePointI(SakkeKey* key, const byte* id, word16 idSz);
/*!
\ingroup SAKKE_Operations
*/
int wc_GetSakkePointI(SakkeKey* key, byte* data, word32* sz);
/*!
\ingroup SAKKE_Operations
*/
int wc_SetSakkePointI(SakkeKey* key, const byte* id, word16 idSz,
const byte* data, word32 sz);
/*!
\ingroup SAKKE_Operations
*/
int wc_GenerateSakkePointITable(SakkeKey* key, byte* table,
word32* len);
/*!
\ingroup SAKKE_Operations
*/
int wc_SetSakkePointITable(SakkeKey* key, byte* table, word32 len);
/*!
\ingroup SAKKE_Operations
*/
int wc_ClearSakkePointITable(SakkeKey* key);
/*!
\ingroup SAKKE_Operations
*/
int wc_MakeSakkeEncapsulatedSSV(SakkeKey* key,
enum wc_HashType hashType, byte* ssv, word16 ssvSz, byte* auth,
word16* authSz);
/*!
\ingroup SAKKE_Operations
*/
int wc_GenerateSakkeSSV(SakkeKey* key, WC_RNG* rng, byte* ssv,
word16* ssvSz);
/*!
\ingroup SAKKE_RSK
*/
int wc_SetSakkeRsk(SakkeKey* key, const ecc_point* rsk, byte* table,
word32 len);
/*!
\ingroup SAKKE_Operations
*/
int wc_DeriveSakkeSSV(SakkeKey* key, enum wc_HashType hashType,
byte* ssv, word16 ssvSz, const byte* auth,

View File

@@ -1,7 +1,12 @@
/*!
\ingroup SHA
\brief この関数はSHAを初期化します。これは自動的にWC_Shahashによって呼び出されます。
\return 0 初期化に成功したときに返されます
\brief この関数はSHAを初期化します。これはwc_ShaHashによって自動的に呼び出されます
\return 0 初期化に成功した場合に返されます
\param sha 暗号化に使用するsha構造体へのポインタ
_Example_
\code
Sha sha[1];
@@ -13,6 +18,7 @@
wc_ShaFinal(sha, hash);
}
\endcode
\sa wc_ShaHash
\sa wc_ShaUpdate
\sa wc_ShaFinal
@@ -21,14 +27,19 @@ int wc_InitSha(wc_Sha*);
/*!
\ingroup SHA
\brief 長さLENの提供されたバイト配列を絶えずハッシュするように呼び出すことができます。
\return 0 データをダイジェストに正常に追加すると返されます。
\param sha 暗号化に使用するSHA構造へのポインタ
\param data ハッシュするデータ
\brief 長さlenの提供されたバイト配列を継続的にハッシュするために呼び出すことができます。
\return 0 ダイジェストへのデータ追加に成功した場合に返されます。
\param sha 暗号化に使用するsha構造体へのポインタ
\param data ハッシュ化されるデータ
\param len ハッシュ化されるデータの長さ
_Example_
\code
Sha sha[1];
byte data[] = { // Data to be hashed };
byte data[] = { // ハッシュ化されるデータ };
word32 len = sizeof(data);
if ((ret = wc_InitSha(sha)) != 0) {
@@ -39,6 +50,7 @@ int wc_InitSha(wc_Sha*);
wc_ShaFinal(sha, hash);
}
\endcode
\sa wc_ShaHash
\sa wc_ShaFinal
\sa wc_InitSha
@@ -47,13 +59,19 @@ int wc_ShaUpdate(wc_Sha* sha, const byte* data, word32 len);
/*!
\ingroup SHA
\brief データのハッシュを確定します。結果はハッシュに入れられます。SHA構造体の状態をリセットします。
\return 0 ファイナライズに成功したときに返されます。
\param sha 暗号化に使用するSHA構造へのポインタ
\brief データのハッシュ化を完了します。結果はhashに格納されます。
sha構造体の状態をリセットします。
\return 0 完了に成功した場合に返されます。
\param sha 暗号化に使用するsha構造体へのポインタ
\param hash ハッシュ値を保持するバイト配列。
_Example_
\code
Sha sha[1];
byte data[] = { Data to be hashed };
byte data[] = { ハッシュ化されるデータ };
word32 len = sizeof(data);
if ((ret = wc_InitSha(sha)) != 0) {
@@ -64,6 +82,7 @@ int wc_ShaUpdate(wc_Sha* sha, const byte* data, word32 len);
wc_ShaFinal(sha, hash);
}
\endcode
\sa wc_ShaHash
\sa wc_InitSha
\sa wc_ShaGetHash
@@ -72,15 +91,21 @@ int wc_ShaFinal(wc_Sha* sha, byte* hash);
/*!
\ingroup SHA
\brief 初期化されたSHA構造体によって使用されるメモリをクリーンアップするために使用されます。注これは、wolfssl_ti_hashが定義されている場合にのみサポートされています。
\return No 戻り値
\brief 初期化されたSha構造体によって使用されるメモリをクリーンアップするために使用されます
\return 戻り値なし。
\param sha 解放するSha構造体へのポインタ。
_Example_
\code
Sha sha;
wc_InitSha(&sha);
// Use sha
// shaを使用
wc_ShaFree(&sha);
\endcode
\sa wc_InitSha
\sa wc_ShaUpdate
\sa wc_ShaFinal
@@ -89,9 +114,14 @@ void wc_ShaFree(wc_Sha*);
/*!
\ingroup SHA
\brief ハッシュデータを取得します。結果はハッシュに入れられます。SHA構造体の状態をリセットしません。
\return 0 ファイナライズに成功したときに返されます
\param sha 暗号化に使用するSHA構造へのポインタ
\brief ハッシュデータを取得します。結果はhashに格納されます。sha構造体の状態はリセットされません
\return 0 完了に成功した場合に返されます。
\param sha 暗号化に使用するsha構造体へのポインタ
\param hash ハッシュ値を保持するバイト配列。
_Example_
\code
Sha sha[1];
@@ -103,8 +133,9 @@ void wc_ShaFree(wc_Sha*);
wc_ShaGetHash(sha, hash);
}
\endcode
\sa wc_ShaHash
\sa wc_ShaFinal
\sa wc_InitSha
*/
int wc_ShaGetHash(wc_Sha* sha, byte* hash);
int wc_ShaGetHash(wc_Sha* sha, byte* hash);

View File

@@ -1,7 +1,12 @@
/*!
\ingroup SHA
\brief この関数はSHA256を初期化します。これはWC_SHA256HASHによって自動的に呼び出されます。
\return 0 初期化に成功したときに返されます
\brief この関数はSHA256を初期化します。これはwc_Sha256Hashによって自動的に呼び出されます
\return 0 初期化に成功した場合に返されます
\param sha256 暗号化に使用するsha256構造体へのポインタ
_Example_
\code
Sha256 sha256[1];
@@ -13,6 +18,7 @@
wc_Sha256Final(sha256, hash);
}
\endcode
\sa wc_Sha256Hash
\sa wc_Sha256Update
\sa wc_Sha256Final
@@ -21,14 +27,19 @@ int wc_InitSha256(wc_Sha256*);
/*!
\ingroup SHA
\brief 長さLENの提供されたバイト配列を絶えずハッシュするように呼び出すことができます。
\return 0 データをダイジェストに正常に追加すると返されます。
\param sha256 暗号化に使用するSHA256構造へのポインタ
\param data ハッシュするデータ
\brief 長さlenの提供されたバイト配列を継続的にハッシュするために呼び出すことができます。
\return 0 ダイジェストへのデータ追加に成功した場合に返されます。
\param sha256 暗号化に使用するsha256構造体へのポインタ
\param data ハッシュ化されるデータ
\param len ハッシュ化されるデータの長さ
_Example_
\code
Sha256 sha256[1];
byte data[] = { Data to be hashed };
byte data[] = { ハッシュ化されるデータ };
word32 len = sizeof(data);
if ((ret = wc_InitSha256(sha256)) != 0) {
@@ -39,6 +50,7 @@ int wc_InitSha256(wc_Sha256*);
wc_Sha256Final(sha256, hash);
}
\endcode
\sa wc_Sha256Hash
\sa wc_Sha256Final
\sa wc_InitSha256
@@ -47,13 +59,18 @@ int wc_Sha256Update(wc_Sha256* sha, const byte* data, word32 len);
/*!
\ingroup SHA
\brief データのハッシュを確定します。結果はハッシュに入れられます。SHA256構造体の状態をリセットします。
\return 0 ファイナライズに成功したときに返されます。
\param sha256 暗号化に使用するSHA256構造へのポインタ
\brief データのハッシュ化を完了します。結果はhashに格納されます。sha256構造体の状態をリセットします。
\return 0 完了に成功した場合に返されます。
\param sha256 暗号化に使用するsha256構造体へのポインタ
\param hash ハッシュ値を保持するバイト配列。
_Example_
\code
Sha256 sha256[1];
byte data[] = { Data to be hashed };
byte data[] = { ハッシュ化されるデータ };
word32 len = sizeof(data);
if ((ret = wc_InitSha256(sha256)) != 0) {
@@ -64,6 +81,7 @@ int wc_Sha256Update(wc_Sha256* sha, const byte* data, word32 len);
wc_Sha256Final(sha256, hash);
}
\endcode
\sa wc_Sha256Hash
\sa wc_Sha256GetHash
\sa wc_InitSha256
@@ -72,12 +90,17 @@ int wc_Sha256Final(wc_Sha256* sha256, byte* hash);
/*!
\ingroup SHA
\brief SHA256構造をリセットします。注これは、wolfssl_ti_hashが定義されている場合にのみサポートされています。
\return none いいえ返します。
\brief Sha256構造体をリセットします。注意: これはWOLFSSL_TI_HASHが定義されている場合にのみサポートされます。
\return none 戻り値なし。
\param sha256 解放するsha256構造体へのポインタ。
_Example_
\code
Sha256 sha256;
byte data[] = { Data to be hashed };
byte data[] = { ハッシュ化されるデータ };
word32 len = sizeof(data);
if ((ret = wc_InitSha256(&sha256)) != 0) {
@@ -89,6 +112,7 @@ int wc_Sha256Final(wc_Sha256* sha256, byte* hash);
wc_Sha256Free(&sha256);
}
\endcode
\sa wc_InitSha256
\sa wc_Sha256Update
\sa wc_Sha256Final
@@ -97,9 +121,14 @@ void wc_Sha256Free(wc_Sha256*);
/*!
\ingroup SHA
\brief ハッシュデータを取得します。結果はハッシュに入れられます。SHA256構造体の状態をリセットしません。
\return 0 ファイナライズに成功したときに返されます
\param sha256 暗号化に使用するSHA256構造へのポインタ
\brief ハッシュデータを取得します。結果はhashに格納されます。sha256構造体の状態はリセットされません
\return 0 完了に成功した場合に返されます。
\param sha256 暗号化に使用するsha256構造体へのポインタ
\param hash ハッシュ値を保持するバイト配列。
_Example_
\code
Sha256 sha256[1];
@@ -111,6 +140,7 @@ void wc_Sha256Free(wc_Sha256*);
wc_Sha256GetHash(sha256, hash);
}
\endcode
\sa wc_Sha256Hash
\sa wc_Sha256Final
\sa wc_InitSha256
@@ -119,17 +149,23 @@ int wc_Sha256GetHash(wc_Sha256* sha256, byte* hash);
/*!
\ingroup SHA
\brief SHA224構造を初期化するために使用されます。
\return 0 成功
\return 1 SHA224がNULLなので、エラーが返されました。
\brief Sha224構造体を初期化するために使用されます。
\return 0 成功
\return 1 sha224がnullのためにエラーが返されます。
\param sha224 初期化するSha224構造体へのポインタ。
_Example_
\code
Sha224 sha224;
if(wc_InitSha224(&sha224) != 0)
{
// Handle error
// エラーを処理
}
\endcode
\sa wc_Sha224Hash
\sa wc_Sha224Update
\sa wc_Sha224Final
@@ -138,16 +174,21 @@ int wc_InitSha224(wc_Sha224*);
/*!
\ingroup SHA
\brief 長さLENの提供されたバイト配列を絶えずハッシュするように呼び出すことができます。
\return 0 成功
\return 1 関数が失敗した場合はエラーが返されます。
\return BAD_FUNC_ARG SHA224またはデータがNULLの場合、エラーが返されます。
\param sha224 暗号化に使用するSHA224構造へのポインタ
\param data ハッシュするデータ
\brief 長さlenの提供されたバイト配列を継続的にハッシュするために呼び出すことができます。
\return 0 成功
\return 1 関数が失敗した場合にエラーが返されます
\return BAD_FUNC_ARG sha224またはdataがnullの場合にエラーが返されます
\param sha224 暗号化に使用するSha224構造体へのポインタ。
\param data ハッシュ化されるデータ。
\param len ハッシュ化されるデータの長さ。
_Example_
\code
Sha224 sha224;
byte data[] = { /* Data to be hashed };
byte data[] = { /* ハッシュ化されるデータ };
word32 len = sizeof(data);
if ((ret = wc_InitSha224(&sha224)) != 0) {
@@ -158,6 +199,7 @@ int wc_InitSha224(wc_Sha224*);
wc_Sha224Final(&sha224, hash);
}
\endcode
\sa wc_InitSha224
\sa wc_Sha224Final
\sa wc_Sha224Hash
@@ -166,14 +208,19 @@ int wc_Sha224Update(wc_Sha224* sha224, const byte* data, word32 len);
/*!
\ingroup SHA
\brief データのハッシュを確定します。結果はハッシュに入れられます。SHA224構造体の状態をリセットします。
\return 0 成功
\return <0 エラー
\param sha224 暗号化に使用するSHA224構造へのポインタ
\brief データのハッシュ化を完了します。結果はhashに格納されます。sha224構造体の状態をリセットします。
\return 0 成功
\return <0 エラー
\param sha224 暗号化に使用するsha224構造体へのポインタ
\param hash ハッシュ値を保持するバイト配列。
_Example_
\code
Sha224 sha224;
byte data[] = { /* Data to be hashed };
byte data[] = { /* ハッシュ化されるデータ };
word32 len = sizeof(data);
if ((ret = wc_InitSha224(&sha224)) != 0) {
@@ -184,8 +231,9 @@ int wc_Sha224Update(wc_Sha224* sha224, const byte* data, word32 len);
wc_Sha224Final(&sha224, hash);
}
\endcode
\sa wc_InitSha224
\sa wc_Sha224Hash
\sa wc_Sha224Update
*/
int wc_Sha224Final(wc_Sha224* sha224, byte* hash);
int wc_Sha224Final(wc_Sha224* sha224, byte* hash);

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,12 @@
/*!
\ingroup SHA
\brief この関数はSHA512を初期化します。これはWC_SHA512HASHによって自動的に呼び出されます。
\return 0 初期化に成功したときに返されます
\brief この関数はSHA512を初期化します。これはwc_Sha512Hashによって自動的に呼び出されます
\return 0 初期化に成功した場合に返されます
\param sha512 暗号化に使用するsha512構造体へのポインタ
_Example_
\code
Sha512 sha512[1];
@@ -13,6 +18,7 @@
wc_Sha512Final(sha512, hash);
}
\endcode
\sa wc_Sha512Hash
\sa wc_Sha512Update
\sa wc_Sha512Final
@@ -21,14 +27,19 @@ int wc_InitSha512(wc_Sha512*);
/*!
\ingroup SHA
\brief 長さLENの提供されたバイト配列を絶えずハッシュするように呼び出すことができます。
\return 0 データをダイジェストに正常に追加すると返されます。
\param sha512 暗号化に使用するSHA512構造へのポインタ
\param data ハッシュするデータ
\brief 長さlenの提供されたバイト配列を継続的にハッシュするために呼び出すことができます。
\return 0 ダイジェストへのデータ追加に成功した場合に返されます。
\param sha512 暗号化に使用するsha512構造体へのポインタ
\param data ハッシュ化されるデータ
\param len ハッシュ化されるデータの長さ
_Example_
\code
Sha512 sha512[1];
byte data[] = { Data to be hashed };
byte data[] = { ハッシュ化されるデータ };
word32 len = sizeof(data);
if ((ret = wc_InitSha512(sha512)) != 0) {
@@ -39,6 +50,7 @@ int wc_InitSha512(wc_Sha512*);
wc_Sha512Final(sha512, hash);
}
\endcode
\sa wc_Sha512Hash
\sa wc_Sha512Final
\sa wc_InitSha512
@@ -47,13 +59,18 @@ int wc_Sha512Update(wc_Sha512* sha, const byte* data, word32 len);
/*!
\ingroup SHA
\brief データのハッシュを確定します。結果はハッシュに入れられます。
\return 0 ハッシュを確定するとうまく返されました
\param sha512 暗号化に使用するSHA512構造へのポインタ
\brief データのハッシュ化を完了します。結果はhashに格納されま
\return 0 ハッシュの完了に成功した場合に返されます。
\param sha512 暗号化に使用するsha512構造体へのポインタ
\param hash ハッシュ値を保持するバイト配列。
_Example_
\code
Sha512 sha512[1];
byte data[] = { Data to be hashed };
byte data[] = { ハッシュ化されるデータ };
word32 len = sizeof(data);
if ((ret = wc_InitSha512(sha512)) != 0) {
@@ -64,6 +81,7 @@ int wc_Sha512Update(wc_Sha512* sha, const byte* data, word32 len);
wc_Sha512Final(sha512, hash);
}
\endcode
\sa wc_Sha512Hash
\sa wc_Sha512Final
\sa wc_InitSha512
@@ -72,8 +90,13 @@ int wc_Sha512Final(wc_Sha512* sha512, byte* hash);
/*!
\ingroup SHA
\brief この関数はSHA384を初期化します。これはWC_SHA384HASHによって自動的に呼び出されます。
\return 0 初期化に成功したときに返されます
\brief この関数はSHA384を初期化します。これはwc_Sha384Hashによって自動的に呼び出されます
\return 0 初期化に成功した場合に返されます
\param sha384 暗号化に使用するsha384構造体へのポインタ
_Example_
\code
Sha384 sha384[1];
@@ -85,6 +108,7 @@ int wc_Sha512Final(wc_Sha512* sha512, byte* hash);
wc_Sha384Final(sha384, hash);
}
\endcode
\sa wc_Sha384Hash
\sa wc_Sha384Update
\sa wc_Sha384Final
@@ -93,14 +117,19 @@ int wc_InitSha384(wc_Sha384*);
/*!
\ingroup SHA
\brief 長さLENの提供されたバイト配列を絶えずハッシュするように呼び出すことができます。
\return 0 データをダイジェストに正常に追加すると返されます。
\param sha384 暗号化に使用するSHA384構造へのポインタ
\param data ハッシュするデータ
\brief 長さlenの提供されたバイト配列を継続的にハッシュするために呼び出すことができます。
\return 0 ダイジェストへのデータ追加に成功した場合に返されます。
\param sha384 暗号化に使用するsha384構造体へのポインタ
\param data ハッシュ化されるデータ
\param len ハッシュ化されるデータの長さ
_Example_
\code
Sha384 sha384[1];
byte data[] = { Data to be hashed };
byte data[] = { ハッシュ化されるデータ };
word32 len = sizeof(data);
if ((ret = wc_InitSha384(sha384)) != 0) {
@@ -111,6 +140,7 @@ int wc_InitSha384(wc_Sha384*);
wc_Sha384Final(sha384, hash);
}
\endcode
\sa wc_Sha384Hash
\sa wc_Sha384Final
\sa wc_InitSha384
@@ -119,13 +149,18 @@ int wc_Sha384Update(wc_Sha384* sha, const byte* data, word32 len);
/*!
\ingroup SHA
\brief データのハッシュを確定します。結果はハッシュに入れられます。
\return 0 ファイナライズに成功したときに返されます。
\param sha384 暗号化に使用するSHA384構造へのポインタ
\brief データのハッシュ化を完了します。結果はhashに格納されます。
\return 0 完了に成功した場合に返されます。
\param sha384 暗号化に使用するsha384構造体へのポインタ
\param hash ハッシュ値を保持するバイト配列。
_Example_
\code
Sha384 sha384[1];
byte data[] = { Data to be hashed };
byte data[] = { ハッシュ化されるデータ };
word32 len = sizeof(data);
if ((ret = wc_InitSha384(sha384)) != 0) {
@@ -136,8 +171,9 @@ int wc_Sha384Update(wc_Sha384* sha, const byte* data, word32 len);
wc_Sha384Final(sha384, hash);
}
\endcode
\sa wc_Sha384Hash
\sa wc_Sha384Final
\sa wc_InitSha384
*/
int wc_Sha384Final(wc_Sha384* sha384, byte* hash);
int wc_Sha384Final(wc_Sha384* sha384, byte* hash);

View File

@@ -1,21 +1,27 @@
/*!
\ingroup Signature
\brief この関数は、結果のシグネチャの最大サイズを返します。
\return Returns sig_type_e sig_typeがサポートされていない場合sig_typeが無効な場合はbad_func_argを返します。正の戻り値は、署名の最大サイズをします。
\param sig_type wc_signature_type_eccまたはwc_signature_type_rsaなどの署名型列挙型値。
\param key ECC_KEYやRSAKEYなどのキー構造へのポインタ
\brief この関数は、結果の署名の最大サイズをします。
\return sig_typeがサポートされていない場合、SIG_TYPE_Eを返します。sig_typeが無効な場合、BAD_FUNC_ARGを返します。正の戻り値は、署名の最大サイズを示します
\param sig_type WC_SIGNATURE_TYPE_ECCやWC_SIGNATURE_TYPE_RSAなどの署名タイプの列挙値。
\param key ecc_keyやRsaKeyなどのキー構造体へのポインタ。
\param key_len キー構造体のサイズ。
_Example_
\code
// Get signature length
// 署名の長さを取得
enum wc_SignatureType sig_type = WC_SIGNATURE_TYPE_ECC;
ecc_key eccKey;
word32 sigLen;
wc_ecc_init(&eccKey);
sigLen = wc_SignatureGetSize(sig_type, &eccKey, sizeof(eccKey));
if (sigLen > 0) {
// Success
// 成功
}
\endcode
\sa wc_HashGetDigestSize
\sa wc_SignatureGenerate
\sa wc_SignatureVerify
@@ -25,36 +31,42 @@ int wc_SignatureGetSize(enum wc_SignatureType sig_type,
/*!
\ingroup Signature
\brief この関数は、データをハッシュし、結果のハッシュとキーを使用して署名を使用して署名を使用して署名を検証します。
\return 0 成功
\return SIG_TYPE_E -231、署名タイプが有効/利用可能です
\return BAD_FUNC_ARG -173、関数の不良引数が提供されています
\return BUFFER_E -132、出力バッファが小さすぎたり入力が大きすぎたりします。
\param hash_type "wc_hash_type_sha256"などの "enum wc_hashtype"からのハッシュ型。
\param sig_type wc_signature_type_eccまたはwc_signature_type_rsaなどの署名型列挙型値
\param data ハッシュへのデータを含むバッファへのポインタ。
\param data_len データバッファの長さ
\param sig 署名を出力するためのバッファへのポインタ
\param sig_len シグネチャ出力バッファの長さ
\param key ECC_KEYやRSAKEYなどのキー構造へのポインタ
\brief この関数は、データをハッシュ化し、結果のハッシュとキーを使用して署名を検証することで、署名を検証します。
\return 0 成功
\return SIG_TYPE_E -231、署名タイプが有効化されていない/利用できない
\return BAD_FUNC_ARG -173、不正な関数引数が提供された
\return BUFFER_E -132、出力バッファが小さすぎるか、入力が大きすぎる
\param hash_type "WC_HASH_TYPE_SHA256"などの"enum wc_HashType"からのハッシュタイプ
\param sig_type WC_SIGNATURE_TYPE_ECCやWC_SIGNATURE_TYPE_RSAなどの署名タイプの列挙値
\param data ハッシュ化するデータを含むバッファへのポインタ
\param data_len データバッファの長さ
\param sig 署名を出力するバッファへのポインタ。
\param sig_len 署名出力バッファの長さ。
\param key ecc_keyやRsaKeyなどのキー構造体へのポインタ。
\param key_len キー構造体のサイズ。
_Example_
\code
int ret;
ecc_key eccKey;
// Import the public key
// 公開鍵をインポート
wc_ecc_init(&eccKey);
ret = wc_ecc_import_x963(eccPubKeyBuf, eccPubKeyLen, &eccKey);
// Perform signature verification using public key
// 公開鍵を使用して署名検証を実行
ret = wc_SignatureVerify(
WC_HASH_TYPE_SHA256, WC_SIGNATURE_TYPE_ECC,
fileBuf, fileLen,
sigBuf, sigLen,
&eccKey, sizeof(eccKey));
printf("Signature Verification: %s
(%d)\n", (ret == 0) ? "Pass" : "Fail", ret);
printf("署名検証: %s
(%d)\n", (ret == 0) ? "合格" : "不合格", ret);
wc_ecc_free(&eccKey);
\endcode
\sa wc_SignatureGetSize
\sa wc_SignatureGenerate
*/
@@ -66,19 +78,24 @@ int wc_SignatureVerify(
/*!
\ingroup Signature
\brief この関数は、キーを使用してデータから署名を生成します。まずデータのハッシュを作成し、キーを使用してハッシュに署名します。
\return 0 成功
\return SIG_TYPE_E -231、署名タイプが有効/利用可能です
\return BAD_FUNC_ARG -173、関数の不良引数が提供されています
\return BUFFER_E -132、出力バッファが小さすぎたり入力が大きすぎたりします。
\param hash_type "wc_hash_type_sha256"などの "enum wc_hashtype"からのハッシュ型。
\param sig_type wc_signature_type_eccまたはwc_signature_type_rsaなどの署名型列挙型値
\param data ハッシュへのデータを含むバッファへのポインタ。
\param data_len データバッファの長さ
\param sig 署名を出力するためのバッファへのポインタ
\param sig_len シグネチャ出力バッファの長さ
\param key ECC_KEYやRSAKEYなどのキー構造へのポインタ
\param key_len キー構造のサイズ
\brief この関数は、キーを使用してデータから署名を生成します。最初にデータのハッシュを作成し、次にキーを使用してハッシュに署名します。
\return 0 成功
\return SIG_TYPE_E -231、署名タイプが有効化されていない/利用できない
\return BAD_FUNC_ARG -173、不正な関数引数が提供された
\return BUFFER_E -132、出力バッファが小さすぎるか、入力が大きすぎる
\param hash_type "WC_HASH_TYPE_SHA256"などの"enum wc_HashType"からのハッシュタイプ
\param sig_type WC_SIGNATURE_TYPE_ECCやWC_SIGNATURE_TYPE_RSAなどの署名タイプの列挙値
\param data ハッシュ化するデータを含むバッファへのポインタ
\param data_len データバッファの長さ
\param sig 署名を出力するバッファへのポインタ。
\param sig_len 署名出力バッファの長さ。
\param key ecc_keyやRsaKeyなどのキー構造体へのポインタ。
\param key_len キー構造体のサイズ。
\param rng 初期化されたRNG構造体へのポインタ。
_Example_
\code
int ret;
@@ -88,27 +105,28 @@ int wc_SignatureVerify(
wc_InitRng(&rng);
wc_ecc_init(&eccKey);
// Generate key
// キーを生成
ret = wc_ecc_make_key(&rng, 32, &eccKey);
// Get signature length and allocate buffer
// 署名の長さを取得してバッファを割り当て
sigLen = wc_SignatureGetSize(sig_type, &eccKey, sizeof(eccKey));
sigBuf = malloc(sigLen);
// Perform signature verification using public key
// 公開鍵を使用して署名検証を実行
ret = wc_SignatureGenerate(
WC_HASH_TYPE_SHA256, WC_SIGNATURE_TYPE_ECC,
fileBuf, fileLen,
sigBuf, &sigLen,
&eccKey, sizeof(eccKey),
&rng);
printf("Signature Generation: %s
(%d)\n", (ret == 0) ? "Pass" : "Fail", ret);
printf("署名生成: %s
(%d)\n", (ret == 0) ? "合格" : "不合格", ret);
free(sigBuf);
wc_ecc_free(&eccKey);
wc_FreeRng(&rng);
\endcode
\sa wc_SignatureGetSize
\sa wc_SignatureVerify
*/
@@ -117,4 +135,4 @@ int wc_SignatureGenerate(
const byte* data, word32 data_len,
byte* sig, word32 *sig_len,
const void* key, word32 key_len,
WC_RNG* rng);
WC_RNG* rng);

View File

@@ -1,17 +1,21 @@
/*!
\ingroup SipHash
\brief この関数は、MacサイズのキーでSiphashを初期化します。
\return 0 初期化に成功したときに返されます
\return BAD_FUNC_ARG SiphashまたはキーがNULLのときに返されます
\return BAD_FUNC_ARG OUTSZが8でも16でもない場合に返されます
\param siphash Macingに使用するサイプハッシュ構造へのポインタ
\param key 16バイト配列へのポインタ
\brief この関数は、MACサイズに対するキーを使用してSipHashを初期化します
\return 0 初期化に成功した場合に返されます
\return BAD_FUNC_ARG sipHashまたはkeyがNULLの場合に返されます
\return BAD_FUNC_ARG outSzが8でも16でもない場合に返されます
\param siphash MACに使用するSipHash構造体へのポインタ
\param key 16バイト配列へのポインタ
\param outSz MACとして出力するバイト数
_Example_
\code
SipHash siphash[1];
unsigned char key[16] = { ... };
byte macSz = 8; // 8 or 16
byte macSz = 8; // 8または16
if ((ret = wc_InitSipHash(siphash, key, macSz)) != 0) {
WOLFSSL_MSG("wc_InitSipHash failed");
@@ -23,6 +27,7 @@
WOLFSSL_MSG("wc_SipHashFinal failed");
}
\endcode
\sa wc_SipHash
\sa wc_SipHashUpdate
\sa wc_SipHashFinal
@@ -32,16 +37,21 @@ int wc_InitSipHash(SipHash* siphash, const unsigned char* key,
/*!
\ingroup SipHash
\brief 長さLENの提供されたバイト配列を絶えずハッシュするように呼び出すことができます。
\return 0 Macにデータを追加したら、返されます
\return BAD_FUNC_ARG Siphashがnullのとき返されました
\return BAD_FUNC_ARG inneがnullのとき返され、Inszはゼロではありません
\param siphash Macingに使用するサイプハッシュ構造へのポインタ
\param in マイートするデータ
\brief 長さlenの提供されたバイト配列を継続的にハッシュするために呼び出すことができます
\return 0 MACへのデータ追加に成功した場合に返されます
\return BAD_FUNC_ARG siphashがNULLの場合に返されます
\return BAD_FUNC_ARG inがNULLでinSzがゼロでない場合に返されます
\param siphash MACに使用するSipHash構造体へのポインタ
\param in MACするデータ
\param inSz MACするデータのサイズ
_Example_
\code
SipHash siphash[1];
byte data[] = { Data to be MACed };
byte data[] = { MACするデータ };
word32 len = sizeof(data);
if ((ret = wc_InitSipHash(siphash, key, macSz)) != 0) {
@@ -54,6 +64,7 @@ int wc_InitSipHash(SipHash* siphash, const unsigned char* key,
WOLFSSL_MSG("wc_SipHashFinal failed");
}
\endcode
\sa wc_SipHash
\sa wc_InitSipHash
\sa wc_SipHashFinal
@@ -63,16 +74,21 @@ int wc_SipHashUpdate(SipHash* siphash, const unsigned char* in,
/*!
\ingroup SipHash
\brief データのMacingを確定します。結果が出入りする。
\return 0 ファイナライズに成功したときに返されます。
\return BAD_FUNC_ARG SiphashのOUTがNULLのときに返されます
\return BAD_FUNC_ARG OUTSZが初期化された値と同じではない場合に返されます
\param siphash Macingに使用するサイプハッシュ構造へのポインタ
\param out MAC値を保持するためのバイト配列
\brief データのMAC処理を完了します。結果はoutに格納されます。
\return 0 完了に成功した場合に返されます
\return BAD_FUNC_ARG siphashまたはoutがNULLの場合に返されます
\return BAD_FUNC_ARG outSzが初期化された値と同じでない場合に返されます
\param siphash MACに使用するSipHash構造体へのポインタ
\param out MAC値を保持するバイト配列
\param outSz MACとして出力するバイト数
_Example_
\code
SipHash siphash[1];
byte mac[8] = { ... }; // 8 or 16 bytes
byte mac[8] = { ... }; // 8または16バイト
byte macSz = sizeof(mac);
if ((ret = wc_InitSipHash(siphash, key, macSz)) != 0) {
@@ -85,6 +101,7 @@ int wc_SipHashUpdate(SipHash* siphash, const unsigned char* in,
WOLFSSL_MSG("wc_SipHashFinal failed");
}
\endcode
\sa wc_SipHash
\sa wc_InitSipHash
\sa wc_SipHashUpdate
@@ -94,31 +111,36 @@ int wc_SipHashFinal(SipHash* siphash, unsigned char* out,
/*!
\ingroup SipHash
\brief この機能はSiphashを使用してデータを1ショットして、キーに基づいてMACを計算します。
\return 0 Macingに成功したときに返されました
\return BAD_FUNC_ARG キーまたはOUTがNULLのときに返されます
\return BAD_FUNC_ARG inneがnullのとき返され、Inszはゼロではありません
\return BAD_FUNC_ARG OUTSZが8でも16でもない場合に返されます
\param key 16バイト配列へのポインタ
\param in マイートするデータ
\param inSz マイクされるデータのサイズ
\param out MAC値を保持するためのバイト配列
\brief この関数は、キーに基づいてMACを計算するために、SipHashを使用してデータをワンショットで処理します。
\return 0 MACに成功した場合に返されます
\return BAD_FUNC_ARG keyまたはoutがNULLの場合に返されます
\return BAD_FUNC_ARG inがNULLでinSzがゼロでない場合に返されます
\return BAD_FUNC_ARG outSzが8でも16でもない場合に返されます
\param key 16バイト配列へのポインタ
\param in MACするデータ
\param inSz MACするデータのサイズ
\param out MAC値を保持するバイト配列
\param outSz MACとして出力するバイト数
_Example_
\code
unsigned char key[16] = { ... };
byte data[] = { Data to be MACed };
byte data[] = { MACするデータ };
word32 len = sizeof(data);
byte mac[8] = { ... }; // 8 or 16 bytes
byte mac[8] = { ... }; // 8または16バイト
byte macSz = sizeof(mac);
if ((ret = wc_SipHash(key, data, len, mac, macSz)) != 0) {
WOLFSSL_MSG("wc_SipHash failed");
}
\endcode
\sa wc_InitSipHash
\sa wc_SipHashUpdate
\sa wc_SipHashFinal
*/
int wc_SipHash(const unsigned char* key, const unsigned char* in,
word32 inSz, unsigned char* out, unsigned char outSz);
word32 inSz, unsigned char* out, unsigned char outSz);

View File

@@ -1,24 +1,30 @@
/*!
\ingroup SRP
\brief 使用方法のためにSRP構造体を初期化します。
\return 0 成功しています。
\return BAD_FUNC_ARG SRPなどの引数がNULLまたはSRPSIDEの問題がある場合は、SRP_CLIENT_SIESまたはSRP_SERVER_SIEDでは問題がある場合に返します。
\return NOT_COMPILED_IN タイプが引数として渡されたが、WolfCryptビルドに設定されていない場合
\return <0 エラー時に
\param srp 初期化されるSRP構造
\param type 使用するハッシュ型
\brief 使用のためにSrp構造体を初期化します。
\return 0 成功時
\return BAD_FUNC_ARG srpがnullの場合やSrpSideがSRP_CLIENT_SIDEまたはSRP_SERVER_SIDEでない場合など、引数に問題がある場合に返されます
\return NOT_COMPILED_IN 引数として渡された型がwolfCryptビルドで設定されていない場合に返されます
\return <0 エラー時
\param srp 初期化するSrp構造体。
\param type 使用するハッシュタイプ。
\param side 通信の側。
_Example_
\code
Srp srp;
if (wc_SrpInit(&srp, SRP_TYPE_SHA, SRP_CLIENT_SIDE) != 0)
{
// Initialization error
// 初期化エラー
}
else
{
wc_SrpTerm(&srp);
}
\endcode
\sa wc_SrpTerm
\sa wc_SrpSetUsername
*/
@@ -26,28 +32,39 @@ int wc_SrpInit(Srp* srp, SrpType type, SrpSide side);
/*!
\ingroup SRP
\brief 使用後にSRP構造リソースを解放します。
\return none いいえ返します。
\brief 使用後にSrp構造体のリソースを解放します。
\return none 戻り値なし。
\param srp 終了するSrp構造体へのポインタ。
_Example_
\code
Srp srp;
wc_SrpInit(&srp, SRP_TYPE_SHA, SRP_CLIENT_SIDE);
// Use srp
// srpを使用
wc_SrpTerm(&srp)
\endcode
\sa wc_SrpInit
*/
void wc_SrpTerm(Srp* srp);
/*!
\ingroup SRP
\brief ユーザー名を設定します。この関数は、wc_srpinitの後に呼び出す必要があります。
\return 0 ユーザー名は正常に設定されました
\return BAD_FUNC_ARG: srpまたはusernameがnullの場合に返します。
\return MEMORY_E: SRP->ユーザーにメモリを割り当てる問題がある場合
\return < 0エラー
\param srp SRP構造
\param username ユーザー名を含むバッファ
\brief ユーザー名を設定します。この関数はwc_SrpInitの後に呼び出す必要があります
\return 0 ユーザー名が正常に設定されました。
\return BAD_FUNC_ARG: srpまたはusernameがnullの場合に返されます
\return MEMORY_E: srp->userのメモリ割り当てに問題がある場合に返されます
\return < 0: エラー
\param srp Srp構造体。
\param username ユーザー名を含むバッファ。
\param size ユーザー名のサイズ(バイト単位)
_Example_
\code
Srp srp;
@@ -57,10 +74,11 @@ void wc_SrpTerm(Srp* srp);
wc_SrpInit(&srp, SRP_TYPE_SHA, SRP_CLIENT_SIDE);
if(wc_SrpSetUsername(&srp, username, usernameSize) != 0)
{
// Error occurred setting username.
// ユーザー名の設定エラーが発生しました。
}
wc_SrpTerm(&srp);
\endcode
\sa wc_SrpInit
\sa wc_SrpSetParams
\sa wc_SrpTerm
@@ -69,26 +87,31 @@ int wc_SrpSetUsername(Srp* srp, const byte* username, word32 size);
/*!
\ingroup SRP
\brief ユーザー名に基づいてSRPパラメータを設定します.. wc_srpsetuserNameの後に呼び出す必要があります。
\return 0 成功
\return BAD_FUNC_ARG SRP、N、G、またはSALTがNULLの場合、またはNSZ <GSZの場合は返します。
\return SRP_CALL_ORDER_E wc_srpsetuserNameの前にwc_srpsetparamsが呼び出された場合、返します。
\return <0 エラー
\param srp SRP構造
\param N 弾性率n = 2q + 1、[q、n]はプリムです。
\param nSz nサイズをバイト単位で。
\param g ジェネレータモジュロN.
\param gSz バイト数のGサイズ
\param salt 小さいランダムなソルト。各ユーザー名に特有のものです
\brief ユーザー名に基づいてsrpパラメータを設定します。wc_SrpSetUsernameの後に呼び出す必要があります。
\return 0 成功
\return BAD_FUNC_ARG srp、N、g、またはsaltがnullの場合、またはnSz < gSzの場合に返されます。
\return SRP_CALL_ORDER_E wc_SrpSetUsernameの前にwc_SrpSetParamsが呼び出された場合に返されます。
\return <0 エラー
\param srp Srp構造体。
\param N モジュラス。N = 2q+1、[q、N]は素数。
\param nSz Nのサイズ(バイト単位)
\param g Nを法とする生成元。
\param gSz gのサイズ(バイト単位)
\param salt 小さなランダムソルト。各ユーザー名に固有。
\param saltSz ソルトのサイズ(バイト単位)
_Example_
\code
Srp srp;
byte username[] = "user";
word32 usernameSize = 4;
byte N[] = { }; // Contents of byte array N
byte g[] = { }; // Contents of byte array g
byte salt[] = { }; // Contents of byte array salt
byte N[] = { }; // バイト配列Nの内容
byte g[] = { }; // バイト配列gの内容
byte salt[] = { }; // バイト配列saltの内容
wc_SrpInit(&srp, SRP_TYPE_SHA, SRP_CLIENT_SIDE);
wc_SrpSetUsername(&srp, username, usernameSize);
@@ -96,10 +119,11 @@ int wc_SrpSetUsername(Srp* srp, const byte* username, word32 size);
if(wc_SrpSetParams(&srp, N, sizeof(N), g, sizeof(g), salt,
sizeof(salt)) != 0)
{
// Error setting params
// パラメータ設定エラー
}
wc_SrpTerm(&srp);
\endcode
\sa wc_SrpInit
\sa wc_SrpSetUsername
\sa wc_SrpTerm
@@ -110,13 +134,18 @@ int wc_SrpSetParams(Srp* srp, const byte* N, word32 nSz,
/*!
\ingroup SRP
\brief パスワードを設定します。パスワードを設定しても、SRP構造内のパスワードデータが消去されません。クライアントは、x = hsalt + huserpswdを計算し、それを認証フィールドに格納します。この関数は、wc_srpsetparamsの後に呼び出されなければならず、クライアント側のみです。
\return 0 成功
\return BAD_FUNC_ARG srpまたはpasswordがnullの場合、またはsrp-> sideがsrp_client_sideに設定されていない場合。
\return SRP_CALL_ORDER_E WC_SRPSETPASSWORDが順不同で呼び出されたときに戻ります。
\return <0 エラー
\param srp SRP構造
\param password パスワードを含むバッファ。
\brief パスワードを設定します。パスワードの設定は、srp構造体にクリアパスワードデータを永続化しません。クライアントはx = H(salt + H(user:pswd))を計算し、authフィールドに格納します。この関数はwc_SrpSetParamsの後に呼び出す必要があり、クライアント側のみです。
\return 0 成功
\return BAD_FUNC_ARG srpまたはpasswordがnullの場合、またはsrp->sideがSRP_CLIENT_SIDEに設定されていない場合に返されます。
\return SRP_CALL_ORDER_E wc_SrpSetPasswordが順序外で呼び出された場合に返されます。
\return <0 エラー
\param srp Srp構造体。
\param password パスワードを含むバッファ。
\param size パスワードのサイズ(バイト単位)。
_Example_
\code
Srp srp;
@@ -125,9 +154,9 @@ int wc_SrpSetParams(Srp* srp, const byte* N, word32 nSz,
byte password[] = "password";
word32 passwordSize = 8;
byte N[] = { }; // Contents of byte array N
byte g[] = { }; // Contents of byte array g
byte salt[] = { }; // Contents of byte array salt
byte N[] = { }; // バイト配列Nの内容
byte g[] = { }; // バイト配列gの内容
byte salt[] = { }; // バイト配列saltの内容
wc_SrpInit(&srp, SRP_TYPE_SHA, SRP_CLIENT_SIDE);
wc_SrpSetUsername(&srp, username, usernameSize);
@@ -135,11 +164,12 @@ int wc_SrpSetParams(Srp* srp, const byte* N, word32 nSz,
if(wc_SrpSetPassword(&srp, password, passwordSize) != 0)
{
// Error setting password
// パスワード設定エラー
}
wc_SrpTerm(&srp);
\endcode
\sa wc_SrpInit
\sa wc_SrpSetUsername
\sa wc_SrpSetParams
@@ -148,33 +178,39 @@ int wc_SrpSetPassword(Srp* srp, const byte* password, word32 size);
/*!
\ingroup SRP
\brief 検証者を設定します。この関数は、wc_srpsetparamsの後に呼び出され、サーバー側のみです。
\return 0 成功
\return BAD_FUNC_ARG SRPまたはVerifierがNULLまたはSRP-> ISの場合、SRP_SERVER_SIEDではなく返されます。
\return <0 エラー
\param srp SRP構造
\param verifier 検証者を含む構造体。
\brief 検証子を設定します。この関数はwc_SrpSetParamsの後に呼び出す必要があり、サーバー側のみです。
\return 0 成功
\return BAD_FUNC_ARG srpまたはverifierがnullの場合、またはsrp->sideがSRP_SERVER_SIDEでない場合に返されます。
\return <0 エラー
\param srp Srp構造体。
\param verifier 検証子を含む構造体。
\param size 検証子のサイズ(バイト単位)。
_Example_
\code
Srp srp;
byte username[] = "user";
word32 usernameSize = 4;
byte N[] = { }; // Contents of byte array N
byte g[] = { }; // Contents of byte array g
byte salt[] = { }; // Contents of byte array salt
byte N[] = { }; // バイト配列Nの内容
byte g[] = { }; // バイト配列gの内容
byte salt[] = { }; // バイト配列saltの内容
wc_SrpInit(&srp, SRP_TYPE_SHA, SRP_SERVER_SIDE);
wc_SrpSetUsername(&srp, username, usernameSize);
wc_SrpSetParams(&srp, N, sizeof(N), g, sizeof(g), salt, sizeof(salt))
byte verifier[] = { }; // Contents of some verifier
byte verifier[] = { }; // 何らかの検証子の内容
if(wc_SrpSetVerifier(&srp, verifier, sizeof(verifier)) != 0)
{
// Error setting verifier
// 検証子設定エラー
}
wc_SrpTerm(&srp);
\endcode
\sa wc_SrpInit
\sa wc_SrpSetParams
\sa wc_SrpGetVerifier
@@ -183,13 +219,19 @@ int wc_SrpSetVerifier(Srp* srp, const byte* verifier, word32 size);
/*!
\ingroup SRP
\brief 検証者を取得します。クライアントはV = g ^ xNで検証者を計算します。この関数は、wc_srpsetpasswordの後に呼び出され、クライアント側のみです。
\return 0 成功
\return BAD_FUNC_ARG SRP、Verifier、またはSizeがNULLの場合、またはSRP-> SIDEがSRP_CLIENT_SIEDではない場合に返されます。
\return SRP_CALL_ORDER_E WC_SRPGetverifierが順不同で呼び出された場合に返されます。
\return <0 エラー
\param srp SRP構造
\param verifier 検証者を書き込むためのバッファー
\brief 検証子を取得します。クライアントはv = g ^ x % Nで検証子を計算します。
この関数はwc_SrpSetPasswordの後に呼び出すことができ、クライアント側のみです。
\return 0 成功
\return BAD_FUNC_ARG srp、verifier、またはsizeがnullの場合、またはsrp->sideがSRP_CLIENT_SIDEでない場合に返されます。
\return SRP_CALL_ORDER_E wc_SrpGetVerifierが順序外で呼び出された場合に返されます
\return <0 エラー
\param srp Srp構造体。
\param verifier 検証子を書き込むバッファ。
\param size バッファサイズ(バイト単位)。検証子のサイズで更新されます。
_Example_
\code
Srp srp;
@@ -198,9 +240,9 @@ int wc_SrpSetVerifier(Srp* srp, const byte* verifier, word32 size);
byte password[] = "password";
word32 passwordSize = 8;
byte N[] = { }; // Contents of byte array N
byte g[] = { }; // Contents of byte array g
byte salt[] = { }; // Contents of byte array salt
byte N[] = { }; // バイト配列Nの内容
byte g[] = { }; // バイト配列gの内容
byte salt[] = { }; // バイト配列saltの内容
byte v[64];
word32 vSz = 0;
vSz = sizeof(v);
@@ -212,10 +254,11 @@ int wc_SrpSetVerifier(Srp* srp, const byte* verifier, word32 size);
if( wc_SrpGetVerifier(&srp, v, &vSz ) != 0)
{
// Error getting verifier
// 検証子取得エラー
}
wc_SrpTerm(&srp);
\endcode
\sa wc_SrpSetVerifier
\sa wc_SrpSetPassword
*/
@@ -223,50 +266,68 @@ int wc_SrpGetVerifier(Srp* srp, byte* verifier, word32* size);
/*!
\ingroup SRP
\brief プライベートのエフェラル値を設定します。プライベートの一時的な値は、クライアント側のAとして知られています。サーバー側のand randomb。b = randomこの関数は、ユニットテストケース、または開発者が外部ランダムソースを使用してエフェメラル値を設定したい場合は便利です。この関数は、WC_SRPGetPublicの前に呼び出されることがあります。
\return 0 成功
\return BAD_FUNC_ARG SRP、Private、またはSizeがNULLの場合に返されます。
\return SRP_CALL_ORDER_E WC_SRPSetPrivateが順不同で呼び出された場合に返されます。
\return <0 エラー
\param srp SRP構造
\param priv 一時的な値。
\brief 秘密エフェメラル値を設定します。秘密エフェメラル値は次のように知られています:
クライアント側ではa。a = random()
サーバー側ではb。b = random()
この関数は単体テストケースや、開発者が外部の乱数ソースを使用してエフェメラル値を設定したい場合に便利です。この関数はwc_SrpGetPublicの前に呼び出すことができます。
\return 0 成功
\return BAD_FUNC_ARG srp、private、またはsizeがnullの場合に返されます。
\return SRP_CALL_ORDER_E wc_SrpSetPrivateが順序外で呼び出された場合に返されます。
\return <0 エラー
\param srp Srp構造体。
\param priv エフェメラル値。
\param size privateのサイズ(バイト単位)。
_Example_
\code
Srp srp;
byte username[] = "user";
word32 usernameSize = 4;
byte N[] = { }; // Contents of byte array N
byte g[] = { }; // Contents of byte array g
byte salt[] = { }; // Contents of byte array salt
byte verifier = { }; // Contents of some verifier
byte N[] = { }; // バイト配列Nの内容
byte g[] = { }; // バイト配列gの内容
byte salt[] = { }; // バイト配列saltの内容
byte verifier = { }; // 何らかの検証子の内容
wc_SrpInit(&srp, SRP_TYPE_SHA, SRP_SERVER_SIDE);
wc_SrpSetUsername(&srp, username, usernameSize);
wc_SrpSetParams(&srp, N, sizeof(N), g, sizeof(g), salt, sizeof(salt))
wc_SrpSetVerifier(&srp, verifier, sizeof(verifier))
byte b[] = { }; // Some ephemeral value
byte b[] = { }; // 何らかのエフェメラル値
if( wc_SrpSetPrivate(&srp, b, sizeof(b)) != 0)
{
// Error setting private ephemeral
// 秘密エフェメラル設定エラー
}
wc_SrpTerm(&srp);
\endcode
\sa wc_SrpGetPublic
*/
int wc_SrpSetPrivate(Srp* srp, const byte* priv, word32 size);
/*!
\ingroup SRP
\brief 公共の一時的な値を取得します。公共の一時的な値は、クライアント側のAとして知られています。サーバ側のA = g ^ An b。B =k * v +g bnn wc_srpsetpasswordまたはwc_srpsetverifierの後に呼び出す必要があります。関数WC_SRPSetPrivateは、WC_SRPGetPublicの前に呼び出されることがあります。
\return 0 成功
\return BAD_FUNC_ARG srp、pub、またはsizeがnullの場合に返されます。
\return SRP_CALL_ORDER_E WC_SRPGetPublicが順不同で呼び出された場合に返されます。
\return BUFFER_E サイズ<srp.nの場合は返しました
\return <0 エラー
\param srp SRP構造
\param pub パブリックエフェラル値を書き込むためのバッファ。
\brief 公開エフェメラル値を取得します。公開エフェメラル値は次のように知られています:
クライアント側ではA。A = g ^ a % N
サーバー側ではB。B = (k * v + (g ˆ b % N)) % N
この関数はwc_SrpSetPasswordまたはwc_SrpSetVerifierの後に呼び出す必要があります
関数wc_SrpSetPrivateはwc_SrpGetPublicの前に呼び出すことができます。
\return 0 成功
\return BAD_FUNC_ARG srp、pub、またはsizeがnullの場合に返されます。
\return SRP_CALL_ORDER_E wc_SrpGetPublicが順序外で呼び出された場合に返されます。
\return BUFFER_E size < srp.Nの場合に返されます。
\return <0 エラー
\param srp Srp構造体。
\param pub 公開エフェメラル値を書き込むバッファ。
\param size バッファサイズ(バイト単位)。エフェメラル値のサイズで更新されます。
_Example_
\code
Srp srp;
@@ -275,9 +336,9 @@ int wc_SrpSetPrivate(Srp* srp, const byte* priv, word32 size);
byte password[] = "password";
word32 passwordSize = 8;
byte N[] = { }; // Contents of byte array N
byte g[] = { }; // Contents of byte array g
byte salt[] = { }; // Contents of byte array salt
byte N[] = { }; // バイト配列Nの内容
byte g[] = { }; // バイト配列gの内容
byte salt[] = { }; // バイト配列saltの内容
wc_SrpInit(&srp, SRP_TYPE_SHA, SRP_CLIENT_SIDE);
wc_SrpSetUsername(&srp, username, usernameSize);
wc_SrpSetParams(&srp, N, sizeof(N), g, sizeof(g), salt, sizeof(salt));
@@ -288,11 +349,12 @@ int wc_SrpSetPrivate(Srp* srp, const byte* priv, word32 size);
if( wc_SrpGetPublic(&srp, public, &publicSz) != 0)
{
// Error getting public ephemeral
// 公開エフェメラル取得エラー
}
wc_SrpTerm(&srp);
\endcode
\sa wc_SrpSetPrivate
\sa wc_SrpSetPassword
\sa wc_SrpSetVerifier
@@ -301,15 +363,20 @@ int wc_SrpGetPublic(Srp* srp, byte* pub, word32* size);
/*!
\ingroup SRP
\brief セッションキーを計算します。成功後にSRP->キーでキーをアクセスできます。
\return 0 成功
\return BAD_FUNC_ARG SRP、ClientPubKey、またはServerPubKeyの場合、またはClientPubkeyszまたはServerPubKeyszが0の場合に返されます。
\return SRP_CALL_ORDER_E WC_SRPComputeKeyが順不同で呼び出された場合に返されます。
\return <0 エラー
\param srp SRP構造
\param clientPubKey クライアントの公共の一時的な価値。
\param clientPubKeySz クライアントの公共の一時的な値のサイズ。
\param serverPubKey サーバーの一般の一時的な値
\brief セッション鍵を計算します。鍵は成功後にsrp->keyでアクセスできます。
\return 0 成功
\return BAD_FUNC_ARG srp、clientPubKey、またはserverPubKeyがnullの場合、またはclientPubKeySzまたはserverPubKeySzが0の場合に返されます。
\return SRP_CALL_ORDER_E wc_SrpComputeKeyが順序外で呼び出された場合に返されます。
\return <0 エラー
\param srp Srp構造体
\param clientPubKey クライアントの公開エフェメラル値。
\param clientPubKeySz クライアントの公開エフェメラル値のサイズ。
\param serverPubKey サーバーの公開エフェメラル値。
\param serverPubKeySz サーバーの公開エフェメラル値のサイズ。
_Example_
\code
Srp server;
@@ -318,11 +385,11 @@ int wc_SrpGetPublic(Srp* srp, byte* pub, word32* size);
word32 usernameSize = 4;
byte password[] = "password";
word32 passwordSize = 8;
byte N[] = { }; // Contents of byte array N
byte g[] = { }; // Contents of byte array g
byte salt[] = { }; // Contents of byte array salt
byte verifier[] = { }; // Contents of some verifier
byte serverPubKey[] = { }; // Contents of server pub key
byte N[] = { }; // バイト配列Nの内容
byte g[] = { }; // バイト配列gの内容
byte salt[] = { }; // バイト配列saltの内容
byte verifier[] = { }; // 何らかの検証子の内容
byte serverPubKey[] = { }; // サーバー公開鍵の内容
word32 serverPubKeySize = sizeof(serverPubKey);
byte clientPubKey[64];
word32 clientPubKeySize = 64;
@@ -337,6 +404,7 @@ int wc_SrpGetPublic(Srp* srp, byte* pub, word32* size);
serverPubKey, serverPubKeySize)
wc_SrpTerm(&server);
\endcode
\sa wc_SrpGetPublic
*/
int wc_SrpComputeKey(Srp* srp,
@@ -345,37 +413,48 @@ int wc_SrpComputeKey(Srp* srp,
/*!
\ingroup SRP
\brief 証明を取得します。この関数は、wc_srpcomputekeyの後に呼び出す必要があります。
\return 0 成功
\return BAD_FUNC_ARG SRP、PROV、またはSIZEがNULLの場合に返します。
\return BUFFER_E サイズがSRP-> Typeのハッシュサイズより小さい場合に返します。
\return <0 エラー
\param srp SRP構造
\param proof ピアプルーフ。
\brief 証明を取得します。この関数はwc_SrpComputeKeyの後に呼び出す必要があります。
\return 0 成功
\return BAD_FUNC_ARG srp、proof、またはsizeがnullの場合に返されます。
\return BUFFER_E sizeがsrp->typeのハッシュサイズより小さい場合に返されます。
\return <0 エラー
\param srp Srp構造体。
\param proof ピアの証明。
\param size 証明のサイズ(バイト単位)。
_Example_
\code
Srp cli;
byte clientProof[SRP_MAX_DIGEST_SIZE];
word32 clientProofSz = SRP_MAX_DIGEST_SIZE;
// Initialize Srp following steps from previous examples
// 前の例のステップに従ってSrpを初期化
if (wc_SrpGetProof(&cli, clientProof, &clientProofSz) != 0)
{
// Error getting proof
// 証明取得エラー
}
\endcode
\sa wc_SrpComputeKey
*/
int wc_SrpGetProof(Srp* srp, byte* proof, word32* size);
/*!
\ingroup SRP
\brief ピアプルーフを確認します。この関数は、WC_SRPGetSessionKeyの前に呼び出す必要があります。
\return 0 成功
\return <0 エラー
\param srp SRP構造
\param proof ピアプルーフ。
\brief ピアの証明を検証します。この関数はwc_SrpGetSessionKeyの前に呼び出す必要があります。
\return 0 成功
\return <0 エラー
\param srp Srp構造体。
\param proof ピアの証明。
\param size 証明のサイズ(バイト単位)。
_Example_
\code
Srp cli;
@@ -383,17 +462,18 @@ int wc_SrpGetProof(Srp* srp, byte* proof, word32* size);
byte clientProof[SRP_MAX_DIGEST_SIZE];
word32 clientProofSz = SRP_MAX_DIGEST_SIZE;
// Initialize Srp following steps from previous examples
// First get the proof
// 前の例のステップに従ってSrpを初期化
// 最初に証明を取得
wc_SrpGetProof(&cli, clientProof, &clientProofSz)
if (wc_SrpVerifyPeersProof(&srv, clientProof, clientProofSz) != 0)
{
// Error verifying proof
// 証明検証エラー
}
\endcode
\sa wc_SrpGetSessionKey
\sa wc_SrpGetProof
\sa wc_SrpTerm
*/
int wc_SrpVerifyPeersProof(Srp* srp, byte* proof, word32 size);
int wc_SrpVerifyPeersProof(Srp* srp, byte* proof, word32 size);

View File

@@ -1768,7 +1768,7 @@ int wolfSSL_read(WOLFSSL* ssl, void* data, int sz);
/*!
\ingroup IO
\brief この関数はSSLセッションSSL内部読み取りバッファからSZバイトをバッファデータにコピーします。この関数は、内部SSLセッション受信バッファ内のデータが削除されていないか変更されていないことを除いて、wolfssl_read()と同じです。必要に応じて、wolfssl_read()のように、wolfssl_peek()はまだwolfssl_connect()またはwolfssl_accept()によってまだ実行されていない場合、wolfssl_peek()はSSL / TLSセッションをネゴシエートします。 SSL/TLSプロトコルは、最大サイズのSSLレコードを使用します最大レコードサイズは<wolfssl_root> /wolfssl/internal.h。そのため、WolfSSLは、レコードを処理および復号することができる前に、SSLレコード全体を内部的に読み取る必要があります。このため、wolfssl_peek()への呼び出しは、呼び出し時に復号された最大バッファサイズを返すことができます。 wolfssl_peek()/ wolfssl_read()への次の呼び出しで検索および復号される内部WolfSSL受信バッファ内で待機していない追加の復号データがあるかもしれません。 SZが内部読み取りバッファ内のバイト数よりも大きい場合、SSL_PEEK()は内部読み取りバッファで使用可能なバイトを返します。バイトが内部読み取りバッファにバッファされていない場合、Wolfssl_peek()への呼び出しは次のレコードの処理をトリガーします。
\brief この関数はSSLセッションSSL内部読み取りバッファからSZバイトをバッファデータにコピーします。この関数は、内部SSLセッション受信バッファ内のデータが削除されていないか変更されていないことを除いて、wolfssl_read()と同じです。必要に応じて、wolfssl_read()のように、wolfssl_peek()はまだwolfssl_connect()またはwolfssl_accept()によってまだ実行されていない場合、wolfssl_peek()はSSL / TLSセッションをネゴシエートします。 SSL/TLSプロトコルは、最大サイズのSSLレコードを使用します最大レコードサイズは<wolfssl_root> /wolfssl/internal.h。そのため、WolfSSLは、レコードを処理および復号することができる前に、SSLレコード全体を内部的に読み取る必要があります。このため、wolfssl_peek()への呼び出しは、呼び出し時に復号された最大バッファサイズを返すことができます。 wolfssl_peek()/ wolfssl_read()への次の呼び出しで検索および復号される内部WolfSSL受信バッファ内で待機していない追加の復号データがあるかもしれません。 SZが内部読み取りバッファ内のバイト数よりも大きい場合、SSL_PEEK()は内部読み取りバッファで使用可能なバイトを返します。バイトが内部読み取りバッファにバッファされていない場合、Wolfssl_peek()への呼び出しは次のレコードの処理をトリガーします。
\return 成功時には読み取られたバイト数1以上を返します。
\return 0 失敗したときに返されます。これは、クリーン通知アラートを閉じるシャットダウンまたはピアが接続を閉じただけであることによって発生する可能性があります。特定のエラーコードについてwolfSSL_get_error()を呼び出します。
\return SSL_FATAL_ERROR エラーが発生したとき、またはンブロッキングソケットを使用するときに、SSL_ERROR_WANT_READまたはSSL_ERROR_WANT_WRITEエラーが受信され、再度wolfSSL_peek()を呼び出す必要がある場合は、障害が発生します。特定のエラーコードを取得するには、wolfSSL_get_error()を使用してください。
@@ -1944,7 +1944,7 @@ int wolfSSL_send(WOLFSSL* ssl, const void* data, int sz, int flags);
SSL/TLSプロトコルは、最大サイズのSSLレコードを使用します最大レコードサイズは<wolfssl_root> /wolfssl/internal.h
そのため、wolfSSLは、レコードを処理および復号することができる前に、SSLレコード全体を内部的に読み取る必要があります。
このため、wolfSSL_recv()への呼び出しは、呼び出し時に復号された最大バッファサイズを返すことができるだけです。
wolfSSL_recv()への次の呼び出しで検索および復号される内部wolfSSL受信バッファで待機していない追加の復号されたデータがあるかもしれません。
wolfSSL_recv()への次の呼び出しで検索および復号される内部wolfSSL受信バッファで待機していない追加の復号されたデータがあるかもしれません。
引数szが内部読み取りバッファ内のバイト数よりも大きい場合、wolfSSL_recv()は内部読み取りバッファで使用可能なバイトを返します。
バイトが内部読み取りバッファにバッファされていない場合は、wolfSSL_recv()への呼び出しは次のレコードの処理をトリガーします。
\return 成功時には読み取られたバイト数(1以上)を返します。
@@ -5353,7 +5353,7 @@ int wolfSSL_connect_cert(WOLFSSL* ssl);
/*!
\ingroup openSSL
\brief WOLFSSL_D2I_PKCS12_BIOD2I_PKCS12_BIOは、WOLFSSL_BIOから構造WC_PKCS12へのPKCS12情報にコピーされます。この情報は、オプションのMAC情報を保持するための構造とともにコンテンツに関する情報のリストとして構造内に分割されています。構造体WC_PKCS12で情報がチャンクただし復号されていない)に分割された後、それはその後、呼び出しによって解析および復号され得る。
\brief WOLFSSL_D2I_PKCS12_BIOD2I_PKCS12_BIOは、WOLFSSL_BIOから構造WC_PKCS12へのPKCS12情報にコピーされます。この情報は、オプションのMAC情報を保持するための構造とともにコンテンツに関する情報のリストとして構造内に分割されています。構造体WC_PKCS12で情報がチャンクただし復号されていないに分割された後、それはその後、呼び出しによって解析および復号され得る。
\return WC_PKCS12 WC_PKCS12構造へのポインタ。
\return Failure 関数に失敗した場合はNULLを返します。
\param bio PKCS12バッファを読み取るためのWOLFSSL_BIO構造。
@@ -5412,11 +5412,11 @@ WC_PKCS12* wolfSSL_i2d_PKCS12_bio(WOLFSSL_BIO* bio,
/*!
\ingroup openSSL
\brief pkcs12は、configureコマンドへの-enable-openSSLAXTRAを追加することで有効にできます。それは復号のためにトリプルDESとRC4を使うことができるので、OpenSSlextra--enable-des3 -enable-arc4を有効にするときにもこれらの機能を有効にすることをお勧めします。 wolfsslは現在RC2をサポートしていませんので、RC2での復号は現在利用できません。これは、.p12ファイルを作成するためにOpenSSLコマンドラインで使用されるデフォルトの暗号化方式では注目すかもしれません。 WOLFSSL_PKCS12_PARSEPKCS12_PARSE。この関数が最初に行っているのは、存在する場合はMacが正しいチェックです。 MACが失敗した場合、関数は返され、保存されているコンテンツ情報のいずれかを復号しようとしません。この関数は、バッグタイプを探している各コンテンツ情報を介して解析します。バッグタイプがわかっている場合は、必要に応じて復号され、構築されている証明書のリストに格納されているか、見つかったキーとして保存されます。すべてのバッグを介して解析した後、見つかったキーは、一致するペアが見つかるまで証明書リストと比較されます。この一致するペアはキーと証明書として返され、オプションで見つかった証明書リストはstack_of証明書として返されます。瞬間、CRL、秘密または安全なバッグがスキップされ、解析されません。デバッグプリントアウトを見ることで、これらまたは他の「不明」バッグがスキップされているかどうかがわかります。フレンドリー名などの追加の属性は、PKCS12ファイルを解析するときにスキップされます。
\brief pkcs12は、configureコマンドへの-enable-openSSLAXTRAを追加することで有効にできます。それは復号のためにトリプルDESとRC4を使うことができるので、OpenSSlextra--enable-des3 -enable-arc4を有効にするときにもこれらの機能を有効にすることをお勧めします。 wolfsslは現在RC2をサポートしていませんので、RC2での復号は現在利用できません。これは、.p12ファイルを作成するためにOpenSSLコマンドラインで使用されるデフォルトの暗号化方式では注目すかもしれません。 WOLFSSL_PKCS12_PARSEPKCS12_PARSE。この関数が最初に行っているのは、存在する場合はMacが正しいチェックです。 MACが失敗した場合、関数は返され、保存されているコンテンツ情報のいずれかを復号しようとしません。この関数は、バッグタイプを探している各コンテンツ情報を介して解析します。バッグタイプがわかっている場合は、必要に応じて復号され、構築されている証明書のリストに格納されているか、見つかったキーとして保存されます。すべてのバッグを介して解析した後、見つかったキーは、一致するペアが見つかるまで証明書リストと比較されます。この一致するペアはキーと証明書として返され、オプションで見つかった証明書リストはstack_of証明書として返されます。瞬間、CRL、秘密または安全なバッグがスキップされ、解析されません。デバッグプリントアウトを見ることで、これらまたは他の「不明」バッグがスキップされているかどうかがわかります。フレンドリー名などの追加の属性は、PKCS12ファイルを解析するときにスキップされます。
\return SSL_SUCCESS PKCS12の解析に成功しました。
\return SSL_FAILURE エラーケースに遭遇した場合
\param pkcs12 wc_pkcs12解析する構造
\param paswd PKCS12を復号するためのパスワード。
\param paswd PKCS12を復号するためのパスワード。
\param pkey PKCS12からデコードされた秘密鍵を保持するための構造。
\param cert PKCS12から復号された証明書を保持する構造
@@ -6591,7 +6591,7 @@ void wolfSSL_SetMacEncryptCtx(WOLFSSL* ssl, void *ctx);
void* wolfSSL_GetMacEncryptCtx(WOLFSSL* ssl);
/*!
\brief コールバックを復号/確認します。コールバックは成功の場合は0を返すか、エラーの場合は<0です。SSLとCTXポインタはユーザーの利便性に利用できます。DECOUTは、復号の結果を格納する出力バッファです。DECINは暗号化された入力バッファーとDecinszのサイズを注意しています。コンテンツと検証は、WolfSSL_SettlShmacinner()に必要であり、そのまま通過します。PADSZは、パディングの合計値で設定する出力変数です。つまり、MACサイズとパディングバイトとパッドバイトを加えています。コールバックの例は、wolfssl / test.h mydecryptverifycb()を見つけることができます。
\brief コールバックを復号/確認します。コールバックは成功の場合は0を返すか、エラーの場合は<0です。SSLとCTXポインタはユーザーの利便性に利用できます。DECOUTは、復号の結果を格納する出力バッファです。DECINは暗号化された入力バッファーとDecinszのサイズを注意しています。コンテンツと検証は、WolfSSL_SettlShmacinner()に必要であり、そのまま通過します。PADSZは、パディングの合計値で設定する出力変数です。つまり、MACサイズとパディングバイトとパッドバイトを加えています。コールバックの例は、wolfssl / test.h mydecryptverifycb()を見つけることができます。
\return none いいえ返します。
_Example_
@@ -6605,7 +6605,7 @@ void wolfSSL_CTX_SetDecryptVerifyCb(WOLFSSL_CTX* ctx,
CallbackDecryptVerify cb);
/*!
\brief コールバックコンテキストをCTXに復号/検証します。
\brief コールバックコンテキストをCTXに復号/検証します。
\return none いいえ返します。
\param ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ
@@ -6619,7 +6619,7 @@ void wolfSSL_CTX_SetDecryptVerifyCb(WOLFSSL_CTX* ctx,
void wolfSSL_SetDecryptVerifyCtx(WOLFSSL* ssl, void *ctx);
/*!
\brief wolfssl_setdecryptverifyctx()で以前に保存されているコールバックコンテキストを復号/検証します。
\brief wolfssl_setdecryptverifyctx()で以前に保存されているコールバックコンテキストを復号/検証します。
\return pointer 正常にコールがコンテキストへの有効なポインタを返します。
\return NULL 空白のコンテキストのために返されます。
@@ -7033,7 +7033,7 @@ void wolfSSL_SetRsaSignCtx(WOLFSSL* ssl, void *ctx);
void* wolfSSL_GetRsaSignCtx(WOLFSSL* ssl);
/*!
\brief コールバックは、成功のための平文バイト数または<0エラーの場合は<0を返すべきです。SSLとCTXポインタはユーザーの利便性に利用できます。SIGは検証の署名であり、SIGSZは署名の長さを表します。復号プロセスとパディングの後に検証バッファの先頭に設定する必要があります。keyderはASN1形式のRSA公開鍵であり、Keyszはキーのキーの長さです。コールバックの例は、wolfssl / test.h myrsaverify()を見つけることができます。
\brief コールバックは、成功のための平文バイト数または<0エラーの場合は<0を返すべきです。SSLとCTXポインタはユーザーの利便性に利用できます。SIGは検証の署名であり、SIGSZは署名の長さを表します。復号プロセスとパディングの後に検証バッファの先頭に設定する必要があります。keyderはASN1形式のRSA公開鍵であり、Keyszはキーのキーの長さです。コールバックの例は、wolfssl / test.h myrsaverify()を見つけることができます。
\return none いいえ返します。
\sa wolfSSL_SetRsaVerifyCtx
\sa wolfSSL_GetRsaVerifyCtx
@@ -7111,7 +7111,7 @@ void wolfSSL_SetRsaEncCtx(WOLFSSL* ssl, void *ctx);
void* wolfSSL_GetRsaEncCtx(WOLFSSL* ssl);
/*!
\brief 復号します。コールバックは、成功のための平文バイト数または<0エラーの場合は<0を返すべきです。SSLとCTXポインタはユーザーの利便性に利用できます。INは、復号する入力バッファが入力の長さを表します。復号プロセスおよび任意のパディングの後、復号バッファの先頭に設定する必要があります。keyderはASN1フォーマットのRSA秘密鍵であり、Keyszはバイト数のキーの長さです。コールバックの例は、wolfssl / test.h myrsadec()を見つけることができます。
\brief 復号します。コールバックは、成功のための平文バイト数または<0エラーの場合は<0を返すべきです。SSLとCTXポインタはユーザーの利便性に利用できます。INは、復号する入力バッファが入力の長さを表します。復号プロセスおよび任意のパディングの後、復号バッファの先頭に設定する必要があります。keyderはASN1フォーマットのRSA秘密鍵であり、Keyszはバイト数のキーの長さです。コールバックの例は、wolfssl / test.h myrsadec()を見つけることができます。
\return none いいえ返します。
_Example_
@@ -8970,12 +8970,12 @@ int wolfSSL_send_SessionTicket(WOLFSSL* ssl);
\return SSL_SUCCESS セッションを正常に設定すると返されます。
\return BAD_FUNC_ARG 失敗した場合に返されます。これは、無効な引数を関数に渡すことによって発生します。
\param ctx wolfSSL_CTX_new()で作成されたWOLFSSL_CTXオブジェクトへのポインタ。
\param cb セッションチケットを暗号化/復号するためのユーザーコールバック関数
\param cb セッションチケットを暗号化/復号するためのユーザーコールバック関数
\param ssl(Callback) wolfSSL_new()で作成されたWolfSSLオブジェクトへのポインタ
\param key_name(Callback) このチケットコンテキストの一意のキー名はランダムに生成されるべきです
\param iv(Callback) ユニークなIVこのチケットの場合、最大128ビット、ランダムに生成されるべきです
\param mac(Callback) このチケットの最大256ビットMAC
\param enc(Callback) この暗号化パラメータがtrueの場合、ユーザーはキーコード、IV、Macを記入し、チケットを長さのインレルの範囲内に暗号化し、結果として生じる出力長を* outreenに設定する必要があります。 wolfssl_ticket_ret_okを返す暗号化が成功したことをWolfSSLに指示します。この暗号化パラメータがfalseの場合、key_name、iv、およびmacを使用して、リングインレーンの範囲内のチケットの復号を実行する必要があります。結果の復号長は* outreenに設定する必要があります。 wolfssl_ticket_ret_okを返すと、復号されたチケットの使用を続行するようにWolfSSLに指示します。 wolfssl_ticket_ret_createを返すと、復号されたチケットを使用するだけでなく、クライアントに送信するための新しいものを生成するように指示し、最近ロールされている場合に役立つ、フルハンドシェイクを強制したくない。 wolfssl_ticket_ret_rejectを返すと、WolfSSLにこのチケットを拒否し、フルハンドシェイクを実行し、通常のセッション再開のための新しい標準セッションIDを作成します。 wolfssl_ticket_ret_fatalを返すと、致命的なエラーで接続の試みを終了するようにWolfSSLに指示します。
\param enc(Callback) この暗号化パラメータがtrueの場合、ユーザーはキーコード、IV、Macを記入し、チケットを長さのインレルの範囲内に暗号化し、結果として生じる出力長を* outreenに設定する必要があります。 wolfssl_ticket_ret_okを返す暗号化が成功したことをWolfSSLに指示します。この暗号化パラメータがfalseの場合、key_name、iv、およびmacを使用して、リングインレーンの範囲内のチケットの復号を実行する必要があります。結果の復号長は* outreenに設定する必要があります。 wolfssl_ticket_ret_okを返すと、復号されたチケットの使用を続行するようにWolfSSLに指示します。 wolfssl_ticket_ret_createを返すと、復号されたチケットを使用するだけでなく、クライアントに送信するための新しいものを生成するように指示し、最近ロールされている場合に役立つ、フルハンドシェイクを強制したくない。 wolfssl_ticket_ret_rejectを返すと、WolfSSLにこのチケットを拒否し、フルハンドシェイクを実行し、通常のセッション再開のための新しい標準セッションIDを作成します。 wolfssl_ticket_ret_fatalを返すと、致命的なエラーで接続の試みを終了するようにWolfSSLに指示します。
\param ticket(Callback) 暗号化チケットの入出力バッファ。ENCパラメータを参照してください
\param inLen(Callback) チケットパラメータの入力長
\param outLen(Callback) チケットパラメータの結果の出力長。コールバックoutlenを入力すると、チケットバッファで使用可能な最大サイズが表示されます。
@@ -10110,7 +10110,7 @@ int wolfSSL_no_dhe_psk(WOLFSSL* ssl);
/*!
\ingroup IO
\brief この関数は、TLS v1.3クライアントまたはサーバーのwolfsslで呼び出されて、キーのロールオーバーを強制します。KeyUpdateメッセージがピアに送信され、新しいキーが暗号化のために計算されます。ピアはKeyUpdateメッセージを送り、新しい復号キーWILを計算します。この機能は、ハンドシェイクが完了した後にのみ呼び出すことができます。
\brief この関数は、TLS v1.3クライアントまたはサーバーのwolfsslで呼び出されて、キーのロールオーバーを強制します。KeyUpdateメッセージがピアに送信され、新しいキーが暗号化のために計算されます。ピアはKeyUpdateメッセージを送り、新しい復号キーWILを計算します。この機能は、ハンドシェイクが完了した後にのみ呼び出すことができます。
\param [in,out] ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
\return BAD_FUNC_ARG sslがNULLの場合、またはTLS v1.3を使用していない場合。
\return WANT_WRITE 書き込みが準備ができていない場合
@@ -10134,7 +10134,7 @@ int wolfSSL_update_keys(WOLFSSL* ssl);
/*!
\ingroup IO
\brief この関数は、TLS v1.3クライアントまたはサーバーのwolfsslで呼び出され、キーのロールオーバーが進行中かどうかを判断します。wolfssl_update_keys()が呼び出されると、KeyUpdateメッセージが送信され、暗号化キーが更新されます。復号キーは、応答が受信されたときに更新されます。
\brief この関数は、TLS v1.3クライアントまたはサーバーのwolfsslで呼び出され、キーのロールオーバーが進行中かどうかを判断します。wolfssl_update_keys()が呼び出されると、KeyUpdateメッセージが送信され、暗号化キーが更新されます。復号キーは、応答が受信されたときに更新されます。
\param [in] ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
\param [out] キー更新応答が必要ない場合は必須0。1キー更新応答が必要ない場合。
\return 0 成功した。

View File

@@ -1,17 +1,22 @@
/*!
\ingroup Math
\brief この関数は、整数の最大サイズのランタイムFastMath設定をチェックします。FP_SIZEが正しく機能するために、FP_SIZEが各ライブラリーに一致しなければならないため、ユーザーがWolfCryptライブラリを独立して使用している場合に重要です。このチェックはCheckFastMathSettingsとして定義されています。これは、CheckRuntimeFastMathとFP_SIZEを比較するだけで、ミスマッチがある場合は0を返します。
\return FP_SIZE 数学ライブラリで利用可能な最大サイズに対応するFP_SIZEを返します。
\brief この関数は、整数の最大サイズに関するランタイムfastmath設定をチェックします。ユーザーがwolfCryptライブラリを独立して使用している場合に重要です。数学が正しく動作するためには、各ライブラリのFP_SIZEが一致している必要があります。このチェックはCheckFastMathSettings()として定義されており、CheckRunTimeFastMathとFP_SIZEを単純に比較し、不一致の場合は0を、一致する場合は1を返します。
\return FP_SIZE 数学ライブラリで使用可能な最大サイズに対応するFP_SIZEを返します。
\param none パラメータなし。
_Example_
\code
if (CheckFastMathSettings() != 1) {
return err_sys("Build vs. runtime fastmath FP_MAX_BITS mismatch\n");
return err_sys("Build vs. runtime fastmath FP_MAX_BITS mismatch\n");
}
// This is converted by the preprocessor to:
// これはプリプロセッサによって次のように変換されます:
// if ( (CheckRunTimeFastMath() == FP_SIZE) != 1) {
// and confirms that the fast math settings match
// the compile time settings
// そしてfastmath設定がコンパイル時の設定と一致することを確認します
\endcode
\sa CheckRunTimeSettings
*/
word32 CheckRunTimeFastMath(void);
word32 CheckRunTimeFastMath(void);

View File

@@ -1,18 +1,40 @@
/*!
\ingroup Memory
\brief これは実際には関数ではなく、むしろプリプロセッサマクロであり、ユーザーは自分のMalloc、Realloc、および標準のCメモリ関数の代わりに自由な関数に置き換えることができます。外部メモリ機能を使用するには、xmalloc_userを定義します。これにより、メモリ機能をフォームの外部関数に置き換えます.extern void * xmallocsize_t n、void * heap、int型; extern void * XrealLocvoid * p、size_t n、void *ヒープ、int型。 extern void xfreevoid * p、void * heap、int型; wolfssl_malloc、wolfssl_realloc、wolfssl_freeの代わりに基本的なCメモリ機能を使用するには、NO_WOLFSSL_MEMORYを定義します。これにより、メモリ関数が次のものに置き換えられます。#define Xmallocs、h、tvoidh、voidt、mallocs#define xfreep、h、t{void * xp =p; ifxpfreexp; #define xreallocp、n、h、tReallocpnこれらのオプションのどれも選択されていない場合、システムはデフォルトで使用されます。 WolfSSLメモリ機能ユーザーはコールバックフックを介してカスタムメモリ機能を設定できますWolfssl_Malloc、WolfSSL_Realloc、wolfssl_freeを参照。このオプションは、メモリ関数を次のものに置き換えます。#define xmallocs、h、tvoidH、VoidT、wolfssl_mallocs#define xfreep、h、t{void * XP =P; ifxpwolfssl_freexp; #define xreallocp、n、h、twolfssl_reallocpn
\return pointer 成功したメモリへのポインタを返します
\return NULL 失敗した
\param s 割り当てるメモリのサイズ
\param h カスタムXMalloc関数で使用されています使用するヒープへのポインタ
\brief これは実際には関数ではなく、プリプロセッサマクロです。
ユーザーが標準のCメモリ関数の代わりに独自のmalloc、realloc、free関数を置き換えることを可能にします。
外部メモリ関数を使用するには、XMALLOC_USERを定義します。これにより、メモリ関数は次の形式の外部関数に置き換えられます:
extern void *XMALLOC(size_t n, void* heap, int type);
extern void *XREALLOC(void *p, size_t n, void* heap, int type);
extern void XFREE(void *p, void* heap, int type);
wolfSSL_Malloc、wolfSSL_Realloc、wolfSSL_Freeの代わりに基本的なCメモリ関数を使用するには、NO_WOLFSSL_MEMORYを定義します。
これにより、メモリ関数は次のように置き換えられます:
#define XMALLOC(s, h, t) ((void)h, (void)t, malloc((s)))
#define XFREE(p, h, t) {void* xp = (p); if((xp)) free((xp));}
#define XREALLOC(p, n, h, t) realloc((p), (n))
これらのオプションのいずれも選択されていない場合、システムはデフォルトでwolfSSLメモリ関数を使用します。
ユーザーはコールバックフックを通じてカスタムメモリ関数を設定できます(wolfSSL_Malloc、wolfSSL_Realloc、wolfSSL_Freeを参照)。
このオプションは、メモリ関数を次のように置き換えます:
#define XMALLOC(s, h, t) ((void)h, (void)t, wolfSSL_Malloc((s)))
#define XFREE(p, h, t) {void* xp = (p); if((xp)) wolfSSL_Free((xp));}
#define XREALLOC(p, n, h, t) wolfSSL_Realloc((p), (n))
\return pointer 成功時に割り当てられたメモリへのポインタを返します
\return NULL 失敗時
\param s 割り当てるメモリのサイズ
\param h (カスタムXMALLOC関数で使用)使用するヒープへのポインタ
\param t ユーザーヒント用のメモリ割り当てタイプ。types.hの列挙型を参照
_Example_
\code
int* tenInts = XMALLOC(sizeof(int)*10, NULL, DYNAMIC_TYPE_TMP_BUFFER);
if (tenInts == NULL) {
// error allocating space
// スペース割り当てエラー
return MEMORY_E;
}
\endcode
\sa wolfSSL_Malloc
\sa wolfSSL_Realloc
\sa wolfSSL_Free
@@ -22,18 +44,40 @@ void* XMALLOC(size_t n, void* heap, int type);
/*!
\ingroup Memory
\brief これは実際には関数ではなく、むしろプリプロセッサマクロであり、ユーザーは自分のMalloc、Realloc、および標準のCメモリ関数の代わりに自由な関数に置き換えることができます。外部メモリ機能を使用するには、xmalloc_userを定義します。これにより、メモリ機能をフォームの外部関数に置き換えます.extern void * xmallocsize_t n、void * heap、int型; extern void * XrealLocvoid * p、size_t n、void *ヒープ、int型。 extern void xfreevoid * p、void * heap、int型; wolfssl_malloc、wolfssl_realloc、wolfssl_freeの代わりに基本的なCメモリ機能を使用するには、NO_WOLFSSL_MEMORYを定義します。これにより、メモリ関数が次のものに置き換えられます。#define Xmallocs、h、tvoidh、voidt、mallocs#define xfreep、h、t{void * xp =p; ifxpfreexp; #define xreallocp、n、h、tReallocpnこれらのオプションのどれも選択されていない場合、システムはデフォルトで使用されます。 WolfSSLメモリ機能ユーザーはコールバックフックを介してカスタムメモリ機能を設定できますWolfssl_Malloc、WolfSSL_Realloc、wolfssl_freeを参照。このオプションは、メモリ関数を次のものに置き換えます。#define xmallocs、h、tvoidH、VoidT、wolfssl_mallocs#define xfreep、h、t{void * XP =P; ifxpwolfssl_freexp; #define xreallocp、n、h、twolfssl_reallocpn
\return Return 成功したメモリを割り当てるポインタ
\return NULL 失敗した
\param p Reallocateへのアドレスへのポインタ
\param n 割り当てるメモリのサイズ
\param h カスタムXrealloc関数で使用されています使用するヒープへのポインタ
\brief これは実際には関数ではなく、プリプロセッサマクロです。
ユーザーが標準のCメモリ関数の代わりに独自のmalloc、realloc、free関数を置き換えることを可能にします。
外部メモリ関数を使用するには、XMALLOC_USERを定義します。これにより、メモリ関数は次の形式の外部関数に置き換えられます:
extern void *XMALLOC(size_t n, void* heap, int type);
extern void *XREALLOC(void *p, size_t n, void* heap, int type);
extern void XFREE(void *p, void* heap, int type);
wolfSSL_Malloc、wolfSSL_Realloc、wolfSSL_Freeの代わりに基本的なCメモリ関数を使用するには、NO_WOLFSSL_MEMORYを定義します。
これにより、メモリ関数は次のように置き換えられます:
#define XMALLOC(s, h, t) ((void)h, (void)t, malloc((s)))
#define XFREE(p, h, t) {void* xp = (p); if((xp)) free((xp));}
#define XREALLOC(p, n, h, t) realloc((p), (n))
これらのオプションのいずれも選択されていない場合、システムはデフォルトでwolfSSLメモリ関数を使用します。
ユーザーはコールバックフックを通じてカスタムメモリ関数を設定できます(wolfSSL_Malloc、wolfSSL_Realloc、wolfSSL_Freeを参照)。
このオプションは、メモリ関数を次のように置き換えます:
#define XMALLOC(s, h, t) ((void)h, (void)t, wolfSSL_Malloc((s)))
#define XFREE(p, h, t) {void* xp = (p); if((xp)) wolfSSL_Free((xp));}
#define XREALLOC(p, n, h, t) wolfSSL_Realloc((p), (n))
\return 成功時に割り当てられたメモリへのポインタを返します
\return NULL 失敗時
\param p 再割り当てするアドレスへのポインタ
\param n 割り当てるメモリのサイズ
\param h (カスタムXREALLOC関数で使用)使用するヒープへのポインタ
\param t ユーザーヒント用のメモリ割り当てタイプ。types.hの列挙型を参照
_Example_
\code
int* tenInts = (int*)XMALLOC(sizeof(int)*10, NULL, DYNAMIC_TYPE_TMP_BUFFER);
int* twentyInts = (int*)XREALLOC(tenInts, sizeof(int)*20, NULL,
DYNAMIC_TYPE_TMP_BUFFER);
\endcode
\sa wolfSSL_Malloc
\sa wolfSSL_Realloc
\sa wolfSSL_Free
@@ -43,18 +87,41 @@ void* XREALLOC(void *p, size_t n, void* heap, int type);
/*!
\ingroup Memory
\brief これは実際には関数ではなく、むしろプリプロセッサマクロであり、ユーザーは自分のMalloc、Realloc、および標準のCメモリ関数の代わりに自由な関数に置き換えることができます。外部メモリ機能を使用するには、xmalloc_userを定義します。これにより、メモリ機能をフォームの外部関数に置き換えます.extern void * xmallocsize_t n、void * heap、int型; extern void * XrealLocvoid * p、size_t n、void *ヒープ、int型。 extern void xfreevoid * p、void * heap、int型; wolfssl_malloc、wolfssl_realloc、wolfssl_freeの代わりに基本的なCメモリ機能を使用するには、NO_WOLFSSL_MEMORYを定義します。これにより、メモリ関数が次のものに置き換えられます。#define Xmallocs、h、tvoidh、voidt、mallocs#define xfreep、h、t{void * xp =p; ifxpfreexp; #define xreallocp、n、h、tReallocpnこれらのオプションのどれも選択されていない場合、システムはデフォルトで使用されます。 WolfSSLメモリ機能ユーザーはコールバックフックを介してカスタムメモリ機能を設定できますWolfssl_Malloc、WolfSSL_Realloc、wolfssl_freeを参照。このオプションは、メモリ関数を次のものに置き換えます。#define xmallocs、h、tvoidH、VoidT、wolfssl_mallocs#define xfreep、h、t{void * XP =P; ifxpwolfssl_freexp; #define xreallocp、n、h、twolfssl_reallocpn
\return none いいえ返します。
\param p 無料のアドレスへのポインタ
\param h 使用するヒープへのカスタムXFree関数で使用されています
\brief これは実際には関数ではなく、プリプロセッサマクロです。
ユーザーが標準のCメモリ関数の代わりに独自のmalloc、realloc、free関数を置き換えることを可能にします。
外部メモリ関数を使用するには、XMALLOC_USERを定義します。
これにより、メモリ関数は次の形式の外部関数に置き換えられます:
extern void *XMALLOC(size_t n, void* heap, int type);
extern void *XREALLOC(void *p, size_t n, void* heap, int type);
extern void XFREE(void *p, void* heap, int type);
wolfSSL_Malloc、wolfSSL_Realloc、wolfSSL_Freeの代わりに基本的なCメモリ関数を使用するには、NO_WOLFSSL_MEMORYを定義します。
これにより、メモリ関数は次のように置き換えられます:
#define XMALLOC(s, h, t) ((void)h, (void)t, malloc((s)))
#define XFREE(p, h, t) {void* xp = (p); if((xp)) free((xp));}
#define XREALLOC(p, n, h, t) realloc((p), (n))
これらのオプションのいずれも選択されていない場合、システムはデフォルトでwolfSSLメモリ関数を使用します。
ユーザーはコールバックフックを通じてカスタムメモリ関数を設定できます(wolfSSL_Malloc、wolfSSL_Realloc、wolfSSL_Freeを参照)。
このオプションは、メモリ関数を次のように置き換えます:
#define XMALLOC(s, h, t) ((void)h, (void)t, wolfSSL_Malloc((s)))
#define XFREE(p, h, t) {void* xp = (p); if((xp)) wolfSSL_Free((xp));}
#define XREALLOC(p, n, h, t) wolfSSL_Realloc((p), (n))
\return none 戻り値なし。
\param p 解放するアドレスへのポインタ
\param h (カスタムXFREE関数で使用)使用するヒープへのポインタ
\param t ユーザーヒント用のメモリ割り当てタイプ。types.hの列挙型を参照
_Example_
\code
int* tenInts = XMALLOC(sizeof(int) * 10, NULL, DYNAMIC_TYPE_TMP_BUFFER);
if (tenInts == NULL) {
// error allocating space
// スペース割り当てエラー
return MEMORY_E;
}
\endcode
\sa wolfSSL_Malloc
\sa wolfSSL_Realloc
\sa wolfSSL_Free
@@ -64,18 +131,26 @@ void XFREE(void *p, void* heap, int type);
/*!
\ingroup Math
\brief この関数はコンパイル時クラスの設定をチェックします。設定が正しく機能するためのライブラリ間のライブラリ間で一致する必要があるため、ユーザーがWolfCryptライブラリを独立して使用している場合は重要です。このチェックはCheckCtcSettingsとして定義されています。これは、CheckRuntimeSettingsとCTC_Settingsを比較するだけで、ミスマッチがある場合は0、または1が一致した場合は1を返します。
\return settings 実行時CTC_SETTINGSコンパイル時設定を返します。
\brief この関数は、コンパイル時のクラス設定をチェックします。
ユーザーがwolfCryptライブラリを独立して使用している場合に重要です。
数学が正しく動作するためには、ライブラリ間で設定が一致している必要があります。
このチェックはCheckCtcSettings()として定義されており、CheckRunTimeSettingsとCTC_SETTINGSを単純に比較し、不一致の場合は0を、一致する場合は1を返します。
\return settings ランタイムCTC_SETTINGS(コンパイル時設定)を返します
\param none パラメータなし。
_Example_
\code
if (CheckCtcSettings() != 1) {
return err_sys("Build vs. runtime math mismatch\n");
}
// This is converted by the preprocessor to:
// これはプリプロセッサによって次のように変換されます:
// if ( (CheckCtcSettings() == CTC_SETTINGS) != 1) {
// and will compare whether the compile time class settings
// match the current settings
// そしてコンパイル時のクラス設定が現在の設定と一致するかどうかを比較します
\endcode
\sa CheckRunTimeFastMath
*/
word32 CheckRunTimeSettings(void);
word32 CheckRunTimeSettings(void);

View File

@@ -1,28 +1,32 @@
/*!
\ingroup AES
\brief 入力バッファから暗号を復号し、AESでCipher Block Chainingを使用して出力バッファに出力バッファーに入れます。この関数は、AES構造を初期化する必要はありません。代わりに、キーとIV初期化ベクトル)を取り、これらを使用してAESオブジェクトを初期化してから暗号テキストを復号します。
\return 0 メッセージの復号化に成功しました
\return BAD_ALIGN_E ブロック整列エラーに戻りました
\return BAD_FUNC_ARG aesetivの間にキーの長さが無効な場合、またはAESオブジェクトがNULLの場合
\return MEMORY_E wolfssl_small_stackが有効になっていて、xmallocがAESオブジェクトのインスタンス化に失敗した場合に返されます
\param out 復号化されたメッセージのプレーンテキストを保存する出力バッファへのポインタ
\param in 復号化される暗号テキストを含む入力バッファへのポインタ
\param inSz 入力メッセージのサイズ
\param key 復号化のための16,24、または32バイトの秘密鍵
\brief 入力バッファinから暗号を復号し、結果の平文をAESを使用した暗号ブロック連鎖を使用して出力バッファoutに格納します。この関数は、AES構造を初期化する必要はありません。代わりに、キーとiv(初期化ベクトル)を受け取り、これらを使用してAESオブジェクトを初期化し、暗号文を復号します。
\return 0 メッセージの復号に成功した場合
\return BAD_ALIGN_E ブロックアライメントエラーが発生した場合に返されます
\return BAD_FUNC_ARG AesSetIV中にキー長が無効またはAESオブジェクトがnullの場合に返されます
\return MEMORY_E WOLFSSL_SMALL_STACKが有効で、XMALLOCがAESオブジェクトのインスタンス化に失敗した場合に返されます。
\param out 復号されたメッセージの平文を格納する出力バッファへのポインタ
\param in 復号する暗号文を含む入力バッファへのポインタ
\param inSz 入力メッセージのサイズ
\param key 復号用の16、24、または32バイトの秘密鍵
\param keySz 復号に使用するキーのサイズ
_Example_
\code
int ret = 0;
byte key[] = { some 16, 24, or 32 byte key };
byte iv[] = { some 16 byte iv };
byte cipher[AES_BLOCK_SIZE * n]; //n being a positive integer making
cipher some multiple of 16 bytes
// fill cipher with cipher text
byte key[] = { 16、24、または32バイトのキー };
byte iv[] = { 16バイトのiv };
byte cipher[AES_BLOCK_SIZE * n]; //nは正の整数で、cipherを16バイトの倍数にする
// cipherを暗号文で埋める
byte plain [AES_BLOCK_SIZE * n];
if ((ret = wc_AesCbcDecryptWithKey(plain, cipher, AES_BLOCK_SIZE, key,
AES_BLOCK_SIZE, iv)) != 0 ) {
// Decrypt Error
// 復号エラー
}
\endcode
\sa wc_AesSetKey
\sa wc_AesSetIV
\sa wc_AesCbcEncrypt
@@ -34,27 +38,33 @@ int wc_AesCbcDecryptWithKey(byte* out, const byte* in, word32 inSz,
/*!
\ingroup 3DES
\brief この関数は入力暗号文を復号化し、結果の平文を出力バッファーに出力します。暗号ブロックチェーンチェーンCBCモードでDES暗号化を使用します。この関数は、wc_des_cbcdecryptの代わりに、ユーザーがDES構造体を直接インスタンス化せずにメッセージを復号化できるようにします。
\return 0 与えられた暗号文を正常に復号化したときに返されました
\return MEMORY_E DES構造体の割り当てスペースが割り当てられている場合に返された
\param out 復号化された平文を保存するバッファへのポインタ
\param in 暗号化された暗号文を含む入力バッファへのポインタ
\param sz 復号化する暗号文の長さ
\param key 復号化に使用する8バイトのキーを含むバッファへのポインタ
\brief この関数は、入力暗号文inを復号し、結果の平文を出力バッファoutに格納します。暗号ブロック連鎖(CBC)モードのDES暗号化を使用します。この関数はwc_Des_CbcDecryptの代替で、ユーザーがDes構造体を直接インスタンス化せずにメッセージを復号できるようにします。
\return 0 指定された暗号文の復号に成功した場合に返されます
\return MEMORY_E Des構造体用のスペース割り当て中にエラーが発生した場合に返されます
\param out 復号された平文を格納するバッファへのポインタ
\param in 暗号化された暗号文を含む入力バッファへのポインタ
\param sz 復号する暗号文の長さ
\param key 復号に使用する8バイトのキーを含むバッファへのポインタ
\param iv 復号に使用する8バイトのivを含むバッファへのポインタ。ivが提供されない場合、ivはデフォルトで0になります
_Example_
\code
int ret;
byte key[] = { // initialize with 8 byte key };
byte iv[] = { // initialize with 8 byte iv };
byte key[] = { // 8バイトのキーで初期化 };
byte iv[] = { // 8バイトのivで初期化 };
byte cipher[] = { // initialize with ciphertext };
byte cipher[] = { // 暗号文で初期化 };
byte decoded[sizeof(cipher)];
if ( wc_Des_CbcDecryptWithKey(decoded, cipher, sizeof(cipher), key,
iv) != 0) {
// error decrypting message
// メッセージの復号エラー
}
\endcode
\sa wc_Des_CbcDecrypt
*/
int wc_Des_CbcDecryptWithKey(byte* out,
@@ -63,25 +73,31 @@ int wc_Des_CbcDecryptWithKey(byte* out,
/*!
\ingroup 3DES
\brief この関数は入力平文を暗号化し、結果の暗号文を出力バッファーに出力します。暗号ブロックチェーンチェーンCBCモードでDES暗号化を使用します。この関数は、WC_DES_CBCENCRYPTの代わりになり、ユーザーがDES構造を直接インスタンス化せずにメッセージを暗号化できます。
\return 0 データの暗号化に成功した後に返されます。
\return MEMORY_E DES構造体にメモリを割り当てるエラーがある場合は返されます。
\return <0 暗号化中に任意のエラーに戻ります。
\param out 最終暗号化データ
\param in 暗号化されるデータは、DESブロックサイズに埋められなければなりません
\param sz 入力バッファのサイズ
\param key 暗号化に使用するキーへのポインタ。
\brief この関数は、入力平文inを暗号化し、結果の暗号文を出力バッファoutに格納します。暗号ブロック連鎖(CBC)モードのDES暗号化を使用します。この関数はwc_Des_CbcEncryptの代替で、ユーザーがDes構造体を直接インスタンス化せずにメッセージを暗号化できるようにします。
\return 0 データの暗号化に成功した後に返されます。
\return MEMORY_E Des構造体用のメモリ割り当て中にエラーが発生した場合に返されます。
\return <0 暗号化中の任意のエラーで返されます
\param out 最終的に暗号化されたデータ
\param in 暗号化されるデータ。Desブロックサイズにパディングされている必要があります。
\param sz 入力バッファのサイズ。
\param key 暗号化に使用するキーへのポインタ。
\param iv 初期化ベクトル
_Example_
\code
byte key[] = { // initialize with 8 byte key };
byte iv[] = { // initialize with 8 byte iv };
byte in[] = { // Initialize with plaintext };
byte key[] = { // 8バイトのキーで初期化 };
byte iv[] = { // 8バイトのivで初期化 };
byte in[] = { // 平文で初期化 };
byte out[sizeof(in)];
if ( wc_Des_CbcEncryptWithKey(&out, in, sizeof(in), key, iv) != 0)
{
// error encrypting message
// メッセージの暗号化エラー
}
\endcode
\sa wc_Des_CbcDecryptWithKey
\sa wc_Des_CbcEncrypt
*/
@@ -91,27 +107,33 @@ int wc_Des_CbcEncryptWithKey(byte* out,
/*!
\ingroup 3DES
\brief この関数は入力平文を暗号化し、結果の暗号文を出力バッファーに出力します。暗号ブロックチェーンCBCモードでトリプルDES3DES暗号化を使用します。この関数は、WC_DES3_CBCENCRYPTの代わりになり、ユーザーがDES3構造を直接インスタンス化せずにメッセージを暗号化できます。
\return 0 データの暗号化に成功した後に返されます。
\return MEMORY_E DES構造体にメモリを割り当てるエラーがある場合は返されます。
\return <0 暗号化中に任意のエラーに戻ります。
\param out 最終暗号化データ
\param in 暗号化されるデータは、DESブロックサイズに埋められなければなりません
\param sz 入力バッファのサイズ
\param key 暗号化に使用するキーへのポインタ。
\brief この関数は、入力平文inを暗号化し、結果の暗号文を出力バッファoutに格納します。暗号ブロック連鎖(CBC)モードのトリプルDES(3DES)暗号化を使用します。この関数はwc_Des3_CbcEncryptの代替で、ユーザーがDes3構造体を直接インスタンス化せずにメッセージを暗号化できるようにします。
\return 0 データの暗号化に成功した後に返されます。
\return MEMORY_E Des構造体用のメモリ割り当て中にエラーが発生した場合に返されます。
\return <0 暗号化中の任意のエラーで返されます
\param out 最終的に暗号化されたデータ
\param in 暗号化されるデータ。Desブロックサイズにパディングされている必要があります。
\param sz 入力バッファのサイズ。
\param key 暗号化に使用するキーへのポインタ。
\param iv 初期化ベクトル
_Example_
\code
byte key[] = { // initialize with 8 byte key };
byte iv[] = { // initialize with 8 byte iv };
byte key[] = { // 8バイトのキーで初期化 };
byte iv[] = { // 8バイトのivで初期化 };
byte in[] = { // Initialize with plaintext };
byte in[] = { // 平文で初期化 };
byte out[sizeof(in)];
if ( wc_Des3_CbcEncryptWithKey(&out, in, sizeof(in), key, iv) != 0)
{
// error encrypting message
// メッセージの暗号化エラー
}
\endcode
\sa wc_Des3_CbcDecryptWithKey
\sa wc_Des_CbcEncryptWithKey
\sa wc_Des_CbcDecryptWithKey
@@ -122,29 +144,35 @@ int wc_Des3_CbcEncryptWithKey(byte* out,
/*!
\ingroup 3DES
\brief この関数は入力暗号文を復号化し、結果の平文を出力バッファーに出力します。暗号ブロックチェーンCBCモードでトリプルDES3DES暗号化を使用します。この関数は、wc_des3_cbcdecryptの代わりに、ユーザーがDES3構造を直接インスタンス化せずにメッセージを復号化できるようにします。
\return 0 与えられた暗号文を正常に復号化したときに返されました
\return MEMORY_E DES構造体の割り当てスペースが割り当てられている場合に返された
\param out 復号化された平文を保存するバッファへのポインタ
\param in 暗号化された暗号文を含む入力バッファへのポインタ
\param sz 復号化する暗号文の長さ
\param key 復号化に使用する24バイトのキーを含むバッファへのポインタ
\brief この関数は、入力暗号文inを復号し、結果の平文を出力バッファoutに格納します。暗号ブロック連鎖(CBC)モードのトリプルDes(3DES)暗号化を使用します。この関数はwc_Des3_CbcDecryptの代替で、ユーザーがDes3構造体を直接インスタンス化せずにメッセージを復号できるようにします。
\return 0 指定された暗号文の復号に成功した場合に返されます
\return MEMORY_E Des構造体用のスペース割り当て中にエラーが発生した場合に返されます
\param out 復号された平文を格納するバッファへのポインタ
\param in 暗号化された暗号文を含む入力バッファへのポインタ
\param sz 復号する暗号文の長さ
\param key 復号に使用する24バイトのキーを含むバッファへのポインタ
\param iv 復号に使用する8バイトのivを含むバッファへのポインタ。ivが提供されない場合、ivはデフォルトで0になります
_Example_
\code
int ret;
byte key[] = { // initialize with 24 byte key };
byte iv[] = { // initialize with 8 byte iv };
byte key[] = { // 24バイトのキーで初期化 };
byte iv[] = { // 8バイトのivで初期化 };
byte cipher[] = { // initialize with ciphertext };
byte cipher[] = { // 暗号文で初期化 };
byte decoded[sizeof(cipher)];
if ( wc_Des3_CbcDecryptWithKey(decoded, cipher, sizeof(cipher),
key, iv) != 0) {
// error decrypting message
// メッセージの復号エラー
}
\endcode
\sa wc_Des3_CbcDecrypt
*/
int wc_Des3_CbcDecryptWithKey(byte* out,
const byte* in, word32 sz,
const byte* key, const byte* iv);
const byte* key, const byte* iv);

View File

@@ -1,8 +1,13 @@
/*!
\ingroup wolfCrypt
\brief WolfCryptによって使用されるリソースを初期化するために使用されます。
\return 0 成功すると
\return <0 initリソースが失敗すると。
\brief wolfCryptで使用されるリソースを初期化するために使用されます
\return 0 成功時。
\return <0 リソースの初期化に失敗した場合。
\param none パラメータなし。
_Example_
\code
...
@@ -10,15 +15,21 @@
WOLFSSL_MSG("Error with wolfCrypt_Init call");
}
\endcode
\sa wolfCrypt_Cleanup
*/
int wolfCrypt_Init(void);
/*!
\ingroup wolfCrypt
\brief WolfCryptによって使用されるリソースをクリーンアップするために使用されます。
\return 0 成功すると
\return <0 リソースのクリーンアップが失敗したとき。
\brief wolfCryptで使用されるリソースをクリーンアップするために使用されます
\return 0 成功時。
\return <0 リソースのクリーンアップに失敗した場合。
\param none パラメータなし。
_Example_
\code
...
@@ -26,6 +37,7 @@ int wolfCrypt_Init(void);
WOLFSSL_MSG("Error with wolfCrypt_Cleanup call");
}
\endcode
\sa wolfCrypt_Init
*/
int wolfCrypt_Cleanup(void);
int wolfCrypt_Cleanup(void);

View File

@@ -1,16 +1,20 @@
/*!
\brief
\return Success この関数は、読み取られたバイト数を返します。
\return WOLFSSL_CBIO_ERR_WANT_READ 最後のエラーがsocket_ewouldbolcokまたはsocket_eagainであれば、メッセージを返されます。
\return WOLFSSL_CBIO_ERR_TIMEOUT "Socket Timeout"メッセージを返しました
\return WOLFSSL_CBIO_ERR_CONN_RST 最後のエラーがsocket_econnresetの場合、 "Connection Reset"メッセージ返されます。
\return WOLFSSL_CBIO_ERR_ISR 最後のエラーがsocket_eintrの場合、 "Socket Interrupted"メッセージ返されます。
\return WOLFSSL_CBIO_ERR_WANT_READ 最後のエラーがsocket_econneRefusedの場合、「接続拒否」メッセージを返しました
\return WOLFSSL_CBIO_ERR_CONN_CLOSE 最後のエラーがSOCKET_ECONNABORTEDの場合、「接続中止」メッセージ返されます。
\return WOLFSSL_CBIO_ERR_GENERAL 最後のエラーが指定されていない場合は、「一般的なエラー」メッセージ返されます。
\param ssl wolfssl_newを使用して作成されたWolfSSL構造へのポインタ
\param buf バッファのチャーポインタ表現。
\param sz バッファのサイズ
\brief この関数は受信埋め込みコールバックです。
\return Success この関数は読み取られたバイト数を返します。
\return WOLFSSL_CBIO_ERR_WANT_READ 最後のエラーがSOCKET_EWOULDBLCOKまたはSOCKET_EAGAINの場合、"Would block"メッセージとともに返されます
\return WOLFSSL_CBIO_ERR_TIMEOUT "Socket timeout"メッセージとともに返されます。
\return WOLFSSL_CBIO_ERR_CONN_RST 最後のエラーがSOCKET_ECONNRESETの場合、"Connection reset"メッセージとともに返されます。
\return WOLFSSL_CBIO_ERR_ISR 最後のエラーがSOCKET_EINTRの場合、"Socket interrupted"メッセージとともに返されます
\return WOLFSSL_CBIO_ERR_WANT_READ 最後のエラーがSOCKET_ECONNREFUSEDの場合、"Connection refused"メッセージとともに返されます。
\return WOLFSSL_CBIO_ERR_CONN_CLOSE 最後のエラーがSOCKET_ECONNABORTEDの場合、"Connection aborted"メッセージとともに返されます。
\return WOLFSSL_CBIO_ERR_GENERAL 最後のエラーが指定されていない場合、"General error"メッセージとともに返されます
\param ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ
\param buf バッファのchar型ポインタ表現。
\param sz バッファのサイズ。
\param ctx ユーザー登録コンテキストへのvoid型ポインタ。デフォルトの場合、ctxはソケット記述子ポインタです。
_Example_
\code
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
@@ -20,9 +24,10 @@
void* ctx;
int bytesRead = EmbedReceive(ssl, buf, sz, ctx);
if(bytesRead <= 0){
// There were no bytes read. Failure case.
// バイトが読み取られませんでした。失敗ケース。
}
\endcode
\sa EmbedSend
\sa wolfSSL_CTX_SetIORecv
\sa wolfSSL_SSLSetIORecv
@@ -30,16 +35,20 @@
int EmbedReceive(WOLFSSL* ssl, char* buf, int sz, void* ctx);
/*!
\brief
\return Success この関数は送信されたバイト数を返します。
\return WOLFSSL_CBIO_ERR_WANT_WRITE 最後のエラーがsocket_ewouldblockまたはsocket_eagainであれば、 "Block"メッセージを返します。
\return WOLFSSL_CBIO_ERR_CONN_RST 最後のエラーがsocket_econnresetの場合、 "Connection Reset"メッセージ返されます。
\return WOLFSSL_CBIO_ERR_ISR 最後のエラーがsocket_eintrの場合、 "Socket Interrupted"メッセージ返されます。
\return WOLFSSL_CBIO_ERR_CONN_CLOSE 最後のエラーがsocket_epipeの場合、 "Socket Epipe"メッセージを返しました
\return WOLFSSL_CBIO_ERR_GENERAL 最後のエラーが指定されていない場合は、「一般的なエラー」メッセージ返されます。
\param ssl wolfssl_newを使用して作成されたWolfSSL構造へのポインタ
\param buf バッファを表す文字ポインタ。
\param sz バッファのサイズ
\brief この関数は送信埋め込みコールバックです。
\return Success この関数は送信されたバイト数を返します。
\return WOLFSSL_CBIO_ERR_WANT_WRITE 最後のエラーがSOCKET_EWOULDBLOCKまたはSOCKET_EAGAINの場合、"Would block"メッセージとともに返されます。
\return WOLFSSL_CBIO_ERR_CONN_RST 最後のエラーがSOCKET_ECONNRESETの場合、"Connection reset"メッセージとともに返されます。
\return WOLFSSL_CBIO_ERR_ISR 最後のエラーがSOCKET_EINTRの場合、"Socket interrupted"メッセージとともに返されます
\return WOLFSSL_CBIO_ERR_CONN_CLOSE 最後のエラーがSOCKET_EPIPEの場合、"Socket EPIPE"メッセージとともに返されます。
\return WOLFSSL_CBIO_ERR_GENERAL 最後のエラーが指定されていない場合、"General error"メッセージとともに返されます
\param ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ
\param buf バッファを表すchar型ポインタ。
\param sz バッファのサイズ。
\param ctx ユーザー登録コンテキストへのvoid型ポインタ。
_Example_
\code
WOLFSSL* ssl = wolfSSL_new(ctx);
@@ -48,9 +57,10 @@ int EmbedReceive(WOLFSSL* ssl, char* buf, int sz, void* ctx);
void* ctx;
int dSent = EmbedSend(ssl, buf, sz, ctx);
if(dSent <= 0){
// No byes sent. Failure case.
// バイトが送信されませんでした。失敗ケース。
}
\endcode
\sa EmbedReceive
\sa wolfSSL_CTX_SetIOSend
\sa wolfSSL_SSLSetIOSend
@@ -58,16 +68,20 @@ int EmbedReceive(WOLFSSL* ssl, char* buf, int sz, void* ctx);
int EmbedSend(WOLFSSL* ssl, char* buf, int sz, void* ctx);
/*!
\brief
\return Success この関数は、実行が成功した場合に読み込まれたNBバイトを返します。
\return WOLFSSL_CBIO_ERR_WANT_READ 接続が拒否された場合、または「ブロック」エラーが発生した場合は機能にスローされました
\return WOLFSSL_CBIO_ERR_TIMEOUT ソケットがタイムアウトした場合は返されます。
\return WOLFSSL_CBIO_ERR_CONN_RST 接続がリセットされている場合返されます。
\return WOLFSSL_CBIO_ERR_ISR ソケットが中断された場合返されます。
\return WOLFSSL_CBIO_ERR_GENERAL 一般的なエラーがあった場合に返されます。
\param ssl wolfssl_newを使用して作成されたWolfSSL構造へのポインタ
\param buf バッファへの定数の文字ポインタ。
\param sz バッファのサイズを表すint型
\brief この関数は受信埋め込みコールバックです。
\return Success 実行が成功した場合、この関数は読み取られたnbバイト数を返します
\return WOLFSSL_CBIO_ERR_WANT_READ 接続が拒否された場合、または関数で'would block'エラーがスローされた場合に返されます。
\return WOLFSSL_CBIO_ERR_TIMEOUT ソケットがタイムアウトした場合返されます。
\return WOLFSSL_CBIO_ERR_CONN_RST 接続がリセットされた場合返されます。
\return WOLFSSL_CBIO_ERR_ISR ソケットが中断された場合に返されます。
\return WOLFSSL_CBIO_ERR_GENERAL 一般的なエラーがあった場合に返されます
\param ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ
\param buf バッファへのconst char型ポインタ。
\param sz バッファのサイズを表すint型。
\param ctx WOLFSSL_CTXコンテキストへのvoid型ポインタ。
_Example_
\code
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( protocol method );
@@ -78,9 +92,10 @@ int EmbedSend(WOLFSSL* ssl, char* buf, int sz, void* ctx);
int nb = EmbedReceiveFrom(ssl, buf, sz, ctx);
if(nb > 0){
// nb is the number of bytes written and is positive
// nbは書き込まれたバイト数で正の値です
}
\endcode
\sa EmbedSendTo
\sa wolfSSL_CTX_SetIORecv
\sa wolfSSL_SSLSetIORecv
@@ -89,16 +104,20 @@ int EmbedSend(WOLFSSL* ssl, char* buf, int sz, void* ctx);
int EmbedReceiveFrom(WOLFSSL* ssl, char* buf, int sz, void*);
/*!
\brief
\return Success この関数は送信されたバイト数を返します。
\return WOLFSSL_CBIO_ERR_WANT_WRITE 最後のエラーがsocket_ewouldblockまたはsocket_eagainエラーの場合、 "Block"メッセージを返します。
\return WOLFSSL_CBIO_ERR_CONN_RST 最後のエラーがsocket_econnresetの場合、 "Connection Reset"メッセージ返されます。
\return WOLFSSL_CBIO_ERR_ISR 最後のエラーがsocket_eintrの場合、 "Socket Interrupted"メッセージ返されます。
\return WOLFSSL_CBIO_ERR_CONN_CLOSE 最後のエラーがwolfssl_cbio_err_conn_croseの場合、 "Socket Epipe"メッセージを返しました
\return WOLFSSL_CBIO_ERR_GENERAL 最後のエラーが指定されていない場合は、「一般的なエラー」メッセージ返されます。
\param ssl wolfssl_newを使用して作成されたWolfSSL構造へのポインタ
\param buf バッファを表す文字ポインタ。
\param sz バッファのサイズ
\brief この関数は送信埋め込みコールバックです。
\return Success この関数は送信されたバイト数を返します。
\return WOLFSSL_CBIO_ERR_WANT_WRITE 最後のエラーがSOCKET_EWOULDBLOCKまたはSOCKET_EAGAINエラーの場合、"Would Block"メッセージとともに返されます。
\return WOLFSSL_CBIO_ERR_CONN_RST 最後のエラーがSOCKET_ECONNRESETの場合、"Connection reset"メッセージとともに返されます。
\return WOLFSSL_CBIO_ERR_ISR 最後のエラーがSOCKET_EINTRの場合、"Socket interrupted"メッセージとともに返されます
\return WOLFSSL_CBIO_ERR_CONN_CLOSE 最後のエラーがWOLFSSL_CBIO_ERR_CONN_CLOSEの場合、"Socket EPIPE"メッセージとともに返されます。
\return WOLFSSL_CBIO_ERR_GENERAL 最後のエラーが指定されていない場合、"General error"メッセージとともに返されます
\param ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ
\param buf バッファを表すchar型ポインタ。
\param sz バッファのサイズ。
\param ctx ユーザー登録コンテキストへのvoid型ポインタ。デフォルトの場合はWOLFSSL_DTLS_CTX構造体です。
_Example_
\code
WOLFSSL* ssl;
@@ -109,9 +128,10 @@ int EmbedReceiveFrom(WOLFSSL* ssl, char* buf, int sz, void*);
int sEmbed = EmbedSendto(ssl, buf, sz, ctx);
if(sEmbed <= 0){
// No bytes sent. Failure case.
// バイトが送信されませんでした。失敗ケース。
}
\endcode
\sa EmbedReceiveFrom
\sa wolfSSL_CTX_SetIOSend
\sa wolfSSL_SSLSetIOSend
@@ -119,12 +139,16 @@ int EmbedReceiveFrom(WOLFSSL* ssl, char* buf, int sz, void*);
int EmbedSendTo(WOLFSSL* ssl, char* buf, int sz, void* ctx);
/*!
\brief
\return Success この関数は、バッファにコピーされたバイト数を返します。
\return GEN_COOKIE_E getPeernameがEmbedGenerateCookieに失敗した場合に返されます。
\param ssl wolfssl_newを使用して作成されたWolfSSL構造へのポインタ
\param buf バッファを表すバイトポインタ。xmemcpyからの宛先です。
\param sz バッファのサイズ
\brief この関数はDTLS Generate Cookieコールバックです。
\return Success この関数はバッファにコピーされたバイト数を返します。
\return GEN_COOKIE_E EmbedGenerateCookieでgetpeernameが失敗した場合に返されます
\param ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ
\param buf バッファを表すbyte型ポインタ。XMEMCPY()の宛先です。
\param sz バッファのサイズ。
\param ctx ユーザー登録コンテキストへのvoid型ポインタ。
_Example_
\code
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
@@ -136,25 +160,31 @@ int EmbedSendTo(WOLFSSL* ssl, char* buf, int sz, void* ctx);
int ret = EmbedGenerateCookie(ssl, buffer, sz, ctx);
if(ret > 0){
// EmbedGenerateCookie code block for success
// EmbedGenerateCookieの成功コードブロック
}
\endcode
\sa wolfSSL_CTX_SetGenCookie
*/
int EmbedGenerateCookie(WOLFSSL* ssl, unsigned char* buf,
int sz, void*);
/*!
\brief
\return none いいえ返します。
\param ctx ヒープヒントへのvoidポインタ
\brief この関数は応答バッファを解放します。
\return none 戻り値なし
\param ctx ヒープヒントへのvoid型ポインタ。
\param resp 応答を表すbyte型ポインタ。
_Example_
\code
void* ctx;
byte* resp; // Response buffer.
byte* resp; // 応答バッファ
EmbedOcspRespFree(ctx, resp);
\endcode
\sa wolfSSL_CertManagerSetOCSP_Cb
\sa wolfSSL_CertManagerEnableOCSPStapling
\sa wolfSSL_CertManagerEnableOCSP
@@ -162,21 +192,30 @@ int EmbedGenerateCookie(WOLFSSL* ssl, unsigned char* buf,
void EmbedOcspRespFree(void* ctx, byte* resp);
/*!
\brief データ。デフォルトでは、WolfSSLはシステムのTCP RECV関数を使用するコールバックとしてEmbedReceiveを使用します。ユーザは、メモリ、他のネットワークモジュール、またはどこからでも入力するように機能を登録できます。関数の機能とエラーコードのためのガイドとして、src / io.cの埋め込みReceive関数を参照してください。特に、データが準備ができていないときに、IO_ERR_WANT_READを非ブロック受信用に返す必要があります。
\return none いいえ返します。
\param ctx wolfssl_ctx_newで作成されたSSLコンテキストへのポインタ
\brief この関数は、wolfSSLが入力データを取得するための受信コールバックを登録します。
デフォルトでは、wolfSSLはシステムのTCP recv()関数を使用するコールバックとしてEmbedReceive()を使用します。
ユーザーは、メモリ、他のネットワークモジュール、または任意の場所から入力を取得する関数を登録できます
関数の動作方法とエラーコードについては、src/io.cのEmbedReceive()関数をガイドとして参照してください。
特に、データの準備ができていないンブロッキング受信の場合はIO_ERR_WANT_READを返す必要があります。
\return none 戻り値なし。
\param ctx wolfSSL_CTX_new()で作成されたSSLコンテキストへのポインタ。
\param callback wolfSSLコンテキストctxの受信コールバックとして登録される関数。この関数のシグネチャは、上記のSynopsisセクションに示されているものに従う必要があります。
_Example_
\code
WOLFSSL_CTX* ctx = 0;
// Receive callback prototype
// 受信コールバックのプロトタイプ
int MyEmbedReceive(WOLFSSL* ssl, char* buf, int sz, void* ctx);
// Register the custom receive callback with wolfSSL
// カスタム受信コールバックをwolfSSLに登録
wolfSSL_CTX_SetIORecv(ctx, MyEmbedReceive);
int MyEmbedReceive(WOLFSSL* ssl, char* buf, int sz, void* ctx)
{
// custom EmbedReceive function
// カスタムEmbedReceive関数
}
\endcode
\sa wolfSSL_CTX_SetIOSend
\sa wolfSSL_SetIOReadCtx
\sa wolfSSL_SetIOWriteCtx
@@ -184,18 +223,26 @@ void EmbedOcspRespFree(void* ctx, byte* resp);
void wolfSSL_CTX_SetIORecv(WOLFSSL_CTX* ctx, CallbackIORecv CBIORecv);
/*!
\brief コールバック関数デフォルトでは、WolfSSLは、WolfSSLがシステムのTCPライブラリを使用している場合、wolfssl_set_fdに渡されたファイル記述子をコンテキストとして設定します。自分の受信コールバックを登録した場合は、セッションの特定のコンテキストを設定することができます。たとえば、メモリバッファを使用している場合、コンテキストは、メモリバッファーのどこにありかを説明する構造へのポインタであり得る
\return none いいえ返します。
\param ssl wolfssl_newで作成されたSSLセッションへのポインタ
\brief この関数は、SSLセッションの受信コールバック関数のコンテキストを登録します
デフォルトでは、wolfSSLがシステムのTCPライブラリを使用している場合、wolfSSLはwolfSSL_set_fd()に渡されたファイル記述子をコンテキストとして設定します。
独自の受信コールバックを登録した場合、セッションの特定のコンテキストを設定することができます
たとえば、メモリバッファを使用している場合、コンテキストはメモリバッファへのアクセス方法と場所を記述する構造体へのポインタになる可能性があります。
\return none 戻り値なし。
\param ssl wolfSSL_new()で作成されたSSLセッションへのポインタ。
\param rctx SSLセッションsslの受信コールバック関数に登録されるコンテキストへのポインタ。
_Example_
\code
int sockfd;
WOLFSSL* ssl = 0;
...
// Manually setting the socket fd as the receive CTX, for example
// 例として、受信CTXとしてソケットfdを手動で設定
wolfSSL_SetIOReadCtx(ssl, &sockfd);
...
\endcode
\sa wolfSSL_CTX_SetIORecv
\sa wolfSSL_CTX_SetIOSend
\sa wolfSSL_SetIOWriteCtx
@@ -203,18 +250,26 @@ void wolfSSL_CTX_SetIORecv(WOLFSSL_CTX* ctx, CallbackIORecv CBIORecv);
void wolfSSL_SetIOReadCtx( WOLFSSL* ssl, void *ctx);
/*!
\brief コールバック関数デフォルトでは、WolfSSLは、WolfSSLがシステムのTCPライブラリを使用している場合、wolfssl_set_fdに渡されたファイル記述子をコンテキストとして設定します。独自の送信コールバックを登録した場合は、セッションの特定のコンテキストを設定することができます。たとえば、メモリバッファを使用している場合、コンテキストは、メモリバッファーのどこにありかを説明する構造へのポインタであり得る
\return none いいえ返します。
\param ssl wolfssl_newで作成されたSSLセッションへのポインタ
\brief この関数は、SSLセッションの送信コールバック関数のコンテキストを登録します
デフォルトでは、wolfSSLがシステムのTCPライブラリを使用している場合、wolfSSLはwolfSSL_set_fd()に渡されたファイル記述子をコンテキストとして設定します。
独自の送信コールバックを登録した場合、セッションの特定のコンテキストを設定することができます
たとえば、メモリバッファを使用している場合、コンテキストはメモリバッファへのアクセス方法と場所を記述する構造体へのポインタになる可能性があります。
\return none 戻り値なし。
\param ssl wolfSSL_new()で作成されたSSLセッションへのポインタ。
\param wctx SSLセッションsslの送信コールバック関数に登録されるコンテキストへのポインタ。
_Example_
\code
int sockfd;
WOLFSSL* ssl = 0;
...
// Manually setting the socket fd as the send CTX, for example
// 例として、送信CTXとしてソケットfdを手動で設定
wolfSSL_SetIOWriteCtx(ssl, &sockfd);
...
\endcode
\sa wolfSSL_CTX_SetIORecv
\sa wolfSSL_CTX_SetIOSend
\sa wolfSSL_SetIOReadCtx
@@ -223,9 +278,14 @@ void wolfSSL_SetIOWriteCtx(WOLFSSL* ssl, void *ctx);
/*!
\ingroup IO
\brief この関数は、WolfSSL構造体のIOCB_READCTXメンバーを返します。
\return pointer この関数は、wolfssl構造体のiocb_readctxメンバーへのvoidポインタを返します。
\return NULL wolfssl構造体がNULLの場合に返されます。
\brief この関数はWOLFSSL構造体のIOCB_ReadCtxメンバーを返します。
\return pointer この関数はWOLFSSL構造体のIOCB_ReadCtxメンバーへのvoid型ポインタを返します。
\return NULL WOLFSSL構造体がNULLの場合に返されます。
\param ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
_Example_
\code
WOLFSSL* ssl = wolfSSL_new(ctx);
@@ -233,9 +293,10 @@ void wolfSSL_SetIOWriteCtx(WOLFSSL* ssl, void *ctx);
...
ioRead = wolfSSL_GetIOReadCtx(ssl);
if(ioRead == NULL){
// Failure case. The ssl object was NULL.
// 失敗ケース。sslオブジェクトがNULLでした。
}
\endcode
\sa wolfSSL_GetIOWriteCtx
\sa wolfSSL_SetIOReadFlags
\sa wolfSSL_SetIOWriteCtx
@@ -246,9 +307,14 @@ void* wolfSSL_GetIOReadCtx( WOLFSSL* ssl);
/*!
\ingroup IO
\brief この関数は、WolfSSL構造のIOCB_WRITECTXメンバーを返します。
\return pointer この関数は、WolfSSL構造のIOCB_WRITECTXメンバーへのvoidポインタを返します。
\return NULL wolfssl構造体がNULLの場合に返されます。
\brief この関数はWOLFSSL構造のIOCB_WriteCtxメンバーを返します。
\return pointer この関数はWOLFSSL構造体のIOCB_WriteCtxメンバーへのvoid型ポインタを返します。
\return NULL WOLFSSL構造体がNULLの場合に返されます。
\param ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
_Example_
\code
WOLFSSL* ssl;
@@ -256,9 +322,10 @@ void* wolfSSL_GetIOReadCtx( WOLFSSL* ssl);
...
ioWrite = wolfSSL_GetIOWriteCtx(ssl);
if(ioWrite == NULL){
// The function returned NULL.
// 関数がNULLを返しました。
}
\endcode
\sa wolfSSL_GetIOReadCtx
\sa wolfSSL_SetIOWriteCtx
\sa wolfSSL_SetIOReadCtx
@@ -267,17 +334,34 @@ void* wolfSSL_GetIOReadCtx( WOLFSSL* ssl);
void* wolfSSL_GetIOWriteCtx(WOLFSSL* ssl);
/*!
\brief 与えられたSSLセッション受信コールバックは、デフォルトのwolfssl埋め込み受信コールバック、またはユーザによって指定されたカスタムコールバックであり得るwolfssl_ctx_setiorecvを参照。デフォルトのフラグ値は、WolfSSLによってwolfsslによって0の値に設定されます。デフォルトのWolfSSL受信コールバックはRECV関数を使用してソケットからデータを受信します。 「Recv」ページから「Recv関数へのflags引数は、1つ以上の値をOR処理するか、MSG_OOBプロセス帯域外データ、MSG_PEEK PEEK、MSG_PEEK PEEK、MSG_WAITALLがフルを待っています要求またはエラー。 MSG_OOBフラグは、通常のデータストリームで受信されないであろう帯域外データの受信を要求します。一部のプロトコルは通常のデータキューの先頭に迅速なデータを配置し、このフラグをそのようなプロトコルで使用することはできません。 MSG_PEEKフラグは、受信操作によって受信キューの先頭からのデータをキューから削除することなくデータを返します。したがって、以降の受信呼び出しは同じデータを返します。 MSG_WAITALLフラグは、完全な要求が満たされるまで操作ブロックを要求します。ただし、信号がキャッチされている場合は、呼び出し側よりも少ないデータが少なく、エラーまたは切断が発生するか、または受信されるデータが返されるものとは異なるタイプのデータを返します。
\return none いいえ返します
\param ssl wolfssl_newで作成されたSSLセッションへのポインタ
\brief この関数は、指定されたSSLセッションの受信コールバックで使用するフラグを設定します。
受信コールバックは、デフォルトのwolfSSL EmbedReceiveコールバック、またはユーザーが指定したカスタムコールバックのいずれかですwolfSSL_CTX_SetIORecvを参照
デフォルトのフラグ値は、wolfSSL内部で0の値に設定されます
デフォルトのwolfSSL受信コールバックは、recv()関数を使用してソケットからデータを受信します。
recv()のmanページより
「recv()関数のflagsパラメータは、次の値の1つ以上をORして形成されます
MSG_OOB 帯域外データを処理、MSG_PEEK 受信メッセージを覗き見、MSG_WAITALL 完全なリクエストまたはエラーを待機。
MSG_OOBフラグは、通常のデータストリームでは受信されない帯域外データの受信を要求します。
一部のプロトコルは、通常のデータキューの先頭に緊急データを配置するため、このフラグはそのようなプロトコルでは使用できません。
MSG_PEEKフラグは、受信操作が受信キューの先頭からデータを返すようにしますが、そのデータをキューから削除しません。
したがって、後続の受信呼び出しは同じデータを返します。
MSG_WAITALLフラグは、完全なリクエストが満たされるまで操作をブロックするよう要求します。
ただし、シグナルがキャッチされた場合、エラーまたは切断が発生した場合、または次に受信されるデータが返されたデータとは異なるタイプの場合、呼び出しは要求されたデータよりも少ないデータを返す可能性があります。」
\return none 戻り値なし。
\param ssl wolfSSL_new()で作成されたSSLセッションへのポインタ。
\param flags 指定されたSSLセッションsslのI/O読み取りフラグの値。
_Example_
\code
WOLFSSL* ssl = 0;
...
// Manually setting recv flags to 0
// recvフラグを手動で0に設定
wolfSSL_SetIOReadFlags(ssl, 0);
...
\endcode
\sa wolfSSL_CTX_SetIORecv
\sa wolfSSL_CTX_SetIOSend
\sa wolfSSL_SetIOReadCtx
@@ -285,17 +369,32 @@ void* wolfSSL_GetIOWriteCtx(WOLFSSL* ssl);
void wolfSSL_SetIOReadFlags( WOLFSSL* ssl, int flags);
/*!
\brief SSLセッションを考えると送信コールバックは、デフォルトのWolfSSL EmbedEndコールバック、またはユーザーによって指定されたカスタムコールバックのいずれかですWolfSSL_CTX_SetiosEndを参照。デフォルトのフラグ値は、wolfsslによって0の値に設定されます。デフォルトのWolfSSL Send Callbackはsend関数を使用してソケットからデータを送信します。sendmanページから "flagsパラメータには、次のうち1つ以上が含まれていてもよい。フラグMSG_OOBは、この概念例えばSOCK_STREAMをサポートするソケットに「帯域外」データを送信するために使用される。基礎となるプロトコルは、「帯域外」のデータもサポートする必要があります。MSG_DONTROUTEは通常、診断プログラムまたはルーティングプログラムによってのみ使用されます。」
\return none いいえ返します
\param ssl wolfssl_newで作成されたSSLセッションへのポインタ
\brief この関数は、指定されたSSLセッション送信コールバックで使用するフラグを設定します。
送信コールバックは、デフォルトのwolfSSL EmbedSendコールバック、またはユーザーが指定したカスタムコールバックのいずれかですwolfSSL_CTX_SetIOSendを参照
デフォルトのフラグ値は、wolfSSL内部で0の値に設定されます
デフォルトのwolfSSL送信コールバックは、send()関数を使用してソケットからデータを送信します。
send()のmanページより
「flagsパラメータには、次の1つ以上が含まれる場合があります
#define MSG_OOB 0x1 // 帯域外データを処理、
#define MSG_DONTROUTE 0x4 // ルーティングをバイパス、直接インターフェースを使用。
フラグMSG_OOBは、この概念をサポートするソケットSOCK_STREAMで「帯域外」データを送信するために使用されます。
基礎となるプロトコルも「帯域外」データをサポートする必要があります。
MSG_DONTROUTEは通常、診断またはルーティングプログラムによってのみ使用されます。」
\return none 戻り値なし。
\param ssl wolfSSL_new()で作成されたSSLセッションへのポインタ。
\param flags 指定されたSSLセッションsslのI/O送信フラグの値。
_Example_
\code
WOLFSSL* ssl = 0;
...
// Manually setting send flags to 0
// 送信フラグを手動で0に設定
wolfSSL_SetIOWriteFlags(ssl, 0);
...
\endcode
\sa wolfSSL_CTX_SetIORecv
\sa wolfSSL_CTX_SetIOSend
\sa wolfSSL_SetIOReadCtx
@@ -304,10 +403,15 @@ void wolfSSL_SetIOWriteFlags(WOLFSSL* ssl, int flags);
/*!
\ingroup IO
\brief この関数は、wolfssl構造内のnxctx構造体のNxSocketメンバーとNXWAITメンバーを設定します。
\return none いいえ返します。
\param ssl wolfssl_newを使用して作成されたWolfSSL構造へのポインタ。
\param nxSocket NXCTX構造のNXSOCTOCKメンバーに設定されているNX_TCP_SOCKETを入力するためのポインタ
\brief この関数は、WOLFSSL構造体内のnxCtx構造体のnxSocketおよびnxWaitメンバーを設定します。
\return none 戻り値なし
\param ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
\param nxSocket nxCTX構造体のnxSocketメンバーに設定されるNX_TCP_SOCKET型へのポインタ。
\param waitOption nxCtx構造体のnxWaitメンバーに設定されるULONG型。
_Example_
\code
WOLFSSL* ssl = wolfSSL_new(ctx);
@@ -317,9 +421,10 @@ void wolfSSL_SetIOWriteFlags(WOLFSSL* ssl, int flags);
if(ssl != NULL || nxSocket != NULL || waitOption <= 0){
wolfSSL_SetIO_NetX(ssl, nxSocket, waitOption);
} else {
// You need to pass in good parameters.
// 適切なパラメータを渡す必要があります。
}
\endcode
\sa set_fd
\sa NetX_Send
\sa NetX_Receive
@@ -328,29 +433,41 @@ void wolfSSL_SetIO_NetX(WOLFSSL* ssl, NX_TCP_SOCKET* nxsocket,
ULONG waitoption);
/*!
\brief wolfssl_ctx構造CallBackGencookie Typeは関数ポインタで、署名int* callbackgencookiewolfssl * ssl、unsigned char * buf、int sz、void * ctxを持っています。
\return none いいえ返します
\param ssl wolfssl_newを使用して作成されたWolfSSL構造へのポインタ。
\brief この関数は、WOLFSSL_CTX構造体のCBIOCookieメンバーのコールバックを設定します。
CallbackGenCookie型は関数ポインタで、次のシグネチャを持ちます
int (*CallbackGenCookie)(WOLFSSL* ssl, unsigned char* buf, int sz, void* ctx);
\return none 戻り値なし。
\param ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
\param cb CallbackGenCookieのシグネチャを持つCallbackGenCookie型の関数ポインタ。
_Example_
\code
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
WOLFSSL* ssl = wolfSSL_new(ctx);
int SetGenCookieCB(WOLFSSL* ssl, unsigned char* buf, int sz, void* ctx){
// Callback function body.
// コールバック関数本体
}
wolfSSL_CTX_SetGenCookie(ssl->ctx, SetGenCookieCB);
\endcode
\sa CallbackGenCookie
*/
void wolfSSL_CTX_SetGenCookie(WOLFSSL_CTX* ctx, CallbackGenCookie cb);
/*!
\ingroup Setup
\brief この関数は、WolfSSL構造のIOCB_COOKIECTXメンバーを返します。
\return pointer この関数は、iocb_cookiectxに格納されているvoidポインタ値を返します。
\return NULL WolfSSL構造体がNULLの場合
\brief この関数はWOLFSSL構造体のIOCB_CookieCtxメンバーを返します。
\return pointer 関数はIOCB_CookieCtxに保存されているvoid型ポインタ値を返します。
\return NULL WOLFSSL構造体がNULLの場合。
\param ssl wolfSSL_new()を使用して作成されたWOLFSSL構造体へのポインタ。
_Example_
\code
WOLFSSL_CTX* ctx = wolfSSL_CTX_new( method );
@@ -359,9 +476,10 @@ void wolfSSL_CTX_SetGenCookie(WOLFSSL_CTX* ctx, CallbackGenCookie cb);
...
cookie = wolfSSL_GetCookieCtx(ssl);
if(cookie != NULL){
// You have the cookie
// cookieを取得しました
}
\endcode
\sa wolfSSL_SetCookieCtx
\sa wolfSSL_CTX_SetGenCookie
*/
@@ -370,16 +488,21 @@ void* wolfSSL_GetCookieCtx(WOLFSSL* ssl);
/*!
\ingroup Setup
\brief この関数は、WolfSSLがWolfSSL_ISOTPでコンパイルされている場合に使用する場合は、WolfSSLの場合はISO-TPコンテキストを設定します。
\return 0 成功すると、故障のwolfssl_cbio_err_general
\param ssl wolfsslコンテキスト
\param ctx ユーザーはこの関数が初期化されるISOTPコンテキストを作成しました
\param recv_fn ユーザーはバスを受信できます
\param send_fn ユーザーはバスを送ることができます
\param delay_fn ユーザーマイクロ秒の粒度遅延関数
\param receive_delay 各CANバスパケットを遅らせるためのマイクロ秒のセット数
\param receive_buffer ユーザーがデータを受信するためのバッファーが提供され、ISOTP_DEFAULT_BUFFER_SIZEバイトに割り当てられていることをお勧めします
\param receive_buffer_size - receive_bufferのサイズ
\brief この関数は、wolfSSLがWOLFSSL_ISOTPでコンパイルされている場合に使用するために、wolfSSLのISO-TPコンテキストを設定します。
\return 0 成功時、WOLFSSL_CBIO_ERR_GENERAL 失敗時。
\param ssl wolfSSLコンテキスト。
\param ctx この関数が初期化するユーザー作成のISOTPコンテキスト。
\param recv_fn ユーザーのCANバス受信コールバック。
\param send_fn ユーザーのCANバス送信コールバック
\param delay_fn ユーザーのマイクロ秒粒度遅延関数。
\param receive_delay 各CANバスパケットを遅延させる設定マイクロ秒数。
\param receive_buffer データを受信するためのユーザー提供バッファ、ISOTP_DEFAULT_BUFFER_SIZEバイトに割り当てることを推奨。
\param receive_buffer_size - receive_bufferのサイズ。
\param arg recv_fnとsend_fnに送信される任意のポインタ。
_Example_
\code
struct can_info can_con_info;
@@ -396,3 +519,46 @@ int wolfSSL_SetIO_ISOTP(WOLFSSL *ssl, isotp_wolfssl_ctx *ctx,
can_recv_fn recv_fn, can_send_fn send_fn, can_delay_fn delay_fn,
word32 receive_delay, char *receive_buffer, int receive_buffer_size,
void *arg);
/*!
\ingroup Setup
\brief この関数はIOレイヤーからの読み取りを無効にします。
\param ssl wolfSSLコンテキスト。
_Example_
\code
WOLFSSL_CTX* ctx = wolfSSL_CTX_new(method);
WOLFSSL* ssl = wolfSSL_new(ctx);
wolfSSL_SSLDisableRead(ssl);
\endcode
\sa wolfSSL_CTX_SetIORecv
\sa wolfSSL_SSLSetIORecv
\sa wolfSSL_SSLEnableRead
*/
void wolfSSL_SSLDisableRead(WOLFSSL *ssl);
/*!
\ingroup Setup
\brief この関数はIOレイヤーからの読み取りを有効にします。
読み取りはデフォルトで有効になっており、wolfSSL_SSLDisableRead()を元に戻すために使用する必要があります。
\param ssl wolfSSLコンテキスト。
_Example_
\code
WOLFSSL_CTX* ctx = wolfSSL_CTX_new(method);
WOLFSSL* ssl = wolfSSL_new(ctx);
wolfSSL_SSLDisableRead(ssl);
...
wolfSSL_SSLEnableRead(ssl);
\endcode
\sa wolfSSL_CTX_SetIORecv
\sa wolfSSL_SSLSetIORecv
\sa wolfSSL_SSLEnableRead
*/
void wolfSSL_SSLEnableRead(WOLFSSL *ssl);