2
0

pwdbased.h 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. /*!
  2. \ingroup Password
  3. \brief この機能はパスワードベースの鍵導出機能1(PBKDF1)を実装し、入力パスワードを連結ソルトと共により安全な鍵に変換し、出力に記憶する。これにより、HASH関数としてSHAとMD5を選択できます。
  4. \return 0 入力パスワードからキーの派生に正常に戻された
  5. \return BAD_FUNC_ARG 与えられた無効なハッシュタイプがある場合(有効なタイプは:MD5とSHA)、反復は1未満、または要求されたキーの長さ(Klen)は提供されたハッシュのハッシュ長よりも大きいです。
  6. \return MEMORY_E SHAまたはMD5オブジェクトにメモリを割り当てるエラーがある場合は返されます。
  7. \param output 生成されたキーを保存するバッファへのポインタ。少なくともklen longになるべきです
  8. \param passwd キーの派生に使用するパスワードを含むバッファへのポインタ
  9. \param pLen キーの派生に使用するパスワードの長さ
  10. \param salt 鍵由来に使用するソルトを含むバッファへのポインター
  11. \param sLen ソルトの長さ
  12. \param iterations ハッシュを処理するための回数
  13. \param kLen 派生キーの希望の長さ。選択したハッシュのダイジェストサイズより長くしてはいけません
  14. _Example_
  15. \code
  16. int ret;
  17. byte key[MD5_DIGEST_SIZE];
  18. byte pass[] = { }; // initialize with password
  19. byte salt[] = { }; // initialize with salt
  20. ret = wc_PBKDF1(key, pass, sizeof(pass), salt, sizeof(salt), 1000,
  21. sizeof(key), MD5);
  22. if ( ret != 0 ) {
  23. // error deriving key from password
  24. }
  25. \endcode
  26. \sa wc_PBKDF2
  27. \sa wc_PKCS12_PBKDF
  28. */
  29. int wc_PBKDF1(byte* output, const byte* passwd, int pLen,
  30. const byte* salt, int sLen, int iterations, int kLen,
  31. int typeH);
  32. /*!
  33. \ingroup Password
  34. \brief この機能はパスワードベースのキー導出機能2(PBKDF2)を実装し、入力パスワードを連結されたソルトとともにより安全なキーに変換し、出力に記憶されています。これにより、MD5、SHA、SHA256、SHA384、SHA512、およびBLAKE2Bなど、サポートされているHMACハッシュ関数のいずれかを選択できます。
  35. \return 0 入力パスワードからキーの派生に正常に戻された
  36. \return BAD_FUNC_ARG 無効なハッシュタイプがある場合、または反復が1未満の場合は返されます。
  37. \return MEMORY_E HMACオブジェクトに割り振りメモリがある場合
  38. \param output 生成されたキーを保存するバッファへのポインタ。klen longにするべきです
  39. \param passwd キーの派生に使用するパスワードを含むバッファへのポインタ
  40. \param pLen キーの派生に使用するパスワードの長さ
  41. \param salt 鍵由来に使用するソルトを含むバッファへのポインター
  42. \param sLen ソルトの長さ
  43. \param iterations ハッシュを処理するための回数
  44. \param kLen 派生鍵の望ましい長さ
  45. _Example_
  46. \code
  47. int ret;
  48. byte key[64];
  49. byte pass[] = { }; // initialize with password
  50. byte salt[] = { }; // initialize with salt
  51. ret = wc_PBKDF2(key, pass, sizeof(pass), salt, sizeof(salt), 2048, sizeof(key),
  52. SHA512);
  53. if ( ret != 0 ) {
  54. // error deriving key from password
  55. }
  56. \endcode
  57. \sa wc_PBKDF1
  58. \sa wc_PKCS12_PBKDF
  59. */
  60. int wc_PBKDF2(byte* output, const byte* passwd, int pLen,
  61. const byte* salt, int sLen, int iterations, int kLen,
  62. int typeH);
  63. /*!
  64. \ingroup Password
  65. \brief この関数は、RFC 7292付録Bに記載されているパスワードベースのキー導出機能(PBKDF)を実装しています。この関数は、入力パスワードを連結ソルトでより安全なキーに変換します。それは、MD5、SHA、SHA256、SHA384、SHA512、およびBLAKE2Bを含む、ユーザーはサポートされているHMACハッシュ関数のいずれかを選択できます。
  66. \return 0 入力パスワードからキーの派生に正常に戻された
  67. \return BAD_FUNC_ARG 返された無効なハッシュタイプが与えられた場合、繰り返しは1未満、または要求されたキーの長さ(klen)が提供されたハッシュのハッシュ長よりも大きいです。
  68. \return MEMORY_E 割り当てメモリがある場合は返されます
  69. \return MP_INIT_E キー生成中にエラーがある場合は返却される可能性があります
  70. \return MP_READ_E キー生成中にエラーがある場合は返却される可能性があります
  71. \return MP_CMP_E キー生成中にエラーがある場合は返却される可能性があります
  72. \return MP_INVMOD_E キー生成中にエラーがある場合は返却される可能性があります
  73. \return MP_EXPTMOD_E キー生成中にエラーがある場合は返却される可能性があります
  74. \return MP_MOD_E キー生成中にエラーがある場合は返却される可能性があります
  75. \return MP_MUL_E キー生成中にエラーがある場合は返却される可能性があります
  76. \return MP_ADD_E キー生成中にエラーがある場合は返却される可能性があります
  77. \return MP_MULMOD_E キー生成中にエラーがある場合は返却される可能性があります
  78. \return MP_TO_E キー生成中にエラーがある場合は返却される可能性があります
  79. \return MP_MEM キー生成中にエラーがある場合は返却される可能性があります
  80. \param output 生成されたキーを保存するバッファへのポインタ。klen longにするべきです
  81. \param passwd キーの派生に使用するパスワードを含むバッファへのポインタ
  82. \param pLen キーの派生に使用するパスワードの長さ
  83. \param salt 鍵由来に使用するソルトを含むバッファへのポインター
  84. \param sLen ソルトの長さ
  85. \param iterations ハッシュを処理するための回数
  86. \param kLen 派生鍵の望ましい長さ
  87. \param hashType 使用するハッシュアルゴリズム有効な選択肢は次のとおりです.MD5、SHA、SHA256、SHA384、SHA512、およびBLAKE2B
  88. _Example_
  89. \code
  90. int ret;
  91. byte key[64];
  92. byte pass[] = { }; // initialize with password
  93. byte salt[] = { }; // initialize with salt
  94. ret = wc_PKCS512_PBKDF(key, pass, sizeof(pass), salt, sizeof(salt), 2048,
  95. sizeof(key), SHA512, 1);
  96. if ( ret != 0 ) {
  97. // error deriving key from password
  98. }
  99. \endcode
  100. \sa wc_PBKDF1
  101. \sa wc_PBKDF2
  102. */
  103. int wc_PKCS12_PBKDF(byte* output, const byte* passwd, int pLen,
  104. const byte* salt, int sLen, int iterations,
  105. int kLen, int typeH, int purpose);