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,826 @@
1
+ /**
2
+ * \file edhoc_message_4.c
3
+ * \author Kamil Kielbasa
4
+ * \brief EDHOC message 4 compose & process.
5
+ * \version 0.4
6
+ * \date 2024-01-01
7
+ *
8
+ * \copyright Copyright (c) 2024
9
+ *
10
+ */
11
+
12
+ /* Include files ----------------------------------------------------------- */
13
+
14
+ /* EDHOC header: */
15
+ #define EDHOC_ALLOW_PRIVATE_ACCESS
16
+ #include "edhoc.h"
17
+
18
+ /* Standard library headers: */
19
+ #include <stdint.h>
20
+ #include <stddef.h>
21
+ #include <string.h>
22
+ #include <stdbool.h>
23
+
24
+ #ifdef __clang__
25
+ #pragma clang diagnostic push
26
+ #pragma clang diagnostic ignored "-Wshadow"
27
+ #pragma clang diagnostic ignored "-Wreserved-identifier"
28
+ #pragma clang diagnostic ignored "-Wpadded"
29
+ #pragma clang diagnostic ignored "-Wdocumentation"
30
+ #endif
31
+
32
+ /* CBOR headers: */
33
+ #include <backend_cbor_info_encode.h>
34
+ #include <backend_cbor_enc_structure_encode.h>
35
+ #include <backend_cbor_enc_structure_decode.h>
36
+ #include <backend_cbor_plaintext_4_encode.h>
37
+ #include <backend_cbor_plaintext_4_decode.h>
38
+ #include <backend_cbor_message_4_encode.h>
39
+ #include <backend_cbor_message_4_decode.h>
40
+
41
+ #ifdef __clang__
42
+ #pragma clang diagnostic pop
43
+ #endif
44
+
45
+ /* Module defines ---------------------------------------------------------- */
46
+ /* Module types and type definitiones -------------------------------------- */
47
+ /* Module interface variables and constants -------------------------------- */
48
+ /* Static variables and constants ------------------------------------------ */
49
+ /* Static function declarations -------------------------------------------- */
50
+
51
+ /**
52
+ * \brief CBOR integer memory requirements.
53
+ *
54
+ * \param val Raw integer value.
55
+ *
56
+ * \return Number of bytes.
57
+ */
58
+ static inline size_t cbor_int_mem_req(int32_t val);
59
+
60
+ /**
61
+ * \brief CBOR text stream overhead.
62
+ *
63
+ * \param len Length of buffer to CBOR as tstr.
64
+ *
65
+ * \return Number of bytes.
66
+ */
67
+ static inline size_t cbor_tstr_overhead(size_t len);
68
+
69
+ /**
70
+ * \brief CBOR byte stream overhead.
71
+ *
72
+ * \param len Length of buffer to CBOR as bstr.
73
+ *
74
+ * \return Number of bytes.
75
+ */
76
+ static inline size_t cbor_bstr_overhead(size_t len);
77
+
78
+ /**
79
+ * \brief Compute PLAINTEXT_4 length.
80
+ *
81
+ * \param[in] ctx EDHOC context.
82
+ * \param[out] ptxt_4_len Length of PLAINTEXT_4.
83
+ *
84
+ * \return EDHOC_SUCCESS on success, otherwise failure.
85
+ */
86
+ static int compute_plaintext_4_len(const struct edhoc_context *ctx,
87
+ size_t *ptxt_4_len);
88
+
89
+ /**
90
+ * \brief Prepare PLAINTEXT_4.
91
+ *
92
+ * \param[in] ctx EDHOC context.
93
+ * \param[out] ptxt Buffer where the generated plaintext is to be written.
94
+ * \param ptxt_size Size of the \p ptxt buffer in bytes.
95
+ * \param ptxt_len On success, the number of bytes that make up the plaintext.
96
+ *
97
+ * \return EDHOC_SUCCESS on success, otherwise failure.
98
+ */
99
+ static int prepare_plaintext_4(const struct edhoc_context *ctx, uint8_t *ptxt,
100
+ size_t ptxt_size, size_t *ptxt_len);
101
+
102
+ /**
103
+ * \brief Compute required length in bytes for AAD_4.
104
+ *
105
+ * \param[in] ctx EDHOC context.
106
+ *
107
+ * \retval Value different than 0 is success, otherwise failure.
108
+ */
109
+ static size_t compute_aad_4_len(const struct edhoc_context *ctx);
110
+
111
+ /**
112
+ * \brief Compute K_4, IV_4 and AAD_4.
113
+ *
114
+ * \param[in] ctx EDHOC context.
115
+ * \param[out] key Buffer where the generated K_4 is to be written.
116
+ * \param key_len Size of the \p key buffer in bytes.
117
+ * \param[out] iv Buffer where the generated IV_4 is to be written.
118
+ * \param iv_len Size of the \p iv buffer in bytes.
119
+ * \param[out] aad Buffer where the generated AAD_4 is to be written.
120
+ * \param aad_len Size of the \p aad buffer in bytes.
121
+ *
122
+ * \return EDHOC_SUCCESS on success, otherwise failure.
123
+ */
124
+ static int compute_key_iv_aad(const struct edhoc_context *ctx, uint8_t *key,
125
+ size_t key_len, uint8_t *iv, size_t iv_len,
126
+ uint8_t *aad, size_t aad_len);
127
+
128
+ /**
129
+ * \brief Compute CIPHERTEXT_4.
130
+ *
131
+ * \param[in] ctx EDHOC context.
132
+ * \param[in] key Buffer containing the K_4.
133
+ * \param key_len Size of the \p key buffer in bytes.
134
+ * \param[in] iv Buffer containing the IV_4.
135
+ * \param iv_len Size of the \p iv buffer in bytes.
136
+ * \param[in] aad Buffer containing the AAD_4.
137
+ * \param aad_len Size of the \p aad buffer in bytes.
138
+ * \param[in] ptxt Buffer containing the PLAINTEXT_4.
139
+ * \param ptxt_len Size of the \p ptxt buffer in bytes.
140
+ * \param[out] ctxt Buffer where the generated ciphertext is to be written.
141
+ * \param ctxt_size Size of the \p ctxt buffer in bytes.
142
+ * \param[out] ctxt_len On success, the number of bytes that make up the CIPHERTEXT_4.
143
+ *
144
+ * \return EDHOC_SUCCESS on success, otherwise failure.
145
+ */
146
+ static int compute_ciphertext(const struct edhoc_context *ctx,
147
+ const uint8_t *key, size_t key_len,
148
+ const uint8_t *iv, size_t iv_len,
149
+ const uint8_t *aad, size_t aad_len,
150
+ const uint8_t *ptxt, size_t ptxt_len,
151
+ uint8_t *ctxt, size_t ctxt_size,
152
+ size_t *ctxt_len);
153
+
154
+ /**
155
+ * \brief Generate edhoc message 4.
156
+ *
157
+ * \param[in] ctxt Buffer continas the ciphertext.
158
+ * \param ctxt_len Size of the \p ctxt buffer in bytes.
159
+ * \param[out] msg_4 Buffer where the generated message 4 is to be written.
160
+ * \param msg_4_size Size of the \p msg_4 buffer in bytes.
161
+ * \param[out] msg_4_len On success, the number of bytes that make up the message 4.
162
+ *
163
+ * \return EDHOC_SUCCESS on success, otherwise failure.
164
+ */
165
+ static int gen_msg_4(const uint8_t *ctxt, size_t ctxt_len, uint8_t *msg_4,
166
+ size_t msg_4_size, size_t *msg_4_len);
167
+
168
+ /**
169
+ * \brief CBOR decode message 4 and save address and length for CIPHERTEXT_4.
170
+ *
171
+ * \param[in] msg_4 Buffer containing the message 4.
172
+ * \param msg_4_len Size of the \p msg_4 buffer in bytes.
173
+ * \param[out] ctxt_4 Pointer to buffer containing the CIPHERTEXT_4.
174
+ * \param[out] ctxt_4_len Size of the \p ctxctxt_4t buffer in bytes.
175
+ *
176
+ * \return EDHOC_SUCCESS on success, otherwise failure.
177
+ */
178
+ static int parse_msg_4(const uint8_t *msg_4, size_t msg_4_len,
179
+ const uint8_t **ctxt_4, size_t *ctxt_4_len);
180
+
181
+ /**
182
+ * \brief Decrypt CIPHERTEXT_4.
183
+ *
184
+ * \param[in] ctx EDHOC context.
185
+ * \param[in] key Buffer containing the K_4.
186
+ * \param key_len Size of the \p key buffer in bytes.
187
+ * \param[in] iv Buffer containing the IV_4.
188
+ * \param iv_len Size of the \p iv buffer in bytes.
189
+ * \param[in] aad Buffer containing the AAD_4.
190
+ * \param aad_len Size of the \p aad buffer in bytes.
191
+ * \param[in] ctxt Pointer to buffer containing the CIPHERTEXT_4.
192
+ * \param ctxt_len Size of the \p ctxt buffer in bytes.
193
+ * \param[out] ptxt Buffer where the decrypted PLAINTEXT_4 is to be written.
194
+ * \param ptxt_len Size of the \p ptxt buffer in bytes.
195
+ *
196
+ * \return EDHOC_SUCCESS on success, otherwise failure.
197
+ */
198
+ static int decrypt_ciphertext(const struct edhoc_context *ctx,
199
+ const uint8_t *key, size_t key_len,
200
+ const uint8_t *iv, size_t iv_len,
201
+ const uint8_t *aad, size_t aad_len,
202
+ const uint8_t *ctxt, size_t ctxt_len,
203
+ uint8_t *ptxt, size_t ptxt_len);
204
+
205
+ /**
206
+ * \brief Parsed cborised PLAINTEXT_4.
207
+ *
208
+ * \param[in] ctx EDHOC context.
209
+ * \param[in] ptxt Buffer containing the PLAINTEXT_4.
210
+ * \param ptxt_len Size of the \p ptxt buffer in bytes.
211
+ *
212
+ * \return EDHOC_SUCCESS on success, otherwise failure.
213
+ */
214
+ static int parse_plaintext(struct edhoc_context *ctx, const uint8_t *ptxt,
215
+ size_t ptxt_len);
216
+
217
+ /* Static function definitions --------------------------------------------- */
218
+
219
+ static inline size_t cbor_int_mem_req(int32_t val)
220
+ {
221
+ if (val >= ONE_BYTE_CBOR_INT_MIN_VALUE &&
222
+ val <= ONE_BYTE_CBOR_INT_MAX_VALUE) {
223
+ return 1;
224
+ } else if (val >= -(UINT8_MAX + 1) && val <= UINT8_MAX) {
225
+ return 2;
226
+ } else if (val >= -(UINT16_MAX + 1) && val <= UINT16_MAX) {
227
+ return 3;
228
+ } else {
229
+ return 4;
230
+ }
231
+ }
232
+
233
+ static inline size_t cbor_tstr_overhead(size_t len)
234
+ {
235
+ if (len <= 23) {
236
+ return 1;
237
+ } else if (len <= UINT8_MAX) {
238
+ return 2;
239
+ } else if (len <= UINT16_MAX) {
240
+ return 3;
241
+ } else if (len <= UINT32_MAX) {
242
+ return 4;
243
+ } else {
244
+ return 5;
245
+ }
246
+ }
247
+
248
+ static inline size_t cbor_bstr_overhead(size_t len)
249
+ {
250
+ if (len <= 23) {
251
+ return 1;
252
+ } else if (len <= UINT8_MAX) {
253
+ return 2;
254
+ } else if (len <= UINT16_MAX) {
255
+ return 3;
256
+ } else if (len <= UINT32_MAX) {
257
+ return 4;
258
+ } else {
259
+ return 5;
260
+ }
261
+ }
262
+
263
+ static int compute_plaintext_4_len(const struct edhoc_context *ctx,
264
+ size_t *ptxt_4_len)
265
+ {
266
+ if (NULL == ctx || NULL == ptxt_4_len)
267
+ return EDHOC_ERROR_INVALID_ARGUMENT;
268
+
269
+ size_t len = 0;
270
+
271
+ for (size_t i = 0; i < ctx->nr_of_ead_tokens; ++i) {
272
+ len += cbor_int_mem_req(ctx->ead_token[i].label);
273
+ len += ctx->ead_token[i].value_len + 1;
274
+ len += cbor_bstr_overhead(ctx->ead_token[i].value_len);
275
+ }
276
+
277
+ *ptxt_4_len = len;
278
+ return EDHOC_SUCCESS;
279
+ }
280
+
281
+ static int prepare_plaintext_4(const struct edhoc_context *ctx, uint8_t *ptxt,
282
+ size_t ptxt_size, size_t *ptxt_len)
283
+ {
284
+ if (NULL == ctx || NULL == ptxt || NULL == ptxt_len)
285
+ return EDHOC_ERROR_INVALID_ARGUMENT;
286
+
287
+ int ret = EDHOC_ERROR_GENERIC_ERROR;
288
+
289
+ struct plaintext_4_EAD_4 ead_4 = { 0 };
290
+
291
+ if (ARRAY_SIZE(ead_4._plaintext_4_EAD_4._ead_x) < ctx->nr_of_ead_tokens)
292
+ return EDHOC_ERROR_BUFFER_TOO_SMALL;
293
+
294
+ if (0 != ctx->nr_of_ead_tokens) {
295
+ ead_4._plaintext_4_EAD_4_present = true;
296
+ ead_4._plaintext_4_EAD_4._ead_x_count = ctx->nr_of_ead_tokens;
297
+
298
+ for (size_t i = 0; i < ctx->nr_of_ead_tokens; ++i) {
299
+ ead_4._plaintext_4_EAD_4._ead_x[i]._ead_x_ead_label =
300
+ ctx->ead_token[i].label;
301
+ ead_4._plaintext_4_EAD_4._ead_x[i]
302
+ ._ead_x_ead_value.value =
303
+ ctx->ead_token[i].value;
304
+ ead_4._plaintext_4_EAD_4._ead_x[i]._ead_x_ead_value.len =
305
+ ctx->ead_token[i].value_len;
306
+ ead_4._plaintext_4_EAD_4._ead_x[i]
307
+ ._ead_x_ead_value_present =
308
+ (NULL != ctx->ead_token[i].value);
309
+ }
310
+ } else {
311
+ ead_4._plaintext_4_EAD_4_present = false;
312
+ }
313
+
314
+ ret = cbor_encode_plaintext_4_EAD_4(ptxt, ptxt_size, &ead_4, ptxt_len);
315
+
316
+ if (EDHOC_SUCCESS != ret)
317
+ return EDHOC_ERROR_CBOR_FAILURE;
318
+
319
+ return EDHOC_SUCCESS;
320
+ }
321
+
322
+ static size_t compute_aad_4_len(const struct edhoc_context *ctx)
323
+ {
324
+ size_t len = 0;
325
+
326
+ len += sizeof("Encrypt0") + cbor_tstr_overhead(sizeof("Encrypt0"));
327
+ len += 0 + cbor_bstr_overhead(0);
328
+ len += ctx->th_len + cbor_bstr_overhead(ctx->th_len);
329
+
330
+ return len;
331
+ }
332
+
333
+ static int compute_key_iv_aad(const struct edhoc_context *ctx, uint8_t *key,
334
+ size_t key_len, uint8_t *iv, size_t iv_len,
335
+ uint8_t *aad, size_t aad_len)
336
+ {
337
+ if (NULL == ctx || NULL == key || 0 == key_len || NULL == iv ||
338
+ 0 == iv_len || NULL == aad || 0 == aad_len)
339
+ return EDHOC_ERROR_INVALID_ARGUMENT;
340
+
341
+ if (EDHOC_TH_STATE_4 != ctx->th_state ||
342
+ EDHOC_PRK_STATE_4E3M != ctx->prk_state)
343
+ return EDHOC_ERROR_BAD_STATE;
344
+
345
+ int ret = EDHOC_ERROR_GENERIC_ERROR;
346
+
347
+ const struct edhoc_cipher_suite csuite =
348
+ ctx->csuite[ctx->chosen_csuite_idx];
349
+
350
+ uint8_t key_id[EDHOC_KID_LEN] = { 0 };
351
+ struct info input_info = { 0 };
352
+
353
+ /* Calculate struct info cbor overhead. */
354
+ size_t len = 0;
355
+ len += cbor_int_mem_req(EDHOC_EXTRACT_PRK_INFO_LABEL_IV_3);
356
+ len += ctx->th_len + cbor_bstr_overhead(ctx->th_len);
357
+ len += cbor_int_mem_req((int32_t)csuite.aead_key_length);
358
+
359
+ ALLOCATE_ARRAY(uint8_t, info, len);
360
+ memset(info, 0, ALLOCATE_ARRAY_SIZEOF(info));
361
+
362
+ /* Generate K_3. */
363
+ input_info = (struct info){
364
+ ._info_label = EDHOC_EXTRACT_PRK_INFO_LABEL_K_4,
365
+ ._info_context.value = ctx->th,
366
+ ._info_context.len = ctx->th_len,
367
+ ._info_length = (uint32_t)csuite.aead_key_length,
368
+ };
369
+
370
+ memset(info, 0, ALLOCATE_ARRAY_SIZEOF(info));
371
+ len = 0;
372
+ ret = cbor_encode_info(info, ARRAY_SIZE_VLA(info), &input_info, &len);
373
+
374
+ if (ZCBOR_SUCCESS != ret)
375
+ return EDHOC_ERROR_CBOR_FAILURE;
376
+
377
+ ret = ctx->keys.generate_key(ctx->user_ctx, EDHOC_KT_EXPAND, ctx->prk,
378
+ ctx->prk_len, key_id);
379
+
380
+ if (EDHOC_SUCCESS != ret)
381
+ return EDHOC_ERROR_CRYPTO_FAILURE;
382
+
383
+ ret = ctx->crypto.expand(ctx->user_ctx, key_id, info, len, key,
384
+ key_len);
385
+ ctx->keys.destroy_key(ctx->user_ctx, key_id);
386
+ memset(key_id, 0, sizeof(key_id));
387
+
388
+ if (EDHOC_SUCCESS != ret)
389
+ return EDHOC_ERROR_CRYPTO_FAILURE;
390
+
391
+ /* Generate IV_3. */
392
+ input_info = (struct info){
393
+ ._info_label = EDHOC_EXTRACT_PRK_INFO_LABEL_IV_4,
394
+ ._info_context.value = ctx->th,
395
+ ._info_context.len = ctx->th_len,
396
+ ._info_length = (uint32_t)csuite.aead_iv_length,
397
+ };
398
+
399
+ memset(info, 0, sizeof(info));
400
+ len = 0;
401
+ ret = cbor_encode_info(info, ARRAY_SIZE_VLA(info), &input_info, &len);
402
+
403
+ if (ZCBOR_SUCCESS != ret)
404
+ return EDHOC_ERROR_CBOR_FAILURE;
405
+
406
+ ret = ctx->keys.generate_key(ctx->user_ctx, EDHOC_KT_EXPAND, ctx->prk,
407
+ ctx->prk_len, key_id);
408
+
409
+ if (EDHOC_SUCCESS != ret)
410
+ return EDHOC_ERROR_CRYPTO_FAILURE;
411
+
412
+ ret = ctx->crypto.expand(ctx->user_ctx, key_id, info, len, iv, iv_len);
413
+ ctx->keys.destroy_key(ctx->user_ctx, key_id);
414
+ memset(key_id, 0, sizeof(key_id));
415
+
416
+ if (EDHOC_SUCCESS != ret)
417
+ return EDHOC_ERROR_CRYPTO_FAILURE;
418
+
419
+ /* Generate AAD_3. */
420
+ struct enc_structure cose_enc_0 = {
421
+ ._enc_structure_protected.value = NULL,
422
+ ._enc_structure_protected.len = 0,
423
+ ._enc_structure_external_aad.value = ctx->th,
424
+ ._enc_structure_external_aad.len = ctx->th_len,
425
+ };
426
+
427
+ len = 0;
428
+ ret = cbor_encode_enc_structure(aad, aad_len, &cose_enc_0, &len);
429
+
430
+ if (EDHOC_SUCCESS != ret)
431
+ return EDHOC_ERROR_CBOR_FAILURE;
432
+
433
+ return EDHOC_SUCCESS;
434
+ }
435
+
436
+ static int compute_ciphertext(const struct edhoc_context *ctx,
437
+ const uint8_t *key, size_t key_len,
438
+ const uint8_t *iv, size_t iv_len,
439
+ const uint8_t *aad, size_t aad_len,
440
+ const uint8_t *ptxt, size_t ptxt_len,
441
+ uint8_t *ctxt, size_t ctxt_size, size_t *ctxt_len)
442
+ {
443
+ int ret = EDHOC_ERROR_GENERIC_ERROR;
444
+
445
+ uint8_t key_id[EDHOC_KID_LEN] = { 0 };
446
+ ret = ctx->keys.generate_key(ctx->user_ctx, EDHOC_KT_ENCRYPT, key,
447
+ key_len, key_id);
448
+
449
+ if (EDHOC_SUCCESS != ret)
450
+ return EDHOC_ERROR_CRYPTO_FAILURE;
451
+
452
+ ret = ctx->crypto.encrypt(ctx->user_ctx, key_id, iv, iv_len, aad,
453
+ aad_len, ptxt, ptxt_len, ctxt, ctxt_size,
454
+ ctxt_len);
455
+ ctx->keys.destroy_key(ctx->user_ctx, key_id);
456
+ memset(key_id, 0, sizeof(key_id));
457
+
458
+ if (EDHOC_SUCCESS != ret)
459
+ return EDHOC_ERROR_CRYPTO_FAILURE;
460
+
461
+ return EDHOC_SUCCESS;
462
+ }
463
+
464
+ static int gen_msg_4(const uint8_t *ctxt, size_t ctxt_len, uint8_t *msg_4,
465
+ size_t msg_4_size, size_t *msg_4_len)
466
+ {
467
+ if (NULL == ctxt || 0 == ctxt_len || NULL == msg_4 || 0 == msg_4_size ||
468
+ NULL == msg_4_len)
469
+ return EDHOC_ERROR_INVALID_ARGUMENT;
470
+
471
+ int ret = EDHOC_ERROR_GENERIC_ERROR;
472
+
473
+ const struct zcbor_string input_bstr = {
474
+ .value = ctxt,
475
+ .len = ctxt_len,
476
+ };
477
+
478
+ ret = cbor_encode_message_4_CIPHERTEXT_4(msg_4, msg_4_size, &input_bstr,
479
+ msg_4_len);
480
+
481
+ if (EDHOC_SUCCESS != ret)
482
+ return EDHOC_ERROR_CBOR_FAILURE;
483
+
484
+ return EDHOC_SUCCESS;
485
+ }
486
+
487
+ static int parse_msg_4(const uint8_t *msg_4, size_t msg_4_len,
488
+ const uint8_t **ctxt_4, size_t *ctxt_4_len)
489
+ {
490
+ if (NULL == msg_4 || 0 == msg_4_len || NULL == ctxt_4 ||
491
+ NULL == ctxt_4_len)
492
+ return EDHOC_ERROR_INVALID_ARGUMENT;
493
+
494
+ int ret = EDHOC_ERROR_GENERIC_ERROR;
495
+
496
+ size_t len = 0;
497
+ struct zcbor_string dec_msg_4 = { 0 };
498
+ ret = cbor_decode_message_4_CIPHERTEXT_4(msg_4, msg_4_len, &dec_msg_4,
499
+ &len);
500
+
501
+ if (ZCBOR_SUCCESS != ret)
502
+ return EDHOC_ERROR_CBOR_FAILURE;
503
+
504
+ *ctxt_4 = dec_msg_4.value;
505
+ *ctxt_4_len = dec_msg_4.len;
506
+
507
+ return EDHOC_SUCCESS;
508
+ }
509
+
510
+ static int decrypt_ciphertext(const struct edhoc_context *ctx,
511
+ const uint8_t *key, size_t key_len,
512
+ const uint8_t *iv, size_t iv_len,
513
+ const uint8_t *aad, size_t aad_len,
514
+ const uint8_t *ctxt, size_t ctxt_len,
515
+ uint8_t *ptxt, size_t ptxt_len)
516
+ {
517
+ int ret = EDHOC_ERROR_GENERIC_ERROR;
518
+
519
+ uint8_t key_id[EDHOC_KID_LEN] = { 0 };
520
+ ret = ctx->keys.generate_key(ctx->user_ctx, EDHOC_KT_DECRYPT, key,
521
+ key_len, key_id);
522
+
523
+ if (EDHOC_SUCCESS != ret)
524
+ return EDHOC_ERROR_CRYPTO_FAILURE;
525
+
526
+ size_t len = 0;
527
+ ret = ctx->crypto.decrypt(ctx->user_ctx, key_id, iv, iv_len, aad,
528
+ aad_len, ctxt, ctxt_len, ptxt, ptxt_len,
529
+ &len);
530
+ ctx->keys.destroy_key(ctx->user_ctx, key_id);
531
+ memset(key_id, 0, sizeof(key_id));
532
+
533
+ if (EDHOC_SUCCESS != ret || ptxt_len != len)
534
+ return EDHOC_ERROR_CRYPTO_FAILURE;
535
+
536
+ return EDHOC_SUCCESS;
537
+ }
538
+
539
+ static int parse_plaintext(struct edhoc_context *ctx, const uint8_t *ptxt,
540
+ size_t ptxt_len)
541
+ {
542
+ if (NULL == ctx || NULL == ptxt)
543
+ return EDHOC_ERROR_INVALID_ARGUMENT;
544
+
545
+ int ret = EDHOC_ERROR_GENERIC_ERROR;
546
+
547
+ size_t len = 0;
548
+ struct plaintext_4_EAD_4 ead_4 = { 0 };
549
+ ret = cbor_decode_plaintext_4_EAD_4(ptxt, ptxt_len, &ead_4, &len);
550
+
551
+ if (ZCBOR_SUCCESS != ret)
552
+ return EDHOC_ERROR_CBOR_FAILURE;
553
+
554
+ ctx->nr_of_ead_tokens = ead_4._plaintext_4_EAD_4._ead_x_count;
555
+ for (size_t i = 0; i < ead_4._plaintext_4_EAD_4._ead_x_count; ++i) {
556
+ ctx->ead_token[i].label =
557
+ ead_4._plaintext_4_EAD_4._ead_x[i]._ead_x_ead_label;
558
+ ctx->ead_token[i].value = ead_4._plaintext_4_EAD_4._ead_x[i]
559
+ ._ead_x_ead_value.value;
560
+ ctx->ead_token[i].value_len =
561
+ ead_4._plaintext_4_EAD_4._ead_x[i]._ead_x_ead_value.len;
562
+ }
563
+
564
+ return EDHOC_SUCCESS;
565
+ }
566
+
567
+ /* Module interface function definitions ----------------------------------- */
568
+
569
+ /**
570
+ * Steps for composition of message 4:
571
+ * 1. Choose most preferred cipher suite.
572
+ * 2. Compose EAD_4 if present.
573
+ * 3a. Compute plaintext length (PLAINTEXT_4).
574
+ * 3b. Prepare plaintext (PLAINTEXT_4).
575
+ * 4. Compute K_4, IV_4 and AAD_4.
576
+ * 5. Compute ciphertext.
577
+ * 6. Generate edhoc message 4.
578
+ */
579
+ int edhoc_message_4_compose(struct edhoc_context *ctx, uint8_t *msg_4,
580
+ size_t msg_4_size, size_t *msg_4_len)
581
+ {
582
+ if (NULL == ctx || NULL == msg_4 || 0 == msg_4_size ||
583
+ NULL == msg_4_len)
584
+ return EDHOC_ERROR_INVALID_ARGUMENT;
585
+
586
+ if (EDHOC_SM_COMPLETED != ctx->status ||
587
+ EDHOC_TH_STATE_4 != ctx->th_state ||
588
+ EDHOC_PRK_STATE_4E3M != ctx->prk_state)
589
+ return EDHOC_ERROR_BAD_STATE;
590
+
591
+ ctx->status = EDHOC_SM_ABORTED;
592
+ ctx->error_code = EDHOC_ERROR_CODE_UNSPECIFIED_ERROR;
593
+
594
+ int ret = EDHOC_ERROR_GENERIC_ERROR;
595
+
596
+ /* 1. Choose most preferred cipher suite. */
597
+ const struct edhoc_cipher_suite csuite =
598
+ ctx->csuite[ctx->chosen_csuite_idx];
599
+
600
+ /* 2. Compose EAD_4 if present. */
601
+ if (NULL != ctx->ead.compose && 0 != ARRAY_SIZE(ctx->ead_token) - 1) {
602
+ ret = ctx->ead.compose(ctx->user_ctx, EDHOC_MSG_4,
603
+ ctx->ead_token,
604
+ ARRAY_SIZE(ctx->ead_token) - 1,
605
+ &ctx->nr_of_ead_tokens);
606
+
607
+ if (EDHOC_SUCCESS != ret ||
608
+ ARRAY_SIZE(ctx->ead_token) - 1 < ctx->nr_of_ead_tokens)
609
+ return EDHOC_ERROR_EAD_COMPOSE_FAILURE;
610
+
611
+ if (NULL != ctx->logger) {
612
+ for (size_t i = 0; i < ctx->nr_of_ead_tokens; ++i) {
613
+ ctx->logger(ctx->user_ctx,
614
+ "EAD_4 compose label",
615
+ (const uint8_t *)&ctx->ead_token[i]
616
+ .label,
617
+ sizeof(ctx->ead_token[i].label));
618
+
619
+ if (0 != ctx->ead_token[i].value_len)
620
+ ctx->logger(
621
+ ctx->user_ctx,
622
+ "EAD_4 compose value",
623
+ ctx->ead_token[i].value,
624
+ ctx->ead_token[i].value_len);
625
+ }
626
+ }
627
+ }
628
+
629
+ /* 3a. Compute plaintext length (PLAINTEXT_4). */
630
+ size_t plaintext_len = 0;
631
+ ret = compute_plaintext_4_len(ctx, &plaintext_len);
632
+
633
+ if (EDHOC_SUCCESS != ret)
634
+ return EDHOC_ERROR_INVALID_ARGUMENT;
635
+
636
+ ALLOCATE_ARRAY(uint8_t, plaintext, plaintext_len);
637
+ memset(plaintext, 0, ALLOCATE_ARRAY_SIZEOF(plaintext));
638
+
639
+ /* 3b. Prepare plaintext (PLAINTEXT_4). */
640
+ ret = prepare_plaintext_4(ctx, plaintext, ARRAY_SIZE_VLA(plaintext),
641
+ &plaintext_len);
642
+
643
+ if (EDHOC_SUCCESS != ret)
644
+ return EDHOC_ERROR_CBOR_FAILURE;
645
+
646
+ if (NULL != ctx->logger)
647
+ ctx->logger(ctx->user_ctx, "PLAINTEXT_4", plaintext,
648
+ plaintext_len);
649
+
650
+ /* 4. Compute K_4, IV_4 and AAD_4. */
651
+ ALLOCATE_ARRAY(uint8_t, key, csuite.aead_key_length);
652
+ memset(key, 0, ALLOCATE_ARRAY_SIZEOF(key));
653
+
654
+ ALLOCATE_ARRAY(uint8_t, iv, csuite.aead_iv_length);
655
+ memset(iv, 0, ALLOCATE_ARRAY_SIZEOF(iv));
656
+
657
+ const size_t aad_len = compute_aad_4_len(ctx);
658
+ ALLOCATE_ARRAY(uint8_t, aad, aad_len);
659
+ memset(aad, 0, ALLOCATE_ARRAY_SIZEOF(aad));
660
+
661
+ ret = compute_key_iv_aad(ctx, key, ARRAY_SIZE_VLA(key), iv, ARRAY_SIZE_VLA(iv),
662
+ aad, ARRAY_SIZE_VLA(aad));
663
+
664
+ if (EDHOC_SUCCESS != ret)
665
+ return EDHOC_ERROR_CRYPTO_FAILURE;
666
+
667
+ if (NULL != ctx->logger) {
668
+ ctx->logger(ctx->user_ctx, "K_4", key, ARRAY_SIZE_VLA(key));
669
+ ctx->logger(ctx->user_ctx, "IV_4", iv, ARRAY_SIZE_VLA(iv));
670
+ ctx->logger(ctx->user_ctx, "AAD_4", aad, ARRAY_SIZE_VLA(aad));
671
+ }
672
+
673
+ /* 5. Compute ciphertext. */
674
+ size_t ciphertext_len = 0;
675
+ ALLOCATE_ARRAY(uint8_t, ciphertext, ARRAY_SIZE_VLA(plaintext) + csuite.aead_tag_length);
676
+ memset(ciphertext, 0, ALLOCATE_ARRAY_SIZEOF(ciphertext));
677
+
678
+ ret = compute_ciphertext(ctx, key, ARRAY_SIZE_VLA(key), iv, ARRAY_SIZE_VLA(iv),
679
+ aad, ARRAY_SIZE_VLA(aad), plaintext, plaintext_len,
680
+ ciphertext, ARRAY_SIZE_VLA(ciphertext),
681
+ &ciphertext_len);
682
+
683
+ if (EDHOC_SUCCESS != ret)
684
+ return EDHOC_ERROR_CRYPTO_FAILURE;
685
+
686
+ if (NULL != ctx->logger)
687
+ ctx->logger(ctx->user_ctx, "CIPHERTEXT_4", ciphertext,
688
+ ciphertext_len);
689
+
690
+ /* 6. Generate edhoc message 4. */
691
+ ret = gen_msg_4(ciphertext, ciphertext_len, msg_4, msg_4_size,
692
+ msg_4_len);
693
+
694
+ if (EDHOC_SUCCESS != ret)
695
+ return EDHOC_ERROR_CBOR_FAILURE;
696
+
697
+ if (NULL != ctx->logger)
698
+ ctx->logger(ctx->user_ctx, "message_4", msg_4, *msg_4_len);
699
+
700
+ ctx->nr_of_ead_tokens = 0;
701
+ memset(ctx->ead_token, 0, sizeof(ctx->ead_token));
702
+
703
+ ctx->status = EDHOC_SM_PERSISTED;
704
+ ctx->error_code = EDHOC_ERROR_CODE_SUCCESS;
705
+ return EDHOC_SUCCESS;
706
+ }
707
+
708
+ /**
709
+ * Steps for processing of message 4:
710
+ * 1. Choose most preferred cipher suite.
711
+ * 2. CBOR decode message 3.
712
+ * 3. Compute K_4, IV_4 and AAD_4.
713
+ * 4. Decrypt ciphertext.
714
+ * 5. Parse CBOR plaintext (PLAINTEXT_4).
715
+ * 6. Process EAD_4 if present.
716
+ */
717
+ int edhoc_message_4_process(struct edhoc_context *ctx, const uint8_t *msg_4,
718
+ size_t msg_4_len)
719
+ {
720
+ if (NULL == ctx || NULL == msg_4 || 0 == msg_4_len)
721
+ return EDHOC_ERROR_INVALID_ARGUMENT;
722
+
723
+ if (EDHOC_SM_COMPLETED != ctx->status ||
724
+ EDHOC_TH_STATE_4 != ctx->th_state ||
725
+ EDHOC_PRK_STATE_4E3M != ctx->prk_state)
726
+ return EDHOC_ERROR_BAD_STATE;
727
+
728
+ ctx->status = EDHOC_SM_ABORTED;
729
+ ctx->error_code = EDHOC_ERROR_CODE_UNSPECIFIED_ERROR;
730
+
731
+ int ret = EDHOC_ERROR_GENERIC_ERROR;
732
+
733
+ /* 1. Choose most preferred cipher suite. */
734
+ const struct edhoc_cipher_suite csuite =
735
+ ctx->csuite[ctx->chosen_csuite_idx];
736
+
737
+ /* 2. CBOR decode message 3. */
738
+ const uint8_t *ctxt = NULL;
739
+ size_t ctxt_len = 0;
740
+
741
+ ret = parse_msg_4(msg_4, msg_4_len, &ctxt, &ctxt_len);
742
+
743
+ if (EDHOC_SUCCESS != ret)
744
+ return EDHOC_ERROR_MSG_4_PROCESS_FAILURE;
745
+
746
+ if (NULL != ctx->logger)
747
+ ctx->logger(ctx->user_ctx, "CIPHERTEXT_4", ctxt, ctxt_len);
748
+
749
+ /* 3. Compute K_4, IV_4 and AAD_4. */
750
+ ALLOCATE_ARRAY(uint8_t, key, csuite.aead_key_length);
751
+ memset(key, 0, ALLOCATE_ARRAY_SIZEOF(key));
752
+
753
+ ALLOCATE_ARRAY(uint8_t, iv, csuite.aead_iv_length);
754
+ memset(iv, 0, ALLOCATE_ARRAY_SIZEOF(iv));
755
+
756
+ const size_t aad_len = compute_aad_4_len(ctx);
757
+ ALLOCATE_ARRAY(uint8_t, aad, aad_len);
758
+ memset(aad, 0, ALLOCATE_ARRAY_SIZEOF(aad));
759
+
760
+ ret = compute_key_iv_aad(ctx, key, ARRAY_SIZE_VLA(key), iv, ARRAY_SIZE_VLA(iv),
761
+ aad, ARRAY_SIZE_VLA(aad));
762
+
763
+ if (EDHOC_SUCCESS != ret)
764
+ return EDHOC_ERROR_CRYPTO_FAILURE;
765
+
766
+ if (NULL != ctx->logger) {
767
+ ctx->logger(ctx->user_ctx, "K_4", key, ARRAY_SIZE_VLA(key));
768
+ ctx->logger(ctx->user_ctx, "IV_4", iv, ARRAY_SIZE_VLA(iv));
769
+ ctx->logger(ctx->user_ctx, "AAD_4", aad, ARRAY_SIZE_VLA(aad));
770
+ }
771
+
772
+ /* 4. Decrypt ciphertext. */
773
+ ALLOCATE_ARRAY(uint8_t, ptxt, ctxt_len - csuite.aead_tag_length);
774
+ memset(ptxt, 0, ALLOCATE_ARRAY_SIZEOF(ptxt));
775
+
776
+ ret = decrypt_ciphertext(ctx, key, ARRAY_SIZE_VLA(key), iv, ARRAY_SIZE_VLA(iv),
777
+ aad, ARRAY_SIZE_VLA(aad), ctxt, ctxt_len, ptxt,
778
+ ARRAY_SIZE_VLA(ptxt));
779
+
780
+ if (EDHOC_SUCCESS != ret)
781
+ return EDHOC_ERROR_CRYPTO_FAILURE;
782
+
783
+ if (NULL != ctx->logger)
784
+ ctx->logger(ctx->user_ctx, "PLAINTEXT_4", ptxt,
785
+ ARRAY_SIZE_VLA(ptxt));
786
+
787
+ /* 5. Parse CBOR plaintext (PLAINTEXT_4). */
788
+ ret = parse_plaintext(ctx, ptxt, ARRAY_SIZE_VLA(ptxt));
789
+
790
+ if (EDHOC_SUCCESS != ret)
791
+ return EDHOC_ERROR_CBOR_FAILURE;
792
+
793
+ /* 6. Process EAD_4 if present. */
794
+ if (NULL != ctx->ead.process && 0 != ARRAY_SIZE(ctx->ead_token) - 1 &&
795
+ 0 != ctx->nr_of_ead_tokens) {
796
+ ret = ctx->ead.process(ctx->user_ctx, EDHOC_MSG_4,
797
+ ctx->ead_token, ctx->nr_of_ead_tokens);
798
+
799
+ if (EDHOC_SUCCESS != ret)
800
+ return EDHOC_ERROR_EAD_PROCESS_FAILURE;
801
+
802
+ if (NULL != ctx->logger) {
803
+ for (size_t i = 0; i < ctx->nr_of_ead_tokens; ++i) {
804
+ ctx->logger(ctx->user_ctx,
805
+ "EAD_4 process label",
806
+ (const uint8_t *)&ctx->ead_token[i]
807
+ .label,
808
+ sizeof(ctx->ead_token[i].label));
809
+
810
+ if (0 != ctx->ead_token[i].value_len)
811
+ ctx->logger(
812
+ ctx->user_ctx,
813
+ "EAD_4 process value",
814
+ ctx->ead_token[i].value,
815
+ ctx->ead_token[i].value_len);
816
+ }
817
+ }
818
+ }
819
+
820
+ ctx->nr_of_ead_tokens = 0;
821
+ memset(ctx->ead_token, 0, sizeof(ctx->ead_token));
822
+
823
+ ctx->status = EDHOC_SM_PERSISTED;
824
+ ctx->error_code = EDHOC_ERROR_CODE_SUCCESS;
825
+ return EDHOC_SUCCESS;
826
+ }