hmac.h 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. /*!
  2. \ingroup HMAC
  3. \brief この関数はHMACオブジェクトを初期化し、その暗号化タイプ、キー、およびHMACの長さを設定します。
  4. \return 0 HMACオブジェクトの初期化に成功しました
  5. \return BAD_FUNC_ARG 入力タイプが無効な場合は返されます。有効なオプションは次のとおりです.MD5、SHA、SHA256、SHA384、SHA3-224、SHA3-256、SHA3-384、SHA3-512
  6. \return MEMORY_E ハッシュに使用する構造体の割り当てメモリの割り当てエラーがある場合
  7. \return HMAC_MIN_KEYLEN_E FIPS実装を使用するときに、指定されたキーがFIPS規格の最小許容(14バイト)よりも短い
  8. \param hmac 初期化するHMACオブジェクトへのポインタ
  9. \param type HMACオブジェクトを使用する暗号化方式を指定します。有効なオプションは次のとおりです.MD5、SHA、SHA256、SHA384、SHA3-224、SHA3-256、SHA3-384、SHA3-512
  10. \param key HMACオブジェクトを初期化するキーを含むバッファへのポインタ
  11. _Example_
  12. \code
  13. Hmac hmac;
  14. byte key[] = { // initialize with key to use for encryption };
  15. if (wc_HmacSetKey(&hmac, MD5, key, sizeof(key)) != 0) {
  16. // error initializing Hmac object
  17. }
  18. \endcode
  19. \sa wc_HmacUpdate
  20. \sa wc_HmacFinal
  21. */
  22. int wc_HmacSetKey(Hmac* hmac, int type, const byte* key, word32 keySz);
  23. /*!
  24. \ingroup HMAC
  25. \brief この関数は、HMACを使用して認証するメッセージを更新します。HMACオブジェクトがWC_HMACSETKEYで初期化された後に呼び出されるべきです。この関数は、ハッシュへのメッセージを更新するために複数回呼び出されることがあります。必要に応じてwc_hmacupdateを呼び出した後、最終認証済みメッセージタグを取得するためにwc_hmacfinalを呼び出す必要があります。
  26. \return 0 認証するメッセージの更新に成功しました
  27. \return MEMORY_E ハッシュアルゴリズムで使用するためのメモリ割り当てエラーがある場合
  28. \param hmac メッセージを更新するHMACオブジェクトへのポインタ
  29. \param msg 追加するメッセージを含むバッファへのポインタ
  30. _Example_
  31. \code
  32. Hmac hmac;
  33. byte msg[] = { // initialize with message to authenticate };
  34. byte msg2[] = { // initialize with second half of message };
  35. // initialize hmac
  36. if( wc_HmacUpdate(&hmac, msg, sizeof(msg)) != 0) {
  37. // error updating message
  38. }
  39. if( wc_HmacUpdate(&hmac, msg2, sizeof(msg)) != 0) {
  40. // error updating with second message
  41. }
  42. \endcode
  43. \sa wc_HmacSetKey
  44. \sa wc_HmacFinal
  45. */
  46. int wc_HmacUpdate(Hmac* hmac, const byte* in, word32 sz);
  47. /*!
  48. \ingroup HMAC
  49. \brief この関数は、HMACオブジェクトのメッセージの最終ハッシュを計算します。
  50. \return 0 最後のハッシュの計算に成功した
  51. \return MEMORY_E ハッシュアルゴリズムで使用するためにメモリを割り当てるエラーがある場合
  52. \param hmac 最終ハッシュを計算するHMACオブジェクトへのポインタ
  53. _Example_
  54. \code
  55. Hmac hmac;
  56. byte hash[MD5_DIGEST_SIZE];
  57. // initialize hmac with MD5 as type
  58. // wc_HmacUpdate() with messages
  59. if (wc_HmacFinal(&hmac, hash) != 0) {
  60. // error computing hash
  61. }
  62. \endcode
  63. \sa wc_HmacSetKey
  64. \sa wc_HmacUpdate
  65. */
  66. int wc_HmacFinal(Hmac* hmac, byte* out);
  67. /*!
  68. \ingroup HMAC
  69. \brief この関数は、構成された暗号スイートに基づいて使用可能な最大のHMACダイジェストサイズを返します。
  70. \return Success 設定された暗号スイートに基づいて使用可能な最大のHMACダイジェストサイズを返します
  71. _Example_
  72. \code
  73. int maxDigestSz = wolfSSL_GetHmacMaxSize();
  74. \endcode
  75. \sa none
  76. */
  77. int wolfSSL_GetHmacMaxSize(void);
  78. /*!
  79. \ingroup HMAC
  80. \brief この関数は、HMACキー導出機能(HKDF)へのアクセスを提供します。HMACを利用して、任意のSALTとオプションの情報を派生したキーに変換します。0またはNULLが指定されている場合、ハッシュ型はデフォルトでMD5になります。
  81. \return 0 与えられた入力でキーの生成に成功したら返されます
  82. \return BAD_FUNC_ARG 無効なハッシュ型が引数として指定されている場合に返されます。有効な型は次のとおりです.MD5、SHA、SHA256、SHA384、SHA3-224、SHA3-256、SHA3-384、SHA3-512
  83. \return MEMORY_E メモリの割り当て中にエラーが発生した場合に返されます
  84. \return HMAC_MIN_KEYLEN_E FIPS実装を使用するときに返されることがあり、指定されたキー長は最小許容FIPS規格よりも短いです。
  85. \param type HKDFに使用するハッシュタイプ。有効な型は次のとおりです.MD5、SHA、SHA256、SHA384、SHA3-224、SHA3-256、SHA3-384、SHA3-512
  86. \param inKey KDFに使用するキーを含むバッファへのポインタ
  87. \param inKeySz 入力キーの長さ
  88. \param salt 任意のソルトを含むバッファへのポインタ。ソルトを使用しない場合は代わりにNULLを使用してください
  89. \param saltSz ソルトの長さ。ソルトを使用しない場合は0を使用してください
  90. \param info オプションの追加情報を含むバッファへのポインタ。追加情報を追加していない場合はNULLを使用してください
  91. \param infoSz 追加情報の長さ追加情報を使用しない場合は0を使用してください
  92. \param out 派生キーを保存するバッファへのポインタ
  93. _Example_
  94. \code
  95. byte key[] = { // initialize with key };
  96. byte salt[] = { // initialize with salt };
  97. byte derivedKey[MAX_DIGEST_SIZE];
  98. int ret = wc_HKDF(SHA512, key, sizeof(key), salt, sizeof(salt),
  99. NULL, 0, derivedKey, sizeof(derivedKey));
  100. if ( ret != 0 ) {
  101. // error generating derived key
  102. }
  103. \endcode
  104. \sa wc_HmacSetKey
  105. */
  106. int wc_HKDF(int type, const byte* inKey, word32 inKeySz,
  107. const byte* salt, word32 saltSz,
  108. const byte* info, word32 infoSz,
  109. byte* out, word32 outSz);