edhoc 1.0.4 → 1.1.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 (314) hide show
  1. package/README.md +170 -0
  2. package/binding.gyp +13 -11
  3. package/dist/bindings.d.ts +5 -0
  4. package/dist/bindings.d.ts.map +1 -0
  5. package/dist/bindings.js +10 -0
  6. package/dist/crypto.d.ts +29 -0
  7. package/dist/crypto.d.ts.map +1 -0
  8. package/dist/crypto.js +205 -0
  9. package/dist/edhoc.d.ts +368 -0
  10. package/dist/edhoc.d.ts.map +1 -0
  11. package/dist/edhoc.js +76 -0
  12. package/dist/index.d.ts +4 -0
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.js +19 -0
  15. package/dist/x509credentials.d.ts +20 -0
  16. package/dist/x509credentials.d.ts.map +1 -0
  17. package/dist/x509credentials.js +140 -0
  18. package/external/libedhoc/backends/cbor/include/backend_cbor_bstr_type_decode.h +1 -1
  19. package/external/libedhoc/backends/cbor/include/backend_cbor_bstr_type_encode.h +1 -1
  20. package/external/libedhoc/backends/cbor/include/backend_cbor_bstr_type_types.h +1 -1
  21. package/external/libedhoc/backends/cbor/include/backend_cbor_ead_decode.h +2 -2
  22. package/external/libedhoc/backends/cbor/include/backend_cbor_ead_encode.h +2 -2
  23. package/external/libedhoc/backends/cbor/include/backend_cbor_edhoc_types.h +48 -43
  24. package/external/libedhoc/backends/cbor/include/backend_cbor_enc_structure_decode.h +1 -1
  25. package/external/libedhoc/backends/cbor/include/backend_cbor_enc_structure_encode.h +1 -1
  26. package/external/libedhoc/backends/cbor/include/backend_cbor_enc_structure_types.h +3 -3
  27. package/external/libedhoc/backends/cbor/include/backend_cbor_id_cred_x_decode.h +1 -1
  28. package/external/libedhoc/backends/cbor/include/backend_cbor_id_cred_x_encode.h +1 -1
  29. package/external/libedhoc/backends/cbor/include/backend_cbor_info_decode.h +1 -1
  30. package/external/libedhoc/backends/cbor/include/backend_cbor_info_encode.h +1 -1
  31. package/external/libedhoc/backends/cbor/include/backend_cbor_int_type_decode.h +1 -1
  32. package/external/libedhoc/backends/cbor/include/backend_cbor_int_type_encode.h +1 -1
  33. package/external/libedhoc/backends/cbor/include/backend_cbor_int_type_types.h +1 -1
  34. package/external/libedhoc/backends/cbor/include/backend_cbor_message_1_decode.h +1 -1
  35. package/external/libedhoc/backends/cbor/include/backend_cbor_message_1_encode.h +1 -1
  36. package/external/libedhoc/backends/cbor/include/backend_cbor_message_2_decode.h +1 -1
  37. package/external/libedhoc/backends/cbor/include/backend_cbor_message_2_encode.h +1 -1
  38. package/external/libedhoc/backends/cbor/include/backend_cbor_message_3_decode.h +1 -1
  39. package/external/libedhoc/backends/cbor/include/backend_cbor_message_3_encode.h +1 -1
  40. package/external/libedhoc/backends/cbor/include/backend_cbor_message_4_decode.h +1 -1
  41. package/external/libedhoc/backends/cbor/include/backend_cbor_message_4_encode.h +1 -1
  42. package/external/libedhoc/backends/cbor/include/backend_cbor_message_error_decode.h +1 -1
  43. package/external/libedhoc/backends/cbor/include/backend_cbor_message_error_encode.h +1 -1
  44. package/external/libedhoc/backends/cbor/include/backend_cbor_plaintext_2_decode.h +1 -1
  45. package/external/libedhoc/backends/cbor/include/backend_cbor_plaintext_2_encode.h +1 -1
  46. package/external/libedhoc/backends/cbor/include/backend_cbor_plaintext_3_decode.h +1 -1
  47. package/external/libedhoc/backends/cbor/include/backend_cbor_plaintext_3_encode.h +1 -1
  48. package/external/libedhoc/backends/cbor/include/backend_cbor_plaintext_4_decode.h +3 -3
  49. package/external/libedhoc/backends/cbor/include/backend_cbor_plaintext_4_encode.h +3 -3
  50. package/external/libedhoc/backends/cbor/include/backend_cbor_sig_structure_decode.h +1 -1
  51. package/external/libedhoc/backends/cbor/include/backend_cbor_sig_structure_encode.h +1 -1
  52. package/external/libedhoc/backends/cbor/include/backend_cbor_sig_structure_types.h +4 -4
  53. package/external/libedhoc/backends/cbor/include/backend_cbor_x509_types.h +93 -83
  54. package/external/libedhoc/backends/cbor/src/backend_cbor_bstr_type_decode.c +11 -20
  55. package/external/libedhoc/backends/cbor/src/backend_cbor_bstr_type_encode.c +11 -20
  56. package/external/libedhoc/backends/cbor/src/backend_cbor_ead_decode.c +27 -32
  57. package/external/libedhoc/backends/cbor/src/backend_cbor_ead_encode.c +27 -32
  58. package/external/libedhoc/backends/cbor/src/backend_cbor_enc_structure_decode.c +14 -23
  59. package/external/libedhoc/backends/cbor/src/backend_cbor_enc_structure_encode.c +14 -23
  60. package/external/libedhoc/backends/cbor/src/backend_cbor_id_cred_x_decode.c +63 -52
  61. package/external/libedhoc/backends/cbor/src/backend_cbor_id_cred_x_encode.c +62 -51
  62. package/external/libedhoc/backends/cbor/src/backend_cbor_info_decode.c +14 -23
  63. package/external/libedhoc/backends/cbor/src/backend_cbor_info_encode.c +14 -23
  64. package/external/libedhoc/backends/cbor/src/backend_cbor_int_type_decode.c +11 -20
  65. package/external/libedhoc/backends/cbor/src/backend_cbor_int_type_encode.c +11 -20
  66. package/external/libedhoc/backends/cbor/src/backend_cbor_message_1_decode.c +54 -51
  67. package/external/libedhoc/backends/cbor/src/backend_cbor_message_1_encode.c +54 -51
  68. package/external/libedhoc/backends/cbor/src/backend_cbor_message_2_decode.c +11 -20
  69. package/external/libedhoc/backends/cbor/src/backend_cbor_message_2_encode.c +11 -20
  70. package/external/libedhoc/backends/cbor/src/backend_cbor_message_3_decode.c +11 -20
  71. package/external/libedhoc/backends/cbor/src/backend_cbor_message_3_encode.c +11 -20
  72. package/external/libedhoc/backends/cbor/src/backend_cbor_message_4_decode.c +11 -20
  73. package/external/libedhoc/backends/cbor/src/backend_cbor_message_4_encode.c +11 -20
  74. package/external/libedhoc/backends/cbor/src/backend_cbor_message_error_decode.c +36 -37
  75. package/external/libedhoc/backends/cbor/src/backend_cbor_message_error_encode.c +36 -37
  76. package/external/libedhoc/backends/cbor/src/backend_cbor_plaintext_2_decode.c +103 -80
  77. package/external/libedhoc/backends/cbor/src/backend_cbor_plaintext_2_encode.c +102 -79
  78. package/external/libedhoc/backends/cbor/src/backend_cbor_plaintext_3_decode.c +99 -76
  79. package/external/libedhoc/backends/cbor/src/backend_cbor_plaintext_3_encode.c +98 -75
  80. package/external/libedhoc/backends/cbor/src/backend_cbor_plaintext_4_decode.c +40 -41
  81. package/external/libedhoc/backends/cbor/src/backend_cbor_plaintext_4_encode.c +40 -41
  82. package/external/libedhoc/backends/cbor/src/backend_cbor_sig_structure_decode.c +15 -24
  83. package/external/libedhoc/backends/cbor/src/backend_cbor_sig_structure_encode.c +15 -24
  84. package/external/libedhoc/externals/Unity/examples/example_1/src/ProductionCode.c +31 -0
  85. package/external/libedhoc/externals/Unity/examples/example_1/src/ProductionCode.h +10 -0
  86. package/external/libedhoc/externals/Unity/examples/example_1/src/ProductionCode2.c +18 -0
  87. package/external/libedhoc/externals/Unity/examples/example_1/src/ProductionCode2.h +9 -0
  88. package/external/libedhoc/externals/Unity/examples/example_1/test/TestProductionCode.c +69 -0
  89. package/external/libedhoc/externals/Unity/examples/example_1/test/TestProductionCode2.c +38 -0
  90. package/external/libedhoc/externals/Unity/examples/example_1/test/test_runners/TestProductionCode2_Runner.c +53 -0
  91. package/external/libedhoc/externals/Unity/examples/example_1/test/test_runners/TestProductionCode_Runner.c +57 -0
  92. package/external/libedhoc/externals/Unity/examples/example_2/src/ProductionCode.c +31 -0
  93. package/external/libedhoc/externals/Unity/examples/example_2/src/ProductionCode.h +10 -0
  94. package/external/libedhoc/externals/Unity/examples/example_2/src/ProductionCode2.c +18 -0
  95. package/external/libedhoc/externals/Unity/examples/example_2/src/ProductionCode2.h +9 -0
  96. package/external/libedhoc/externals/Unity/examples/example_2/test/TestProductionCode.c +71 -0
  97. package/external/libedhoc/externals/Unity/examples/example_2/test/TestProductionCode2.c +40 -0
  98. package/external/libedhoc/externals/Unity/examples/example_2/test/test_runners/TestProductionCode2_Runner.c +16 -0
  99. package/external/libedhoc/externals/Unity/examples/example_2/test/test_runners/TestProductionCode_Runner.c +18 -0
  100. package/external/libedhoc/externals/Unity/examples/example_2/test/test_runners/all_tests.c +19 -0
  101. package/external/libedhoc/externals/Unity/examples/example_3/helper/UnityHelper.c +17 -0
  102. package/external/libedhoc/externals/Unity/examples/example_3/helper/UnityHelper.h +19 -0
  103. package/external/libedhoc/externals/Unity/examples/example_3/src/ProductionCode.c +31 -0
  104. package/external/libedhoc/externals/Unity/examples/example_3/src/ProductionCode.h +10 -0
  105. package/external/libedhoc/externals/Unity/examples/example_3/src/ProductionCode2.c +18 -0
  106. package/external/libedhoc/externals/Unity/examples/example_3/src/ProductionCode2.h +9 -0
  107. package/external/libedhoc/externals/Unity/examples/example_3/test/TestProductionCode.c +69 -0
  108. package/external/libedhoc/externals/Unity/examples/example_3/test/TestProductionCode2.c +38 -0
  109. package/external/libedhoc/externals/Unity/examples/example_4/src/ProductionCode.c +31 -0
  110. package/external/libedhoc/externals/Unity/examples/example_4/src/ProductionCode.h +10 -0
  111. package/external/libedhoc/externals/Unity/examples/example_4/src/ProductionCode2.c +18 -0
  112. package/external/libedhoc/externals/Unity/examples/example_4/src/ProductionCode2.h +9 -0
  113. package/external/libedhoc/externals/Unity/examples/example_4/test/TestProductionCode.c +70 -0
  114. package/external/libedhoc/externals/Unity/examples/example_4/test/TestProductionCode2.c +42 -0
  115. package/external/libedhoc/externals/Unity/examples/example_4/test/test_runners/TestProductionCode2_Runner.c +53 -0
  116. package/external/libedhoc/externals/Unity/examples/example_4/test/test_runners/TestProductionCode_Runner.c +57 -0
  117. package/external/libedhoc/externals/Unity/examples/unity_config.h +251 -0
  118. package/external/libedhoc/externals/Unity/extras/bdd/src/unity_bdd.h +44 -0
  119. package/external/libedhoc/externals/Unity/extras/bdd/test/test_bdd.c +129 -0
  120. package/external/libedhoc/externals/Unity/extras/fixture/src/unity_fixture.c +310 -0
  121. package/external/libedhoc/externals/Unity/extras/fixture/src/unity_fixture.h +95 -0
  122. package/external/libedhoc/externals/Unity/extras/fixture/src/unity_fixture_internals.h +51 -0
  123. package/external/libedhoc/externals/Unity/extras/fixture/test/main/AllTests.c +20 -0
  124. package/external/libedhoc/externals/Unity/extras/fixture/test/template_fixture_tests.c +40 -0
  125. package/external/libedhoc/externals/Unity/extras/fixture/test/unity_fixture_Test.c +246 -0
  126. package/external/libedhoc/externals/Unity/extras/fixture/test/unity_fixture_TestRunner.c +33 -0
  127. package/external/libedhoc/externals/Unity/extras/memory/src/unity_memory.c +203 -0
  128. package/external/libedhoc/externals/Unity/extras/memory/src/unity_memory.h +61 -0
  129. package/external/libedhoc/externals/Unity/extras/memory/test/unity_memory_Test.c +326 -0
  130. package/external/libedhoc/externals/Unity/extras/memory/test/unity_memory_TestRunner.c +50 -0
  131. package/external/libedhoc/externals/Unity/extras/memory/test/unity_output_Spy.c +57 -0
  132. package/external/libedhoc/externals/Unity/extras/memory/test/unity_output_Spy.h +17 -0
  133. package/external/libedhoc/externals/Unity/src/unity.c +2501 -0
  134. package/external/libedhoc/externals/Unity/src/unity.h +698 -0
  135. package/external/libedhoc/externals/Unity/src/unity_internals.h +1183 -0
  136. package/external/libedhoc/externals/Unity/test/expectdata/testsample_cmd.c +61 -0
  137. package/external/libedhoc/externals/Unity/test/expectdata/testsample_def.c +57 -0
  138. package/external/libedhoc/externals/Unity/test/expectdata/testsample_head1.c +55 -0
  139. package/external/libedhoc/externals/Unity/test/expectdata/testsample_head1.h +15 -0
  140. package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_cmd.c +80 -0
  141. package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_def.c +76 -0
  142. package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_head1.c +75 -0
  143. package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_head1.h +13 -0
  144. package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_new1.c +89 -0
  145. package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_new2.c +89 -0
  146. package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_param.c +77 -0
  147. package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_run1.c +89 -0
  148. package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_run2.c +89 -0
  149. package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_yaml.c +90 -0
  150. package/external/libedhoc/externals/Unity/test/expectdata/testsample_new1.c +67 -0
  151. package/external/libedhoc/externals/Unity/test/expectdata/testsample_new2.c +70 -0
  152. package/external/libedhoc/externals/Unity/test/expectdata/testsample_param.c +58 -0
  153. package/external/libedhoc/externals/Unity/test/expectdata/testsample_run1.c +67 -0
  154. package/external/libedhoc/externals/Unity/test/expectdata/testsample_run2.c +70 -0
  155. package/external/libedhoc/externals/Unity/test/expectdata/testsample_yaml.c +71 -0
  156. package/external/libedhoc/externals/Unity/test/testdata/CException.h +18 -0
  157. package/external/libedhoc/externals/Unity/test/testdata/Defs.h +16 -0
  158. package/external/libedhoc/externals/Unity/test/testdata/cmock.h +21 -0
  159. package/external/libedhoc/externals/Unity/test/testdata/mockMock.h +20 -0
  160. package/external/libedhoc/externals/Unity/test/testdata/testRunnerGenerator.c +204 -0
  161. package/external/libedhoc/externals/Unity/test/testdata/testRunnerGeneratorSmall.c +73 -0
  162. package/external/libedhoc/externals/Unity/test/testdata/testRunnerGeneratorWithMocks.c +200 -0
  163. package/external/libedhoc/externals/Unity/test/tests/self_assessment_utils.h +151 -0
  164. package/external/libedhoc/externals/Unity/test/tests/test_unity_arrays.c +2941 -0
  165. package/external/libedhoc/externals/Unity/test/tests/test_unity_core.c +375 -0
  166. package/external/libedhoc/externals/Unity/test/tests/test_unity_doubles.c +1285 -0
  167. package/external/libedhoc/externals/Unity/test/tests/test_unity_floats.c +1395 -0
  168. package/external/libedhoc/externals/Unity/test/tests/test_unity_integers.c +2863 -0
  169. package/external/libedhoc/externals/Unity/test/tests/test_unity_integers_64.c +783 -0
  170. package/external/libedhoc/externals/Unity/test/tests/test_unity_memory.c +82 -0
  171. package/external/libedhoc/externals/Unity/test/tests/test_unity_parameterized.c +309 -0
  172. package/external/libedhoc/externals/Unity/test/tests/test_unity_parameterizedDemo.c +28 -0
  173. package/external/libedhoc/externals/Unity/test/tests/test_unity_strings.c +330 -0
  174. package/external/libedhoc/externals/Unity/test/tests/types_for_test.h +21 -0
  175. package/external/libedhoc/externals/zcbor/include/zcbor_common.h +147 -60
  176. package/external/libedhoc/externals/zcbor/include/zcbor_decode.h +291 -202
  177. package/external/libedhoc/externals/zcbor/include/zcbor_encode.h +100 -156
  178. package/external/libedhoc/externals/zcbor/include/zcbor_print.h +165 -0
  179. package/external/libedhoc/externals/zcbor/samples/hello_world/src/main.c +1 -1
  180. package/external/libedhoc/externals/zcbor/samples/pet/include/pet_decode.h +1 -1
  181. package/external/libedhoc/externals/zcbor/samples/pet/include/pet_encode.h +1 -1
  182. package/external/libedhoc/externals/zcbor/samples/pet/include/pet_types.h +4 -4
  183. package/external/libedhoc/externals/zcbor/samples/pet/src/main.c +4 -4
  184. package/external/libedhoc/externals/zcbor/samples/pet/src/pet_decode.c +15 -24
  185. package/external/libedhoc/externals/zcbor/samples/pet/src/pet_encode.c +14 -23
  186. package/external/libedhoc/externals/zcbor/src/zcbor_common.c +202 -29
  187. package/external/libedhoc/externals/zcbor/src/zcbor_decode.c +633 -173
  188. package/external/libedhoc/externals/zcbor/src/zcbor_encode.c +71 -184
  189. package/external/libedhoc/externals/zcbor/tests/decode/test1_suit_old_formats/src/main.c +152 -153
  190. package/external/libedhoc/externals/zcbor/tests/decode/test2_suit/src/main.c +64 -64
  191. package/external/libedhoc/externals/zcbor/tests/decode/test3_simple/src/main.c +15 -16
  192. package/external/libedhoc/externals/zcbor/tests/decode/test5_corner_cases/src/main.c +228 -84
  193. package/external/libedhoc/externals/zcbor/tests/decode/test7_suit9_simple/src/main.c +9 -9
  194. package/external/libedhoc/externals/zcbor/tests/decode/test8_suit12/src/main.c +0 -1
  195. package/external/libedhoc/externals/zcbor/tests/decode/test9_manifest14/src/main.c +172 -173
  196. package/external/libedhoc/externals/zcbor/tests/encode/test1_suit/src/main.c +73 -73
  197. package/external/libedhoc/externals/zcbor/tests/encode/test2_simple/src/main.c +1 -2
  198. package/external/libedhoc/externals/zcbor/tests/encode/test3_corner_cases/src/main.c +83 -56
  199. package/external/libedhoc/externals/zcbor/tests/encode/test4_senml/src/main.c +15 -16
  200. package/external/libedhoc/externals/zcbor/tests/fuzz/fuzz_everything.c +12 -0
  201. package/external/libedhoc/externals/zcbor/tests/fuzz/fuzz_manifest12.c +69 -69
  202. package/external/libedhoc/externals/zcbor/tests/unit/test1_unit_tests/src/main.c +448 -55
  203. package/external/libedhoc/externals/zcbor/tests/unit/test3_float16/src/main.c +49 -48
  204. package/external/libedhoc/include/edhoc.h +348 -54
  205. package/external/libedhoc/include/edhoc_common.h +289 -0
  206. package/external/libedhoc/include/edhoc_context.h +60 -35
  207. package/external/libedhoc/include/edhoc_credentials.h +55 -7
  208. package/external/libedhoc/include/edhoc_crypto.h +10 -10
  209. package/external/libedhoc/include/edhoc_ead.h +13 -10
  210. package/external/libedhoc/include/edhoc_macros.h +20 -11
  211. package/external/libedhoc/include/edhoc_values.h +2 -2
  212. package/external/libedhoc/library/edhoc.c +70 -36
  213. package/external/libedhoc/library/edhoc_common.c +1314 -0
  214. package/external/libedhoc/library/edhoc_exporter.c +45 -46
  215. package/external/libedhoc/library/edhoc_message_1.c +107 -72
  216. package/external/libedhoc/library/edhoc_message_2.c +396 -1693
  217. package/external/libedhoc/library/edhoc_message_3.c +465 -1656
  218. package/external/libedhoc/library/edhoc_message_4.c +93 -91
  219. package/external/libedhoc/library/edhoc_message_error.c +41 -41
  220. package/external/libedhoc/tests/include/{cipher_suites/cipher_suite_0.h → cipher_suite_0.h} +131 -134
  221. package/external/libedhoc/tests/include/{cipher_suites/cipher_suite_2.h → cipher_suite_2.h} +139 -140
  222. package/external/libedhoc/tests/include/{edhoc_trace_1/test_vector_1.h → test_vector_rfc9529_chapter_2.h} +786 -738
  223. package/external/libedhoc/tests/include/{edhoc_trace_2/test_vector_2.h → test_vector_rfc9529_chapter_3.h} +14 -10
  224. 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
  225. 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
  226. 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
  227. 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
  228. package/external/libedhoc/tests/src/{cipher_suites/cipher_suite_0.c → cipher_suite_0.c} +445 -447
  229. package/external/libedhoc/tests/src/{cipher_suites/cipher_suite_2.c → cipher_suite_2.c} +600 -600
  230. package/external/libedhoc/tests/src/module_test_api.c +430 -0
  231. package/external/libedhoc/tests/src/module_test_cipher_suite_0.c +395 -0
  232. package/external/libedhoc/tests/src/module_test_cipher_suite_2.c +392 -0
  233. package/external/libedhoc/tests/src/{error_message/test_edhoc_error_message.c → module_test_error_message.c} +94 -69
  234. package/external/libedhoc/tests/src/module_test_main.c +49 -0
  235. package/external/libedhoc/tests/src/{cipher_suite_negotiation/test_edhoc_cipher_suite_negotiation.c → module_test_rfc9528_suites_negotiation.c} +224 -227
  236. package/external/libedhoc/tests/src/module_test_rfc9529_chapter_2.c +2681 -0
  237. package/external/libedhoc/tests/src/module_test_rfc9529_chapter_3.c +1635 -0
  238. package/external/libedhoc/tests/src/module_test_x5chain_sign_keys_suite_0.c +1135 -0
  239. package/external/libedhoc/tests/src/module_test_x5chain_sign_keys_suite_2.c +1249 -0
  240. package/external/libedhoc/tests/src/module_test_x5chain_static_dh_keys_suite_2.c +798 -0
  241. package/external/libedhoc/tests/src/module_test_x5t_sign_keys_suite_2.c +956 -0
  242. package/include/EdhocComposeAsyncWorker.h +8 -6
  243. package/include/EdhocCredentialManager.h +16 -11
  244. package/include/EdhocCryptoManager.h +28 -21
  245. package/include/EdhocEadManager.h +3 -6
  246. package/include/{EdhocExportAsyncWorker.h → EdhocExportOscoreAsyncWorker.h} +20 -17
  247. package/include/EdhocKeyExporterAsyncWorker.h +76 -0
  248. package/include/EdhocKeyUpdateAsyncWorker.h +72 -0
  249. package/include/EdhocProcessAsyncWorker.h +14 -10
  250. package/include/LibEDHOC.h +44 -20
  251. package/include/UserContext.h +7 -9
  252. package/include/Utils.h +31 -27
  253. package/package.json +14 -3
  254. package/prebuilds/android-arm/edhoc.armv7.node +0 -0
  255. package/prebuilds/android-arm64/edhoc.armv8.node +0 -0
  256. package/prebuilds/darwin-arm64/edhoc.node +0 -0
  257. package/prebuilds/darwin-x64/edhoc.node +0 -0
  258. package/prebuilds/linux-arm/edhoc.armv6.node +0 -0
  259. package/prebuilds/linux-arm/edhoc.armv7.node +0 -0
  260. package/prebuilds/linux-arm64/edhoc.armv8.node +0 -0
  261. package/prebuilds/linux-x64/edhoc.glibc.node +0 -0
  262. package/prebuilds/linux-x64/edhoc.musl.node +0 -0
  263. package/prebuilds/win32-ia32/edhoc.node +0 -0
  264. package/prebuilds/win32-x64/edhoc.node +0 -0
  265. package/src/EdhocComposeAsyncWorker.cpp +18 -35
  266. package/src/EdhocCredentialManager.cpp +160 -187
  267. package/src/EdhocCryptoManager.cpp +386 -586
  268. package/src/EdhocEadManager.cpp +10 -18
  269. package/src/EdhocExportOscoreAsyncWorker.cpp +77 -0
  270. package/src/EdhocKeyExporterAsyncWorker.cpp +49 -0
  271. package/src/EdhocKeyUpdateAsyncWorker.cpp +41 -0
  272. package/src/EdhocProcessAsyncWorker.cpp +72 -19
  273. package/src/LibEDHOC.cpp +213 -174
  274. package/src/Suites.cpp +39 -72
  275. package/src/Utils.cpp +32 -56
  276. package/test/basic.test.ts +64 -0
  277. package/test/vectors.test.ts +111 -0
  278. package/external/libedhoc/externals/zcbor/include/zcbor_debug.h +0 -69
  279. package/external/libedhoc/tests/include/cipher_suite_negotiation/test_edhoc_cipher_suite_negotiation.h +0 -37
  280. package/external/libedhoc/tests/include/cipher_suites/test_cipher_suite_0.h +0 -48
  281. package/external/libedhoc/tests/include/cipher_suites/test_cipher_suite_2.h +0 -48
  282. package/external/libedhoc/tests/include/edhoc_trace_1/authentication_credentials_1.h +0 -60
  283. package/external/libedhoc/tests/include/edhoc_trace_1/test_edhoc_handshake_1.h +0 -208
  284. package/external/libedhoc/tests/include/edhoc_trace_1/test_edhoc_handshake_ead_1.h +0 -59
  285. package/external/libedhoc/tests/include/edhoc_trace_2/authentication_credentials_2.h +0 -60
  286. package/external/libedhoc/tests/include/edhoc_trace_2/test_edhoc_handshake_2.h +0 -199
  287. package/external/libedhoc/tests/include/error_message/test_edhoc_error_message.h +0 -48
  288. package/external/libedhoc/tests/include/x509_chain_cs_0/authentication_credentials_x5chain_cs_0.h +0 -92
  289. package/external/libedhoc/tests/include/x509_chain_cs_0/test_edhoc_handshake_x5chain_cs_0.h +0 -96
  290. package/external/libedhoc/tests/include/x509_chain_cs_2/authentication_credentials_x5chain_cs_2.h +0 -58
  291. package/external/libedhoc/tests/include/x509_chain_cs_2/test_edhoc_handshake_x5chain_cs_2.h +0 -56
  292. package/external/libedhoc/tests/include/x509_chain_cs_2/test_edhoc_handshake_x5chain_cs_2_ead.h +0 -57
  293. package/external/libedhoc/tests/include/x509_chain_cs_2_static_dh/authentication_credentials_x5chain_cs_2_static_dh.h +0 -59
  294. package/external/libedhoc/tests/include/x509_chain_cs_2_static_dh/test_edhoc_handshake_x5chain_cs_2_static_dh_ead.h +0 -57
  295. package/external/libedhoc/tests/include/x509_hash_cs_2/authentication_credentials_x5t_cs_2.h +0 -60
  296. package/external/libedhoc/tests/include/x509_hash_cs_2/test_edhoc_handshake_x5t_cs_2_ead.h +0 -57
  297. package/external/libedhoc/tests/src/cipher_suites/test_cipher_suite_0.c +0 -475
  298. package/external/libedhoc/tests/src/cipher_suites/test_cipher_suite_2.c +0 -473
  299. package/external/libedhoc/tests/src/edhoc_trace_1/authentication_credentials_1.c +0 -252
  300. package/external/libedhoc/tests/src/edhoc_trace_1/test_edhoc_handshake_1.c +0 -1829
  301. package/external/libedhoc/tests/src/edhoc_trace_1/test_edhoc_handshake_ead_1.c +0 -1247
  302. package/external/libedhoc/tests/src/edhoc_trace_2/authentication_credentials_2.c +0 -170
  303. package/external/libedhoc/tests/src/edhoc_trace_2/test_edhoc_handshake_2.c +0 -1783
  304. package/external/libedhoc/tests/src/tests.c +0 -228
  305. package/external/libedhoc/tests/src/x509_chain_cs_0/authentication_credentials_x5chain_cs_0.c +0 -332
  306. package/external/libedhoc/tests/src/x509_chain_cs_0/test_edhoc_handshake_x5chain_cs_0.c +0 -936
  307. package/external/libedhoc/tests/src/x509_chain_cs_2/authentication_credentials_x5chain_cs_2.c +0 -166
  308. package/external/libedhoc/tests/src/x509_chain_cs_2/test_edhoc_handshake_x5chain_cs_2.c +0 -587
  309. package/external/libedhoc/tests/src/x509_chain_cs_2/test_edhoc_handshake_x5chain_cs_2_ead.c +0 -917
  310. package/external/libedhoc/tests/src/x509_chain_cs_2_static_dh/authentication_credentials_x5chain_cs_2_static_dh.c +0 -186
  311. package/external/libedhoc/tests/src/x509_chain_cs_2_static_dh/test_edhoc_handshake_x5chain_cs_2_static_dh_ead.c +0 -743
  312. package/external/libedhoc/tests/src/x509_hash_cs_2/authentication_credentials_x5t_cs_2.c +0 -261
  313. package/external/libedhoc/tests/src/x509_hash_cs_2/test_edhoc_handshake_x5t_cs_2_ead.c +0 -854
  314. package/src/EdhocExportAsyncWorker.cpp +0 -82
@@ -0,0 +1,392 @@
1
+ /**
2
+ * \file module_test_cipher_suite_2.c
3
+ * \author Kamil Kielbasa
4
+ * \brief Module tests for cipher suite 2.
5
+ * \version 0.6
6
+ * \date 2024-08-05
7
+ *
8
+ * \copyright Copyright (c) 2024
9
+ *
10
+ */
11
+
12
+ /* Include files ----------------------------------------------------------- */
13
+
14
+ /* Cipher suite 0 header: */
15
+ #include "cipher_suite_2.h"
16
+
17
+ /* Standard library headers: */
18
+ #include <stdint.h>
19
+ #include <stddef.h>
20
+ #include <string.h>
21
+
22
+ /* EDHOC headers: */
23
+ #include <edhoc_crypto.h>
24
+ #include <edhoc_values.h>
25
+ #include <edhoc_macros.h>
26
+
27
+ /* Unity headers: */
28
+ #include <unity.h>
29
+ #include <unity_fixture.h>
30
+
31
+ /* PSA crypto header: */
32
+ #include <psa/crypto.h>
33
+
34
+ /* Module defines ---------------------------------------------------------- */
35
+ #define INPUT_TO_SIGN_LEN ((size_t)128)
36
+
37
+ /* Module types and type definitiones -------------------------------------- */
38
+ /* Module interface variables and constants -------------------------------- */
39
+ /* Static variables and constants ------------------------------------------ */
40
+ static const struct edhoc_keys keys = {
41
+ .import_key = cipher_suite_2_key_import,
42
+ .destroy_key = cipher_suite_2_key_destroy,
43
+ };
44
+
45
+ static const struct edhoc_crypto crypto = {
46
+ .make_key_pair = cipher_suite_2_make_key_pair,
47
+ .key_agreement = cipher_suite_2_key_agreement,
48
+ .signature = cipher_suite_2_signature,
49
+ .verify = cipher_suite_2_verify,
50
+ .extract = cipher_suite_2_extract,
51
+ .expand = cipher_suite_2_expand,
52
+ .encrypt = cipher_suite_2_encrypt,
53
+ .decrypt = cipher_suite_2_decrypt,
54
+ .hash = cipher_suite_2_hash,
55
+ };
56
+
57
+ static const struct edhoc_keys *edhoc_keys = &keys;
58
+ static const struct edhoc_crypto *edhoc_crypto = &crypto;
59
+
60
+ static int ret = EDHOC_ERROR_GENERIC_ERROR;
61
+
62
+ /* Static function declarations -------------------------------------------- */
63
+ /* Static function definitions --------------------------------------------- */
64
+ /* Module interface function definitions ----------------------------------- */
65
+
66
+ TEST_GROUP(cipher_suite_2);
67
+
68
+ TEST_SETUP(cipher_suite_2)
69
+ {
70
+ TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_crypto_init());
71
+ }
72
+
73
+ TEST_TEAR_DOWN(cipher_suite_2)
74
+ {
75
+ mbedtls_psa_crypto_free();
76
+ }
77
+
78
+ TEST(cipher_suite_2, ecdsa)
79
+ {
80
+ psa_key_id_t key_id = PSA_KEY_HANDLE_INIT;
81
+
82
+ const uint8_t priv_key[ECC_COMP_KEY_LEN] = {
83
+ 0xfb, 0x13, 0xad, 0xeb, 0x65, 0x18, 0xce, 0xe5,
84
+ 0xf8, 0x84, 0x17, 0x66, 0x08, 0x41, 0x14, 0x2e,
85
+ 0x83, 0x0a, 0x81, 0xfe, 0x33, 0x43, 0x80, 0xa9,
86
+ 0x53, 0x40, 0x6a, 0x13, 0x05, 0xe8, 0x70, 0x6b,
87
+ };
88
+
89
+ const uint8_t pub_key[ECC_UNCOMP_KEY_LEN] = {
90
+ 0x04,
91
+
92
+ 0xac, 0x75, 0xe9, 0xec, 0xe3, 0xe5, 0x0b, 0xfc,
93
+ 0x8e, 0xd6, 0x03, 0x99, 0x88, 0x95, 0x22, 0x40,
94
+ 0x5c, 0x47, 0xbf, 0x16, 0xdf, 0x96, 0x66, 0x0a,
95
+ 0x41, 0x29, 0x8c, 0xb4, 0x30, 0x7f, 0x7e, 0xb6,
96
+
97
+ 0x6e, 0x5d, 0xe6, 0x11, 0x38, 0x8a, 0x4b, 0x8a,
98
+ 0x82, 0x11, 0x33, 0x4a, 0xc7, 0xd3, 0x7e, 0xcb,
99
+ 0x52, 0xa3, 0x87, 0xd2, 0x57, 0xe6, 0xdb, 0x3c,
100
+ 0x2a, 0x93, 0xdf, 0x21, 0xff, 0x3a, 0xff, 0xc8,
101
+ };
102
+
103
+ /* Random input for signature. */
104
+ uint8_t input[INPUT_TO_SIGN_LEN] = { 0 };
105
+ ret = psa_generate_random(input, ARRAY_SIZE(input));
106
+ TEST_ASSERT_EQUAL(PSA_SUCCESS, ret);
107
+
108
+ /* Generate signature. */
109
+ size_t sign_len = 0;
110
+ uint8_t sign[ECC_ECDSA_SIGN_LEN] = { 0 };
111
+
112
+ ret = edhoc_keys->import_key(NULL, EDHOC_KT_SIGNATURE, priv_key,
113
+ ARRAY_SIZE(priv_key), &key_id);
114
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
115
+
116
+ ret = edhoc_crypto->signature(NULL, &key_id, input, ARRAY_SIZE(input),
117
+ sign, ARRAY_SIZE(sign), &sign_len);
118
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
119
+
120
+ ret = edhoc_keys->destroy_key(NULL, &key_id);
121
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
122
+
123
+ /* Verify signature. */
124
+ ret = edhoc_keys->import_key(NULL, EDHOC_KT_VERIFY, pub_key,
125
+ ARRAY_SIZE(pub_key), &key_id);
126
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
127
+
128
+ ret = edhoc_crypto->verify(NULL, &key_id, input, ARRAY_SIZE(input),
129
+ sign, sign_len);
130
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
131
+
132
+ ret = edhoc_keys->destroy_key(NULL, &key_id);
133
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
134
+ }
135
+
136
+ TEST(cipher_suite_2, ecdh)
137
+ {
138
+ psa_key_id_t key_id_a = PSA_KEY_HANDLE_INIT;
139
+ psa_key_id_t key_id_b = PSA_KEY_HANDLE_INIT;
140
+
141
+ /* Alice ECDH public and private keys. */
142
+ size_t priv_key_len_a = 0;
143
+ uint8_t priv_key_a[ECC_COMP_KEY_LEN] = { 0 };
144
+
145
+ size_t pub_key_len_a = 0;
146
+ uint8_t pub_key_a[ECC_COMP_KEY_LEN] = { 0 };
147
+
148
+ ret = edhoc_keys->import_key(NULL, EDHOC_KT_MAKE_KEY_PAIR, NULL, 0,
149
+ &key_id_a);
150
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
151
+
152
+ ret = edhoc_crypto->make_key_pair(NULL, &key_id_a, priv_key_a,
153
+ ARRAY_SIZE(priv_key_a),
154
+ &priv_key_len_a, pub_key_a,
155
+ ARRAY_SIZE(pub_key_a),
156
+ &pub_key_len_a);
157
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
158
+ TEST_ASSERT_EQUAL(ARRAY_SIZE(priv_key_a), priv_key_len_a);
159
+ TEST_ASSERT_EQUAL(ARRAY_SIZE(pub_key_a), pub_key_len_a);
160
+
161
+ ret = edhoc_keys->destroy_key(NULL, &key_id_a);
162
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
163
+
164
+ /* Bob ECDH public and private keys. */
165
+ size_t priv_key_len_b = 0;
166
+ uint8_t priv_key_b[ECC_COMP_KEY_LEN] = { 0 };
167
+
168
+ size_t pub_key_len_b = 0;
169
+ uint8_t pub_key_b[ECC_COMP_KEY_LEN] = { 0 };
170
+
171
+ ret = edhoc_keys->import_key(NULL, EDHOC_KT_MAKE_KEY_PAIR, NULL, 0,
172
+ &key_id_b);
173
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
174
+
175
+ ret = edhoc_crypto->make_key_pair(NULL, &key_id_b, priv_key_b,
176
+ ARRAY_SIZE(priv_key_b),
177
+ &priv_key_len_b, pub_key_b,
178
+ ARRAY_SIZE(pub_key_b),
179
+ &pub_key_len_b);
180
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
181
+ TEST_ASSERT_EQUAL(ARRAY_SIZE(priv_key_b), priv_key_len_b);
182
+ TEST_ASSERT_EQUAL(ARRAY_SIZE(pub_key_b), pub_key_len_b);
183
+
184
+ ret = edhoc_keys->destroy_key(NULL, &key_id_b);
185
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
186
+
187
+ /* Shared secret for Alice. */
188
+ size_t shr_sec_len_a = 0;
189
+ uint8_t shr_sec_a[ECC_ECDH_KEY_AGREEMENT_LEN] = { 0 };
190
+
191
+ ret = edhoc_keys->import_key(NULL, EDHOC_KT_KEY_AGREEMENT, priv_key_a,
192
+ priv_key_len_a, &key_id_a);
193
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
194
+
195
+ ret = edhoc_crypto->key_agreement(NULL, &key_id_a, pub_key_b,
196
+ pub_key_len_b, shr_sec_a,
197
+ ARRAY_SIZE(shr_sec_a),
198
+ &shr_sec_len_a);
199
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
200
+ TEST_ASSERT_EQUAL(ARRAY_SIZE(shr_sec_a), shr_sec_len_a);
201
+
202
+ ret = edhoc_keys->destroy_key(NULL, &key_id_a);
203
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
204
+
205
+ /* Shared secret for Bob. */
206
+ size_t shr_sec_len_b = 0;
207
+ uint8_t shr_sec_b[ECC_ECDH_KEY_AGREEMENT_LEN] = { 0 };
208
+
209
+ ret = edhoc_keys->import_key(NULL, EDHOC_KT_KEY_AGREEMENT, priv_key_b,
210
+ priv_key_len_b, &key_id_b);
211
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
212
+
213
+ ret = edhoc_crypto->key_agreement(NULL, &key_id_b, pub_key_a,
214
+ pub_key_len_a, shr_sec_b,
215
+ ARRAY_SIZE(shr_sec_b),
216
+ &shr_sec_len_b);
217
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
218
+ TEST_ASSERT_EQUAL(ARRAY_SIZE(shr_sec_b), shr_sec_len_b);
219
+
220
+ ret = edhoc_keys->destroy_key(NULL, &key_id_b);
221
+ TEST_ASSERT_EQUAL(PSA_SUCCESS, ret);
222
+
223
+ /* Compare if Alice and Bob has the same shared secrets. */
224
+ TEST_ASSERT_EQUAL(shr_sec_len_a, shr_sec_len_b);
225
+ TEST_ASSERT_EQUAL_UINT8_ARRAY(shr_sec_a, shr_sec_b, shr_sec_len_a);
226
+ }
227
+
228
+ TEST(cipher_suite_2, hkdf)
229
+ {
230
+ psa_key_id_t key_id = PSA_KEY_HANDLE_INIT;
231
+
232
+ /* Test vectors taken from RFC 5869: A.1. Test Case 1. */
233
+ const uint8_t ikm[] = {
234
+ 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
235
+ 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
236
+ 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
237
+ };
238
+
239
+ const uint8_t salt[] = {
240
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
241
+ 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c,
242
+ };
243
+
244
+ const uint8_t info[] = {
245
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9,
246
+ };
247
+
248
+ const size_t L = 42;
249
+
250
+ const uint8_t prk[] = {
251
+ 0x07, 0x77, 0x09, 0x36, 0x2c, 0x2e, 0x32, 0xdf,
252
+ 0x0d, 0xdc, 0x3f, 0x0d, 0xc4, 0x7b, 0xba, 0x63,
253
+ 0x90, 0xb6, 0xc7, 0x3b, 0xb5, 0x0f, 0x9c, 0x31,
254
+ 0x22, 0xec, 0x84, 0x4a, 0xd7, 0xc2, 0xb3, 0xe5,
255
+ };
256
+
257
+ const uint8_t okm[] = {
258
+ 0x3c, 0xb2, 0x5f, 0x25, 0xfa, 0xac, 0xd5, 0x7a, 0x90,
259
+ 0x43, 0x4f, 0x64, 0xd0, 0x36, 0x2f, 0x2a, 0x2d, 0x2d,
260
+ 0x0a, 0x90, 0xcf, 0x1a, 0x5a, 0x4c, 0x5d, 0xb0, 0x2d,
261
+ 0x56, 0xec, 0xc4, 0xc5, 0xbf, 0x34, 0x00, 0x72, 0x08,
262
+ 0xd5, 0xb8, 0x87, 0x18, 0x58, 0x65,
263
+ };
264
+
265
+ /* HDFK extract part. */
266
+ size_t comp_prk_len = 0;
267
+ uint8_t comp_prk[32] = { 0 };
268
+
269
+ ret = edhoc_keys->import_key(NULL, EDHOC_KT_EXTRACT, ikm,
270
+ ARRAY_SIZE(ikm), &key_id);
271
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
272
+
273
+ ret = edhoc_crypto->extract(NULL, &key_id, salt, ARRAY_SIZE(salt),
274
+ comp_prk, ARRAY_SIZE(comp_prk),
275
+ &comp_prk_len);
276
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
277
+ TEST_ASSERT_EQUAL(ARRAY_SIZE(comp_prk), comp_prk_len);
278
+
279
+ ret = edhoc_keys->destroy_key(NULL, &key_id);
280
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
281
+
282
+ TEST_ASSERT_EQUAL(ARRAY_SIZE(prk), comp_prk_len);
283
+ TEST_ASSERT_EQUAL_UINT8_ARRAY(comp_prk, prk, comp_prk_len);
284
+
285
+ /* HDFK expand part. */
286
+ uint8_t comp_okm[L];
287
+ memset(comp_okm, 0, sizeof(comp_okm));
288
+
289
+ ret = edhoc_keys->import_key(NULL, EDHOC_KT_EXPAND, comp_prk,
290
+ ARRAY_SIZE(comp_prk), &key_id);
291
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
292
+
293
+ ret = edhoc_crypto->expand(NULL, &key_id, info, ARRAY_SIZE(info),
294
+ comp_okm, ARRAY_SIZE(comp_okm));
295
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
296
+
297
+ ret = edhoc_keys->destroy_key(NULL, &key_id);
298
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
299
+
300
+ TEST_ASSERT_EQUAL_UINT8_ARRAY(comp_okm, okm, ARRAY_SIZE(okm));
301
+ }
302
+
303
+ TEST(cipher_suite_2, aead)
304
+ {
305
+ psa_key_id_t key_id = PSA_KEY_HANDLE_INIT;
306
+
307
+ /* AEAD key, iv and aad. */
308
+ const uint8_t key[16] = {
309
+ 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3,
310
+ };
311
+ const uint8_t iv[13] = {
312
+ 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2,
313
+ };
314
+ const uint8_t aad[4] = {
315
+ 0,
316
+ 1,
317
+ 2,
318
+ 3,
319
+ };
320
+
321
+ /* AEAD encryption. */
322
+ const uint8_t ptxt[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
323
+
324
+ ret = edhoc_keys->import_key(NULL, EDHOC_KT_ENCRYPT, key,
325
+ ARRAY_SIZE(key), &key_id);
326
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
327
+
328
+ size_t ctxt_len = 0;
329
+ uint8_t ctxt[18] = { 0 };
330
+ ret = edhoc_crypto->encrypt(NULL, &key_id, iv, ARRAY_SIZE(iv), aad,
331
+ ARRAY_SIZE(aad), ptxt, ARRAY_SIZE(ptxt),
332
+ ctxt, ARRAY_SIZE(ctxt), &ctxt_len);
333
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
334
+ TEST_ASSERT_EQUAL(ARRAY_SIZE(ctxt), ctxt_len);
335
+
336
+ ret = edhoc_keys->destroy_key(NULL, &key_id);
337
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
338
+
339
+ /* AEAD decryption. */
340
+ size_t dec_ctxt_len = 0;
341
+ uint8_t dec_ctxt[ARRAY_SIZE(ptxt)] = { 0 };
342
+
343
+ ret = edhoc_keys->import_key(NULL, EDHOC_KT_DECRYPT, key,
344
+ ARRAY_SIZE(key), &key_id);
345
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
346
+
347
+ ret = edhoc_crypto->decrypt(NULL, &key_id, iv, ARRAY_SIZE(iv), aad,
348
+ ARRAY_SIZE(aad), ctxt, ctxt_len, dec_ctxt,
349
+ ARRAY_SIZE(dec_ctxt), &dec_ctxt_len);
350
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
351
+ TEST_ASSERT_EQUAL(ARRAY_SIZE(ptxt), dec_ctxt_len);
352
+
353
+ ret = edhoc_keys->destroy_key(NULL, &key_id);
354
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
355
+
356
+ /* Verify if plaintext is equal to decrypted ciphertext. */
357
+ TEST_ASSERT_EQUAL_UINT8_ARRAY(ptxt, dec_ctxt, ARRAY_SIZE(ptxt));
358
+ }
359
+
360
+ TEST(cipher_suite_2, hash)
361
+ {
362
+ /* Input for hash function and expected hash. */
363
+ const uint8_t input[] = { 'A' };
364
+
365
+ const uint8_t exp_hash[32] = {
366
+ 0x55, 0x9a, 0xea, 0xd0, 0x82, 0x64, 0xd5, 0x79,
367
+ 0x5d, 0x39, 0x09, 0x71, 0x8c, 0xdd, 0x05, 0xab,
368
+ 0xd4, 0x95, 0x72, 0xe8, 0x4f, 0xe5, 0x55, 0x90,
369
+ 0xee, 0xf3, 0x1a, 0x88, 0xa0, 0x8f, 0xdf, 0xfd,
370
+ };
371
+
372
+ /* Hashing operation. */
373
+ size_t hash_len = 0;
374
+ uint8_t hash[32] = { 0 };
375
+
376
+ ret = edhoc_crypto->hash(NULL, input, ARRAY_SIZE(input), hash,
377
+ ARRAY_SIZE(hash), &hash_len);
378
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
379
+ TEST_ASSERT_EQUAL(ARRAY_SIZE(hash), hash_len);
380
+
381
+ /* Verify if hashes are equals. */
382
+ TEST_ASSERT_EQUAL_UINT8_ARRAY(hash, exp_hash, ARRAY_SIZE(exp_hash));
383
+ }
384
+
385
+ TEST_GROUP_RUNNER(cipher_suite_2)
386
+ {
387
+ RUN_TEST_CASE(cipher_suite_2, ecdsa);
388
+ RUN_TEST_CASE(cipher_suite_2, ecdh);
389
+ RUN_TEST_CASE(cipher_suite_2, hkdf);
390
+ RUN_TEST_CASE(cipher_suite_2, aead);
391
+ RUN_TEST_CASE(cipher_suite_2, hash);
392
+ }
@@ -1,9 +1,9 @@
1
1
  /**
2
- * \file test_edhoc_error_message.c
2
+ * \file module_test_error_message.c
3
3
  * \author Kamil Kielbasa
4
- * \brief EDHOC error message unit tests.
5
- * \version 0.4
6
- * \date 2024-01-01
4
+ * \brief Module tests for EDHOC error message.
5
+ * \version 0.6
6
+ * \date 2024-08-05
7
7
  *
8
8
  * \copyright Copyright (c) 2024
9
9
  *
@@ -11,37 +11,42 @@
11
11
 
12
12
  /* Include files ----------------------------------------------------------- */
13
13
 
14
- /* Internal test headers: */
15
- #include "error_message/test_edhoc_error_message.h"
14
+ /* EDHOC header: */
15
+ #define EDHOC_ALLOW_PRIVATE_ACCESS
16
+ #include <edhoc.h>
16
17
 
17
18
  /* Standard library headers: */
18
- #include <stdio.h>
19
19
  #include <stdint.h>
20
20
  #include <stddef.h>
21
21
  #include <string.h>
22
- #include <assert.h>
23
22
 
24
- /* EDHOC header: */
25
- #define EDHOC_ALLOW_PRIVATE_ACCESS
26
- #include "edhoc.h"
23
+ /* Unity headers: */
24
+ #include <unity.h>
25
+ #include <unity_fixture.h>
27
26
 
28
27
  /* Module defines ---------------------------------------------------------- */
29
28
  /* Module types and type definitiones -------------------------------------- */
30
29
  /* Module interface variables and constants -------------------------------- */
31
30
  /* Static variables and constants ------------------------------------------ */
31
+
32
+ static int ret = EDHOC_ERROR_GENERIC_ERROR;
33
+ static enum edhoc_error_code recv_error_code = -1;
34
+
32
35
  /* Static function declarations -------------------------------------------- */
33
36
 
34
37
  /**
35
38
  * \brief Helper function for printing arrays.
36
39
  */
37
- static inline void print_array(const char *name, const uint8_t *buffer,
38
- size_t buffer_length);
40
+ static inline void print_array(void *user_context, const char *name,
41
+ const uint8_t *buffer, size_t buffer_length);
39
42
 
40
43
  /* Static function definitions --------------------------------------------- */
41
44
 
42
- static inline void print_array(const char *name, const uint8_t *buffer,
43
- size_t buffer_length)
45
+ static inline void print_array(void *user_context, const char *name,
46
+ const uint8_t *buffer, size_t buffer_length)
44
47
  {
48
+ (void)user_context;
49
+
45
50
  printf("%s:\tLEN( %zu )\n", name, buffer_length);
46
51
 
47
52
  for (size_t i = 0; i < buffer_length; ++i) {
@@ -57,32 +62,38 @@ static inline void print_array(const char *name, const uint8_t *buffer,
57
62
 
58
63
  /* Module interface function definitions ----------------------------------- */
59
64
 
60
- void test_edhoc_error_message_success(void)
65
+ TEST_GROUP(error_message);
66
+
67
+ TEST_SETUP(error_message)
68
+ {
69
+ }
70
+
71
+ TEST_TEAR_DOWN(error_message)
61
72
  {
62
- int ret = EDHOC_ERROR_GENERIC_ERROR;
73
+ }
63
74
 
75
+ TEST(error_message, success)
76
+ {
64
77
  size_t buffer_len = 0;
65
78
  uint8_t buffer[100] = { 0 };
66
79
 
67
80
  const enum edhoc_error_code error_code = EDHOC_ERROR_CODE_SUCCESS;
68
-
69
81
  ret = edhoc_message_error_compose(buffer, ARRAY_SIZE(buffer),
70
82
  &buffer_len, error_code, NULL);
71
- assert(EDHOC_SUCCESS == ret);
83
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
72
84
 
73
- print_array("error msg - success", buffer, buffer_len);
85
+ #if defined(TEST_TRACES)
86
+ print_array(NULL, "error msg - success", buffer, buffer_len);
87
+ #endif
74
88
 
75
- enum edhoc_error_code recv_error_code = -1;
76
89
  ret = edhoc_message_error_process(buffer, buffer_len, &recv_error_code,
77
90
  NULL);
78
- assert(EDHOC_SUCCESS == ret);
79
- assert(error_code == recv_error_code);
91
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
92
+ TEST_ASSERT_EQUAL(error_code, recv_error_code);
80
93
  }
81
94
 
82
- void test_edhoc_error_message_unspecified_error(void)
95
+ TEST(error_message, unspecified_error)
83
96
  {
84
- int ret = EDHOC_ERROR_GENERIC_ERROR;
85
-
86
97
  size_t buffer_len = 0;
87
98
  uint8_t buffer[100] = { 0 };
88
99
 
@@ -97,32 +108,36 @@ void test_edhoc_error_message_unspecified_error(void)
97
108
 
98
109
  ret = edhoc_message_error_compose(buffer, ARRAY_SIZE(buffer),
99
110
  &buffer_len, error_code, &error_info);
100
- assert(EDHOC_SUCCESS == ret);
111
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
101
112
 
102
- print_array("error msg - unspecified error", buffer, buffer_len);
113
+ #if defined(TEST_TRACES)
114
+ print_array(NULL, "error msg - unspecified error", buffer, buffer_len);
115
+ #endif
103
116
 
104
- enum edhoc_error_code recv_error_code = -1;
105
117
  char recv_text_string[100] = { 0 };
106
118
  struct edhoc_error_info recv_error_info = {
107
119
  .text_string = recv_text_string,
108
120
  .total_entries = ARRAY_SIZE(recv_text_string),
109
121
  .written_entries = 0,
110
122
  };
123
+
111
124
  ret = edhoc_message_error_process(buffer, buffer_len, &recv_error_code,
112
125
  &recv_error_info);
113
- assert(EDHOC_SUCCESS == ret);
114
- assert(error_code == recv_error_code);
115
- assert(error_info.written_entries == recv_error_info.written_entries);
116
- assert(0 == memcmp(error_info.text_string, recv_error_info.text_string,
117
- error_info.written_entries));
118
-
126
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
127
+ TEST_ASSERT_EQUAL(error_code, recv_error_code);
128
+ TEST_ASSERT_EQUAL(error_info.written_entries,
129
+ recv_error_info.written_entries);
130
+ TEST_ASSERT_EQUAL_UINT8_ARRAY(error_info.text_string,
131
+ recv_error_info.text_string,
132
+ error_info.written_entries);
133
+
134
+ #if defined(TEST_TRACES)
119
135
  printf("Received message: %s\n\n", error_info.text_string);
136
+ #endif
120
137
  }
121
138
 
122
- void test_edhoc_error_message_wrong_selected_cipher_suite_one(void)
139
+ TEST(error_message, wrong_selected_cipher_suite_one)
123
140
  {
124
- int ret = EDHOC_ERROR_GENERIC_ERROR;
125
-
126
141
  size_t buffer_len = 0;
127
142
  uint8_t buffer[100] = { 0 };
128
143
 
@@ -137,33 +152,33 @@ void test_edhoc_error_message_wrong_selected_cipher_suite_one(void)
137
152
 
138
153
  ret = edhoc_message_error_compose(buffer, ARRAY_SIZE(buffer),
139
154
  &buffer_len, error_code, &error_info);
140
- assert(EDHOC_SUCCESS == ret);
155
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
141
156
 
142
- print_array("error msg - wrong selected cipher suite", buffer,
157
+ #if defined(TEST_TRACES)
158
+ print_array(NULL, "error msg - wrong selected cipher suite", buffer,
143
159
  buffer_len);
160
+ #endif
144
161
 
145
- enum edhoc_error_code recv_error_code = -1;
146
162
  int32_t recv_cipher_suites[10] = { 0 };
147
163
  struct edhoc_error_info recv_error_info = {
148
164
  .cipher_suites = recv_cipher_suites,
149
165
  .total_entries = ARRAY_SIZE(recv_cipher_suites),
150
166
  .written_entries = 0,
151
167
  };
168
+
152
169
  ret = edhoc_message_error_process(buffer, buffer_len, &recv_error_code,
153
170
  &recv_error_info);
154
- assert(EDHOC_SUCCESS == ret);
155
- assert(error_code == recv_error_code);
156
- assert(recv_error_info.written_entries == error_info.written_entries);
157
- assert(0 == memcmp(error_info.cipher_suites,
158
- recv_error_info.cipher_suites,
159
- error_info.written_entries *
160
- sizeof(*error_info.cipher_suites)));
171
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
172
+ TEST_ASSERT_EQUAL(error_code, recv_error_code);
173
+ TEST_ASSERT_EQUAL(recv_error_info.written_entries,
174
+ error_info.written_entries);
175
+ TEST_ASSERT_EQUAL_UINT8_ARRAY(
176
+ error_info.cipher_suites, recv_error_info.cipher_suites,
177
+ error_info.written_entries * sizeof(*error_info.cipher_suites));
161
178
  }
162
179
 
163
- void test_edhoc_error_message_wrong_selected_cipher_suite_many(void)
180
+ TEST(error_message, wrong_selected_cipher_suite_many)
164
181
  {
165
- int ret = EDHOC_ERROR_GENERIC_ERROR;
166
-
167
182
  size_t buffer_len = 0;
168
183
  uint8_t buffer[100] = { 0 };
169
184
 
@@ -178,33 +193,33 @@ void test_edhoc_error_message_wrong_selected_cipher_suite_many(void)
178
193
 
179
194
  ret = edhoc_message_error_compose(buffer, ARRAY_SIZE(buffer),
180
195
  &buffer_len, error_code, &error_info);
181
- assert(EDHOC_SUCCESS == ret);
196
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
182
197
 
183
- print_array("error msg - wrong selected cipher suite", buffer,
198
+ #if defined(TEST_TRACES)
199
+ print_array(NULL, "error msg - wrong selected cipher suite", buffer,
184
200
  buffer_len);
201
+ #endif
185
202
 
186
- enum edhoc_error_code recv_error_code = -1;
187
203
  int32_t recv_cipher_suites[10] = { 0 };
188
204
  struct edhoc_error_info recv_error_info = {
189
205
  .cipher_suites = recv_cipher_suites,
190
206
  .total_entries = ARRAY_SIZE(recv_cipher_suites),
191
207
  .written_entries = 0,
192
208
  };
209
+
193
210
  ret = edhoc_message_error_process(buffer, buffer_len, &recv_error_code,
194
211
  &recv_error_info);
195
- assert(EDHOC_SUCCESS == ret);
196
- assert(error_code == recv_error_code);
197
- assert(recv_error_info.written_entries == error_info.written_entries);
198
- assert(0 == memcmp(recv_error_info.cipher_suites,
199
- error_info.cipher_suites,
200
- error_info.written_entries *
201
- sizeof(*error_info.cipher_suites)));
212
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
213
+ TEST_ASSERT_EQUAL(error_code, recv_error_code);
214
+ TEST_ASSERT_EQUAL(recv_error_info.written_entries,
215
+ error_info.written_entries);
216
+ TEST_ASSERT_EQUAL_UINT8_ARRAY(
217
+ recv_error_info.cipher_suites, error_info.cipher_suites,
218
+ error_info.written_entries * sizeof(*error_info.cipher_suites));
202
219
  }
203
220
 
204
- void test_edhoc_error_message_unknown_credential_referenced(void)
221
+ TEST(error_message, unknown_credential_referenced)
205
222
  {
206
- int ret = EDHOC_ERROR_GENERIC_ERROR;
207
-
208
223
  size_t buffer_len = 0;
209
224
  uint8_t buffer[100] = { 0 };
210
225
 
@@ -213,14 +228,24 @@ void test_edhoc_error_message_unknown_credential_referenced(void)
213
228
 
214
229
  ret = edhoc_message_error_compose(buffer, ARRAY_SIZE(buffer),
215
230
  &buffer_len, error_code, NULL);
216
- assert(EDHOC_SUCCESS == ret);
231
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
217
232
 
218
- print_array("error msg - wrong selected cipher suite", buffer,
233
+ #if defined(TEST_TRACES)
234
+ print_array(NULL, "error msg - wrong selected cipher suite", buffer,
219
235
  buffer_len);
236
+ #endif
220
237
 
221
- enum edhoc_error_code recv_error_code = -1;
222
238
  ret = edhoc_message_error_process(buffer, buffer_len, &recv_error_code,
223
239
  NULL);
224
- assert(EDHOC_SUCCESS == ret);
225
- assert(error_code == recv_error_code);
240
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
241
+ TEST_ASSERT_EQUAL(error_code, recv_error_code);
242
+ }
243
+
244
+ TEST_GROUP_RUNNER(error_message)
245
+ {
246
+ RUN_TEST_CASE(error_message, success);
247
+ RUN_TEST_CASE(error_message, unspecified_error);
248
+ RUN_TEST_CASE(error_message, wrong_selected_cipher_suite_one);
249
+ RUN_TEST_CASE(error_message, wrong_selected_cipher_suite_many);
250
+ RUN_TEST_CASE(error_message, unknown_credential_referenced);
226
251
  }