sha256.h 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. /*!
  2. \ingroup SHA
  3. \brief この関数はSHA256を初期化します。これはWC_SHA256HASHによって自動的に呼び出されます。
  4. \return 0 初期化に成功したときに返されます
  5. _Example_
  6. \code
  7. Sha256 sha256[1];
  8. if ((ret = wc_InitSha256(sha256)) != 0) {
  9. WOLFSSL_MSG("wc_InitSha256 failed");
  10. }
  11. else {
  12. wc_Sha256Update(sha256, data, len);
  13. wc_Sha256Final(sha256, hash);
  14. }
  15. \endcode
  16. \sa wc_Sha256Hash
  17. \sa wc_Sha256Update
  18. \sa wc_Sha256Final
  19. */
  20. int wc_InitSha256(wc_Sha256*);
  21. /*!
  22. \ingroup SHA
  23. \brief 長さLENの提供されたバイト配列を絶えずハッシュするように呼び出すことができます。
  24. \return 0 データをダイジェストに正常に追加すると返されます。
  25. \param sha256 暗号化に使用するSHA256構造へのポインタ
  26. \param data ハッシュするデータ
  27. _Example_
  28. \code
  29. Sha256 sha256[1];
  30. byte data[] = { Data to be hashed };
  31. word32 len = sizeof(data);
  32. if ((ret = wc_InitSha256(sha256)) != 0) {
  33. WOLFSSL_MSG("wc_InitSha256 failed");
  34. }
  35. else {
  36. wc_Sha256Update(sha256, data, len);
  37. wc_Sha256Final(sha256, hash);
  38. }
  39. \endcode
  40. \sa wc_Sha256Hash
  41. \sa wc_Sha256Final
  42. \sa wc_InitSha256
  43. */
  44. int wc_Sha256Update(wc_Sha256* sha, const byte* data, word32 len);
  45. /*!
  46. \ingroup SHA
  47. \brief データのハッシュを確定します。結果はハッシュに入れられます。SHA256構造体の状態をリセットします。
  48. \return 0 ファイナライズに成功したときに返されます。
  49. \param sha256 暗号化に使用するSHA256構造へのポインタ
  50. _Example_
  51. \code
  52. Sha256 sha256[1];
  53. byte data[] = { Data to be hashed };
  54. word32 len = sizeof(data);
  55. if ((ret = wc_InitSha256(sha256)) != 0) {
  56. WOLFSSL_MSG("wc_InitSha256 failed");
  57. }
  58. else {
  59. wc_Sha256Update(sha256, data, len);
  60. wc_Sha256Final(sha256, hash);
  61. }
  62. \endcode
  63. \sa wc_Sha256Hash
  64. \sa wc_Sha256GetHash
  65. \sa wc_InitSha256
  66. */
  67. int wc_Sha256Final(wc_Sha256* sha256, byte* hash);
  68. /*!
  69. \ingroup SHA
  70. \brief SHA256構造をリセットします。注:これは、wolfssl_ti_hashが定義されている場合にのみサポートされています。
  71. \return none いいえ返します。
  72. _Example_
  73. \code
  74. Sha256 sha256;
  75. byte data[] = { Data to be hashed };
  76. word32 len = sizeof(data);
  77. if ((ret = wc_InitSha256(&sha256)) != 0) {
  78. WOLFSSL_MSG("wc_InitSha256 failed");
  79. }
  80. else {
  81. wc_Sha256Update(&sha256, data, len);
  82. wc_Sha256Final(&sha256, hash);
  83. wc_Sha256Free(&sha256);
  84. }
  85. \endcode
  86. \sa wc_InitSha256
  87. \sa wc_Sha256Update
  88. \sa wc_Sha256Final
  89. */
  90. void wc_Sha256Free(wc_Sha256*);
  91. /*!
  92. \ingroup SHA
  93. \brief ハッシュデータを取得します。結果はハッシュに入れられます。SHA256構造体の状態をリセットしません。
  94. \return 0 ファイナライズに成功したときに返されます。
  95. \param sha256 暗号化に使用するSHA256構造へのポインタ
  96. _Example_
  97. \code
  98. Sha256 sha256[1];
  99. if ((ret = wc_InitSha256(sha256)) != 0) {
  100. WOLFSSL_MSG("wc_InitSha256 failed");
  101. }
  102. else {
  103. wc_Sha256Update(sha256, data, len);
  104. wc_Sha256GetHash(sha256, hash);
  105. }
  106. \endcode
  107. \sa wc_Sha256Hash
  108. \sa wc_Sha256Final
  109. \sa wc_InitSha256
  110. */
  111. int wc_Sha256GetHash(wc_Sha256* sha256, byte* hash);
  112. /*!
  113. \ingroup SHA
  114. \brief SHA224構造を初期化するために使用されます。
  115. \return 0 成功
  116. \return 1 SHA224がNULLなので、エラーが返されました。
  117. _Example_
  118. \code
  119. Sha224 sha224;
  120. if(wc_InitSha224(&sha224) != 0)
  121. {
  122. // Handle error
  123. }
  124. \endcode
  125. \sa wc_Sha224Hash
  126. \sa wc_Sha224Update
  127. \sa wc_Sha224Final
  128. */
  129. int wc_InitSha224(wc_Sha224*);
  130. /*!
  131. \ingroup SHA
  132. \brief 長さLENの提供されたバイト配列を絶えずハッシュするように呼び出すことができます。
  133. \return 0 成功
  134. \return 1 関数が失敗した場合はエラーが返されます。
  135. \return BAD_FUNC_ARG SHA224またはデータがNULLの場合、エラーが返されます。
  136. \param sha224 暗号化に使用するSHA224構造へのポインタ。
  137. \param data ハッシュするデータ。
  138. _Example_
  139. \code
  140. Sha224 sha224;
  141. byte data[] = { /* Data to be hashed };
  142. word32 len = sizeof(data);
  143. if ((ret = wc_InitSha224(&sha224)) != 0) {
  144. WOLFSSL_MSG("wc_InitSha224 failed");
  145. }
  146. else {
  147. wc_Sha224Update(&sha224, data, len);
  148. wc_Sha224Final(&sha224, hash);
  149. }
  150. \endcode
  151. \sa wc_InitSha224
  152. \sa wc_Sha224Final
  153. \sa wc_Sha224Hash
  154. */
  155. int wc_Sha224Update(wc_Sha224* sha224, const byte* data, word32 len);
  156. /*!
  157. \ingroup SHA
  158. \brief データのハッシュを確定します。結果はハッシュに入れられます。SHA224構造体の状態をリセットします。
  159. \return 0 成功
  160. \return <0 エラー
  161. \param sha224 暗号化に使用するSHA224構造へのポインタ
  162. _Example_
  163. \code
  164. Sha224 sha224;
  165. byte data[] = { /* Data to be hashed };
  166. word32 len = sizeof(data);
  167. if ((ret = wc_InitSha224(&sha224)) != 0) {
  168. WOLFSSL_MSG("wc_InitSha224 failed");
  169. }
  170. else {
  171. wc_Sha224Update(&sha224, data, len);
  172. wc_Sha224Final(&sha224, hash);
  173. }
  174. \endcode
  175. \sa wc_InitSha224
  176. \sa wc_Sha224Hash
  177. \sa wc_Sha224Update
  178. */
  179. int wc_Sha224Final(wc_Sha224* sha224, byte* hash);