des3.h 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. /*!
  2. \ingroup 3DES
  3. \brief この関数は、引数として与えられたDES構造体のキーと初期化ベクトル(IV)を設定します。また、これらがまだ初期化されていない場合は、暗号化と復号化に必要なバッファーのスペースを初期化して割り当てます。注:IVが指定されていない場合(i.e.iv == null)初期化ベクトルは、デフォルトのIV 0になります。
  4. \return 0 DES構造体のキーと初期化ベクトルを正常に設定する
  5. \param des 初期化するDES構造へのポインタ
  6. \param key DES構造を初期化するための8バイトのキーを含むバッファへのポインタ
  7. \param iv DES構造を初期化するための8バイトIVを含むバッファへのポインタ。これが提供されていない場合、IVはデフォルトで0になります
  8. _Example_
  9. \code
  10. Des enc; // Des structure used for encryption
  11. int ret;
  12. byte key[] = { // initialize with 8 byte key };
  13. byte iv[] = { // initialize with 8 byte iv };
  14. ret = wc_Des_SetKey(&des, key, iv, DES_ENCRYPTION);
  15. if (ret != 0) {
  16. // error initializing des structure
  17. }
  18. \endcode
  19. \sa wc_Des_SetIV
  20. \sa wc_Des3_SetKey
  21. */
  22. int wc_Des_SetKey(Des* des, const byte* key,
  23. const byte* iv, int dir);
  24. /*!
  25. \ingroup 3DES
  26. \brief この関数は、引数として与えられたDES構造体の初期化ベクトル(IV)を設定します。NULL IVを渡したら、初期化ベクトルを0に設定します。
  27. \return none いいえ返します。
  28. \param des IVを設定するためのDES構造へのポインタ
  29. _Example_
  30. \code
  31. Des enc; // Des structure used for encryption
  32. // initialize enc with wc_Des_SetKey
  33. byte iv[] = { // initialize with 8 byte iv };
  34. wc_Des_SetIV(&enc, iv);
  35. }
  36. \endcode
  37. \sa wc_Des_SetKey
  38. */
  39. void wc_Des_SetIV(Des* des, const byte* iv);
  40. /*!
  41. \ingroup 3DES
  42. \brief この関数は入力メッセージを暗号化し、結果を出力バッファーに格納します。暗号ブロックチェーンチェーン(CBC)モードでDES暗号化を使用します。
  43. \return 0 与えられた入力メッセージの暗号化に成功したときに返されます
  44. \param des 暗号化に使用するDES構造へのポインタ
  45. \param out 暗号化された暗号文を保存するバッファへのポインタ
  46. \param in 暗号化するメッセージを含む入力バッファへのポインタ
  47. _Example_
  48. \code
  49. Des enc; // Des structure used for encryption
  50. // initialize enc with wc_Des_SetKey, use mode DES_ENCRYPTION
  51. byte plain[] = { // initialize with message };
  52. byte cipher[sizeof(plain)];
  53. if ( wc_Des_CbcEncrypt(&enc, cipher, plain, sizeof(plain)) != 0) {
  54. // error encrypting message
  55. }
  56. \endcode
  57. \sa wc_Des_SetKey
  58. \sa wc_Des_CbcDecrypt
  59. */
  60. int wc_Des_CbcEncrypt(Des* des, byte* out,
  61. const byte* in, word32 sz);
  62. /*!
  63. \ingroup 3DES
  64. \brief この関数は入力暗号文を復号化し、結果の平文を出力バッファーに出力します。暗号ブロックチェーンチェーン(CBC)モードでDES暗号化を使用します。
  65. \return 0 与えられた暗号文を正常に復号化したときに返されました
  66. \param des 復号化に使用するDES構造へのポインタ
  67. \param out 復号化された平文を保存するバッファへのポインタ
  68. \param in 暗号化された暗号文を含む入力バッファへのポインタ
  69. _Example_
  70. \code
  71. Des dec; // Des structure used for decryption
  72. // initialize dec with wc_Des_SetKey, use mode DES_DECRYPTION
  73. byte cipher[] = { // initialize with ciphertext };
  74. byte decoded[sizeof(cipher)];
  75. if ( wc_Des_CbcDecrypt(&dec, decoded, cipher, sizeof(cipher)) != 0) {
  76. // error decrypting message
  77. }
  78. \endcode
  79. \sa wc_Des_SetKey
  80. \sa wc_Des_CbcEncrypt
  81. */
  82. int wc_Des_CbcDecrypt(Des* des, byte* out,
  83. const byte* in, word32 sz);
  84. /*!
  85. \ingroup 3DES
  86. \brief この関数は入力メッセージを暗号化し、結果を出力バッファーに格納します。電子コードブック(ECB)モードでDES暗号化を使用します。
  87. \return 0: 与えられた平文を正常に暗号化すると返されます。
  88. \param des 暗号化に使用するDES構造へのポインタ
  89. \param out 暗号化されたメッセージを保存するバッファへのポインタ
  90. \param in 暗号化する平文を含む入力バッファへのポインタ
  91. _Example_
  92. \code
  93. Des enc; // Des structure used for encryption
  94. // initialize enc with wc_Des_SetKey, use mode DES_ENCRYPTION
  95. byte plain[] = { // initialize with message to encrypt };
  96. byte cipher[sizeof(plain)];
  97. if ( wc_Des_EcbEncrypt(&enc,cipher, plain, sizeof(plain)) != 0) {
  98. // error encrypting message
  99. }
  100. \endcode
  101. \sa wc_Des_SetKe
  102. */
  103. int wc_Des_EcbEncrypt(Des* des, byte* out,
  104. const byte* in, word32 sz);
  105. /*!
  106. \ingroup 3DES
  107. \brief この関数は入力メッセージを暗号化し、結果を出力バッファーに格納します。電子コードブック(ECB)モードでDES3暗号化を使用します。警告:ほぼすべてのユースケースでECBモードは安全性が低いと考えられています。可能な限りECB APIを直接使用しないでください。
  108. \return 0 与えられた平文を正常に暗号化すると返されます
  109. \param des3 暗号化に使用するDES3構造へのポインタ
  110. \param out 暗号化されたメッセージを保存するバッファへのポインタ
  111. \param in 暗号化する平文を含む入力バッファへのポインタ
  112. _Example_
  113. \code
  114. Des3 enc; // Des3 structure used for encryption
  115. // initialize enc with wc_Des3_SetKey, use mode DES_ENCRYPTION
  116. byte plain[] = { // initialize with message to encrypt };
  117. byte cipher[sizeof(plain)];
  118. if ( wc_Des3_EcbEncrypt(&enc,cipher, plain, sizeof(plain)) != 0) {
  119. // error encrypting message
  120. }
  121. \endcode
  122. \sa wc_Des3_SetKey
  123. */
  124. int wc_Des3_EcbEncrypt(Des3* des, byte* out,
  125. const byte* in, word32 sz);
  126. /*!
  127. \ingroup 3DES
  128. \brief この関数は、引数として与えられたDES3構造のキーと初期化ベクトル(IV)を設定します。また、これらがまだ初期化されていない場合は、暗号化と復号化に必要なバッファーのスペースを初期化して割り当てます。注:IVが指定されていない場合(i.e.iv == null)初期化ベクトルは、デフォルトのIV 0になります。
  129. \return 0 DES構造体のキーと初期化ベクトルを正常に設定する
  130. \param des3 初期化するDES3構造へのポインタ
  131. \param key DES3構造を初期化する24バイトのキーを含むバッファへのポインタ
  132. \param iv DES3構造を初期化するための8バイトIVを含むバッファへのポインタ。これが提供されていない場合、IVはデフォルトで0になります
  133. _Example_
  134. \code
  135. Des3 enc; // Des3 structure used for encryption
  136. int ret;
  137. byte key[] = { // initialize with 24 byte key };
  138. byte iv[] = { // initialize with 8 byte iv };
  139. ret = wc_Des3_SetKey(&des, key, iv, DES_ENCRYPTION);
  140. if (ret != 0) {
  141. // error initializing des structure
  142. }
  143. \endcode
  144. \sa wc_Des3_SetIV
  145. \sa wc_Des3_CbcEncrypt
  146. \sa wc_Des3_CbcDecrypt
  147. */
  148. int wc_Des3_SetKey(Des3* des, const byte* key,
  149. const byte* iv,int dir);
  150. /*!
  151. \ingroup 3DES
  152. \brief この関数は、引数として与えられたDES3構造の初期化ベクトル(IV)を設定します。NULL IVを渡したら、初期化ベクトルを0に設定します。
  153. \return none いいえ返します。
  154. \param des IVを設定するためのDES3構造へのポインタ
  155. _Example_
  156. \code
  157. Des3 enc; // Des3 structure used for encryption
  158. // initialize enc with wc_Des3_SetKey
  159. byte iv[] = { // initialize with 8 byte iv };
  160. wc_Des3_SetIV(&enc, iv);
  161. }
  162. \endcode
  163. \sa wc_Des3_SetKey
  164. */
  165. int wc_Des3_SetIV(Des3* des, const byte* iv);
  166. /*!
  167. \ingroup 3DES
  168. \brief この関数は入力メッセージを暗号化し、結果を出力バッファーに格納します。暗号ブロックチェーン(CBC)モードでトリプルDES(3DES)暗号化を使用します。
  169. \return 0 与えられた入力メッセージの暗号化に成功したときに返されます
  170. \param des 暗号化に使用するDES3構造へのポインタ
  171. \param out 暗号化された暗号文を保存するバッファへのポインタ
  172. \param in 暗号化するメッセージを含む入力バッファへのポインタ
  173. _Example_
  174. \code
  175. Des3 enc; // Des3 structure used for encryption
  176. // initialize enc with wc_Des3_SetKey, use mode DES_ENCRYPTION
  177. byte plain[] = { // initialize with message };
  178. byte cipher[sizeof(plain)];
  179. if ( wc_Des3_CbcEncrypt(&enc, cipher, plain, sizeof(plain)) != 0) {
  180. // error encrypting message
  181. }
  182. \endcode
  183. \sa wc_Des3_SetKey
  184. \sa wc_Des3_CbcDecrypt
  185. */
  186. int wc_Des3_CbcEncrypt(Des3* des, byte* out,
  187. const byte* in,word32 sz);
  188. /*!
  189. \ingroup 3DES
  190. \brief この関数は入力暗号文を復号化し、結果の平文を出力バッファーに出力します。暗号ブロックチェーン(CBC)モードでトリプルDES(3DES)暗号化を使用します。
  191. \return 0 与えられた暗号文を正常に復号化したときに返されました
  192. \param des 復号化に使用するDES3構造へのポインタ
  193. \param out 復号化された平文を保存するバッファへのポインタ
  194. \param in 暗号化された暗号文を含む入力バッファへのポインタ
  195. _Example_
  196. \code
  197. Des3 dec; // Des structure used for decryption
  198. // initialize dec with wc_Des3_SetKey, use mode DES_DECRYPTION
  199. byte cipher[] = { // initialize with ciphertext };
  200. byte decoded[sizeof(cipher)];
  201. if ( wc_Des3_CbcDecrypt(&dec, decoded, cipher, sizeof(cipher)) != 0) {
  202. // error decrypting message
  203. }
  204. \endcode
  205. \sa wc_Des3_SetKey
  206. \sa wc_Des3_CbcEncrypt
  207. */
  208. int wc_Des3_CbcDecrypt(Des3* des, byte* out,
  209. const byte* in,word32 sz);