edhoc 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (659) hide show
  1. package/binding.gyp +64 -0
  2. package/external/libedhoc/backends/cbor/include/backend_cbor_bstr_type_decode.h +35 -0
  3. package/external/libedhoc/backends/cbor/include/backend_cbor_bstr_type_encode.h +35 -0
  4. package/external/libedhoc/backends/cbor/include/backend_cbor_bstr_type_types.h +34 -0
  5. package/external/libedhoc/backends/cbor/include/backend_cbor_ead_decode.h +35 -0
  6. package/external/libedhoc/backends/cbor/include/backend_cbor_ead_encode.h +35 -0
  7. package/external/libedhoc/backends/cbor/include/backend_cbor_edhoc_types.h +97 -0
  8. package/external/libedhoc/backends/cbor/include/backend_cbor_enc_structure_decode.h +35 -0
  9. package/external/libedhoc/backends/cbor/include/backend_cbor_enc_structure_encode.h +35 -0
  10. package/external/libedhoc/backends/cbor/include/backend_cbor_enc_structure_types.h +37 -0
  11. package/external/libedhoc/backends/cbor/include/backend_cbor_id_cred_x_decode.h +35 -0
  12. package/external/libedhoc/backends/cbor/include/backend_cbor_id_cred_x_encode.h +35 -0
  13. package/external/libedhoc/backends/cbor/include/backend_cbor_info_decode.h +35 -0
  14. package/external/libedhoc/backends/cbor/include/backend_cbor_info_encode.h +35 -0
  15. package/external/libedhoc/backends/cbor/include/backend_cbor_int_type_decode.h +35 -0
  16. package/external/libedhoc/backends/cbor/include/backend_cbor_int_type_encode.h +35 -0
  17. package/external/libedhoc/backends/cbor/include/backend_cbor_int_type_types.h +34 -0
  18. package/external/libedhoc/backends/cbor/include/backend_cbor_message_1_decode.h +35 -0
  19. package/external/libedhoc/backends/cbor/include/backend_cbor_message_1_encode.h +35 -0
  20. package/external/libedhoc/backends/cbor/include/backend_cbor_message_2_decode.h +35 -0
  21. package/external/libedhoc/backends/cbor/include/backend_cbor_message_2_encode.h +35 -0
  22. package/external/libedhoc/backends/cbor/include/backend_cbor_message_3_decode.h +35 -0
  23. package/external/libedhoc/backends/cbor/include/backend_cbor_message_3_encode.h +35 -0
  24. package/external/libedhoc/backends/cbor/include/backend_cbor_message_4_decode.h +35 -0
  25. package/external/libedhoc/backends/cbor/include/backend_cbor_message_4_encode.h +35 -0
  26. package/external/libedhoc/backends/cbor/include/backend_cbor_message_error_decode.h +35 -0
  27. package/external/libedhoc/backends/cbor/include/backend_cbor_message_error_encode.h +35 -0
  28. package/external/libedhoc/backends/cbor/include/backend_cbor_plaintext_2_decode.h +35 -0
  29. package/external/libedhoc/backends/cbor/include/backend_cbor_plaintext_2_encode.h +35 -0
  30. package/external/libedhoc/backends/cbor/include/backend_cbor_plaintext_3_decode.h +35 -0
  31. package/external/libedhoc/backends/cbor/include/backend_cbor_plaintext_3_encode.h +35 -0
  32. package/external/libedhoc/backends/cbor/include/backend_cbor_plaintext_4_decode.h +35 -0
  33. package/external/libedhoc/backends/cbor/include/backend_cbor_plaintext_4_encode.h +35 -0
  34. package/external/libedhoc/backends/cbor/include/backend_cbor_sig_structure_decode.h +35 -0
  35. package/external/libedhoc/backends/cbor/include/backend_cbor_sig_structure_encode.h +35 -0
  36. package/external/libedhoc/backends/cbor/include/backend_cbor_sig_structure_types.h +38 -0
  37. package/external/libedhoc/backends/cbor/include/backend_cbor_x509_types.h +170 -0
  38. package/external/libedhoc/backends/cbor/src/backend_cbor_bstr_type_decode.c +59 -0
  39. package/external/libedhoc/backends/cbor/src/backend_cbor_bstr_type_encode.c +59 -0
  40. package/external/libedhoc/backends/cbor/src/backend_cbor_ead_decode.c +74 -0
  41. package/external/libedhoc/backends/cbor/src/backend_cbor_ead_encode.c +74 -0
  42. package/external/libedhoc/backends/cbor/src/backend_cbor_enc_structure_decode.c +62 -0
  43. package/external/libedhoc/backends/cbor/src/backend_cbor_enc_structure_encode.c +62 -0
  44. package/external/libedhoc/backends/cbor/src/backend_cbor_id_cred_x_decode.c +141 -0
  45. package/external/libedhoc/backends/cbor/src/backend_cbor_id_cred_x_encode.c +141 -0
  46. package/external/libedhoc/backends/cbor/src/backend_cbor_info_decode.c +61 -0
  47. package/external/libedhoc/backends/cbor/src/backend_cbor_info_encode.c +61 -0
  48. package/external/libedhoc/backends/cbor/src/backend_cbor_int_type_decode.c +59 -0
  49. package/external/libedhoc/backends/cbor/src/backend_cbor_int_type_encode.c +59 -0
  50. package/external/libedhoc/backends/cbor/src/backend_cbor_message_1_decode.c +112 -0
  51. package/external/libedhoc/backends/cbor/src/backend_cbor_message_1_encode.c +112 -0
  52. package/external/libedhoc/backends/cbor/src/backend_cbor_message_2_decode.c +59 -0
  53. package/external/libedhoc/backends/cbor/src/backend_cbor_message_2_encode.c +59 -0
  54. package/external/libedhoc/backends/cbor/src/backend_cbor_message_3_decode.c +59 -0
  55. package/external/libedhoc/backends/cbor/src/backend_cbor_message_3_encode.c +59 -0
  56. package/external/libedhoc/backends/cbor/src/backend_cbor_message_4_decode.c +59 -0
  57. package/external/libedhoc/backends/cbor/src/backend_cbor_message_4_encode.c +59 -0
  58. package/external/libedhoc/backends/cbor/src/backend_cbor_message_error_decode.c +93 -0
  59. package/external/libedhoc/backends/cbor/src/backend_cbor_message_error_encode.c +93 -0
  60. package/external/libedhoc/backends/cbor/src/backend_cbor_plaintext_2_decode.c +193 -0
  61. package/external/libedhoc/backends/cbor/src/backend_cbor_plaintext_2_encode.c +194 -0
  62. package/external/libedhoc/backends/cbor/src/backend_cbor_plaintext_3_decode.c +189 -0
  63. package/external/libedhoc/backends/cbor/src/backend_cbor_plaintext_3_encode.c +189 -0
  64. package/external/libedhoc/backends/cbor/src/backend_cbor_plaintext_4_decode.c +88 -0
  65. package/external/libedhoc/backends/cbor/src/backend_cbor_plaintext_4_encode.c +88 -0
  66. package/external/libedhoc/backends/cbor/src/backend_cbor_sig_structure_decode.c +63 -0
  67. package/external/libedhoc/backends/cbor/src/backend_cbor_sig_structure_encode.c +63 -0
  68. package/external/libedhoc/externals/compact25519/src/c25519/c25519.c +126 -0
  69. package/external/libedhoc/externals/compact25519/src/c25519/c25519.h +49 -0
  70. package/external/libedhoc/externals/compact25519/src/c25519/ed25519.c +323 -0
  71. package/external/libedhoc/externals/compact25519/src/c25519/ed25519.h +84 -0
  72. package/external/libedhoc/externals/compact25519/src/c25519/edsign.c +171 -0
  73. package/external/libedhoc/externals/compact25519/src/c25519/edsign.h +53 -0
  74. package/external/libedhoc/externals/compact25519/src/c25519/f25519.c +330 -0
  75. package/external/libedhoc/externals/compact25519/src/c25519/f25519.h +98 -0
  76. package/external/libedhoc/externals/compact25519/src/c25519/fprime.c +226 -0
  77. package/external/libedhoc/externals/compact25519/src/c25519/fprime.h +81 -0
  78. package/external/libedhoc/externals/compact25519/src/c25519/sha512.c +230 -0
  79. package/external/libedhoc/externals/compact25519/src/c25519/sha512.h +54 -0
  80. package/external/libedhoc/externals/compact25519/src/compact_ed25519.c +46 -0
  81. package/external/libedhoc/externals/compact25519/src/compact_ed25519.h +110 -0
  82. package/external/libedhoc/externals/compact25519/src/compact_wipe.c +12 -0
  83. package/external/libedhoc/externals/compact25519/src/compact_wipe.h +14 -0
  84. package/external/libedhoc/externals/compact25519/src/compact_x25519.c +68 -0
  85. package/external/libedhoc/externals/compact25519/src/compact_x25519.h +101 -0
  86. package/external/libedhoc/externals/compact25519/test/pcg_random.h +25 -0
  87. package/external/libedhoc/externals/compact25519/test/run-all.c +178 -0
  88. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/Hacl_Curve25519.h +21 -0
  89. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/everest.h +234 -0
  90. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/kremlib/FStar_UInt128.h +124 -0
  91. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/kremlib/FStar_UInt64_FStar_UInt32_FStar_UInt16_FStar_UInt8.h +280 -0
  92. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/kremlib.h +29 -0
  93. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/kremlin/c_endianness.h +204 -0
  94. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/builtin.h +16 -0
  95. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/callconv.h +46 -0
  96. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/compat.h +34 -0
  97. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/debug.h +57 -0
  98. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/target.h +102 -0
  99. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/types.h +61 -0
  100. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/wasmsupport.h +5 -0
  101. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/vs2013/Hacl_Curve25519.h +21 -0
  102. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/vs2013/inttypes.h +36 -0
  103. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/vs2013/stdbool.h +31 -0
  104. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/x25519.h +190 -0
  105. package/external/libedhoc/externals/mbedtls/3rdparty/everest/library/Hacl_Curve25519.c +760 -0
  106. package/external/libedhoc/externals/mbedtls/3rdparty/everest/library/Hacl_Curve25519_joined.c +50 -0
  107. package/external/libedhoc/externals/mbedtls/3rdparty/everest/library/everest.c +102 -0
  108. package/external/libedhoc/externals/mbedtls/3rdparty/everest/library/kremlib/FStar_UInt128_extracted.c +413 -0
  109. package/external/libedhoc/externals/mbedtls/3rdparty/everest/library/kremlib/FStar_UInt64_FStar_UInt32_FStar_UInt16_FStar_UInt8.c +100 -0
  110. package/external/libedhoc/externals/mbedtls/3rdparty/everest/library/legacy/Hacl_Curve25519.c +805 -0
  111. package/external/libedhoc/externals/mbedtls/3rdparty/everest/library/x25519.c +186 -0
  112. package/external/libedhoc/externals/mbedtls/3rdparty/p256-m/p256-m/p256-m.c +1514 -0
  113. package/external/libedhoc/externals/mbedtls/3rdparty/p256-m/p256-m/p256-m.h +135 -0
  114. package/external/libedhoc/externals/mbedtls/3rdparty/p256-m/p256-m_driver_entrypoints.c +312 -0
  115. package/external/libedhoc/externals/mbedtls/3rdparty/p256-m/p256-m_driver_entrypoints.h +219 -0
  116. package/external/libedhoc/externals/mbedtls/configs/config-ccm-psk-dtls1_2.h +92 -0
  117. package/external/libedhoc/externals/mbedtls/configs/config-ccm-psk-tls1_2.h +83 -0
  118. package/external/libedhoc/externals/mbedtls/configs/config-no-entropy.h +73 -0
  119. package/external/libedhoc/externals/mbedtls/configs/config-suite-b.h +106 -0
  120. package/external/libedhoc/externals/mbedtls/configs/config-symmetric-only.h +77 -0
  121. package/external/libedhoc/externals/mbedtls/configs/config-thread.h +76 -0
  122. package/external/libedhoc/externals/mbedtls/configs/crypto-config-ccm-aes-sha256.h +25 -0
  123. package/external/libedhoc/externals/mbedtls/configs/crypto_config_profile_medium.h +136 -0
  124. package/external/libedhoc/externals/mbedtls/configs/tfm_mbedcrypto_config_profile_medium.h +609 -0
  125. package/external/libedhoc/externals/mbedtls/doxygen/input/doc_encdec.h +54 -0
  126. package/external/libedhoc/externals/mbedtls/doxygen/input/doc_hashing.h +30 -0
  127. package/external/libedhoc/externals/mbedtls/doxygen/input/doc_mainpage.h +19 -0
  128. package/external/libedhoc/externals/mbedtls/doxygen/input/doc_rng.h +27 -0
  129. package/external/libedhoc/externals/mbedtls/doxygen/input/doc_ssltls.h +37 -0
  130. package/external/libedhoc/externals/mbedtls/doxygen/input/doc_tcpip.h +32 -0
  131. package/external/libedhoc/externals/mbedtls/doxygen/input/doc_x509.h +31 -0
  132. package/external/libedhoc/externals/mbedtls/include/mbedtls/aes.h +627 -0
  133. package/external/libedhoc/externals/mbedtls/include/mbedtls/aria.h +341 -0
  134. package/external/libedhoc/externals/mbedtls/include/mbedtls/asn1.h +641 -0
  135. package/external/libedhoc/externals/mbedtls/include/mbedtls/asn1write.h +389 -0
  136. package/external/libedhoc/externals/mbedtls/include/mbedtls/base64.h +82 -0
  137. package/external/libedhoc/externals/mbedtls/include/mbedtls/bignum.h +1084 -0
  138. package/external/libedhoc/externals/mbedtls/include/mbedtls/build_info.h +146 -0
  139. package/external/libedhoc/externals/mbedtls/include/mbedtls/camellia.h +303 -0
  140. package/external/libedhoc/externals/mbedtls/include/mbedtls/ccm.h +518 -0
  141. package/external/libedhoc/externals/mbedtls/include/mbedtls/chacha20.h +202 -0
  142. package/external/libedhoc/externals/mbedtls/include/mbedtls/chachapoly.h +342 -0
  143. package/external/libedhoc/externals/mbedtls/include/mbedtls/check_config.h +1206 -0
  144. package/external/libedhoc/externals/mbedtls/include/mbedtls/cipher.h +1183 -0
  145. package/external/libedhoc/externals/mbedtls/include/mbedtls/cmac.h +246 -0
  146. package/external/libedhoc/externals/mbedtls/include/mbedtls/compat-2.x.h +46 -0
  147. package/external/libedhoc/externals/mbedtls/include/mbedtls/config_adjust_legacy_crypto.h +183 -0
  148. package/external/libedhoc/externals/mbedtls/include/mbedtls/config_adjust_legacy_from_psa.h +877 -0
  149. package/external/libedhoc/externals/mbedtls/include/mbedtls/config_adjust_psa_from_legacy.h +334 -0
  150. package/external/libedhoc/externals/mbedtls/include/mbedtls/config_adjust_psa_superset_legacy.h +142 -0
  151. package/external/libedhoc/externals/mbedtls/include/mbedtls/config_adjust_ssl.h +76 -0
  152. package/external/libedhoc/externals/mbedtls/include/mbedtls/config_adjust_x509.h +25 -0
  153. package/external/libedhoc/externals/mbedtls/include/mbedtls/config_psa.h +55 -0
  154. package/external/libedhoc/externals/mbedtls/include/mbedtls/constant_time.h +36 -0
  155. package/external/libedhoc/externals/mbedtls/include/mbedtls/ctr_drbg.h +564 -0
  156. package/external/libedhoc/externals/mbedtls/include/mbedtls/debug.h +308 -0
  157. package/external/libedhoc/externals/mbedtls/include/mbedtls/des.h +385 -0
  158. package/external/libedhoc/externals/mbedtls/include/mbedtls/dhm.h +972 -0
  159. package/external/libedhoc/externals/mbedtls/include/mbedtls/ecdh.h +441 -0
  160. package/external/libedhoc/externals/mbedtls/include/mbedtls/ecdsa.h +671 -0
  161. package/external/libedhoc/externals/mbedtls/include/mbedtls/ecjpake.h +298 -0
  162. package/external/libedhoc/externals/mbedtls/include/mbedtls/ecp.h +1362 -0
  163. package/external/libedhoc/externals/mbedtls/include/mbedtls/entropy.h +273 -0
  164. package/external/libedhoc/externals/mbedtls/include/mbedtls/error.h +201 -0
  165. package/external/libedhoc/externals/mbedtls/include/mbedtls/gcm.h +370 -0
  166. package/external/libedhoc/externals/mbedtls/include/mbedtls/hkdf.h +124 -0
  167. package/external/libedhoc/externals/mbedtls/include/mbedtls/hmac_drbg.h +434 -0
  168. package/external/libedhoc/externals/mbedtls/include/mbedtls/lms.h +440 -0
  169. package/external/libedhoc/externals/mbedtls/include/mbedtls/mbedtls_config.h +4116 -0
  170. package/external/libedhoc/externals/mbedtls/include/mbedtls/md.h +640 -0
  171. package/external/libedhoc/externals/mbedtls/include/mbedtls/md5.h +190 -0
  172. package/external/libedhoc/externals/mbedtls/include/mbedtls/memory_buffer_alloc.h +142 -0
  173. package/external/libedhoc/externals/mbedtls/include/mbedtls/net_sockets.h +299 -0
  174. package/external/libedhoc/externals/mbedtls/include/mbedtls/nist_kw.h +166 -0
  175. package/external/libedhoc/externals/mbedtls/include/mbedtls/oid.h +722 -0
  176. package/external/libedhoc/externals/mbedtls/include/mbedtls/pem.h +160 -0
  177. package/external/libedhoc/externals/mbedtls/include/mbedtls/pk.h +1091 -0
  178. package/external/libedhoc/externals/mbedtls/include/mbedtls/pkcs12.h +186 -0
  179. package/external/libedhoc/externals/mbedtls/include/mbedtls/pkcs5.h +197 -0
  180. package/external/libedhoc/externals/mbedtls/include/mbedtls/pkcs7.h +241 -0
  181. package/external/libedhoc/externals/mbedtls/include/mbedtls/platform.h +485 -0
  182. package/external/libedhoc/externals/mbedtls/include/mbedtls/platform_time.h +79 -0
  183. package/external/libedhoc/externals/mbedtls/include/mbedtls/platform_util.h +201 -0
  184. package/external/libedhoc/externals/mbedtls/include/mbedtls/poly1305.h +168 -0
  185. package/external/libedhoc/externals/mbedtls/include/mbedtls/private_access.h +20 -0
  186. package/external/libedhoc/externals/mbedtls/include/mbedtls/psa_util.h +104 -0
  187. package/external/libedhoc/externals/mbedtls/include/mbedtls/ripemd160.h +136 -0
  188. package/external/libedhoc/externals/mbedtls/include/mbedtls/rsa.h +1143 -0
  189. package/external/libedhoc/externals/mbedtls/include/mbedtls/sha1.h +219 -0
  190. package/external/libedhoc/externals/mbedtls/include/mbedtls/sha256.h +198 -0
  191. package/external/libedhoc/externals/mbedtls/include/mbedtls/sha3.h +172 -0
  192. package/external/libedhoc/externals/mbedtls/include/mbedtls/sha512.h +208 -0
  193. package/external/libedhoc/externals/mbedtls/include/mbedtls/ssl.h +5369 -0
  194. package/external/libedhoc/externals/mbedtls/include/mbedtls/ssl_cache.h +187 -0
  195. package/external/libedhoc/externals/mbedtls/include/mbedtls/ssl_ciphersuites.h +616 -0
  196. package/external/libedhoc/externals/mbedtls/include/mbedtls/ssl_cookie.h +106 -0
  197. package/external/libedhoc/externals/mbedtls/include/mbedtls/ssl_ticket.h +181 -0
  198. package/external/libedhoc/externals/mbedtls/include/mbedtls/threading.h +105 -0
  199. package/external/libedhoc/externals/mbedtls/include/mbedtls/timing.h +94 -0
  200. package/external/libedhoc/externals/mbedtls/include/mbedtls/version.h +78 -0
  201. package/external/libedhoc/externals/mbedtls/include/mbedtls/x509.h +550 -0
  202. package/external/libedhoc/externals/mbedtls/include/mbedtls/x509_crl.h +184 -0
  203. package/external/libedhoc/externals/mbedtls/include/mbedtls/x509_crt.h +1196 -0
  204. package/external/libedhoc/externals/mbedtls/include/mbedtls/x509_csr.h +319 -0
  205. package/external/libedhoc/externals/mbedtls/include/psa/build_info.h +20 -0
  206. package/external/libedhoc/externals/mbedtls/include/psa/crypto.h +4685 -0
  207. package/external/libedhoc/externals/mbedtls/include/psa/crypto_adjust_auto_enabled.h +21 -0
  208. package/external/libedhoc/externals/mbedtls/include/psa/crypto_adjust_config_key_pair_types.h +91 -0
  209. package/external/libedhoc/externals/mbedtls/include/psa/crypto_adjust_config_synonyms.h +45 -0
  210. package/external/libedhoc/externals/mbedtls/include/psa/crypto_builtin_composites.h +210 -0
  211. package/external/libedhoc/externals/mbedtls/include/psa/crypto_builtin_key_derivation.h +118 -0
  212. package/external/libedhoc/externals/mbedtls/include/psa/crypto_builtin_primitives.h +114 -0
  213. package/external/libedhoc/externals/mbedtls/include/psa/crypto_compat.h +153 -0
  214. package/external/libedhoc/externals/mbedtls/include/psa/crypto_config.h +153 -0
  215. package/external/libedhoc/externals/mbedtls/include/psa/crypto_driver_common.h +44 -0
  216. package/external/libedhoc/externals/mbedtls/include/psa/crypto_driver_contexts_composites.h +151 -0
  217. package/external/libedhoc/externals/mbedtls/include/psa/crypto_driver_contexts_key_derivation.h +52 -0
  218. package/external/libedhoc/externals/mbedtls/include/psa/crypto_driver_contexts_primitives.h +105 -0
  219. package/external/libedhoc/externals/mbedtls/include/psa/crypto_extra.h +2064 -0
  220. package/external/libedhoc/externals/mbedtls/include/psa/crypto_legacy.h +88 -0
  221. package/external/libedhoc/externals/mbedtls/include/psa/crypto_platform.h +92 -0
  222. package/external/libedhoc/externals/mbedtls/include/psa/crypto_se_driver.h +1383 -0
  223. package/external/libedhoc/externals/mbedtls/include/psa/crypto_sizes.h +1282 -0
  224. package/external/libedhoc/externals/mbedtls/include/psa/crypto_struct.h +460 -0
  225. package/external/libedhoc/externals/mbedtls/include/psa/crypto_types.h +453 -0
  226. package/external/libedhoc/externals/mbedtls/include/psa/crypto_values.h +2756 -0
  227. package/external/libedhoc/externals/mbedtls/library/aes.c +2315 -0
  228. package/external/libedhoc/externals/mbedtls/library/aesce.c +503 -0
  229. package/external/libedhoc/externals/mbedtls/library/aesce.h +121 -0
  230. package/external/libedhoc/externals/mbedtls/library/aesni.c +802 -0
  231. package/external/libedhoc/externals/mbedtls/library/aesni.h +158 -0
  232. package/external/libedhoc/externals/mbedtls/library/alignment.h +509 -0
  233. package/external/libedhoc/externals/mbedtls/library/aria.c +991 -0
  234. package/external/libedhoc/externals/mbedtls/library/asn1parse.c +467 -0
  235. package/external/libedhoc/externals/mbedtls/library/asn1write.c +436 -0
  236. package/external/libedhoc/externals/mbedtls/library/base64.c +299 -0
  237. package/external/libedhoc/externals/mbedtls/library/base64_internal.h +45 -0
  238. package/external/libedhoc/externals/mbedtls/library/bignum.c +2806 -0
  239. package/external/libedhoc/externals/mbedtls/library/bignum_core.c +894 -0
  240. package/external/libedhoc/externals/mbedtls/library/bignum_core.h +763 -0
  241. package/external/libedhoc/externals/mbedtls/library/bignum_mod.c +394 -0
  242. package/external/libedhoc/externals/mbedtls/library/bignum_mod.h +452 -0
  243. package/external/libedhoc/externals/mbedtls/library/bignum_mod_raw.c +276 -0
  244. package/external/libedhoc/externals/mbedtls/library/bignum_mod_raw.h +416 -0
  245. package/external/libedhoc/externals/mbedtls/library/bignum_mod_raw_invasive.h +34 -0
  246. package/external/libedhoc/externals/mbedtls/library/bn_mul.h +1094 -0
  247. package/external/libedhoc/externals/mbedtls/library/camellia.c +1044 -0
  248. package/external/libedhoc/externals/mbedtls/library/ccm.c +712 -0
  249. package/external/libedhoc/externals/mbedtls/library/chacha20.c +497 -0
  250. package/external/libedhoc/externals/mbedtls/library/chachapoly.c +478 -0
  251. package/external/libedhoc/externals/mbedtls/library/check_crypto_config.h +141 -0
  252. package/external/libedhoc/externals/mbedtls/library/cipher.c +1664 -0
  253. package/external/libedhoc/externals/mbedtls/library/cipher_wrap.c +2422 -0
  254. package/external/libedhoc/externals/mbedtls/library/cipher_wrap.h +132 -0
  255. package/external/libedhoc/externals/mbedtls/library/cmac.c +1067 -0
  256. package/external/libedhoc/externals/mbedtls/library/common.h +325 -0
  257. package/external/libedhoc/externals/mbedtls/library/constant_time.c +261 -0
  258. package/external/libedhoc/externals/mbedtls/library/constant_time_impl.h +554 -0
  259. package/external/libedhoc/externals/mbedtls/library/constant_time_internal.h +579 -0
  260. package/external/libedhoc/externals/mbedtls/library/ctr_drbg.c +881 -0
  261. package/external/libedhoc/externals/mbedtls/library/debug.c +465 -0
  262. package/external/libedhoc/externals/mbedtls/library/des.c +1042 -0
  263. package/external/libedhoc/externals/mbedtls/library/dhm.c +712 -0
  264. package/external/libedhoc/externals/mbedtls/library/ecdh.c +685 -0
  265. package/external/libedhoc/externals/mbedtls/library/ecdsa.c +867 -0
  266. package/external/libedhoc/externals/mbedtls/library/ecjpake.c +1216 -0
  267. package/external/libedhoc/externals/mbedtls/library/ecp.c +3631 -0
  268. package/external/libedhoc/externals/mbedtls/library/ecp_curves.c +5467 -0
  269. package/external/libedhoc/externals/mbedtls/library/ecp_curves_new.c +6043 -0
  270. package/external/libedhoc/externals/mbedtls/library/ecp_internal_alt.h +287 -0
  271. package/external/libedhoc/externals/mbedtls/library/ecp_invasive.h +325 -0
  272. package/external/libedhoc/externals/mbedtls/library/entropy.c +676 -0
  273. package/external/libedhoc/externals/mbedtls/library/entropy_poll.c +229 -0
  274. package/external/libedhoc/externals/mbedtls/library/entropy_poll.h +64 -0
  275. package/external/libedhoc/externals/mbedtls/library/error.c +878 -0
  276. package/external/libedhoc/externals/mbedtls/library/gcm.c +1168 -0
  277. package/external/libedhoc/externals/mbedtls/library/hkdf.c +161 -0
  278. package/external/libedhoc/externals/mbedtls/library/hmac_drbg.c +633 -0
  279. package/external/libedhoc/externals/mbedtls/library/lmots.c +821 -0
  280. package/external/libedhoc/externals/mbedtls/library/lmots.h +311 -0
  281. package/external/libedhoc/externals/mbedtls/library/lms.c +779 -0
  282. package/external/libedhoc/externals/mbedtls/library/md.c +1108 -0
  283. package/external/libedhoc/externals/mbedtls/library/md5.c +426 -0
  284. package/external/libedhoc/externals/mbedtls/library/md_psa.h +63 -0
  285. package/external/libedhoc/externals/mbedtls/library/md_wrap.h +46 -0
  286. package/external/libedhoc/externals/mbedtls/library/memory_buffer_alloc.c +745 -0
  287. package/external/libedhoc/externals/mbedtls/library/mps_common.h +181 -0
  288. package/external/libedhoc/externals/mbedtls/library/mps_error.h +89 -0
  289. package/external/libedhoc/externals/mbedtls/library/mps_reader.c +538 -0
  290. package/external/libedhoc/externals/mbedtls/library/mps_reader.h +366 -0
  291. package/external/libedhoc/externals/mbedtls/library/mps_trace.c +112 -0
  292. package/external/libedhoc/externals/mbedtls/library/mps_trace.h +154 -0
  293. package/external/libedhoc/externals/mbedtls/library/net_sockets.c +696 -0
  294. package/external/libedhoc/externals/mbedtls/library/nist_kw.c +725 -0
  295. package/external/libedhoc/externals/mbedtls/library/oid.c +1154 -0
  296. package/external/libedhoc/externals/mbedtls/library/padlock.c +155 -0
  297. package/external/libedhoc/externals/mbedtls/library/padlock.h +111 -0
  298. package/external/libedhoc/externals/mbedtls/library/pem.c +520 -0
  299. package/external/libedhoc/externals/mbedtls/library/pk.c +970 -0
  300. package/external/libedhoc/externals/mbedtls/library/pk_internal.h +118 -0
  301. package/external/libedhoc/externals/mbedtls/library/pk_wrap.c +1834 -0
  302. package/external/libedhoc/externals/mbedtls/library/pk_wrap.h +156 -0
  303. package/external/libedhoc/externals/mbedtls/library/pkcs12.c +447 -0
  304. package/external/libedhoc/externals/mbedtls/library/pkcs5.c +496 -0
  305. package/external/libedhoc/externals/mbedtls/library/pkcs7.c +773 -0
  306. package/external/libedhoc/externals/mbedtls/library/pkparse.c +1845 -0
  307. package/external/libedhoc/externals/mbedtls/library/pkwrite.c +836 -0
  308. package/external/libedhoc/externals/mbedtls/library/pkwrite.h +112 -0
  309. package/external/libedhoc/externals/mbedtls/library/platform.c +402 -0
  310. package/external/libedhoc/externals/mbedtls/library/platform_util.c +285 -0
  311. package/external/libedhoc/externals/mbedtls/library/poly1305.c +492 -0
  312. package/external/libedhoc/externals/mbedtls/library/psa_crypto.c +8432 -0
  313. package/external/libedhoc/externals/mbedtls/library/psa_crypto_aead.c +653 -0
  314. package/external/libedhoc/externals/mbedtls/library/psa_crypto_aead.h +499 -0
  315. package/external/libedhoc/externals/mbedtls/library/psa_crypto_cipher.c +590 -0
  316. package/external/libedhoc/externals/mbedtls/library/psa_crypto_cipher.h +293 -0
  317. package/external/libedhoc/externals/mbedtls/library/psa_crypto_client.c +67 -0
  318. package/external/libedhoc/externals/mbedtls/library/psa_crypto_core.h +838 -0
  319. package/external/libedhoc/externals/mbedtls/library/psa_crypto_core_common.h +52 -0
  320. package/external/libedhoc/externals/mbedtls/library/psa_crypto_driver_wrappers.h +2871 -0
  321. package/external/libedhoc/externals/mbedtls/library/psa_crypto_driver_wrappers_no_static.c +256 -0
  322. package/external/libedhoc/externals/mbedtls/library/psa_crypto_driver_wrappers_no_static.h +31 -0
  323. package/external/libedhoc/externals/mbedtls/library/psa_crypto_ecp.c +561 -0
  324. package/external/libedhoc/externals/mbedtls/library/psa_crypto_ecp.h +267 -0
  325. package/external/libedhoc/externals/mbedtls/library/psa_crypto_ffdh.c +295 -0
  326. package/external/libedhoc/externals/mbedtls/library/psa_crypto_ffdh.h +132 -0
  327. package/external/libedhoc/externals/mbedtls/library/psa_crypto_hash.c +470 -0
  328. package/external/libedhoc/externals/mbedtls/library/psa_crypto_hash.h +211 -0
  329. package/external/libedhoc/externals/mbedtls/library/psa_crypto_invasive.h +70 -0
  330. package/external/libedhoc/externals/mbedtls/library/psa_crypto_its.h +131 -0
  331. package/external/libedhoc/externals/mbedtls/library/psa_crypto_mac.c +496 -0
  332. package/external/libedhoc/externals/mbedtls/library/psa_crypto_mac.h +264 -0
  333. package/external/libedhoc/externals/mbedtls/library/psa_crypto_pake.c +571 -0
  334. package/external/libedhoc/externals/mbedtls/library/psa_crypto_pake.h +159 -0
  335. package/external/libedhoc/externals/mbedtls/library/psa_crypto_random_impl.h +192 -0
  336. package/external/libedhoc/externals/mbedtls/library/psa_crypto_rsa.c +727 -0
  337. package/external/libedhoc/externals/mbedtls/library/psa_crypto_rsa.h +317 -0
  338. package/external/libedhoc/externals/mbedtls/library/psa_crypto_se.c +373 -0
  339. package/external/libedhoc/externals/mbedtls/library/psa_crypto_se.h +185 -0
  340. package/external/libedhoc/externals/mbedtls/library/psa_crypto_slot_management.c +559 -0
  341. package/external/libedhoc/externals/mbedtls/library/psa_crypto_slot_management.h +213 -0
  342. package/external/libedhoc/externals/mbedtls/library/psa_crypto_storage.c +481 -0
  343. package/external/libedhoc/externals/mbedtls/library/psa_crypto_storage.h +384 -0
  344. package/external/libedhoc/externals/mbedtls/library/psa_its_file.c +259 -0
  345. package/external/libedhoc/externals/mbedtls/library/psa_util.c +160 -0
  346. package/external/libedhoc/externals/mbedtls/library/psa_util_internal.h +96 -0
  347. package/external/libedhoc/externals/mbedtls/library/ripemd160.c +490 -0
  348. package/external/libedhoc/externals/mbedtls/library/rsa.c +2640 -0
  349. package/external/libedhoc/externals/mbedtls/library/rsa_alt_helpers.c +447 -0
  350. package/external/libedhoc/externals/mbedtls/library/rsa_alt_helpers.h +208 -0
  351. package/external/libedhoc/externals/mbedtls/library/sha1.c +480 -0
  352. package/external/libedhoc/externals/mbedtls/library/sha256.c +946 -0
  353. package/external/libedhoc/externals/mbedtls/library/sha3.c +626 -0
  354. package/external/libedhoc/externals/mbedtls/library/sha512.c +1111 -0
  355. package/external/libedhoc/externals/mbedtls/library/ssl_cache.c +410 -0
  356. package/external/libedhoc/externals/mbedtls/library/ssl_ciphersuites.c +2050 -0
  357. package/external/libedhoc/externals/mbedtls/library/ssl_client.c +1017 -0
  358. package/external/libedhoc/externals/mbedtls/library/ssl_client.h +22 -0
  359. package/external/libedhoc/externals/mbedtls/library/ssl_cookie.c +380 -0
  360. package/external/libedhoc/externals/mbedtls/library/ssl_debug_helpers.h +78 -0
  361. package/external/libedhoc/externals/mbedtls/library/ssl_debug_helpers_generated.c +234 -0
  362. package/external/libedhoc/externals/mbedtls/library/ssl_misc.h +2847 -0
  363. package/external/libedhoc/externals/mbedtls/library/ssl_msg.c +6155 -0
  364. package/external/libedhoc/externals/mbedtls/library/ssl_ticket.c +540 -0
  365. package/external/libedhoc/externals/mbedtls/library/ssl_tls.c +9577 -0
  366. package/external/libedhoc/externals/mbedtls/library/ssl_tls12_client.c +3607 -0
  367. package/external/libedhoc/externals/mbedtls/library/ssl_tls12_server.c +4403 -0
  368. package/external/libedhoc/externals/mbedtls/library/ssl_tls13_client.c +3046 -0
  369. package/external/libedhoc/externals/mbedtls/library/ssl_tls13_generic.c +1740 -0
  370. package/external/libedhoc/externals/mbedtls/library/ssl_tls13_invasive.h +23 -0
  371. package/external/libedhoc/externals/mbedtls/library/ssl_tls13_keys.c +1897 -0
  372. package/external/libedhoc/externals/mbedtls/library/ssl_tls13_keys.h +651 -0
  373. package/external/libedhoc/externals/mbedtls/library/ssl_tls13_server.c +3146 -0
  374. package/external/libedhoc/externals/mbedtls/library/threading.c +181 -0
  375. package/external/libedhoc/externals/mbedtls/library/timing.c +154 -0
  376. package/external/libedhoc/externals/mbedtls/library/version.c +32 -0
  377. package/external/libedhoc/externals/mbedtls/library/version_features.c +826 -0
  378. package/external/libedhoc/externals/mbedtls/library/x509.c +1776 -0
  379. package/external/libedhoc/externals/mbedtls/library/x509_create.c +557 -0
  380. package/external/libedhoc/externals/mbedtls/library/x509_crl.c +712 -0
  381. package/external/libedhoc/externals/mbedtls/library/x509_crt.c +3292 -0
  382. package/external/libedhoc/externals/mbedtls/library/x509_csr.c +574 -0
  383. package/external/libedhoc/externals/mbedtls/library/x509write.c +174 -0
  384. package/external/libedhoc/externals/mbedtls/library/x509write_crt.c +681 -0
  385. package/external/libedhoc/externals/mbedtls/library/x509write_csr.c +331 -0
  386. package/external/libedhoc/externals/mbedtls/programs/aes/crypt_and_hash.c +573 -0
  387. package/external/libedhoc/externals/mbedtls/programs/cipher/cipher_aead_demo.c +259 -0
  388. package/external/libedhoc/externals/mbedtls/programs/fuzz/common.c +105 -0
  389. package/external/libedhoc/externals/mbedtls/programs/fuzz/common.h +25 -0
  390. package/external/libedhoc/externals/mbedtls/programs/fuzz/fuzz_client.c +195 -0
  391. package/external/libedhoc/externals/mbedtls/programs/fuzz/fuzz_dtlsclient.c +138 -0
  392. package/external/libedhoc/externals/mbedtls/programs/fuzz/fuzz_dtlsserver.c +183 -0
  393. package/external/libedhoc/externals/mbedtls/programs/fuzz/fuzz_pkcs7.c +20 -0
  394. package/external/libedhoc/externals/mbedtls/programs/fuzz/fuzz_privkey.c +106 -0
  395. package/external/libedhoc/externals/mbedtls/programs/fuzz/fuzz_pubkey.c +86 -0
  396. package/external/libedhoc/externals/mbedtls/programs/fuzz/fuzz_server.c +218 -0
  397. package/external/libedhoc/externals/mbedtls/programs/fuzz/fuzz_x509crl.c +41 -0
  398. package/external/libedhoc/externals/mbedtls/programs/fuzz/fuzz_x509crt.c +41 -0
  399. package/external/libedhoc/externals/mbedtls/programs/fuzz/fuzz_x509csr.c +41 -0
  400. package/external/libedhoc/externals/mbedtls/programs/fuzz/onefile.c +69 -0
  401. package/external/libedhoc/externals/mbedtls/programs/hash/generic_sum.c +209 -0
  402. package/external/libedhoc/externals/mbedtls/programs/hash/hello.c +45 -0
  403. package/external/libedhoc/externals/mbedtls/programs/hash/md_hmac_demo.c +136 -0
  404. package/external/libedhoc/externals/mbedtls/programs/pkey/dh_client.c +274 -0
  405. package/external/libedhoc/externals/mbedtls/programs/pkey/dh_genprime.c +161 -0
  406. package/external/libedhoc/externals/mbedtls/programs/pkey/dh_server.c +296 -0
  407. package/external/libedhoc/externals/mbedtls/programs/pkey/ecdh_curve25519.c +189 -0
  408. package/external/libedhoc/externals/mbedtls/programs/pkey/ecdsa.c +217 -0
  409. package/external/libedhoc/externals/mbedtls/programs/pkey/gen_key.c +419 -0
  410. package/external/libedhoc/externals/mbedtls/programs/pkey/key_app.c +316 -0
  411. package/external/libedhoc/externals/mbedtls/programs/pkey/key_app_writer.c +435 -0
  412. package/external/libedhoc/externals/mbedtls/programs/pkey/mpi_demo.c +84 -0
  413. package/external/libedhoc/externals/mbedtls/programs/pkey/pk_decrypt.c +153 -0
  414. package/external/libedhoc/externals/mbedtls/programs/pkey/pk_encrypt.c +154 -0
  415. package/external/libedhoc/externals/mbedtls/programs/pkey/pk_sign.c +155 -0
  416. package/external/libedhoc/externals/mbedtls/programs/pkey/pk_verify.c +128 -0
  417. package/external/libedhoc/externals/mbedtls/programs/pkey/rsa_decrypt.c +172 -0
  418. package/external/libedhoc/externals/mbedtls/programs/pkey/rsa_encrypt.c +149 -0
  419. package/external/libedhoc/externals/mbedtls/programs/pkey/rsa_genkey.c +141 -0
  420. package/external/libedhoc/externals/mbedtls/programs/pkey/rsa_sign.c +155 -0
  421. package/external/libedhoc/externals/mbedtls/programs/pkey/rsa_sign_pss.c +161 -0
  422. package/external/libedhoc/externals/mbedtls/programs/pkey/rsa_verify.c +131 -0
  423. package/external/libedhoc/externals/mbedtls/programs/pkey/rsa_verify_pss.c +136 -0
  424. package/external/libedhoc/externals/mbedtls/programs/psa/aead_demo.c +281 -0
  425. package/external/libedhoc/externals/mbedtls/programs/psa/crypto_examples.c +321 -0
  426. package/external/libedhoc/externals/mbedtls/programs/psa/hmac_demo.c +159 -0
  427. package/external/libedhoc/externals/mbedtls/programs/psa/key_ladder_demo.c +691 -0
  428. package/external/libedhoc/externals/mbedtls/programs/psa/psa_constant_names.c +310 -0
  429. package/external/libedhoc/externals/mbedtls/programs/psa/psa_constant_names_generated.c +474 -0
  430. package/external/libedhoc/externals/mbedtls/programs/random/gen_entropy.c +75 -0
  431. package/external/libedhoc/externals/mbedtls/programs/random/gen_random_ctr_drbg.c +107 -0
  432. package/external/libedhoc/externals/mbedtls/programs/ssl/dtls_client.c +342 -0
  433. package/external/libedhoc/externals/mbedtls/programs/ssl/dtls_server.c +408 -0
  434. package/external/libedhoc/externals/mbedtls/programs/ssl/mini_client.c +274 -0
  435. package/external/libedhoc/externals/mbedtls/programs/ssl/ssl_client1.c +288 -0
  436. package/external/libedhoc/externals/mbedtls/programs/ssl/ssl_client2.c +3118 -0
  437. package/external/libedhoc/externals/mbedtls/programs/ssl/ssl_context_info.c +1009 -0
  438. package/external/libedhoc/externals/mbedtls/programs/ssl/ssl_fork_server.c +381 -0
  439. package/external/libedhoc/externals/mbedtls/programs/ssl/ssl_mail_client.c +804 -0
  440. package/external/libedhoc/externals/mbedtls/programs/ssl/ssl_pthread_server.c +489 -0
  441. package/external/libedhoc/externals/mbedtls/programs/ssl/ssl_server.c +362 -0
  442. package/external/libedhoc/externals/mbedtls/programs/ssl/ssl_server2.c +4268 -0
  443. package/external/libedhoc/externals/mbedtls/programs/ssl/ssl_test_common_source.c +375 -0
  444. package/external/libedhoc/externals/mbedtls/programs/ssl/ssl_test_lib.c +601 -0
  445. package/external/libedhoc/externals/mbedtls/programs/ssl/ssl_test_lib.h +306 -0
  446. package/external/libedhoc/externals/mbedtls/programs/test/benchmark.c +1284 -0
  447. package/external/libedhoc/externals/mbedtls/programs/test/cmake_package/cmake_package.c +27 -0
  448. package/external/libedhoc/externals/mbedtls/programs/test/cmake_package_install/cmake_package_install.c +28 -0
  449. package/external/libedhoc/externals/mbedtls/programs/test/cmake_subproject/cmake_subproject.c +28 -0
  450. package/external/libedhoc/externals/mbedtls/programs/test/dlopen.c +92 -0
  451. package/external/libedhoc/externals/mbedtls/programs/test/query_compile_time_config.c +66 -0
  452. package/external/libedhoc/externals/mbedtls/programs/test/query_config.c +5137 -0
  453. package/external/libedhoc/externals/mbedtls/programs/test/query_config.h +34 -0
  454. package/external/libedhoc/externals/mbedtls/programs/test/query_included_headers.c +29 -0
  455. package/external/libedhoc/externals/mbedtls/programs/test/selftest.c +583 -0
  456. package/external/libedhoc/externals/mbedtls/programs/test/udp_proxy.c +967 -0
  457. package/external/libedhoc/externals/mbedtls/programs/test/zeroize.c +72 -0
  458. package/external/libedhoc/externals/mbedtls/programs/util/pem2der.c +265 -0
  459. package/external/libedhoc/externals/mbedtls/programs/util/strerror.c +61 -0
  460. package/external/libedhoc/externals/mbedtls/programs/wince_main.c +31 -0
  461. package/external/libedhoc/externals/mbedtls/programs/x509/cert_app.c +456 -0
  462. package/external/libedhoc/externals/mbedtls/programs/x509/cert_req.c +509 -0
  463. package/external/libedhoc/externals/mbedtls/programs/x509/cert_write.c +1012 -0
  464. package/external/libedhoc/externals/mbedtls/programs/x509/crl_app.c +132 -0
  465. package/external/libedhoc/externals/mbedtls/programs/x509/load_roots.c +165 -0
  466. package/external/libedhoc/externals/mbedtls/programs/x509/req_app.c +132 -0
  467. package/external/libedhoc/externals/mbedtls/tests/configs/tls13-only.h +31 -0
  468. package/external/libedhoc/externals/mbedtls/tests/configs/user-config-for-test.h +89 -0
  469. package/external/libedhoc/externals/mbedtls/tests/configs/user-config-malloc-0-null.h +22 -0
  470. package/external/libedhoc/externals/mbedtls/tests/configs/user-config-zeroize-memset.h +17 -0
  471. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/aes_alt.h +23 -0
  472. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/aria_alt.h +16 -0
  473. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/camellia_alt.h +16 -0
  474. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/ccm_alt.h +16 -0
  475. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/chacha20_alt.h +16 -0
  476. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/chachapoly_alt.h +18 -0
  477. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/cmac_alt.h +15 -0
  478. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/des_alt.h +22 -0
  479. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/dhm_alt.h +16 -0
  480. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/ecjpake_alt.h +15 -0
  481. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/ecp_alt.h +22 -0
  482. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/gcm_alt.h +16 -0
  483. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/md5_alt.h +16 -0
  484. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/nist_kw_alt.h +15 -0
  485. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/platform_alt.h +16 -0
  486. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/poly1305_alt.h +16 -0
  487. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/ripemd160_alt.h +16 -0
  488. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/rsa_alt.h +16 -0
  489. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/sha1_alt.h +16 -0
  490. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/sha256_alt.h +16 -0
  491. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/sha512_alt.h +16 -0
  492. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/threading_alt.h +14 -0
  493. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/timing_alt.h +19 -0
  494. package/external/libedhoc/externals/mbedtls/tests/include/alt-extra/psa/crypto.h +7 -0
  495. package/external/libedhoc/externals/mbedtls/tests/include/baremetal-override/time.h +6 -0
  496. package/external/libedhoc/externals/mbedtls/tests/include/spe/crypto_spe.h +131 -0
  497. package/external/libedhoc/externals/mbedtls/tests/include/test/arguments.h +26 -0
  498. package/external/libedhoc/externals/mbedtls/tests/include/test/asn1_helpers.h +38 -0
  499. package/external/libedhoc/externals/mbedtls/tests/include/test/bignum_helpers.h +106 -0
  500. package/external/libedhoc/externals/mbedtls/tests/include/test/certs.h +234 -0
  501. package/external/libedhoc/externals/mbedtls/tests/include/test/constant_flow.h +71 -0
  502. package/external/libedhoc/externals/mbedtls/tests/include/test/drivers/aead.h +121 -0
  503. package/external/libedhoc/externals/mbedtls/tests/include/test/drivers/asymmetric_encryption.h +67 -0
  504. package/external/libedhoc/externals/mbedtls/tests/include/test/drivers/cipher.h +130 -0
  505. package/external/libedhoc/externals/mbedtls/tests/include/test/drivers/config_test_driver.h +44 -0
  506. package/external/libedhoc/externals/mbedtls/tests/include/test/drivers/crypto_config_test_driver_extension.h +430 -0
  507. package/external/libedhoc/externals/mbedtls/tests/include/test/drivers/hash.h +64 -0
  508. package/external/libedhoc/externals/mbedtls/tests/include/test/drivers/key_agreement.h +62 -0
  509. package/external/libedhoc/externals/mbedtls/tests/include/test/drivers/key_management.h +123 -0
  510. package/external/libedhoc/externals/mbedtls/tests/include/test/drivers/mac.h +125 -0
  511. package/external/libedhoc/externals/mbedtls/tests/include/test/drivers/pake.h +75 -0
  512. package/external/libedhoc/externals/mbedtls/tests/include/test/drivers/signature.h +112 -0
  513. package/external/libedhoc/externals/mbedtls/tests/include/test/drivers/test_driver.h +32 -0
  514. package/external/libedhoc/externals/mbedtls/tests/include/test/fake_external_rng_for_test.h +40 -0
  515. package/external/libedhoc/externals/mbedtls/tests/include/test/helpers.h +268 -0
  516. package/external/libedhoc/externals/mbedtls/tests/include/test/macros.h +250 -0
  517. package/external/libedhoc/externals/mbedtls/tests/include/test/psa_crypto_helpers.h +398 -0
  518. package/external/libedhoc/externals/mbedtls/tests/include/test/psa_exercise_key.h +223 -0
  519. package/external/libedhoc/externals/mbedtls/tests/include/test/psa_helpers.h +24 -0
  520. package/external/libedhoc/externals/mbedtls/tests/include/test/random.h +91 -0
  521. package/external/libedhoc/externals/mbedtls/tests/include/test/ssl_helpers.h +628 -0
  522. package/external/libedhoc/externals/mbedtls/tests/src/asn1_helpers.c +62 -0
  523. package/external/libedhoc/externals/mbedtls/tests/src/bignum_helpers.c +145 -0
  524. package/external/libedhoc/externals/mbedtls/tests/src/certs.c +480 -0
  525. package/external/libedhoc/externals/mbedtls/tests/src/drivers/hash.c +199 -0
  526. package/external/libedhoc/externals/mbedtls/tests/src/drivers/platform_builtin_keys.c +78 -0
  527. package/external/libedhoc/externals/mbedtls/tests/src/drivers/test_driver_aead.c +462 -0
  528. package/external/libedhoc/externals/mbedtls/tests/src/drivers/test_driver_asymmetric_encryption.c +151 -0
  529. package/external/libedhoc/externals/mbedtls/tests/src/drivers/test_driver_cipher.c +424 -0
  530. package/external/libedhoc/externals/mbedtls/tests/src/drivers/test_driver_key_agreement.c +147 -0
  531. package/external/libedhoc/externals/mbedtls/tests/src/drivers/test_driver_key_management.c +783 -0
  532. package/external/libedhoc/externals/mbedtls/tests/src/drivers/test_driver_mac.c +422 -0
  533. package/external/libedhoc/externals/mbedtls/tests/src/drivers/test_driver_pake.c +202 -0
  534. package/external/libedhoc/externals/mbedtls/tests/src/drivers/test_driver_signature.c +405 -0
  535. package/external/libedhoc/externals/mbedtls/tests/src/fake_external_rng_for_test.c +45 -0
  536. package/external/libedhoc/externals/mbedtls/tests/src/helpers.c +353 -0
  537. package/external/libedhoc/externals/mbedtls/tests/src/psa_crypto_helpers.c +196 -0
  538. package/external/libedhoc/externals/mbedtls/tests/src/psa_exercise_key.c +989 -0
  539. package/external/libedhoc/externals/mbedtls/tests/src/random.c +136 -0
  540. package/external/libedhoc/externals/mbedtls/tests/src/test_certs.h +1226 -0
  541. package/external/libedhoc/externals/mbedtls/tests/src/test_helpers/ssl_helpers.c +2292 -0
  542. package/external/libedhoc/externals/mbedtls/tests/src/threading_helpers.c +210 -0
  543. package/external/libedhoc/externals/zcbor/include/zcbor_common.h +422 -0
  544. package/external/libedhoc/externals/zcbor/include/zcbor_debug.h +69 -0
  545. package/external/libedhoc/externals/zcbor/include/zcbor_decode.h +358 -0
  546. package/external/libedhoc/externals/zcbor/include/zcbor_encode.h +296 -0
  547. package/external/libedhoc/externals/zcbor/include/zcbor_tags.h +94 -0
  548. package/external/libedhoc/externals/zcbor/samples/hello_world/src/main.c +41 -0
  549. package/external/libedhoc/externals/zcbor/samples/pet/include/pet_decode.h +39 -0
  550. package/external/libedhoc/externals/zcbor/samples/pet/include/pet_encode.h +39 -0
  551. package/external/libedhoc/externals/zcbor/samples/pet/include/pet_types.h +47 -0
  552. package/external/libedhoc/externals/zcbor/samples/pet/src/main.c +128 -0
  553. package/external/libedhoc/externals/zcbor/samples/pet/src/pet_decode.c +69 -0
  554. package/external/libedhoc/externals/zcbor/samples/pet/src/pet_encode.c +70 -0
  555. package/external/libedhoc/externals/zcbor/src/zcbor_common.c +257 -0
  556. package/external/libedhoc/externals/zcbor/src/zcbor_decode.c +1107 -0
  557. package/external/libedhoc/externals/zcbor/src/zcbor_encode.c +722 -0
  558. package/external/libedhoc/externals/zcbor/tests/decode/test1_suit_old_formats/src/main.c +368 -0
  559. package/external/libedhoc/externals/zcbor/tests/decode/test2_suit/src/main.c +189 -0
  560. package/external/libedhoc/externals/zcbor/tests/decode/test3_simple/src/main.c +529 -0
  561. package/external/libedhoc/externals/zcbor/tests/decode/test5_corner_cases/src/main.c +2010 -0
  562. package/external/libedhoc/externals/zcbor/tests/decode/test7_suit9_simple/src/main.c +134 -0
  563. package/external/libedhoc/externals/zcbor/tests/decode/test8_suit12/src/main.c +863 -0
  564. package/external/libedhoc/externals/zcbor/tests/decode/test9_manifest14/src/main.c +364 -0
  565. package/external/libedhoc/externals/zcbor/tests/encode/test1_suit/src/main.c +453 -0
  566. package/external/libedhoc/externals/zcbor/tests/encode/test2_simple/src/main.c +123 -0
  567. package/external/libedhoc/externals/zcbor/tests/encode/test3_corner_cases/src/main.c +1527 -0
  568. package/external/libedhoc/externals/zcbor/tests/encode/test4_senml/src/main.c +66 -0
  569. package/external/libedhoc/externals/zcbor/tests/fuzz/fuzz_manifest12.c +136 -0
  570. package/external/libedhoc/externals/zcbor/tests/fuzz/fuzz_pet.c +12 -0
  571. package/external/libedhoc/externals/zcbor/tests/fuzz/main_entry.c +60 -0
  572. package/external/libedhoc/externals/zcbor/tests/fuzz/main_entry.h +5 -0
  573. package/external/libedhoc/externals/zcbor/tests/unit/test1_unit_tests/src/main.c +1044 -0
  574. package/external/libedhoc/externals/zcbor/tests/unit/test3_float16/src/main.c +202 -0
  575. package/external/libedhoc/include/edhoc.h +393 -0
  576. package/external/libedhoc/include/edhoc_context.h +318 -0
  577. package/external/libedhoc/include/edhoc_credentials.h +217 -0
  578. package/external/libedhoc/include/edhoc_crypto.h +331 -0
  579. package/external/libedhoc/include/edhoc_ead.h +99 -0
  580. package/external/libedhoc/include/edhoc_macros.h +51 -0
  581. package/external/libedhoc/include/edhoc_values.h +181 -0
  582. package/external/libedhoc/library/edhoc.c +219 -0
  583. package/external/libedhoc/library/edhoc_exporter.c +543 -0
  584. package/external/libedhoc/library/edhoc_message_1.c +439 -0
  585. package/external/libedhoc/library/edhoc_message_2.c +2994 -0
  586. package/external/libedhoc/library/edhoc_message_3.c +2658 -0
  587. package/external/libedhoc/library/edhoc_message_4.c +826 -0
  588. package/external/libedhoc/library/edhoc_message_error.c +238 -0
  589. package/external/libedhoc/tests/include/cipher_suite_negotiation/test_edhoc_cipher_suite_negotiation.h +37 -0
  590. package/external/libedhoc/tests/include/cipher_suites/cipher_suite_0.h +134 -0
  591. package/external/libedhoc/tests/include/cipher_suites/cipher_suite_2.h +140 -0
  592. package/external/libedhoc/tests/include/cipher_suites/test_cipher_suite_0.h +48 -0
  593. package/external/libedhoc/tests/include/cipher_suites/test_cipher_suite_2.h +48 -0
  594. package/external/libedhoc/tests/include/edhoc_trace_1/authentication_credentials_1.h +60 -0
  595. package/external/libedhoc/tests/include/edhoc_trace_1/test_edhoc_handshake_1.h +208 -0
  596. package/external/libedhoc/tests/include/edhoc_trace_1/test_edhoc_handshake_ead_1.h +59 -0
  597. package/external/libedhoc/tests/include/edhoc_trace_1/test_vector_1.h +738 -0
  598. package/external/libedhoc/tests/include/edhoc_trace_2/authentication_credentials_2.h +60 -0
  599. package/external/libedhoc/tests/include/edhoc_trace_2/test_edhoc_handshake_2.h +199 -0
  600. package/external/libedhoc/tests/include/edhoc_trace_2/test_vector_2.h +525 -0
  601. package/external/libedhoc/tests/include/error_message/test_edhoc_error_message.h +48 -0
  602. package/external/libedhoc/tests/include/x509_chain_cs_0/authentication_credentials_x5chain_cs_0.h +92 -0
  603. package/external/libedhoc/tests/include/x509_chain_cs_0/test_edhoc_handshake_x5chain_cs_0.h +96 -0
  604. package/external/libedhoc/tests/include/x509_chain_cs_0/test_vector_x5chain_cs_0.h +140 -0
  605. package/external/libedhoc/tests/include/x509_chain_cs_2/authentication_credentials_x5chain_cs_2.h +58 -0
  606. package/external/libedhoc/tests/include/x509_chain_cs_2/test_edhoc_handshake_x5chain_cs_2.h +56 -0
  607. package/external/libedhoc/tests/include/x509_chain_cs_2/test_edhoc_handshake_x5chain_cs_2_ead.h +57 -0
  608. package/external/libedhoc/tests/include/x509_chain_cs_2/test_vector_x5chain_cs_2.h +169 -0
  609. package/external/libedhoc/tests/include/x509_chain_cs_2_static_dh/authentication_credentials_x5chain_cs_2_static_dh.h +59 -0
  610. package/external/libedhoc/tests/include/x509_chain_cs_2_static_dh/test_edhoc_handshake_x5chain_cs_2_static_dh_ead.h +57 -0
  611. package/external/libedhoc/tests/include/x509_chain_cs_2_static_dh/test_vector_x5chain_cs_2_static_dh.h +163 -0
  612. package/external/libedhoc/tests/include/x509_hash_cs_2/authentication_credentials_x5t_cs_2.h +60 -0
  613. package/external/libedhoc/tests/include/x509_hash_cs_2/test_edhoc_handshake_x5t_cs_2_ead.h +57 -0
  614. package/external/libedhoc/tests/include/x509_hash_cs_2/test_vector_x5t_cs_2.h +181 -0
  615. package/external/libedhoc/tests/src/cipher_suite_negotiation/test_edhoc_cipher_suite_negotiation.c +544 -0
  616. package/external/libedhoc/tests/src/cipher_suites/cipher_suite_0.c +447 -0
  617. package/external/libedhoc/tests/src/cipher_suites/cipher_suite_2.c +600 -0
  618. package/external/libedhoc/tests/src/cipher_suites/test_cipher_suite_0.c +475 -0
  619. package/external/libedhoc/tests/src/cipher_suites/test_cipher_suite_2.c +473 -0
  620. package/external/libedhoc/tests/src/edhoc_trace_1/authentication_credentials_1.c +252 -0
  621. package/external/libedhoc/tests/src/edhoc_trace_1/test_edhoc_handshake_1.c +1829 -0
  622. package/external/libedhoc/tests/src/edhoc_trace_1/test_edhoc_handshake_ead_1.c +1247 -0
  623. package/external/libedhoc/tests/src/edhoc_trace_2/authentication_credentials_2.c +170 -0
  624. package/external/libedhoc/tests/src/edhoc_trace_2/test_edhoc_handshake_2.c +1783 -0
  625. package/external/libedhoc/tests/src/error_message/test_edhoc_error_message.c +226 -0
  626. package/external/libedhoc/tests/src/tests.c +228 -0
  627. package/external/libedhoc/tests/src/x509_chain_cs_0/authentication_credentials_x5chain_cs_0.c +332 -0
  628. package/external/libedhoc/tests/src/x509_chain_cs_0/test_edhoc_handshake_x5chain_cs_0.c +936 -0
  629. package/external/libedhoc/tests/src/x509_chain_cs_2/authentication_credentials_x5chain_cs_2.c +166 -0
  630. package/external/libedhoc/tests/src/x509_chain_cs_2/test_edhoc_handshake_x5chain_cs_2.c +587 -0
  631. package/external/libedhoc/tests/src/x509_chain_cs_2/test_edhoc_handshake_x5chain_cs_2_ead.c +917 -0
  632. package/external/libedhoc/tests/src/x509_chain_cs_2_static_dh/authentication_credentials_x5chain_cs_2_static_dh.c +186 -0
  633. package/external/libedhoc/tests/src/x509_chain_cs_2_static_dh/test_edhoc_handshake_x5chain_cs_2_static_dh_ead.c +743 -0
  634. package/external/libedhoc/tests/src/x509_hash_cs_2/authentication_credentials_x5t_cs_2.c +261 -0
  635. package/external/libedhoc/tests/src/x509_hash_cs_2/test_edhoc_handshake_x5t_cs_2_ead.c +854 -0
  636. package/include/EdhocComposeAsyncWorker.h +61 -0
  637. package/include/EdhocCredentialManager.h +100 -0
  638. package/include/EdhocCryptoManager.h +504 -0
  639. package/include/EdhocEadManager.h +151 -0
  640. package/include/EdhocExportAsyncWorker.h +71 -0
  641. package/include/EdhocProcessAsyncWorker.h +76 -0
  642. package/include/LibEDHOC.h +304 -0
  643. package/include/Suites.h +27 -0
  644. package/include/UserContext.h +79 -0
  645. package/include/Utils.h +110 -0
  646. package/package.json +1 -1
  647. package/prebuilds/darwin-arm64/edhoc.node +0 -0
  648. package/prebuilds/win32-ia32/edhoc.node +0 -0
  649. package/prebuilds/win32-x64/edhoc.node +0 -0
  650. package/src/EdhocComposeAsyncWorker.cpp +88 -0
  651. package/src/EdhocCredentialManager.cpp +360 -0
  652. package/src/EdhocCryptoManager.cpp +967 -0
  653. package/src/EdhocEadManager.cpp +156 -0
  654. package/src/EdhocExportAsyncWorker.cpp +82 -0
  655. package/src/EdhocProcessAsyncWorker.cpp +74 -0
  656. package/src/LibEDHOC.cpp +369 -0
  657. package/src/Suites.cpp +153 -0
  658. package/src/Utils.cpp +115 -0
  659. /package/prebuilds/{darwin-x64+arm64 → darwin-x64}/edhoc.node +0 -0
@@ -0,0 +1,1183 @@
1
+ /**
2
+ * \file cipher.h
3
+ *
4
+ * \brief This file contains an abstraction interface for use with the cipher
5
+ * primitives provided by the library. It provides a common interface to all of
6
+ * the available cipher operations.
7
+ *
8
+ * \author Adriaan de Jong <dejong@fox-it.com>
9
+ */
10
+ /*
11
+ * Copyright The Mbed TLS Contributors
12
+ * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
13
+ */
14
+
15
+ #ifndef MBEDTLS_CIPHER_H
16
+ #define MBEDTLS_CIPHER_H
17
+ #include "mbedtls/private_access.h"
18
+
19
+ #include "mbedtls/build_info.h"
20
+
21
+ #include <stddef.h>
22
+ #include "mbedtls/platform_util.h"
23
+
24
+ #if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CCM_C) || defined(MBEDTLS_CHACHAPOLY_C)
25
+ #define MBEDTLS_CIPHER_MODE_AEAD
26
+ #endif
27
+
28
+ #if defined(MBEDTLS_CIPHER_MODE_CBC)
29
+ #define MBEDTLS_CIPHER_MODE_WITH_PADDING
30
+ #endif
31
+
32
+ #if defined(MBEDTLS_CIPHER_NULL_CIPHER) || \
33
+ defined(MBEDTLS_CHACHA20_C)
34
+ #define MBEDTLS_CIPHER_MODE_STREAM
35
+ #endif
36
+
37
+ /** The selected feature is not available. */
38
+ #define MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE -0x6080
39
+ /** Bad input parameters. */
40
+ #define MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA -0x6100
41
+ /** Failed to allocate memory. */
42
+ #define MBEDTLS_ERR_CIPHER_ALLOC_FAILED -0x6180
43
+ /** Input data contains invalid padding and is rejected. */
44
+ #define MBEDTLS_ERR_CIPHER_INVALID_PADDING -0x6200
45
+ /** Decryption of block requires a full block. */
46
+ #define MBEDTLS_ERR_CIPHER_FULL_BLOCK_EXPECTED -0x6280
47
+ /** Authentication failed (for AEAD modes). */
48
+ #define MBEDTLS_ERR_CIPHER_AUTH_FAILED -0x6300
49
+ /** The context is invalid. For example, because it was freed. */
50
+ #define MBEDTLS_ERR_CIPHER_INVALID_CONTEXT -0x6380
51
+
52
+ #define MBEDTLS_CIPHER_VARIABLE_IV_LEN 0x01 /**< Cipher accepts IVs of variable length. */
53
+ #define MBEDTLS_CIPHER_VARIABLE_KEY_LEN 0x02 /**< Cipher accepts keys of variable length. */
54
+
55
+ #ifdef __cplusplus
56
+ extern "C" {
57
+ #endif
58
+
59
+ /**
60
+ * \brief Supported cipher types.
61
+ *
62
+ * \warning DES/3DES are considered weak ciphers and their use
63
+ * constitutes a security risk. We recommend considering stronger
64
+ * ciphers instead.
65
+ */
66
+ typedef enum {
67
+ MBEDTLS_CIPHER_ID_NONE = 0, /**< Placeholder to mark the end of cipher ID lists. */
68
+ MBEDTLS_CIPHER_ID_NULL, /**< The identity cipher, treated as a stream cipher. */
69
+ MBEDTLS_CIPHER_ID_AES, /**< The AES cipher. */
70
+ MBEDTLS_CIPHER_ID_DES, /**< The DES cipher. \warning DES is considered weak. */
71
+ MBEDTLS_CIPHER_ID_3DES, /**< The Triple DES cipher. \warning 3DES is considered weak. */
72
+ MBEDTLS_CIPHER_ID_CAMELLIA, /**< The Camellia cipher. */
73
+ MBEDTLS_CIPHER_ID_ARIA, /**< The Aria cipher. */
74
+ MBEDTLS_CIPHER_ID_CHACHA20, /**< The ChaCha20 cipher. */
75
+ } mbedtls_cipher_id_t;
76
+
77
+ /**
78
+ * \brief Supported {cipher type, cipher mode} pairs.
79
+ *
80
+ * \warning DES/3DES are considered weak ciphers and their use
81
+ * constitutes a security risk. We recommend considering stronger
82
+ * ciphers instead.
83
+ */
84
+ typedef enum {
85
+ MBEDTLS_CIPHER_NONE = 0, /**< Placeholder to mark the end of cipher-pair lists. */
86
+ MBEDTLS_CIPHER_NULL, /**< The identity stream cipher. */
87
+ MBEDTLS_CIPHER_AES_128_ECB, /**< AES cipher with 128-bit ECB mode. */
88
+ MBEDTLS_CIPHER_AES_192_ECB, /**< AES cipher with 192-bit ECB mode. */
89
+ MBEDTLS_CIPHER_AES_256_ECB, /**< AES cipher with 256-bit ECB mode. */
90
+ MBEDTLS_CIPHER_AES_128_CBC, /**< AES cipher with 128-bit CBC mode. */
91
+ MBEDTLS_CIPHER_AES_192_CBC, /**< AES cipher with 192-bit CBC mode. */
92
+ MBEDTLS_CIPHER_AES_256_CBC, /**< AES cipher with 256-bit CBC mode. */
93
+ MBEDTLS_CIPHER_AES_128_CFB128, /**< AES cipher with 128-bit CFB128 mode. */
94
+ MBEDTLS_CIPHER_AES_192_CFB128, /**< AES cipher with 192-bit CFB128 mode. */
95
+ MBEDTLS_CIPHER_AES_256_CFB128, /**< AES cipher with 256-bit CFB128 mode. */
96
+ MBEDTLS_CIPHER_AES_128_CTR, /**< AES cipher with 128-bit CTR mode. */
97
+ MBEDTLS_CIPHER_AES_192_CTR, /**< AES cipher with 192-bit CTR mode. */
98
+ MBEDTLS_CIPHER_AES_256_CTR, /**< AES cipher with 256-bit CTR mode. */
99
+ MBEDTLS_CIPHER_AES_128_GCM, /**< AES cipher with 128-bit GCM mode. */
100
+ MBEDTLS_CIPHER_AES_192_GCM, /**< AES cipher with 192-bit GCM mode. */
101
+ MBEDTLS_CIPHER_AES_256_GCM, /**< AES cipher with 256-bit GCM mode. */
102
+ MBEDTLS_CIPHER_CAMELLIA_128_ECB, /**< Camellia cipher with 128-bit ECB mode. */
103
+ MBEDTLS_CIPHER_CAMELLIA_192_ECB, /**< Camellia cipher with 192-bit ECB mode. */
104
+ MBEDTLS_CIPHER_CAMELLIA_256_ECB, /**< Camellia cipher with 256-bit ECB mode. */
105
+ MBEDTLS_CIPHER_CAMELLIA_128_CBC, /**< Camellia cipher with 128-bit CBC mode. */
106
+ MBEDTLS_CIPHER_CAMELLIA_192_CBC, /**< Camellia cipher with 192-bit CBC mode. */
107
+ MBEDTLS_CIPHER_CAMELLIA_256_CBC, /**< Camellia cipher with 256-bit CBC mode. */
108
+ MBEDTLS_CIPHER_CAMELLIA_128_CFB128, /**< Camellia cipher with 128-bit CFB128 mode. */
109
+ MBEDTLS_CIPHER_CAMELLIA_192_CFB128, /**< Camellia cipher with 192-bit CFB128 mode. */
110
+ MBEDTLS_CIPHER_CAMELLIA_256_CFB128, /**< Camellia cipher with 256-bit CFB128 mode. */
111
+ MBEDTLS_CIPHER_CAMELLIA_128_CTR, /**< Camellia cipher with 128-bit CTR mode. */
112
+ MBEDTLS_CIPHER_CAMELLIA_192_CTR, /**< Camellia cipher with 192-bit CTR mode. */
113
+ MBEDTLS_CIPHER_CAMELLIA_256_CTR, /**< Camellia cipher with 256-bit CTR mode. */
114
+ MBEDTLS_CIPHER_CAMELLIA_128_GCM, /**< Camellia cipher with 128-bit GCM mode. */
115
+ MBEDTLS_CIPHER_CAMELLIA_192_GCM, /**< Camellia cipher with 192-bit GCM mode. */
116
+ MBEDTLS_CIPHER_CAMELLIA_256_GCM, /**< Camellia cipher with 256-bit GCM mode. */
117
+ MBEDTLS_CIPHER_DES_ECB, /**< DES cipher with ECB mode. \warning DES is considered weak. */
118
+ MBEDTLS_CIPHER_DES_CBC, /**< DES cipher with CBC mode. \warning DES is considered weak. */
119
+ MBEDTLS_CIPHER_DES_EDE_ECB, /**< DES cipher with EDE ECB mode. \warning 3DES is considered weak. */
120
+ MBEDTLS_CIPHER_DES_EDE_CBC, /**< DES cipher with EDE CBC mode. \warning 3DES is considered weak. */
121
+ MBEDTLS_CIPHER_DES_EDE3_ECB, /**< DES cipher with EDE3 ECB mode. \warning 3DES is considered weak. */
122
+ MBEDTLS_CIPHER_DES_EDE3_CBC, /**< DES cipher with EDE3 CBC mode. \warning 3DES is considered weak. */
123
+ MBEDTLS_CIPHER_AES_128_CCM, /**< AES cipher with 128-bit CCM mode. */
124
+ MBEDTLS_CIPHER_AES_192_CCM, /**< AES cipher with 192-bit CCM mode. */
125
+ MBEDTLS_CIPHER_AES_256_CCM, /**< AES cipher with 256-bit CCM mode. */
126
+ MBEDTLS_CIPHER_AES_128_CCM_STAR_NO_TAG, /**< AES cipher with 128-bit CCM_STAR_NO_TAG mode. */
127
+ MBEDTLS_CIPHER_AES_192_CCM_STAR_NO_TAG, /**< AES cipher with 192-bit CCM_STAR_NO_TAG mode. */
128
+ MBEDTLS_CIPHER_AES_256_CCM_STAR_NO_TAG, /**< AES cipher with 256-bit CCM_STAR_NO_TAG mode. */
129
+ MBEDTLS_CIPHER_CAMELLIA_128_CCM, /**< Camellia cipher with 128-bit CCM mode. */
130
+ MBEDTLS_CIPHER_CAMELLIA_192_CCM, /**< Camellia cipher with 192-bit CCM mode. */
131
+ MBEDTLS_CIPHER_CAMELLIA_256_CCM, /**< Camellia cipher with 256-bit CCM mode. */
132
+ MBEDTLS_CIPHER_CAMELLIA_128_CCM_STAR_NO_TAG, /**< Camellia cipher with 128-bit CCM_STAR_NO_TAG mode. */
133
+ MBEDTLS_CIPHER_CAMELLIA_192_CCM_STAR_NO_TAG, /**< Camellia cipher with 192-bit CCM_STAR_NO_TAG mode. */
134
+ MBEDTLS_CIPHER_CAMELLIA_256_CCM_STAR_NO_TAG, /**< Camellia cipher with 256-bit CCM_STAR_NO_TAG mode. */
135
+ MBEDTLS_CIPHER_ARIA_128_ECB, /**< Aria cipher with 128-bit key and ECB mode. */
136
+ MBEDTLS_CIPHER_ARIA_192_ECB, /**< Aria cipher with 192-bit key and ECB mode. */
137
+ MBEDTLS_CIPHER_ARIA_256_ECB, /**< Aria cipher with 256-bit key and ECB mode. */
138
+ MBEDTLS_CIPHER_ARIA_128_CBC, /**< Aria cipher with 128-bit key and CBC mode. */
139
+ MBEDTLS_CIPHER_ARIA_192_CBC, /**< Aria cipher with 192-bit key and CBC mode. */
140
+ MBEDTLS_CIPHER_ARIA_256_CBC, /**< Aria cipher with 256-bit key and CBC mode. */
141
+ MBEDTLS_CIPHER_ARIA_128_CFB128, /**< Aria cipher with 128-bit key and CFB-128 mode. */
142
+ MBEDTLS_CIPHER_ARIA_192_CFB128, /**< Aria cipher with 192-bit key and CFB-128 mode. */
143
+ MBEDTLS_CIPHER_ARIA_256_CFB128, /**< Aria cipher with 256-bit key and CFB-128 mode. */
144
+ MBEDTLS_CIPHER_ARIA_128_CTR, /**< Aria cipher with 128-bit key and CTR mode. */
145
+ MBEDTLS_CIPHER_ARIA_192_CTR, /**< Aria cipher with 192-bit key and CTR mode. */
146
+ MBEDTLS_CIPHER_ARIA_256_CTR, /**< Aria cipher with 256-bit key and CTR mode. */
147
+ MBEDTLS_CIPHER_ARIA_128_GCM, /**< Aria cipher with 128-bit key and GCM mode. */
148
+ MBEDTLS_CIPHER_ARIA_192_GCM, /**< Aria cipher with 192-bit key and GCM mode. */
149
+ MBEDTLS_CIPHER_ARIA_256_GCM, /**< Aria cipher with 256-bit key and GCM mode. */
150
+ MBEDTLS_CIPHER_ARIA_128_CCM, /**< Aria cipher with 128-bit key and CCM mode. */
151
+ MBEDTLS_CIPHER_ARIA_192_CCM, /**< Aria cipher with 192-bit key and CCM mode. */
152
+ MBEDTLS_CIPHER_ARIA_256_CCM, /**< Aria cipher with 256-bit key and CCM mode. */
153
+ MBEDTLS_CIPHER_ARIA_128_CCM_STAR_NO_TAG, /**< Aria cipher with 128-bit key and CCM_STAR_NO_TAG mode. */
154
+ MBEDTLS_CIPHER_ARIA_192_CCM_STAR_NO_TAG, /**< Aria cipher with 192-bit key and CCM_STAR_NO_TAG mode. */
155
+ MBEDTLS_CIPHER_ARIA_256_CCM_STAR_NO_TAG, /**< Aria cipher with 256-bit key and CCM_STAR_NO_TAG mode. */
156
+ MBEDTLS_CIPHER_AES_128_OFB, /**< AES 128-bit cipher in OFB mode. */
157
+ MBEDTLS_CIPHER_AES_192_OFB, /**< AES 192-bit cipher in OFB mode. */
158
+ MBEDTLS_CIPHER_AES_256_OFB, /**< AES 256-bit cipher in OFB mode. */
159
+ MBEDTLS_CIPHER_AES_128_XTS, /**< AES 128-bit cipher in XTS block mode. */
160
+ MBEDTLS_CIPHER_AES_256_XTS, /**< AES 256-bit cipher in XTS block mode. */
161
+ MBEDTLS_CIPHER_CHACHA20, /**< ChaCha20 stream cipher. */
162
+ MBEDTLS_CIPHER_CHACHA20_POLY1305, /**< ChaCha20-Poly1305 AEAD cipher. */
163
+ MBEDTLS_CIPHER_AES_128_KW, /**< AES cipher with 128-bit NIST KW mode. */
164
+ MBEDTLS_CIPHER_AES_192_KW, /**< AES cipher with 192-bit NIST KW mode. */
165
+ MBEDTLS_CIPHER_AES_256_KW, /**< AES cipher with 256-bit NIST KW mode. */
166
+ MBEDTLS_CIPHER_AES_128_KWP, /**< AES cipher with 128-bit NIST KWP mode. */
167
+ MBEDTLS_CIPHER_AES_192_KWP, /**< AES cipher with 192-bit NIST KWP mode. */
168
+ MBEDTLS_CIPHER_AES_256_KWP, /**< AES cipher with 256-bit NIST KWP mode. */
169
+ } mbedtls_cipher_type_t;
170
+
171
+ /** Supported cipher modes. */
172
+ typedef enum {
173
+ MBEDTLS_MODE_NONE = 0, /**< None. */
174
+ MBEDTLS_MODE_ECB, /**< The ECB cipher mode. */
175
+ MBEDTLS_MODE_CBC, /**< The CBC cipher mode. */
176
+ MBEDTLS_MODE_CFB, /**< The CFB cipher mode. */
177
+ MBEDTLS_MODE_OFB, /**< The OFB cipher mode. */
178
+ MBEDTLS_MODE_CTR, /**< The CTR cipher mode. */
179
+ MBEDTLS_MODE_GCM, /**< The GCM cipher mode. */
180
+ MBEDTLS_MODE_STREAM, /**< The stream cipher mode. */
181
+ MBEDTLS_MODE_CCM, /**< The CCM cipher mode. */
182
+ MBEDTLS_MODE_CCM_STAR_NO_TAG, /**< The CCM*-no-tag cipher mode. */
183
+ MBEDTLS_MODE_XTS, /**< The XTS cipher mode. */
184
+ MBEDTLS_MODE_CHACHAPOLY, /**< The ChaCha-Poly cipher mode. */
185
+ MBEDTLS_MODE_KW, /**< The SP800-38F KW mode */
186
+ MBEDTLS_MODE_KWP, /**< The SP800-38F KWP mode */
187
+ } mbedtls_cipher_mode_t;
188
+
189
+ /** Supported cipher padding types. */
190
+ typedef enum {
191
+ MBEDTLS_PADDING_PKCS7 = 0, /**< PKCS7 padding (default). */
192
+ MBEDTLS_PADDING_ONE_AND_ZEROS, /**< ISO/IEC 7816-4 padding. */
193
+ MBEDTLS_PADDING_ZEROS_AND_LEN, /**< ANSI X.923 padding. */
194
+ MBEDTLS_PADDING_ZEROS, /**< Zero padding (not reversible). */
195
+ MBEDTLS_PADDING_NONE, /**< Never pad (full blocks only). */
196
+ } mbedtls_cipher_padding_t;
197
+
198
+ /** Type of operation. */
199
+ typedef enum {
200
+ MBEDTLS_OPERATION_NONE = -1,
201
+ MBEDTLS_DECRYPT = 0,
202
+ MBEDTLS_ENCRYPT,
203
+ } mbedtls_operation_t;
204
+
205
+ enum {
206
+ /** Undefined key length. */
207
+ MBEDTLS_KEY_LENGTH_NONE = 0,
208
+ /** Key length, in bits (including parity), for DES keys. \warning DES is considered weak. */
209
+ MBEDTLS_KEY_LENGTH_DES = 64,
210
+ /** Key length in bits, including parity, for DES in two-key EDE. \warning 3DES is considered weak. */
211
+ MBEDTLS_KEY_LENGTH_DES_EDE = 128,
212
+ /** Key length in bits, including parity, for DES in three-key EDE. \warning 3DES is considered weak. */
213
+ MBEDTLS_KEY_LENGTH_DES_EDE3 = 192,
214
+ };
215
+
216
+ /** Maximum length of any IV, in Bytes. */
217
+ /* This should ideally be derived automatically from list of ciphers.
218
+ * This should be kept in sync with MBEDTLS_SSL_MAX_IV_LENGTH defined
219
+ * in library/ssl_misc.h. */
220
+ #define MBEDTLS_MAX_IV_LENGTH 16
221
+
222
+ /** Maximum block size of any cipher, in Bytes. */
223
+ /* This should ideally be derived automatically from list of ciphers.
224
+ * This should be kept in sync with MBEDTLS_SSL_MAX_BLOCK_LENGTH defined
225
+ * in library/ssl_misc.h. */
226
+ #define MBEDTLS_MAX_BLOCK_LENGTH 16
227
+
228
+ /** Maximum key length, in Bytes. */
229
+ /* This should ideally be derived automatically from list of ciphers.
230
+ * For now, only check whether XTS is enabled which uses 64 Byte keys,
231
+ * and use 32 Bytes as an upper bound for the maximum key length otherwise.
232
+ * This should be kept in sync with MBEDTLS_SSL_MAX_BLOCK_LENGTH defined
233
+ * in library/ssl_misc.h, which however deliberately ignores the case of XTS
234
+ * since the latter isn't used in SSL/TLS. */
235
+ #if defined(MBEDTLS_CIPHER_MODE_XTS)
236
+ #define MBEDTLS_MAX_KEY_LENGTH 64
237
+ #else
238
+ #define MBEDTLS_MAX_KEY_LENGTH 32
239
+ #endif /* MBEDTLS_CIPHER_MODE_XTS */
240
+
241
+ /**
242
+ * Base cipher information (opaque struct).
243
+ */
244
+ typedef struct mbedtls_cipher_base_t mbedtls_cipher_base_t;
245
+
246
+ /**
247
+ * CMAC context (opaque struct).
248
+ */
249
+ typedef struct mbedtls_cmac_context_t mbedtls_cmac_context_t;
250
+
251
+ /**
252
+ * Cipher information. Allows calling cipher functions
253
+ * in a generic way.
254
+ *
255
+ * \note The library does not support custom cipher info structures,
256
+ * only built-in structures returned by the functions
257
+ * mbedtls_cipher_info_from_string(),
258
+ * mbedtls_cipher_info_from_type(),
259
+ * mbedtls_cipher_info_from_values(),
260
+ * mbedtls_cipher_info_from_psa().
261
+ *
262
+ * \note Some fields store a value that has been right-shifted to save
263
+ * code-size, so should not be used directly. The accessor
264
+ * functions adjust for this and return the "natural" value.
265
+ */
266
+ typedef struct mbedtls_cipher_info_t {
267
+ /** Name of the cipher. */
268
+ const char *MBEDTLS_PRIVATE(name);
269
+
270
+ /** The block size, in bytes. */
271
+ unsigned int MBEDTLS_PRIVATE(block_size) : 5;
272
+
273
+ /** IV or nonce size, in bytes (right shifted by #MBEDTLS_IV_SIZE_SHIFT).
274
+ * For ciphers that accept variable IV sizes,
275
+ * this is the recommended size.
276
+ */
277
+ unsigned int MBEDTLS_PRIVATE(iv_size) : 3;
278
+
279
+ /** The cipher key length, in bits (right shifted by #MBEDTLS_KEY_BITLEN_SHIFT).
280
+ * This is the default length for variable sized ciphers.
281
+ * Includes parity bits for ciphers like DES.
282
+ */
283
+ unsigned int MBEDTLS_PRIVATE(key_bitlen) : 4;
284
+
285
+ /** The cipher mode (as per mbedtls_cipher_mode_t).
286
+ * For example, MBEDTLS_MODE_CBC.
287
+ */
288
+ unsigned int MBEDTLS_PRIVATE(mode) : 4;
289
+
290
+ /** Full cipher identifier (as per mbedtls_cipher_type_t).
291
+ * For example, MBEDTLS_CIPHER_AES_256_CBC.
292
+ *
293
+ * This could be 7 bits, but 8 bits retains byte alignment for the
294
+ * next field, which reduces code size to access that field.
295
+ */
296
+ unsigned int MBEDTLS_PRIVATE(type) : 8;
297
+
298
+ /** Bitflag comprised of MBEDTLS_CIPHER_VARIABLE_IV_LEN and
299
+ * MBEDTLS_CIPHER_VARIABLE_KEY_LEN indicating whether the
300
+ * cipher supports variable IV or variable key sizes, respectively.
301
+ */
302
+ unsigned int MBEDTLS_PRIVATE(flags) : 2;
303
+
304
+ /** Index to LUT for base cipher information and functions. */
305
+ unsigned int MBEDTLS_PRIVATE(base_idx) : 5;
306
+
307
+ } mbedtls_cipher_info_t;
308
+
309
+ /* For internal use only.
310
+ * These are used to more compactly represent the fields above. */
311
+ #define MBEDTLS_KEY_BITLEN_SHIFT 6
312
+ #define MBEDTLS_IV_SIZE_SHIFT 2
313
+ /**
314
+ * Generic cipher context.
315
+ */
316
+ typedef struct mbedtls_cipher_context_t {
317
+ /** Information about the associated cipher. */
318
+ const mbedtls_cipher_info_t *MBEDTLS_PRIVATE(cipher_info);
319
+
320
+ /** Key length to use. */
321
+ int MBEDTLS_PRIVATE(key_bitlen);
322
+
323
+ /** Operation that the key of the context has been
324
+ * initialized for.
325
+ */
326
+ mbedtls_operation_t MBEDTLS_PRIVATE(operation);
327
+
328
+ #if defined(MBEDTLS_CIPHER_MODE_WITH_PADDING)
329
+ /** Padding functions to use, if relevant for
330
+ * the specific cipher mode.
331
+ */
332
+ void(*MBEDTLS_PRIVATE(add_padding))(unsigned char *output, size_t olen, size_t data_len);
333
+ int(*MBEDTLS_PRIVATE(get_padding))(unsigned char *input, size_t ilen, size_t *data_len);
334
+ #endif
335
+
336
+ /** Buffer for input that has not been processed yet. */
337
+ unsigned char MBEDTLS_PRIVATE(unprocessed_data)[MBEDTLS_MAX_BLOCK_LENGTH];
338
+
339
+ /** Number of Bytes that have not been processed yet. */
340
+ size_t MBEDTLS_PRIVATE(unprocessed_len);
341
+
342
+ /** Current IV or NONCE_COUNTER for CTR-mode, data unit (or sector) number
343
+ * for XTS-mode. */
344
+ unsigned char MBEDTLS_PRIVATE(iv)[MBEDTLS_MAX_IV_LENGTH];
345
+
346
+ /** IV size in Bytes, for ciphers with variable-length IVs. */
347
+ size_t MBEDTLS_PRIVATE(iv_size);
348
+
349
+ /** The cipher-specific context. */
350
+ void *MBEDTLS_PRIVATE(cipher_ctx);
351
+
352
+ #if defined(MBEDTLS_CMAC_C)
353
+ /** CMAC-specific context. */
354
+ mbedtls_cmac_context_t *MBEDTLS_PRIVATE(cmac_ctx);
355
+ #endif
356
+
357
+ #if defined(MBEDTLS_USE_PSA_CRYPTO) && !defined(MBEDTLS_DEPRECATED_REMOVED)
358
+ /** Indicates whether the cipher operations should be performed
359
+ * by Mbed TLS' own crypto library or an external implementation
360
+ * of the PSA Crypto API.
361
+ * This is unset if the cipher context was established through
362
+ * mbedtls_cipher_setup(), and set if it was established through
363
+ * mbedtls_cipher_setup_psa().
364
+ */
365
+ unsigned char MBEDTLS_PRIVATE(psa_enabled);
366
+ #endif /* MBEDTLS_USE_PSA_CRYPTO && !MBEDTLS_DEPRECATED_REMOVED */
367
+
368
+ } mbedtls_cipher_context_t;
369
+
370
+ /**
371
+ * \brief This function retrieves the list of ciphers supported
372
+ * by the generic cipher module.
373
+ *
374
+ * For any cipher identifier in the returned list, you can
375
+ * obtain the corresponding generic cipher information structure
376
+ * via mbedtls_cipher_info_from_type(), which can then be used
377
+ * to prepare a cipher context via mbedtls_cipher_setup().
378
+ *
379
+ *
380
+ * \return A statically-allocated array of cipher identifiers
381
+ * of type cipher_type_t. The last entry is zero.
382
+ */
383
+ const int *mbedtls_cipher_list(void);
384
+
385
+ /**
386
+ * \brief This function retrieves the cipher-information
387
+ * structure associated with the given cipher name.
388
+ *
389
+ * \param cipher_name Name of the cipher to search for. This must not be
390
+ * \c NULL.
391
+ *
392
+ * \return The cipher information structure associated with the
393
+ * given \p cipher_name.
394
+ * \return \c NULL if the associated cipher information is not found.
395
+ */
396
+ const mbedtls_cipher_info_t *mbedtls_cipher_info_from_string(const char *cipher_name);
397
+
398
+ /**
399
+ * \brief This function retrieves the cipher-information
400
+ * structure associated with the given cipher type.
401
+ *
402
+ * \param cipher_type Type of the cipher to search for.
403
+ *
404
+ * \return The cipher information structure associated with the
405
+ * given \p cipher_type.
406
+ * \return \c NULL if the associated cipher information is not found.
407
+ */
408
+ const mbedtls_cipher_info_t *mbedtls_cipher_info_from_type(const mbedtls_cipher_type_t cipher_type);
409
+
410
+ /**
411
+ * \brief This function retrieves the cipher-information
412
+ * structure associated with the given cipher ID,
413
+ * key size and mode.
414
+ *
415
+ * \param cipher_id The ID of the cipher to search for. For example,
416
+ * #MBEDTLS_CIPHER_ID_AES.
417
+ * \param key_bitlen The length of the key in bits.
418
+ * \param mode The cipher mode. For example, #MBEDTLS_MODE_CBC.
419
+ *
420
+ * \return The cipher information structure associated with the
421
+ * given \p cipher_id.
422
+ * \return \c NULL if the associated cipher information is not found.
423
+ */
424
+ const mbedtls_cipher_info_t *mbedtls_cipher_info_from_values(const mbedtls_cipher_id_t cipher_id,
425
+ int key_bitlen,
426
+ const mbedtls_cipher_mode_t mode);
427
+
428
+ /**
429
+ * \brief Retrieve the identifier for a cipher info structure.
430
+ *
431
+ * \param[in] info The cipher info structure to query.
432
+ * This may be \c NULL.
433
+ *
434
+ * \return The full cipher identifier (\c MBEDTLS_CIPHER_xxx).
435
+ * \return #MBEDTLS_CIPHER_NONE if \p info is \c NULL.
436
+ */
437
+ static inline mbedtls_cipher_type_t mbedtls_cipher_info_get_type(
438
+ const mbedtls_cipher_info_t *info)
439
+ {
440
+ if (info == NULL) {
441
+ return MBEDTLS_CIPHER_NONE;
442
+ } else {
443
+ return (mbedtls_cipher_type_t) info->MBEDTLS_PRIVATE(type);
444
+ }
445
+ }
446
+
447
+ /**
448
+ * \brief Retrieve the operation mode for a cipher info structure.
449
+ *
450
+ * \param[in] info The cipher info structure to query.
451
+ * This may be \c NULL.
452
+ *
453
+ * \return The cipher mode (\c MBEDTLS_MODE_xxx).
454
+ * \return #MBEDTLS_MODE_NONE if \p info is \c NULL.
455
+ */
456
+ static inline mbedtls_cipher_mode_t mbedtls_cipher_info_get_mode(
457
+ const mbedtls_cipher_info_t *info)
458
+ {
459
+ if (info == NULL) {
460
+ return MBEDTLS_MODE_NONE;
461
+ } else {
462
+ return (mbedtls_cipher_mode_t) info->MBEDTLS_PRIVATE(mode);
463
+ }
464
+ }
465
+
466
+ /**
467
+ * \brief Retrieve the key size for a cipher info structure.
468
+ *
469
+ * \param[in] info The cipher info structure to query.
470
+ * This may be \c NULL.
471
+ *
472
+ * \return The key length in bits.
473
+ * For variable-sized ciphers, this is the default length.
474
+ * For DES, this includes the parity bits.
475
+ * \return \c 0 if \p info is \c NULL.
476
+ */
477
+ static inline size_t mbedtls_cipher_info_get_key_bitlen(
478
+ const mbedtls_cipher_info_t *info)
479
+ {
480
+ if (info == NULL) {
481
+ return 0;
482
+ } else {
483
+ return info->MBEDTLS_PRIVATE(key_bitlen) << MBEDTLS_KEY_BITLEN_SHIFT;
484
+ }
485
+ }
486
+
487
+ /**
488
+ * \brief Retrieve the human-readable name for a
489
+ * cipher info structure.
490
+ *
491
+ * \param[in] info The cipher info structure to query.
492
+ * This may be \c NULL.
493
+ *
494
+ * \return The cipher name, which is a human readable string,
495
+ * with static storage duration.
496
+ * \return \c NULL if \p info is \c NULL.
497
+ */
498
+ static inline const char *mbedtls_cipher_info_get_name(
499
+ const mbedtls_cipher_info_t *info)
500
+ {
501
+ if (info == NULL) {
502
+ return NULL;
503
+ } else {
504
+ return info->MBEDTLS_PRIVATE(name);
505
+ }
506
+ }
507
+
508
+ /**
509
+ * \brief This function returns the size of the IV or nonce
510
+ * for the cipher info structure, in bytes.
511
+ *
512
+ * \param info The cipher info structure. This may be \c NULL.
513
+ *
514
+ * \return The recommended IV size.
515
+ * \return \c 0 for ciphers not using an IV or a nonce.
516
+ * \return \c 0 if \p info is \c NULL.
517
+ */
518
+ static inline size_t mbedtls_cipher_info_get_iv_size(
519
+ const mbedtls_cipher_info_t *info)
520
+ {
521
+ if (info == NULL) {
522
+ return 0;
523
+ }
524
+
525
+ return ((size_t) info->MBEDTLS_PRIVATE(iv_size)) << MBEDTLS_IV_SIZE_SHIFT;
526
+ }
527
+
528
+ /**
529
+ * \brief This function returns the block size of the given
530
+ * cipher info structure in bytes.
531
+ *
532
+ * \param info The cipher info structure. This may be \c NULL.
533
+ *
534
+ * \return The block size of the cipher.
535
+ * \return \c 1 if the cipher is a stream cipher.
536
+ * \return \c 0 if \p info is \c NULL.
537
+ */
538
+ static inline size_t mbedtls_cipher_info_get_block_size(
539
+ const mbedtls_cipher_info_t *info)
540
+ {
541
+ if (info == NULL) {
542
+ return 0;
543
+ }
544
+
545
+ return (size_t) (info->MBEDTLS_PRIVATE(block_size));
546
+ }
547
+
548
+ /**
549
+ * \brief This function returns a non-zero value if the key length for
550
+ * the given cipher is variable.
551
+ *
552
+ * \param info The cipher info structure. This may be \c NULL.
553
+ *
554
+ * \return Non-zero if the key length is variable, \c 0 otherwise.
555
+ * \return \c 0 if the given pointer is \c NULL.
556
+ */
557
+ static inline int mbedtls_cipher_info_has_variable_key_bitlen(
558
+ const mbedtls_cipher_info_t *info)
559
+ {
560
+ if (info == NULL) {
561
+ return 0;
562
+ }
563
+
564
+ return info->MBEDTLS_PRIVATE(flags) & MBEDTLS_CIPHER_VARIABLE_KEY_LEN;
565
+ }
566
+
567
+ /**
568
+ * \brief This function returns a non-zero value if the IV size for
569
+ * the given cipher is variable.
570
+ *
571
+ * \param info The cipher info structure. This may be \c NULL.
572
+ *
573
+ * \return Non-zero if the IV size is variable, \c 0 otherwise.
574
+ * \return \c 0 if the given pointer is \c NULL.
575
+ */
576
+ static inline int mbedtls_cipher_info_has_variable_iv_size(
577
+ const mbedtls_cipher_info_t *info)
578
+ {
579
+ if (info == NULL) {
580
+ return 0;
581
+ }
582
+
583
+ return info->MBEDTLS_PRIVATE(flags) & MBEDTLS_CIPHER_VARIABLE_IV_LEN;
584
+ }
585
+
586
+ /**
587
+ * \brief This function initializes a \p ctx as NONE.
588
+ *
589
+ * \param ctx The context to be initialized. This must not be \c NULL.
590
+ */
591
+ void mbedtls_cipher_init(mbedtls_cipher_context_t *ctx);
592
+
593
+ /**
594
+ * \brief This function frees and clears the cipher-specific
595
+ * context of \p ctx. Freeing \p ctx itself remains the
596
+ * responsibility of the caller.
597
+ *
598
+ * \param ctx The context to be freed. If this is \c NULL, the
599
+ * function has no effect, otherwise this must point to an
600
+ * initialized context.
601
+ */
602
+ void mbedtls_cipher_free(mbedtls_cipher_context_t *ctx);
603
+
604
+
605
+ /**
606
+ * \brief This function prepares a cipher context for
607
+ * use with the given cipher primitive.
608
+ *
609
+ * \note After calling this function, you should call
610
+ * mbedtls_cipher_setkey() and, if the mode uses padding,
611
+ * mbedtls_cipher_set_padding_mode(), then for each
612
+ * message to encrypt or decrypt with this key, either:
613
+ * - mbedtls_cipher_crypt() for one-shot processing with
614
+ * non-AEAD modes;
615
+ * - mbedtls_cipher_auth_encrypt_ext() or
616
+ * mbedtls_cipher_auth_decrypt_ext() for one-shot
617
+ * processing with AEAD modes or NIST_KW;
618
+ * - for multi-part processing, see the documentation of
619
+ * mbedtls_cipher_reset().
620
+ *
621
+ * \param ctx The context to prepare. This must be initialized by
622
+ * a call to mbedtls_cipher_init() first.
623
+ * \param cipher_info The cipher to use.
624
+ *
625
+ * \return \c 0 on success.
626
+ * \return #MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA on
627
+ * parameter-verification failure.
628
+ * \return #MBEDTLS_ERR_CIPHER_ALLOC_FAILED if allocation of the
629
+ * cipher-specific context fails.
630
+ */
631
+ int mbedtls_cipher_setup(mbedtls_cipher_context_t *ctx,
632
+ const mbedtls_cipher_info_t *cipher_info);
633
+
634
+ #if defined(MBEDTLS_USE_PSA_CRYPTO)
635
+ #if !defined(MBEDTLS_DEPRECATED_REMOVED)
636
+ /**
637
+ * \brief This function initializes a cipher context for
638
+ * PSA-based use with the given cipher primitive.
639
+ *
640
+ * \deprecated This function is deprecated and will be removed in a
641
+ * future version of the library.
642
+ * Please use psa_aead_xxx() / psa_cipher_xxx() directly
643
+ * instead.
644
+ *
645
+ * \note See #MBEDTLS_USE_PSA_CRYPTO for information on PSA.
646
+ *
647
+ * \param ctx The context to initialize. May not be \c NULL.
648
+ * \param cipher_info The cipher to use.
649
+ * \param taglen For AEAD ciphers, the length in bytes of the
650
+ * authentication tag to use. Subsequent uses of
651
+ * mbedtls_cipher_auth_encrypt_ext() or
652
+ * mbedtls_cipher_auth_decrypt_ext() must provide
653
+ * the same tag length.
654
+ * For non-AEAD ciphers, the value must be \c 0.
655
+ *
656
+ * \return \c 0 on success.
657
+ * \return #MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA on
658
+ * parameter-verification failure.
659
+ * \return #MBEDTLS_ERR_CIPHER_ALLOC_FAILED if allocation of the
660
+ * cipher-specific context fails.
661
+ */
662
+ int MBEDTLS_DEPRECATED mbedtls_cipher_setup_psa(mbedtls_cipher_context_t *ctx,
663
+ const mbedtls_cipher_info_t *cipher_info,
664
+ size_t taglen);
665
+ #endif /* MBEDTLS_DEPRECATED_REMOVED */
666
+ #endif /* MBEDTLS_USE_PSA_CRYPTO */
667
+
668
+ /**
669
+ * \brief This function returns the block size of the given cipher
670
+ * in bytes.
671
+ *
672
+ * \param ctx The context of the cipher.
673
+ *
674
+ * \return The block size of the underlying cipher.
675
+ * \return \c 1 if the cipher is a stream cipher.
676
+ * \return \c 0 if \p ctx has not been initialized.
677
+ */
678
+ static inline unsigned int mbedtls_cipher_get_block_size(
679
+ const mbedtls_cipher_context_t *ctx)
680
+ {
681
+ MBEDTLS_INTERNAL_VALIDATE_RET(ctx != NULL, 0);
682
+ if (ctx->MBEDTLS_PRIVATE(cipher_info) == NULL) {
683
+ return 0;
684
+ }
685
+
686
+ return (unsigned int) ctx->MBEDTLS_PRIVATE(cipher_info)->MBEDTLS_PRIVATE(block_size);
687
+ }
688
+
689
+ /**
690
+ * \brief This function returns the mode of operation for
691
+ * the cipher. For example, MBEDTLS_MODE_CBC.
692
+ *
693
+ * \param ctx The context of the cipher. This must be initialized.
694
+ *
695
+ * \return The mode of operation.
696
+ * \return #MBEDTLS_MODE_NONE if \p ctx has not been initialized.
697
+ */
698
+ static inline mbedtls_cipher_mode_t mbedtls_cipher_get_cipher_mode(
699
+ const mbedtls_cipher_context_t *ctx)
700
+ {
701
+ MBEDTLS_INTERNAL_VALIDATE_RET(ctx != NULL, MBEDTLS_MODE_NONE);
702
+ if (ctx->MBEDTLS_PRIVATE(cipher_info) == NULL) {
703
+ return MBEDTLS_MODE_NONE;
704
+ }
705
+
706
+ return (mbedtls_cipher_mode_t) ctx->MBEDTLS_PRIVATE(cipher_info)->MBEDTLS_PRIVATE(mode);
707
+ }
708
+
709
+ /**
710
+ * \brief This function returns the size of the IV or nonce
711
+ * of the cipher, in Bytes.
712
+ *
713
+ * \param ctx The context of the cipher. This must be initialized.
714
+ *
715
+ * \return The recommended IV size if no IV has been set.
716
+ * \return \c 0 for ciphers not using an IV or a nonce.
717
+ * \return The actual size if an IV has been set.
718
+ */
719
+ static inline int mbedtls_cipher_get_iv_size(
720
+ const mbedtls_cipher_context_t *ctx)
721
+ {
722
+ MBEDTLS_INTERNAL_VALIDATE_RET(ctx != NULL, 0);
723
+ if (ctx->MBEDTLS_PRIVATE(cipher_info) == NULL) {
724
+ return 0;
725
+ }
726
+
727
+ if (ctx->MBEDTLS_PRIVATE(iv_size) != 0) {
728
+ return (int) ctx->MBEDTLS_PRIVATE(iv_size);
729
+ }
730
+
731
+ return (int) (((int) ctx->MBEDTLS_PRIVATE(cipher_info)->MBEDTLS_PRIVATE(iv_size)) <<
732
+ MBEDTLS_IV_SIZE_SHIFT);
733
+ }
734
+
735
+ /**
736
+ * \brief This function returns the type of the given cipher.
737
+ *
738
+ * \param ctx The context of the cipher. This must be initialized.
739
+ *
740
+ * \return The type of the cipher.
741
+ * \return #MBEDTLS_CIPHER_NONE if \p ctx has not been initialized.
742
+ */
743
+ static inline mbedtls_cipher_type_t mbedtls_cipher_get_type(
744
+ const mbedtls_cipher_context_t *ctx)
745
+ {
746
+ MBEDTLS_INTERNAL_VALIDATE_RET(
747
+ ctx != NULL, MBEDTLS_CIPHER_NONE);
748
+ if (ctx->MBEDTLS_PRIVATE(cipher_info) == NULL) {
749
+ return MBEDTLS_CIPHER_NONE;
750
+ }
751
+
752
+ return (mbedtls_cipher_type_t) ctx->MBEDTLS_PRIVATE(cipher_info)->MBEDTLS_PRIVATE(type);
753
+ }
754
+
755
+ /**
756
+ * \brief This function returns the name of the given cipher
757
+ * as a string.
758
+ *
759
+ * \param ctx The context of the cipher. This must be initialized.
760
+ *
761
+ * \return The name of the cipher.
762
+ * \return NULL if \p ctx has not been not initialized.
763
+ */
764
+ static inline const char *mbedtls_cipher_get_name(
765
+ const mbedtls_cipher_context_t *ctx)
766
+ {
767
+ MBEDTLS_INTERNAL_VALIDATE_RET(ctx != NULL, 0);
768
+ if (ctx->MBEDTLS_PRIVATE(cipher_info) == NULL) {
769
+ return 0;
770
+ }
771
+
772
+ return ctx->MBEDTLS_PRIVATE(cipher_info)->MBEDTLS_PRIVATE(name);
773
+ }
774
+
775
+ /**
776
+ * \brief This function returns the key length of the cipher.
777
+ *
778
+ * \param ctx The context of the cipher. This must be initialized.
779
+ *
780
+ * \return The key length of the cipher in bits.
781
+ * \return #MBEDTLS_KEY_LENGTH_NONE if \p ctx has not been
782
+ * initialized.
783
+ */
784
+ static inline int mbedtls_cipher_get_key_bitlen(
785
+ const mbedtls_cipher_context_t *ctx)
786
+ {
787
+ MBEDTLS_INTERNAL_VALIDATE_RET(
788
+ ctx != NULL, MBEDTLS_KEY_LENGTH_NONE);
789
+ if (ctx->MBEDTLS_PRIVATE(cipher_info) == NULL) {
790
+ return MBEDTLS_KEY_LENGTH_NONE;
791
+ }
792
+
793
+ return (int) ctx->MBEDTLS_PRIVATE(cipher_info)->MBEDTLS_PRIVATE(key_bitlen) <<
794
+ MBEDTLS_KEY_BITLEN_SHIFT;
795
+ }
796
+
797
+ /**
798
+ * \brief This function returns the operation of the given cipher.
799
+ *
800
+ * \param ctx The context of the cipher. This must be initialized.
801
+ *
802
+ * \return The type of operation: #MBEDTLS_ENCRYPT or #MBEDTLS_DECRYPT.
803
+ * \return #MBEDTLS_OPERATION_NONE if \p ctx has not been initialized.
804
+ */
805
+ static inline mbedtls_operation_t mbedtls_cipher_get_operation(
806
+ const mbedtls_cipher_context_t *ctx)
807
+ {
808
+ MBEDTLS_INTERNAL_VALIDATE_RET(
809
+ ctx != NULL, MBEDTLS_OPERATION_NONE);
810
+ if (ctx->MBEDTLS_PRIVATE(cipher_info) == NULL) {
811
+ return MBEDTLS_OPERATION_NONE;
812
+ }
813
+
814
+ return ctx->MBEDTLS_PRIVATE(operation);
815
+ }
816
+
817
+ /**
818
+ * \brief This function sets the key to use with the given context.
819
+ *
820
+ * \param ctx The generic cipher context. This must be initialized and
821
+ * bound to a cipher information structure.
822
+ * \param key The key to use. This must be a readable buffer of at
823
+ * least \p key_bitlen Bits.
824
+ * \param key_bitlen The key length to use, in Bits.
825
+ * \param operation The operation that the key will be used for:
826
+ * #MBEDTLS_ENCRYPT or #MBEDTLS_DECRYPT.
827
+ *
828
+ * \return \c 0 on success.
829
+ * \return #MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA on
830
+ * parameter-verification failure.
831
+ * \return A cipher-specific error code on failure.
832
+ */
833
+ int mbedtls_cipher_setkey(mbedtls_cipher_context_t *ctx,
834
+ const unsigned char *key,
835
+ int key_bitlen,
836
+ const mbedtls_operation_t operation);
837
+
838
+ #if defined(MBEDTLS_CIPHER_MODE_WITH_PADDING)
839
+ /**
840
+ * \brief This function sets the padding mode, for cipher modes
841
+ * that use padding.
842
+ *
843
+ *
844
+ * \param ctx The generic cipher context. This must be initialized and
845
+ * bound to a cipher information structure.
846
+ * \param mode The padding mode.
847
+ *
848
+ * \return \c 0 on success.
849
+ * \return #MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE
850
+ * if the selected padding mode is not supported.
851
+ * \return #MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA if the cipher mode
852
+ * does not support padding.
853
+ */
854
+ int mbedtls_cipher_set_padding_mode(mbedtls_cipher_context_t *ctx,
855
+ mbedtls_cipher_padding_t mode);
856
+ #endif /* MBEDTLS_CIPHER_MODE_WITH_PADDING */
857
+
858
+ /**
859
+ * \brief This function sets the initialization vector (IV)
860
+ * or nonce.
861
+ *
862
+ * \note Some ciphers do not use IVs nor nonce. For these
863
+ * ciphers, this function has no effect.
864
+ *
865
+ * \note For #MBEDTLS_CIPHER_CHACHA20, the nonce length must
866
+ * be 12, and the initial counter value is 0.
867
+ *
868
+ * \note For #MBEDTLS_CIPHER_CHACHA20_POLY1305, the nonce length
869
+ * must be 12.
870
+ *
871
+ * \param ctx The generic cipher context. This must be initialized and
872
+ * bound to a cipher information structure.
873
+ * \param iv The IV to use, or NONCE_COUNTER for CTR-mode ciphers. This
874
+ * must be a readable buffer of at least \p iv_len Bytes.
875
+ * \param iv_len The IV length for ciphers with variable-size IV.
876
+ * This parameter is discarded by ciphers with fixed-size IV.
877
+ *
878
+ * \return \c 0 on success.
879
+ * \return #MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA on
880
+ * parameter-verification failure.
881
+ */
882
+ int mbedtls_cipher_set_iv(mbedtls_cipher_context_t *ctx,
883
+ const unsigned char *iv,
884
+ size_t iv_len);
885
+
886
+ /**
887
+ * \brief This function resets the cipher state.
888
+ *
889
+ * \note With non-AEAD ciphers, the order of calls for each message
890
+ * is as follows:
891
+ * 1. mbedtls_cipher_set_iv() if the mode uses an IV/nonce.
892
+ * 2. mbedtls_cipher_reset()
893
+ * 3. mbedtls_cipher_update() one or more times
894
+ * 4. mbedtls_cipher_finish()
895
+ * .
896
+ * This sequence can be repeated to encrypt or decrypt multiple
897
+ * messages with the same key.
898
+ *
899
+ * \note With AEAD ciphers, the order of calls for each message
900
+ * is as follows:
901
+ * 1. mbedtls_cipher_set_iv() if the mode uses an IV/nonce.
902
+ * 2. mbedtls_cipher_reset()
903
+ * 3. mbedtls_cipher_update_ad()
904
+ * 4. mbedtls_cipher_update() one or more times
905
+ * 5. mbedtls_cipher_finish()
906
+ * 6. mbedtls_cipher_check_tag() (for decryption) or
907
+ * mbedtls_cipher_write_tag() (for encryption).
908
+ * .
909
+ * This sequence can be repeated to encrypt or decrypt multiple
910
+ * messages with the same key.
911
+ *
912
+ * \param ctx The generic cipher context. This must be bound to a key.
913
+ *
914
+ * \return \c 0 on success.
915
+ * \return #MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA on
916
+ * parameter-verification failure.
917
+ */
918
+ int mbedtls_cipher_reset(mbedtls_cipher_context_t *ctx);
919
+
920
+ #if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C)
921
+ /**
922
+ * \brief This function adds additional data for AEAD ciphers.
923
+ * Currently supported with GCM and ChaCha20+Poly1305.
924
+ *
925
+ * \param ctx The generic cipher context. This must be initialized.
926
+ * \param ad The additional data to use. This must be a readable
927
+ * buffer of at least \p ad_len Bytes.
928
+ * \param ad_len The length of \p ad in Bytes.
929
+ *
930
+ * \return \c 0 on success.
931
+ * \return A specific error code on failure.
932
+ */
933
+ int mbedtls_cipher_update_ad(mbedtls_cipher_context_t *ctx,
934
+ const unsigned char *ad, size_t ad_len);
935
+ #endif /* MBEDTLS_GCM_C || MBEDTLS_CHACHAPOLY_C */
936
+
937
+ /**
938
+ * \brief The generic cipher update function. It encrypts or
939
+ * decrypts using the given cipher context. Writes as
940
+ * many block-sized blocks of data as possible to output.
941
+ * Any data that cannot be written immediately is either
942
+ * added to the next block, or flushed when
943
+ * mbedtls_cipher_finish() is called.
944
+ * Exception: For MBEDTLS_MODE_ECB, expects a single block
945
+ * in size. For example, 16 Bytes for AES.
946
+ *
947
+ * \param ctx The generic cipher context. This must be initialized and
948
+ * bound to a key.
949
+ * \param input The buffer holding the input data. This must be a
950
+ * readable buffer of at least \p ilen Bytes.
951
+ * \param ilen The length of the input data.
952
+ * \param output The buffer for the output data. This must be able to
953
+ * hold at least `ilen + block_size`. This must not be the
954
+ * same buffer as \p input.
955
+ * \param olen The length of the output data, to be updated with the
956
+ * actual number of Bytes written. This must not be
957
+ * \c NULL.
958
+ *
959
+ * \return \c 0 on success.
960
+ * \return #MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA on
961
+ * parameter-verification failure.
962
+ * \return #MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE on an
963
+ * unsupported mode for a cipher.
964
+ * \return A cipher-specific error code on failure.
965
+ */
966
+ int mbedtls_cipher_update(mbedtls_cipher_context_t *ctx,
967
+ const unsigned char *input,
968
+ size_t ilen, unsigned char *output,
969
+ size_t *olen);
970
+
971
+ /**
972
+ * \brief The generic cipher finalization function. If data still
973
+ * needs to be flushed from an incomplete block, the data
974
+ * contained in it is padded to the size of
975
+ * the last block, and written to the \p output buffer.
976
+ *
977
+ * \param ctx The generic cipher context. This must be initialized and
978
+ * bound to a key.
979
+ * \param output The buffer to write data to. This needs to be a writable
980
+ * buffer of at least block_size Bytes.
981
+ * \param olen The length of the data written to the \p output buffer.
982
+ * This may not be \c NULL.
983
+ *
984
+ * \return \c 0 on success.
985
+ * \return #MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA on
986
+ * parameter-verification failure.
987
+ * \return #MBEDTLS_ERR_CIPHER_FULL_BLOCK_EXPECTED on decryption
988
+ * expecting a full block but not receiving one.
989
+ * \return #MBEDTLS_ERR_CIPHER_INVALID_PADDING on invalid padding
990
+ * while decrypting.
991
+ * \return A cipher-specific error code on failure.
992
+ */
993
+ int mbedtls_cipher_finish(mbedtls_cipher_context_t *ctx,
994
+ unsigned char *output, size_t *olen);
995
+
996
+ #if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C)
997
+ /**
998
+ * \brief This function writes a tag for AEAD ciphers.
999
+ * Currently supported with GCM and ChaCha20+Poly1305.
1000
+ * This must be called after mbedtls_cipher_finish().
1001
+ *
1002
+ * \param ctx The generic cipher context. This must be initialized,
1003
+ * bound to a key, and have just completed a cipher
1004
+ * operation through mbedtls_cipher_finish() the tag for
1005
+ * which should be written.
1006
+ * \param tag The buffer to write the tag to. This must be a writable
1007
+ * buffer of at least \p tag_len Bytes.
1008
+ * \param tag_len The length of the tag to write.
1009
+ *
1010
+ * \return \c 0 on success.
1011
+ * \return A specific error code on failure.
1012
+ */
1013
+ int mbedtls_cipher_write_tag(mbedtls_cipher_context_t *ctx,
1014
+ unsigned char *tag, size_t tag_len);
1015
+
1016
+ /**
1017
+ * \brief This function checks the tag for AEAD ciphers.
1018
+ * Currently supported with GCM and ChaCha20+Poly1305.
1019
+ * This must be called after mbedtls_cipher_finish().
1020
+ *
1021
+ * \param ctx The generic cipher context. This must be initialized.
1022
+ * \param tag The buffer holding the tag. This must be a readable
1023
+ * buffer of at least \p tag_len Bytes.
1024
+ * \param tag_len The length of the tag to check.
1025
+ *
1026
+ * \return \c 0 on success.
1027
+ * \return A specific error code on failure.
1028
+ */
1029
+ int mbedtls_cipher_check_tag(mbedtls_cipher_context_t *ctx,
1030
+ const unsigned char *tag, size_t tag_len);
1031
+ #endif /* MBEDTLS_GCM_C || MBEDTLS_CHACHAPOLY_C */
1032
+
1033
+ /**
1034
+ * \brief The generic all-in-one encryption/decryption function,
1035
+ * for all ciphers except AEAD constructs.
1036
+ *
1037
+ * \param ctx The generic cipher context. This must be initialized.
1038
+ * \param iv The IV to use, or NONCE_COUNTER for CTR-mode ciphers.
1039
+ * This must be a readable buffer of at least \p iv_len
1040
+ * Bytes.
1041
+ * \param iv_len The IV length for ciphers with variable-size IV.
1042
+ * This parameter is discarded by ciphers with fixed-size
1043
+ * IV.
1044
+ * \param input The buffer holding the input data. This must be a
1045
+ * readable buffer of at least \p ilen Bytes.
1046
+ * \param ilen The length of the input data in Bytes.
1047
+ * \param output The buffer for the output data. This must be able to
1048
+ * hold at least `ilen + block_size`. This must not be the
1049
+ * same buffer as \p input.
1050
+ * \param olen The length of the output data, to be updated with the
1051
+ * actual number of Bytes written. This must not be
1052
+ * \c NULL.
1053
+ *
1054
+ * \note Some ciphers do not use IVs nor nonce. For these
1055
+ * ciphers, use \p iv = NULL and \p iv_len = 0.
1056
+ *
1057
+ * \return \c 0 on success.
1058
+ * \return #MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA on
1059
+ * parameter-verification failure.
1060
+ * \return #MBEDTLS_ERR_CIPHER_FULL_BLOCK_EXPECTED on decryption
1061
+ * expecting a full block but not receiving one.
1062
+ * \return #MBEDTLS_ERR_CIPHER_INVALID_PADDING on invalid padding
1063
+ * while decrypting.
1064
+ * \return A cipher-specific error code on failure.
1065
+ */
1066
+ int mbedtls_cipher_crypt(mbedtls_cipher_context_t *ctx,
1067
+ const unsigned char *iv, size_t iv_len,
1068
+ const unsigned char *input, size_t ilen,
1069
+ unsigned char *output, size_t *olen);
1070
+
1071
+ #if defined(MBEDTLS_CIPHER_MODE_AEAD) || defined(MBEDTLS_NIST_KW_C)
1072
+ /**
1073
+ * \brief The authenticated encryption (AEAD/NIST_KW) function.
1074
+ *
1075
+ * \note For AEAD modes, the tag will be appended to the
1076
+ * ciphertext, as recommended by RFC 5116.
1077
+ * (NIST_KW doesn't have a separate tag.)
1078
+ *
1079
+ * \param ctx The generic cipher context. This must be initialized and
1080
+ * bound to a key, with an AEAD algorithm or NIST_KW.
1081
+ * \param iv The nonce to use. This must be a readable buffer of
1082
+ * at least \p iv_len Bytes and may be \c NULL if \p
1083
+ * iv_len is \c 0.
1084
+ * \param iv_len The length of the nonce. For AEAD ciphers, this must
1085
+ * satisfy the constraints imposed by the cipher used.
1086
+ * For NIST_KW, this must be \c 0.
1087
+ * \param ad The additional data to authenticate. This must be a
1088
+ * readable buffer of at least \p ad_len Bytes, and may
1089
+ * be \c NULL is \p ad_len is \c 0.
1090
+ * \param ad_len The length of \p ad. For NIST_KW, this must be \c 0.
1091
+ * \param input The buffer holding the input data. This must be a
1092
+ * readable buffer of at least \p ilen Bytes, and may be
1093
+ * \c NULL if \p ilen is \c 0.
1094
+ * \param ilen The length of the input data.
1095
+ * \param output The buffer for the output data. This must be a
1096
+ * writable buffer of at least \p output_len Bytes, and
1097
+ * must not be \c NULL.
1098
+ * \param output_len The length of the \p output buffer in Bytes. For AEAD
1099
+ * ciphers, this must be at least \p ilen + \p tag_len.
1100
+ * For NIST_KW, this must be at least \p ilen + 8
1101
+ * (rounded up to a multiple of 8 if KWP is used);
1102
+ * \p ilen + 15 is always a safe value.
1103
+ * \param olen This will be filled with the actual number of Bytes
1104
+ * written to the \p output buffer. This must point to a
1105
+ * writable object of type \c size_t.
1106
+ * \param tag_len The desired length of the authentication tag. For AEAD
1107
+ * ciphers, this must match the constraints imposed by
1108
+ * the cipher used, and in particular must not be \c 0.
1109
+ * For NIST_KW, this must be \c 0.
1110
+ *
1111
+ * \return \c 0 on success.
1112
+ * \return #MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA on
1113
+ * parameter-verification failure.
1114
+ * \return A cipher-specific error code on failure.
1115
+ */
1116
+ int mbedtls_cipher_auth_encrypt_ext(mbedtls_cipher_context_t *ctx,
1117
+ const unsigned char *iv, size_t iv_len,
1118
+ const unsigned char *ad, size_t ad_len,
1119
+ const unsigned char *input, size_t ilen,
1120
+ unsigned char *output, size_t output_len,
1121
+ size_t *olen, size_t tag_len);
1122
+
1123
+ /**
1124
+ * \brief The authenticated encryption (AEAD/NIST_KW) function.
1125
+ *
1126
+ * \note If the data is not authentic, then the output buffer
1127
+ * is zeroed out to prevent the unauthentic plaintext being
1128
+ * used, making this interface safer.
1129
+ *
1130
+ * \note For AEAD modes, the tag must be appended to the
1131
+ * ciphertext, as recommended by RFC 5116.
1132
+ * (NIST_KW doesn't have a separate tag.)
1133
+ *
1134
+ * \param ctx The generic cipher context. This must be initialized and
1135
+ * bound to a key, with an AEAD algorithm or NIST_KW.
1136
+ * \param iv The nonce to use. This must be a readable buffer of
1137
+ * at least \p iv_len Bytes and may be \c NULL if \p
1138
+ * iv_len is \c 0.
1139
+ * \param iv_len The length of the nonce. For AEAD ciphers, this must
1140
+ * satisfy the constraints imposed by the cipher used.
1141
+ * For NIST_KW, this must be \c 0.
1142
+ * \param ad The additional data to authenticate. This must be a
1143
+ * readable buffer of at least \p ad_len Bytes, and may
1144
+ * be \c NULL is \p ad_len is \c 0.
1145
+ * \param ad_len The length of \p ad. For NIST_KW, this must be \c 0.
1146
+ * \param input The buffer holding the input data. This must be a
1147
+ * readable buffer of at least \p ilen Bytes, and may be
1148
+ * \c NULL if \p ilen is \c 0.
1149
+ * \param ilen The length of the input data. For AEAD ciphers this
1150
+ * must be at least \p tag_len. For NIST_KW this must be
1151
+ * at least \c 8.
1152
+ * \param output The buffer for the output data. This must be a
1153
+ * writable buffer of at least \p output_len Bytes, and
1154
+ * may be \c NULL if \p output_len is \c 0.
1155
+ * \param output_len The length of the \p output buffer in Bytes. For AEAD
1156
+ * ciphers, this must be at least \p ilen - \p tag_len.
1157
+ * For NIST_KW, this must be at least \p ilen - 8.
1158
+ * \param olen This will be filled with the actual number of Bytes
1159
+ * written to the \p output buffer. This must point to a
1160
+ * writable object of type \c size_t.
1161
+ * \param tag_len The actual length of the authentication tag. For AEAD
1162
+ * ciphers, this must match the constraints imposed by
1163
+ * the cipher used, and in particular must not be \c 0.
1164
+ * For NIST_KW, this must be \c 0.
1165
+ *
1166
+ * \return \c 0 on success.
1167
+ * \return #MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA on
1168
+ * parameter-verification failure.
1169
+ * \return #MBEDTLS_ERR_CIPHER_AUTH_FAILED if data is not authentic.
1170
+ * \return A cipher-specific error code on failure.
1171
+ */
1172
+ int mbedtls_cipher_auth_decrypt_ext(mbedtls_cipher_context_t *ctx,
1173
+ const unsigned char *iv, size_t iv_len,
1174
+ const unsigned char *ad, size_t ad_len,
1175
+ const unsigned char *input, size_t ilen,
1176
+ unsigned char *output, size_t output_len,
1177
+ size_t *olen, size_t tag_len);
1178
+ #endif /* MBEDTLS_CIPHER_MODE_AEAD || MBEDTLS_NIST_KW_C */
1179
+ #ifdef __cplusplus
1180
+ }
1181
+ #endif
1182
+
1183
+ #endif /* MBEDTLS_CIPHER_H */