wc_encrypt.h 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. /*!
  2. \ingroup AES
  3. \brief 入力バッファーから暗号を復号化し、AESでCipher Block Chainingを使用して出力バッファに出力バッファーに入れます。この関数は、AES構造を初期化する必要はありません。代わりに、キーとIV(初期化ベクトル)を取り、これらを使用してAESオブジェクトを初期化してから暗号テキストを復号化します。
  4. \return 0 メッセージの復号化に成功しました
  5. \return BAD_ALIGN_E ブロック整列エラーに戻りました
  6. \return BAD_FUNC_ARG aesetivの間にキーの長さが無効な場合、またはAESオブジェクトがNULLの場合
  7. \return MEMORY_E wolfssl_small_stackが有効になっていて、xmallocがAESオブジェクトのインスタンス化に失敗した場合に返されます。
  8. \param out 復号化されたメッセージのプレーンテキストを保存する出力バッファへのポインタ
  9. \param in 復号化される暗号テキストを含む入力バッファへのポインタ
  10. \param inSz 入力メッセージのサイズ
  11. \param key 復号化のための16,24、または32バイトの秘密鍵
  12. _Example_
  13. \code
  14. int ret = 0;
  15. byte key[] = { some 16, 24, or 32 byte key };
  16. byte iv[] = { some 16 byte iv };
  17. byte cipher[AES_BLOCK_SIZE * n]; //n being a positive integer making
  18. cipher some multiple of 16 bytes
  19. // fill cipher with cipher text
  20. byte plain [AES_BLOCK_SIZE * n];
  21. if ((ret = wc_AesCbcDecryptWithKey(plain, cipher, AES_BLOCK_SIZE, key,
  22. AES_BLOCK_SIZE, iv)) != 0 ) {
  23. // Decrypt Error
  24. }
  25. \endcode
  26. \sa wc_AesSetKey
  27. \sa wc_AesSetIV
  28. \sa wc_AesCbcEncrypt
  29. \sa wc_AesCbcDecrypt
  30. */
  31. int wc_AesCbcDecryptWithKey(byte* out, const byte* in, word32 inSz,
  32. const byte* key, word32 keySz,
  33. const byte* iv);
  34. /*!
  35. \ingroup 3DES
  36. \brief この関数は入力暗号文を復号化し、結果の平文を出力バッファーに出力します。暗号ブロックチェーンチェーン(CBC)モードでDES暗号化を使用します。この関数は、wc_des_cbcdecryptの代わりに、ユーザーがDES構造体を直接インスタンス化せずにメッセージを復号化できるようにします。
  37. \return 0 与えられた暗号文を正常に復号化したときに返されました
  38. \return MEMORY_E DES構造体の割り当てスペースが割り当てられている場合に返された
  39. \param out 復号化された平文を保存するバッファへのポインタ
  40. \param in 暗号化された暗号文を含む入力バッファへのポインタ
  41. \param sz 復号化する暗号文の長さ
  42. \param key 復号化に使用する8バイトのキーを含むバッファへのポインタ
  43. _Example_
  44. \code
  45. int ret;
  46. byte key[] = { // initialize with 8 byte key };
  47. byte iv[] = { // initialize with 8 byte iv };
  48. byte cipher[] = { // initialize with ciphertext };
  49. byte decoded[sizeof(cipher)];
  50. if ( wc_Des_CbcDecryptWithKey(decoded, cipher, sizeof(cipher), key,
  51. iv) != 0) {
  52. // error decrypting message
  53. }
  54. \endcode
  55. \sa wc_Des_CbcDecrypt
  56. */
  57. int wc_Des_CbcDecryptWithKey(byte* out,
  58. const byte* in, word32 sz,
  59. const byte* key, const byte* iv);
  60. /*!
  61. \ingroup 3DES
  62. \brief この関数は入力平文を暗号化し、結果の暗号文を出力バッファーに出力します。暗号ブロックチェーンチェーン(CBC)モードでDES暗号化を使用します。この関数は、WC_DES_CBCENCRYPTの代わりになり、ユーザーがDES構造を直接インスタンス化せずにメッセージを暗号化できます。
  63. \return 0 データの暗号化に成功した後に返されます。
  64. \return MEMORY_E DES構造体にメモリを割り当てるエラーがある場合は返されます。
  65. \return <0 暗号化中に任意のエラーに戻ります。
  66. \param out 最終暗号化データ
  67. \param in 暗号化されるデータは、DESブロックサイズに埋められなければなりません。
  68. \param sz 入力バッファのサイズ
  69. \param key 暗号化に使用するキーへのポインタ。
  70. _Example_
  71. \code
  72. byte key[] = { // initialize with 8 byte key };
  73. byte iv[] = { // initialize with 8 byte iv };
  74. byte in[] = { // Initialize with plaintext };
  75. byte out[sizeof(in)];
  76. if ( wc_Des_CbcEncryptWithKey(&out, in, sizeof(in), key, iv) != 0)
  77. {
  78. // error encrypting message
  79. }
  80. \endcode
  81. \sa wc_Des_CbcDecryptWithKey
  82. \sa wc_Des_CbcEncrypt
  83. */
  84. int wc_Des_CbcEncryptWithKey(byte* out,
  85. const byte* in, word32 sz,
  86. const byte* key, const byte* iv);
  87. /*!
  88. \ingroup 3DES
  89. \brief この関数は入力平文を暗号化し、結果の暗号文を出力バッファーに出力します。暗号ブロックチェーン(CBC)モードでトリプルDES(3DES)暗号化を使用します。この関数は、WC_DES3_CBCENCRYPTの代わりになり、ユーザーがDES3構造を直接インスタンス化せずにメッセージを暗号化できます。
  90. \return 0 データの暗号化に成功した後に返されます。
  91. \return MEMORY_E DES構造体にメモリを割り当てるエラーがある場合は返されます。
  92. \return <0 暗号化中に任意のエラーに戻ります。
  93. \param out 最終暗号化データ
  94. \param in 暗号化されるデータは、DESブロックサイズに埋められなければなりません。
  95. \param sz 入力バッファのサイズ
  96. \param key 暗号化に使用するキーへのポインタ。
  97. _Example_
  98. \code
  99. byte key[] = { // initialize with 8 byte key };
  100. byte iv[] = { // initialize with 8 byte iv };
  101. byte in[] = { // Initialize with plaintext };
  102. byte out[sizeof(in)];
  103. if ( wc_Des3_CbcEncryptWithKey(&out, in, sizeof(in), key, iv) != 0)
  104. {
  105. // error encrypting message
  106. }
  107. \endcode
  108. \sa wc_Des3_CbcDecryptWithKey
  109. \sa wc_Des_CbcEncryptWithKey
  110. \sa wc_Des_CbcDecryptWithKey
  111. */
  112. int wc_Des3_CbcEncryptWithKey(byte* out,
  113. const byte* in, word32 sz,
  114. const byte* key, const byte* iv);
  115. /*!
  116. \ingroup 3DES
  117. \brief この関数は入力暗号文を復号化し、結果の平文を出力バッファーに出力します。暗号ブロックチェーン(CBC)モードでトリプルDES(3DES)暗号化を使用します。この関数は、wc_des3_cbcdecryptの代わりに、ユーザーがDES3構造を直接インスタンス化せずにメッセージを復号化できるようにします。
  118. \return 0 与えられた暗号文を正常に復号化したときに返されました
  119. \return MEMORY_E DES構造体の割り当てスペースが割り当てられている場合に返された
  120. \param out 復号化された平文を保存するバッファへのポインタ
  121. \param in 暗号化された暗号文を含む入力バッファへのポインタ
  122. \param sz 復号化する暗号文の長さ
  123. \param key 復号化に使用する24バイトのキーを含むバッファへのポインタ
  124. _Example_
  125. \code
  126. int ret;
  127. byte key[] = { // initialize with 24 byte key };
  128. byte iv[] = { // initialize with 8 byte iv };
  129. byte cipher[] = { // initialize with ciphertext };
  130. byte decoded[sizeof(cipher)];
  131. if ( wc_Des3_CbcDecryptWithKey(decoded, cipher, sizeof(cipher),
  132. key, iv) != 0) {
  133. // error decrypting message
  134. }
  135. \endcode
  136. \sa wc_Des3_CbcDecrypt
  137. */
  138. int wc_Des3_CbcDecryptWithKey(byte* out,
  139. const byte* in, word32 sz,
  140. const byte* key, const byte* iv);