#include <twl/aes.h>
#define AES_SIGN_HEADER_SIZE 32
AESResult AES_EncryptAndSign(
const void* src,
u32 srcSize,
void* dst,
AESCallback callback,
void* arg );
| src | 平文へのポインタ。4バイトアライメントでなければなりません。また、メインメモリ上を指していなければなりません。 |
|---|---|
| srcSize | 平文のサイズ。0 より大きく AES_PDATA_SIZE_MAX 以下でなければなりません。 |
| dst | 暗号文を格納するバッファへのポインタ。4バイトアライメントでなければなりません。また、メインメモリ上を指していなければなりません。
srcSize + AES_SIGN_HEADER_SIZE バイトの領域が必要です。 |
| callback | 暗号化完了時に呼び出されるコールバック関数へのポインタ。 NULL を指定することもできます。 |
| arg | 上記コールバック関数に渡されるユーザ定義のパラメータ。 NULL を含む任意の値を指定することができます。 |
AES の処理を正常に開始できた場合は AES_RESULT_SUCCESS を返します。 それ以外の返り値はエラーです。
AES アルゴリズムを使用して暗号化と署名を行います。
復号化と署名検証には AES_DecryptAndVerify() を使用します。
AES_SetKey() で設定された鍵を用いて src から
srcSize バイトを暗号化し署名を付加します。
暗号化結果および署名は dst から srcSize +
AES_SIGN_HEADER_SIZE バイトの領域に書き込まれます。
暗号化処理が完了するとその結果と arg を引数として
callback が呼び出されます。
callback は割り込みハンドラから呼び出されるため、
割り込み禁止状態で呼び出されることに注意してください。
また、逆に割り込み禁止状態では callback が
呼び出されないことにも注意してください。
この関数は処理を開始するとすぐに制御を返します。
処理が正常に開始されると返り値は AES_RESULT_SUCCESS になりますが、
その後、処理中にエラーが発生した場合にはエラー値と arg を引数として
callback が呼び出されます。
このコールバックによるエラー通知は割り込みハンドラから起動されますので
場合によっては関数から処理が返る前にコールバックによってエラーが通知される可能性があることに注意してください。
暗号化の鍵はあらかじめ AES_SetKey()
で設定しておく必要があります。
2008/09/06 AES_InitRand が削除されたことに対応。
2007/12/25 初版