hash.h 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. /*!
  2. \ingroup wolfCrypt
  3. \brief この関数は提供されたwc_hashtypeのOIDを返します。
  4. \return OID 戻り値0を超えてください
  5. \return HASH_TYPE_E ハッシュ型はサポートされていません。
  6. \return BAD_FUNC_ARG 提供された引数の1つが正しくありません。
  7. _Example_
  8. \code
  9. enum wc_HashType hash_type = WC_HASH_TYPE_SHA256;
  10. int oid = wc_HashGetOID(hash_type);
  11. if (oid > 0) {
  12. // Success
  13. }
  14. \endcode
  15. \sa wc_HashGetDigestSize
  16. \sa wc_Hash
  17. */
  18. int wc_HashGetOID(enum wc_HashType hash_type);
  19. /*!
  20. \ingroup wolfCrypt
  21. \brief この関数は、hash_typeのダイジェスト(出力)のサイズを返します。返品サイズは、WC_HASHに提供される出力バッファが十分に大きいことを確認するために使用されます。
  22. \return Success 正の戻り値は、ハッシュのダイジェストサイズを示します。
  23. \return Error hash_typeがサポートされていない場合はhash_type_eを返します。
  24. \return Failure 無効なhash_typeが使用された場合、bad_func_argを返します。
  25. _Example_
  26. \code
  27. int hash_len = wc_HashGetDigestSize(hash_type);
  28. if (hash_len <= 0) {
  29. WOLFSSL_MSG("Invalid hash type/len");
  30. return BAD_FUNC_ARG;
  31. }
  32. \endcode
  33. \sa wc_Hash
  34. */
  35. int wc_HashGetDigestSize(enum wc_HashType hash_type);
  36. /*!
  37. \ingroup wolfCrypt
  38. \brief この関数は、提供されたデータバッファ上にハッシュを実行し、提供されたハッシュバッファにそれを返します。
  39. \return 0 そうでなければ、それ以外の誤り(bad_func_argやbuffer_eなど)。
  40. \param hash_type "wc_hash_type_sha256"などの "enum wc_hashtype"からのハッシュ型。
  41. \param data ハッシュへのデータを含むバッファへのポインタ。
  42. \param data_len データバッファの長さ。
  43. \param hash 最後のハッシュを出力するために使用されるバッファへのポインタ。
  44. _Example_
  45. \code
  46. enum wc_HashType hash_type = WC_HASH_TYPE_SHA256;
  47. int hash_len = wc_HashGetDigestSize(hash_type);
  48. if (hash_len > 0) {
  49. int ret = wc_Hash(hash_type, data, data_len, hash_data, hash_len);
  50. if(ret == 0) {
  51. // Success
  52. }
  53. }
  54. \endcode
  55. \sa wc_HashGetDigestSize
  56. */
  57. int wc_Hash(enum wc_HashType hash_type,
  58. const byte* data, word32 data_len,
  59. byte* hash, word32 hash_len);
  60. /*!
  61. \ingroup MD5
  62. \brief 利便性機能は、すべてのハッシュを処理し、その結果をハッシュに入れます。
  63. \return 0 データを正常にハッシュしたときに返されます。
  64. \return Memory_E メモリエラー、メモリを割り当てることができません。これは、小さなスタックオプションが有効になっているだけです。
  65. \param data ハッシュへのデータ
  66. \param len データの長さ
  67. _Example_
  68. \code
  69. const byte* data;
  70. word32 data_len;
  71. byte* hash;
  72. int ret;
  73. ...
  74. ret = wc_Md5Hash(data, data_len, hash);
  75. if (ret != 0) {
  76. // Md5 Hash Failure Case.
  77. }
  78. \endcode
  79. \sa wc_Md5Hash
  80. \sa wc_Md5Final
  81. \sa wc_InitMd5
  82. */
  83. int wc_Md5Hash(const byte* data, word32 len, byte* hash);
  84. /*!
  85. \ingroup SHA
  86. \brief 利便性機能は、すべてのハッシュを処理し、その結果をハッシュに入れます。
  87. \return 0 うまく返されました...。
  88. \return Memory_E メモリエラー、メモリを割り当てることができません。これは、小さなスタックオプションが有効になっているだけです。
  89. \param data ハッシュへのデータ
  90. \param len データの長さ
  91. _Example_
  92. \code
  93. none
  94. \endcode
  95. \sa wc_ShaHash
  96. \sa wc_ShaFinal
  97. \sa wc_InitSha
  98. */
  99. int wc_ShaHash(const byte* data, word32 len, byte* hash);
  100. /*!
  101. \ingroup SHA
  102. \brief 利便性機能は、すべてのハッシュを処理し、その結果をハッシュに入れます。
  103. \return 0 うまく返されました...
  104. \return Memory_E メモリエラー、メモリを割り当てることができません。これは、小さなスタックオプションが有効になっているだけです。
  105. \param data ハッシュへのデータ
  106. \param len データの長さ
  107. _Example_
  108. \code
  109. none
  110. \endcode
  111. \sa wc_Sha256Hash
  112. \sa wc_Sha256Final
  113. \sa wc_InitSha256
  114. */
  115. int wc_Sha256Hash(const byte* data, word32 len, byte* hash);
  116. /*!
  117. \ingroup SHA
  118. \brief 利便性機能は、すべてのハッシュを処理し、その結果をハッシュに入れます。
  119. \return 0 成功
  120. \return <0 エラー
  121. \param data ハッシュへのデータ
  122. \param len データの長さ
  123. _Example_
  124. \code
  125. none
  126. \endcode
  127. \sa wc_InitSha224
  128. \sa wc_Sha224Update
  129. \sa wc_Sha224Final
  130. */
  131. int wc_Sha224Hash(const byte* data, word32 len, byte* hash);
  132. /*!
  133. \ingroup SHA
  134. \brief 利便性機能は、すべてのハッシュを処理し、その結果をハッシュに入れます。
  135. \return 0 入力されたデータを正常にハッシュしたときに返されます
  136. \return Memory_E メモリエラー、メモリを割り当てることができません。これは、小さなスタックオプションが有効になっているだけです。
  137. \param data ハッシュへのデータ
  138. \param len データの長さ
  139. _Example_
  140. \code
  141. none
  142. \endcode
  143. \sa wc_Sha512Hash
  144. \sa wc_Sha512Final
  145. \sa wc_InitSha512
  146. */
  147. int wc_Sha512Hash(const byte* data, word32 len, byte* hash);
  148. /*!
  149. \ingroup SHA
  150. \brief 利便性機能は、すべてのハッシュを処理し、その結果をハッシュに入れます。
  151. \return 0 データを正常にハッシュしたときに返されます
  152. \return Memory_E メモリエラー、メモリを割り当てることができません。これは、小さなスタックオプションが有効になっているだけです。
  153. \param data ハッシュへのデータ
  154. \param len データの長さ
  155. _Example_
  156. \code
  157. none
  158. \endcode
  159. \sa wc_Sha384Hash
  160. \sa wc_Sha384Final
  161. \sa wc_InitSha384
  162. */
  163. int wc_Sha384Hash(const byte* data, word32 len, byte* hash);