edhoc 1.4.0 → 2.0.0

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 (759) hide show
  1. package/.clang-format +79 -0
  2. package/README.md +6 -5
  3. package/dist/cbor-utils.d.ts +30 -0
  4. package/dist/cbor-utils.d.ts.map +1 -0
  5. package/dist/cbor-utils.js +179 -0
  6. package/dist/cipher-suites.d.ts +13 -0
  7. package/dist/cipher-suites.d.ts.map +1 -0
  8. package/dist/cipher-suites.js +22 -0
  9. package/dist/edhoc.d.ts +84 -283
  10. package/dist/edhoc.d.ts.map +1 -1
  11. package/dist/edhoc.js +562 -34
  12. package/package.json +5 -19
  13. package/.gitmodules +0 -3
  14. package/binding.gyp +0 -66
  15. package/dist/bindings.d.ts +0 -5
  16. package/dist/bindings.d.ts.map +0 -1
  17. package/dist/bindings.js +0 -10
  18. package/external/libedhoc/backends/cbor/include/backend_cbor_bstr_type_decode.h +0 -35
  19. package/external/libedhoc/backends/cbor/include/backend_cbor_bstr_type_encode.h +0 -35
  20. package/external/libedhoc/backends/cbor/include/backend_cbor_bstr_type_types.h +0 -34
  21. package/external/libedhoc/backends/cbor/include/backend_cbor_ead_decode.h +0 -35
  22. package/external/libedhoc/backends/cbor/include/backend_cbor_ead_encode.h +0 -35
  23. package/external/libedhoc/backends/cbor/include/backend_cbor_edhoc_types.h +0 -102
  24. package/external/libedhoc/backends/cbor/include/backend_cbor_enc_structure_decode.h +0 -35
  25. package/external/libedhoc/backends/cbor/include/backend_cbor_enc_structure_encode.h +0 -35
  26. package/external/libedhoc/backends/cbor/include/backend_cbor_enc_structure_types.h +0 -37
  27. package/external/libedhoc/backends/cbor/include/backend_cbor_id_cred_x_decode.h +0 -35
  28. package/external/libedhoc/backends/cbor/include/backend_cbor_id_cred_x_encode.h +0 -35
  29. package/external/libedhoc/backends/cbor/include/backend_cbor_info_decode.h +0 -35
  30. package/external/libedhoc/backends/cbor/include/backend_cbor_info_encode.h +0 -35
  31. package/external/libedhoc/backends/cbor/include/backend_cbor_int_type_decode.h +0 -35
  32. package/external/libedhoc/backends/cbor/include/backend_cbor_int_type_encode.h +0 -35
  33. package/external/libedhoc/backends/cbor/include/backend_cbor_int_type_types.h +0 -34
  34. package/external/libedhoc/backends/cbor/include/backend_cbor_message_1_decode.h +0 -35
  35. package/external/libedhoc/backends/cbor/include/backend_cbor_message_1_encode.h +0 -35
  36. package/external/libedhoc/backends/cbor/include/backend_cbor_message_2_decode.h +0 -35
  37. package/external/libedhoc/backends/cbor/include/backend_cbor_message_2_encode.h +0 -35
  38. package/external/libedhoc/backends/cbor/include/backend_cbor_message_3_decode.h +0 -35
  39. package/external/libedhoc/backends/cbor/include/backend_cbor_message_3_encode.h +0 -35
  40. package/external/libedhoc/backends/cbor/include/backend_cbor_message_4_decode.h +0 -35
  41. package/external/libedhoc/backends/cbor/include/backend_cbor_message_4_encode.h +0 -35
  42. package/external/libedhoc/backends/cbor/include/backend_cbor_message_error_decode.h +0 -35
  43. package/external/libedhoc/backends/cbor/include/backend_cbor_message_error_encode.h +0 -35
  44. package/external/libedhoc/backends/cbor/include/backend_cbor_plaintext_2_decode.h +0 -35
  45. package/external/libedhoc/backends/cbor/include/backend_cbor_plaintext_2_encode.h +0 -35
  46. package/external/libedhoc/backends/cbor/include/backend_cbor_plaintext_3_decode.h +0 -35
  47. package/external/libedhoc/backends/cbor/include/backend_cbor_plaintext_3_encode.h +0 -35
  48. package/external/libedhoc/backends/cbor/include/backend_cbor_plaintext_4_decode.h +0 -35
  49. package/external/libedhoc/backends/cbor/include/backend_cbor_plaintext_4_encode.h +0 -35
  50. package/external/libedhoc/backends/cbor/include/backend_cbor_sig_structure_decode.h +0 -35
  51. package/external/libedhoc/backends/cbor/include/backend_cbor_sig_structure_encode.h +0 -35
  52. package/external/libedhoc/backends/cbor/include/backend_cbor_sig_structure_types.h +0 -38
  53. package/external/libedhoc/backends/cbor/include/backend_cbor_x509_types.h +0 -180
  54. package/external/libedhoc/backends/cbor/src/backend_cbor_bstr_type_decode.c +0 -50
  55. package/external/libedhoc/backends/cbor/src/backend_cbor_bstr_type_encode.c +0 -50
  56. package/external/libedhoc/backends/cbor/src/backend_cbor_ead_decode.c +0 -69
  57. package/external/libedhoc/backends/cbor/src/backend_cbor_ead_encode.c +0 -69
  58. package/external/libedhoc/backends/cbor/src/backend_cbor_enc_structure_decode.c +0 -53
  59. package/external/libedhoc/backends/cbor/src/backend_cbor_enc_structure_encode.c +0 -53
  60. package/external/libedhoc/backends/cbor/src/backend_cbor_id_cred_x_decode.c +0 -152
  61. package/external/libedhoc/backends/cbor/src/backend_cbor_id_cred_x_encode.c +0 -152
  62. package/external/libedhoc/backends/cbor/src/backend_cbor_info_decode.c +0 -52
  63. package/external/libedhoc/backends/cbor/src/backend_cbor_info_encode.c +0 -52
  64. package/external/libedhoc/backends/cbor/src/backend_cbor_int_type_decode.c +0 -50
  65. package/external/libedhoc/backends/cbor/src/backend_cbor_int_type_encode.c +0 -50
  66. package/external/libedhoc/backends/cbor/src/backend_cbor_message_1_decode.c +0 -115
  67. package/external/libedhoc/backends/cbor/src/backend_cbor_message_1_encode.c +0 -115
  68. package/external/libedhoc/backends/cbor/src/backend_cbor_message_2_decode.c +0 -50
  69. package/external/libedhoc/backends/cbor/src/backend_cbor_message_2_encode.c +0 -50
  70. package/external/libedhoc/backends/cbor/src/backend_cbor_message_3_decode.c +0 -50
  71. package/external/libedhoc/backends/cbor/src/backend_cbor_message_3_encode.c +0 -50
  72. package/external/libedhoc/backends/cbor/src/backend_cbor_message_4_decode.c +0 -50
  73. package/external/libedhoc/backends/cbor/src/backend_cbor_message_4_encode.c +0 -50
  74. package/external/libedhoc/backends/cbor/src/backend_cbor_message_error_decode.c +0 -92
  75. package/external/libedhoc/backends/cbor/src/backend_cbor_message_error_encode.c +0 -92
  76. package/external/libedhoc/backends/cbor/src/backend_cbor_plaintext_2_decode.c +0 -216
  77. package/external/libedhoc/backends/cbor/src/backend_cbor_plaintext_2_encode.c +0 -217
  78. package/external/libedhoc/backends/cbor/src/backend_cbor_plaintext_3_decode.c +0 -212
  79. package/external/libedhoc/backends/cbor/src/backend_cbor_plaintext_3_encode.c +0 -212
  80. package/external/libedhoc/backends/cbor/src/backend_cbor_plaintext_4_decode.c +0 -87
  81. package/external/libedhoc/backends/cbor/src/backend_cbor_plaintext_4_encode.c +0 -87
  82. package/external/libedhoc/backends/cbor/src/backend_cbor_sig_structure_decode.c +0 -54
  83. package/external/libedhoc/backends/cbor/src/backend_cbor_sig_structure_encode.c +0 -54
  84. package/external/libedhoc/externals/Unity/examples/example_1/src/ProductionCode.c +0 -31
  85. package/external/libedhoc/externals/Unity/examples/example_1/src/ProductionCode.h +0 -10
  86. package/external/libedhoc/externals/Unity/examples/example_1/src/ProductionCode2.c +0 -18
  87. package/external/libedhoc/externals/Unity/examples/example_1/src/ProductionCode2.h +0 -9
  88. package/external/libedhoc/externals/Unity/examples/example_1/test/TestProductionCode.c +0 -69
  89. package/external/libedhoc/externals/Unity/examples/example_1/test/TestProductionCode2.c +0 -38
  90. package/external/libedhoc/externals/Unity/examples/example_1/test/test_runners/TestProductionCode2_Runner.c +0 -53
  91. package/external/libedhoc/externals/Unity/examples/example_1/test/test_runners/TestProductionCode_Runner.c +0 -57
  92. package/external/libedhoc/externals/Unity/examples/example_2/src/ProductionCode.c +0 -31
  93. package/external/libedhoc/externals/Unity/examples/example_2/src/ProductionCode.h +0 -10
  94. package/external/libedhoc/externals/Unity/examples/example_2/src/ProductionCode2.c +0 -18
  95. package/external/libedhoc/externals/Unity/examples/example_2/src/ProductionCode2.h +0 -9
  96. package/external/libedhoc/externals/Unity/examples/example_2/test/TestProductionCode.c +0 -71
  97. package/external/libedhoc/externals/Unity/examples/example_2/test/TestProductionCode2.c +0 -40
  98. package/external/libedhoc/externals/Unity/examples/example_2/test/test_runners/TestProductionCode2_Runner.c +0 -16
  99. package/external/libedhoc/externals/Unity/examples/example_2/test/test_runners/TestProductionCode_Runner.c +0 -18
  100. package/external/libedhoc/externals/Unity/examples/example_2/test/test_runners/all_tests.c +0 -19
  101. package/external/libedhoc/externals/Unity/examples/example_3/helper/UnityHelper.c +0 -17
  102. package/external/libedhoc/externals/Unity/examples/example_3/helper/UnityHelper.h +0 -19
  103. package/external/libedhoc/externals/Unity/examples/example_3/src/ProductionCode.c +0 -31
  104. package/external/libedhoc/externals/Unity/examples/example_3/src/ProductionCode.h +0 -10
  105. package/external/libedhoc/externals/Unity/examples/example_3/src/ProductionCode2.c +0 -18
  106. package/external/libedhoc/externals/Unity/examples/example_3/src/ProductionCode2.h +0 -9
  107. package/external/libedhoc/externals/Unity/examples/example_3/test/TestProductionCode.c +0 -69
  108. package/external/libedhoc/externals/Unity/examples/example_3/test/TestProductionCode2.c +0 -38
  109. package/external/libedhoc/externals/Unity/examples/example_4/src/ProductionCode.c +0 -31
  110. package/external/libedhoc/externals/Unity/examples/example_4/src/ProductionCode.h +0 -10
  111. package/external/libedhoc/externals/Unity/examples/example_4/src/ProductionCode2.c +0 -18
  112. package/external/libedhoc/externals/Unity/examples/example_4/src/ProductionCode2.h +0 -9
  113. package/external/libedhoc/externals/Unity/examples/example_4/test/TestProductionCode.c +0 -70
  114. package/external/libedhoc/externals/Unity/examples/example_4/test/TestProductionCode2.c +0 -42
  115. package/external/libedhoc/externals/Unity/examples/example_4/test/test_runners/TestProductionCode2_Runner.c +0 -53
  116. package/external/libedhoc/externals/Unity/examples/example_4/test/test_runners/TestProductionCode_Runner.c +0 -57
  117. package/external/libedhoc/externals/Unity/examples/unity_config.h +0 -251
  118. package/external/libedhoc/externals/Unity/extras/bdd/src/unity_bdd.h +0 -44
  119. package/external/libedhoc/externals/Unity/extras/bdd/test/test_bdd.c +0 -129
  120. package/external/libedhoc/externals/Unity/extras/fixture/src/unity_fixture.c +0 -310
  121. package/external/libedhoc/externals/Unity/extras/fixture/src/unity_fixture.h +0 -95
  122. package/external/libedhoc/externals/Unity/extras/fixture/src/unity_fixture_internals.h +0 -51
  123. package/external/libedhoc/externals/Unity/extras/fixture/test/main/AllTests.c +0 -20
  124. package/external/libedhoc/externals/Unity/extras/fixture/test/template_fixture_tests.c +0 -40
  125. package/external/libedhoc/externals/Unity/extras/fixture/test/unity_fixture_Test.c +0 -246
  126. package/external/libedhoc/externals/Unity/extras/fixture/test/unity_fixture_TestRunner.c +0 -33
  127. package/external/libedhoc/externals/Unity/extras/memory/src/unity_memory.c +0 -203
  128. package/external/libedhoc/externals/Unity/extras/memory/src/unity_memory.h +0 -61
  129. package/external/libedhoc/externals/Unity/extras/memory/test/unity_memory_Test.c +0 -326
  130. package/external/libedhoc/externals/Unity/extras/memory/test/unity_memory_TestRunner.c +0 -50
  131. package/external/libedhoc/externals/Unity/extras/memory/test/unity_output_Spy.c +0 -57
  132. package/external/libedhoc/externals/Unity/extras/memory/test/unity_output_Spy.h +0 -17
  133. package/external/libedhoc/externals/Unity/src/unity.c +0 -2501
  134. package/external/libedhoc/externals/Unity/src/unity.h +0 -698
  135. package/external/libedhoc/externals/Unity/src/unity_internals.h +0 -1183
  136. package/external/libedhoc/externals/Unity/test/expectdata/testsample_cmd.c +0 -61
  137. package/external/libedhoc/externals/Unity/test/expectdata/testsample_def.c +0 -57
  138. package/external/libedhoc/externals/Unity/test/expectdata/testsample_head1.c +0 -55
  139. package/external/libedhoc/externals/Unity/test/expectdata/testsample_head1.h +0 -15
  140. package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_cmd.c +0 -80
  141. package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_def.c +0 -76
  142. package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_head1.c +0 -75
  143. package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_head1.h +0 -13
  144. package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_new1.c +0 -89
  145. package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_new2.c +0 -89
  146. package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_param.c +0 -77
  147. package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_run1.c +0 -89
  148. package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_run2.c +0 -89
  149. package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_yaml.c +0 -90
  150. package/external/libedhoc/externals/Unity/test/expectdata/testsample_new1.c +0 -67
  151. package/external/libedhoc/externals/Unity/test/expectdata/testsample_new2.c +0 -70
  152. package/external/libedhoc/externals/Unity/test/expectdata/testsample_param.c +0 -58
  153. package/external/libedhoc/externals/Unity/test/expectdata/testsample_run1.c +0 -67
  154. package/external/libedhoc/externals/Unity/test/expectdata/testsample_run2.c +0 -70
  155. package/external/libedhoc/externals/Unity/test/expectdata/testsample_yaml.c +0 -71
  156. package/external/libedhoc/externals/Unity/test/testdata/CException.h +0 -18
  157. package/external/libedhoc/externals/Unity/test/testdata/Defs.h +0 -16
  158. package/external/libedhoc/externals/Unity/test/testdata/cmock.h +0 -21
  159. package/external/libedhoc/externals/Unity/test/testdata/mockMock.h +0 -20
  160. package/external/libedhoc/externals/Unity/test/testdata/testRunnerGenerator.c +0 -204
  161. package/external/libedhoc/externals/Unity/test/testdata/testRunnerGeneratorSmall.c +0 -73
  162. package/external/libedhoc/externals/Unity/test/testdata/testRunnerGeneratorWithMocks.c +0 -200
  163. package/external/libedhoc/externals/Unity/test/tests/self_assessment_utils.h +0 -151
  164. package/external/libedhoc/externals/Unity/test/tests/test_unity_arrays.c +0 -2941
  165. package/external/libedhoc/externals/Unity/test/tests/test_unity_core.c +0 -375
  166. package/external/libedhoc/externals/Unity/test/tests/test_unity_doubles.c +0 -1285
  167. package/external/libedhoc/externals/Unity/test/tests/test_unity_floats.c +0 -1395
  168. package/external/libedhoc/externals/Unity/test/tests/test_unity_integers.c +0 -2863
  169. package/external/libedhoc/externals/Unity/test/tests/test_unity_integers_64.c +0 -783
  170. package/external/libedhoc/externals/Unity/test/tests/test_unity_memory.c +0 -82
  171. package/external/libedhoc/externals/Unity/test/tests/test_unity_parameterized.c +0 -309
  172. package/external/libedhoc/externals/Unity/test/tests/test_unity_parameterizedDemo.c +0 -28
  173. package/external/libedhoc/externals/Unity/test/tests/test_unity_strings.c +0 -330
  174. package/external/libedhoc/externals/Unity/test/tests/types_for_test.h +0 -21
  175. package/external/libedhoc/externals/compact25519/src/c25519/c25519.c +0 -126
  176. package/external/libedhoc/externals/compact25519/src/c25519/c25519.h +0 -49
  177. package/external/libedhoc/externals/compact25519/src/c25519/ed25519.c +0 -323
  178. package/external/libedhoc/externals/compact25519/src/c25519/ed25519.h +0 -84
  179. package/external/libedhoc/externals/compact25519/src/c25519/edsign.c +0 -171
  180. package/external/libedhoc/externals/compact25519/src/c25519/edsign.h +0 -53
  181. package/external/libedhoc/externals/compact25519/src/c25519/f25519.c +0 -330
  182. package/external/libedhoc/externals/compact25519/src/c25519/f25519.h +0 -98
  183. package/external/libedhoc/externals/compact25519/src/c25519/fprime.c +0 -226
  184. package/external/libedhoc/externals/compact25519/src/c25519/fprime.h +0 -81
  185. package/external/libedhoc/externals/compact25519/src/c25519/sha512.c +0 -230
  186. package/external/libedhoc/externals/compact25519/src/c25519/sha512.h +0 -54
  187. package/external/libedhoc/externals/compact25519/src/compact_ed25519.c +0 -46
  188. package/external/libedhoc/externals/compact25519/src/compact_ed25519.h +0 -110
  189. package/external/libedhoc/externals/compact25519/src/compact_wipe.c +0 -12
  190. package/external/libedhoc/externals/compact25519/src/compact_wipe.h +0 -14
  191. package/external/libedhoc/externals/compact25519/src/compact_x25519.c +0 -68
  192. package/external/libedhoc/externals/compact25519/src/compact_x25519.h +0 -101
  193. package/external/libedhoc/externals/compact25519/test/pcg_random.h +0 -25
  194. package/external/libedhoc/externals/compact25519/test/run-all.c +0 -178
  195. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/Hacl_Curve25519.h +0 -21
  196. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/everest.h +0 -234
  197. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/kremlib/FStar_UInt128.h +0 -124
  198. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/kremlib/FStar_UInt64_FStar_UInt32_FStar_UInt16_FStar_UInt8.h +0 -280
  199. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/kremlib.h +0 -29
  200. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/kremlin/c_endianness.h +0 -204
  201. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/builtin.h +0 -16
  202. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/callconv.h +0 -46
  203. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/compat.h +0 -34
  204. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/debug.h +0 -57
  205. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/target.h +0 -102
  206. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/types.h +0 -61
  207. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/kremlin/internal/wasmsupport.h +0 -5
  208. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/vs2013/Hacl_Curve25519.h +0 -21
  209. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/vs2013/inttypes.h +0 -36
  210. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/vs2013/stdbool.h +0 -31
  211. package/external/libedhoc/externals/mbedtls/3rdparty/everest/include/everest/x25519.h +0 -190
  212. package/external/libedhoc/externals/mbedtls/3rdparty/everest/library/Hacl_Curve25519.c +0 -760
  213. package/external/libedhoc/externals/mbedtls/3rdparty/everest/library/Hacl_Curve25519_joined.c +0 -50
  214. package/external/libedhoc/externals/mbedtls/3rdparty/everest/library/everest.c +0 -102
  215. package/external/libedhoc/externals/mbedtls/3rdparty/everest/library/kremlib/FStar_UInt128_extracted.c +0 -413
  216. package/external/libedhoc/externals/mbedtls/3rdparty/everest/library/kremlib/FStar_UInt64_FStar_UInt32_FStar_UInt16_FStar_UInt8.c +0 -100
  217. package/external/libedhoc/externals/mbedtls/3rdparty/everest/library/legacy/Hacl_Curve25519.c +0 -805
  218. package/external/libedhoc/externals/mbedtls/3rdparty/everest/library/x25519.c +0 -186
  219. package/external/libedhoc/externals/mbedtls/3rdparty/p256-m/p256-m/p256-m.c +0 -1514
  220. package/external/libedhoc/externals/mbedtls/3rdparty/p256-m/p256-m/p256-m.h +0 -135
  221. package/external/libedhoc/externals/mbedtls/3rdparty/p256-m/p256-m_driver_entrypoints.c +0 -312
  222. package/external/libedhoc/externals/mbedtls/3rdparty/p256-m/p256-m_driver_entrypoints.h +0 -219
  223. package/external/libedhoc/externals/mbedtls/configs/config-ccm-psk-dtls1_2.h +0 -92
  224. package/external/libedhoc/externals/mbedtls/configs/config-ccm-psk-tls1_2.h +0 -83
  225. package/external/libedhoc/externals/mbedtls/configs/config-no-entropy.h +0 -73
  226. package/external/libedhoc/externals/mbedtls/configs/config-suite-b.h +0 -106
  227. package/external/libedhoc/externals/mbedtls/configs/config-symmetric-only.h +0 -77
  228. package/external/libedhoc/externals/mbedtls/configs/config-thread.h +0 -76
  229. package/external/libedhoc/externals/mbedtls/configs/crypto-config-ccm-aes-sha256.h +0 -25
  230. package/external/libedhoc/externals/mbedtls/configs/crypto_config_profile_medium.h +0 -136
  231. package/external/libedhoc/externals/mbedtls/configs/tfm_mbedcrypto_config_profile_medium.h +0 -609
  232. package/external/libedhoc/externals/mbedtls/doxygen/input/doc_encdec.h +0 -54
  233. package/external/libedhoc/externals/mbedtls/doxygen/input/doc_hashing.h +0 -30
  234. package/external/libedhoc/externals/mbedtls/doxygen/input/doc_mainpage.h +0 -19
  235. package/external/libedhoc/externals/mbedtls/doxygen/input/doc_rng.h +0 -27
  236. package/external/libedhoc/externals/mbedtls/doxygen/input/doc_ssltls.h +0 -37
  237. package/external/libedhoc/externals/mbedtls/doxygen/input/doc_tcpip.h +0 -32
  238. package/external/libedhoc/externals/mbedtls/doxygen/input/doc_x509.h +0 -31
  239. package/external/libedhoc/externals/mbedtls/include/mbedtls/aes.h +0 -627
  240. package/external/libedhoc/externals/mbedtls/include/mbedtls/aria.h +0 -341
  241. package/external/libedhoc/externals/mbedtls/include/mbedtls/asn1.h +0 -641
  242. package/external/libedhoc/externals/mbedtls/include/mbedtls/asn1write.h +0 -389
  243. package/external/libedhoc/externals/mbedtls/include/mbedtls/base64.h +0 -82
  244. package/external/libedhoc/externals/mbedtls/include/mbedtls/bignum.h +0 -1084
  245. package/external/libedhoc/externals/mbedtls/include/mbedtls/build_info.h +0 -146
  246. package/external/libedhoc/externals/mbedtls/include/mbedtls/camellia.h +0 -303
  247. package/external/libedhoc/externals/mbedtls/include/mbedtls/ccm.h +0 -518
  248. package/external/libedhoc/externals/mbedtls/include/mbedtls/chacha20.h +0 -202
  249. package/external/libedhoc/externals/mbedtls/include/mbedtls/chachapoly.h +0 -342
  250. package/external/libedhoc/externals/mbedtls/include/mbedtls/check_config.h +0 -1206
  251. package/external/libedhoc/externals/mbedtls/include/mbedtls/cipher.h +0 -1183
  252. package/external/libedhoc/externals/mbedtls/include/mbedtls/cmac.h +0 -246
  253. package/external/libedhoc/externals/mbedtls/include/mbedtls/compat-2.x.h +0 -46
  254. package/external/libedhoc/externals/mbedtls/include/mbedtls/config_adjust_legacy_crypto.h +0 -183
  255. package/external/libedhoc/externals/mbedtls/include/mbedtls/config_adjust_legacy_from_psa.h +0 -877
  256. package/external/libedhoc/externals/mbedtls/include/mbedtls/config_adjust_psa_from_legacy.h +0 -334
  257. package/external/libedhoc/externals/mbedtls/include/mbedtls/config_adjust_psa_superset_legacy.h +0 -142
  258. package/external/libedhoc/externals/mbedtls/include/mbedtls/config_adjust_ssl.h +0 -76
  259. package/external/libedhoc/externals/mbedtls/include/mbedtls/config_adjust_x509.h +0 -25
  260. package/external/libedhoc/externals/mbedtls/include/mbedtls/config_psa.h +0 -55
  261. package/external/libedhoc/externals/mbedtls/include/mbedtls/constant_time.h +0 -36
  262. package/external/libedhoc/externals/mbedtls/include/mbedtls/ctr_drbg.h +0 -564
  263. package/external/libedhoc/externals/mbedtls/include/mbedtls/debug.h +0 -308
  264. package/external/libedhoc/externals/mbedtls/include/mbedtls/des.h +0 -385
  265. package/external/libedhoc/externals/mbedtls/include/mbedtls/dhm.h +0 -972
  266. package/external/libedhoc/externals/mbedtls/include/mbedtls/ecdh.h +0 -441
  267. package/external/libedhoc/externals/mbedtls/include/mbedtls/ecdsa.h +0 -671
  268. package/external/libedhoc/externals/mbedtls/include/mbedtls/ecjpake.h +0 -298
  269. package/external/libedhoc/externals/mbedtls/include/mbedtls/ecp.h +0 -1362
  270. package/external/libedhoc/externals/mbedtls/include/mbedtls/entropy.h +0 -273
  271. package/external/libedhoc/externals/mbedtls/include/mbedtls/error.h +0 -201
  272. package/external/libedhoc/externals/mbedtls/include/mbedtls/gcm.h +0 -370
  273. package/external/libedhoc/externals/mbedtls/include/mbedtls/hkdf.h +0 -124
  274. package/external/libedhoc/externals/mbedtls/include/mbedtls/hmac_drbg.h +0 -434
  275. package/external/libedhoc/externals/mbedtls/include/mbedtls/lms.h +0 -440
  276. package/external/libedhoc/externals/mbedtls/include/mbedtls/mbedtls_config.h +0 -4116
  277. package/external/libedhoc/externals/mbedtls/include/mbedtls/md.h +0 -640
  278. package/external/libedhoc/externals/mbedtls/include/mbedtls/md5.h +0 -190
  279. package/external/libedhoc/externals/mbedtls/include/mbedtls/memory_buffer_alloc.h +0 -142
  280. package/external/libedhoc/externals/mbedtls/include/mbedtls/net_sockets.h +0 -299
  281. package/external/libedhoc/externals/mbedtls/include/mbedtls/nist_kw.h +0 -166
  282. package/external/libedhoc/externals/mbedtls/include/mbedtls/oid.h +0 -722
  283. package/external/libedhoc/externals/mbedtls/include/mbedtls/pem.h +0 -160
  284. package/external/libedhoc/externals/mbedtls/include/mbedtls/pk.h +0 -1091
  285. package/external/libedhoc/externals/mbedtls/include/mbedtls/pkcs12.h +0 -186
  286. package/external/libedhoc/externals/mbedtls/include/mbedtls/pkcs5.h +0 -197
  287. package/external/libedhoc/externals/mbedtls/include/mbedtls/pkcs7.h +0 -241
  288. package/external/libedhoc/externals/mbedtls/include/mbedtls/platform.h +0 -485
  289. package/external/libedhoc/externals/mbedtls/include/mbedtls/platform_time.h +0 -79
  290. package/external/libedhoc/externals/mbedtls/include/mbedtls/platform_util.h +0 -201
  291. package/external/libedhoc/externals/mbedtls/include/mbedtls/poly1305.h +0 -168
  292. package/external/libedhoc/externals/mbedtls/include/mbedtls/private_access.h +0 -20
  293. package/external/libedhoc/externals/mbedtls/include/mbedtls/psa_util.h +0 -104
  294. package/external/libedhoc/externals/mbedtls/include/mbedtls/ripemd160.h +0 -136
  295. package/external/libedhoc/externals/mbedtls/include/mbedtls/rsa.h +0 -1143
  296. package/external/libedhoc/externals/mbedtls/include/mbedtls/sha1.h +0 -219
  297. package/external/libedhoc/externals/mbedtls/include/mbedtls/sha256.h +0 -198
  298. package/external/libedhoc/externals/mbedtls/include/mbedtls/sha3.h +0 -172
  299. package/external/libedhoc/externals/mbedtls/include/mbedtls/sha512.h +0 -208
  300. package/external/libedhoc/externals/mbedtls/include/mbedtls/ssl.h +0 -5369
  301. package/external/libedhoc/externals/mbedtls/include/mbedtls/ssl_cache.h +0 -187
  302. package/external/libedhoc/externals/mbedtls/include/mbedtls/ssl_ciphersuites.h +0 -616
  303. package/external/libedhoc/externals/mbedtls/include/mbedtls/ssl_cookie.h +0 -106
  304. package/external/libedhoc/externals/mbedtls/include/mbedtls/ssl_ticket.h +0 -181
  305. package/external/libedhoc/externals/mbedtls/include/mbedtls/threading.h +0 -105
  306. package/external/libedhoc/externals/mbedtls/include/mbedtls/timing.h +0 -94
  307. package/external/libedhoc/externals/mbedtls/include/mbedtls/version.h +0 -78
  308. package/external/libedhoc/externals/mbedtls/include/mbedtls/x509.h +0 -550
  309. package/external/libedhoc/externals/mbedtls/include/mbedtls/x509_crl.h +0 -184
  310. package/external/libedhoc/externals/mbedtls/include/mbedtls/x509_crt.h +0 -1196
  311. package/external/libedhoc/externals/mbedtls/include/mbedtls/x509_csr.h +0 -319
  312. package/external/libedhoc/externals/mbedtls/include/psa/build_info.h +0 -20
  313. package/external/libedhoc/externals/mbedtls/include/psa/crypto.h +0 -4685
  314. package/external/libedhoc/externals/mbedtls/include/psa/crypto_adjust_auto_enabled.h +0 -21
  315. package/external/libedhoc/externals/mbedtls/include/psa/crypto_adjust_config_key_pair_types.h +0 -91
  316. package/external/libedhoc/externals/mbedtls/include/psa/crypto_adjust_config_synonyms.h +0 -45
  317. package/external/libedhoc/externals/mbedtls/include/psa/crypto_builtin_composites.h +0 -210
  318. package/external/libedhoc/externals/mbedtls/include/psa/crypto_builtin_key_derivation.h +0 -118
  319. package/external/libedhoc/externals/mbedtls/include/psa/crypto_builtin_primitives.h +0 -114
  320. package/external/libedhoc/externals/mbedtls/include/psa/crypto_compat.h +0 -153
  321. package/external/libedhoc/externals/mbedtls/include/psa/crypto_config.h +0 -153
  322. package/external/libedhoc/externals/mbedtls/include/psa/crypto_driver_common.h +0 -44
  323. package/external/libedhoc/externals/mbedtls/include/psa/crypto_driver_contexts_composites.h +0 -151
  324. package/external/libedhoc/externals/mbedtls/include/psa/crypto_driver_contexts_key_derivation.h +0 -52
  325. package/external/libedhoc/externals/mbedtls/include/psa/crypto_driver_contexts_primitives.h +0 -105
  326. package/external/libedhoc/externals/mbedtls/include/psa/crypto_extra.h +0 -2064
  327. package/external/libedhoc/externals/mbedtls/include/psa/crypto_legacy.h +0 -88
  328. package/external/libedhoc/externals/mbedtls/include/psa/crypto_platform.h +0 -92
  329. package/external/libedhoc/externals/mbedtls/include/psa/crypto_se_driver.h +0 -1383
  330. package/external/libedhoc/externals/mbedtls/include/psa/crypto_sizes.h +0 -1282
  331. package/external/libedhoc/externals/mbedtls/include/psa/crypto_struct.h +0 -460
  332. package/external/libedhoc/externals/mbedtls/include/psa/crypto_types.h +0 -453
  333. package/external/libedhoc/externals/mbedtls/include/psa/crypto_values.h +0 -2756
  334. package/external/libedhoc/externals/mbedtls/library/aes.c +0 -2315
  335. package/external/libedhoc/externals/mbedtls/library/aesce.c +0 -503
  336. package/external/libedhoc/externals/mbedtls/library/aesce.h +0 -121
  337. package/external/libedhoc/externals/mbedtls/library/aesni.c +0 -802
  338. package/external/libedhoc/externals/mbedtls/library/aesni.h +0 -158
  339. package/external/libedhoc/externals/mbedtls/library/alignment.h +0 -509
  340. package/external/libedhoc/externals/mbedtls/library/aria.c +0 -991
  341. package/external/libedhoc/externals/mbedtls/library/asn1parse.c +0 -467
  342. package/external/libedhoc/externals/mbedtls/library/asn1write.c +0 -436
  343. package/external/libedhoc/externals/mbedtls/library/base64.c +0 -299
  344. package/external/libedhoc/externals/mbedtls/library/base64_internal.h +0 -45
  345. package/external/libedhoc/externals/mbedtls/library/bignum.c +0 -2806
  346. package/external/libedhoc/externals/mbedtls/library/bignum_core.c +0 -894
  347. package/external/libedhoc/externals/mbedtls/library/bignum_core.h +0 -763
  348. package/external/libedhoc/externals/mbedtls/library/bignum_mod.c +0 -394
  349. package/external/libedhoc/externals/mbedtls/library/bignum_mod.h +0 -452
  350. package/external/libedhoc/externals/mbedtls/library/bignum_mod_raw.c +0 -276
  351. package/external/libedhoc/externals/mbedtls/library/bignum_mod_raw.h +0 -416
  352. package/external/libedhoc/externals/mbedtls/library/bignum_mod_raw_invasive.h +0 -34
  353. package/external/libedhoc/externals/mbedtls/library/bn_mul.h +0 -1094
  354. package/external/libedhoc/externals/mbedtls/library/camellia.c +0 -1044
  355. package/external/libedhoc/externals/mbedtls/library/ccm.c +0 -712
  356. package/external/libedhoc/externals/mbedtls/library/chacha20.c +0 -497
  357. package/external/libedhoc/externals/mbedtls/library/chachapoly.c +0 -478
  358. package/external/libedhoc/externals/mbedtls/library/check_crypto_config.h +0 -141
  359. package/external/libedhoc/externals/mbedtls/library/cipher.c +0 -1664
  360. package/external/libedhoc/externals/mbedtls/library/cipher_wrap.c +0 -2422
  361. package/external/libedhoc/externals/mbedtls/library/cipher_wrap.h +0 -132
  362. package/external/libedhoc/externals/mbedtls/library/cmac.c +0 -1067
  363. package/external/libedhoc/externals/mbedtls/library/common.h +0 -325
  364. package/external/libedhoc/externals/mbedtls/library/constant_time.c +0 -261
  365. package/external/libedhoc/externals/mbedtls/library/constant_time_impl.h +0 -554
  366. package/external/libedhoc/externals/mbedtls/library/constant_time_internal.h +0 -579
  367. package/external/libedhoc/externals/mbedtls/library/ctr_drbg.c +0 -881
  368. package/external/libedhoc/externals/mbedtls/library/debug.c +0 -465
  369. package/external/libedhoc/externals/mbedtls/library/des.c +0 -1042
  370. package/external/libedhoc/externals/mbedtls/library/dhm.c +0 -712
  371. package/external/libedhoc/externals/mbedtls/library/ecdh.c +0 -685
  372. package/external/libedhoc/externals/mbedtls/library/ecdsa.c +0 -867
  373. package/external/libedhoc/externals/mbedtls/library/ecjpake.c +0 -1216
  374. package/external/libedhoc/externals/mbedtls/library/ecp.c +0 -3631
  375. package/external/libedhoc/externals/mbedtls/library/ecp_curves.c +0 -5467
  376. package/external/libedhoc/externals/mbedtls/library/ecp_curves_new.c +0 -6043
  377. package/external/libedhoc/externals/mbedtls/library/ecp_internal_alt.h +0 -287
  378. package/external/libedhoc/externals/mbedtls/library/ecp_invasive.h +0 -325
  379. package/external/libedhoc/externals/mbedtls/library/entropy.c +0 -676
  380. package/external/libedhoc/externals/mbedtls/library/entropy_poll.c +0 -229
  381. package/external/libedhoc/externals/mbedtls/library/entropy_poll.h +0 -64
  382. package/external/libedhoc/externals/mbedtls/library/error.c +0 -878
  383. package/external/libedhoc/externals/mbedtls/library/gcm.c +0 -1168
  384. package/external/libedhoc/externals/mbedtls/library/hkdf.c +0 -161
  385. package/external/libedhoc/externals/mbedtls/library/hmac_drbg.c +0 -633
  386. package/external/libedhoc/externals/mbedtls/library/lmots.c +0 -821
  387. package/external/libedhoc/externals/mbedtls/library/lmots.h +0 -311
  388. package/external/libedhoc/externals/mbedtls/library/lms.c +0 -779
  389. package/external/libedhoc/externals/mbedtls/library/md.c +0 -1108
  390. package/external/libedhoc/externals/mbedtls/library/md5.c +0 -426
  391. package/external/libedhoc/externals/mbedtls/library/md_psa.h +0 -63
  392. package/external/libedhoc/externals/mbedtls/library/md_wrap.h +0 -46
  393. package/external/libedhoc/externals/mbedtls/library/memory_buffer_alloc.c +0 -745
  394. package/external/libedhoc/externals/mbedtls/library/mps_common.h +0 -181
  395. package/external/libedhoc/externals/mbedtls/library/mps_error.h +0 -89
  396. package/external/libedhoc/externals/mbedtls/library/mps_reader.c +0 -538
  397. package/external/libedhoc/externals/mbedtls/library/mps_reader.h +0 -366
  398. package/external/libedhoc/externals/mbedtls/library/mps_trace.c +0 -112
  399. package/external/libedhoc/externals/mbedtls/library/mps_trace.h +0 -154
  400. package/external/libedhoc/externals/mbedtls/library/net_sockets.c +0 -696
  401. package/external/libedhoc/externals/mbedtls/library/nist_kw.c +0 -725
  402. package/external/libedhoc/externals/mbedtls/library/oid.c +0 -1154
  403. package/external/libedhoc/externals/mbedtls/library/padlock.c +0 -155
  404. package/external/libedhoc/externals/mbedtls/library/padlock.h +0 -111
  405. package/external/libedhoc/externals/mbedtls/library/pem.c +0 -520
  406. package/external/libedhoc/externals/mbedtls/library/pk.c +0 -970
  407. package/external/libedhoc/externals/mbedtls/library/pk_internal.h +0 -118
  408. package/external/libedhoc/externals/mbedtls/library/pk_wrap.c +0 -1834
  409. package/external/libedhoc/externals/mbedtls/library/pk_wrap.h +0 -156
  410. package/external/libedhoc/externals/mbedtls/library/pkcs12.c +0 -447
  411. package/external/libedhoc/externals/mbedtls/library/pkcs5.c +0 -496
  412. package/external/libedhoc/externals/mbedtls/library/pkcs7.c +0 -773
  413. package/external/libedhoc/externals/mbedtls/library/pkparse.c +0 -1845
  414. package/external/libedhoc/externals/mbedtls/library/pkwrite.c +0 -836
  415. package/external/libedhoc/externals/mbedtls/library/pkwrite.h +0 -112
  416. package/external/libedhoc/externals/mbedtls/library/platform.c +0 -402
  417. package/external/libedhoc/externals/mbedtls/library/platform_util.c +0 -285
  418. package/external/libedhoc/externals/mbedtls/library/poly1305.c +0 -492
  419. package/external/libedhoc/externals/mbedtls/library/psa_crypto.c +0 -8432
  420. package/external/libedhoc/externals/mbedtls/library/psa_crypto_aead.c +0 -653
  421. package/external/libedhoc/externals/mbedtls/library/psa_crypto_aead.h +0 -499
  422. package/external/libedhoc/externals/mbedtls/library/psa_crypto_cipher.c +0 -590
  423. package/external/libedhoc/externals/mbedtls/library/psa_crypto_cipher.h +0 -293
  424. package/external/libedhoc/externals/mbedtls/library/psa_crypto_client.c +0 -67
  425. package/external/libedhoc/externals/mbedtls/library/psa_crypto_core.h +0 -838
  426. package/external/libedhoc/externals/mbedtls/library/psa_crypto_core_common.h +0 -52
  427. package/external/libedhoc/externals/mbedtls/library/psa_crypto_driver_wrappers.h +0 -2871
  428. package/external/libedhoc/externals/mbedtls/library/psa_crypto_driver_wrappers_no_static.c +0 -256
  429. package/external/libedhoc/externals/mbedtls/library/psa_crypto_driver_wrappers_no_static.h +0 -31
  430. package/external/libedhoc/externals/mbedtls/library/psa_crypto_ecp.c +0 -561
  431. package/external/libedhoc/externals/mbedtls/library/psa_crypto_ecp.h +0 -267
  432. package/external/libedhoc/externals/mbedtls/library/psa_crypto_ffdh.c +0 -295
  433. package/external/libedhoc/externals/mbedtls/library/psa_crypto_ffdh.h +0 -132
  434. package/external/libedhoc/externals/mbedtls/library/psa_crypto_hash.c +0 -470
  435. package/external/libedhoc/externals/mbedtls/library/psa_crypto_hash.h +0 -211
  436. package/external/libedhoc/externals/mbedtls/library/psa_crypto_invasive.h +0 -70
  437. package/external/libedhoc/externals/mbedtls/library/psa_crypto_its.h +0 -131
  438. package/external/libedhoc/externals/mbedtls/library/psa_crypto_mac.c +0 -496
  439. package/external/libedhoc/externals/mbedtls/library/psa_crypto_mac.h +0 -264
  440. package/external/libedhoc/externals/mbedtls/library/psa_crypto_pake.c +0 -571
  441. package/external/libedhoc/externals/mbedtls/library/psa_crypto_pake.h +0 -159
  442. package/external/libedhoc/externals/mbedtls/library/psa_crypto_random_impl.h +0 -192
  443. package/external/libedhoc/externals/mbedtls/library/psa_crypto_rsa.c +0 -727
  444. package/external/libedhoc/externals/mbedtls/library/psa_crypto_rsa.h +0 -317
  445. package/external/libedhoc/externals/mbedtls/library/psa_crypto_se.c +0 -373
  446. package/external/libedhoc/externals/mbedtls/library/psa_crypto_se.h +0 -185
  447. package/external/libedhoc/externals/mbedtls/library/psa_crypto_slot_management.c +0 -559
  448. package/external/libedhoc/externals/mbedtls/library/psa_crypto_slot_management.h +0 -213
  449. package/external/libedhoc/externals/mbedtls/library/psa_crypto_storage.c +0 -481
  450. package/external/libedhoc/externals/mbedtls/library/psa_crypto_storage.h +0 -384
  451. package/external/libedhoc/externals/mbedtls/library/psa_its_file.c +0 -259
  452. package/external/libedhoc/externals/mbedtls/library/psa_util.c +0 -160
  453. package/external/libedhoc/externals/mbedtls/library/psa_util_internal.h +0 -96
  454. package/external/libedhoc/externals/mbedtls/library/ripemd160.c +0 -490
  455. package/external/libedhoc/externals/mbedtls/library/rsa.c +0 -2640
  456. package/external/libedhoc/externals/mbedtls/library/rsa_alt_helpers.c +0 -447
  457. package/external/libedhoc/externals/mbedtls/library/rsa_alt_helpers.h +0 -208
  458. package/external/libedhoc/externals/mbedtls/library/sha1.c +0 -480
  459. package/external/libedhoc/externals/mbedtls/library/sha256.c +0 -946
  460. package/external/libedhoc/externals/mbedtls/library/sha3.c +0 -626
  461. package/external/libedhoc/externals/mbedtls/library/sha512.c +0 -1111
  462. package/external/libedhoc/externals/mbedtls/library/ssl_cache.c +0 -410
  463. package/external/libedhoc/externals/mbedtls/library/ssl_ciphersuites.c +0 -2050
  464. package/external/libedhoc/externals/mbedtls/library/ssl_client.c +0 -1017
  465. package/external/libedhoc/externals/mbedtls/library/ssl_client.h +0 -22
  466. package/external/libedhoc/externals/mbedtls/library/ssl_cookie.c +0 -380
  467. package/external/libedhoc/externals/mbedtls/library/ssl_debug_helpers.h +0 -78
  468. package/external/libedhoc/externals/mbedtls/library/ssl_debug_helpers_generated.c +0 -234
  469. package/external/libedhoc/externals/mbedtls/library/ssl_misc.h +0 -2847
  470. package/external/libedhoc/externals/mbedtls/library/ssl_msg.c +0 -6155
  471. package/external/libedhoc/externals/mbedtls/library/ssl_ticket.c +0 -540
  472. package/external/libedhoc/externals/mbedtls/library/ssl_tls.c +0 -9577
  473. package/external/libedhoc/externals/mbedtls/library/ssl_tls12_client.c +0 -3607
  474. package/external/libedhoc/externals/mbedtls/library/ssl_tls12_server.c +0 -4403
  475. package/external/libedhoc/externals/mbedtls/library/ssl_tls13_client.c +0 -3046
  476. package/external/libedhoc/externals/mbedtls/library/ssl_tls13_generic.c +0 -1740
  477. package/external/libedhoc/externals/mbedtls/library/ssl_tls13_invasive.h +0 -23
  478. package/external/libedhoc/externals/mbedtls/library/ssl_tls13_keys.c +0 -1897
  479. package/external/libedhoc/externals/mbedtls/library/ssl_tls13_keys.h +0 -651
  480. package/external/libedhoc/externals/mbedtls/library/ssl_tls13_server.c +0 -3146
  481. package/external/libedhoc/externals/mbedtls/library/threading.c +0 -181
  482. package/external/libedhoc/externals/mbedtls/library/timing.c +0 -154
  483. package/external/libedhoc/externals/mbedtls/library/version.c +0 -32
  484. package/external/libedhoc/externals/mbedtls/library/version_features.c +0 -826
  485. package/external/libedhoc/externals/mbedtls/library/x509.c +0 -1776
  486. package/external/libedhoc/externals/mbedtls/library/x509_create.c +0 -557
  487. package/external/libedhoc/externals/mbedtls/library/x509_crl.c +0 -712
  488. package/external/libedhoc/externals/mbedtls/library/x509_crt.c +0 -3292
  489. package/external/libedhoc/externals/mbedtls/library/x509_csr.c +0 -574
  490. package/external/libedhoc/externals/mbedtls/library/x509write.c +0 -174
  491. package/external/libedhoc/externals/mbedtls/library/x509write_crt.c +0 -681
  492. package/external/libedhoc/externals/mbedtls/library/x509write_csr.c +0 -331
  493. package/external/libedhoc/externals/mbedtls/programs/aes/crypt_and_hash.c +0 -573
  494. package/external/libedhoc/externals/mbedtls/programs/cipher/cipher_aead_demo.c +0 -259
  495. package/external/libedhoc/externals/mbedtls/programs/fuzz/common.c +0 -105
  496. package/external/libedhoc/externals/mbedtls/programs/fuzz/common.h +0 -25
  497. package/external/libedhoc/externals/mbedtls/programs/fuzz/fuzz_client.c +0 -195
  498. package/external/libedhoc/externals/mbedtls/programs/fuzz/fuzz_dtlsclient.c +0 -138
  499. package/external/libedhoc/externals/mbedtls/programs/fuzz/fuzz_dtlsserver.c +0 -183
  500. package/external/libedhoc/externals/mbedtls/programs/fuzz/fuzz_pkcs7.c +0 -20
  501. package/external/libedhoc/externals/mbedtls/programs/fuzz/fuzz_privkey.c +0 -106
  502. package/external/libedhoc/externals/mbedtls/programs/fuzz/fuzz_pubkey.c +0 -86
  503. package/external/libedhoc/externals/mbedtls/programs/fuzz/fuzz_server.c +0 -218
  504. package/external/libedhoc/externals/mbedtls/programs/fuzz/fuzz_x509crl.c +0 -41
  505. package/external/libedhoc/externals/mbedtls/programs/fuzz/fuzz_x509crt.c +0 -41
  506. package/external/libedhoc/externals/mbedtls/programs/fuzz/fuzz_x509csr.c +0 -41
  507. package/external/libedhoc/externals/mbedtls/programs/fuzz/onefile.c +0 -69
  508. package/external/libedhoc/externals/mbedtls/programs/hash/generic_sum.c +0 -209
  509. package/external/libedhoc/externals/mbedtls/programs/hash/hello.c +0 -45
  510. package/external/libedhoc/externals/mbedtls/programs/hash/md_hmac_demo.c +0 -136
  511. package/external/libedhoc/externals/mbedtls/programs/pkey/dh_client.c +0 -274
  512. package/external/libedhoc/externals/mbedtls/programs/pkey/dh_genprime.c +0 -161
  513. package/external/libedhoc/externals/mbedtls/programs/pkey/dh_server.c +0 -296
  514. package/external/libedhoc/externals/mbedtls/programs/pkey/ecdh_curve25519.c +0 -189
  515. package/external/libedhoc/externals/mbedtls/programs/pkey/ecdsa.c +0 -217
  516. package/external/libedhoc/externals/mbedtls/programs/pkey/gen_key.c +0 -419
  517. package/external/libedhoc/externals/mbedtls/programs/pkey/key_app.c +0 -316
  518. package/external/libedhoc/externals/mbedtls/programs/pkey/key_app_writer.c +0 -435
  519. package/external/libedhoc/externals/mbedtls/programs/pkey/mpi_demo.c +0 -84
  520. package/external/libedhoc/externals/mbedtls/programs/pkey/pk_decrypt.c +0 -153
  521. package/external/libedhoc/externals/mbedtls/programs/pkey/pk_encrypt.c +0 -154
  522. package/external/libedhoc/externals/mbedtls/programs/pkey/pk_sign.c +0 -155
  523. package/external/libedhoc/externals/mbedtls/programs/pkey/pk_verify.c +0 -128
  524. package/external/libedhoc/externals/mbedtls/programs/pkey/rsa_decrypt.c +0 -172
  525. package/external/libedhoc/externals/mbedtls/programs/pkey/rsa_encrypt.c +0 -149
  526. package/external/libedhoc/externals/mbedtls/programs/pkey/rsa_genkey.c +0 -141
  527. package/external/libedhoc/externals/mbedtls/programs/pkey/rsa_sign.c +0 -155
  528. package/external/libedhoc/externals/mbedtls/programs/pkey/rsa_sign_pss.c +0 -161
  529. package/external/libedhoc/externals/mbedtls/programs/pkey/rsa_verify.c +0 -131
  530. package/external/libedhoc/externals/mbedtls/programs/pkey/rsa_verify_pss.c +0 -136
  531. package/external/libedhoc/externals/mbedtls/programs/psa/aead_demo.c +0 -281
  532. package/external/libedhoc/externals/mbedtls/programs/psa/crypto_examples.c +0 -321
  533. package/external/libedhoc/externals/mbedtls/programs/psa/hmac_demo.c +0 -159
  534. package/external/libedhoc/externals/mbedtls/programs/psa/key_ladder_demo.c +0 -691
  535. package/external/libedhoc/externals/mbedtls/programs/psa/psa_constant_names.c +0 -310
  536. package/external/libedhoc/externals/mbedtls/programs/psa/psa_constant_names_generated.c +0 -474
  537. package/external/libedhoc/externals/mbedtls/programs/random/gen_entropy.c +0 -75
  538. package/external/libedhoc/externals/mbedtls/programs/random/gen_random_ctr_drbg.c +0 -107
  539. package/external/libedhoc/externals/mbedtls/programs/ssl/dtls_client.c +0 -342
  540. package/external/libedhoc/externals/mbedtls/programs/ssl/dtls_server.c +0 -408
  541. package/external/libedhoc/externals/mbedtls/programs/ssl/mini_client.c +0 -274
  542. package/external/libedhoc/externals/mbedtls/programs/ssl/ssl_client1.c +0 -288
  543. package/external/libedhoc/externals/mbedtls/programs/ssl/ssl_client2.c +0 -3118
  544. package/external/libedhoc/externals/mbedtls/programs/ssl/ssl_context_info.c +0 -1009
  545. package/external/libedhoc/externals/mbedtls/programs/ssl/ssl_fork_server.c +0 -381
  546. package/external/libedhoc/externals/mbedtls/programs/ssl/ssl_mail_client.c +0 -804
  547. package/external/libedhoc/externals/mbedtls/programs/ssl/ssl_pthread_server.c +0 -489
  548. package/external/libedhoc/externals/mbedtls/programs/ssl/ssl_server.c +0 -362
  549. package/external/libedhoc/externals/mbedtls/programs/ssl/ssl_server2.c +0 -4268
  550. package/external/libedhoc/externals/mbedtls/programs/ssl/ssl_test_common_source.c +0 -375
  551. package/external/libedhoc/externals/mbedtls/programs/ssl/ssl_test_lib.c +0 -601
  552. package/external/libedhoc/externals/mbedtls/programs/ssl/ssl_test_lib.h +0 -306
  553. package/external/libedhoc/externals/mbedtls/programs/test/benchmark.c +0 -1284
  554. package/external/libedhoc/externals/mbedtls/programs/test/cmake_package/cmake_package.c +0 -27
  555. package/external/libedhoc/externals/mbedtls/programs/test/cmake_package_install/cmake_package_install.c +0 -28
  556. package/external/libedhoc/externals/mbedtls/programs/test/cmake_subproject/cmake_subproject.c +0 -28
  557. package/external/libedhoc/externals/mbedtls/programs/test/dlopen.c +0 -92
  558. package/external/libedhoc/externals/mbedtls/programs/test/query_compile_time_config.c +0 -66
  559. package/external/libedhoc/externals/mbedtls/programs/test/query_config.c +0 -5137
  560. package/external/libedhoc/externals/mbedtls/programs/test/query_config.h +0 -34
  561. package/external/libedhoc/externals/mbedtls/programs/test/query_included_headers.c +0 -29
  562. package/external/libedhoc/externals/mbedtls/programs/test/selftest.c +0 -583
  563. package/external/libedhoc/externals/mbedtls/programs/test/udp_proxy.c +0 -967
  564. package/external/libedhoc/externals/mbedtls/programs/test/zeroize.c +0 -72
  565. package/external/libedhoc/externals/mbedtls/programs/util/pem2der.c +0 -265
  566. package/external/libedhoc/externals/mbedtls/programs/util/strerror.c +0 -61
  567. package/external/libedhoc/externals/mbedtls/programs/wince_main.c +0 -31
  568. package/external/libedhoc/externals/mbedtls/programs/x509/cert_app.c +0 -456
  569. package/external/libedhoc/externals/mbedtls/programs/x509/cert_req.c +0 -509
  570. package/external/libedhoc/externals/mbedtls/programs/x509/cert_write.c +0 -1012
  571. package/external/libedhoc/externals/mbedtls/programs/x509/crl_app.c +0 -132
  572. package/external/libedhoc/externals/mbedtls/programs/x509/load_roots.c +0 -165
  573. package/external/libedhoc/externals/mbedtls/programs/x509/req_app.c +0 -132
  574. package/external/libedhoc/externals/mbedtls/tests/configs/tls13-only.h +0 -31
  575. package/external/libedhoc/externals/mbedtls/tests/configs/user-config-for-test.h +0 -89
  576. package/external/libedhoc/externals/mbedtls/tests/configs/user-config-malloc-0-null.h +0 -22
  577. package/external/libedhoc/externals/mbedtls/tests/configs/user-config-zeroize-memset.h +0 -17
  578. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/aes_alt.h +0 -23
  579. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/aria_alt.h +0 -16
  580. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/camellia_alt.h +0 -16
  581. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/ccm_alt.h +0 -16
  582. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/chacha20_alt.h +0 -16
  583. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/chachapoly_alt.h +0 -18
  584. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/cmac_alt.h +0 -15
  585. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/des_alt.h +0 -22
  586. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/dhm_alt.h +0 -16
  587. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/ecjpake_alt.h +0 -15
  588. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/ecp_alt.h +0 -22
  589. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/gcm_alt.h +0 -16
  590. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/md5_alt.h +0 -16
  591. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/nist_kw_alt.h +0 -15
  592. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/platform_alt.h +0 -16
  593. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/poly1305_alt.h +0 -16
  594. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/ripemd160_alt.h +0 -16
  595. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/rsa_alt.h +0 -16
  596. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/sha1_alt.h +0 -16
  597. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/sha256_alt.h +0 -16
  598. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/sha512_alt.h +0 -16
  599. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/threading_alt.h +0 -14
  600. package/external/libedhoc/externals/mbedtls/tests/include/alt-dummy/timing_alt.h +0 -19
  601. package/external/libedhoc/externals/mbedtls/tests/include/alt-extra/psa/crypto.h +0 -7
  602. package/external/libedhoc/externals/mbedtls/tests/include/baremetal-override/time.h +0 -6
  603. package/external/libedhoc/externals/mbedtls/tests/include/spe/crypto_spe.h +0 -131
  604. package/external/libedhoc/externals/mbedtls/tests/include/test/arguments.h +0 -26
  605. package/external/libedhoc/externals/mbedtls/tests/include/test/asn1_helpers.h +0 -38
  606. package/external/libedhoc/externals/mbedtls/tests/include/test/bignum_helpers.h +0 -106
  607. package/external/libedhoc/externals/mbedtls/tests/include/test/certs.h +0 -234
  608. package/external/libedhoc/externals/mbedtls/tests/include/test/constant_flow.h +0 -71
  609. package/external/libedhoc/externals/mbedtls/tests/include/test/drivers/aead.h +0 -121
  610. package/external/libedhoc/externals/mbedtls/tests/include/test/drivers/asymmetric_encryption.h +0 -67
  611. package/external/libedhoc/externals/mbedtls/tests/include/test/drivers/cipher.h +0 -130
  612. package/external/libedhoc/externals/mbedtls/tests/include/test/drivers/config_test_driver.h +0 -44
  613. package/external/libedhoc/externals/mbedtls/tests/include/test/drivers/crypto_config_test_driver_extension.h +0 -430
  614. package/external/libedhoc/externals/mbedtls/tests/include/test/drivers/hash.h +0 -64
  615. package/external/libedhoc/externals/mbedtls/tests/include/test/drivers/key_agreement.h +0 -62
  616. package/external/libedhoc/externals/mbedtls/tests/include/test/drivers/key_management.h +0 -123
  617. package/external/libedhoc/externals/mbedtls/tests/include/test/drivers/mac.h +0 -125
  618. package/external/libedhoc/externals/mbedtls/tests/include/test/drivers/pake.h +0 -75
  619. package/external/libedhoc/externals/mbedtls/tests/include/test/drivers/signature.h +0 -112
  620. package/external/libedhoc/externals/mbedtls/tests/include/test/drivers/test_driver.h +0 -32
  621. package/external/libedhoc/externals/mbedtls/tests/include/test/fake_external_rng_for_test.h +0 -40
  622. package/external/libedhoc/externals/mbedtls/tests/include/test/helpers.h +0 -268
  623. package/external/libedhoc/externals/mbedtls/tests/include/test/macros.h +0 -250
  624. package/external/libedhoc/externals/mbedtls/tests/include/test/psa_crypto_helpers.h +0 -398
  625. package/external/libedhoc/externals/mbedtls/tests/include/test/psa_exercise_key.h +0 -223
  626. package/external/libedhoc/externals/mbedtls/tests/include/test/psa_helpers.h +0 -24
  627. package/external/libedhoc/externals/mbedtls/tests/include/test/random.h +0 -91
  628. package/external/libedhoc/externals/mbedtls/tests/include/test/ssl_helpers.h +0 -628
  629. package/external/libedhoc/externals/mbedtls/tests/src/asn1_helpers.c +0 -62
  630. package/external/libedhoc/externals/mbedtls/tests/src/bignum_helpers.c +0 -145
  631. package/external/libedhoc/externals/mbedtls/tests/src/certs.c +0 -480
  632. package/external/libedhoc/externals/mbedtls/tests/src/drivers/hash.c +0 -199
  633. package/external/libedhoc/externals/mbedtls/tests/src/drivers/platform_builtin_keys.c +0 -78
  634. package/external/libedhoc/externals/mbedtls/tests/src/drivers/test_driver_aead.c +0 -462
  635. package/external/libedhoc/externals/mbedtls/tests/src/drivers/test_driver_asymmetric_encryption.c +0 -151
  636. package/external/libedhoc/externals/mbedtls/tests/src/drivers/test_driver_cipher.c +0 -424
  637. package/external/libedhoc/externals/mbedtls/tests/src/drivers/test_driver_key_agreement.c +0 -147
  638. package/external/libedhoc/externals/mbedtls/tests/src/drivers/test_driver_key_management.c +0 -783
  639. package/external/libedhoc/externals/mbedtls/tests/src/drivers/test_driver_mac.c +0 -422
  640. package/external/libedhoc/externals/mbedtls/tests/src/drivers/test_driver_pake.c +0 -202
  641. package/external/libedhoc/externals/mbedtls/tests/src/drivers/test_driver_signature.c +0 -405
  642. package/external/libedhoc/externals/mbedtls/tests/src/fake_external_rng_for_test.c +0 -45
  643. package/external/libedhoc/externals/mbedtls/tests/src/helpers.c +0 -353
  644. package/external/libedhoc/externals/mbedtls/tests/src/psa_crypto_helpers.c +0 -196
  645. package/external/libedhoc/externals/mbedtls/tests/src/psa_exercise_key.c +0 -989
  646. package/external/libedhoc/externals/mbedtls/tests/src/random.c +0 -136
  647. package/external/libedhoc/externals/mbedtls/tests/src/test_certs.h +0 -1226
  648. package/external/libedhoc/externals/mbedtls/tests/src/test_helpers/ssl_helpers.c +0 -2292
  649. package/external/libedhoc/externals/mbedtls/tests/src/threading_helpers.c +0 -210
  650. package/external/libedhoc/externals/zcbor/include/zcbor_common.h +0 -509
  651. package/external/libedhoc/externals/zcbor/include/zcbor_decode.h +0 -447
  652. package/external/libedhoc/externals/zcbor/include/zcbor_encode.h +0 -240
  653. package/external/libedhoc/externals/zcbor/include/zcbor_print.h +0 -165
  654. package/external/libedhoc/externals/zcbor/include/zcbor_tags.h +0 -94
  655. package/external/libedhoc/externals/zcbor/samples/hello_world/src/main.c +0 -41
  656. package/external/libedhoc/externals/zcbor/samples/pet/include/pet_decode.h +0 -39
  657. package/external/libedhoc/externals/zcbor/samples/pet/include/pet_encode.h +0 -39
  658. package/external/libedhoc/externals/zcbor/samples/pet/include/pet_types.h +0 -47
  659. package/external/libedhoc/externals/zcbor/samples/pet/src/main.c +0 -128
  660. package/external/libedhoc/externals/zcbor/samples/pet/src/pet_decode.c +0 -60
  661. package/external/libedhoc/externals/zcbor/samples/pet/src/pet_encode.c +0 -61
  662. package/external/libedhoc/externals/zcbor/src/zcbor_common.c +0 -430
  663. package/external/libedhoc/externals/zcbor/src/zcbor_decode.c +0 -1567
  664. package/external/libedhoc/externals/zcbor/src/zcbor_encode.c +0 -609
  665. package/external/libedhoc/externals/zcbor/tests/decode/test1_suit_old_formats/src/main.c +0 -367
  666. package/external/libedhoc/externals/zcbor/tests/decode/test2_suit/src/main.c +0 -189
  667. package/external/libedhoc/externals/zcbor/tests/decode/test3_simple/src/main.c +0 -528
  668. package/external/libedhoc/externals/zcbor/tests/decode/test5_corner_cases/src/main.c +0 -2154
  669. package/external/libedhoc/externals/zcbor/tests/decode/test7_suit9_simple/src/main.c +0 -134
  670. package/external/libedhoc/externals/zcbor/tests/decode/test8_suit12/src/main.c +0 -862
  671. package/external/libedhoc/externals/zcbor/tests/decode/test9_manifest14/src/main.c +0 -363
  672. package/external/libedhoc/externals/zcbor/tests/encode/test1_suit/src/main.c +0 -453
  673. package/external/libedhoc/externals/zcbor/tests/encode/test2_simple/src/main.c +0 -122
  674. package/external/libedhoc/externals/zcbor/tests/encode/test3_corner_cases/src/main.c +0 -1554
  675. package/external/libedhoc/externals/zcbor/tests/encode/test4_senml/src/main.c +0 -65
  676. package/external/libedhoc/externals/zcbor/tests/fuzz/fuzz_everything.c +0 -12
  677. package/external/libedhoc/externals/zcbor/tests/fuzz/fuzz_manifest12.c +0 -136
  678. package/external/libedhoc/externals/zcbor/tests/fuzz/fuzz_pet.c +0 -12
  679. package/external/libedhoc/externals/zcbor/tests/fuzz/main_entry.c +0 -60
  680. package/external/libedhoc/externals/zcbor/tests/fuzz/main_entry.h +0 -5
  681. package/external/libedhoc/externals/zcbor/tests/unit/test1_unit_tests/src/main.c +0 -1437
  682. package/external/libedhoc/externals/zcbor/tests/unit/test3_float16/src/main.c +0 -203
  683. package/external/libedhoc/include/edhoc.h +0 -687
  684. package/external/libedhoc/include/edhoc_common.h +0 -289
  685. package/external/libedhoc/include/edhoc_context.h +0 -343
  686. package/external/libedhoc/include/edhoc_credentials.h +0 -265
  687. package/external/libedhoc/include/edhoc_crypto.h +0 -331
  688. package/external/libedhoc/include/edhoc_ead.h +0 -102
  689. package/external/libedhoc/include/edhoc_macros.h +0 -60
  690. package/external/libedhoc/include/edhoc_values.h +0 -181
  691. package/external/libedhoc/library/edhoc.c +0 -253
  692. package/external/libedhoc/library/edhoc_common.c +0 -1314
  693. package/external/libedhoc/library/edhoc_exporter.c +0 -542
  694. package/external/libedhoc/library/edhoc_message_1.c +0 -474
  695. package/external/libedhoc/library/edhoc_message_2.c +0 -1697
  696. package/external/libedhoc/library/edhoc_message_3.c +0 -1467
  697. package/external/libedhoc/library/edhoc_message_4.c +0 -828
  698. package/external/libedhoc/library/edhoc_message_error.c +0 -238
  699. package/external/libedhoc/tests/include/cipher_suite_0.h +0 -131
  700. package/external/libedhoc/tests/include/cipher_suite_2.h +0 -139
  701. package/external/libedhoc/tests/include/test_vector_rfc9529_chapter_2.h +0 -786
  702. package/external/libedhoc/tests/include/test_vector_rfc9529_chapter_3.h +0 -529
  703. package/external/libedhoc/tests/include/test_vector_x5chain_sign_keys_suite_0.h +0 -137
  704. package/external/libedhoc/tests/include/test_vector_x5chain_sign_keys_suite_2.h +0 -168
  705. package/external/libedhoc/tests/include/test_vector_x5chain_static_dh_keys_suite_2.h +0 -162
  706. package/external/libedhoc/tests/include/test_vector_x5t_sign_keys_suite_2.h +0 -180
  707. package/external/libedhoc/tests/src/cipher_suite_0.c +0 -445
  708. package/external/libedhoc/tests/src/cipher_suite_2.c +0 -600
  709. package/external/libedhoc/tests/src/module_test_api.c +0 -430
  710. package/external/libedhoc/tests/src/module_test_cipher_suite_0.c +0 -395
  711. package/external/libedhoc/tests/src/module_test_cipher_suite_2.c +0 -392
  712. package/external/libedhoc/tests/src/module_test_error_message.c +0 -251
  713. package/external/libedhoc/tests/src/module_test_main.c +0 -49
  714. package/external/libedhoc/tests/src/module_test_rfc9528_suites_negotiation.c +0 -541
  715. package/external/libedhoc/tests/src/module_test_rfc9529_chapter_2.c +0 -2681
  716. package/external/libedhoc/tests/src/module_test_rfc9529_chapter_3.c +0 -1635
  717. package/external/libedhoc/tests/src/module_test_x5chain_sign_keys_suite_0.c +0 -1135
  718. package/external/libedhoc/tests/src/module_test_x5chain_sign_keys_suite_2.c +0 -1249
  719. package/external/libedhoc/tests/src/module_test_x5chain_static_dh_keys_suite_2.c +0 -798
  720. package/external/libedhoc/tests/src/module_test_x5t_sign_keys_suite_2.c +0 -956
  721. package/include/Binding.h +0 -359
  722. package/include/EdhocComposeAsyncWorker.h +0 -49
  723. package/include/EdhocCredentialManager.h +0 -106
  724. package/include/EdhocCryptoManager.h +0 -495
  725. package/include/EdhocEadManager.h +0 -147
  726. package/include/EdhocExportOscoreAsyncWorker.h +0 -57
  727. package/include/EdhocKeyExporterAsyncWorker.h +0 -56
  728. package/include/EdhocKeyUpdateAsyncWorker.h +0 -55
  729. package/include/EdhocProcessAsyncWorker.h +0 -55
  730. package/include/RunningContext.h +0 -102
  731. package/include/Suites.h +0 -27
  732. package/include/Utils.h +0 -71
  733. package/patches/prebuildify-cross+5.1.0.dev.patch +0 -26
  734. package/patches/prebuildify-cross+5.1.1.dev.patch +0 -26
  735. package/prebuilds/android-arm/edhoc.armv7.node +0 -0
  736. package/prebuilds/android-arm64/edhoc.armv8.node +0 -0
  737. package/prebuilds/darwin-arm64/edhoc.node +0 -0
  738. package/prebuilds/darwin-x64/edhoc.node +0 -0
  739. package/prebuilds/linux-arm/edhoc.armv6.node +0 -0
  740. package/prebuilds/linux-arm/edhoc.armv7.node +0 -0
  741. package/prebuilds/linux-arm64/edhoc.armv8.node +0 -0
  742. package/prebuilds/linux-x64/edhoc.glibc.node +0 -0
  743. package/prebuilds/linux-x64/edhoc.musl.node +0 -0
  744. package/prebuilds/win32-ia32/edhoc.node +0 -0
  745. package/prebuilds/win32-x64/edhoc.node +0 -0
  746. package/src/Binding.cpp +0 -446
  747. package/src/EdhocComposeAsyncWorker.cpp +0 -60
  748. package/src/EdhocCredentialManager.cpp +0 -425
  749. package/src/EdhocCryptoManager.cpp +0 -593
  750. package/src/EdhocEadManager.cpp +0 -148
  751. package/src/EdhocExportOscoreAsyncWorker.cpp +0 -67
  752. package/src/EdhocKeyExporterAsyncWorker.cpp +0 -39
  753. package/src/EdhocKeyUpdateAsyncWorker.cpp +0 -31
  754. package/src/EdhocProcessAsyncWorker.cpp +0 -120
  755. package/src/RunningContext.cpp +0 -95
  756. package/src/Suites.cpp +0 -120
  757. package/src/Utils.cpp +0 -54
  758. package/test/basic.test.ts +0 -127
  759. package/test/vectors.test.ts +0 -111
@@ -1,2681 +0,0 @@
1
- /**
2
- * \file module_test_rfc9529_chapter_2.c
3
- * \author Kamil Kielbasa
4
- * \brief Module tests according to RFC 9529, chapter 2.
5
- * \version 0.6
6
- * \date 2024-08-05
7
- *
8
- * \copyright Copyright (c) 2024
9
- *
10
- */
11
-
12
- /* Include files ----------------------------------------------------------- */
13
-
14
- /* Test vector header: */
15
- #include "test_vector_rfc9529_chapter_2.h"
16
-
17
- /* Cipher suite 0 header: */
18
- #include "cipher_suite_0.h"
19
-
20
- /* Standard library headers: */
21
- #include <stdio.h>
22
- #include <stdint.h>
23
- #include <stddef.h>
24
- #include <string.h>
25
- #include <stdbool.h>
26
-
27
- /* EDHOC header: */
28
- #define EDHOC_ALLOW_PRIVATE_ACCESS
29
- #include <edhoc.h>
30
-
31
- /* PSA crypto header: */
32
- #include <psa/crypto.h>
33
-
34
- /* Unity headers: */
35
- #include <unity.h>
36
- #include <unity_fixture.h>
37
-
38
- /* Module defines ---------------------------------------------------------- */
39
-
40
- #define COSE_ALG_SHA_256_64 (-15)
41
- #define CBOR_ENC_COSE_ALG_SHA_256_64 (0x2e)
42
-
43
- #define EAD_TOKEN_BUFFER_LEN (300)
44
- #define MAX_NR_OF_EAD_TOKENS (3)
45
-
46
- /* Module types and type definitiones -------------------------------------- */
47
-
48
- struct ead_token_buf {
49
- int32_t label;
50
- uint8_t value[EAD_TOKEN_BUFFER_LEN];
51
- size_t value_len;
52
- };
53
-
54
- struct ead_context {
55
- enum edhoc_message msg;
56
- size_t recv_tokens;
57
- struct ead_token_buf token[MAX_NR_OF_EAD_TOKENS];
58
- };
59
-
60
- /* Module interface variables and constants -------------------------------- */
61
- /* Static function declarations -------------------------------------------- */
62
-
63
- /**
64
- * \brief Mocked EDHOC crypto function ECDH make key pair for initiator.
65
- */
66
- static int cipher_suite_0_make_key_pair_init(
67
- void *user_context, const void *key_id, uint8_t *private_key,
68
- size_t private_key_size, size_t *private_key_length,
69
- uint8_t *public_key, size_t public_key_size, size_t *public_key_length);
70
-
71
- /**
72
- * \brief Mocked EDHOC crypto function ECDH make key pair for responder.
73
- */
74
- static int cipher_suite_0_make_key_pair_resp(
75
- void *user_context, const void *key_id, uint8_t *private_key,
76
- size_t private_key_size, size_t *private_key_length,
77
- uint8_t *public_key, size_t public_key_size, size_t *public_key_length);
78
-
79
- /**
80
- * \brief Authentication credentials fetch callback for initiator.
81
- */
82
- static int auth_cred_fetch_init(void *user_ctx,
83
- struct edhoc_auth_creds *auth_cred);
84
-
85
- /**
86
- * \brief Authentication credentials fetch callback for initiator.
87
- *
88
- * \note It will use already cborised credentials.
89
- */
90
- static int auth_cred_fetch_init_any(void *user_ctx,
91
- struct edhoc_auth_creds *auth_cred);
92
-
93
- /**
94
- * \brief Authentication credentials fetch callback for responder.
95
- */
96
- static int auth_cred_fetch_resp(void *user_ctx,
97
- struct edhoc_auth_creds *auth_cred);
98
-
99
- /**
100
- * \brief Authentication credentials fetch callback for responder.
101
- *
102
- * \note It will use already cborised credentials.
103
- */
104
- static int auth_cred_fetch_resp_any(void *user_ctx,
105
- struct edhoc_auth_creds *auth_cred);
106
-
107
- /**
108
- * \brief Authentication credentials verify callback for initiator.
109
- */
110
- static int auth_cred_verify_init(void *user_ctx,
111
- struct edhoc_auth_creds *auth_cred,
112
- const uint8_t **pub_key, size_t *pub_key_len);
113
-
114
- /**
115
- * \brief Authentication credentials verify callback for responder.
116
- */
117
- static int auth_cred_verify_resp(void *user_ctx,
118
- struct edhoc_auth_creds *auth_cred,
119
- const uint8_t **pub_key, size_t *pub_key_len);
120
-
121
- /**
122
- * \brief Example EAD compose for single token.
123
- */
124
- static int ead_compose_single_token(void *user_context,
125
- enum edhoc_message message,
126
- struct edhoc_ead_token *ead_token,
127
- size_t ead_token_size,
128
- size_t *ead_token_len);
129
-
130
- /**
131
- * \brief Example EAD process for single token.
132
- */
133
- static int ead_process_single_token(void *user_context,
134
- enum edhoc_message message,
135
- const struct edhoc_ead_token *ead_token,
136
- size_t ead_token_size);
137
-
138
- /**
139
- * \brief Example EAD compose for multiple tokens.
140
- */
141
- static int ead_compose_multiple_tokens(void *user_context,
142
- enum edhoc_message message,
143
- struct edhoc_ead_token *ead_token,
144
- size_t ead_token_size,
145
- size_t *ead_token_len);
146
-
147
- /**
148
- * \brief Example EAD process for multiple tokens.
149
- */
150
- static int ead_process_multiple_tokens(void *user_context,
151
- enum edhoc_message message,
152
- const struct edhoc_ead_token *ead_token,
153
- size_t ead_token_size);
154
-
155
- /**
156
- * \brief Helper function for printing arrays.
157
- */
158
- static inline void print_array(void *user_context, const char *name,
159
- const uint8_t *buffer, size_t buffer_length);
160
-
161
- /* Static variables and constants ------------------------------------------ */
162
-
163
- static int ret = EDHOC_ERROR_GENERIC_ERROR;
164
- static enum edhoc_error_code error_code_recv =
165
- EDHOC_ERROR_CODE_UNSPECIFIED_ERROR;
166
-
167
- static struct edhoc_context edhoc_initiator_context = { 0 };
168
- static struct edhoc_context *init_ctx = &edhoc_initiator_context;
169
-
170
- static struct edhoc_context edhoc_responder_context = { 0 };
171
- static struct edhoc_context *resp_ctx = &edhoc_responder_context;
172
-
173
- static const struct edhoc_cipher_suite edhoc_cipher_suite_0 = {
174
- .value = 0,
175
- .aead_key_length = 16,
176
- .aead_tag_length = 8,
177
- .aead_iv_length = 13,
178
- .hash_length = 32,
179
- .mac_length = 32,
180
- .ecc_key_length = 32,
181
- .ecc_sign_length = 64,
182
- };
183
-
184
- static const struct edhoc_keys edhoc_keys = {
185
- .import_key = cipher_suite_0_key_import,
186
- .destroy_key = cipher_suite_0_key_destroy,
187
- };
188
-
189
- static const struct edhoc_crypto edhoc_crypto_mocked_init = {
190
- .make_key_pair = cipher_suite_0_make_key_pair_init,
191
- .key_agreement = cipher_suite_0_key_agreement,
192
- .signature = cipher_suite_0_signature,
193
- .verify = cipher_suite_0_verify,
194
- .extract = cipher_suite_0_extract,
195
- .expand = cipher_suite_0_expand,
196
- .encrypt = cipher_suite_0_encrypt,
197
- .decrypt = cipher_suite_0_decrypt,
198
- .hash = cipher_suite_0_hash,
199
- };
200
-
201
- static const struct edhoc_crypto edhoc_crypto_mocked_resp = {
202
- .make_key_pair = cipher_suite_0_make_key_pair_resp,
203
- .key_agreement = cipher_suite_0_key_agreement,
204
- .signature = cipher_suite_0_signature,
205
- .verify = cipher_suite_0_verify,
206
- .extract = cipher_suite_0_extract,
207
- .expand = cipher_suite_0_expand,
208
- .encrypt = cipher_suite_0_encrypt,
209
- .decrypt = cipher_suite_0_decrypt,
210
- .hash = cipher_suite_0_hash,
211
- };
212
-
213
- static const struct edhoc_crypto edhoc_crypto = {
214
- .make_key_pair = cipher_suite_0_make_key_pair,
215
- .key_agreement = cipher_suite_0_key_agreement,
216
- .signature = cipher_suite_0_signature,
217
- .verify = cipher_suite_0_verify,
218
- .extract = cipher_suite_0_extract,
219
- .expand = cipher_suite_0_expand,
220
- .encrypt = cipher_suite_0_encrypt,
221
- .decrypt = cipher_suite_0_decrypt,
222
- .hash = cipher_suite_0_hash,
223
- };
224
-
225
- static const struct edhoc_credentials edhoc_auth_cred_mocked_init = {
226
- .fetch = auth_cred_fetch_init,
227
- .verify = auth_cred_verify_init,
228
- };
229
-
230
- static const struct edhoc_credentials edhoc_auth_cred_mocked_init_any = {
231
- .fetch = auth_cred_fetch_init_any,
232
- .verify = auth_cred_verify_init,
233
- };
234
-
235
- static const struct edhoc_credentials edhoc_auth_cred_mocked_resp = {
236
- .fetch = auth_cred_fetch_resp,
237
- .verify = auth_cred_verify_resp,
238
- };
239
-
240
- static const struct edhoc_credentials edhoc_auth_cred_mocked_resp_any = {
241
- .fetch = auth_cred_fetch_resp_any,
242
- .verify = auth_cred_verify_resp,
243
- };
244
-
245
- static const struct edhoc_ead edhoc_ead_single_token = {
246
- .compose = ead_compose_single_token,
247
- .process = ead_process_single_token,
248
- };
249
-
250
- static const struct edhoc_ead edhoc_ead_multiple_tokens = {
251
- .compose = ead_compose_multiple_tokens,
252
- .process = ead_process_multiple_tokens,
253
- };
254
-
255
- static const uint8_t ead_val_msg_1[] = {
256
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
257
- };
258
- static const uint8_t ead_val_msg_2[] = {
259
- 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
260
- 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
261
- };
262
- static const uint8_t ead_val_msg_3[] = {
263
- 0x55, 0x9a, 0xea, 0xd0, 0x82, 0x64, 0xd5, 0x79, 0x5d, 0x39, 0x09, 0x71,
264
- 0x8c, 0xdd, 0x05, 0xab, 0xd4, 0x95, 0x72, 0xe8, 0x4f, 0xe5, 0x55, 0x90,
265
- 0xee, 0xf3, 0x1a, 0x88, 0xa0, 0x8f, 0xdf, 0xfd, 0x3c, 0xb2, 0x5f, 0x25,
266
- 0xfa, 0xac, 0xd5, 0x7a, 0x90, 0x43, 0x4f, 0x64, 0xd0, 0x36, 0x2f, 0x2a,
267
- 0x2d, 0x2d, 0x0a, 0x90, 0xcf, 0x1a, 0x5a, 0x4c, 0x5d, 0xb0, 0x2d, 0x56,
268
- 0xec, 0xc4, 0xc5, 0xbf, 0x34, 0x00, 0x72, 0x08, 0xd5, 0xb8, 0x87, 0x18,
269
- 0x58, 0x65, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9,
270
- 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
271
- 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
272
- };
273
-
274
- static const uint8_t ead_val_msg_4[] = {
275
- 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x00,
276
- };
277
-
278
- static const struct edhoc_ead_token ead_single_token_msg_1 = {
279
- .label = 0,
280
- .value = ead_val_msg_1,
281
- .value_len = ARRAY_SIZE(ead_val_msg_1),
282
- };
283
-
284
- static const struct edhoc_ead_token ead_single_token_msg_2 = {
285
- .label = 24,
286
- .value = ead_val_msg_2,
287
- .value_len = ARRAY_SIZE(ead_val_msg_2),
288
- };
289
-
290
- static const struct edhoc_ead_token ead_single_token_msg_3 = {
291
- .label = 65535,
292
- .value = ead_val_msg_3,
293
- .value_len = ARRAY_SIZE(ead_val_msg_3),
294
- };
295
-
296
- static const struct edhoc_ead_token ead_single_token_msg_4 = {
297
- .label = -830,
298
- .value = ead_val_msg_4,
299
- .value_len = ARRAY_SIZE(ead_val_msg_4),
300
- };
301
-
302
- static const struct edhoc_ead_token ead_multiple_tokens_msg_1[] = {
303
- ead_single_token_msg_1,
304
- ead_single_token_msg_2,
305
- ead_single_token_msg_3,
306
- };
307
-
308
- static const struct edhoc_ead_token ead_multiple_tokens_msg_2[] = {
309
- ead_single_token_msg_3,
310
- ead_single_token_msg_1,
311
- };
312
-
313
- static const struct edhoc_ead_token ead_multiple_tokens_msg_3[] = {
314
- ead_single_token_msg_3,
315
- ead_single_token_msg_2,
316
- ead_single_token_msg_1,
317
- };
318
-
319
- static const struct edhoc_ead_token ead_multiple_tokens_msg_4[] = {
320
- ead_single_token_msg_1,
321
- ead_single_token_msg_4,
322
- ead_single_token_msg_3,
323
- };
324
-
325
- /* Static function definitions --------------------------------------------- */
326
-
327
- static int
328
- cipher_suite_0_make_key_pair_init(void *user_ctx, const void *kid,
329
- uint8_t *priv_key, size_t priv_key_size,
330
- size_t *priv_key_len, uint8_t *pub_key,
331
- size_t pub_key_size, size_t *pub_key_len)
332
- {
333
- (void)user_ctx;
334
-
335
- if (NULL == kid || NULL == priv_key || 0 == priv_key_size ||
336
- NULL == priv_key_len || NULL == pub_key || 0 == pub_key_size ||
337
- NULL == pub_key_len)
338
- return EDHOC_ERROR_INVALID_ARGUMENT;
339
-
340
- *priv_key_len = ARRAY_SIZE(X);
341
- memcpy(priv_key, X, ARRAY_SIZE(X));
342
-
343
- *pub_key_len = ARRAY_SIZE(G_X);
344
- memcpy(pub_key, G_X, ARRAY_SIZE(G_X));
345
-
346
- return EDHOC_SUCCESS;
347
- }
348
-
349
- static int
350
- cipher_suite_0_make_key_pair_resp(void *user_ctx, const void *kid,
351
- uint8_t *priv_key, size_t priv_key_size,
352
- size_t *priv_key_len, uint8_t *pub_key,
353
- size_t pub_key_size, size_t *pub_key_len)
354
- {
355
- (void)user_ctx;
356
-
357
- if (NULL == kid || NULL == priv_key || 0 == priv_key_size ||
358
- NULL == priv_key_len || NULL == pub_key || 0 == pub_key_size ||
359
- NULL == pub_key_len)
360
- return EDHOC_ERROR_INVALID_ARGUMENT;
361
-
362
- *priv_key_len = ARRAY_SIZE(Y);
363
- memcpy(priv_key, Y, ARRAY_SIZE(Y));
364
-
365
- *pub_key_len = ARRAY_SIZE(G_X);
366
- memcpy(pub_key, G_Y, ARRAY_SIZE(G_Y));
367
-
368
- return EDHOC_SUCCESS;
369
- }
370
-
371
- static int auth_cred_fetch_init(void *user_ctx,
372
- struct edhoc_auth_creds *auth_cred)
373
- {
374
- (void)user_ctx;
375
-
376
- if (NULL == auth_cred)
377
- return EDHOC_ERROR_INVALID_ARGUMENT;
378
-
379
- /**
380
- * \brief Here we check algorithm for certificate fingerprint.
381
- * - 0x2e is CBOR encoding of the integer -15.
382
- */
383
- if (CBOR_ENC_COSE_ALG_SHA_256_64 != ID_CRED_I_cborised[4])
384
- return EDHOC_ERROR_INVALID_ARGUMENT;
385
-
386
- auth_cred->label = EDHOC_COSE_HEADER_X509_HASH;
387
- auth_cred->x509_hash.cert = CRED_I;
388
- auth_cred->x509_hash.cert_len = ARRAY_SIZE(CRED_I);
389
- auth_cred->x509_hash.cert_fp = &ID_CRED_I_cborised[6];
390
- auth_cred->x509_hash.cert_fp_len = ARRAY_SIZE(ID_CRED_I_cborised) - 6;
391
- auth_cred->x509_hash.encode_type = EDHOC_ENCODE_TYPE_INTEGER;
392
- auth_cred->x509_hash.alg_int = COSE_ALG_SHA_256_64;
393
-
394
- const int ret = cipher_suite_0_key_import(NULL, EDHOC_KT_SIGNATURE,
395
- SK_I, ARRAY_SIZE(SK_I),
396
- auth_cred->priv_key_id);
397
-
398
- if (EDHOC_SUCCESS != ret)
399
- return EDHOC_ERROR_CREDENTIALS_FAILURE;
400
-
401
- return EDHOC_SUCCESS;
402
- }
403
-
404
- static int auth_cred_fetch_init_any(void *user_ctx,
405
- struct edhoc_auth_creds *auth_cred)
406
- {
407
- (void)user_ctx;
408
-
409
- if (NULL == auth_cred)
410
- return EDHOC_ERROR_INVALID_ARGUMENT;
411
-
412
- auth_cred->label = EDHOC_COSE_ANY;
413
- auth_cred->any.id_cred = ID_CRED_I_cborised;
414
- auth_cred->any.id_cred_len = ARRAY_SIZE(ID_CRED_I_cborised);
415
- auth_cred->any.cred = CRED_I_cborised;
416
- auth_cred->any.cred_len = ARRAY_SIZE(CRED_I_cborised);
417
-
418
- const int ret = cipher_suite_0_key_import(NULL, EDHOC_KT_SIGNATURE,
419
- SK_I, ARRAY_SIZE(SK_I),
420
- auth_cred->priv_key_id);
421
-
422
- if (EDHOC_SUCCESS != ret)
423
- return EDHOC_ERROR_CREDENTIALS_FAILURE;
424
-
425
- return EDHOC_SUCCESS;
426
- }
427
-
428
- static int auth_cred_fetch_resp(void *user_ctx,
429
- struct edhoc_auth_creds *auth_cred)
430
- {
431
- (void)user_ctx;
432
-
433
- if (NULL == auth_cred)
434
- return EDHOC_ERROR_INVALID_ARGUMENT;
435
-
436
- /**
437
- * \brief Here we check algorithm for certificate fingerprint.
438
- * - 0x2e is CBOR encoding of the integer -15.
439
- */
440
- if (CBOR_ENC_COSE_ALG_SHA_256_64 != ID_CRED_R_cborised[4])
441
- return EDHOC_ERROR_INVALID_ARGUMENT;
442
-
443
- auth_cred->label = EDHOC_COSE_HEADER_X509_HASH;
444
- auth_cred->x509_hash.cert = CRED_R;
445
- auth_cred->x509_hash.cert_len = ARRAY_SIZE(CRED_R);
446
- auth_cred->x509_hash.cert_fp = &ID_CRED_R_cborised[6];
447
- auth_cred->x509_hash.cert_fp_len = ARRAY_SIZE(ID_CRED_R_cborised) - 6;
448
- auth_cred->x509_hash.encode_type = EDHOC_ENCODE_TYPE_INTEGER;
449
- auth_cred->x509_hash.alg_int = COSE_ALG_SHA_256_64;
450
-
451
- const int ret = cipher_suite_0_key_import(NULL, EDHOC_KT_SIGNATURE,
452
- SK_R, ARRAY_SIZE(SK_R),
453
- auth_cred->priv_key_id);
454
-
455
- if (EDHOC_SUCCESS != ret)
456
- return EDHOC_ERROR_CREDENTIALS_FAILURE;
457
-
458
- return EDHOC_SUCCESS;
459
- }
460
-
461
- static int auth_cred_fetch_resp_any(void *user_ctx,
462
- struct edhoc_auth_creds *auth_cred)
463
- {
464
- (void)user_ctx;
465
-
466
- if (NULL == auth_cred)
467
- return EDHOC_ERROR_INVALID_ARGUMENT;
468
-
469
- auth_cred->label = EDHOC_COSE_ANY;
470
- auth_cred->any.id_cred = ID_CRED_R_cborised;
471
- auth_cred->any.id_cred_len = ARRAY_SIZE(ID_CRED_R_cborised);
472
- auth_cred->any.cred = CRED_R_cborised;
473
- auth_cred->any.cred_len = ARRAY_SIZE(CRED_R_cborised);
474
-
475
- const int ret = cipher_suite_0_key_import(NULL, EDHOC_KT_SIGNATURE,
476
- SK_R, ARRAY_SIZE(SK_R),
477
- auth_cred->priv_key_id);
478
-
479
- if (EDHOC_SUCCESS != ret)
480
- return EDHOC_ERROR_CREDENTIALS_FAILURE;
481
-
482
- return EDHOC_SUCCESS;
483
- }
484
-
485
- static int auth_cred_verify_init(void *user_ctx,
486
- struct edhoc_auth_creds *auth_cred,
487
- const uint8_t **pub_key, size_t *pub_key_len)
488
- {
489
- (void)user_ctx;
490
-
491
- if (NULL == auth_cred || NULL == pub_key || NULL == pub_key_len)
492
- return EDHOC_ERROR_INVALID_ARGUMENT;
493
-
494
- /**
495
- * \brief Verify COSE header label value.
496
- */
497
- if (EDHOC_COSE_HEADER_X509_HASH != auth_cred->label)
498
- return EDHOC_ERROR_CREDENTIALS_FAILURE;
499
-
500
- /**
501
- * \brief Verify received COSE IANA hash algorithm value.
502
- */
503
- if (EDHOC_ENCODE_TYPE_INTEGER != auth_cred->x509_hash.encode_type ||
504
- COSE_ALG_SHA_256_64 != auth_cred->x509_hash.alg_int)
505
- return EDHOC_ERROR_CREDENTIALS_FAILURE;
506
-
507
- /**
508
- * \brief Verify if received certificate fingerprint matches.
509
- */
510
- size_t hash_len = 0;
511
- uint8_t hash[32] = { 0 };
512
- const psa_status_t status =
513
- psa_hash_compute(PSA_ALG_SHA_256, CRED_R, ARRAY_SIZE(CRED_R),
514
- hash, ARRAY_SIZE(hash), &hash_len);
515
-
516
- if (PSA_SUCCESS != status || ARRAY_SIZE(hash) != hash_len)
517
- return EDHOC_ERROR_CREDENTIALS_FAILURE;
518
-
519
- uint8_t cert_fp[8] = { 0 };
520
- memcpy(cert_fp, hash, sizeof(cert_fp));
521
-
522
- if (ARRAY_SIZE(cert_fp) != auth_cred->x509_hash.cert_fp_len)
523
- return EDHOC_ERROR_CREDENTIALS_FAILURE;
524
-
525
- if (0 != memcmp(cert_fp, auth_cred->x509_hash.cert_fp,
526
- auth_cred->x509_hash.cert_fp_len))
527
- return EDHOC_ERROR_CREDENTIALS_FAILURE;
528
-
529
- /**
530
- * \brief If successful then assign certificate and public key.
531
- */
532
- auth_cred->x509_hash.cert = CRED_R;
533
- auth_cred->x509_hash.cert_len = ARRAY_SIZE(CRED_R);
534
-
535
- *pub_key = PK_R;
536
- *pub_key_len = ARRAY_SIZE(PK_R);
537
-
538
- return EDHOC_SUCCESS;
539
- }
540
-
541
- static int auth_cred_verify_resp(void *user_ctx,
542
- struct edhoc_auth_creds *auth_cred,
543
- const uint8_t **pub_key, size_t *pub_key_len)
544
- {
545
- (void)user_ctx;
546
-
547
- if (NULL == auth_cred || NULL == pub_key || NULL == pub_key_len)
548
- return EDHOC_ERROR_INVALID_ARGUMENT;
549
-
550
- /**
551
- * \brief Verify COSE header label value.
552
- */
553
- if (EDHOC_COSE_HEADER_X509_HASH != auth_cred->label)
554
- return EDHOC_ERROR_CREDENTIALS_FAILURE;
555
-
556
- /**
557
- * \brief Verify received COSE IANA hash algorithm value.
558
- */
559
- if (EDHOC_ENCODE_TYPE_INTEGER != auth_cred->x509_hash.encode_type ||
560
- COSE_ALG_SHA_256_64 != auth_cred->x509_hash.alg_int)
561
- return EDHOC_ERROR_CREDENTIALS_FAILURE;
562
-
563
- /**
564
- * \brief Verify if received certificate fingerprint matches.
565
- */
566
- size_t hash_len = 0;
567
- uint8_t hash[32] = { 0 };
568
- const psa_status_t status =
569
- psa_hash_compute(PSA_ALG_SHA_256, CRED_I, ARRAY_SIZE(CRED_I),
570
- hash, ARRAY_SIZE(hash), &hash_len);
571
-
572
- if (PSA_SUCCESS != status || ARRAY_SIZE(hash) != hash_len)
573
- return EDHOC_ERROR_CREDENTIALS_FAILURE;
574
-
575
- uint8_t cert_fp[8] = { 0 };
576
- memcpy(cert_fp, hash, sizeof(cert_fp));
577
-
578
- if (ARRAY_SIZE(cert_fp) != auth_cred->x509_hash.cert_fp_len)
579
- return EDHOC_ERROR_CREDENTIALS_FAILURE;
580
-
581
- if (0 != memcmp(cert_fp, auth_cred->x509_hash.cert_fp,
582
- auth_cred->x509_hash.cert_fp_len))
583
- return EDHOC_ERROR_CREDENTIALS_FAILURE;
584
-
585
- /**
586
- * \brief If successful then assign certificate and public key.
587
- */
588
- auth_cred->x509_hash.cert = CRED_I;
589
- auth_cred->x509_hash.cert_len = ARRAY_SIZE(CRED_I);
590
-
591
- *pub_key = PK_I;
592
- *pub_key_len = ARRAY_SIZE(PK_I);
593
-
594
- return EDHOC_SUCCESS;
595
- }
596
-
597
- static int ead_compose_single_token(void *user_ctx, enum edhoc_message msg,
598
- struct edhoc_ead_token *ead_token,
599
- size_t ead_token_size,
600
- size_t *ead_token_len)
601
- {
602
- if (NULL == user_ctx || NULL == ead_token || 0 == ead_token_size ||
603
- NULL == ead_token_len)
604
- return EDHOC_ERROR_EAD_PROCESS_FAILURE;
605
-
606
- const struct edhoc_ead_token *token = NULL;
607
-
608
- switch (msg) {
609
- case EDHOC_MSG_1:
610
- token = &ead_single_token_msg_1;
611
- break;
612
- case EDHOC_MSG_2:
613
- token = &ead_single_token_msg_2;
614
- break;
615
- case EDHOC_MSG_3:
616
- token = &ead_single_token_msg_3;
617
- break;
618
- case EDHOC_MSG_4:
619
- token = &ead_single_token_msg_4;
620
- break;
621
- default:
622
- return EDHOC_ERROR_EAD_COMPOSE_FAILURE;
623
- }
624
-
625
- ead_token[0] = *token;
626
- *ead_token_len = 1;
627
-
628
- struct ead_context *ead_ctx = user_ctx;
629
-
630
- ead_ctx->msg = msg;
631
- ead_ctx->recv_tokens = 1;
632
-
633
- for (size_t i = 0; i < ead_ctx->recv_tokens; ++i) {
634
- ead_ctx->token[i].label = ead_token[i].label;
635
- ead_ctx->token[i].value_len = ead_token[i].value_len;
636
- memcpy(ead_ctx->token[i].value, ead_token[i].value,
637
- ead_token[i].value_len);
638
- }
639
-
640
- return EDHOC_SUCCESS;
641
- }
642
-
643
- static int ead_process_single_token(void *user_ctx, enum edhoc_message msg,
644
- const struct edhoc_ead_token *ead_token,
645
- size_t ead_token_size)
646
- {
647
- if (NULL == user_ctx || NULL == ead_token || 0 == ead_token_size)
648
- return EDHOC_ERROR_EAD_PROCESS_FAILURE;
649
-
650
- struct ead_context *ead_ctx = user_ctx;
651
-
652
- ead_ctx->msg = msg;
653
- ead_ctx->recv_tokens = ead_token_size;
654
-
655
- for (size_t i = 0; i < ead_token_size; ++i) {
656
- ead_ctx->token[i].label = ead_token[i].label;
657
- ead_ctx->token[i].value_len = ead_token[i].value_len;
658
- memcpy(ead_ctx->token[i].value, ead_token[i].value,
659
- ead_token[i].value_len);
660
- }
661
-
662
- return EDHOC_SUCCESS;
663
- }
664
-
665
- static int ead_compose_multiple_tokens(void *user_ctx, enum edhoc_message msg,
666
- struct edhoc_ead_token *ead_token,
667
- size_t ead_token_size,
668
- size_t *ead_token_len)
669
- {
670
- if (NULL == user_ctx || NULL == ead_token || 0 == ead_token_size ||
671
- NULL == ead_token_len)
672
- return EDHOC_ERROR_EAD_PROCESS_FAILURE;
673
-
674
- size_t len = 0;
675
- const struct edhoc_ead_token *token = NULL;
676
-
677
- switch (msg) {
678
- case EDHOC_MSG_1:
679
- token = ead_multiple_tokens_msg_1;
680
- len = ARRAY_SIZE(ead_multiple_tokens_msg_1);
681
- break;
682
- case EDHOC_MSG_2:
683
- token = ead_multiple_tokens_msg_2;
684
- len = ARRAY_SIZE(ead_multiple_tokens_msg_2);
685
- break;
686
- case EDHOC_MSG_3:
687
- token = ead_multiple_tokens_msg_3;
688
- len = ARRAY_SIZE(ead_multiple_tokens_msg_3);
689
- break;
690
- case EDHOC_MSG_4:
691
- token = ead_multiple_tokens_msg_4;
692
- len = ARRAY_SIZE(ead_multiple_tokens_msg_4);
693
- break;
694
- default:
695
- return EDHOC_ERROR_EAD_COMPOSE_FAILURE;
696
- }
697
-
698
- *ead_token_len = len;
699
-
700
- for (size_t i = 0; i < len; ++i)
701
- ead_token[i] = token[i];
702
-
703
- struct ead_context *ead_ctx = user_ctx;
704
-
705
- ead_ctx->msg = msg;
706
- ead_ctx->recv_tokens = len;
707
-
708
- for (size_t i = 0; i < ead_ctx->recv_tokens; ++i) {
709
- ead_ctx->token[i].label = ead_token[i].label;
710
- ead_ctx->token[i].value_len = ead_token[i].value_len;
711
- memcpy(ead_ctx->token[i].value, ead_token[i].value,
712
- ead_token[i].value_len);
713
- }
714
-
715
- return EDHOC_SUCCESS;
716
- }
717
-
718
- static int ead_process_multiple_tokens(void *user_ctx, enum edhoc_message msg,
719
- const struct edhoc_ead_token *ead_token,
720
- size_t ead_token_size)
721
- {
722
- if (NULL == user_ctx || NULL == ead_token || 0 == ead_token_size)
723
- return EDHOC_ERROR_EAD_PROCESS_FAILURE;
724
-
725
- struct ead_context *ead_ctx = user_ctx;
726
-
727
- ead_ctx->msg = msg;
728
- ead_ctx->recv_tokens = ead_token_size;
729
-
730
- for (size_t i = 0; i < ead_token_size; ++i) {
731
- ead_ctx->token[i].label = ead_token[i].label;
732
- ead_ctx->token[i].value_len = ead_token[i].value_len;
733
- memcpy(ead_ctx->token[i].value, ead_token[i].value,
734
- ead_token[i].value_len);
735
- }
736
-
737
- return EDHOC_SUCCESS;
738
- }
739
-
740
- static inline void print_array(void *user_context, const char *name,
741
- const uint8_t *buffer, size_t buffer_length)
742
- {
743
- (void)user_context;
744
-
745
- printf("%s:\tLEN( %zu )\n", name, buffer_length);
746
-
747
- for (size_t i = 0; i < buffer_length; ++i) {
748
- if (0 == i % 16 && i > 0) {
749
- printf("\n");
750
- }
751
-
752
- printf("%02x ", buffer[i]);
753
- }
754
-
755
- printf("\n\n");
756
- }
757
-
758
- /* Module interface function definitions ----------------------------------- */
759
-
760
- TEST_GROUP(rfc9529_chapter_2);
761
-
762
- TEST_SETUP(rfc9529_chapter_2)
763
- {
764
- ret = psa_crypto_init();
765
- TEST_ASSERT_EQUAL(PSA_SUCCESS, ret);
766
-
767
- const enum edhoc_method methods[] = { METHOD };
768
- const struct edhoc_cipher_suite cipher_suites[] = {
769
- edhoc_cipher_suite_0,
770
- };
771
-
772
- const struct edhoc_connection_id init_cid = {
773
- .encode_type = EDHOC_CID_TYPE_ONE_BYTE_INTEGER,
774
- .int_value = (int8_t)C_I[0],
775
- };
776
-
777
- struct edhoc_connection_id resp_cid = {
778
- .encode_type = EDHOC_CID_TYPE_BYTE_STRING,
779
- .bstr_length = ARRAY_SIZE(C_R),
780
- };
781
- memcpy(&resp_cid.bstr_value, C_R, ARRAY_SIZE(C_R));
782
-
783
- ret = edhoc_context_init(init_ctx);
784
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
785
-
786
- ret = edhoc_set_methods(init_ctx, methods, ARRAY_SIZE(methods));
787
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
788
-
789
- ret = edhoc_set_cipher_suites(init_ctx, cipher_suites,
790
- ARRAY_SIZE(cipher_suites));
791
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
792
-
793
- ret = edhoc_set_connection_id(init_ctx, &init_cid);
794
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
795
-
796
- ret = edhoc_bind_keys(init_ctx, &edhoc_keys);
797
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
798
-
799
- ret = edhoc_bind_crypto(init_ctx, &edhoc_crypto_mocked_init);
800
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
801
-
802
- ret = edhoc_bind_credentials(init_ctx, &edhoc_auth_cred_mocked_init);
803
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
804
-
805
- ret = edhoc_context_init(resp_ctx);
806
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
807
-
808
- ret = edhoc_set_methods(resp_ctx, methods, ARRAY_SIZE(methods));
809
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
810
-
811
- ret = edhoc_set_cipher_suites(resp_ctx, cipher_suites,
812
- ARRAY_SIZE(cipher_suites));
813
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
814
-
815
- ret = edhoc_set_connection_id(resp_ctx, &resp_cid);
816
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
817
-
818
- ret = edhoc_bind_keys(resp_ctx, &edhoc_keys);
819
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
820
-
821
- ret = edhoc_bind_crypto(resp_ctx, &edhoc_crypto_mocked_resp);
822
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
823
-
824
- ret = edhoc_bind_credentials(resp_ctx, &edhoc_auth_cred_mocked_resp);
825
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
826
-
827
- #if defined(TEST_TRACES)
828
- init_ctx->logger = print_array;
829
- resp_ctx->logger = print_array;
830
- #endif
831
- }
832
-
833
- TEST_TEAR_DOWN(rfc9529_chapter_2)
834
- {
835
- mbedtls_psa_crypto_free();
836
-
837
- ret = edhoc_context_deinit(init_ctx);
838
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
839
-
840
- ret = edhoc_context_deinit(resp_ctx);
841
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
842
- }
843
-
844
- TEST(rfc9529_chapter_2, message_1_compose)
845
- {
846
- size_t msg_1_len = 0;
847
- uint8_t msg_1[ARRAY_SIZE(message_1)] = { 0 };
848
-
849
- ret = edhoc_message_1_compose(init_ctx, msg_1, ARRAY_SIZE(msg_1),
850
- &msg_1_len);
851
-
852
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
853
- TEST_ASSERT_EQUAL(EDHOC_SM_WAIT_M2, init_ctx->status);
854
- TEST_ASSERT_EQUAL(false, init_ctx->is_oscore_export_allowed);
855
-
856
- ret = edhoc_error_get_code(init_ctx, &error_code_recv);
857
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
858
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
859
-
860
- TEST_ASSERT_EQUAL(ARRAY_SIZE(message_1), msg_1_len);
861
- TEST_ASSERT_EQUAL_UINT8_ARRAY(message_1, msg_1, msg_1_len);
862
-
863
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_1, init_ctx->th_state);
864
- TEST_ASSERT_EQUAL(ARRAY_SIZE(H_message_1), init_ctx->th_len);
865
- TEST_ASSERT_EQUAL_UINT8_ARRAY(H_message_1, init_ctx->th,
866
- init_ctx->th_len);
867
-
868
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_INVALID, init_ctx->prk_state);
869
- TEST_ASSERT_EQUAL(0, init_ctx->prk_len);
870
-
871
- TEST_ASSERT_EQUAL(ARRAY_SIZE(X), init_ctx->dh_priv_key_len);
872
- TEST_ASSERT_EQUAL_UINT8_ARRAY(X, init_ctx->dh_priv_key,
873
- init_ctx->dh_priv_key_len);
874
- }
875
-
876
- TEST(rfc9529_chapter_2, message_1_process)
877
- {
878
- ret = edhoc_message_1_process(resp_ctx, message_1,
879
- ARRAY_SIZE(message_1));
880
-
881
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
882
- TEST_ASSERT_EQUAL(EDHOC_SM_RECEIVED_M1, resp_ctx->status);
883
- TEST_ASSERT_EQUAL(false, resp_ctx->is_oscore_export_allowed);
884
-
885
- ret = edhoc_error_get_code(resp_ctx, &error_code_recv);
886
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
887
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
888
-
889
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_1, resp_ctx->th_state);
890
- TEST_ASSERT_EQUAL(ARRAY_SIZE(H_message_1), resp_ctx->th_len);
891
- TEST_ASSERT_EQUAL_UINT8_ARRAY(H_message_1, resp_ctx->th,
892
- resp_ctx->th_len);
893
-
894
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_INVALID, resp_ctx->prk_state);
895
- TEST_ASSERT_EQUAL(0, resp_ctx->prk_len);
896
-
897
- TEST_ASSERT_EQUAL(EDHOC_CID_TYPE_ONE_BYTE_INTEGER,
898
- resp_ctx->peer_cid.encode_type);
899
- TEST_ASSERT_EQUAL((int8_t)C_I[0], resp_ctx->peer_cid.int_value);
900
-
901
- TEST_ASSERT_EQUAL(ARRAY_SIZE(G_X), resp_ctx->dh_peer_pub_key_len);
902
- TEST_ASSERT_EQUAL_UINT8_ARRAY(G_X, resp_ctx->dh_peer_pub_key,
903
- resp_ctx->dh_peer_pub_key_len);
904
- }
905
-
906
- TEST(rfc9529_chapter_2, message_2_compose)
907
- {
908
- /* Required injections. */
909
- resp_ctx->status = EDHOC_SM_RECEIVED_M1;
910
- resp_ctx->chosen_method = METHOD;
911
-
912
- resp_ctx->th_state = EDHOC_TH_STATE_1;
913
- resp_ctx->th_len = ARRAY_SIZE(H_message_1);
914
- memcpy(resp_ctx->th, H_message_1, sizeof(H_message_1));
915
-
916
- resp_ctx->dh_peer_pub_key_len = ARRAY_SIZE(G_X);
917
- memcpy(resp_ctx->dh_peer_pub_key, G_X, ARRAY_SIZE(G_X));
918
-
919
- resp_ctx->peer_cid.encode_type = EDHOC_CID_TYPE_ONE_BYTE_INTEGER;
920
- resp_ctx->peer_cid.int_value = (int8_t)C_I[0];
921
-
922
- size_t msg_2_len = 0;
923
- uint8_t msg_2[ARRAY_SIZE(message_2)] = { 0 };
924
-
925
- ret = edhoc_message_2_compose(resp_ctx, msg_2, ARRAY_SIZE(msg_2),
926
- &msg_2_len);
927
-
928
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
929
- TEST_ASSERT_EQUAL(EDHOC_SM_WAIT_M3, resp_ctx->status);
930
- TEST_ASSERT_EQUAL(false, resp_ctx->is_oscore_export_allowed);
931
-
932
- ret = edhoc_error_get_code(resp_ctx, &error_code_recv);
933
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
934
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
935
-
936
- TEST_ASSERT_EQUAL(ARRAY_SIZE(message_2), msg_2_len);
937
- TEST_ASSERT_EQUAL_UINT8_ARRAY(msg_2, message_2, msg_2_len);
938
-
939
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_3, resp_ctx->th_state);
940
- TEST_ASSERT_EQUAL(ARRAY_SIZE(TH_3), resp_ctx->th_len);
941
- TEST_ASSERT_EQUAL_UINT8_ARRAY(resp_ctx->th, TH_3, resp_ctx->th_len);
942
-
943
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_3E2M, resp_ctx->prk_state);
944
- TEST_ASSERT_EQUAL(ARRAY_SIZE(PRK_3e2m), resp_ctx->prk_len);
945
- TEST_ASSERT_EQUAL_UINT8_ARRAY(PRK_3e2m, resp_ctx->prk,
946
- resp_ctx->prk_len);
947
-
948
- TEST_ASSERT_EQUAL(ARRAY_SIZE(G_XY), resp_ctx->dh_secret_len);
949
- TEST_ASSERT_EQUAL_UINT8_ARRAY(G_XY, resp_ctx->dh_secret,
950
- resp_ctx->dh_secret_len);
951
- }
952
-
953
- TEST(rfc9529_chapter_2, message_2_compose_any)
954
- {
955
- ret = edhoc_bind_credentials(resp_ctx,
956
- &edhoc_auth_cred_mocked_resp_any);
957
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
958
-
959
- /* Required injections. */
960
- resp_ctx->status = EDHOC_SM_RECEIVED_M1;
961
- resp_ctx->chosen_method = METHOD;
962
-
963
- resp_ctx->th_state = EDHOC_TH_STATE_1;
964
- resp_ctx->th_len = ARRAY_SIZE(H_message_1);
965
- memcpy(resp_ctx->th, H_message_1, sizeof(H_message_1));
966
-
967
- resp_ctx->dh_peer_pub_key_len = ARRAY_SIZE(G_X);
968
- memcpy(resp_ctx->dh_peer_pub_key, G_X, ARRAY_SIZE(G_X));
969
-
970
- resp_ctx->peer_cid.encode_type = EDHOC_CID_TYPE_ONE_BYTE_INTEGER;
971
- resp_ctx->peer_cid.int_value = (int8_t)C_I[0];
972
-
973
- size_t msg_2_len = 0;
974
- uint8_t msg_2[ARRAY_SIZE(message_2)] = { 0 };
975
-
976
- ret = edhoc_message_2_compose(resp_ctx, msg_2, ARRAY_SIZE(msg_2),
977
- &msg_2_len);
978
-
979
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
980
- TEST_ASSERT_EQUAL(EDHOC_SM_WAIT_M3, resp_ctx->status);
981
- TEST_ASSERT_EQUAL(false, resp_ctx->is_oscore_export_allowed);
982
-
983
- ret = edhoc_error_get_code(resp_ctx, &error_code_recv);
984
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
985
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
986
-
987
- TEST_ASSERT_EQUAL(ARRAY_SIZE(message_2), msg_2_len);
988
- TEST_ASSERT_EQUAL_UINT8_ARRAY(msg_2, message_2, msg_2_len);
989
-
990
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_3, resp_ctx->th_state);
991
- TEST_ASSERT_EQUAL(ARRAY_SIZE(TH_3), resp_ctx->th_len);
992
- TEST_ASSERT_EQUAL_UINT8_ARRAY(resp_ctx->th, TH_3, resp_ctx->th_len);
993
-
994
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_3E2M, resp_ctx->prk_state);
995
- TEST_ASSERT_EQUAL(ARRAY_SIZE(PRK_3e2m), resp_ctx->prk_len);
996
- TEST_ASSERT_EQUAL_UINT8_ARRAY(PRK_3e2m, resp_ctx->prk,
997
- resp_ctx->prk_len);
998
-
999
- TEST_ASSERT_EQUAL(ARRAY_SIZE(G_XY), resp_ctx->dh_secret_len);
1000
- TEST_ASSERT_EQUAL_UINT8_ARRAY(G_XY, resp_ctx->dh_secret,
1001
- resp_ctx->dh_secret_len);
1002
- }
1003
-
1004
- TEST(rfc9529_chapter_2, message_2_process)
1005
- {
1006
- /* Required injections. */
1007
- init_ctx->status = EDHOC_SM_WAIT_M2;
1008
- init_ctx->chosen_method = METHOD;
1009
-
1010
- init_ctx->th_state = EDHOC_TH_STATE_1;
1011
- init_ctx->th_len = ARRAY_SIZE(H_message_1);
1012
- memcpy(init_ctx->th, H_message_1, ARRAY_SIZE(H_message_1));
1013
-
1014
- init_ctx->dh_priv_key_len = ARRAY_SIZE(X);
1015
- memcpy(init_ctx->dh_priv_key, X, ARRAY_SIZE(X));
1016
-
1017
- ret = edhoc_message_2_process(init_ctx, message_2,
1018
- ARRAY_SIZE(message_2));
1019
-
1020
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1021
- TEST_ASSERT_EQUAL(EDHOC_SM_VERIFIED_M2, init_ctx->status);
1022
- TEST_ASSERT_EQUAL(false, init_ctx->is_oscore_export_allowed);
1023
-
1024
- ret = edhoc_error_get_code(init_ctx, &error_code_recv);
1025
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1026
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
1027
-
1028
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_3, init_ctx->th_state);
1029
- TEST_ASSERT_EQUAL(ARRAY_SIZE(TH_3), init_ctx->th_len);
1030
- TEST_ASSERT_EQUAL_UINT8_ARRAY(init_ctx->th, TH_3, init_ctx->th_len);
1031
-
1032
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_3E2M, init_ctx->prk_state);
1033
- TEST_ASSERT_EQUAL(ARRAY_SIZE(PRK_3e2m), init_ctx->prk_len);
1034
- TEST_ASSERT_EQUAL_UINT8_ARRAY(PRK_3e2m, init_ctx->prk,
1035
- init_ctx->prk_len);
1036
-
1037
- TEST_ASSERT_EQUAL(ARRAY_SIZE(G_XY), init_ctx->dh_secret_len);
1038
- TEST_ASSERT_EQUAL_UINT8_ARRAY(init_ctx->dh_secret, G_XY,
1039
- sizeof(init_ctx->dh_secret));
1040
-
1041
- TEST_ASSERT_EQUAL(EDHOC_CID_TYPE_BYTE_STRING,
1042
- init_ctx->peer_cid.encode_type);
1043
- TEST_ASSERT_EQUAL(ARRAY_SIZE(C_R), init_ctx->peer_cid.bstr_length);
1044
- TEST_ASSERT_EQUAL_UINT8_ARRAY(C_R, init_ctx->peer_cid.bstr_value,
1045
- init_ctx->peer_cid.bstr_length);
1046
- }
1047
-
1048
- TEST(rfc9529_chapter_2, message_3_compose)
1049
- {
1050
- /* Required injections. */
1051
- init_ctx->status = EDHOC_SM_VERIFIED_M2;
1052
- init_ctx->chosen_method = METHOD;
1053
-
1054
- init_ctx->th_state = EDHOC_TH_STATE_3;
1055
- init_ctx->th_len = ARRAY_SIZE(TH_3);
1056
- memcpy(init_ctx->th, TH_3, ARRAY_SIZE(TH_3));
1057
-
1058
- init_ctx->prk_state = EDHOC_PRK_STATE_3E2M;
1059
- init_ctx->prk_len = ARRAY_SIZE(PRK_3e2m);
1060
- memcpy(init_ctx->prk, PRK_3e2m, ARRAY_SIZE(PRK_3e2m));
1061
-
1062
- init_ctx->dh_secret_len = ARRAY_SIZE(G_XY);
1063
- memcpy(init_ctx->dh_secret, G_XY, ARRAY_SIZE(G_XY));
1064
-
1065
- size_t msg_3_len = 0;
1066
- uint8_t msg_3[ARRAY_SIZE(message_3)] = { 0 };
1067
-
1068
- ret = edhoc_message_3_compose(init_ctx, msg_3, ARRAY_SIZE(msg_3),
1069
- &msg_3_len);
1070
-
1071
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1072
- TEST_ASSERT_EQUAL(EDHOC_SM_COMPLETED, init_ctx->status);
1073
- TEST_ASSERT_EQUAL(true, init_ctx->is_oscore_export_allowed);
1074
-
1075
- ret = edhoc_error_get_code(init_ctx, &error_code_recv);
1076
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1077
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
1078
-
1079
- TEST_ASSERT_EQUAL(ARRAY_SIZE(message_3), msg_3_len);
1080
- TEST_ASSERT_EQUAL_UINT8_ARRAY(message_3, msg_3, msg_3_len);
1081
-
1082
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_4, init_ctx->th_state);
1083
- TEST_ASSERT_EQUAL(ARRAY_SIZE(TH_4), init_ctx->th_len);
1084
- TEST_ASSERT_EQUAL_UINT8_ARRAY(TH_4, init_ctx->th, init_ctx->th_len);
1085
-
1086
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_4E3M, init_ctx->prk_state);
1087
- TEST_ASSERT_EQUAL(ARRAY_SIZE(PRK_4e3m), init_ctx->prk_len);
1088
- TEST_ASSERT_EQUAL_UINT8_ARRAY(PRK_4e3m, init_ctx->prk,
1089
- init_ctx->prk_len);
1090
- }
1091
-
1092
- TEST(rfc9529_chapter_2, message_3_compose_any)
1093
- {
1094
- ret = edhoc_bind_credentials(init_ctx,
1095
- &edhoc_auth_cred_mocked_init_any);
1096
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1097
-
1098
- /* Required injections. */
1099
- init_ctx->status = EDHOC_SM_VERIFIED_M2;
1100
- init_ctx->chosen_method = METHOD;
1101
-
1102
- init_ctx->th_state = EDHOC_TH_STATE_3;
1103
- init_ctx->th_len = ARRAY_SIZE(TH_3);
1104
- memcpy(init_ctx->th, TH_3, ARRAY_SIZE(TH_3));
1105
-
1106
- init_ctx->prk_state = EDHOC_PRK_STATE_3E2M;
1107
- init_ctx->prk_len = ARRAY_SIZE(PRK_3e2m);
1108
- memcpy(init_ctx->prk, PRK_3e2m, ARRAY_SIZE(PRK_3e2m));
1109
-
1110
- init_ctx->dh_secret_len = ARRAY_SIZE(G_XY);
1111
- memcpy(init_ctx->dh_secret, G_XY, ARRAY_SIZE(G_XY));
1112
-
1113
- size_t msg_3_len = 0;
1114
- uint8_t msg_3[ARRAY_SIZE(message_3)] = { 0 };
1115
-
1116
- ret = edhoc_message_3_compose(init_ctx, msg_3, ARRAY_SIZE(msg_3),
1117
- &msg_3_len);
1118
-
1119
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1120
- TEST_ASSERT_EQUAL(EDHOC_SM_COMPLETED, init_ctx->status);
1121
- TEST_ASSERT_EQUAL(true, init_ctx->is_oscore_export_allowed);
1122
-
1123
- ret = edhoc_error_get_code(init_ctx, &error_code_recv);
1124
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1125
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
1126
-
1127
- TEST_ASSERT_EQUAL(ARRAY_SIZE(message_3), msg_3_len);
1128
- TEST_ASSERT_EQUAL_UINT8_ARRAY(message_3, msg_3, msg_3_len);
1129
-
1130
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_4, init_ctx->th_state);
1131
- TEST_ASSERT_EQUAL(ARRAY_SIZE(TH_4), init_ctx->th_len);
1132
- TEST_ASSERT_EQUAL_UINT8_ARRAY(TH_4, init_ctx->th, init_ctx->th_len);
1133
-
1134
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_4E3M, init_ctx->prk_state);
1135
- TEST_ASSERT_EQUAL(ARRAY_SIZE(PRK_4e3m), init_ctx->prk_len);
1136
- TEST_ASSERT_EQUAL_UINT8_ARRAY(PRK_4e3m, init_ctx->prk,
1137
- init_ctx->prk_len);
1138
- }
1139
-
1140
- TEST(rfc9529_chapter_2, message_3_process)
1141
- {
1142
- /* Required injections. */
1143
- resp_ctx->status = EDHOC_SM_WAIT_M3;
1144
- resp_ctx->chosen_method = METHOD;
1145
-
1146
- resp_ctx->th_state = EDHOC_TH_STATE_3;
1147
- resp_ctx->th_len = ARRAY_SIZE(TH_3);
1148
- memcpy(resp_ctx->th, TH_3, ARRAY_SIZE(TH_3));
1149
-
1150
- resp_ctx->prk_state = EDHOC_PRK_STATE_3E2M;
1151
- resp_ctx->prk_len = ARRAY_SIZE(PRK_3e2m);
1152
- memcpy(resp_ctx->prk, PRK_3e2m, ARRAY_SIZE(PRK_3e2m));
1153
-
1154
- resp_ctx->dh_secret_len = ARRAY_SIZE(G_XY);
1155
- memcpy(resp_ctx->dh_secret, G_XY, ARRAY_SIZE(G_XY));
1156
-
1157
- ret = edhoc_message_3_process(resp_ctx, message_3,
1158
- ARRAY_SIZE(message_3));
1159
-
1160
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1161
- TEST_ASSERT_EQUAL(EDHOC_SM_COMPLETED, resp_ctx->status);
1162
- TEST_ASSERT_EQUAL(true, resp_ctx->is_oscore_export_allowed);
1163
-
1164
- ret = edhoc_error_get_code(resp_ctx, &error_code_recv);
1165
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1166
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
1167
-
1168
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_4, resp_ctx->th_state);
1169
- TEST_ASSERT_EQUAL(ARRAY_SIZE(TH_4), resp_ctx->th_len);
1170
- TEST_ASSERT_EQUAL_UINT8_ARRAY(TH_4, resp_ctx->th, resp_ctx->th_len);
1171
-
1172
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_4E3M, resp_ctx->prk_state);
1173
- TEST_ASSERT_EQUAL(ARRAY_SIZE(PRK_4e3m), resp_ctx->prk_len);
1174
- TEST_ASSERT_EQUAL_UINT8_ARRAY(PRK_4e3m, resp_ctx->prk,
1175
- resp_ctx->prk_len);
1176
- }
1177
-
1178
- TEST(rfc9529_chapter_2, message_4_compose)
1179
- {
1180
- /* Required injections. */
1181
- resp_ctx->status = EDHOC_SM_COMPLETED;
1182
- resp_ctx->is_oscore_export_allowed = true;
1183
-
1184
- resp_ctx->th_state = EDHOC_TH_STATE_4;
1185
- resp_ctx->th_len = ARRAY_SIZE(TH_4);
1186
- memcpy(resp_ctx->th, TH_4, ARRAY_SIZE(TH_4));
1187
-
1188
- resp_ctx->prk_state = EDHOC_PRK_STATE_4E3M;
1189
- resp_ctx->prk_len = ARRAY_SIZE(PRK_4e3m);
1190
- memcpy(resp_ctx->prk, PRK_4e3m, ARRAY_SIZE(PRK_4e3m));
1191
-
1192
- size_t msg_4_len = 0;
1193
- uint8_t msg_4[ARRAY_SIZE(message_4) + 1] = { 0 };
1194
-
1195
- ret = edhoc_message_4_compose(resp_ctx, msg_4, ARRAY_SIZE(msg_4),
1196
- &msg_4_len);
1197
-
1198
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1199
- TEST_ASSERT_EQUAL(EDHOC_SM_PERSISTED, resp_ctx->status);
1200
- TEST_ASSERT_EQUAL(true, resp_ctx->is_oscore_export_allowed);
1201
-
1202
- ret = edhoc_error_get_code(resp_ctx, &error_code_recv);
1203
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1204
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
1205
-
1206
- TEST_ASSERT_EQUAL(ARRAY_SIZE(message_4), msg_4_len);
1207
- TEST_ASSERT_EQUAL_UINT8_ARRAY(message_4, msg_4, msg_4_len);
1208
-
1209
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_4, resp_ctx->th_state);
1210
- TEST_ASSERT_EQUAL(ARRAY_SIZE(TH_4), resp_ctx->th_len);
1211
- TEST_ASSERT_EQUAL_UINT8_ARRAY(TH_4, resp_ctx->th, resp_ctx->th_len);
1212
-
1213
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_4E3M, resp_ctx->prk_state);
1214
- TEST_ASSERT_EQUAL(ARRAY_SIZE(PRK_4e3m), resp_ctx->prk_len);
1215
- TEST_ASSERT_EQUAL_UINT8_ARRAY(PRK_4e3m, resp_ctx->prk,
1216
- resp_ctx->prk_len);
1217
- }
1218
-
1219
- TEST(rfc9529_chapter_2, message_4_process)
1220
- {
1221
- /* Required injections. */
1222
- init_ctx->status = EDHOC_SM_COMPLETED;
1223
- init_ctx->is_oscore_export_allowed = true;
1224
-
1225
- init_ctx->th_state = EDHOC_TH_STATE_4;
1226
- init_ctx->th_len = ARRAY_SIZE(TH_4);
1227
- memcpy(init_ctx->th, TH_4, ARRAY_SIZE(TH_4));
1228
-
1229
- init_ctx->prk_state = EDHOC_PRK_STATE_4E3M;
1230
- init_ctx->prk_len = ARRAY_SIZE(PRK_4e3m);
1231
- memcpy(init_ctx->prk, PRK_4e3m, ARRAY_SIZE(PRK_4e3m));
1232
-
1233
- ret = edhoc_message_4_process(init_ctx, message_4,
1234
- ARRAY_SIZE(message_4));
1235
-
1236
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1237
- TEST_ASSERT_EQUAL(EDHOC_SM_PERSISTED, init_ctx->status);
1238
- TEST_ASSERT_EQUAL(true, init_ctx->is_oscore_export_allowed);
1239
-
1240
- ret = edhoc_error_get_code(init_ctx, &error_code_recv);
1241
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1242
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
1243
-
1244
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_4, init_ctx->th_state);
1245
- TEST_ASSERT_EQUAL(ARRAY_SIZE(TH_4), init_ctx->th_len);
1246
- TEST_ASSERT_EQUAL_UINT8_ARRAY(TH_4, init_ctx->th, init_ctx->th_len);
1247
-
1248
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_4E3M, init_ctx->prk_state);
1249
- TEST_ASSERT_EQUAL(ARRAY_SIZE(PRK_4e3m), init_ctx->prk_len);
1250
- TEST_ASSERT_EQUAL_UINT8_ARRAY(PRK_4e3m, init_ctx->prk,
1251
- init_ctx->prk_len);
1252
- }
1253
-
1254
- TEST(rfc9529_chapter_2, handshake)
1255
- {
1256
- uint8_t buffer[200] = { 0 };
1257
-
1258
- memset(buffer, 0, sizeof(buffer));
1259
- size_t msg_1_len = 0;
1260
- uint8_t *msg_1 = buffer;
1261
-
1262
- /* EDHOC message 1 compose. */
1263
- ret = edhoc_message_1_compose(init_ctx, msg_1, ARRAY_SIZE(buffer),
1264
- &msg_1_len);
1265
-
1266
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1267
- TEST_ASSERT_EQUAL(EDHOC_SM_WAIT_M2, init_ctx->status);
1268
- TEST_ASSERT_EQUAL(false, init_ctx->is_oscore_export_allowed);
1269
-
1270
- ret = edhoc_error_get_code(init_ctx, &error_code_recv);
1271
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1272
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
1273
-
1274
- TEST_ASSERT_EQUAL(ARRAY_SIZE(message_1), msg_1_len);
1275
- TEST_ASSERT_EQUAL_UINT8_ARRAY(message_1, msg_1, msg_1_len);
1276
-
1277
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_INVALID, init_ctx->prk_state);
1278
- TEST_ASSERT_EQUAL(0, init_ctx->prk_len);
1279
-
1280
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_1, init_ctx->th_state);
1281
- TEST_ASSERT_EQUAL(ARRAY_SIZE(H_message_1), init_ctx->th_len);
1282
- TEST_ASSERT_EQUAL_UINT8_ARRAY(H_message_1, init_ctx->th,
1283
- init_ctx->th_len);
1284
-
1285
- TEST_ASSERT_EQUAL(ARRAY_SIZE(X), init_ctx->dh_priv_key_len);
1286
- TEST_ASSERT_EQUAL_UINT8_ARRAY(X, init_ctx->dh_priv_key,
1287
- init_ctx->dh_priv_key_len);
1288
-
1289
- /* EDHOC message 1 process. */
1290
- ret = edhoc_message_1_process(resp_ctx, msg_1, msg_1_len);
1291
-
1292
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1293
- TEST_ASSERT_EQUAL(EDHOC_SM_RECEIVED_M1, resp_ctx->status);
1294
- TEST_ASSERT_EQUAL(false, resp_ctx->is_oscore_export_allowed);
1295
-
1296
- ret = edhoc_error_get_code(resp_ctx, &error_code_recv);
1297
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1298
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
1299
-
1300
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_1, resp_ctx->th_state);
1301
- TEST_ASSERT_EQUAL(ARRAY_SIZE(H_message_1), resp_ctx->th_len);
1302
- TEST_ASSERT_EQUAL_UINT8_ARRAY(H_message_1, resp_ctx->th,
1303
- resp_ctx->th_len);
1304
-
1305
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_INVALID, resp_ctx->prk_state);
1306
- TEST_ASSERT_EQUAL(0, resp_ctx->prk_len);
1307
-
1308
- TEST_ASSERT_EQUAL(EDHOC_CID_TYPE_ONE_BYTE_INTEGER,
1309
- resp_ctx->peer_cid.encode_type);
1310
- TEST_ASSERT_EQUAL((int8_t)C_I[0], resp_ctx->peer_cid.int_value);
1311
-
1312
- TEST_ASSERT_EQUAL(ARRAY_SIZE(G_X), resp_ctx->dh_peer_pub_key_len);
1313
- TEST_ASSERT_EQUAL_UINT8_ARRAY(G_X, resp_ctx->dh_peer_pub_key,
1314
- resp_ctx->dh_peer_pub_key_len);
1315
-
1316
- memset(buffer, 0, sizeof(buffer));
1317
- size_t msg_2_len = 0;
1318
- uint8_t *msg_2 = buffer;
1319
-
1320
- /* EDHOC message 2 compose. */
1321
- ret = edhoc_message_2_compose(resp_ctx, msg_2, ARRAY_SIZE(buffer),
1322
- &msg_2_len);
1323
-
1324
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1325
- TEST_ASSERT_EQUAL(EDHOC_SM_WAIT_M3, resp_ctx->status);
1326
- TEST_ASSERT_EQUAL(false, resp_ctx->is_oscore_export_allowed);
1327
-
1328
- ret = edhoc_error_get_code(resp_ctx, &error_code_recv);
1329
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1330
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
1331
-
1332
- TEST_ASSERT_EQUAL(ARRAY_SIZE(message_2), msg_2_len);
1333
- TEST_ASSERT_EQUAL_UINT8_ARRAY(message_2, msg_2, msg_2_len);
1334
-
1335
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_3, resp_ctx->th_state);
1336
- TEST_ASSERT_EQUAL(ARRAY_SIZE(TH_3), resp_ctx->th_len);
1337
- TEST_ASSERT_EQUAL_UINT8_ARRAY(TH_3, resp_ctx->th, resp_ctx->th_len);
1338
-
1339
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_3E2M, resp_ctx->prk_state);
1340
- TEST_ASSERT_EQUAL(ARRAY_SIZE(PRK_3e2m), resp_ctx->prk_len);
1341
- TEST_ASSERT_EQUAL_UINT8_ARRAY(PRK_3e2m, resp_ctx->prk,
1342
- resp_ctx->prk_len);
1343
-
1344
- TEST_ASSERT_EQUAL(ARRAY_SIZE(G_XY), resp_ctx->dh_secret_len);
1345
- TEST_ASSERT_EQUAL_UINT8_ARRAY(G_XY, resp_ctx->dh_secret,
1346
- resp_ctx->dh_secret_len);
1347
-
1348
- /* EDHOC message 2 process. */
1349
- ret = edhoc_message_2_process(init_ctx, msg_2, msg_2_len);
1350
-
1351
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1352
- TEST_ASSERT_EQUAL(EDHOC_SM_VERIFIED_M2, init_ctx->status);
1353
-
1354
- ret = edhoc_error_get_code(init_ctx, &error_code_recv);
1355
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1356
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
1357
-
1358
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_3, init_ctx->th_state);
1359
- TEST_ASSERT_EQUAL(ARRAY_SIZE(TH_3), init_ctx->th_len);
1360
- TEST_ASSERT_EQUAL_UINT8_ARRAY(TH_3, init_ctx->th, init_ctx->th_len);
1361
- TEST_ASSERT_EQUAL(false, init_ctx->is_oscore_export_allowed);
1362
-
1363
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_3E2M, init_ctx->prk_state);
1364
- TEST_ASSERT_EQUAL(ARRAY_SIZE(PRK_3e2m), init_ctx->prk_len);
1365
- TEST_ASSERT_EQUAL_UINT8_ARRAY(PRK_3e2m, init_ctx->prk,
1366
- init_ctx->prk_len);
1367
-
1368
- TEST_ASSERT_EQUAL(ARRAY_SIZE(G_XY), init_ctx->dh_secret_len);
1369
- TEST_ASSERT_EQUAL_UINT8_ARRAY(G_XY, init_ctx->dh_secret,
1370
- init_ctx->dh_secret_len);
1371
-
1372
- TEST_ASSERT_EQUAL(EDHOC_CID_TYPE_BYTE_STRING,
1373
- init_ctx->peer_cid.encode_type);
1374
- TEST_ASSERT_EQUAL(ARRAY_SIZE(C_R), init_ctx->peer_cid.bstr_length);
1375
- TEST_ASSERT_EQUAL_UINT8_ARRAY(C_R, init_ctx->peer_cid.bstr_value,
1376
- init_ctx->peer_cid.bstr_length);
1377
-
1378
- memset(buffer, 0, sizeof(buffer));
1379
- size_t msg_3_len = 0;
1380
- uint8_t *msg_3 = buffer;
1381
-
1382
- /* EDHOC message 3 compose. */
1383
- ret = edhoc_message_3_compose(init_ctx, msg_3, ARRAY_SIZE(buffer),
1384
- &msg_3_len);
1385
-
1386
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1387
- TEST_ASSERT_EQUAL(EDHOC_SM_COMPLETED, init_ctx->status);
1388
- TEST_ASSERT_EQUAL(true, init_ctx->is_oscore_export_allowed);
1389
-
1390
- ret = edhoc_error_get_code(init_ctx, &error_code_recv);
1391
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1392
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
1393
-
1394
- TEST_ASSERT_EQUAL(ARRAY_SIZE(message_3), msg_3_len);
1395
- TEST_ASSERT_EQUAL_UINT8_ARRAY(message_3, msg_3, msg_3_len);
1396
-
1397
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_4, init_ctx->th_state);
1398
- TEST_ASSERT_EQUAL(ARRAY_SIZE(TH_4), init_ctx->th_len);
1399
- TEST_ASSERT_EQUAL_UINT8_ARRAY(TH_4, init_ctx->th, init_ctx->th_len);
1400
-
1401
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_4E3M, init_ctx->prk_state);
1402
- TEST_ASSERT_EQUAL(ARRAY_SIZE(PRK_4e3m), init_ctx->prk_len);
1403
- TEST_ASSERT_EQUAL_UINT8_ARRAY(PRK_4e3m, init_ctx->prk,
1404
- init_ctx->prk_len);
1405
-
1406
- /* EDHOC message 3 process. */
1407
- ret = edhoc_message_3_process(resp_ctx, msg_3, msg_3_len);
1408
-
1409
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1410
- TEST_ASSERT_EQUAL(EDHOC_SM_COMPLETED, resp_ctx->status);
1411
- TEST_ASSERT_EQUAL(true, resp_ctx->is_oscore_export_allowed);
1412
-
1413
- ret = edhoc_error_get_code(resp_ctx, &error_code_recv);
1414
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1415
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
1416
-
1417
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_4, resp_ctx->th_state);
1418
- TEST_ASSERT_EQUAL(ARRAY_SIZE(TH_4), resp_ctx->th_len);
1419
- TEST_ASSERT_EQUAL_UINT8_ARRAY(TH_4, resp_ctx->th, resp_ctx->th_len);
1420
-
1421
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_4E3M, resp_ctx->prk_state);
1422
- TEST_ASSERT_EQUAL(ARRAY_SIZE(PRK_4e3m), resp_ctx->prk_len);
1423
- TEST_ASSERT_EQUAL_UINT8_ARRAY(PRK_4e3m, resp_ctx->prk,
1424
- resp_ctx->prk_len);
1425
-
1426
- memset(buffer, 0, sizeof(buffer));
1427
- size_t msg_4_len = 0;
1428
- uint8_t *msg_4 = buffer;
1429
-
1430
- /* EDHOC message 4 compose. */
1431
- ret = edhoc_message_4_compose(resp_ctx, msg_4, ARRAY_SIZE(buffer),
1432
- &msg_4_len);
1433
-
1434
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1435
- TEST_ASSERT_EQUAL(EDHOC_SM_PERSISTED, resp_ctx->status);
1436
- TEST_ASSERT_EQUAL(true, resp_ctx->is_oscore_export_allowed);
1437
-
1438
- ret = edhoc_error_get_code(resp_ctx, &error_code_recv);
1439
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1440
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
1441
-
1442
- TEST_ASSERT_EQUAL(ARRAY_SIZE(message_4), msg_4_len);
1443
- TEST_ASSERT_EQUAL_UINT8_ARRAY(message_4, msg_4, msg_4_len);
1444
-
1445
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_4, resp_ctx->th_state);
1446
- TEST_ASSERT_EQUAL(ARRAY_SIZE(TH_4), resp_ctx->th_len);
1447
- TEST_ASSERT_EQUAL_UINT8_ARRAY(TH_4, resp_ctx->th, resp_ctx->th_len);
1448
-
1449
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_4E3M, resp_ctx->prk_state);
1450
- TEST_ASSERT_EQUAL(ARRAY_SIZE(PRK_4e3m), resp_ctx->prk_len);
1451
- TEST_ASSERT_EQUAL_UINT8_ARRAY(PRK_4e3m, resp_ctx->prk,
1452
- resp_ctx->prk_len);
1453
-
1454
- /* EDHOC message 4 process. */
1455
- ret = edhoc_message_4_process(init_ctx, msg_4, msg_4_len);
1456
-
1457
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1458
- TEST_ASSERT_EQUAL(EDHOC_SM_PERSISTED, init_ctx->status);
1459
- TEST_ASSERT_EQUAL(true, init_ctx->is_oscore_export_allowed);
1460
-
1461
- ret = edhoc_error_get_code(init_ctx, &error_code_recv);
1462
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1463
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
1464
-
1465
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_4, init_ctx->th_state);
1466
- TEST_ASSERT_EQUAL(ARRAY_SIZE(TH_4), init_ctx->th_len);
1467
- TEST_ASSERT_EQUAL_UINT8_ARRAY(TH_4, init_ctx->th, init_ctx->th_len);
1468
-
1469
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_4E3M, init_ctx->prk_state);
1470
- TEST_ASSERT_EQUAL(ARRAY_SIZE(PRK_4e3m), init_ctx->prk_len);
1471
- TEST_ASSERT_EQUAL_UINT8_ARRAY(PRK_4e3m, init_ctx->prk,
1472
- init_ctx->prk_len);
1473
-
1474
- uint8_t init_master_secret[ARRAY_SIZE(OSCORE_Master_Secret)] = { 0 };
1475
- uint8_t init_master_salt[ARRAY_SIZE(OSCORE_Master_Salt)] = { 0 };
1476
- size_t init_sender_id_len = 0;
1477
- uint8_t init_sender_id[ARRAY_SIZE(C_R)] = { 0 };
1478
- size_t init_recipient_id_len = 0;
1479
- uint8_t init_recipient_id[ARRAY_SIZE(C_I)] = { 0 };
1480
-
1481
- /* Derive OSCORE master secret and master salt. */
1482
- ret = edhoc_export_oscore_session(
1483
- init_ctx, init_master_secret, ARRAY_SIZE(init_master_secret),
1484
- init_master_salt, ARRAY_SIZE(init_master_salt), init_sender_id,
1485
- ARRAY_SIZE(init_sender_id), &init_sender_id_len,
1486
- init_recipient_id, ARRAY_SIZE(init_recipient_id),
1487
- &init_recipient_id_len);
1488
-
1489
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1490
- TEST_ASSERT_EQUAL(EDHOC_SM_PERSISTED, init_ctx->status);
1491
- TEST_ASSERT_EQUAL(false, init_ctx->is_oscore_export_allowed);
1492
-
1493
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_OUT, init_ctx->prk_state);
1494
- TEST_ASSERT_EQUAL(ARRAY_SIZE(PRK_out), init_ctx->prk_len);
1495
- TEST_ASSERT_EQUAL_UINT8_ARRAY(PRK_out, init_ctx->prk,
1496
- init_ctx->prk_len);
1497
-
1498
- uint8_t resp_master_secret[ARRAY_SIZE(OSCORE_Master_Secret)] = { 0 };
1499
- uint8_t resp_master_salt[ARRAY_SIZE(OSCORE_Master_Salt)] = { 0 };
1500
- size_t resp_sender_id_len = 0;
1501
- uint8_t resp_sender_id[ARRAY_SIZE(C_I)] = { 0 };
1502
- size_t resp_recipient_id_len = 0;
1503
- uint8_t resp_recipient_id[ARRAY_SIZE(C_R)] = { 0 };
1504
-
1505
- /* Derive OSCORE master secret and master salt. */
1506
- ret = edhoc_export_oscore_session(
1507
- resp_ctx, resp_master_secret, ARRAY_SIZE(resp_master_secret),
1508
- resp_master_salt, ARRAY_SIZE(resp_master_salt), resp_sender_id,
1509
- ARRAY_SIZE(resp_sender_id), &resp_sender_id_len,
1510
- resp_recipient_id, ARRAY_SIZE(resp_recipient_id),
1511
- &resp_recipient_id_len);
1512
-
1513
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1514
- TEST_ASSERT_EQUAL(EDHOC_SM_PERSISTED, resp_ctx->status);
1515
- TEST_ASSERT_EQUAL(false, resp_ctx->is_oscore_export_allowed);
1516
-
1517
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_OUT, resp_ctx->prk_state);
1518
- TEST_ASSERT_EQUAL(ARRAY_SIZE(PRK_out), resp_ctx->prk_len);
1519
- TEST_ASSERT_EQUAL_UINT8_ARRAY(PRK_out, resp_ctx->prk,
1520
- resp_ctx->prk_len);
1521
-
1522
- TEST_ASSERT_EQUAL_UINT8_ARRAY(init_master_secret, resp_master_secret,
1523
- ARRAY_SIZE(resp_master_secret));
1524
- TEST_ASSERT_EQUAL_UINT8_ARRAY(OSCORE_Master_Secret, init_master_secret,
1525
- ARRAY_SIZE(init_master_secret));
1526
- TEST_ASSERT_EQUAL_UINT8_ARRAY(OSCORE_Master_Secret, resp_master_secret,
1527
- ARRAY_SIZE(resp_master_secret));
1528
-
1529
- TEST_ASSERT_EQUAL_UINT8_ARRAY(init_master_salt, resp_master_salt,
1530
- ARRAY_SIZE(resp_master_salt));
1531
- TEST_ASSERT_EQUAL_UINT8_ARRAY(OSCORE_Master_Salt, init_master_salt,
1532
- ARRAY_SIZE(init_master_salt));
1533
- TEST_ASSERT_EQUAL_UINT8_ARRAY(OSCORE_Master_Salt, resp_master_salt,
1534
- ARRAY_SIZE(resp_master_salt));
1535
-
1536
- TEST_ASSERT_EQUAL(ARRAY_SIZE(C_I), init_recipient_id_len);
1537
- TEST_ASSERT_EQUAL_UINT8_ARRAY(C_I, init_recipient_id,
1538
- init_recipient_id_len);
1539
- TEST_ASSERT_EQUAL(ARRAY_SIZE(C_I), resp_sender_id_len);
1540
- TEST_ASSERT_EQUAL_UINT8_ARRAY(C_I, resp_sender_id, resp_sender_id_len);
1541
-
1542
- TEST_ASSERT_EQUAL(ARRAY_SIZE(C_R), init_sender_id_len);
1543
- TEST_ASSERT_EQUAL_UINT8_ARRAY(C_R, init_sender_id, init_sender_id_len);
1544
- TEST_ASSERT_EQUAL(ARRAY_SIZE(C_R), resp_recipient_id_len);
1545
- TEST_ASSERT_EQUAL_UINT8_ARRAY(C_R, resp_recipient_id,
1546
- resp_recipient_id_len);
1547
-
1548
- TEST_ASSERT_EQUAL(init_sender_id_len, resp_recipient_id_len);
1549
- TEST_ASSERT_EQUAL_UINT8_ARRAY(init_sender_id, resp_recipient_id,
1550
- init_sender_id_len);
1551
- TEST_ASSERT_EQUAL(init_recipient_id_len, resp_sender_id_len);
1552
- TEST_ASSERT_EQUAL_UINT8_ARRAY(init_recipient_id, resp_sender_id,
1553
- resp_sender_id_len);
1554
-
1555
- /* EDHOC key update method. */
1556
- ret = edhoc_export_key_update(init_ctx, keyUpdate_context,
1557
- ARRAY_SIZE(keyUpdate_context));
1558
-
1559
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1560
- TEST_ASSERT_EQUAL(EDHOC_SM_PERSISTED, init_ctx->status);
1561
- TEST_ASSERT_EQUAL(true, init_ctx->is_oscore_export_allowed);
1562
-
1563
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_OUT, init_ctx->prk_state);
1564
- TEST_ASSERT_EQUAL(ARRAY_SIZE(keyUpdate_PRK_out), init_ctx->prk_len);
1565
- TEST_ASSERT_EQUAL_UINT8_ARRAY(keyUpdate_PRK_out, init_ctx->prk,
1566
- init_ctx->prk_len);
1567
-
1568
- /* EDHOC key update method. */
1569
- ret = edhoc_export_key_update(resp_ctx, keyUpdate_context,
1570
- ARRAY_SIZE(keyUpdate_context));
1571
-
1572
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1573
- TEST_ASSERT_EQUAL(EDHOC_SM_PERSISTED, resp_ctx->status);
1574
- TEST_ASSERT_EQUAL(true, resp_ctx->is_oscore_export_allowed);
1575
-
1576
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_OUT, resp_ctx->prk_state);
1577
- TEST_ASSERT_EQUAL(ARRAY_SIZE(keyUpdate_PRK_out), resp_ctx->prk_len);
1578
- TEST_ASSERT_EQUAL_UINT8_ARRAY(keyUpdate_PRK_out, resp_ctx->prk,
1579
- resp_ctx->prk_len);
1580
-
1581
- memset(init_master_secret, 0, sizeof(init_master_secret));
1582
- memset(init_master_salt, 0, sizeof(init_master_salt));
1583
- init_sender_id_len = 0;
1584
- memset(init_sender_id, 0, sizeof(init_sender_id));
1585
- init_recipient_id_len = 0;
1586
- memset(init_recipient_id, 0, sizeof(init_recipient_id));
1587
-
1588
- /* Derive OSCORE master secret and master salt. */
1589
- ret = edhoc_export_oscore_session(
1590
- init_ctx, init_master_secret, ARRAY_SIZE(init_master_secret),
1591
- init_master_salt, ARRAY_SIZE(init_master_salt), init_sender_id,
1592
- ARRAY_SIZE(init_sender_id), &init_sender_id_len,
1593
- init_recipient_id, ARRAY_SIZE(init_recipient_id),
1594
- &init_recipient_id_len);
1595
-
1596
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1597
- TEST_ASSERT_EQUAL(EDHOC_SM_PERSISTED, init_ctx->status);
1598
- TEST_ASSERT_EQUAL(false, init_ctx->is_oscore_export_allowed);
1599
-
1600
- memset(resp_master_secret, 0, sizeof(resp_master_secret));
1601
- memset(resp_master_salt, 0, sizeof(resp_master_salt));
1602
- resp_sender_id_len = 0;
1603
- memset(resp_sender_id, 0, sizeof(resp_sender_id));
1604
- resp_recipient_id_len = 0;
1605
- memset(resp_recipient_id, 0, sizeof(resp_recipient_id));
1606
-
1607
- /* Derive OSCORE master secret and master salt. */
1608
- ret = edhoc_export_oscore_session(
1609
- resp_ctx, resp_master_secret, ARRAY_SIZE(resp_master_secret),
1610
- resp_master_salt, ARRAY_SIZE(resp_master_salt), resp_sender_id,
1611
- ARRAY_SIZE(resp_sender_id), &resp_sender_id_len,
1612
- resp_recipient_id, ARRAY_SIZE(resp_recipient_id),
1613
- &resp_recipient_id_len);
1614
-
1615
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1616
- TEST_ASSERT_EQUAL(EDHOC_SM_PERSISTED, resp_ctx->status);
1617
- TEST_ASSERT_EQUAL(false, resp_ctx->is_oscore_export_allowed);
1618
-
1619
- TEST_ASSERT_EQUAL_UINT8_ARRAY(init_master_secret, resp_master_secret,
1620
- ARRAY_SIZE(resp_master_secret));
1621
- TEST_ASSERT_EQUAL_UINT8_ARRAY(keyUpdate_OSCORE_Master_Secret,
1622
- init_master_secret,
1623
- ARRAY_SIZE(init_master_secret));
1624
- TEST_ASSERT_EQUAL_UINT8_ARRAY(keyUpdate_OSCORE_Master_Secret,
1625
- resp_master_secret,
1626
- ARRAY_SIZE(resp_master_secret));
1627
-
1628
- TEST_ASSERT_EQUAL_UINT8_ARRAY(init_master_salt, resp_master_salt,
1629
- ARRAY_SIZE(resp_master_salt));
1630
- TEST_ASSERT_EQUAL_UINT8_ARRAY(keyUpdate_OSCORE_Master_Salt,
1631
- init_master_salt,
1632
- ARRAY_SIZE(init_master_salt));
1633
- TEST_ASSERT_EQUAL_UINT8_ARRAY(keyUpdate_OSCORE_Master_Salt,
1634
- resp_master_salt,
1635
- ARRAY_SIZE(resp_master_salt));
1636
-
1637
- TEST_ASSERT_EQUAL(ARRAY_SIZE(C_I), init_recipient_id_len);
1638
- TEST_ASSERT_EQUAL_UINT8_ARRAY(C_I, init_recipient_id,
1639
- init_recipient_id_len);
1640
- TEST_ASSERT_EQUAL(ARRAY_SIZE(C_I), resp_sender_id_len);
1641
- TEST_ASSERT_EQUAL_UINT8_ARRAY(C_I, resp_sender_id, resp_sender_id_len);
1642
-
1643
- TEST_ASSERT_EQUAL(ARRAY_SIZE(C_R), init_sender_id_len);
1644
- TEST_ASSERT_EQUAL_UINT8_ARRAY(C_R, init_sender_id, init_sender_id_len);
1645
- TEST_ASSERT_EQUAL(ARRAY_SIZE(C_R), resp_recipient_id_len);
1646
- TEST_ASSERT_EQUAL_UINT8_ARRAY(C_R, resp_recipient_id,
1647
- resp_recipient_id_len);
1648
-
1649
- TEST_ASSERT_EQUAL(init_sender_id_len, resp_recipient_id_len);
1650
- TEST_ASSERT_EQUAL_UINT8_ARRAY(init_sender_id, resp_recipient_id,
1651
- init_sender_id_len);
1652
- TEST_ASSERT_EQUAL(init_recipient_id_len, resp_sender_id_len);
1653
- TEST_ASSERT_EQUAL_UINT8_ARRAY(init_recipient_id, resp_sender_id,
1654
- resp_sender_id_len);
1655
- }
1656
-
1657
- TEST(rfc9529_chapter_2, prk_exporter)
1658
- {
1659
- /* Required injections. */
1660
- init_ctx->status = EDHOC_SM_COMPLETED;
1661
-
1662
- init_ctx->th_state = EDHOC_TH_STATE_4;
1663
- init_ctx->th_len = ARRAY_SIZE(TH_4);
1664
- memcpy(init_ctx->th, TH_4, ARRAY_SIZE(TH_4));
1665
-
1666
- init_ctx->prk_state = EDHOC_PRK_STATE_4E3M;
1667
- init_ctx->prk_len = ARRAY_SIZE(PRK_4e3m);
1668
- memcpy(init_ctx->prk, PRK_4e3m, ARRAY_SIZE(PRK_4e3m));
1669
-
1670
- uint8_t master_secret[ARRAY_SIZE(OSCORE_Master_Secret)] = { 0 };
1671
-
1672
- /* EDHOC PRK exporter - OSCORE master secret. */
1673
- ret = edhoc_export_prk_exporter(init_ctx,
1674
- OSCORE_EXTRACT_LABEL_MASTER_SECRET,
1675
- master_secret,
1676
- ARRAY_SIZE(master_secret));
1677
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1678
- TEST_ASSERT_EQUAL_UINT8_ARRAY(OSCORE_Master_Secret, master_secret,
1679
- ARRAY_SIZE(OSCORE_Master_Secret));
1680
-
1681
- uint8_t master_salt[ARRAY_SIZE(OSCORE_Master_Salt)] = { 0 };
1682
-
1683
- /* EDHOC PRK exporter - OSCORE master salt. */
1684
- ret = edhoc_export_prk_exporter(init_ctx,
1685
- OSCORE_EXTRACT_LABEL_MASTER_SALT,
1686
- master_salt, ARRAY_SIZE(master_salt));
1687
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1688
- TEST_ASSERT_EQUAL_UINT8_ARRAY(OSCORE_Master_Salt, master_salt,
1689
- ARRAY_SIZE(OSCORE_Master_Salt));
1690
-
1691
- /* Export private usage secrets (label: minimum, middle, maximum). */
1692
- uint8_t secret_1[13] = { 0 };
1693
- uint8_t secret_2[32] = { 0 };
1694
- uint8_t secret_3[64] = { 0 };
1695
-
1696
- ret = edhoc_export_prk_exporter(
1697
- init_ctx, EDHOC_PRK_EXPORTER_PRIVATE_LABEL_MINIMUM, secret_1,
1698
- ARRAY_SIZE(secret_1));
1699
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1700
-
1701
- #if defined(TEST_TRACES)
1702
- print_array(NULL, "Secret 1", secret_1, ARRAY_SIZE(secret_1));
1703
- #endif
1704
-
1705
- ret = edhoc_export_prk_exporter(
1706
- init_ctx, EDHOC_PRK_EXPORTER_PRIVATE_LABEL_MAXIMUM, secret_2,
1707
- ARRAY_SIZE(secret_2));
1708
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1709
-
1710
- #if defined(TEST_TRACES)
1711
- print_array(NULL, "Secret 2", secret_2, ARRAY_SIZE(secret_2));
1712
- #endif
1713
-
1714
- const size_t label = 45737;
1715
- ret = edhoc_export_prk_exporter(init_ctx, label, secret_3,
1716
- ARRAY_SIZE(secret_3));
1717
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1718
-
1719
- #if defined(TEST_TRACES)
1720
- print_array(NULL, "Secret 3", secret_3, ARRAY_SIZE(secret_3));
1721
- #endif
1722
- }
1723
-
1724
- TEST(rfc9529_chapter_2, handshake_real_crypto)
1725
- {
1726
- uint8_t buffer[200] = { 0 };
1727
-
1728
- /* Required injections. */
1729
- ret = edhoc_bind_crypto(init_ctx, &edhoc_crypto);
1730
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1731
-
1732
- ret = edhoc_bind_crypto(resp_ctx, &edhoc_crypto);
1733
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1734
-
1735
- memset(buffer, 0, sizeof(buffer));
1736
- size_t msg_1_len = 0;
1737
- uint8_t *msg_1 = buffer;
1738
-
1739
- /* EDHOC message 1 compose. */
1740
- ret = edhoc_message_1_compose(init_ctx, msg_1, ARRAY_SIZE(buffer),
1741
- &msg_1_len);
1742
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1743
- TEST_ASSERT_EQUAL(EDHOC_SM_WAIT_M2, init_ctx->status);
1744
- TEST_ASSERT_EQUAL(false, init_ctx->is_oscore_export_allowed);
1745
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_INVALID, init_ctx->prk_state);
1746
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_1, init_ctx->th_state);
1747
-
1748
- ret = edhoc_error_get_code(init_ctx, &error_code_recv);
1749
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1750
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
1751
-
1752
- /* EDHOC message 1 process. */
1753
- ret = edhoc_message_1_process(resp_ctx, msg_1, msg_1_len);
1754
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1755
- TEST_ASSERT_EQUAL(EDHOC_SM_RECEIVED_M1, resp_ctx->status);
1756
- TEST_ASSERT_EQUAL(false, resp_ctx->is_oscore_export_allowed);
1757
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_1, resp_ctx->th_state);
1758
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_INVALID, resp_ctx->prk_state);
1759
-
1760
- ret = edhoc_error_get_code(resp_ctx, &error_code_recv);
1761
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1762
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
1763
-
1764
- TEST_ASSERT_EQUAL(EDHOC_CID_TYPE_ONE_BYTE_INTEGER,
1765
- resp_ctx->peer_cid.encode_type);
1766
- TEST_ASSERT_EQUAL((int8_t)C_I[0], resp_ctx->peer_cid.int_value);
1767
-
1768
- memset(buffer, 0, sizeof(buffer));
1769
- size_t msg_2_len = 0;
1770
- uint8_t *msg_2 = buffer;
1771
-
1772
- /* EDHOC message 2 compose. */
1773
- ret = edhoc_message_2_compose(resp_ctx, msg_2, ARRAY_SIZE(buffer),
1774
- &msg_2_len);
1775
-
1776
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1777
- TEST_ASSERT_EQUAL(EDHOC_SM_WAIT_M3, resp_ctx->status);
1778
- TEST_ASSERT_EQUAL(false, resp_ctx->is_oscore_export_allowed);
1779
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_3, resp_ctx->th_state);
1780
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_3E2M, resp_ctx->prk_state);
1781
-
1782
- ret = edhoc_error_get_code(resp_ctx, &error_code_recv);
1783
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1784
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
1785
-
1786
- /* EDHOC message 2 compose. */
1787
- ret = edhoc_message_2_process(init_ctx, msg_2, msg_2_len);
1788
-
1789
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1790
- TEST_ASSERT_EQUAL(EDHOC_SM_VERIFIED_M2, init_ctx->status);
1791
- TEST_ASSERT_EQUAL(false, init_ctx->is_oscore_export_allowed);
1792
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_3, init_ctx->th_state);
1793
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_3E2M, init_ctx->prk_state);
1794
-
1795
- ret = edhoc_error_get_code(init_ctx, &error_code_recv);
1796
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1797
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
1798
-
1799
- TEST_ASSERT_EQUAL(EDHOC_CID_TYPE_BYTE_STRING,
1800
- init_ctx->peer_cid.encode_type);
1801
- TEST_ASSERT_EQUAL(ARRAY_SIZE(C_R), init_ctx->peer_cid.bstr_length);
1802
- TEST_ASSERT_EQUAL_UINT8_ARRAY(C_R, init_ctx->peer_cid.bstr_value,
1803
- init_ctx->peer_cid.bstr_length);
1804
-
1805
- TEST_ASSERT_EQUAL(edhoc_cipher_suite_0.ecc_key_length,
1806
- init_ctx->dh_secret_len);
1807
- TEST_ASSERT_EQUAL(edhoc_cipher_suite_0.ecc_key_length,
1808
- resp_ctx->dh_secret_len);
1809
- TEST_ASSERT_EQUAL(init_ctx->dh_secret_len, resp_ctx->dh_secret_len);
1810
- TEST_ASSERT_EQUAL_UINT8_ARRAY(init_ctx->dh_secret, resp_ctx->dh_secret,
1811
- edhoc_cipher_suite_0.ecc_key_length);
1812
-
1813
- memset(buffer, 0, sizeof(buffer));
1814
- size_t msg_3_len = 0;
1815
- uint8_t *msg_3 = buffer;
1816
-
1817
- /* EDHOC message 3 compose. */
1818
- ret = edhoc_message_3_compose(init_ctx, msg_3, ARRAY_SIZE(buffer),
1819
- &msg_3_len);
1820
-
1821
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1822
- TEST_ASSERT_EQUAL(EDHOC_SM_COMPLETED, init_ctx->status);
1823
- TEST_ASSERT_EQUAL(true, init_ctx->is_oscore_export_allowed);
1824
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_4, init_ctx->th_state);
1825
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_4E3M, init_ctx->prk_state);
1826
-
1827
- ret = edhoc_error_get_code(init_ctx, &error_code_recv);
1828
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1829
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
1830
-
1831
- /* EDHOC message 3 process. */
1832
- ret = edhoc_message_3_process(resp_ctx, msg_3, msg_3_len);
1833
-
1834
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1835
- TEST_ASSERT_EQUAL(EDHOC_SM_COMPLETED, resp_ctx->status);
1836
- TEST_ASSERT_EQUAL(true, resp_ctx->is_oscore_export_allowed);
1837
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_4, resp_ctx->th_state);
1838
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_4E3M, resp_ctx->prk_state);
1839
-
1840
- ret = edhoc_error_get_code(resp_ctx, &error_code_recv);
1841
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1842
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
1843
-
1844
- TEST_ASSERT_EQUAL(edhoc_cipher_suite_0.hash_length, init_ctx->th_len);
1845
- TEST_ASSERT_EQUAL(edhoc_cipher_suite_0.hash_length, resp_ctx->th_len);
1846
- TEST_ASSERT_EQUAL_UINT8_ARRAY(init_ctx->th, resp_ctx->th,
1847
- edhoc_cipher_suite_0.hash_length);
1848
-
1849
- TEST_ASSERT_EQUAL(edhoc_cipher_suite_0.mac_length, init_ctx->prk_len);
1850
- TEST_ASSERT_EQUAL(edhoc_cipher_suite_0.mac_length, resp_ctx->prk_len);
1851
- TEST_ASSERT_EQUAL_UINT8_ARRAY(init_ctx->prk, resp_ctx->prk,
1852
- edhoc_cipher_suite_0.mac_length);
1853
-
1854
- memset(buffer, 0, sizeof(buffer));
1855
- size_t msg_4_len = 0;
1856
- uint8_t *msg_4 = buffer;
1857
-
1858
- /* EDHOC message 4 compose. */
1859
- ret = edhoc_message_4_compose(resp_ctx, msg_4, ARRAY_SIZE(buffer),
1860
- &msg_4_len);
1861
-
1862
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1863
- TEST_ASSERT_EQUAL(EDHOC_SM_PERSISTED, resp_ctx->status);
1864
- TEST_ASSERT_EQUAL(true, resp_ctx->is_oscore_export_allowed);
1865
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_4, resp_ctx->th_state);
1866
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_4E3M, resp_ctx->prk_state);
1867
-
1868
- ret = edhoc_error_get_code(resp_ctx, &error_code_recv);
1869
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1870
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
1871
-
1872
- /* EDHOC message 4 process. */
1873
- ret = edhoc_message_4_process(init_ctx, msg_4, msg_4_len);
1874
-
1875
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1876
- TEST_ASSERT_EQUAL(EDHOC_SM_PERSISTED, init_ctx->status);
1877
- TEST_ASSERT_EQUAL(true, init_ctx->is_oscore_export_allowed);
1878
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_4, init_ctx->th_state);
1879
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_4E3M, init_ctx->prk_state);
1880
-
1881
- ret = edhoc_error_get_code(init_ctx, &error_code_recv);
1882
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1883
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
1884
-
1885
- uint8_t init_master_secret[ARRAY_SIZE(OSCORE_Master_Secret)] = { 0 };
1886
- uint8_t init_master_salt[ARRAY_SIZE(OSCORE_Master_Salt)] = { 0 };
1887
- size_t init_sender_id_len = 0;
1888
- uint8_t init_sender_id[ARRAY_SIZE(C_R)] = { 0 };
1889
- size_t init_recipient_id_len = 0;
1890
- uint8_t init_recipient_id[ARRAY_SIZE(C_I)] = { 0 };
1891
-
1892
- /* Derive OSCORE master secret and master salt. */
1893
- ret = edhoc_export_oscore_session(
1894
- init_ctx, init_master_secret, ARRAY_SIZE(init_master_secret),
1895
- init_master_salt, ARRAY_SIZE(init_master_salt), init_sender_id,
1896
- ARRAY_SIZE(init_sender_id), &init_sender_id_len,
1897
- init_recipient_id, ARRAY_SIZE(init_recipient_id),
1898
- &init_recipient_id_len);
1899
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1900
- TEST_ASSERT_EQUAL(EDHOC_SM_PERSISTED, init_ctx->status);
1901
- TEST_ASSERT_EQUAL(false, init_ctx->is_oscore_export_allowed);
1902
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_OUT, init_ctx->prk_state);
1903
-
1904
- uint8_t resp_master_secret[ARRAY_SIZE(OSCORE_Master_Secret)] = { 0 };
1905
- uint8_t resp_master_salt[ARRAY_SIZE(OSCORE_Master_Salt)] = { 0 };
1906
- size_t resp_sender_id_len = 0;
1907
- uint8_t resp_sender_id[ARRAY_SIZE(C_I)] = { 0 };
1908
- size_t resp_recipient_id_len = 0;
1909
- uint8_t resp_recipient_id[ARRAY_SIZE(C_R)] = { 0 };
1910
-
1911
- /* Derive OSCORE master secret and master salt. */
1912
- ret = edhoc_export_oscore_session(
1913
- resp_ctx, resp_master_secret, ARRAY_SIZE(resp_master_secret),
1914
- resp_master_salt, ARRAY_SIZE(resp_master_salt), resp_sender_id,
1915
- ARRAY_SIZE(resp_sender_id), &resp_sender_id_len,
1916
- resp_recipient_id, ARRAY_SIZE(resp_recipient_id),
1917
- &resp_recipient_id_len);
1918
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1919
- TEST_ASSERT_EQUAL(EDHOC_SM_PERSISTED, resp_ctx->status);
1920
- TEST_ASSERT_EQUAL(false, resp_ctx->is_oscore_export_allowed);
1921
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_OUT, resp_ctx->prk_state);
1922
-
1923
- TEST_ASSERT_EQUAL_UINT8_ARRAY(init_master_secret, resp_master_secret,
1924
- ARRAY_SIZE(resp_master_secret));
1925
-
1926
- TEST_ASSERT_EQUAL_UINT8_ARRAY(init_master_salt, resp_master_salt,
1927
- ARRAY_SIZE(resp_master_salt));
1928
-
1929
- TEST_ASSERT_EQUAL(init_sender_id_len, resp_recipient_id_len);
1930
- TEST_ASSERT_EQUAL_UINT8_ARRAY(init_sender_id, resp_recipient_id,
1931
- init_sender_id_len);
1932
- TEST_ASSERT_EQUAL(init_recipient_id_len, resp_sender_id_len);
1933
- TEST_ASSERT_EQUAL_UINT8_ARRAY(init_recipient_id, resp_sender_id,
1934
- resp_sender_id_len);
1935
-
1936
- /* EDHOC key update method. */
1937
- ret = edhoc_export_key_update(init_ctx, keyUpdate_context,
1938
- ARRAY_SIZE(keyUpdate_context));
1939
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1940
- TEST_ASSERT_EQUAL(EDHOC_SM_PERSISTED, init_ctx->status);
1941
- TEST_ASSERT_EQUAL(true, init_ctx->is_oscore_export_allowed);
1942
-
1943
- /* EDHOC key update method. */
1944
- ret = edhoc_export_key_update(resp_ctx, keyUpdate_context,
1945
- ARRAY_SIZE(keyUpdate_context));
1946
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1947
- TEST_ASSERT_EQUAL(EDHOC_SM_PERSISTED, resp_ctx->status);
1948
- TEST_ASSERT_EQUAL(true, resp_ctx->is_oscore_export_allowed);
1949
-
1950
- TEST_ASSERT_EQUAL(init_ctx->prk_state, resp_ctx->prk_state);
1951
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_OUT, init_ctx->prk_state);
1952
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_OUT, resp_ctx->prk_state);
1953
-
1954
- TEST_ASSERT_EQUAL(init_ctx->prk_len, resp_ctx->prk_len);
1955
- TEST_ASSERT_EQUAL_UINT8_ARRAY(init_ctx->prk, resp_ctx->prk,
1956
- resp_ctx->prk_len);
1957
-
1958
- memset(init_master_secret, 0, sizeof(init_master_secret));
1959
- memset(init_master_salt, 0, sizeof(init_master_salt));
1960
- init_sender_id_len = 0;
1961
- memset(init_sender_id, 0, sizeof(init_sender_id));
1962
- init_recipient_id_len = 0;
1963
- memset(init_recipient_id, 0, sizeof(init_recipient_id));
1964
-
1965
- /* Derive OSCORE master secret and master salt. */
1966
- ret = edhoc_export_oscore_session(
1967
- init_ctx, init_master_secret, ARRAY_SIZE(init_master_secret),
1968
- init_master_salt, ARRAY_SIZE(init_master_salt), init_sender_id,
1969
- ARRAY_SIZE(init_sender_id), &init_sender_id_len,
1970
- init_recipient_id, ARRAY_SIZE(init_recipient_id),
1971
- &init_recipient_id_len);
1972
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1973
- TEST_ASSERT_EQUAL(EDHOC_SM_PERSISTED, init_ctx->status);
1974
- TEST_ASSERT_EQUAL(false, init_ctx->is_oscore_export_allowed);
1975
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_OUT, init_ctx->prk_state);
1976
-
1977
- memset(resp_master_secret, 0, sizeof(resp_master_secret));
1978
- memset(resp_master_salt, 0, sizeof(resp_master_salt));
1979
- resp_sender_id_len = 0;
1980
- memset(resp_sender_id, 0, sizeof(resp_sender_id));
1981
- resp_recipient_id_len = 0;
1982
- memset(resp_recipient_id, 0, sizeof(resp_recipient_id));
1983
-
1984
- /* Derive OSCORE master secret and master salt. */
1985
- ret = edhoc_export_oscore_session(
1986
- resp_ctx, resp_master_secret, ARRAY_SIZE(resp_master_secret),
1987
- resp_master_salt, ARRAY_SIZE(resp_master_salt), resp_sender_id,
1988
- ARRAY_SIZE(resp_sender_id), &resp_sender_id_len,
1989
- resp_recipient_id, ARRAY_SIZE(resp_recipient_id),
1990
- &resp_recipient_id_len);
1991
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
1992
- TEST_ASSERT_EQUAL(EDHOC_SM_PERSISTED, resp_ctx->status);
1993
- TEST_ASSERT_EQUAL(false, resp_ctx->is_oscore_export_allowed);
1994
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_OUT, resp_ctx->prk_state);
1995
-
1996
- TEST_ASSERT_EQUAL_UINT8_ARRAY(init_master_secret, resp_master_secret,
1997
- ARRAY_SIZE(resp_master_secret));
1998
-
1999
- TEST_ASSERT_EQUAL_UINT8_ARRAY(init_master_salt, resp_master_salt,
2000
- ARRAY_SIZE(resp_master_salt));
2001
-
2002
- TEST_ASSERT_EQUAL(init_sender_id_len, resp_recipient_id_len);
2003
- TEST_ASSERT_EQUAL_UINT8_ARRAY(init_sender_id, resp_recipient_id,
2004
- init_sender_id_len);
2005
- TEST_ASSERT_EQUAL(init_recipient_id_len, resp_sender_id_len);
2006
- TEST_ASSERT_EQUAL_UINT8_ARRAY(init_recipient_id, resp_sender_id,
2007
- resp_sender_id_len);
2008
- }
2009
-
2010
- TEST(rfc9529_chapter_2, handshake_real_crypto_ead_single)
2011
- {
2012
- uint8_t buffer[500] = { 0 };
2013
-
2014
- /* Required injections. */
2015
- struct ead_context init_ead_ctx = { 0 };
2016
- ret = edhoc_set_user_context(init_ctx, &init_ead_ctx);
2017
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2018
-
2019
- ret = edhoc_bind_ead(init_ctx, &edhoc_ead_single_token);
2020
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2021
-
2022
- struct ead_context resp_ead_ctx = { 0 };
2023
- ret = edhoc_set_user_context(resp_ctx, &resp_ead_ctx);
2024
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2025
-
2026
- ret = edhoc_bind_ead(resp_ctx, &edhoc_ead_single_token);
2027
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2028
-
2029
- memset(&init_ead_ctx, 0, sizeof(init_ead_ctx));
2030
- memset(&resp_ead_ctx, 0, sizeof(resp_ead_ctx));
2031
-
2032
- memset(buffer, 0, sizeof(buffer));
2033
- size_t msg_1_len = 0;
2034
- uint8_t *msg_1 = buffer;
2035
-
2036
- /* EDHOC message 1 compose. */
2037
- ret = edhoc_message_1_compose(init_ctx, msg_1, ARRAY_SIZE(buffer),
2038
- &msg_1_len);
2039
-
2040
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2041
- TEST_ASSERT_EQUAL(EDHOC_SM_WAIT_M2, init_ctx->status);
2042
- TEST_ASSERT_EQUAL(false, init_ctx->is_oscore_export_allowed);
2043
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_INVALID, init_ctx->prk_state);
2044
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_1, init_ctx->th_state);
2045
-
2046
- ret = edhoc_error_get_code(init_ctx, &error_code_recv);
2047
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2048
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
2049
-
2050
- /* Verify EAD_1 compose. */
2051
- TEST_ASSERT_EQUAL(EDHOC_MSG_1, init_ead_ctx.msg);
2052
- TEST_ASSERT_EQUAL(1, init_ead_ctx.recv_tokens);
2053
- TEST_ASSERT_EQUAL(ead_single_token_msg_1.label,
2054
- init_ead_ctx.token[0].label);
2055
- TEST_ASSERT_EQUAL(ead_single_token_msg_1.value_len,
2056
- init_ead_ctx.token[0].value_len);
2057
- TEST_ASSERT_EQUAL_UINT8_ARRAY(ead_single_token_msg_1.value,
2058
- init_ead_ctx.token[0].value,
2059
- init_ead_ctx.token[0].value_len);
2060
-
2061
- /* EDHOC message 1 process. */
2062
- ret = edhoc_message_1_process(resp_ctx, msg_1, msg_1_len);
2063
-
2064
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2065
- TEST_ASSERT_EQUAL(EDHOC_SM_RECEIVED_M1, resp_ctx->status);
2066
- TEST_ASSERT_EQUAL(false, resp_ctx->is_oscore_export_allowed);
2067
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_1, resp_ctx->th_state);
2068
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_INVALID, resp_ctx->prk_state);
2069
-
2070
- ret = edhoc_error_get_code(resp_ctx, &error_code_recv);
2071
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2072
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
2073
-
2074
- /* Verify EAD_1 process. */
2075
- TEST_ASSERT_EQUAL(EDHOC_MSG_1, resp_ead_ctx.msg);
2076
- TEST_ASSERT_EQUAL(1, resp_ead_ctx.recv_tokens);
2077
- TEST_ASSERT_EQUAL(ead_single_token_msg_1.label,
2078
- resp_ead_ctx.token[0].label);
2079
- TEST_ASSERT_EQUAL(ead_single_token_msg_1.value_len,
2080
- resp_ead_ctx.token[0].value_len);
2081
- TEST_ASSERT_EQUAL_UINT8_ARRAY(ead_single_token_msg_1.value,
2082
- resp_ead_ctx.token[0].value,
2083
- resp_ead_ctx.token[0].value_len);
2084
-
2085
- memset(&init_ead_ctx, 0, sizeof(init_ead_ctx));
2086
- memset(&resp_ead_ctx, 0, sizeof(resp_ead_ctx));
2087
-
2088
- memset(buffer, 0, sizeof(buffer));
2089
- size_t msg_2_len = 0;
2090
- uint8_t *msg_2 = buffer;
2091
-
2092
- /* EDHOC message 2 compose. */
2093
- ret = edhoc_message_2_compose(resp_ctx, msg_2, ARRAY_SIZE(buffer),
2094
- &msg_2_len);
2095
-
2096
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2097
- TEST_ASSERT_EQUAL(EDHOC_SM_WAIT_M3, resp_ctx->status);
2098
- TEST_ASSERT_EQUAL(false, resp_ctx->is_oscore_export_allowed);
2099
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_3, resp_ctx->th_state);
2100
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_3E2M, resp_ctx->prk_state);
2101
-
2102
- ret = edhoc_error_get_code(resp_ctx, &error_code_recv);
2103
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2104
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
2105
-
2106
- /* Verify EAD_2 compose. */
2107
- TEST_ASSERT_EQUAL(EDHOC_MSG_2, resp_ead_ctx.msg);
2108
- TEST_ASSERT_EQUAL(1, resp_ead_ctx.recv_tokens);
2109
- TEST_ASSERT_EQUAL(ead_single_token_msg_2.label,
2110
- resp_ead_ctx.token[0].label);
2111
- TEST_ASSERT_EQUAL(ead_single_token_msg_2.value_len,
2112
- resp_ead_ctx.token[0].value_len);
2113
- TEST_ASSERT_EQUAL_UINT8_ARRAY(ead_single_token_msg_2.value,
2114
- resp_ead_ctx.token[0].value,
2115
- resp_ead_ctx.token[0].value_len);
2116
-
2117
- /* EDHOC message 2 process. */
2118
- ret = edhoc_message_2_process(init_ctx, msg_2, msg_2_len);
2119
-
2120
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2121
- TEST_ASSERT_EQUAL(EDHOC_SM_VERIFIED_M2, init_ctx->status);
2122
- TEST_ASSERT_EQUAL(false, init_ctx->is_oscore_export_allowed);
2123
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_3, init_ctx->th_state);
2124
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_3E2M, init_ctx->prk_state);
2125
-
2126
- ret = edhoc_error_get_code(init_ctx, &error_code_recv);
2127
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2128
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
2129
-
2130
- /* Verify EAD_2 process. */
2131
- TEST_ASSERT_EQUAL(EDHOC_MSG_2, init_ead_ctx.msg);
2132
- TEST_ASSERT_EQUAL(1, init_ead_ctx.recv_tokens);
2133
- TEST_ASSERT_EQUAL(ead_single_token_msg_2.label,
2134
- init_ead_ctx.token[0].label);
2135
- TEST_ASSERT_EQUAL(ead_single_token_msg_2.value_len,
2136
- init_ead_ctx.token[0].value_len);
2137
- TEST_ASSERT_EQUAL_UINT8_ARRAY(ead_single_token_msg_2.value,
2138
- init_ead_ctx.token[0].value,
2139
- init_ead_ctx.token[0].value_len);
2140
-
2141
- TEST_ASSERT_EQUAL(edhoc_cipher_suite_0.ecc_key_length,
2142
- init_ctx->dh_secret_len);
2143
- TEST_ASSERT_EQUAL(edhoc_cipher_suite_0.ecc_key_length,
2144
- resp_ctx->dh_secret_len);
2145
- TEST_ASSERT_EQUAL(init_ctx->dh_secret_len, resp_ctx->dh_secret_len);
2146
- TEST_ASSERT_EQUAL_UINT8_ARRAY(init_ctx->dh_secret, resp_ctx->dh_secret,
2147
- edhoc_cipher_suite_0.ecc_key_length);
2148
-
2149
- memset(&init_ead_ctx, 0, sizeof(init_ead_ctx));
2150
- memset(&resp_ead_ctx, 0, sizeof(resp_ead_ctx));
2151
-
2152
- memset(buffer, 0, sizeof(buffer));
2153
- size_t msg_3_len = 0;
2154
- uint8_t *msg_3 = buffer;
2155
-
2156
- /* EDHOC message 3 compose. */
2157
- ret = edhoc_message_3_compose(init_ctx, msg_3, ARRAY_SIZE(buffer),
2158
- &msg_3_len);
2159
-
2160
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2161
- TEST_ASSERT_EQUAL(EDHOC_SM_COMPLETED, init_ctx->status);
2162
- TEST_ASSERT_EQUAL(true, init_ctx->is_oscore_export_allowed);
2163
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_4, init_ctx->th_state);
2164
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_4E3M, init_ctx->prk_state);
2165
-
2166
- ret = edhoc_error_get_code(init_ctx, &error_code_recv);
2167
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2168
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
2169
-
2170
- /* Verify EAD_3 compose. */
2171
- TEST_ASSERT_EQUAL(EDHOC_MSG_3, init_ead_ctx.msg);
2172
- TEST_ASSERT_EQUAL(1, init_ead_ctx.recv_tokens);
2173
- TEST_ASSERT_EQUAL(ead_single_token_msg_3.label,
2174
- init_ead_ctx.token[0].label);
2175
- TEST_ASSERT_EQUAL(ead_single_token_msg_3.value_len,
2176
- init_ead_ctx.token[0].value_len);
2177
- TEST_ASSERT_EQUAL_UINT8_ARRAY(ead_single_token_msg_3.value,
2178
- init_ead_ctx.token[0].value,
2179
- init_ead_ctx.token[0].value_len);
2180
-
2181
- /* EDHOC message 3 process. */
2182
- ret = edhoc_message_3_process(resp_ctx, msg_3, msg_3_len);
2183
-
2184
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2185
- TEST_ASSERT_EQUAL(EDHOC_SM_COMPLETED, resp_ctx->status);
2186
- TEST_ASSERT_EQUAL(true, resp_ctx->is_oscore_export_allowed);
2187
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_4, resp_ctx->th_state);
2188
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_4E3M, resp_ctx->prk_state);
2189
-
2190
- error_code_recv = EDHOC_ERROR_CODE_UNSPECIFIED_ERROR;
2191
- ret = edhoc_error_get_code(resp_ctx, &error_code_recv);
2192
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2193
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
2194
-
2195
- /* Verify EAD_3 process. */
2196
- TEST_ASSERT_EQUAL(EDHOC_MSG_3, resp_ead_ctx.msg);
2197
- TEST_ASSERT_EQUAL(1, resp_ead_ctx.recv_tokens);
2198
- TEST_ASSERT_EQUAL(ead_single_token_msg_3.label,
2199
- resp_ead_ctx.token[0].label);
2200
- TEST_ASSERT_EQUAL(ead_single_token_msg_3.value_len,
2201
- resp_ead_ctx.token[0].value_len);
2202
- TEST_ASSERT_EQUAL_UINT8_ARRAY(ead_single_token_msg_3.value,
2203
- resp_ead_ctx.token[0].value,
2204
- resp_ead_ctx.token[0].value_len);
2205
-
2206
- memset(&init_ead_ctx, 0, sizeof(init_ead_ctx));
2207
- memset(&resp_ead_ctx, 0, sizeof(resp_ead_ctx));
2208
-
2209
- memset(buffer, 0, sizeof(buffer));
2210
- size_t msg_4_len = 0;
2211
- uint8_t *msg_4 = buffer;
2212
-
2213
- /* EDHOC message 4 compose. */
2214
- ret = edhoc_message_4_compose(resp_ctx, msg_4, ARRAY_SIZE(buffer),
2215
- &msg_4_len);
2216
-
2217
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2218
- TEST_ASSERT_EQUAL(EDHOC_SM_PERSISTED, resp_ctx->status);
2219
- TEST_ASSERT_EQUAL(true, resp_ctx->is_oscore_export_allowed);
2220
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_4, resp_ctx->th_state);
2221
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_4E3M, resp_ctx->prk_state);
2222
-
2223
- error_code_recv = EDHOC_ERROR_CODE_UNSPECIFIED_ERROR;
2224
- ret = edhoc_error_get_code(resp_ctx, &error_code_recv);
2225
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2226
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
2227
-
2228
- /* Verify EAD_4 compose. */
2229
- TEST_ASSERT_EQUAL(EDHOC_MSG_4, resp_ead_ctx.msg);
2230
- TEST_ASSERT_EQUAL(1, resp_ead_ctx.recv_tokens);
2231
- TEST_ASSERT_EQUAL(ead_single_token_msg_4.label,
2232
- resp_ead_ctx.token[0].label);
2233
- TEST_ASSERT_EQUAL(ead_single_token_msg_4.value_len,
2234
- resp_ead_ctx.token[0].value_len);
2235
- TEST_ASSERT_EQUAL_UINT8_ARRAY(ead_single_token_msg_4.value,
2236
- resp_ead_ctx.token[0].value,
2237
- resp_ead_ctx.token[0].value_len);
2238
-
2239
- /* EDHOC message 4 process. */
2240
- ret = edhoc_message_4_process(init_ctx, msg_4, msg_4_len);
2241
-
2242
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2243
- TEST_ASSERT_EQUAL(EDHOC_SM_PERSISTED, init_ctx->status);
2244
- TEST_ASSERT_EQUAL(true, init_ctx->is_oscore_export_allowed);
2245
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_4, init_ctx->th_state);
2246
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_4E3M, init_ctx->prk_state);
2247
-
2248
- ret = edhoc_error_get_code(init_ctx, &error_code_recv);
2249
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2250
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
2251
-
2252
- /* Verify EAD_4 process. */
2253
- TEST_ASSERT_EQUAL(EDHOC_MSG_4, init_ead_ctx.msg);
2254
- TEST_ASSERT_EQUAL(1, init_ead_ctx.recv_tokens);
2255
-
2256
- TEST_ASSERT_EQUAL(ead_single_token_msg_4.label,
2257
- init_ead_ctx.token[0].label);
2258
- TEST_ASSERT_EQUAL(ead_single_token_msg_4.value_len,
2259
- init_ead_ctx.token[0].value_len);
2260
- TEST_ASSERT_EQUAL_UINT8_ARRAY(ead_single_token_msg_4.value,
2261
- init_ead_ctx.token[0].value,
2262
- init_ead_ctx.token[0].value_len);
2263
-
2264
- /* Derive OSCORE master secret and master salt. */
2265
- uint8_t init_master_secret[ARRAY_SIZE(OSCORE_Master_Secret)] = { 0 };
2266
- uint8_t init_master_salt[ARRAY_SIZE(OSCORE_Master_Salt)] = { 0 };
2267
- size_t init_sender_id_len = 0;
2268
- uint8_t init_sender_id[ARRAY_SIZE(C_R)] = { 0 };
2269
- size_t init_recipient_id_len = 0;
2270
- uint8_t init_recipient_id[ARRAY_SIZE(C_I)] = { 0 };
2271
-
2272
- ret = edhoc_export_oscore_session(
2273
- init_ctx, init_master_secret, ARRAY_SIZE(init_master_secret),
2274
- init_master_salt, ARRAY_SIZE(init_master_salt), init_sender_id,
2275
- ARRAY_SIZE(init_sender_id), &init_sender_id_len,
2276
- init_recipient_id, ARRAY_SIZE(init_recipient_id),
2277
- &init_recipient_id_len);
2278
-
2279
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2280
- TEST_ASSERT_EQUAL(EDHOC_SM_PERSISTED, init_ctx->status);
2281
- TEST_ASSERT_EQUAL(false, init_ctx->is_oscore_export_allowed);
2282
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_OUT, init_ctx->prk_state);
2283
-
2284
- /* Derive OSCORE master secret and master salt. */
2285
- uint8_t resp_master_secret[ARRAY_SIZE(OSCORE_Master_Secret)] = { 0 };
2286
- uint8_t resp_master_salt[ARRAY_SIZE(OSCORE_Master_Salt)] = { 0 };
2287
- size_t resp_sender_id_len = 0;
2288
- uint8_t resp_sender_id[ARRAY_SIZE(C_I)] = { 0 };
2289
- size_t resp_recipient_id_len = 0;
2290
- uint8_t resp_recipient_id[ARRAY_SIZE(C_R)] = { 0 };
2291
-
2292
- ret = edhoc_export_oscore_session(
2293
- resp_ctx, resp_master_secret, ARRAY_SIZE(resp_master_secret),
2294
- resp_master_salt, ARRAY_SIZE(resp_master_salt), resp_sender_id,
2295
- ARRAY_SIZE(resp_sender_id), &resp_sender_id_len,
2296
- resp_recipient_id, ARRAY_SIZE(resp_recipient_id),
2297
- &resp_recipient_id_len);
2298
-
2299
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2300
- TEST_ASSERT_EQUAL(EDHOC_SM_PERSISTED, resp_ctx->status);
2301
- TEST_ASSERT_EQUAL(false, resp_ctx->is_oscore_export_allowed);
2302
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_OUT, resp_ctx->prk_state);
2303
-
2304
- TEST_ASSERT_EQUAL_UINT8_ARRAY(init_master_secret, resp_master_secret,
2305
- ARRAY_SIZE(resp_master_secret));
2306
-
2307
- TEST_ASSERT_EQUAL_UINT8_ARRAY(init_master_salt, resp_master_salt,
2308
- ARRAY_SIZE(resp_master_salt));
2309
-
2310
- TEST_ASSERT_EQUAL(init_sender_id_len, resp_recipient_id_len);
2311
- TEST_ASSERT_EQUAL_UINT8_ARRAY(init_sender_id, resp_recipient_id,
2312
- init_sender_id_len);
2313
- TEST_ASSERT_EQUAL(init_recipient_id_len, resp_sender_id_len);
2314
- TEST_ASSERT_EQUAL_UINT8_ARRAY(init_recipient_id, resp_sender_id,
2315
- resp_sender_id_len);
2316
- }
2317
-
2318
- TEST(rfc9529_chapter_2, handshake_real_crypto_ead_many)
2319
- {
2320
- uint8_t buffer[1000] = { 0 };
2321
-
2322
- /* Required injections. */
2323
- struct ead_context init_ead_ctx = { 0 };
2324
- struct ead_context resp_ead_ctx = { 0 };
2325
-
2326
- ret = edhoc_set_user_context(init_ctx, &init_ead_ctx);
2327
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2328
-
2329
- ret = edhoc_bind_ead(init_ctx, &edhoc_ead_multiple_tokens);
2330
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2331
-
2332
- ret = edhoc_set_user_context(resp_ctx, &resp_ead_ctx);
2333
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2334
-
2335
- ret = edhoc_bind_ead(resp_ctx, &edhoc_ead_multiple_tokens);
2336
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2337
-
2338
- memset(&init_ead_ctx, 0, sizeof(init_ead_ctx));
2339
- memset(&resp_ead_ctx, 0, sizeof(resp_ead_ctx));
2340
-
2341
- memset(buffer, 0, sizeof(buffer));
2342
- size_t msg_1_len = 0;
2343
- uint8_t *msg_1 = buffer;
2344
-
2345
- /* EDHOC message 1 compose. */
2346
- ret = edhoc_message_1_compose(init_ctx, msg_1, ARRAY_SIZE(buffer),
2347
- &msg_1_len);
2348
-
2349
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2350
- TEST_ASSERT_EQUAL(EDHOC_SM_WAIT_M2, init_ctx->status);
2351
- TEST_ASSERT_EQUAL(false, init_ctx->is_oscore_export_allowed);
2352
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_INVALID, init_ctx->prk_state);
2353
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_1, init_ctx->th_state);
2354
-
2355
- ret = edhoc_error_get_code(init_ctx, &error_code_recv);
2356
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2357
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
2358
-
2359
- /* Verify EAD_1 compose. */
2360
- TEST_ASSERT_EQUAL(EDHOC_MSG_1, init_ead_ctx.msg);
2361
- TEST_ASSERT_EQUAL(ARRAY_SIZE(ead_multiple_tokens_msg_1),
2362
- init_ead_ctx.recv_tokens);
2363
-
2364
- for (size_t i = 0; i < init_ead_ctx.recv_tokens; ++i) {
2365
- TEST_ASSERT_EQUAL(ead_multiple_tokens_msg_1[i].label,
2366
- init_ead_ctx.token[i].label);
2367
- TEST_ASSERT_EQUAL(ead_multiple_tokens_msg_1[i].value_len,
2368
- init_ead_ctx.token[i].value_len);
2369
- TEST_ASSERT_EQUAL_UINT8_ARRAY(
2370
- ead_multiple_tokens_msg_1[i].value,
2371
- init_ead_ctx.token[i].value,
2372
- init_ead_ctx.token[i].value_len);
2373
- }
2374
-
2375
- /* EDHOC message 1 process. */
2376
- ret = edhoc_message_1_process(resp_ctx, msg_1, msg_1_len);
2377
-
2378
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2379
- TEST_ASSERT_EQUAL(EDHOC_SM_RECEIVED_M1, resp_ctx->status);
2380
- TEST_ASSERT_EQUAL(false, resp_ctx->is_oscore_export_allowed);
2381
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_1, resp_ctx->th_state);
2382
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_INVALID, resp_ctx->prk_state);
2383
-
2384
- ret = edhoc_error_get_code(resp_ctx, &error_code_recv);
2385
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2386
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
2387
-
2388
- /* Verify EAD_1 process. */
2389
- TEST_ASSERT_EQUAL(EDHOC_MSG_1, resp_ead_ctx.msg);
2390
- TEST_ASSERT_EQUAL(ARRAY_SIZE(ead_multiple_tokens_msg_1),
2391
- resp_ead_ctx.recv_tokens);
2392
-
2393
- for (size_t i = 0; i < resp_ead_ctx.recv_tokens; ++i) {
2394
- TEST_ASSERT_EQUAL(ead_multiple_tokens_msg_1[i].label,
2395
- resp_ead_ctx.token[i].label);
2396
- TEST_ASSERT_EQUAL(ead_multiple_tokens_msg_1[i].value_len,
2397
- resp_ead_ctx.token[i].value_len);
2398
- TEST_ASSERT_EQUAL_UINT8_ARRAY(
2399
- ead_multiple_tokens_msg_1[i].value,
2400
- resp_ead_ctx.token[i].value,
2401
- resp_ead_ctx.token[i].value_len);
2402
- }
2403
-
2404
- memset(&init_ead_ctx, 0, sizeof(init_ead_ctx));
2405
- memset(&resp_ead_ctx, 0, sizeof(resp_ead_ctx));
2406
-
2407
- memset(buffer, 0, sizeof(buffer));
2408
- size_t msg_2_len = 0;
2409
- uint8_t *msg_2 = buffer;
2410
-
2411
- /* EDHOC message 2 compose. */
2412
- ret = edhoc_message_2_compose(resp_ctx, msg_2, ARRAY_SIZE(buffer),
2413
- &msg_2_len);
2414
-
2415
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2416
- TEST_ASSERT_EQUAL(EDHOC_SM_WAIT_M3, resp_ctx->status);
2417
- TEST_ASSERT_EQUAL(false, resp_ctx->is_oscore_export_allowed);
2418
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_3, resp_ctx->th_state);
2419
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_3E2M, resp_ctx->prk_state);
2420
-
2421
- ret = edhoc_error_get_code(resp_ctx, &error_code_recv);
2422
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2423
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
2424
-
2425
- /* Verify EAD_2 compose. */
2426
- TEST_ASSERT_EQUAL(EDHOC_MSG_2, resp_ead_ctx.msg);
2427
- TEST_ASSERT_EQUAL(ARRAY_SIZE(ead_multiple_tokens_msg_2),
2428
- resp_ead_ctx.recv_tokens);
2429
-
2430
- for (size_t i = 0; i < resp_ead_ctx.recv_tokens; ++i) {
2431
- TEST_ASSERT_EQUAL(ead_multiple_tokens_msg_2[i].label,
2432
- resp_ead_ctx.token[i].label);
2433
- TEST_ASSERT_EQUAL(ead_multiple_tokens_msg_2[i].value_len,
2434
- resp_ead_ctx.token[i].value_len);
2435
- TEST_ASSERT_EQUAL_UINT8_ARRAY(
2436
- ead_multiple_tokens_msg_2[i].value,
2437
- resp_ead_ctx.token[i].value,
2438
- resp_ead_ctx.token[i].value_len);
2439
- }
2440
-
2441
- /* EDHOC message 2 process. */
2442
- ret = edhoc_message_2_process(init_ctx, msg_2, msg_2_len);
2443
-
2444
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2445
- TEST_ASSERT_EQUAL(EDHOC_SM_VERIFIED_M2, init_ctx->status);
2446
- TEST_ASSERT_EQUAL(false, init_ctx->is_oscore_export_allowed);
2447
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_3, init_ctx->th_state);
2448
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_3E2M, init_ctx->prk_state);
2449
-
2450
- ret = edhoc_error_get_code(init_ctx, &error_code_recv);
2451
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2452
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
2453
-
2454
- /* Verify EAD_2 process. */
2455
- TEST_ASSERT_EQUAL(EDHOC_MSG_2, init_ead_ctx.msg);
2456
- TEST_ASSERT_EQUAL(ARRAY_SIZE(ead_multiple_tokens_msg_2),
2457
- init_ead_ctx.recv_tokens);
2458
-
2459
- for (size_t i = 0; i < init_ead_ctx.recv_tokens; ++i) {
2460
- TEST_ASSERT_EQUAL(ead_multiple_tokens_msg_2[i].label,
2461
- init_ead_ctx.token[i].label);
2462
- TEST_ASSERT_EQUAL(ead_multiple_tokens_msg_2[i].value_len,
2463
- init_ead_ctx.token[i].value_len);
2464
- TEST_ASSERT_EQUAL_UINT8_ARRAY(
2465
- ead_multiple_tokens_msg_2[i].value,
2466
- init_ead_ctx.token[i].value,
2467
- init_ead_ctx.token[i].value_len);
2468
- }
2469
-
2470
- TEST_ASSERT_EQUAL(edhoc_cipher_suite_0.ecc_key_length,
2471
- init_ctx->dh_secret_len);
2472
- TEST_ASSERT_EQUAL(edhoc_cipher_suite_0.ecc_key_length,
2473
- resp_ctx->dh_secret_len);
2474
- TEST_ASSERT_EQUAL(init_ctx->dh_secret_len, resp_ctx->dh_secret_len);
2475
- TEST_ASSERT_EQUAL_UINT8_ARRAY(init_ctx->dh_secret, resp_ctx->dh_secret,
2476
- edhoc_cipher_suite_0.ecc_key_length);
2477
-
2478
- memset(&init_ead_ctx, 0, sizeof(init_ead_ctx));
2479
- memset(&resp_ead_ctx, 0, sizeof(resp_ead_ctx));
2480
-
2481
- memset(buffer, 0, sizeof(buffer));
2482
- size_t msg_3_len = 0;
2483
- uint8_t *msg_3 = buffer;
2484
-
2485
- /* EDHOC message 3 compose. */
2486
- ret = edhoc_message_3_compose(init_ctx, msg_3, ARRAY_SIZE(buffer),
2487
- &msg_3_len);
2488
-
2489
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2490
- TEST_ASSERT_EQUAL(EDHOC_SM_COMPLETED, init_ctx->status);
2491
- TEST_ASSERT_EQUAL(true, init_ctx->is_oscore_export_allowed);
2492
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_4, init_ctx->th_state);
2493
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_4E3M, init_ctx->prk_state);
2494
-
2495
- ret = edhoc_error_get_code(init_ctx, &error_code_recv);
2496
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2497
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
2498
-
2499
- /* Verify EAD_3 compose. */
2500
- TEST_ASSERT_EQUAL(EDHOC_MSG_3, init_ead_ctx.msg);
2501
- TEST_ASSERT_EQUAL(ARRAY_SIZE(ead_multiple_tokens_msg_3),
2502
- init_ead_ctx.recv_tokens);
2503
-
2504
- for (size_t i = 0; i < init_ead_ctx.recv_tokens; ++i) {
2505
- TEST_ASSERT_EQUAL(ead_multiple_tokens_msg_3[i].label,
2506
- init_ead_ctx.token[i].label);
2507
- TEST_ASSERT_EQUAL(ead_multiple_tokens_msg_3[i].value_len,
2508
- init_ead_ctx.token[i].value_len);
2509
- TEST_ASSERT_EQUAL_UINT8_ARRAY(
2510
- ead_multiple_tokens_msg_3[i].value,
2511
- init_ead_ctx.token[i].value,
2512
- init_ead_ctx.token[i].value_len);
2513
- }
2514
-
2515
- /* EDHOC message 3 process. */
2516
- ret = edhoc_message_3_process(resp_ctx, msg_3, msg_3_len);
2517
-
2518
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2519
- TEST_ASSERT_EQUAL(EDHOC_SM_COMPLETED, resp_ctx->status);
2520
- TEST_ASSERT_EQUAL(true, resp_ctx->is_oscore_export_allowed);
2521
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_4, resp_ctx->th_state);
2522
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_4E3M, resp_ctx->prk_state);
2523
-
2524
- ret = edhoc_error_get_code(resp_ctx, &error_code_recv);
2525
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2526
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
2527
-
2528
- /* Verify EAD_3 process. */
2529
- TEST_ASSERT_EQUAL(EDHOC_MSG_3, resp_ead_ctx.msg);
2530
- TEST_ASSERT_EQUAL(ARRAY_SIZE(ead_multiple_tokens_msg_3),
2531
- resp_ead_ctx.recv_tokens);
2532
-
2533
- for (size_t i = 0; i < resp_ead_ctx.recv_tokens; ++i) {
2534
- TEST_ASSERT_EQUAL(ead_multiple_tokens_msg_3[i].label,
2535
- resp_ead_ctx.token[i].label);
2536
- TEST_ASSERT_EQUAL(ead_multiple_tokens_msg_3[i].value_len,
2537
- resp_ead_ctx.token[i].value_len);
2538
- TEST_ASSERT_EQUAL_UINT8_ARRAY(
2539
- ead_multiple_tokens_msg_3[i].value,
2540
- resp_ead_ctx.token[i].value,
2541
- resp_ead_ctx.token[i].value_len);
2542
- }
2543
-
2544
- memset(&init_ead_ctx, 0, sizeof(init_ead_ctx));
2545
- memset(&resp_ead_ctx, 0, sizeof(resp_ead_ctx));
2546
-
2547
- memset(buffer, 0, sizeof(buffer));
2548
- size_t msg_4_len = 0;
2549
- uint8_t *msg_4 = buffer;
2550
-
2551
- /* EDHOC message 4 compose. */
2552
- ret = edhoc_message_4_compose(resp_ctx, msg_4, ARRAY_SIZE(buffer),
2553
- &msg_4_len);
2554
-
2555
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2556
- TEST_ASSERT_EQUAL(EDHOC_SM_PERSISTED, resp_ctx->status);
2557
- TEST_ASSERT_EQUAL(true, resp_ctx->is_oscore_export_allowed);
2558
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_4, resp_ctx->th_state);
2559
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_4E3M, resp_ctx->prk_state);
2560
-
2561
- ret = edhoc_error_get_code(resp_ctx, &error_code_recv);
2562
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2563
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
2564
-
2565
- /* Verify EAD_4 compose. */
2566
- TEST_ASSERT_EQUAL(EDHOC_MSG_4, resp_ead_ctx.msg);
2567
- TEST_ASSERT_EQUAL(ARRAY_SIZE(ead_multiple_tokens_msg_4),
2568
- resp_ead_ctx.recv_tokens);
2569
-
2570
- for (size_t i = 0; i < resp_ead_ctx.recv_tokens; ++i) {
2571
- TEST_ASSERT_EQUAL(ead_multiple_tokens_msg_4[i].label,
2572
- resp_ead_ctx.token[i].label);
2573
- TEST_ASSERT_EQUAL(ead_multiple_tokens_msg_4[i].value_len,
2574
- resp_ead_ctx.token[i].value_len);
2575
- TEST_ASSERT_EQUAL_UINT8_ARRAY(
2576
- ead_multiple_tokens_msg_4[i].value,
2577
- resp_ead_ctx.token[i].value,
2578
- resp_ead_ctx.token[i].value_len);
2579
- }
2580
-
2581
- /* EDHOC message 4 process. */
2582
- ret = edhoc_message_4_process(init_ctx, msg_4, msg_4_len);
2583
-
2584
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2585
- TEST_ASSERT_EQUAL(EDHOC_SM_PERSISTED, init_ctx->status);
2586
- TEST_ASSERT_EQUAL(true, init_ctx->is_oscore_export_allowed);
2587
- TEST_ASSERT_EQUAL(EDHOC_TH_STATE_4, init_ctx->th_state);
2588
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_4E3M, init_ctx->prk_state);
2589
-
2590
- ret = edhoc_error_get_code(init_ctx, &error_code_recv);
2591
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2592
- TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_recv);
2593
-
2594
- /* Verify EAD_4 process. */
2595
- TEST_ASSERT_EQUAL(EDHOC_MSG_4, init_ead_ctx.msg);
2596
- TEST_ASSERT_EQUAL(ARRAY_SIZE(ead_multiple_tokens_msg_4),
2597
- init_ead_ctx.recv_tokens);
2598
-
2599
- for (size_t i = 0; i < init_ead_ctx.recv_tokens; ++i) {
2600
- TEST_ASSERT_EQUAL(ead_multiple_tokens_msg_4[i].label,
2601
- init_ead_ctx.token[i].label);
2602
- TEST_ASSERT_EQUAL(ead_multiple_tokens_msg_4[i].value_len,
2603
- init_ead_ctx.token[i].value_len);
2604
- TEST_ASSERT_EQUAL_UINT8_ARRAY(
2605
- ead_multiple_tokens_msg_4[i].value,
2606
- init_ead_ctx.token[i].value,
2607
- init_ead_ctx.token[i].value_len);
2608
- }
2609
-
2610
- /* Derive OSCORE master secret and master salt. */
2611
- uint8_t init_master_secret[ARRAY_SIZE(OSCORE_Master_Secret)] = { 0 };
2612
- uint8_t init_master_salt[ARRAY_SIZE(OSCORE_Master_Salt)] = { 0 };
2613
- size_t init_sender_id_len = 0;
2614
- uint8_t init_sender_id[ARRAY_SIZE(C_R)] = { 0 };
2615
- size_t init_recipient_id_len = 0;
2616
- uint8_t init_recipient_id[ARRAY_SIZE(C_I)] = { 0 };
2617
-
2618
- ret = edhoc_export_oscore_session(
2619
- init_ctx, init_master_secret, ARRAY_SIZE(init_master_secret),
2620
- init_master_salt, ARRAY_SIZE(init_master_salt), init_sender_id,
2621
- ARRAY_SIZE(init_sender_id), &init_sender_id_len,
2622
- init_recipient_id, ARRAY_SIZE(init_recipient_id),
2623
- &init_recipient_id_len);
2624
-
2625
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2626
- TEST_ASSERT_EQUAL(EDHOC_SM_PERSISTED, init_ctx->status);
2627
- TEST_ASSERT_EQUAL(false, init_ctx->is_oscore_export_allowed);
2628
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_OUT, init_ctx->prk_state);
2629
-
2630
- /* Derive OSCORE master secret and master salt. */
2631
- uint8_t resp_master_secret[ARRAY_SIZE(OSCORE_Master_Secret)] = { 0 };
2632
- uint8_t resp_master_salt[ARRAY_SIZE(OSCORE_Master_Salt)] = { 0 };
2633
- size_t resp_sender_id_len = 0;
2634
- uint8_t resp_sender_id[ARRAY_SIZE(C_I)] = { 0 };
2635
- size_t resp_recipient_id_len = 0;
2636
- uint8_t resp_recipient_id[ARRAY_SIZE(C_R)] = { 0 };
2637
-
2638
- ret = edhoc_export_oscore_session(
2639
- resp_ctx, resp_master_secret, ARRAY_SIZE(resp_master_secret),
2640
- resp_master_salt, ARRAY_SIZE(resp_master_salt), resp_sender_id,
2641
- ARRAY_SIZE(resp_sender_id), &resp_sender_id_len,
2642
- resp_recipient_id, ARRAY_SIZE(resp_recipient_id),
2643
- &resp_recipient_id_len);
2644
-
2645
- TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
2646
- TEST_ASSERT_EQUAL(EDHOC_SM_PERSISTED, resp_ctx->status);
2647
- TEST_ASSERT_EQUAL(false, resp_ctx->is_oscore_export_allowed);
2648
- TEST_ASSERT_EQUAL(EDHOC_PRK_STATE_OUT, resp_ctx->prk_state);
2649
-
2650
- TEST_ASSERT_EQUAL_UINT8_ARRAY(init_master_secret, resp_master_secret,
2651
- ARRAY_SIZE(resp_master_secret));
2652
-
2653
- TEST_ASSERT_EQUAL_UINT8_ARRAY(init_master_salt, resp_master_salt,
2654
- ARRAY_SIZE(resp_master_salt));
2655
-
2656
- TEST_ASSERT_EQUAL(init_sender_id_len, resp_recipient_id_len);
2657
- TEST_ASSERT_EQUAL_UINT8_ARRAY(init_sender_id, resp_recipient_id,
2658
- init_sender_id_len);
2659
- TEST_ASSERT_EQUAL(init_recipient_id_len, resp_sender_id_len);
2660
- TEST_ASSERT_EQUAL_UINT8_ARRAY(init_recipient_id, resp_sender_id,
2661
- resp_sender_id_len);
2662
- }
2663
-
2664
- TEST_GROUP_RUNNER(rfc9529_chapter_2)
2665
- {
2666
- RUN_TEST_CASE(rfc9529_chapter_2, message_1_compose);
2667
- RUN_TEST_CASE(rfc9529_chapter_2, message_1_process);
2668
- RUN_TEST_CASE(rfc9529_chapter_2, message_2_compose);
2669
- RUN_TEST_CASE(rfc9529_chapter_2, message_2_compose_any);
2670
- RUN_TEST_CASE(rfc9529_chapter_2, message_2_process);
2671
- RUN_TEST_CASE(rfc9529_chapter_2, message_3_compose);
2672
- RUN_TEST_CASE(rfc9529_chapter_2, message_3_compose_any);
2673
- RUN_TEST_CASE(rfc9529_chapter_2, message_3_process);
2674
- RUN_TEST_CASE(rfc9529_chapter_2, message_4_compose);
2675
- RUN_TEST_CASE(rfc9529_chapter_2, message_4_process);
2676
- RUN_TEST_CASE(rfc9529_chapter_2, handshake);
2677
- RUN_TEST_CASE(rfc9529_chapter_2, prk_exporter);
2678
- RUN_TEST_CASE(rfc9529_chapter_2, handshake_real_crypto);
2679
- RUN_TEST_CASE(rfc9529_chapter_2, handshake_real_crypto_ead_single);
2680
- RUN_TEST_CASE(rfc9529_chapter_2, handshake_real_crypto_ead_many);
2681
- }