cmac.h 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  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. */
  25. int wc_InitCmac(Cmac* cmac,
  26. const byte* key、word32 keySz、
  27. int type、void* unused);
  28. /*!
  29. \ingroup CMAC
  30. \brief Cmac構造体をデフォルト値で初期化します
  31. \return 成功したら0を返します
  32. \param cmac Cmac構造体へのポインタ
  33. \param key 鍵データへのポインタ
  34. \param keySz 鍵データのサイズ(16、24、または 32)
  35. \param type 常にWC_CMAC_AES(=1)
  36. \param unused 使用されていません。互換性に関する将来の潜在的な使用のために存在します
  37. \param heap 動的割り当てに使用されるヒープヒントへのポインタ。 通常、スタティックメモリオプションで使用されます。 NULLにすることができます。
  38. \param devId 非同期ハードウェアで使用するID。非同期ハードウェアを使用していない場合は、INVALID_DEVIDに設定します。
  39. _例_
  40. \code
  41. Cmac cmac[1];
  42. ret = wc_InitCmac_ex(cmac, key, keySz, WC_CMAC_AES, NULL, NULL, INVALID_DEVID);
  43. if (ret == 0) {
  44. ret = wc_CmacUpdate(cmac, in, inSz);
  45. }
  46. if (ret == 0) {
  47. ret = wc_CmacFinal(cmac, out, &outSz);
  48. }
  49. \endcode
  50. \sa wc_InitCmac_ex
  51. \sa wc_CmacUpdate
  52. \sa wc_CmacFinal
  53. */
  54. int wc_InitCmac_ex(Cmac* cmac,
  55. const byte* key, word32 keySz,
  56. int type, void* unused、void* heap, int devId);
  57. /*!
  58. \ingroup CMAC
  59. \brief 暗号ベースのメッセージ認証コード入力データを追加
  60. \return 成功したら0を返します
  61. \param cmac Cmac構造体へのポインタ
  62. \param in 処理する入力データへのポインタ
  63. \param inSz 入力データのサイズ
  64. _例_
  65. \code
  66. ret = wc_CmacUpdate(cmac、in、inSz);
  67. \endcode
  68. \sa wc_InitCmac
  69. \sa wc_CmacFinal
  70. */
  71. int wc_CmacUpdate(Cmac* cmac,
  72. const byte* in, word32 inSz);
  73. /*!
  74. \ingroup CMAC
  75. \brief 暗号ベースのメッセージ認証コードを使用して最終結果を生成します
  76. \return 成功したら0を返します
  77. \param cmac Cmac構造体へのポインタ
  78. \param out 結果の出力先バッファへのポインタ
  79. \param outSz 結果の出力先バッファサイズ (in/out)
  80. _例_
  81. \code
  82. ret = wc_CmacFinal(cmac, out, &outSz);
  83. \endcode
  84. \sa wc_InitCmac
  85. \sa wc_CmacFinal
  86. */
  87. int wc_CmacFinal(Cmac* cmac,
  88. byte* out, word32* outSz);
  89. /*!
  90. \ingroup CMAC
  91. \brief CMACを生成するためのシングルショット関数
  92. \return 成功したら0を返します
  93. \param out 結果の出力先バッファへのポインタ
  94. \param outSz 出力のポインタサイズ (in/out)
  95. \param in 処理する入力データのポインタ
  96. \param inSz 入力データのサイズ
  97. \param key 鍵データへのポインタ
  98. \param keySz 鍵データのサイズ (16、24、または 32)
  99. _例_
  100. \code
  101. ret = wc_AesCmacGenerate(mac, &macSz, msg, msgSz, key, keySz);
  102. \endcode
  103. \sa wc_AesCmacVerify
  104. */
  105. int wc_AesCmacGenerate(byte* out, word32* outSz,
  106. const byte* in、word32 inSz、
  107. const byte* key, word32 keySz);
  108. /*!
  109. \ingroup CMAC
  110. \brief CMACを検証するためのシングルショット関数
  111. \return 成功したら0を返します
  112. \param check 検証対象となるCMAC処理結果データへのポインタ
  113. \param checkSz CMAC処理結果データのサイズ
  114. \param in 処理する入力データのポインタ
  115. \param inSz 入力データのサイズ
  116. \param key 鍵データへのポインタ
  117. \param keySz 鍵データのサイズ (16、24、または 32)
  118. _例_
  119. \code
  120. ret = wc_AesCmacVerify(mac, macSz, msg, msgSz, key, keySz);
  121. \endcode
  122. \sa wc_AesCmacGenerate
  123. */
  124. int wc_AesCmacVerify(const byte* check, word32 checkSz,
  125. const byte* in、word32 inSz、
  126. const byte* key, word32 keySz);
  127. /*!
  128. \ingroup CMAC
  129. \brief WOLFSSL_HASH_KEEPマクロ定義時のみ使用可能。ハードウェアがシングルショットを必要とし、更新をメモリにキャッシュする必要がある場合に使用します。
  130. \return 成功したら0を返します
  131. \param cmac Cmac構造体へのポインタ
  132. \param in 処理する入力データへのポインタ
  133. \param inSz 入力データのサイズ
  134. _例_
  135. \code
  136. ret = wc_CMAC_Grow(cmac、in、inSz)
  137. \endcode
  138. */
  139. int wc_CMAC_Grow(Cmac* cmac, const byte* in, int inSz);