siphash.h 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. /*!
  2. \ingroup SipHash
  3. \brief この関数は、MacサイズのキーでSiphashを初期化します。
  4. \return 0 初期化に成功したときに返されます
  5. \return BAD_FUNC_ARG SiphashまたはキーがNULLのときに返されます
  6. \return BAD_FUNC_ARG OUTSZが8でも16でもない場合に返されます
  7. \param siphash Macingに使用するサイプハッシュ構造へのポインタ
  8. \param key 16バイト配列へのポインタ
  9. _Example_
  10. \code
  11. SipHash siphash[1];
  12. unsigned char key[16] = { ... };
  13. byte macSz = 8; // 8 or 16
  14. if ((ret = wc_InitSipHash(siphash, key, macSz)) != 0) {
  15. WOLFSSL_MSG("wc_InitSipHash failed");
  16. }
  17. else if ((ret = wc_SipHashUpdate(siphash, data, len)) != 0) {
  18. WOLFSSL_MSG("wc_SipHashUpdate failed");
  19. }
  20. else if ((ret = wc_SipHashFinal(siphash, mac, macSz)) != 0) {
  21. WOLFSSL_MSG("wc_SipHashFinal failed");
  22. }
  23. \endcode
  24. \sa wc_SipHash
  25. \sa wc_SipHashUpdate
  26. \sa wc_SipHashFinal
  27. */
  28. int wc_InitSipHash(SipHash* siphash, const unsigned char* key,
  29. unsigned char outSz);
  30. /*!
  31. \ingroup SipHash
  32. \brief 長さLENの提供されたバイト配列を絶えずハッシュするように呼び出すことができます。
  33. \return 0 Macにデータを追加したら、返されます
  34. \return BAD_FUNC_ARG Siphashがnullのとき返されました
  35. \return BAD_FUNC_ARG inneがnullのとき返され、Inszはゼロではありません
  36. \param siphash Macingに使用するサイプハッシュ構造へのポインタ
  37. \param in マイートするデータ
  38. _Example_
  39. \code
  40. SipHash siphash[1];
  41. byte data[] = { Data to be MACed };
  42. word32 len = sizeof(data);
  43. if ((ret = wc_InitSipHash(siphash, key, macSz)) != 0) {
  44. WOLFSSL_MSG("wc_InitSipHash failed");
  45. }
  46. else if ((ret = wc_SipHashUpdate(siphash, data, len)) != 0) {
  47. WOLFSSL_MSG("wc_SipHashUpdate failed");
  48. }
  49. else if ((ret = wc_SipHashFinal(siphash, mac, macSz)) != 0) {
  50. WOLFSSL_MSG("wc_SipHashFinal failed");
  51. }
  52. \endcode
  53. \sa wc_SipHash
  54. \sa wc_InitSipHash
  55. \sa wc_SipHashFinal
  56. */
  57. int wc_SipHashUpdate(SipHash* siphash, const unsigned char* in,
  58. word32 inSz);
  59. /*!
  60. \ingroup SipHash
  61. \brief データのMacingを確定します。結果が出入りする。
  62. \return 0 ファイナライズに成功したときに返されます。
  63. \return BAD_FUNC_ARG SiphashのOUTがNULLのときに返されます
  64. \return BAD_FUNC_ARG OUTSZが初期化された値と同じではない場合に返されます
  65. \param siphash Macingに使用するサイプハッシュ構造へのポインタ
  66. \param out MAC値を保持するためのバイト配列
  67. _Example_
  68. \code
  69. SipHash siphash[1];
  70. byte mac[8] = { ... }; // 8 or 16 bytes
  71. byte macSz = sizeof(mac);
  72. if ((ret = wc_InitSipHash(siphash, key, macSz)) != 0) {
  73. WOLFSSL_MSG("wc_InitSipHash failed");
  74. }
  75. else if ((ret = wc_SipHashUpdate(siphash, data, len)) != 0) {
  76. WOLFSSL_MSG("wc_SipHashUpdate failed");
  77. }
  78. else if ((ret = wc_SipHashFinal(siphash, mac, macSz)) != 0) {
  79. WOLFSSL_MSG("wc_SipHashFinal failed");
  80. }
  81. \endcode
  82. \sa wc_SipHash
  83. \sa wc_InitSipHash
  84. \sa wc_SipHashUpdate
  85. */
  86. int wc_SipHashFinal(SipHash* siphash, unsigned char* out,
  87. unsigned char outSz);
  88. /*!
  89. \ingroup SipHash
  90. \brief この機能はSiphashを使用してデータを1ショットして、キーに基づいてMACを計算します。
  91. \return 0 Macingに成功したときに返されました
  92. \return BAD_FUNC_ARG キーまたはOUTがNULLのときに返されます
  93. \return BAD_FUNC_ARG inneがnullのとき返され、Inszはゼロではありません
  94. \return BAD_FUNC_ARG OUTSZが8でも16でもない場合に返されます
  95. \param key 16バイト配列へのポインタ
  96. \param in マイートするデータ
  97. \param inSz マイクされるデータのサイズ
  98. \param out MAC値を保持するためのバイト配列
  99. _Example_
  100. \code
  101. unsigned char key[16] = { ... };
  102. byte data[] = { Data to be MACed };
  103. word32 len = sizeof(data);
  104. byte mac[8] = { ... }; // 8 or 16 bytes
  105. byte macSz = sizeof(mac);
  106. if ((ret = wc_SipHash(key, data, len, mac, macSz)) != 0) {
  107. WOLFSSL_MSG("wc_SipHash failed");
  108. }
  109. \endcode
  110. \sa wc_InitSipHash
  111. \sa wc_SipHashUpdate
  112. \sa wc_SipHashFinal
  113. */
  114. int wc_SipHash(const unsigned char* key, const unsigned char* in,
  115. word32 inSz, unsigned char* out, unsigned char outSz);