edhoc 1.0.5 → 1.1.1

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 (313) hide show
  1. package/README.md +170 -0
  2. package/binding.gyp +13 -11
  3. package/dist/crypto.d.ts +9 -2
  4. package/dist/crypto.d.ts.map +1 -1
  5. package/dist/crypto.js +112 -84
  6. package/dist/edhoc.d.ts +31 -9
  7. package/dist/edhoc.d.ts.map +1 -1
  8. package/dist/index.d.ts +1 -1
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +1 -1
  11. package/dist/x509credentials.d.ts +20 -0
  12. package/dist/x509credentials.d.ts.map +1 -0
  13. package/dist/x509credentials.js +140 -0
  14. package/external/libedhoc/backends/cbor/include/backend_cbor_bstr_type_decode.h +1 -1
  15. package/external/libedhoc/backends/cbor/include/backend_cbor_bstr_type_encode.h +1 -1
  16. package/external/libedhoc/backends/cbor/include/backend_cbor_bstr_type_types.h +1 -1
  17. package/external/libedhoc/backends/cbor/include/backend_cbor_ead_decode.h +2 -2
  18. package/external/libedhoc/backends/cbor/include/backend_cbor_ead_encode.h +2 -2
  19. package/external/libedhoc/backends/cbor/include/backend_cbor_edhoc_types.h +48 -43
  20. package/external/libedhoc/backends/cbor/include/backend_cbor_enc_structure_decode.h +1 -1
  21. package/external/libedhoc/backends/cbor/include/backend_cbor_enc_structure_encode.h +1 -1
  22. package/external/libedhoc/backends/cbor/include/backend_cbor_enc_structure_types.h +3 -3
  23. package/external/libedhoc/backends/cbor/include/backend_cbor_id_cred_x_decode.h +1 -1
  24. package/external/libedhoc/backends/cbor/include/backend_cbor_id_cred_x_encode.h +1 -1
  25. package/external/libedhoc/backends/cbor/include/backend_cbor_info_decode.h +1 -1
  26. package/external/libedhoc/backends/cbor/include/backend_cbor_info_encode.h +1 -1
  27. package/external/libedhoc/backends/cbor/include/backend_cbor_int_type_decode.h +1 -1
  28. package/external/libedhoc/backends/cbor/include/backend_cbor_int_type_encode.h +1 -1
  29. package/external/libedhoc/backends/cbor/include/backend_cbor_int_type_types.h +1 -1
  30. package/external/libedhoc/backends/cbor/include/backend_cbor_message_1_decode.h +1 -1
  31. package/external/libedhoc/backends/cbor/include/backend_cbor_message_1_encode.h +1 -1
  32. package/external/libedhoc/backends/cbor/include/backend_cbor_message_2_decode.h +1 -1
  33. package/external/libedhoc/backends/cbor/include/backend_cbor_message_2_encode.h +1 -1
  34. package/external/libedhoc/backends/cbor/include/backend_cbor_message_3_decode.h +1 -1
  35. package/external/libedhoc/backends/cbor/include/backend_cbor_message_3_encode.h +1 -1
  36. package/external/libedhoc/backends/cbor/include/backend_cbor_message_4_decode.h +1 -1
  37. package/external/libedhoc/backends/cbor/include/backend_cbor_message_4_encode.h +1 -1
  38. package/external/libedhoc/backends/cbor/include/backend_cbor_message_error_decode.h +1 -1
  39. package/external/libedhoc/backends/cbor/include/backend_cbor_message_error_encode.h +1 -1
  40. package/external/libedhoc/backends/cbor/include/backend_cbor_plaintext_2_decode.h +1 -1
  41. package/external/libedhoc/backends/cbor/include/backend_cbor_plaintext_2_encode.h +1 -1
  42. package/external/libedhoc/backends/cbor/include/backend_cbor_plaintext_3_decode.h +1 -1
  43. package/external/libedhoc/backends/cbor/include/backend_cbor_plaintext_3_encode.h +1 -1
  44. package/external/libedhoc/backends/cbor/include/backend_cbor_plaintext_4_decode.h +3 -3
  45. package/external/libedhoc/backends/cbor/include/backend_cbor_plaintext_4_encode.h +3 -3
  46. package/external/libedhoc/backends/cbor/include/backend_cbor_sig_structure_decode.h +1 -1
  47. package/external/libedhoc/backends/cbor/include/backend_cbor_sig_structure_encode.h +1 -1
  48. package/external/libedhoc/backends/cbor/include/backend_cbor_sig_structure_types.h +4 -4
  49. package/external/libedhoc/backends/cbor/include/backend_cbor_x509_types.h +93 -83
  50. package/external/libedhoc/backends/cbor/src/backend_cbor_bstr_type_decode.c +11 -20
  51. package/external/libedhoc/backends/cbor/src/backend_cbor_bstr_type_encode.c +11 -20
  52. package/external/libedhoc/backends/cbor/src/backend_cbor_ead_decode.c +27 -32
  53. package/external/libedhoc/backends/cbor/src/backend_cbor_ead_encode.c +27 -32
  54. package/external/libedhoc/backends/cbor/src/backend_cbor_enc_structure_decode.c +14 -23
  55. package/external/libedhoc/backends/cbor/src/backend_cbor_enc_structure_encode.c +14 -23
  56. package/external/libedhoc/backends/cbor/src/backend_cbor_id_cred_x_decode.c +63 -52
  57. package/external/libedhoc/backends/cbor/src/backend_cbor_id_cred_x_encode.c +62 -51
  58. package/external/libedhoc/backends/cbor/src/backend_cbor_info_decode.c +14 -23
  59. package/external/libedhoc/backends/cbor/src/backend_cbor_info_encode.c +14 -23
  60. package/external/libedhoc/backends/cbor/src/backend_cbor_int_type_decode.c +11 -20
  61. package/external/libedhoc/backends/cbor/src/backend_cbor_int_type_encode.c +11 -20
  62. package/external/libedhoc/backends/cbor/src/backend_cbor_message_1_decode.c +54 -51
  63. package/external/libedhoc/backends/cbor/src/backend_cbor_message_1_encode.c +54 -51
  64. package/external/libedhoc/backends/cbor/src/backend_cbor_message_2_decode.c +11 -20
  65. package/external/libedhoc/backends/cbor/src/backend_cbor_message_2_encode.c +11 -20
  66. package/external/libedhoc/backends/cbor/src/backend_cbor_message_3_decode.c +11 -20
  67. package/external/libedhoc/backends/cbor/src/backend_cbor_message_3_encode.c +11 -20
  68. package/external/libedhoc/backends/cbor/src/backend_cbor_message_4_decode.c +11 -20
  69. package/external/libedhoc/backends/cbor/src/backend_cbor_message_4_encode.c +11 -20
  70. package/external/libedhoc/backends/cbor/src/backend_cbor_message_error_decode.c +36 -37
  71. package/external/libedhoc/backends/cbor/src/backend_cbor_message_error_encode.c +36 -37
  72. package/external/libedhoc/backends/cbor/src/backend_cbor_plaintext_2_decode.c +103 -80
  73. package/external/libedhoc/backends/cbor/src/backend_cbor_plaintext_2_encode.c +102 -79
  74. package/external/libedhoc/backends/cbor/src/backend_cbor_plaintext_3_decode.c +99 -76
  75. package/external/libedhoc/backends/cbor/src/backend_cbor_plaintext_3_encode.c +98 -75
  76. package/external/libedhoc/backends/cbor/src/backend_cbor_plaintext_4_decode.c +40 -41
  77. package/external/libedhoc/backends/cbor/src/backend_cbor_plaintext_4_encode.c +40 -41
  78. package/external/libedhoc/backends/cbor/src/backend_cbor_sig_structure_decode.c +15 -24
  79. package/external/libedhoc/backends/cbor/src/backend_cbor_sig_structure_encode.c +15 -24
  80. package/external/libedhoc/externals/Unity/examples/example_1/src/ProductionCode.c +31 -0
  81. package/external/libedhoc/externals/Unity/examples/example_1/src/ProductionCode.h +10 -0
  82. package/external/libedhoc/externals/Unity/examples/example_1/src/ProductionCode2.c +18 -0
  83. package/external/libedhoc/externals/Unity/examples/example_1/src/ProductionCode2.h +9 -0
  84. package/external/libedhoc/externals/Unity/examples/example_1/test/TestProductionCode.c +69 -0
  85. package/external/libedhoc/externals/Unity/examples/example_1/test/TestProductionCode2.c +38 -0
  86. package/external/libedhoc/externals/Unity/examples/example_1/test/test_runners/TestProductionCode2_Runner.c +53 -0
  87. package/external/libedhoc/externals/Unity/examples/example_1/test/test_runners/TestProductionCode_Runner.c +57 -0
  88. package/external/libedhoc/externals/Unity/examples/example_2/src/ProductionCode.c +31 -0
  89. package/external/libedhoc/externals/Unity/examples/example_2/src/ProductionCode.h +10 -0
  90. package/external/libedhoc/externals/Unity/examples/example_2/src/ProductionCode2.c +18 -0
  91. package/external/libedhoc/externals/Unity/examples/example_2/src/ProductionCode2.h +9 -0
  92. package/external/libedhoc/externals/Unity/examples/example_2/test/TestProductionCode.c +71 -0
  93. package/external/libedhoc/externals/Unity/examples/example_2/test/TestProductionCode2.c +40 -0
  94. package/external/libedhoc/externals/Unity/examples/example_2/test/test_runners/TestProductionCode2_Runner.c +16 -0
  95. package/external/libedhoc/externals/Unity/examples/example_2/test/test_runners/TestProductionCode_Runner.c +18 -0
  96. package/external/libedhoc/externals/Unity/examples/example_2/test/test_runners/all_tests.c +19 -0
  97. package/external/libedhoc/externals/Unity/examples/example_3/helper/UnityHelper.c +17 -0
  98. package/external/libedhoc/externals/Unity/examples/example_3/helper/UnityHelper.h +19 -0
  99. package/external/libedhoc/externals/Unity/examples/example_3/src/ProductionCode.c +31 -0
  100. package/external/libedhoc/externals/Unity/examples/example_3/src/ProductionCode.h +10 -0
  101. package/external/libedhoc/externals/Unity/examples/example_3/src/ProductionCode2.c +18 -0
  102. package/external/libedhoc/externals/Unity/examples/example_3/src/ProductionCode2.h +9 -0
  103. package/external/libedhoc/externals/Unity/examples/example_3/test/TestProductionCode.c +69 -0
  104. package/external/libedhoc/externals/Unity/examples/example_3/test/TestProductionCode2.c +38 -0
  105. package/external/libedhoc/externals/Unity/examples/example_4/src/ProductionCode.c +31 -0
  106. package/external/libedhoc/externals/Unity/examples/example_4/src/ProductionCode.h +10 -0
  107. package/external/libedhoc/externals/Unity/examples/example_4/src/ProductionCode2.c +18 -0
  108. package/external/libedhoc/externals/Unity/examples/example_4/src/ProductionCode2.h +9 -0
  109. package/external/libedhoc/externals/Unity/examples/example_4/test/TestProductionCode.c +70 -0
  110. package/external/libedhoc/externals/Unity/examples/example_4/test/TestProductionCode2.c +42 -0
  111. package/external/libedhoc/externals/Unity/examples/example_4/test/test_runners/TestProductionCode2_Runner.c +53 -0
  112. package/external/libedhoc/externals/Unity/examples/example_4/test/test_runners/TestProductionCode_Runner.c +57 -0
  113. package/external/libedhoc/externals/Unity/examples/unity_config.h +251 -0
  114. package/external/libedhoc/externals/Unity/extras/bdd/src/unity_bdd.h +44 -0
  115. package/external/libedhoc/externals/Unity/extras/bdd/test/test_bdd.c +129 -0
  116. package/external/libedhoc/externals/Unity/extras/fixture/src/unity_fixture.c +310 -0
  117. package/external/libedhoc/externals/Unity/extras/fixture/src/unity_fixture.h +95 -0
  118. package/external/libedhoc/externals/Unity/extras/fixture/src/unity_fixture_internals.h +51 -0
  119. package/external/libedhoc/externals/Unity/extras/fixture/test/main/AllTests.c +20 -0
  120. package/external/libedhoc/externals/Unity/extras/fixture/test/template_fixture_tests.c +40 -0
  121. package/external/libedhoc/externals/Unity/extras/fixture/test/unity_fixture_Test.c +246 -0
  122. package/external/libedhoc/externals/Unity/extras/fixture/test/unity_fixture_TestRunner.c +33 -0
  123. package/external/libedhoc/externals/Unity/extras/memory/src/unity_memory.c +203 -0
  124. package/external/libedhoc/externals/Unity/extras/memory/src/unity_memory.h +61 -0
  125. package/external/libedhoc/externals/Unity/extras/memory/test/unity_memory_Test.c +326 -0
  126. package/external/libedhoc/externals/Unity/extras/memory/test/unity_memory_TestRunner.c +50 -0
  127. package/external/libedhoc/externals/Unity/extras/memory/test/unity_output_Spy.c +57 -0
  128. package/external/libedhoc/externals/Unity/extras/memory/test/unity_output_Spy.h +17 -0
  129. package/external/libedhoc/externals/Unity/src/unity.c +2501 -0
  130. package/external/libedhoc/externals/Unity/src/unity.h +698 -0
  131. package/external/libedhoc/externals/Unity/src/unity_internals.h +1183 -0
  132. package/external/libedhoc/externals/Unity/test/expectdata/testsample_cmd.c +61 -0
  133. package/external/libedhoc/externals/Unity/test/expectdata/testsample_def.c +57 -0
  134. package/external/libedhoc/externals/Unity/test/expectdata/testsample_head1.c +55 -0
  135. package/external/libedhoc/externals/Unity/test/expectdata/testsample_head1.h +15 -0
  136. package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_cmd.c +80 -0
  137. package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_def.c +76 -0
  138. package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_head1.c +75 -0
  139. package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_head1.h +13 -0
  140. package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_new1.c +89 -0
  141. package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_new2.c +89 -0
  142. package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_param.c +77 -0
  143. package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_run1.c +89 -0
  144. package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_run2.c +89 -0
  145. package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_yaml.c +90 -0
  146. package/external/libedhoc/externals/Unity/test/expectdata/testsample_new1.c +67 -0
  147. package/external/libedhoc/externals/Unity/test/expectdata/testsample_new2.c +70 -0
  148. package/external/libedhoc/externals/Unity/test/expectdata/testsample_param.c +58 -0
  149. package/external/libedhoc/externals/Unity/test/expectdata/testsample_run1.c +67 -0
  150. package/external/libedhoc/externals/Unity/test/expectdata/testsample_run2.c +70 -0
  151. package/external/libedhoc/externals/Unity/test/expectdata/testsample_yaml.c +71 -0
  152. package/external/libedhoc/externals/Unity/test/testdata/CException.h +18 -0
  153. package/external/libedhoc/externals/Unity/test/testdata/Defs.h +16 -0
  154. package/external/libedhoc/externals/Unity/test/testdata/cmock.h +21 -0
  155. package/external/libedhoc/externals/Unity/test/testdata/mockMock.h +20 -0
  156. package/external/libedhoc/externals/Unity/test/testdata/testRunnerGenerator.c +204 -0
  157. package/external/libedhoc/externals/Unity/test/testdata/testRunnerGeneratorSmall.c +73 -0
  158. package/external/libedhoc/externals/Unity/test/testdata/testRunnerGeneratorWithMocks.c +200 -0
  159. package/external/libedhoc/externals/Unity/test/tests/self_assessment_utils.h +151 -0
  160. package/external/libedhoc/externals/Unity/test/tests/test_unity_arrays.c +2941 -0
  161. package/external/libedhoc/externals/Unity/test/tests/test_unity_core.c +375 -0
  162. package/external/libedhoc/externals/Unity/test/tests/test_unity_doubles.c +1285 -0
  163. package/external/libedhoc/externals/Unity/test/tests/test_unity_floats.c +1395 -0
  164. package/external/libedhoc/externals/Unity/test/tests/test_unity_integers.c +2863 -0
  165. package/external/libedhoc/externals/Unity/test/tests/test_unity_integers_64.c +783 -0
  166. package/external/libedhoc/externals/Unity/test/tests/test_unity_memory.c +82 -0
  167. package/external/libedhoc/externals/Unity/test/tests/test_unity_parameterized.c +309 -0
  168. package/external/libedhoc/externals/Unity/test/tests/test_unity_parameterizedDemo.c +28 -0
  169. package/external/libedhoc/externals/Unity/test/tests/test_unity_strings.c +330 -0
  170. package/external/libedhoc/externals/Unity/test/tests/types_for_test.h +21 -0
  171. package/external/libedhoc/externals/zcbor/include/zcbor_common.h +147 -60
  172. package/external/libedhoc/externals/zcbor/include/zcbor_decode.h +291 -202
  173. package/external/libedhoc/externals/zcbor/include/zcbor_encode.h +100 -156
  174. package/external/libedhoc/externals/zcbor/include/zcbor_print.h +165 -0
  175. package/external/libedhoc/externals/zcbor/samples/hello_world/src/main.c +1 -1
  176. package/external/libedhoc/externals/zcbor/samples/pet/include/pet_decode.h +1 -1
  177. package/external/libedhoc/externals/zcbor/samples/pet/include/pet_encode.h +1 -1
  178. package/external/libedhoc/externals/zcbor/samples/pet/include/pet_types.h +4 -4
  179. package/external/libedhoc/externals/zcbor/samples/pet/src/main.c +4 -4
  180. package/external/libedhoc/externals/zcbor/samples/pet/src/pet_decode.c +15 -24
  181. package/external/libedhoc/externals/zcbor/samples/pet/src/pet_encode.c +14 -23
  182. package/external/libedhoc/externals/zcbor/src/zcbor_common.c +202 -29
  183. package/external/libedhoc/externals/zcbor/src/zcbor_decode.c +633 -173
  184. package/external/libedhoc/externals/zcbor/src/zcbor_encode.c +71 -184
  185. package/external/libedhoc/externals/zcbor/tests/decode/test1_suit_old_formats/src/main.c +152 -153
  186. package/external/libedhoc/externals/zcbor/tests/decode/test2_suit/src/main.c +64 -64
  187. package/external/libedhoc/externals/zcbor/tests/decode/test3_simple/src/main.c +15 -16
  188. package/external/libedhoc/externals/zcbor/tests/decode/test5_corner_cases/src/main.c +228 -84
  189. package/external/libedhoc/externals/zcbor/tests/decode/test7_suit9_simple/src/main.c +9 -9
  190. package/external/libedhoc/externals/zcbor/tests/decode/test8_suit12/src/main.c +0 -1
  191. package/external/libedhoc/externals/zcbor/tests/decode/test9_manifest14/src/main.c +172 -173
  192. package/external/libedhoc/externals/zcbor/tests/encode/test1_suit/src/main.c +73 -73
  193. package/external/libedhoc/externals/zcbor/tests/encode/test2_simple/src/main.c +1 -2
  194. package/external/libedhoc/externals/zcbor/tests/encode/test3_corner_cases/src/main.c +83 -56
  195. package/external/libedhoc/externals/zcbor/tests/encode/test4_senml/src/main.c +15 -16
  196. package/external/libedhoc/externals/zcbor/tests/fuzz/fuzz_everything.c +12 -0
  197. package/external/libedhoc/externals/zcbor/tests/fuzz/fuzz_manifest12.c +69 -69
  198. package/external/libedhoc/externals/zcbor/tests/unit/test1_unit_tests/src/main.c +448 -55
  199. package/external/libedhoc/externals/zcbor/tests/unit/test3_float16/src/main.c +49 -48
  200. package/external/libedhoc/include/edhoc.h +348 -54
  201. package/external/libedhoc/include/edhoc_common.h +289 -0
  202. package/external/libedhoc/include/edhoc_context.h +60 -35
  203. package/external/libedhoc/include/edhoc_credentials.h +55 -7
  204. package/external/libedhoc/include/edhoc_crypto.h +10 -10
  205. package/external/libedhoc/include/edhoc_ead.h +13 -10
  206. package/external/libedhoc/include/edhoc_macros.h +20 -11
  207. package/external/libedhoc/include/edhoc_values.h +2 -2
  208. package/external/libedhoc/library/edhoc.c +70 -36
  209. package/external/libedhoc/library/edhoc_common.c +1314 -0
  210. package/external/libedhoc/library/edhoc_exporter.c +45 -46
  211. package/external/libedhoc/library/edhoc_message_1.c +107 -72
  212. package/external/libedhoc/library/edhoc_message_2.c +396 -1693
  213. package/external/libedhoc/library/edhoc_message_3.c +465 -1656
  214. package/external/libedhoc/library/edhoc_message_4.c +93 -91
  215. package/external/libedhoc/library/edhoc_message_error.c +41 -41
  216. package/external/libedhoc/tests/include/{cipher_suites/cipher_suite_0.h → cipher_suite_0.h} +131 -134
  217. package/external/libedhoc/tests/include/{cipher_suites/cipher_suite_2.h → cipher_suite_2.h} +139 -140
  218. package/external/libedhoc/tests/include/{edhoc_trace_1/test_vector_1.h → test_vector_rfc9529_chapter_2.h} +786 -738
  219. package/external/libedhoc/tests/include/{edhoc_trace_2/test_vector_2.h → test_vector_rfc9529_chapter_3.h} +14 -10
  220. package/external/libedhoc/tests/include/{x509_chain_cs_0/test_vector_x5chain_cs_0.h → test_vector_x5chain_sign_keys_suite_0.h} +137 -140
  221. package/external/libedhoc/tests/include/{x509_chain_cs_2/test_vector_x5chain_cs_2.h → test_vector_x5chain_sign_keys_suite_2.h} +7 -8
  222. package/external/libedhoc/tests/include/{x509_chain_cs_2_static_dh/test_vector_x5chain_cs_2_static_dh.h → test_vector_x5chain_static_dh_keys_suite_2.h} +7 -8
  223. package/external/libedhoc/tests/include/{x509_hash_cs_2/test_vector_x5t_cs_2.h → test_vector_x5t_sign_keys_suite_2.h} +6 -7
  224. package/external/libedhoc/tests/src/{cipher_suites/cipher_suite_0.c → cipher_suite_0.c} +445 -447
  225. package/external/libedhoc/tests/src/{cipher_suites/cipher_suite_2.c → cipher_suite_2.c} +600 -600
  226. package/external/libedhoc/tests/src/module_test_api.c +430 -0
  227. package/external/libedhoc/tests/src/module_test_cipher_suite_0.c +395 -0
  228. package/external/libedhoc/tests/src/module_test_cipher_suite_2.c +392 -0
  229. package/external/libedhoc/tests/src/{error_message/test_edhoc_error_message.c → module_test_error_message.c} +94 -69
  230. package/external/libedhoc/tests/src/module_test_main.c +49 -0
  231. package/external/libedhoc/tests/src/{cipher_suite_negotiation/test_edhoc_cipher_suite_negotiation.c → module_test_rfc9528_suites_negotiation.c} +224 -227
  232. package/external/libedhoc/tests/src/module_test_rfc9529_chapter_2.c +2681 -0
  233. package/external/libedhoc/tests/src/module_test_rfc9529_chapter_3.c +1635 -0
  234. package/external/libedhoc/tests/src/module_test_x5chain_sign_keys_suite_0.c +1135 -0
  235. package/external/libedhoc/tests/src/module_test_x5chain_sign_keys_suite_2.c +1249 -0
  236. package/external/libedhoc/tests/src/module_test_x5chain_static_dh_keys_suite_2.c +798 -0
  237. package/external/libedhoc/tests/src/module_test_x5t_sign_keys_suite_2.c +956 -0
  238. package/include/EdhocComposeAsyncWorker.h +8 -6
  239. package/include/EdhocCredentialManager.h +16 -11
  240. package/include/EdhocCryptoManager.h +28 -21
  241. package/include/EdhocEadManager.h +3 -6
  242. package/include/{EdhocExportAsyncWorker.h → EdhocExportOscoreAsyncWorker.h} +20 -17
  243. package/include/EdhocKeyExporterAsyncWorker.h +76 -0
  244. package/include/EdhocKeyUpdateAsyncWorker.h +72 -0
  245. package/include/EdhocProcessAsyncWorker.h +14 -10
  246. package/include/LibEDHOC.h +44 -20
  247. package/include/UserContext.h +7 -9
  248. package/include/Utils.h +31 -27
  249. package/package.json +14 -3
  250. package/prebuilds/android-arm/edhoc.armv7.node +0 -0
  251. package/prebuilds/android-arm64/edhoc.armv8.node +0 -0
  252. package/prebuilds/darwin-arm64/edhoc.node +0 -0
  253. package/prebuilds/darwin-x64/edhoc.node +0 -0
  254. package/prebuilds/linux-arm/edhoc.armv6.node +0 -0
  255. package/prebuilds/linux-arm/edhoc.armv7.node +0 -0
  256. package/prebuilds/linux-arm64/edhoc.armv8.node +0 -0
  257. package/prebuilds/linux-x64/edhoc.glibc.node +0 -0
  258. package/prebuilds/linux-x64/edhoc.musl.node +0 -0
  259. package/prebuilds/win32-ia32/edhoc.node +0 -0
  260. package/prebuilds/win32-x64/edhoc.node +0 -0
  261. package/src/EdhocComposeAsyncWorker.cpp +18 -35
  262. package/src/EdhocCredentialManager.cpp +160 -187
  263. package/src/EdhocCryptoManager.cpp +386 -586
  264. package/src/EdhocEadManager.cpp +10 -18
  265. package/src/EdhocExportOscoreAsyncWorker.cpp +77 -0
  266. package/src/EdhocKeyExporterAsyncWorker.cpp +49 -0
  267. package/src/EdhocKeyUpdateAsyncWorker.cpp +41 -0
  268. package/src/EdhocProcessAsyncWorker.cpp +72 -19
  269. package/src/LibEDHOC.cpp +213 -174
  270. package/src/Suites.cpp +39 -72
  271. package/src/Utils.cpp +32 -56
  272. package/test/basic.test.ts +64 -0
  273. package/test/vectors.test.ts +111 -0
  274. package/dist/credentials.d.ts +0 -16
  275. package/dist/credentials.d.ts.map +0 -1
  276. package/dist/credentials.js +0 -84
  277. package/external/libedhoc/externals/zcbor/include/zcbor_debug.h +0 -69
  278. package/external/libedhoc/tests/include/cipher_suite_negotiation/test_edhoc_cipher_suite_negotiation.h +0 -37
  279. package/external/libedhoc/tests/include/cipher_suites/test_cipher_suite_0.h +0 -48
  280. package/external/libedhoc/tests/include/cipher_suites/test_cipher_suite_2.h +0 -48
  281. package/external/libedhoc/tests/include/edhoc_trace_1/authentication_credentials_1.h +0 -60
  282. package/external/libedhoc/tests/include/edhoc_trace_1/test_edhoc_handshake_1.h +0 -208
  283. package/external/libedhoc/tests/include/edhoc_trace_1/test_edhoc_handshake_ead_1.h +0 -59
  284. package/external/libedhoc/tests/include/edhoc_trace_2/authentication_credentials_2.h +0 -60
  285. package/external/libedhoc/tests/include/edhoc_trace_2/test_edhoc_handshake_2.h +0 -199
  286. package/external/libedhoc/tests/include/error_message/test_edhoc_error_message.h +0 -48
  287. package/external/libedhoc/tests/include/x509_chain_cs_0/authentication_credentials_x5chain_cs_0.h +0 -92
  288. package/external/libedhoc/tests/include/x509_chain_cs_0/test_edhoc_handshake_x5chain_cs_0.h +0 -96
  289. package/external/libedhoc/tests/include/x509_chain_cs_2/authentication_credentials_x5chain_cs_2.h +0 -58
  290. package/external/libedhoc/tests/include/x509_chain_cs_2/test_edhoc_handshake_x5chain_cs_2.h +0 -56
  291. package/external/libedhoc/tests/include/x509_chain_cs_2/test_edhoc_handshake_x5chain_cs_2_ead.h +0 -57
  292. package/external/libedhoc/tests/include/x509_chain_cs_2_static_dh/authentication_credentials_x5chain_cs_2_static_dh.h +0 -59
  293. package/external/libedhoc/tests/include/x509_chain_cs_2_static_dh/test_edhoc_handshake_x5chain_cs_2_static_dh_ead.h +0 -57
  294. package/external/libedhoc/tests/include/x509_hash_cs_2/authentication_credentials_x5t_cs_2.h +0 -60
  295. package/external/libedhoc/tests/include/x509_hash_cs_2/test_edhoc_handshake_x5t_cs_2_ead.h +0 -57
  296. package/external/libedhoc/tests/src/cipher_suites/test_cipher_suite_0.c +0 -475
  297. package/external/libedhoc/tests/src/cipher_suites/test_cipher_suite_2.c +0 -473
  298. package/external/libedhoc/tests/src/edhoc_trace_1/authentication_credentials_1.c +0 -252
  299. package/external/libedhoc/tests/src/edhoc_trace_1/test_edhoc_handshake_1.c +0 -1829
  300. package/external/libedhoc/tests/src/edhoc_trace_1/test_edhoc_handshake_ead_1.c +0 -1247
  301. package/external/libedhoc/tests/src/edhoc_trace_2/authentication_credentials_2.c +0 -170
  302. package/external/libedhoc/tests/src/edhoc_trace_2/test_edhoc_handshake_2.c +0 -1783
  303. package/external/libedhoc/tests/src/tests.c +0 -228
  304. package/external/libedhoc/tests/src/x509_chain_cs_0/authentication_credentials_x5chain_cs_0.c +0 -332
  305. package/external/libedhoc/tests/src/x509_chain_cs_0/test_edhoc_handshake_x5chain_cs_0.c +0 -936
  306. package/external/libedhoc/tests/src/x509_chain_cs_2/authentication_credentials_x5chain_cs_2.c +0 -166
  307. package/external/libedhoc/tests/src/x509_chain_cs_2/test_edhoc_handshake_x5chain_cs_2.c +0 -587
  308. package/external/libedhoc/tests/src/x509_chain_cs_2/test_edhoc_handshake_x5chain_cs_2_ead.c +0 -917
  309. package/external/libedhoc/tests/src/x509_chain_cs_2_static_dh/authentication_credentials_x5chain_cs_2_static_dh.c +0 -186
  310. package/external/libedhoc/tests/src/x509_chain_cs_2_static_dh/test_edhoc_handshake_x5chain_cs_2_static_dh_ead.c +0 -743
  311. package/external/libedhoc/tests/src/x509_hash_cs_2/authentication_credentials_x5t_cs_2.c +0 -261
  312. package/external/libedhoc/tests/src/x509_hash_cs_2/test_edhoc_handshake_x5t_cs_2_ead.c +0 -854
  313. package/src/EdhocExportAsyncWorker.cpp +0 -82
@@ -1,9 +1,9 @@
1
1
  /**
2
- * \file test_edhoc_cipher_suite_negotiation.c
2
+ * \file module_test_rfc9528_suites_negotiation.c
3
3
  * \author Kamil Kielbasa
4
- * \brief Test scenarios for cipher suite negotiation.
5
- * \version 0.4
6
- * \date 2024-01-01
4
+ * \brief Module tests for RFC 9528 suites negotation examples.
5
+ * \version 0.6
6
+ * \date 2024-08-05
7
7
  *
8
8
  * \copyright Copyright (c) 2024
9
9
  *
@@ -11,20 +11,24 @@
11
11
 
12
12
  /* Include files ----------------------------------------------------------- */
13
13
 
14
- /* Internal test headers: */
15
- #include "cipher_suite_negotiation/test_edhoc_cipher_suite_negotiation.h"
16
- #include "cipher_suites/cipher_suite_2.h"
14
+ /* EDHOC header: */
15
+ #define EDHOC_ALLOW_PRIVATE_ACCESS
16
+ #include <edhoc.h>
17
+
18
+ /* Cipher suite 2: */
19
+ #include "cipher_suite_2.h"
17
20
 
18
21
  /* Standard library headers: */
19
- #include <stdio.h>
20
22
  #include <stdint.h>
21
23
  #include <stddef.h>
22
24
  #include <string.h>
23
- #include <assert.h>
24
25
 
25
- /* EDHOC header: */
26
- #define EDHOC_ALLOW_PRIVATE_ACCESS
27
- #include "edhoc.h"
26
+ /* PSA crypto header: */
27
+ #include <psa/crypto.h>
28
+
29
+ /* Unity headers: */
30
+ #include <unity.h>
31
+ #include <unity_fixture.h>
28
32
 
29
33
  /* Module defines ---------------------------------------------------------- */
30
34
  /* Module types and type definitiones -------------------------------------- */
@@ -49,45 +53,39 @@ cipher_suite_2_make_key_pair_init(void *user_ctx, const void *kid,
49
53
  size_t pub_key_size, size_t *pub_key_len);
50
54
 
51
55
  static const struct edhoc_keys edhoc_keys = {
52
- .generate_key = cipher_suite_2_key_generate,
56
+ .import_key = cipher_suite_2_key_import,
53
57
  .destroy_key = cipher_suite_2_key_destroy,
54
58
  };
55
59
 
56
60
  static const struct edhoc_crypto edhoc_crypto_mocked_init = {
57
61
  .make_key_pair = cipher_suite_2_make_key_pair_init,
62
+ .key_agreement = cipher_suite_2_key_agreement,
63
+ .signature = cipher_suite_2_signature,
64
+ .verify = cipher_suite_2_verify,
65
+ .extract = cipher_suite_2_extract,
66
+ .expand = cipher_suite_2_expand,
67
+ .encrypt = cipher_suite_2_encrypt,
68
+ .decrypt = cipher_suite_2_decrypt,
58
69
  .hash = cipher_suite_2_hash,
59
70
  };
60
71
 
61
72
  static const struct edhoc_crypto edhoc_crypto_mocked_resp = {
73
+ .make_key_pair = cipher_suite_2_make_key_pair,
74
+ .key_agreement = cipher_suite_2_key_agreement,
75
+ .signature = cipher_suite_2_signature,
76
+ .verify = cipher_suite_2_verify,
77
+ .extract = cipher_suite_2_extract,
78
+ .expand = cipher_suite_2_expand,
79
+ .encrypt = cipher_suite_2_encrypt,
80
+ .decrypt = cipher_suite_2_decrypt,
62
81
  .hash = cipher_suite_2_hash,
63
82
  };
64
83
 
65
- /* Static function declarations -------------------------------------------- */
66
-
67
- /**
68
- * \brief Helper function for printing arrays.
69
- */
70
- static inline void print_array(const char *name, const uint8_t *buffer,
71
- size_t buffer_length);
84
+ static int ret = EDHOC_ERROR_GENERIC_ERROR;
72
85
 
86
+ /* Static function declarations -------------------------------------------- */
73
87
  /* Static function definitions --------------------------------------------- */
74
88
 
75
- static inline void print_array(const char *name, const uint8_t *buffer,
76
- size_t buffer_length)
77
- {
78
- printf("%s:\tLEN( %zu )\n", name, buffer_length);
79
-
80
- for (size_t i = 0; i < buffer_length; ++i) {
81
- if (0 == i % 16 && i > 0) {
82
- printf("\n");
83
- }
84
-
85
- printf("%02x ", buffer[i]);
86
- }
87
-
88
- printf("\n\n");
89
- }
90
-
91
89
  static int
92
90
  cipher_suite_2_make_key_pair_init(void *user_ctx, const void *kid,
93
91
  uint8_t *priv_key, size_t priv_key_size,
@@ -112,6 +110,19 @@ cipher_suite_2_make_key_pair_init(void *user_ctx, const void *kid,
112
110
 
113
111
  /* Module interface function definitions ----------------------------------- */
114
112
 
113
+ TEST_GROUP(rfc9528_suites_negotiation);
114
+
115
+ TEST_SETUP(rfc9528_suites_negotiation)
116
+ {
117
+ ret = psa_crypto_init();
118
+ TEST_ASSERT_EQUAL(PSA_SUCCESS, ret);
119
+ }
120
+
121
+ TEST_TEAR_DOWN(rfc9528_suites_negotiation)
122
+ {
123
+ mbedtls_psa_crypto_free();
124
+ }
125
+
115
126
  /*
116
127
  * Test scenario comes from:
117
128
  * - RFC 9528: 6.3.2. Examples
@@ -128,11 +139,9 @@ cipher_suite_2_make_key_pair_init(void *user_ctx, const void *kid,
128
139
  * +--------------------------------------------------------->|
129
140
  * | |
130
141
  */
131
- void test_edhoc_cipher_suites_negotiation_scenario_1(void)
142
+ TEST(rfc9528_suites_negotiation, example_1)
132
143
  {
133
- int ret = EDHOC_ERROR_GENERIC_ERROR;
134
-
135
- const enum edhoc_method method = EDHOC_METHOD_1;
144
+ const enum edhoc_method methods[] = { EDHOC_METHOD_1 };
136
145
  const struct edhoc_cipher_suite csuites_init[] = {
137
146
  [0].value = 5,
138
147
  [0].ecc_key_length = 32,
@@ -148,83 +157,80 @@ void test_edhoc_cipher_suites_negotiation_scenario_1(void)
148
157
  .int_value = 1,
149
158
  };
150
159
 
151
- /**
152
- * \brief 1. Setup initiator context.
153
- */
160
+ /* 1. Setup initiator context. */
154
161
  struct edhoc_context init_ctx = { 0 };
155
162
 
156
163
  ret = edhoc_context_init(&init_ctx);
157
- assert(EDHOC_SUCCESS == ret);
164
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
158
165
 
159
- ret = edhoc_set_method(&init_ctx, method);
160
- assert(EDHOC_SUCCESS == ret);
166
+ ret = edhoc_set_methods(&init_ctx, methods, ARRAY_SIZE(methods));
167
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
161
168
 
162
169
  ret = edhoc_set_cipher_suites(&init_ctx, csuites_init,
163
170
  ARRAY_SIZE(csuites_init));
164
- assert(EDHOC_SUCCESS == ret);
171
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
165
172
 
166
- ret = edhoc_set_connection_id(&init_ctx, conn_id_init);
167
- assert(EDHOC_SUCCESS == ret);
173
+ ret = edhoc_set_connection_id(&init_ctx, &conn_id_init);
174
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
168
175
 
169
- ret = edhoc_bind_keys(&init_ctx, edhoc_keys);
170
- assert(EDHOC_SUCCESS == ret);
176
+ ret = edhoc_bind_keys(&init_ctx, &edhoc_keys);
177
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
171
178
 
172
- ret = edhoc_bind_crypto(&init_ctx, edhoc_crypto_mocked_init);
173
- assert(EDHOC_SUCCESS == ret);
179
+ ret = edhoc_bind_crypto(&init_ctx, &edhoc_crypto_mocked_init);
180
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
174
181
 
175
- /**
176
- * \brief 2. Setup responder context.
177
- */
182
+ /* 2. Setup responder context. */
178
183
  struct edhoc_context resp_ctx = { 0 };
179
184
 
180
185
  ret = edhoc_context_init(&resp_ctx);
181
- assert(EDHOC_SUCCESS == ret);
186
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
182
187
 
183
- ret = edhoc_set_method(&resp_ctx, method);
184
- assert(EDHOC_SUCCESS == ret);
188
+ ret = edhoc_set_methods(&resp_ctx, methods, ARRAY_SIZE(methods));
189
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
185
190
 
186
191
  ret = edhoc_set_cipher_suites(&resp_ctx, csuites_resp,
187
192
  ARRAY_SIZE(csuites_resp));
188
- assert(EDHOC_SUCCESS == ret);
193
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
189
194
 
190
- /**
191
- * \brief 3. Initiator compose message 1.
192
- */
195
+ /* 3. Initiator compose message 1. */
193
196
  size_t msg_1_len = 0;
194
197
  uint8_t msg_1[100] = { 0 };
195
198
 
196
199
  ret = edhoc_message_1_compose(&init_ctx, msg_1, ARRAY_SIZE(msg_1),
197
200
  &msg_1_len);
198
- assert(EDHOC_SUCCESS == ret);
201
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
199
202
 
200
- /**
201
- * \brief 4a. Responder process message 1.
202
- */
203
+ /* 4a. Responder process message 1. */
203
204
  ret = edhoc_message_1_process(&resp_ctx, msg_1, msg_1_len);
204
- assert(EDHOC_ERROR_MSG_1_PROCESS_FAILURE == ret);
205
+ TEST_ASSERT_EQUAL(EDHOC_ERROR_MSG_1_PROCESS_FAILURE, ret);
205
206
 
206
- /**
207
- * \brief 4b. Responder checks EDHOC error code.
208
- */
207
+ /* 4b. Responder checks EDHOC error code. */
209
208
  enum edhoc_error_code error_code_resp = -1;
210
209
  ret = edhoc_error_get_code(&resp_ctx, &error_code_resp);
211
- assert(EDHOC_SUCCESS == ret);
212
- assert(EDHOC_ERROR_CODE_WRONG_SELECTED_CIPHER_SUITE == error_code_resp);
210
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
211
+ TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_WRONG_SELECTED_CIPHER_SUITE,
212
+ error_code_resp);
213
213
 
214
- /**
215
- * \brief 4c. Responder collect his EDHOC cipher suites.
216
- */
214
+ /* 4c. Responder collect his own and peer EDHOC cipher suites. */
217
215
  size_t csuites_len = 0;
218
216
  int32_t csuites[1] = { 0 };
219
- ret = edhoc_error_get_cipher_suites(&resp_ctx, csuites,
220
- ARRAY_SIZE(csuites), &csuites_len);
221
- assert(EDHOC_SUCCESS == ret);
222
- assert(ARRAY_SIZE(csuites_resp) == csuites_len);
223
- assert(csuites_resp[0].value == csuites[0]);
224
-
225
- /**
226
- * \brief 4d. Responder compose error message.
227
- */
217
+ size_t peer_csuites_len = 0;
218
+ int32_t peer_csuites[1] = { 0 };
219
+ ret = edhoc_error_get_cipher_suites(
220
+ &resp_ctx, csuites, ARRAY_SIZE(csuites), &csuites_len,
221
+ peer_csuites, ARRAY_SIZE(peer_csuites), &peer_csuites_len);
222
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
223
+ TEST_ASSERT_EQUAL(ARRAY_SIZE(csuites_resp), csuites_len);
224
+ TEST_ASSERT_EQUAL(csuites_resp[0].value, csuites[0]);
225
+ TEST_ASSERT_EQUAL(ARRAY_SIZE(csuites_init), peer_csuites_len);
226
+ TEST_ASSERT_EQUAL(csuites_init[0].value, peer_csuites[0]);
227
+
228
+ /*
229
+ * Point where responder can compare his and peer cipher suites.
230
+ * After comparison responder is able to send error message with his preferences.
231
+ */
232
+
233
+ /* 4d. Responder compose error message. */
228
234
  size_t msg_err_len = 0;
229
235
  uint8_t msg_err[100] = { 0 };
230
236
 
@@ -236,11 +242,9 @@ void test_edhoc_cipher_suites_negotiation_scenario_1(void)
236
242
  ret = edhoc_message_error_compose(msg_err, ARRAY_SIZE(msg_err),
237
243
  &msg_err_len, error_code_resp,
238
244
  &error_info);
239
- assert(EDHOC_SUCCESS == ret);
245
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
240
246
 
241
- /**
242
- * \brief 5a. Initiator process error message.
243
- */
247
+ /* 5a. Initiator process error message. */
244
248
  enum edhoc_error_code error_code_init = -1;
245
249
  int32_t cipher_suites_init[1] = { 0 };
246
250
  struct edhoc_error_info error_info_init = {
@@ -250,19 +254,20 @@ void test_edhoc_cipher_suites_negotiation_scenario_1(void)
250
254
  };
251
255
  ret = edhoc_message_error_process(msg_err, msg_err_len,
252
256
  &error_code_init, &error_info_init);
253
- assert(EDHOC_SUCCESS == ret);
254
- assert(EDHOC_ERROR_CODE_WRONG_SELECTED_CIPHER_SUITE == error_code_init);
255
- assert(ARRAY_SIZE(csuites_resp) == error_info_init.written_entries);
256
- assert(csuites_resp[0].value == error_info_init.cipher_suites[0]);
257
-
258
- /**
259
- * \brief 5b. Initiator reinitialize context with new cipher suites.
260
- */
257
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
258
+ TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_WRONG_SELECTED_CIPHER_SUITE,
259
+ error_code_init);
260
+ TEST_ASSERT_EQUAL(ARRAY_SIZE(csuites_resp),
261
+ error_info_init.written_entries);
262
+ TEST_ASSERT_EQUAL(csuites_resp[0].value,
263
+ error_info_init.cipher_suites[0]);
264
+
265
+ /* 5b. Initiator reinitialize context with new cipher suites. */
261
266
  ret = edhoc_context_init(&init_ctx);
262
- assert(EDHOC_SUCCESS == ret);
267
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
263
268
 
264
- ret = edhoc_set_method(&init_ctx, method);
265
- assert(EDHOC_SUCCESS == ret);
269
+ ret = edhoc_set_methods(&init_ctx, methods, ARRAY_SIZE(methods));
270
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
266
271
 
267
272
  const struct edhoc_cipher_suite fixed_csuites_init[] = {
268
273
  [0].value = 5, [0].ecc_key_length = 32, [0].hash_length = 32,
@@ -270,56 +275,50 @@ void test_edhoc_cipher_suites_negotiation_scenario_1(void)
270
275
  };
271
276
  ret = edhoc_set_cipher_suites(&init_ctx, fixed_csuites_init,
272
277
  ARRAY_SIZE(fixed_csuites_init));
273
- assert(EDHOC_SUCCESS == ret);
278
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
274
279
 
275
- ret = edhoc_set_connection_id(&init_ctx, conn_id_init);
276
- assert(EDHOC_SUCCESS == ret);
280
+ ret = edhoc_set_connection_id(&init_ctx, &conn_id_init);
281
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
277
282
 
278
- ret = edhoc_bind_keys(&init_ctx, edhoc_keys);
279
- assert(EDHOC_SUCCESS == ret);
283
+ ret = edhoc_bind_keys(&init_ctx, &edhoc_keys);
284
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
280
285
 
281
- ret = edhoc_bind_crypto(&init_ctx, edhoc_crypto_mocked_init);
282
- assert(EDHOC_SUCCESS == ret);
286
+ ret = edhoc_bind_crypto(&init_ctx, &edhoc_crypto_mocked_init);
287
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
283
288
 
284
- /**
285
- * \brief 5c. Initiator again compose message 1.
286
- */
289
+ /* 5c. Initiator again compose message 1. */
287
290
  msg_1_len = 0;
288
291
  memset(msg_1, 0, sizeof(msg_1));
289
292
 
290
293
  ret = edhoc_message_1_compose(&init_ctx, msg_1, ARRAY_SIZE(msg_1),
291
294
  &msg_1_len);
292
- assert(EDHOC_SUCCESS == ret);
295
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
293
296
 
294
- /**
295
- * \brief 6. Responder reinitialize context.
296
- */
297
+ /* 6. Responder reinitialize context. */
297
298
  ret = edhoc_context_init(&resp_ctx);
298
- assert(EDHOC_SUCCESS == ret);
299
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
299
300
 
300
- ret = edhoc_set_method(&resp_ctx, method);
301
- assert(EDHOC_SUCCESS == ret);
301
+ ret = edhoc_set_methods(&resp_ctx, methods, ARRAY_SIZE(methods));
302
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
302
303
 
303
304
  ret = edhoc_set_cipher_suites(&resp_ctx, csuites_resp,
304
305
  ARRAY_SIZE(csuites_resp));
305
- assert(EDHOC_SUCCESS == ret);
306
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
306
307
 
307
- ret = edhoc_bind_keys(&resp_ctx, edhoc_keys);
308
- assert(EDHOC_SUCCESS == ret);
308
+ ret = edhoc_bind_keys(&resp_ctx, &edhoc_keys);
309
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
309
310
 
310
- ret = edhoc_bind_crypto(&resp_ctx, edhoc_crypto_mocked_resp);
311
- assert(EDHOC_SUCCESS == ret);
311
+ ret = edhoc_bind_crypto(&resp_ctx, &edhoc_crypto_mocked_resp);
312
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
312
313
 
313
- /**
314
- * \brief 7. Responder successfully process message 1.
315
- */
314
+ /* 7. Responder successfully process message 1. */
316
315
  ret = edhoc_message_1_process(&resp_ctx, msg_1, msg_1_len);
317
- assert(EDHOC_SUCCESS == ret);
316
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
318
317
 
319
318
  error_code_resp = -1;
320
319
  ret = edhoc_error_get_code(&resp_ctx, &error_code_resp);
321
- assert(EDHOC_SUCCESS == ret);
322
- assert(EDHOC_ERROR_CODE_SUCCESS == error_code_resp);
320
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
321
+ TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_resp);
323
322
  }
324
323
 
325
324
  /*
@@ -338,11 +337,9 @@ void test_edhoc_cipher_suites_negotiation_scenario_1(void)
338
337
  * +--------------------------------------------------------->|
339
338
  * | |
340
339
  */
341
- void test_edhoc_cipher_suites_negotiation_scenario_2(void)
340
+ TEST(rfc9528_suites_negotiation, example_2)
342
341
  {
343
- int ret = EDHOC_ERROR_GENERIC_ERROR;
344
-
345
- const enum edhoc_method method = EDHOC_METHOD_1;
342
+ const enum edhoc_method methods[] = { EDHOC_METHOD_1 };
346
343
  const struct edhoc_cipher_suite csuites_init[] = {
347
344
  [0].value = 5, [0].ecc_key_length = 32, [0].hash_length = 32,
348
345
  [1].value = 6, [1].ecc_key_length = 32, [1].hash_length = 32,
@@ -356,84 +353,82 @@ void test_edhoc_cipher_suites_negotiation_scenario_2(void)
356
353
  .int_value = 1,
357
354
  };
358
355
 
359
- /**
360
- * \brief 1. Setup initiator context.
361
- */
356
+ /* 1. Setup initiator context. */
362
357
  struct edhoc_context init_ctx = { 0 };
363
358
 
364
359
  ret = edhoc_context_init(&init_ctx);
365
- assert(EDHOC_SUCCESS == ret);
360
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
366
361
 
367
- ret = edhoc_set_method(&init_ctx, method);
368
- assert(EDHOC_SUCCESS == ret);
362
+ ret = edhoc_set_methods(&init_ctx, methods, ARRAY_SIZE(methods));
363
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
369
364
 
370
365
  ret = edhoc_set_cipher_suites(&init_ctx, csuites_init,
371
366
  ARRAY_SIZE(csuites_init));
372
- assert(EDHOC_SUCCESS == ret);
367
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
373
368
 
374
- ret = edhoc_set_connection_id(&init_ctx, conn_id_init);
375
- assert(EDHOC_SUCCESS == ret);
369
+ ret = edhoc_set_connection_id(&init_ctx, &conn_id_init);
370
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
376
371
 
377
- ret = edhoc_bind_keys(&init_ctx, edhoc_keys);
378
- assert(EDHOC_SUCCESS == ret);
372
+ ret = edhoc_bind_keys(&init_ctx, &edhoc_keys);
373
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
379
374
 
380
- ret = edhoc_bind_crypto(&init_ctx, edhoc_crypto_mocked_init);
381
- assert(EDHOC_SUCCESS == ret);
375
+ ret = edhoc_bind_crypto(&init_ctx, &edhoc_crypto_mocked_init);
376
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
382
377
 
383
- /**
384
- * \brief 2. Setup responder context.
385
- */
378
+ /* 2. Setup responder context. */
386
379
  struct edhoc_context resp_ctx = { 0 };
387
380
 
388
381
  ret = edhoc_context_init(&resp_ctx);
389
- assert(EDHOC_SUCCESS == ret);
382
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
390
383
 
391
- ret = edhoc_set_method(&resp_ctx, method);
392
- assert(EDHOC_SUCCESS == ret);
384
+ ret = edhoc_set_methods(&resp_ctx, methods, ARRAY_SIZE(methods));
385
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
393
386
 
394
387
  ret = edhoc_set_cipher_suites(&resp_ctx, csuites_resp,
395
388
  ARRAY_SIZE(csuites_resp));
396
- assert(EDHOC_SUCCESS == ret);
389
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
397
390
 
398
- /**
399
- * \brief 3. Initiator compose message 1.
400
- */
391
+ /* 3. Initiator compose message 1. */
401
392
  size_t msg_1_len = 0;
402
393
  uint8_t msg_1[100] = { 0 };
403
394
 
404
395
  ret = edhoc_message_1_compose(&init_ctx, msg_1, ARRAY_SIZE(msg_1),
405
396
  &msg_1_len);
406
- assert(EDHOC_SUCCESS == ret);
397
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
407
398
 
408
- /**
409
- * \brief 4a. Responder process message 1.
410
- */
399
+ /* 4a. Responder process message 1. */
411
400
  ret = edhoc_message_1_process(&resp_ctx, msg_1, msg_1_len);
412
- assert(EDHOC_ERROR_MSG_1_PROCESS_FAILURE == ret);
401
+ TEST_ASSERT_EQUAL(EDHOC_ERROR_MSG_1_PROCESS_FAILURE, ret);
413
402
 
414
- /**
415
- * \brief 4b. Responder checks EDHOC error code.
416
- */
403
+ /* 4b. Responder checks EDHOC error code. */
417
404
  enum edhoc_error_code error_code_resp = -1;
418
405
  ret = edhoc_error_get_code(&resp_ctx, &error_code_resp);
419
- assert(EDHOC_SUCCESS == ret);
420
- assert(EDHOC_ERROR_CODE_WRONG_SELECTED_CIPHER_SUITE == error_code_resp);
406
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
407
+ TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_WRONG_SELECTED_CIPHER_SUITE,
408
+ error_code_resp);
421
409
 
422
- /**
423
- * \brief 4c. Responder collect his EDHOC cipher suites.
424
- */
410
+ /* 4c. Responder collect his own and peer EDHOC cipher suites. */
425
411
  size_t csuites_len = 0;
426
412
  int32_t csuites[2] = { 0 };
427
- ret = edhoc_error_get_cipher_suites(&resp_ctx, csuites,
428
- ARRAY_SIZE(csuites), &csuites_len);
429
- assert(EDHOC_SUCCESS == ret);
430
- assert(ARRAY_SIZE(csuites_resp) == csuites_len);
431
- assert(csuites_resp[0].value == csuites[0]);
432
- assert(csuites_resp[1].value == csuites[1]);
433
-
434
- /**
435
- * \brief 4d. Responder compose error message.
436
- */
413
+ size_t peer_csuites_len = 0;
414
+ int32_t peer_csuites[2] = { 0 };
415
+ ret = edhoc_error_get_cipher_suites(
416
+ &resp_ctx, csuites, ARRAY_SIZE(csuites), &csuites_len,
417
+ peer_csuites, ARRAY_SIZE(peer_csuites), &peer_csuites_len);
418
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
419
+ TEST_ASSERT_EQUAL(ARRAY_SIZE(csuites_resp), csuites_len);
420
+ TEST_ASSERT_EQUAL(csuites_resp[0].value, csuites[0]);
421
+ TEST_ASSERT_EQUAL(csuites_resp[1].value, csuites[1]);
422
+ TEST_ASSERT_EQUAL(ARRAY_SIZE(csuites_init), peer_csuites_len);
423
+ TEST_ASSERT_EQUAL(csuites_init[0].value, peer_csuites[0]);
424
+ TEST_ASSERT_EQUAL(csuites_init[1].value, peer_csuites[1]);
425
+
426
+ /*
427
+ * Point where responder can compare his and peer cipher suites.
428
+ * After comparison responder is able to send error message with his preferences.
429
+ */
430
+
431
+ /* 4d. Responder compose error message. */
437
432
  size_t msg_err_len = 0;
438
433
  uint8_t msg_err[100] = { 0 };
439
434
 
@@ -442,14 +437,13 @@ void test_edhoc_cipher_suites_negotiation_scenario_2(void)
442
437
  .total_entries = ARRAY_SIZE(csuites),
443
438
  .written_entries = csuites_len,
444
439
  };
440
+
445
441
  ret = edhoc_message_error_compose(msg_err, ARRAY_SIZE(msg_err),
446
442
  &msg_err_len, error_code_resp,
447
443
  &error_info);
448
- assert(EDHOC_SUCCESS == ret);
444
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
449
445
 
450
- /**
451
- * \brief 5a. Initiator process error message.
452
- */
446
+ /* 5a. Initiator process error message. */
453
447
  enum edhoc_error_code error_code_init = -1;
454
448
  int32_t cipher_suites_init[2] = { 0 };
455
449
  struct edhoc_error_info error_info_init = {
@@ -457,30 +451,33 @@ void test_edhoc_cipher_suites_negotiation_scenario_2(void)
457
451
  .total_entries = ARRAY_SIZE(cipher_suites_init),
458
452
  .written_entries = 0,
459
453
  };
454
+
460
455
  ret = edhoc_message_error_process(msg_err, msg_err_len,
461
456
  &error_code_init, &error_info_init);
462
- assert(EDHOC_SUCCESS == ret);
463
- assert(EDHOC_ERROR_CODE_WRONG_SELECTED_CIPHER_SUITE == error_code_init);
464
- assert(ARRAY_SIZE(csuites_resp) == error_info_init.written_entries);
465
- assert(csuites_resp[0].value == error_info_init.cipher_suites[0]);
466
- assert(csuites_resp[1].value == error_info_init.cipher_suites[1]);
467
-
468
- /**
469
- * \brief 5b. Initiator reinitialize context with new cipher suites.
470
- */
457
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
458
+ TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_WRONG_SELECTED_CIPHER_SUITE,
459
+ error_code_init);
460
+ TEST_ASSERT_EQUAL(ARRAY_SIZE(csuites_resp),
461
+ error_info_init.written_entries);
462
+ TEST_ASSERT_EQUAL(csuites_resp[0].value,
463
+ error_info_init.cipher_suites[0]);
464
+ TEST_ASSERT_EQUAL(csuites_resp[1].value,
465
+ error_info_init.cipher_suites[1]);
466
+
467
+ /* 5b. Initiator reinitialize context with new cipher suites. */
471
468
  ret = edhoc_context_init(&init_ctx);
472
- assert(EDHOC_SUCCESS == ret);
469
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
473
470
 
474
- ret = edhoc_set_method(&init_ctx, method);
475
- assert(EDHOC_SUCCESS == ret);
471
+ ret = edhoc_set_methods(&init_ctx, methods, ARRAY_SIZE(methods));
472
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
476
473
 
477
- /**
478
- * \note Because zcbor add arrays sizes statically it means that with
479
- * current generated sourcer and header files we support up to 3.
474
+ /*
475
+ * Because zcbor add arrays sizes statically it means that with
476
+ * current generated sourcer and header files we support up to 3.
480
477
  *
481
- * #define DEFAULT_MAX_QTY 3
478
+ * #define DEFAULT_MAX_QTY 3
482
479
  *
483
- * To avoid regeneration to all files, cipher suite 5 is missed.
480
+ * To avoid regeneration to all files, cipher suite 5 is missed.
484
481
  */
485
482
  const struct edhoc_cipher_suite fixed_csuites_init[] = {
486
483
  /* [0].value = 5, [0].ecc_key_length = 32, [0].hash_length = 32, */
@@ -491,54 +488,54 @@ void test_edhoc_cipher_suites_negotiation_scenario_2(void)
491
488
  };
492
489
  ret = edhoc_set_cipher_suites(&init_ctx, fixed_csuites_init,
493
490
  ARRAY_SIZE(fixed_csuites_init));
494
- assert(EDHOC_SUCCESS == ret);
491
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
495
492
 
496
- ret = edhoc_set_connection_id(&init_ctx, conn_id_init);
497
- assert(EDHOC_SUCCESS == ret);
493
+ ret = edhoc_set_connection_id(&init_ctx, &conn_id_init);
494
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
498
495
 
499
- ret = edhoc_bind_keys(&init_ctx, edhoc_keys);
500
- assert(EDHOC_SUCCESS == ret);
496
+ ret = edhoc_bind_keys(&init_ctx, &edhoc_keys);
497
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
501
498
 
502
- ret = edhoc_bind_crypto(&init_ctx, edhoc_crypto_mocked_init);
503
- assert(EDHOC_SUCCESS == ret);
499
+ ret = edhoc_bind_crypto(&init_ctx, &edhoc_crypto_mocked_init);
500
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
504
501
 
505
- /**
506
- * \brief 5c. Initiator again compose message 1.
507
- */
502
+ /* 5c. Initiator again compose message 1. */
508
503
  msg_1_len = 0;
509
504
  memset(msg_1, 0, sizeof(msg_1));
510
505
 
511
506
  ret = edhoc_message_1_compose(&init_ctx, msg_1, ARRAY_SIZE(msg_1),
512
507
  &msg_1_len);
513
- assert(EDHOC_SUCCESS == ret);
508
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
514
509
 
515
- /**
516
- * \brief 6. Responder reinitialize context.
517
- */
510
+ /* 6. Responder reinitialize context. */
518
511
  ret = edhoc_context_init(&resp_ctx);
519
- assert(EDHOC_SUCCESS == ret);
512
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
520
513
 
521
- ret = edhoc_set_method(&resp_ctx, method);
522
- assert(EDHOC_SUCCESS == ret);
514
+ ret = edhoc_set_methods(&resp_ctx, methods, ARRAY_SIZE(methods));
515
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
523
516
 
524
517
  ret = edhoc_set_cipher_suites(&resp_ctx, csuites_resp,
525
518
  ARRAY_SIZE(csuites_resp));
526
- assert(EDHOC_SUCCESS == ret);
519
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
527
520
 
528
- ret = edhoc_bind_keys(&resp_ctx, edhoc_keys);
529
- assert(EDHOC_SUCCESS == ret);
521
+ ret = edhoc_bind_keys(&resp_ctx, &edhoc_keys);
522
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
530
523
 
531
- ret = edhoc_bind_crypto(&resp_ctx, edhoc_crypto_mocked_resp);
532
- assert(EDHOC_SUCCESS == ret);
524
+ ret = edhoc_bind_crypto(&resp_ctx, &edhoc_crypto_mocked_resp);
525
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
533
526
 
534
- /**
535
- * \brief 7. Responder successfully process message 1.
536
- */
527
+ /* 7. Responder successfully process message 1. */
537
528
  ret = edhoc_message_1_process(&resp_ctx, msg_1, msg_1_len);
538
- assert(EDHOC_SUCCESS == ret);
529
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
539
530
 
540
531
  error_code_resp = -1;
541
532
  ret = edhoc_error_get_code(&resp_ctx, &error_code_resp);
542
- assert(EDHOC_SUCCESS == ret);
543
- assert(EDHOC_ERROR_CODE_SUCCESS == error_code_resp);
533
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
534
+ TEST_ASSERT_EQUAL(EDHOC_ERROR_CODE_SUCCESS, error_code_resp);
535
+ }
536
+
537
+ TEST_GROUP_RUNNER(rfc9528_suites_negotiation)
538
+ {
539
+ RUN_TEST_CASE(rfc9528_suites_negotiation, example_1);
540
+ RUN_TEST_CASE(rfc9528_suites_negotiation, example_2);
544
541
  }