aes.h
Functions
Name | |
---|---|
int | wc_AesSetKey(Aes * aes, const byte * key, word32 len, const byte * iv, int dir) この関数は、キーを設定して初期化ベクトルを設定することでAES構造を初期化します。 |
int | wc_AesSetIV(Aes * aes, const byte * iv) この関数は、特定のAESオブジェクトの初期化ベクトルを設定します。AESオブジェクトは、この関数を呼び出す前に初期化されるべきです。 |
int | wc_AesCbcEncrypt(Aes * aes, byte * out, const byte * in, word32 sz) 入力バッファーから平文メッセージを暗号化し、AESでCipher Block Chainingを使用して出力バッファに出力バッファーに入れます。この機能は、メッセージが暗号化される前にAESSetKeyを呼び出すことによってAESオブジェクトが初期化されていることを必要とします。この関数は、入力メッセージがAESブロック長であると仮定し、入力された長さがブロック長の倍数になることを想定しているため、ビルド構成でWolfSSL_AES_CBC_LENGTH_CHECKSが定義されている場合は任意選択でチェックおよび適用されます。ブロック多入力を保証するために、PKCS#7スタイルのパディングを事前に追加する必要があります。これはあなたのためにパディングを追加するOpenSSL AES-CBCメソッドとは異なります。WOLFSSLと対応するOpenSSL関数を相互運用するには、OpenSSLコマンドライン関数で-nopadオプションを指定して、WolfSSL AESCCENCRYPTメソッドのように動作し、暗号化中に追加のパディングを追加しません。 |
int | wc_AesCbcDecrypt(Aes * aes, byte * out, const byte * in, word32 sz) 入力バッファーから暗号を復号化し、AESでCipher Block Chainingを使用して出力バッファに出力バッファーに入れます。この機能は、メッセージが復号化される前にAESSetKeyを呼び出すことによってAES構造が初期化されていることを必要とします。この関数は、元のメッセージがAESブロック長で整列していたと仮定し、入力された長さがブロック長の倍数になると予想しています。これはOpenSSL AES-CBCメソッドとは異なります。これは、PKCS#7パディングを自動的に追加するため、ブロックマルチ入力を必要としません。WolfSSL機能と同等のOpenSSL関数を相互運用するには、OpenSSLコマンドライン関数で-nopadオプションを指定し、wolfssl aescbceNcryptメソッドのように動作し、復号化中にエラーを発生させません。 |
int | wc_AesCtrEncrypt(Aes * aes, byte * out, const byte * in, word32 sz) 入力バッファーからメッセージを暗号化/復号化し、AESを使用してCTRモードを使用して出力バッファーに出力バッファーに入れます。この関数は、wolfssl_aes_counterがコンパイル時に有効になっている場合にのみ有効になります。この機能を呼び出す前に、AES構造体をAessetKeyで初期化する必要があります。この関数は復号化と暗号化の両方に使用されます。_注:暗号化と復号化のための同じAPIを使用することについて。ユーザーは暗号化/復号化のためのAES構造体を区別する必要があります。 |
int | wc_AesEncryptDirect(Aes * aes, byte * out, const byte * in) この関数は、入力ブロックの入力ブロック、IN、OUTPUTブロック、OUTです。提供されたAES構造体のキーを使用します。これはこの機能を呼び出す前にWC_AESSETKEYで初期化される必要があります。WC_AESSETKEYは、IVセットがNULLに呼び出されたはずです。これは、Configure Option WolfSSL_AES_DIRECTが有効になっている場合にのみ有効になります。__ warning:ほぼすべてのユースケースでECBモードは安全性が低いと考えられています。可能な限りECB APIを直接使用しないでください。 |
int | wc_AesDecryptDirect(Aes * aes, byte * out, const byte * in) この関数は、入力ブロックの1ブロック復号化、IN、IN、OUTPUT OUTです。提供されたAES構造体のキーを使用します。これはこの機能を呼び出す前にWC_AESSETKEYで初期化される必要があります。WC_AESSETKEYは、IVセットがNULLに呼び出されたはずです。これは、Configure Option WolfSSL_AES_DIRECTが有効になっている場合にのみ有効になります。__ warning:ほぼすべてのユースケースでECBモードは安全性が低いと考えられています。可能な限りECB APIを直接使用しないでください。 |
int | wc_AesSetKeyDirect(Aes * aes, const byte * key, word32 len, const byte * iv, int dir) この関数は、CTRモードのAESキーをAESで設定するために使用されます。指定されたキー、IV(初期化ベクトル)、および暗号化DIR(方向)でAESオブジェクトを初期化します。構成オプションwolfssl_aes_directが有効になっている場合にのみ有効になります。現在WC_AessetKeyDirectは内部的にWC_AESSETKEYを使用します。__ warning:ほぼすべてのユースケースでECBモードは安全性が低いと考えられています。可能な限りECB APIを直接使用しないでください |
int | wc_AesGcmSetKey(Aes * aes, const byte * key, word32 len) この機能は、AES GCM(Galois / Counter Mode)のキーを設定するために使用されます。与えられたキーでAESオブジェクトを初期化します。コンパイル時にConfigureオプションhous_aesgcmが有効になっている場合にのみ有効になります。 |
int | wc_AesGcmEncrypt(Aes * aes, byte * out, const byte * in, word32 sz, const byte * iv, word32 ivSz, byte * authTag, word32 authTagSz, const byte * authIn, word32 authInSz) この関数は、入力メッセージをバッファINに保持し、結果の暗号テキストを出力バッファOUTに格納します。暗号化する呼び出しごとに新しいIV(初期化ベクトル)が必要です。また、入力認証ベクトル、Authin、AuthTagへの入力認証ベクトルをエンコードします。 |
int | wc_AesGcmDecrypt(Aes * aes, byte * out, const byte * in, word32 sz, const byte * iv, word32 ivSz, const byte * authTag, word32 authTagSz, const byte * authIn, word32 authInSz) この関数は、入力暗号テキストをバッファINに保持し、結果のメッセージテキストを出力バッファOUTに格納します。また、指定された認証タグ、authtagに対して、入力認証ベクトル、Authinをチェックします。 |
int | wc_GmacSetKey(Gmac * gmac, const byte * key, word32 len) この関数は、GAROISメッセージ認証に使用されるGMACオブジェクトのキーを初期化して設定します。 |
int | wc_GmacUpdate(Gmac * gmac, const byte * iv, word32 ivSz, const byte * authIn, word32 authInSz, byte * authTag, word32 authTagSz) この関数はAuthin InputのGMACハッシュを生成し、結果をAuthtagバッファに格納します。wc_gmacupdateを実行した後、生成されたauthtagを既知の認証タグに比較してメッセージの信頼性を検証する必要があります。 |
int | wc_AesCcmSetKey(Aes * aes, const byte * key, word32 keySz) この関数は、CCMを使用してAESオブジェクトのキーを設定します(CBC-MACのカウンタ)。AES構造体へのポインタを取り、付属のキーで初期化します。 |
int | wc_AesCcmEncrypt(Aes * aes, byte * out, const byte * in, word32 inSz, const byte * nonce, word32 nonceSz, byte * authTag, word32 authTagSz, const byte * authIn, word32 authInSz) この関数は、CCMを使用して、入力メッセージ、IN、OUT、OUT、OUTをCCM(CBC-MACのカウンタ)を暗号化します。その後、Authin Inputから認証タグ、AuthtAgを計算して格納します。 |
int | wc_AesCcmDecrypt(Aes * aes, byte * out, const byte * in, word32 inSz, const byte * nonce, word32 nonceSz, const byte * authTag, word32 authTagSz, const byte * authIn, word32 authInSz) この関数は、CCMを使用して、入力暗号テキストを、CCM(CBC-MACのカウンタ)を使用して出力バッファーに復号化します。その後、Authin InputからAuthatAg、AuthatAgを計算します。許可タグが無効な場合は、出力バッファをゼロに設定し、AES_CCM_AUTH_Eを返します。 |
int | wc_AesXtsSetKey(XtsAes * aes, const byte * key, word32 len, int dir, void * heap, int devId) これは、暗号化または復号化タイプを修正するためのキーの設定を支援することです。完了したら、AESキーでWC_AESXTSFREEを呼び出すことがユーザーになりました。 |
int | wc_AesXtsEncryptSector(XtsAes * aes, byte * out, const byte * in, word32 sz, word64 sector) WC_AESXTSENCRYPTと同じプロセスですが、バイト配列の代わりにTweak値としてWord64型を使用します。これは、Word64をバイト配列に変換し、WC_AESXTSENCRYPTを呼び出します。 |
int | wc_AesXtsDecryptSector(XtsAes * aes, byte * out, const byte * in, word32 sz, word64 sector) WC_AESXTSDECRYPTと同じプロセスではなく、BYTE配列の代わりにWord64タイプを使用します。これはWord64をバイト配列に変換するだけです。 |
int | wc_AesXtsEncrypt(XtsAes * aes, byte * out, const byte * in, word32 sz, const byte * i, word32 iSz) XTSモードのあるAES。(XTS)XEX暗号化と暗号テキストを盗んだ暗号化。 |
int | wc_AesXtsDecrypt(XtsAes * aes, byte * out, const byte * in, word32 sz, const byte * i, word32 iSz) 暗号化と同じプロセスですが、AESキーはAES_Decryptionタイプです。 |
int | wc_AesXtsFree(XtsAes * aes) これはXTSAES構造によって使用されるすべてのリソースを解放することです |
int | wc_AesInit(Aes * aes, void * heap, int devId) AES構造を初期化します。ASYNCハードウェアで使用するためのヒープヒントとIDを設定する |
int | wc_AesCfbEncrypt(Aes * aes, byte * out, const byte * in, word32 sz) CFBモードを持つAES。 |
int | wc_AesCfbDecrypt(Aes * aes, byte * out, const byte * in, word32 sz) CFBモードを持つAES。 |
int | wc_AesSivEncrypt(const byte * key, word32 keySz, const byte * assoc, word32 assocSz, const byte * nonce, word32 nonceSz, const byte * in, word32 inSz, byte * siv, byte * out) この関数は、RFC 5297に記載されているようにSIV(合成初期化ベクトル)暗号化を実行します。 |
int | wc_AesSivDecrypt(const byte * key, word32 keySz, const byte * assoc, word32 assocSz, const byte * nonce, word32 nonceSz, const byte * in, word32 inSz, byte * siv, byte * out) この機能は、RFC 5297に記載されているようにSIV(合成初期化ベクトル)復号化を実行する。 |
Functions Documentation
function wc_AesSetKey
int wc_AesSetKey(
Aes * aes,
const byte * key,
word32 len,
const byte * iv,
int dir
)
この関数は、キーを設定して初期化ベクトルを設定することでAES構造を初期化します。
Parameters:
- aes 変更するAES構造へのポインタ
- key 暗号化と復号化のための16,24、または32バイトの秘密鍵
- len 渡されたキーの長さ
- iv キーを初期化するために使用される初期化ベクトルへのポインタ Example
Aes enc;
int ret = 0;
byte key[] = { some 16, 24 or 32 byte key };
byte iv[] = { some 16 byte iv };
if (ret = wc_AesSetKey(&enc, key, AES_BLOCK_SIZE, iv,
AES_ENCRYPTION) != 0) {
// failed to set aes key
}
See:
Return:
- 0 キーと初期化ベクトルを正常に設定します。
- BAD_FUNC_ARG キーの長さが無効な場合は返されます。
function wc_AesSetIV
int wc_AesSetIV(
Aes * aes,
const byte * iv
)
この関数は、特定のAESオブジェクトの初期化ベクトルを設定します。AESオブジェクトは、この関数を呼び出す前に初期化されるべきです。
Parameters:
- aes 初期化ベクトルを設定するAES構造へのポインタ Example
Aes enc;
// set enc key
byte iv[] = { some 16 byte iv };
if (ret = wc_AesSetIV(&enc, iv) != 0) {
// failed to set aes iv
}
See:
Return:
- 0 初期化ベクトルを正常に設定します。
- BAD_FUNC_ARG AESポインタがNULLの場合に返されます。
function wc_AesCbcEncrypt
int wc_AesCbcEncrypt(
Aes * aes,
byte * out,
const byte * in,
word32 sz
)
入力バッファーから平文メッセージを暗号化し、AESでCipher Block Chainingを使用して出力バッファに出力バッファーに入れます。この機能は、メッセージが暗号化される前にAESSetKeyを呼び出すことによってAESオブジェクトが初期化されていることを必要とします。この関数は、入力メッセージがAESブロック長であると仮定し、入力された長さがブロック長の倍数になることを想定しているため、ビルド構成でWolfSSL_AES_CBC_LENGTH_CHECKSが定義されている場合は任意選択でチェックおよび適用されます。ブロック多入力を保証するために、PKCS#7スタイルのパディングを事前に追加する必要があります。これはあなたのためにパディングを追加するOpenSSL AES-CBCメソッドとは異なります。WOLFSSLと対応するOpenSSL関数を相互運用するには、OpenSSLコマンドライン関数で-nopadオプションを指定して、WolfSSL AESCCENCRYPTメソッドのように動作し、暗号化中に追加のパディングを追加しません。
Parameters:
- aes データの暗号化に使用されるAESオブジェクトへのポインタ
- out 暗号化されたメッセージの暗号文を格納する出力バッファへのポインタ
- in 暗号化されるメッセージを含む入力バッファへのポインタ Example
Aes enc;
int ret = 0;
// initialize enc with AesSetKey, using direction AES_ENCRYPTION
byte msg[AES_BLOCK_SIZE * n]; // multiple of 16 bytes
// fill msg with data
byte cipher[AES_BLOCK_SIZE * n]; // Some multiple of 16 bytes
if ((ret = wc_AesCbcEncrypt(&enc, cipher, message, sizeof(msg))) != 0 ) {
// block align error
}
See:
Return:
- 0 メッセージの暗号化に成功しました。
- BAD_ALIGN_E: ブロック整列誤差で返される可能性があります
- BAD_LENGTH_E 入力長がAESブロック長の倍数でない場合は、ライブラリーがwolfssl_aes_cbc_length_checksで構築されている場合に返されます。
function wc_AesCbcDecrypt
int wc_AesCbcDecrypt(
Aes * aes,
byte * out,
const byte * in,
word32 sz
)
入力バッファーから暗号を復号化し、AESでCipher Block Chainingを使用して出力バッファに出力バッファーに入れます。この機能は、メッセージが復号化される前にAESSetKeyを呼び出すことによってAES構造が初期化されていることを必要とします。この関数は、元のメッセージがAESブロック長で整列していたと仮定し、入力された長さがブロック長の倍数になると予想しています。これはOpenSSL AES-CBCメソッドとは異なります。これは、PKCS#7パディングを自動的に追加するため、ブロックマルチ入力を必要としません。WolfSSL機能と同等のOpenSSL関数を相互運用するには、OpenSSLコマンドライン関数で-nopadオプションを指定し、wolfssl aescbceNcryptメソッドのように動作し、復号化中にエラーを発生させません。
Parameters:
- aes データを復号化するために使用されるAESオブジェクトへのポインタ。
- out 復号化されたメッセージのプレーンテキストを保存する出力バッファへのポインタ。
- in 復号化する暗号テキストを含む入力バッファへのポインタ。 Example
Aes dec;
int ret = 0;
// initialize dec with AesSetKey, using direction AES_DECRYPTION
byte cipher[AES_BLOCK_SIZE * n]; // some multiple of 16 bytes
// fill cipher with cipher text
byte plain [AES_BLOCK_SIZE * n];
if ((ret = wc_AesCbcDecrypt(&dec, plain, cipher, sizeof(cipher))) != 0 ) {
// block align error
}
See:
Return:
- 0 メッセージを正常に復号化します。
- BAD_ALIGN_E ブロック整列エラーで返される可能性があります。
- BAD_LENGTH_E 入力長がAESブロック長の倍数でない場合は、ライブラリーがwolfssl_aes_cbc_length_checksで構築されている場合に返されます。
function wc_AesCtrEncrypt
int wc_AesCtrEncrypt(
Aes * aes,
byte * out,
const byte * in,
word32 sz
)
入力バッファーからメッセージを暗号化/復号化し、AESを使用してCTRモードを使用して出力バッファーに出力バッファーに入れます。この関数は、wolfssl_aes_counterがコンパイル時に有効になっている場合にのみ有効になります。この機能を呼び出す前に、AES構造体をAessetKeyで初期化する必要があります。この関数は復号化と暗号化の両方に使用されます。_注:暗号化と復号化のための同じAPIを使用することについて。ユーザーは暗号化/復号化のためのAES構造体を区別する必要があります。
Parameters:
- aes データを復号化するために使用されるAESオブジェクトへのポインタ
- out 暗号化されたメッセージの暗号化テキストを保存する出力バッファへのポインタ
- in 暗号化されるプレーンテキストを含む入力バッファへのポインタ Example
Aes enc;
Aes dec;
// initialize enc and dec with AesSetKeyDirect, using direction
AES_ENCRYPTION
// since the underlying API only calls Encrypt and by default calling
encrypt on
// a cipher results in a decryption of the cipher
byte msg[AES_BLOCK_SIZE * n]; //n being a positive integer making msg
some multiple of 16 bytes
// fill plain with message text
byte cipher[AES_BLOCK_SIZE * n];
byte decrypted[AES_BLOCK_SIZE * n];
wc_AesCtrEncrypt(&enc, cipher, msg, sizeof(msg)); // encrypt plain
wc_AesCtrEncrypt(&dec, decrypted, cipher, sizeof(cipher));
// decrypt cipher text
See: wc_AesSetKey
Return: int WolfSSLエラーまたは成功状況に対応する整数値
function wc_AesEncryptDirect
int wc_AesEncryptDirect(
Aes * aes,
byte * out,
const byte * in
)
この関数は、入力ブロックの入力ブロック、IN、OUTPUTブロック、OUTです。提供されたAES構造体のキーを使用します。これはこの機能を呼び出す前にWC_AESSETKEYで初期化される必要があります。WC_AESSETKEYは、IVセットがNULLに呼び出されたはずです。これは、Configure Option WolfSSL_AES_DIRECTが有効になっている場合にのみ有効になります。__ warning:ほぼすべてのユースケースでECBモードは安全性が低いと考えられています。可能な限りECB APIを直接使用しないでください。
Parameters:
- aes データの暗号化に使用されるAESオブジェクトへのポインタ
- out 暗号化されたメッセージの暗号化テキストを保存する出力バッファへのポインタ Example
Aes enc;
// initialize enc with AesSetKey, using direction AES_ENCRYPTION
byte msg [AES_BLOCK_SIZE]; // 16 bytes
// initialize msg with plain text to encrypt
byte cipher[AES_BLOCK_SIZE];
wc_AesEncryptDirect(&enc, cipher, msg);
See:
Return: int WolfSSLエラーまたは成功状況に対応する整数値
function wc_AesDecryptDirect
int wc_AesDecryptDirect(
Aes * aes,
byte * out,
const byte * in
)
この関数は、入力ブロックの1ブロック復号化、IN、IN、OUTPUT OUTです。提供されたAES構造体のキーを使用します。これはこの機能を呼び出す前にWC_AESSETKEYで初期化される必要があります。WC_AESSETKEYは、IVセットがNULLに呼び出されたはずです。これは、Configure Option WolfSSL_AES_DIRECTが有効になっている場合にのみ有効になります。__ warning:ほぼすべてのユースケースでECBモードは安全性が低いと考えられています。可能な限りECB APIを直接使用しないでください。
Parameters:
- aes データの暗号化に使用されるAESオブジェクトへのポインタ
- out 復号化された暗号テキストのプレーンテキストを格納する出力バッファへのポインタ Example
Aes dec;
// initialize enc with AesSetKey, using direction AES_DECRYPTION
byte cipher [AES_BLOCK_SIZE]; // 16 bytes
// initialize cipher with cipher text to decrypt
byte msg[AES_BLOCK_SIZE];
wc_AesDecryptDirect(&dec, msg, cipher);
See:
Return: int WolfSSLエラーまたは成功状況に対応する整数値
function wc_AesSetKeyDirect
int wc_AesSetKeyDirect(
Aes * aes,
const byte * key,
word32 len,
const byte * iv,
int dir
)
この関数は、CTRモードのAESキーをAESで設定するために使用されます。指定されたキー、IV(初期化ベクトル)、および暗号化DIR(方向)でAESオブジェクトを初期化します。構成オプションwolfssl_aes_directが有効になっている場合にのみ有効になります。現在WC_AessetKeyDirectは内部的にWC_AESSETKEYを使用します。__ warning:ほぼすべてのユースケースでECBモードは安全性が低いと考えられています。可能な限りECB APIを直接使用しないでください
Parameters:
- aes データの暗号化に使用されるAESオブジェクトへのポインタ
- key 暗号化と復号化のための16,24、または32バイトの秘密鍵
- len 渡されたキーの長さ
- iv キーを初期化するために使用される初期化ベクトル Example
Aes enc;
int ret = 0;
byte key[] = { some 16, 24, or 32 byte key };
byte iv[] = { some 16 byte iv };
if (ret = wc_AesSetKeyDirect(&enc, key, sizeof(key), iv,
AES_ENCRYPTION) != 0) {
// failed to set aes key
}
See:
Return:
- 0 キーの設定に成功しました。
- BAD_FUNC_ARG 与えられたキーが無効な長さの場合に返されます。
function wc_AesGcmSetKey
int wc_AesGcmSetKey(
Aes * aes,
const byte * key,
word32 len
)
この機能は、AES GCM(Galois / Counter Mode)のキーを設定するために使用されます。与えられたキーでAESオブジェクトを初期化します。コンパイル時にConfigureオプションhous_aesgcmが有効になっている場合にのみ有効になります。
Parameters:
- aes データの暗号化に使用されるAESオブジェクトへのポインタ
- key 暗号化と復号化のための16,24、または32バイトの秘密鍵 Example
Aes enc;
int ret = 0;
byte key[] = { some 16, 24,32 byte key };
if (ret = wc_AesGcmSetKey(&enc, key, sizeof(key)) != 0) {
// failed to set aes key
}
See:
Return:
- 0 キーの設定に成功しました。
- BAD_FUNC_ARG 与えられたキーが無効な長さの場合に返されます。
function wc_AesGcmEncrypt
int wc_AesGcmEncrypt(
Aes * aes,
byte * out,
const byte * in,
word32 sz,
const byte * iv,
word32 ivSz,
byte * authTag,
word32 authTagSz,
const byte * authIn,
word32 authInSz
)
この関数は、入力メッセージをバッファINに保持し、結果の暗号テキストを出力バッファOUTに格納します。暗号化する呼び出しごとに新しいIV(初期化ベクトル)が必要です。また、入力認証ベクトル、Authin、AuthTagへの入力認証ベクトルをエンコードします。
Parameters:
- aes - データの暗号化に使用されるAESオブジェクトへのポインタ
- out 暗号テキストを保存する出力バッファへのポインタ
- in 暗号化するメッセージを保持している入力バッファへのポインタ
- sz 暗号化する入力メッセージの長さ
- iv 初期化ベクトルを含むバッファへのポインタ
- ivSz 初期化ベクトルの長さ
- authTag 認証タグを保存するバッファへのポインタ
- authTagSz 希望の認証タグの長さ
- authIn 入力認証ベクトルを含むバッファへのポインタ Example
Aes enc;
// initialize aes structure by calling wc_AesGcmSetKey
byte plain[AES_BLOCK_LENGTH * n]; //n being a positive integer
making plain some multiple of 16 bytes
// initialize plain with msg to encrypt
byte cipher[sizeof(plain)];
byte iv[] = // some 16 byte iv
byte authTag[AUTH_TAG_LENGTH];
byte authIn[] = // Authentication Vector
wc_AesGcmEncrypt(&enc, cipher, plain, sizeof(cipher), iv, sizeof(iv),
authTag, sizeof(authTag), authIn, sizeof(authIn));
See:
Return: 0 入力メッセージの暗号化に成功しました
function wc_AesGcmDecrypt
int wc_AesGcmDecrypt(
Aes * aes,
byte * out,
const byte * in,
word32 sz,
const byte * iv,
word32 ivSz,
const byte * authTag,
word32 authTagSz,
const byte * authIn,
word32 authInSz
)
この関数は、入力暗号テキストをバッファINに保持し、結果のメッセージテキストを出力バッファOUTに格納します。また、指定された認証タグ、authtagに対して、入力認証ベクトル、Authinをチェックします。
Parameters:
- aes データの暗号化に使用されるAESオブジェクトへのポインタ
- out メッセージテキストを保存する出力バッファへのポインタ
- in 暗号テキストを復号化する入力バッファへのポインタ
- sz 復号化する暗号テキストの長さ
- iv 初期化ベクトルを含むバッファへのポインタ
- ivSz 初期化ベクトルの長さ
- authTag 認証タグを含むバッファへのポインタ
- authTagSz 希望の認証タグの長さ
- authIn 入力認証ベクトルを含むバッファへのポインタ Example
Aes enc; //can use the same struct as was passed to wc_AesGcmEncrypt
// initialize aes structure by calling wc_AesGcmSetKey if not already done
byte cipher[AES_BLOCK_LENGTH * n]; //n being a positive integer
making cipher some multiple of 16 bytes
// initialize cipher with cipher text to decrypt
byte output[sizeof(cipher)];
byte iv[] = // some 16 byte iv
byte authTag[AUTH_TAG_LENGTH];
byte authIn[] = // Authentication Vector
wc_AesGcmDecrypt(&enc, output, cipher, sizeof(cipher), iv, sizeof(iv),
authTag, sizeof(authTag), authIn, sizeof(authIn));
See:
Return:
- 0 入力メッセージの復号化に成功しました
- AES_GCM_AUTH_E 認証タグが提供された認証コードベクトルと一致しない場合、authtag。
function wc_GmacSetKey
int wc_GmacSetKey(
Gmac * gmac,
const byte * key,
word32 len
)
この関数は、GAROISメッセージ認証に使用されるGMACオブジェクトのキーを初期化して設定します。
Parameters:
- gmac 認証に使用されるGMACオブジェクトへのポインタ
- key 認証のための16,24、または32バイトの秘密鍵 Example
Gmac gmac;
key[] = { some 16, 24, or 32 byte length key };
wc_GmacSetKey(&gmac, key, sizeof(key));
See: wc_GmacUpdate
Return:
- 0 キーの設定に成功しました
- BAD_FUNC_ARG キーの長さが無効な場合は返されます。
function wc_GmacUpdate
int wc_GmacUpdate(
Gmac * gmac,
const byte * iv,
word32 ivSz,
const byte * authIn,
word32 authInSz,
byte * authTag,
word32 authTagSz
)
この関数はAuthin InputのGMACハッシュを生成し、結果をAuthtagバッファに格納します。wc_gmacupdateを実行した後、生成されたauthtagを既知の認証タグに比較してメッセージの信頼性を検証する必要があります。
Parameters:
- gmac 認証に使用されるGMACオブジェクトへのポインタ
- iv ハッシュに使用される初期化ベクトル
- ivSz 使用される初期化ベクトルのサイズ
- authIn 確認する認証ベクトルを含むバッファへのポインタ
- authInSz 認証ベクトルのサイズ
- authTag GMACハッシュを保存する出力バッファへのポインタ Example
Gmac gmac;
key[] = { some 16, 24, or 32 byte length key };
iv[] = { some 16 byte length iv };
wc_GmacSetKey(&gmac, key, sizeof(key));
authIn[] = { some 16 byte authentication input };
tag[AES_BLOCK_SIZE]; // will store authentication code
wc_GmacUpdate(&gmac, iv, sizeof(iv), authIn, sizeof(authIn), tag,
sizeof(tag));
See: wc_GmacSetKey
Return: 0 GMACハッシュの計算に成功しました。
function wc_AesCcmSetKey
int wc_AesCcmSetKey(
Aes * aes,
const byte * key,
word32 keySz
)
この関数は、CCMを使用してAESオブジェクトのキーを設定します(CBC-MACのカウンタ)。AES構造体へのポインタを取り、付属のキーで初期化します。
Parameters:
- aes 付属のキーを保管するためのAES構造
- key 暗号化と復号化のための16,24、または32バイトの秘密鍵 Example
Aes enc;
key[] = { some 16, 24, or 32 byte length key };
wc_AesCcmSetKey(&aes, key, sizeof(key));
See:
Return: none
function wc_AesCcmEncrypt
int wc_AesCcmEncrypt(
Aes * aes,
byte * out,
const byte * in,
word32 inSz,
const byte * nonce,
word32 nonceSz,
byte * authTag,
word32 authTagSz,
const byte * authIn,
word32 authInSz
)
この関数は、CCMを使用して、入力メッセージ、IN、OUT、OUT、OUTをCCM(CBC-MACのカウンタ)を暗号化します。その後、Authin Inputから認証タグ、AuthtAgを計算して格納します。
Parameters:
- aes データの暗号化に使用されるAESオブジェクトへのポインタ
- out 暗号テキストを保存する出力バッファへのポインタ
- in 暗号化するメッセージを保持している入力バッファへのポインタ
- sz 暗号化する入力メッセージの長さ
- nonce nonceを含むバッファへのポインタ(1回だけ使用されている数)
- nonceSz ノンスの長さ
- authTag 認証タグを保存するバッファへのポインタ
- authTagSz 希望の認証タグの長さ
- authIn 入力認証ベクトルを含むバッファへのポインタ Example
Aes enc;
// initialize enc with wc_AesCcmSetKey
nonce[] = { initialize nonce };
plain[] = { some plain text message };
cipher[sizeof(plain)];
authIn[] = { some 16 byte authentication input };
tag[AES_BLOCK_SIZE]; // will store authentication code
wc_AesCcmEncrypt(&enc, cipher, plain, sizeof(plain), nonce, sizeof(nonce),
tag, sizeof(tag), authIn, sizeof(authIn));
See:
Return: none
function wc_AesCcmDecrypt
int wc_AesCcmDecrypt(
Aes * aes,
byte * out,
const byte * in,
word32 inSz,
const byte * nonce,
word32 nonceSz,
const byte * authTag,
word32 authTagSz,
const byte * authIn,
word32 authInSz
)
この関数は、CCMを使用して、入力暗号テキストを、CCM(CBC-MACのカウンタ)を使用して出力バッファーに復号化します。その後、Authin InputからAuthatAg、AuthatAgを計算します。許可タグが無効な場合は、出力バッファをゼロに設定し、AES_CCM_AUTH_Eを返します。
Parameters:
- aes データの暗号化に使用されるAESオブジェクトへのポインタ
- out 暗号テキストを保存する出力バッファへのポインタ
- in 暗号化するメッセージを保持している入力バッファへのポインタ
- sz 入力暗号テキストの復号化
- nonce nonceを含むバッファへのポインタ(1回だけ使用されている数)
- nonceSz ノンスの長さ
- authTag 認証タグを保存するバッファへのポインタ
- authTagSz 希望の認証タグの長さ
- authIn 入力認証ベクトルを含むバッファへのポインタ Example
Aes dec;
// initialize dec with wc_AesCcmSetKey
nonce[] = { initialize nonce };
cipher[] = { encrypted message };
plain[sizeof(cipher)];
authIn[] = { some 16 byte authentication input };
tag[AES_BLOCK_SIZE] = { authentication tag received for verification };
int return = wc_AesCcmDecrypt(&dec, plain, cipher, sizeof(cipher),
nonce, sizeof(nonce),tag, sizeof(tag), authIn, sizeof(authIn));
if(return != 0) {
// decrypt error, invalid authentication code
}
See:
Return:
- 0 入力メッセージの復号化に成功しました
- AES_CCM_AUTH_E 認証タグが提供された認証コードベクトルと一致しない場合、authtag。
function wc_AesXtsSetKey
int wc_AesXtsSetKey(
XtsAes * aes,
const byte * key,
word32 len,
int dir,
void * heap,
int devId
)
これは、暗号化または復号化タイプを修正するためのキーの設定を支援することです。完了したら、AESキーでWC_AESXTSFREEを呼び出すことがユーザーになりました。
Parameters:
- aes ENCRYPT /復号化プロセスのためのAESキー
- key AESキーを保持しているバッファー| ..Tweak Key
- len キーバッファのバイト数の長さ。キーサイズの2倍にする必要があります。すなわち、16バイトのキーについて。
- dir 方向、AES_EncryptionまたはAES_Decryptionのいずれか
- heap メモリに使用するヒントヒント。nullになることができます Example
XtsAes aes;
if(wc_AesXtsSetKey(&aes, key, sizeof(key), AES_ENCRYPTION, NULL, 0) != 0)
{
// Handle error
}
wc_AesXtsFree(&aes);
See:
Return: 0 成功
function wc_AesXtsEncryptSector
int wc_AesXtsEncryptSector(
XtsAes * aes,
byte * out,
const byte * in,
word32 sz,
word64 sector
)
WC_AESXTSENCRYPTと同じプロセスですが、バイト配列の代わりにTweak値としてWord64型を使用します。これは、Word64をバイト配列に変換し、WC_AESXTSENCRYPTを呼び出します。
Parameters:
- aes ブロック暗号化/復号化に使用するAESキー
- out 暗号テキストを保持するための出力バッファ
- in 暗号化する入力プレーンテキストバッファ
- sz 両方ともバッファのサイズ Example
XtsAes aes;
unsigned char plain[SIZE];
unsigned char cipher[SIZE];
word64 s = VALUE;
//set up keys with AES_ENCRYPTION as dir
if(wc_AesXtsEncryptSector(&aes, cipher, plain, SIZE, s) != 0)
{
// Handle error
}
wc_AesXtsFree(&aes);
See:
Return: 0 成功
function wc_AesXtsDecryptSector
int wc_AesXtsDecryptSector(
XtsAes * aes,
byte * out,
const byte * in,
word32 sz,
word64 sector
)
WC_AESXTSDECRYPTと同じプロセスではなく、BYTE配列の代わりにWord64タイプを使用します。これはWord64をバイト配列に変換するだけです。
Parameters:
- aes ブロック暗号化/復号化に使用するAESキー
- out プレーンテキストを保持するための出力バッファ
- in 復号化する暗号テキストバッファーを入力します
- sz 両方ともバッファのサイズ Example
XtsAes aes;
unsigned char plain[SIZE];
unsigned char cipher[SIZE];
word64 s = VALUE;
//set up aes key with AES_DECRYPTION as dir and tweak with AES_ENCRYPTION
if(wc_AesXtsDecryptSector(&aes, plain, cipher, SIZE, s) != 0)
{
// Handle error
}
wc_AesXtsFree(&aes);
See:
Return: 0 成功
function wc_AesXtsEncrypt
int wc_AesXtsEncrypt(
XtsAes * aes,
byte * out,
const byte * in,
word32 sz,
const byte * i,
word32 iSz
)
XTSモードのあるAES。(XTS)XEX暗号化と暗号テキストを盗んだ暗号化。
Parameters:
- aes ブロック暗号化/復号化に使用するAESキー
- out 暗号テキストを保持するための出力バッファ
- in 暗号化する入力プレーンテキストバッファ
- sz 両方ともバッファのサイズ
- i Tweakに使用する値 Example
XtsAes aes;
unsigned char plain[SIZE];
unsigned char cipher[SIZE];
unsigned char i[AES_BLOCK_SIZE];
//set up key with AES_ENCRYPTION as dir
if(wc_AesXtsEncrypt(&aes, cipher, plain, SIZE, i, sizeof(i)) != 0)
{
// Handle error
}
wc_AesXtsFree(&aes);
See:
Return: 0 成功
function wc_AesXtsDecrypt
int wc_AesXtsDecrypt(
XtsAes * aes,
byte * out,
const byte * in,
word32 sz,
const byte * i,
word32 iSz
)
暗号化と同じプロセスですが、AESキーはAES_Decryptionタイプです。
Parameters:
- aes ブロック暗号化/復号化に使用するAESキー
- out プレーンテキストを保持するための出力バッファ
- in 復号化する暗号テキストバッファーを入力します
- sz 両方ともバッファのサイズ
- i Tweakに使用する値 Example
XtsAes aes;
unsigned char plain[SIZE];
unsigned char cipher[SIZE];
unsigned char i[AES_BLOCK_SIZE];
//set up key with AES_DECRYPTION as dir and tweak with AES_ENCRYPTION
if(wc_AesXtsDecrypt(&aes, plain, cipher, SIZE, i, sizeof(i)) != 0)
{
// Handle error
}
wc_AesXtsFree(&aes);
See:
Return: 0 成功
function wc_AesXtsFree
int wc_AesXtsFree(
XtsAes * aes
)
これはXTSAES構造によって使用されるすべてのリソースを解放することです
See:
Return: 0 成功 Example
XtsAes aes;
if(wc_AesXtsSetKey(&aes, key, sizeof(key), AES_ENCRYPTION, NULL, 0) != 0)
{
// Handle error
}
wc_AesXtsFree(&aes);
function wc_AesInit
int wc_AesInit(
Aes * aes,
void * heap,
int devId
)
AES構造を初期化します。ASYNCハードウェアで使用するためのヒープヒントとIDを設定する
Parameters:
- aes 初期化にはAES構造
- heap 必要に応じてmalloc / freeに使用するヒントヒント Example
Aes enc;
void* hint = NULL;
int devId = INVALID_DEVID; //if not using async INVALID_DEVID is default
//heap hint could be set here if used
wc_AesInit(&aes, hint, devId);
See:
Return: 0 成功
function wc_AesCfbEncrypt
int wc_AesCfbEncrypt(
Aes * aes,
byte * out,
const byte * in,
word32 sz
)
CFBモードを持つAES。
Parameters:
- aes ブロック暗号化/復号化に使用するAESキー
- out 暗号テキストを保持するための出力バッファは、少なくともInpectBufferと同じくらい大きい必要があります)
- in 暗号化する入力プレーンテキストバッファ Example
Aes aes;
unsigned char plain[SIZE];
unsigned char cipher[SIZE];
//set up key with AES_ENCRYPTION as dir for both encrypt and decrypt
if(wc_AesCfbEncrypt(&aes, cipher, plain, SIZE) != 0)
{
// Handle error
}
See:
Return: 0 失敗時の成功と否定的なエラー値
function wc_AesCfbDecrypt
int wc_AesCfbDecrypt(
Aes * aes,
byte * out,
const byte * in,
word32 sz
)
CFBモードを持つAES。
Parameters:
- aes ブロック暗号化/復号化に使用するAESキー
- out 復号化されたテキストを保持するための出力バッファは、少なくともinputBufferと同じ大きさでなければなりません)
- in 復号化する入力バッファ Example
Aes aes;
unsigned char plain[SIZE];
unsigned char cipher[SIZE];
//set up key with AES_ENCRYPTION as dir for both encrypt and decrypt
if(wc_AesCfbDecrypt(&aes, plain, cipher, SIZE) != 0)
{
// Handle error
}
See:
Return: 0 失敗時の成功と否定的なエラー値
function wc_AesSivEncrypt
int wc_AesSivEncrypt(
const byte * key,
word32 keySz,
const byte * assoc,
word32 assocSz,
const byte * nonce,
word32 nonceSz,
const byte * in,
word32 inSz,
byte * siv,
byte * out
)
この関数は、RFC 5297に記載されているようにSIV(合成初期化ベクトル)暗号化を実行します。
Parameters:
- key 使用する鍵を含むバイトバッファ。
- keySz キーバッファの長さ(バイト単位)。
- assoc 追加の認証された関連データ(AD)。
- assocSz ADバッファのバイト数
- nonce 一度使用される数。ADと同じ方法でアルゴリズムによって使用されます。
- nonceSz バイト単位のNOCEバッファの長さ。
- in 暗号化する平文のバッファ。
- inSz 平文バッファの長さ
- siv S2VによるSIV出力(RFC 5297 2.4参照)。 Example
byte key[] = { some 32, 48, or 64 byte key };
byte assoc[] = {0x01, 0x2, 0x3};
byte nonce[] = {0x04, 0x5, 0x6};
byte plainText[] = {0xDE, 0xAD, 0xBE, 0xEF};
byte siv[AES_BLOCK_SIZE];
byte cipherText[sizeof(plainText)];
if (wc_AesSivEncrypt(key, sizeof(key), assoc, sizeof(assoc), nonce,
sizeof(nonce), plainText, sizeof(plainText), siv, cipherText) != 0) {
// failed to encrypt
}
See: wc_AesSivDecrypt
Return:
- 0 暗号化に成功した場合
- BAD_FUNC_ARG キー、SIV、または出力バッファがNULLの場合。キーサイズが32,48、または64バイトの場合にも返されます。
- Other AESまたはCMAC操作が失敗した場合に返されるその他の負のエラー値。
function wc_AesSivDecrypt
int wc_AesSivDecrypt(
const byte * key,
word32 keySz,
const byte * assoc,
word32 assocSz,
const byte * nonce,
word32 nonceSz,
const byte * in,
word32 inSz,
byte * siv,
byte * out
)
この機能は、RFC 5297に記載されているようにSIV(合成初期化ベクトル)復号化を実行する。
Parameters:
- key 使用する鍵を含むバイトバッファ。
- keySz キーバッファの長さ(バイト単位)。
- assoc 追加の認証された関連データ(AD)。
- assocSz ADバッファのバイト数
- nonce 一度使用される数。ADと同じ方法で、基礎となるアルゴリズムによって使用されます。
- nonceSz バイト単位のNOCEバッファの長さ。
- in 復号化する暗号文バッファー。
- inSz 暗号文バッファの長さ
- siv 暗号文に付随するSIV(RFC 5297 2.4を参照)。 Example
byte key[] = { some 32, 48, or 64 byte key };
byte assoc[] = {0x01, 0x2, 0x3};
byte nonce[] = {0x04, 0x5, 0x6};
byte cipherText[] = {0xDE, 0xAD, 0xBE, 0xEF};
byte siv[AES_BLOCK_SIZE] = { the SIV that came with the ciphertext };
byte plainText[sizeof(cipherText)];
if (wc_AesSivDecrypt(key, sizeof(key), assoc, sizeof(assoc), nonce,
sizeof(nonce), cipherText, sizeof(cipherText), siv, plainText) != 0) {
// failed to decrypt
}
See: wc_AesSivEncrypt
Return:
- 0 復号化に成功した場合
- BAD_FUNC_ARG キー、SIV、または出力バッファがNULLの場合。キーサイズが32,48、または64バイトの場合にも返されます。
- AES_SIV_AUTH_E S2Vによって派生したSIVが入力SIVと一致しない場合(RFC 5297 2.7を参照)。
- Other AESまたはCMAC操作が失敗した場合に返されるその他の負のエラー値。
Source code
int wc_AesSetKey(Aes* aes, const byte* key, word32 len,
const byte* iv, int dir);
int wc_AesSetIV(Aes* aes, const byte* iv);
int wc_AesCbcEncrypt(Aes* aes, byte* out,
const byte* in, word32 sz);
int wc_AesCbcDecrypt(Aes* aes, byte* out,
const byte* in, word32 sz);
int wc_AesCtrEncrypt(Aes* aes, byte* out,
const byte* in, word32 sz);
int wc_AesEncryptDirect(Aes* aes, byte* out, const byte* in);
int wc_AesDecryptDirect(Aes* aes, byte* out, const byte* in);
int wc_AesSetKeyDirect(Aes* aes, const byte* key, word32 len,
const byte* iv, int dir);
int wc_AesGcmSetKey(Aes* aes, const byte* key, word32 len);
int wc_AesGcmEncrypt(Aes* aes, byte* out,
const byte* in, word32 sz,
const byte* iv, word32 ivSz,
byte* authTag, word32 authTagSz,
const byte* authIn, word32 authInSz);
int wc_AesGcmDecrypt(Aes* aes, byte* out,
const byte* in, word32 sz,
const byte* iv, word32 ivSz,
const byte* authTag, word32 authTagSz,
const byte* authIn, word32 authInSz);
int wc_GmacSetKey(Gmac* gmac, const byte* key, word32 len);
int wc_GmacUpdate(Gmac* gmac, const byte* iv, word32 ivSz,
const byte* authIn, word32 authInSz,
byte* authTag, word32 authTagSz);
int wc_AesCcmSetKey(Aes* aes, const byte* key, word32 keySz);
int wc_AesCcmEncrypt(Aes* aes, byte* out,
const byte* in, word32 inSz,
const byte* nonce, word32 nonceSz,
byte* authTag, word32 authTagSz,
const byte* authIn, word32 authInSz);
int wc_AesCcmDecrypt(Aes* aes, byte* out,
const byte* in, word32 inSz,
const byte* nonce, word32 nonceSz,
const byte* authTag, word32 authTagSz,
const byte* authIn, word32 authInSz);
int wc_AesXtsSetKey(XtsAes* aes, const byte* key,
word32 len, int dir, void* heap, int devId);
int wc_AesXtsEncryptSector(XtsAes* aes, byte* out,
const byte* in, word32 sz, word64 sector);
int wc_AesXtsDecryptSector(XtsAes* aes, byte* out,
const byte* in, word32 sz, word64 sector);
int wc_AesXtsEncrypt(XtsAes* aes, byte* out,
const byte* in, word32 sz, const byte* i, word32 iSz);
int wc_AesXtsDecrypt(XtsAes* aes, byte* out,
const byte* in, word32 sz, const byte* i, word32 iSz);
int wc_AesXtsFree(XtsAes* aes);
int wc_AesInit(Aes* aes, void* heap, int devId);
int wc_AesCfbEncrypt(Aes* aes, byte* out, const byte* in, word32 sz);
int wc_AesCfbDecrypt(Aes* aes, byte* out, const byte* in, word32 sz);
int wc_AesSivEncrypt(const byte* key, word32 keySz, const byte* assoc,
word32 assocSz, const byte* nonce, word32 nonceSz,
const byte* in, word32 inSz, byte* siv, byte* out);
int wc_AesSivDecrypt(const byte* key, word32 keySz, const byte* assoc,
word32 assocSz, const byte* nonce, word32 nonceSz,
const byte* in, word32 inSz, byte* siv, byte* out);
Updated on 2023-03-29 at 08:44:34 +0000