cmac.h 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. /*!
  2. \ingroup CMAC
  3. \brief Cmac構造体をデフォルト値で初期化します
  4. \return 成功したら0を返します
  5. \param cmac Cmac構造体へのポインタ
  6. \param key 鍵データへのポインタ
  7. \param keySz 鍵データのサイズ(16、24、または 32)
  8. \param type 常にWC_CMAC_AES(=1)
  9. \param unused 使用されていません。互換性に関する将来の潜在的な使用のために存在します
  10. _例_
  11. \code
  12. Cmac cmac[1];
  13. ret = wc_InitCmac(cmac、key、keySz、WC_CMAC_AES、NULL);
  14. if (ret == 0) {
  15. ret = wc_CmacUpdate(cmac、in、inSz);
  16. }
  17. if (ret == 0) {
  18. ret = wc_CmacFinal(cmac, out, outSz);
  19. }
  20. \endcode
  21. \sa wc_InitCmac_ex
  22. \sa wc_CmacUpdate
  23. \sa wc_CmacFinal
  24. \sa wc_CmacFinalNoFree
  25. \sa wc_CmacFree
  26. */
  27. int wc_InitCmac(Cmac* cmac,
  28. const byte* key、word32 keySz、
  29. int type、void* unused);
  30. /*!
  31. \ingroup CMAC
  32. \brief Cmac構造体をデフォルト値で初期化します
  33. \return 成功したら0を返します
  34. \param cmac Cmac構造体へのポインタ
  35. \param key 鍵データへのポインタ
  36. \param keySz 鍵データのサイズ(16、24、または 32)
  37. \param type 常にWC_CMAC_AES(=1)
  38. \param unused 使用されていません。互換性に関する将来の潜在的な使用のために存在します
  39. \param heap 動的割り当てに使用されるヒープヒントへのポインタ。 通常、スタティックメモリオプションで使用されます。 NULLにすることができます。
  40. \param devId 非同期ハードウェアで使用するID。非同期ハードウェアを使用していない場合は、INVALID_DEVIDに設定します。
  41. _例_
  42. \code
  43. Cmac cmac[1];
  44. ret = wc_InitCmac_ex(cmac, key, keySz, WC_CMAC_AES, NULL, NULL, INVALID_DEVID);
  45. if (ret == 0) {
  46. ret = wc_CmacUpdate(cmac, in, inSz);
  47. }
  48. if (ret == 0) {
  49. ret = wc_CmacFinal(cmac, out, &outSz);
  50. }
  51. \endcode
  52. \sa wc_InitCmac_ex
  53. \sa wc_CmacUpdate
  54. \sa wc_CmacFinal
  55. \sa wc_CmacFinalNoFree
  56. \sa wc_CmacFree
  57. */
  58. int wc_InitCmac_ex(Cmac* cmac,
  59. const byte* key, word32 keySz,
  60. int type, void* unused、void* heap, int devId);
  61. /*!
  62. \ingroup CMAC
  63. \brief 暗号ベースのメッセージ認証コード入力データを追加
  64. \return 成功したら0を返します
  65. \param cmac Cmac構造体へのポインタ
  66. \param in 処理する入力データへのポインタ
  67. \param inSz 入力データのサイズ
  68. _例_
  69. \code
  70. ret = wc_CmacUpdate(cmac、in、inSz);
  71. \endcode
  72. \sa wc_InitCmac
  73. \sa wc_CmacFinal
  74. \sa wc_CmacFinalNoFree
  75. \sa wc_CmacFree
  76. */
  77. int wc_CmacUpdate(Cmac* cmac,
  78. const byte* in, word32 inSz);
  79. /*!
  80. \ingroup CMAC
  81. \brief 暗号ベースのメッセージ認証コードの最終結果を生成します。ただし、使用したコンテキストのクリーンアップは行いません。
  82. \return 成功したら0を返します
  83. \param cmac Cmac構造体へのポインタ
  84. \param out 結果を格納するバッファへのポインタ
  85. \param outSz 結果出力先バッファのサイズ
  86. _Example_
  87. \code
  88. ret = wc_CmacFinalNoFree(cmac, out, &outSz);
  89. (void)wc_CmacFree(cmac);
  90. \endcode
  91. \sa wc_InitCmac
  92. \sa wc_CmacFinal
  93. \sa wc_CmacFinalNoFree
  94. \sa wc_CmacFree
  95. */
  96. int wc_CmacFinalNoFree(Cmac* cmac,
  97. byte* out, word32* outSz);
  98. /*!
  99. \ingroup CMAC
  100. \brief 暗号ベースのメッセージ認証コードを使用して最終結果を生成します。加えて、内部でwc_CmacFreeを呼び出してコンテキスとをクリーンアップします。
  101. \return 成功したら0を返します
  102. \param cmac Cmac構造体へのポインタ
  103. \param out 結果を格納するバッファへのポインタ
  104. \param outSz 結果出力先バッファのサイズ
  105. _例_
  106. \code
  107. ret = wc_CmacFinal(cmac, out, &outSz);
  108. \endcode
  109. \sa wc_InitCmac
  110. \sa wc_CmacFinal
  111. \sa wc_CmacFinalNoFree
  112. \sa wc_CmacFree
  113. */
  114. int wc_CmacFinal(Cmac* cmac,
  115. byte* out, word32* outSz);
  116. /*!
  117. \ingroup CMAC
  118. \brief CMAC処理中にCmac構造体内に確保されたオブジェクトを開放します。
  119. \return 成功したら0を返します
  120. \param cmac Cmac構造体へのポインタ
  121. _Example_
  122. \code
  123. ret = wc_CmacFinalNoFree(cmac, out, &outSz);
  124. (void)wc_CmacFree(cmac);
  125. \endcode
  126. \sa wc_InitCmac
  127. \sa wc_CmacFinalNoFree
  128. \sa wc_CmacFinal
  129. \sa wc_CmacFree
  130. */
  131. int wc_CmacFree(Cmac* cmac);
  132. /*!
  133. \ingroup CMAC
  134. \brief CMACを生成するためのシングルショット関数
  135. \return 成功したら0を返します
  136. \param out 結果の出力先バッファへのポインタ
  137. \param outSz 出力のポインタサイズ (in/out)
  138. \param in 処理する入力データのポインタ
  139. \param inSz 入力データのサイズ
  140. \param key 鍵データへのポインタ
  141. \param keySz 鍵データのサイズ (16、24、または 32)
  142. _例_
  143. \code
  144. ret = wc_AesCmacGenerate(mac, &macSz, msg, msgSz, key, keySz);
  145. \endcode
  146. \sa wc_AesCmacVerify
  147. */
  148. int wc_AesCmacGenerate(byte* out, word32* outSz,
  149. const byte* in、word32 inSz、
  150. const byte* key, word32 keySz);
  151. /*!
  152. \ingroup CMAC
  153. \brief CMACを検証するためのシングルショット関数
  154. \return 成功したら0を返します
  155. \param check 検証対象となるCMAC処理結果データへのポインタ
  156. \param checkSz CMAC処理結果データのサイズ
  157. \param in 処理する入力データのポインタ
  158. \param inSz 入力データのサイズ
  159. \param key 鍵データへのポインタ
  160. \param keySz 鍵データのサイズ (16、24、または 32)
  161. _例_
  162. \code
  163. ret = wc_AesCmacVerify(mac, macSz, msg, msgSz, key, keySz);
  164. \endcode
  165. \sa wc_AesCmacGenerate
  166. */
  167. int wc_AesCmacVerify(const byte* check, word32 checkSz,
  168. const byte* in、word32 inSz、
  169. const byte* key, word32 keySz);
  170. /*!
  171. \ingroup CMAC
  172. \brief WOLFSSL_HASH_KEEPマクロ定義時のみ使用可能。ハードウェアがシングルショットを必要とし、更新をメモリにキャッシュする必要がある場合に使用します。
  173. \return 成功したら0を返します
  174. \param cmac Cmac構造体へのポインタ
  175. \param in 処理する入力データへのポインタ
  176. \param inSz 入力データのサイズ
  177. _例_
  178. \code
  179. ret = wc_CMAC_Grow(cmac、in、inSz)
  180. \endcode
  181. */
  182. int wc_CMAC_Grow(Cmac* cmac, const byte* in, int inSz);