edhoc 1.0.5 → 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 (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
@@ -2,6 +2,7 @@
2
2
  #define EDHOC_COMPOSE_ASYNC_WORKER_H
3
3
 
4
4
  #include <napi.h>
5
+
5
6
  #include <vector>
6
7
 
7
8
  extern "C" {
@@ -22,16 +23,11 @@ class EdhocComposeAsyncWorker : public Napi::AsyncWorker {
22
23
  /**
23
24
  * @brief Constructor for EdhocComposeAsyncWorker.
24
25
  * @param env The Napi::Env object.
25
- * @param deferred The deferred promise object.
26
26
  * @param context The EDHOC context.
27
27
  * @param messageNumber The message number.
28
28
  * @param callback The callback function.
29
29
  */
30
- EdhocComposeAsyncWorker(Napi::Env& env,
31
- Napi::Promise::Deferred deferred,
32
- struct edhoc_context& context,
33
- int messageNumber,
34
- CallbackType callback);
30
+ EdhocComposeAsyncWorker(Napi::Env& env, struct edhoc_context& context, int messageNumber, CallbackType callback);
35
31
 
36
32
  /**
37
33
  * @brief Executes the asynchronous worker task.
@@ -50,6 +46,12 @@ class EdhocComposeAsyncWorker : public Napi::AsyncWorker {
50
46
  */
51
47
  void OnError(const Napi::Error& error) override;
52
48
 
49
+ /**
50
+ * @brief Returns the promise object.
51
+ * @return The promise object.
52
+ */
53
+ Napi::Promise GetPromise();
54
+
53
55
  private:
54
56
  Napi::Promise::Deferred deferred; ///< The deferred promise object.
55
57
  struct edhoc_context& context; ///< The EDHOC context.
@@ -39,8 +39,7 @@ class EdhocCredentialManager {
39
39
  * fetched credentials.
40
40
  * @return EDHOC_SUCCESS if successful, otherwise an error code.
41
41
  */
42
- static int FetchCredentials(void* user_context,
43
- struct edhoc_auth_creds* credentials);
42
+ static int FetchCredentials(void* user_context, struct edhoc_auth_creds* credentials);
44
43
 
45
44
  /**
46
45
  * @brief Static function to verify the credentials.
@@ -63,8 +62,7 @@ class EdhocCredentialManager {
63
62
  * fetched credentials.
64
63
  * @return EDHOC_SUCCESS if successful, otherwise an error code.
65
64
  */
66
- int callFetchCredentials(const void* user_context,
67
- struct edhoc_auth_creds* credentials);
65
+ int callFetchCredentials(const void* user_context, struct edhoc_auth_creds* credentials);
68
66
 
69
67
  /**
70
68
  * @brief Calls the VerifyCredentials function.
@@ -80,14 +78,21 @@ class EdhocCredentialManager {
80
78
  const uint8_t** public_key_reference,
81
79
  size_t* public_key_length);
82
80
 
81
+ /**
82
+ * @brief Sets up the async functions.
83
+ */
84
+ void SetupAsyncFunctions();
85
+
86
+ /**
87
+ * @brief Releases the async functions.
88
+ */
89
+ void CleanupAsyncFunctions();
90
+
83
91
  private:
84
- std::vector<Napi::Reference<Napi::Object>>
85
- credentialReferences; ///< References to the JS objects
86
- Napi::ObjectReference credentialManagerRef; ///< Reference to the JS object
87
- Napi::ThreadSafeFunction
88
- fetchTsfn; ///< Thread-safe function for FetchCredentials
89
- Napi::ThreadSafeFunction
90
- verifyTsfn; ///< Thread-safe function for VerifyCredentials
92
+ std::vector<Napi::Reference<Napi::Object>> credentialReferences; ///< References to the JS objects
93
+ Napi::ObjectReference credentialManagerRef; ///< Reference to the JS object
94
+ Napi::ThreadSafeFunction fetchTsfn; ///< Thread-safe function for FetchCredentials
95
+ Napi::ThreadSafeFunction verifyTsfn; ///< Thread-safe function for VerifyCredentials
91
96
 
92
97
  /**
93
98
  * @brief Assosciates the thread-safe function with the JS object function.
@@ -43,20 +43,20 @@ class EdhocCryptoManager {
43
43
  ~EdhocCryptoManager();
44
44
 
45
45
  /**
46
- * @brief Generate a key.
46
+ * @brief Import a key.
47
47
  *
48
48
  * @param user_context The user context.
49
- * @param key_type The type of the key to generate.
49
+ * @param key_type The type of the key to import.
50
50
  * @param raw_key The raw key data.
51
51
  * @param raw_key_length The length of the raw key data.
52
- * @param key_id The generated key ID.
52
+ * @param key_id The imported key ID.
53
53
  * @return int The result code.
54
54
  */
55
- static int GenerateKey(void* user_context,
56
- enum edhoc_key_type key_type,
57
- const uint8_t* raw_key,
58
- size_t raw_key_length,
59
- void* key_id);
55
+ static int ImportKey(void* user_context,
56
+ enum edhoc_key_type key_type,
57
+ const uint8_t* raw_key,
58
+ size_t raw_key_length,
59
+ void* key_id);
60
60
 
61
61
  /**
62
62
  * @brief Destroy a key.
@@ -263,20 +263,20 @@ class EdhocCryptoManager {
263
263
  size_t* hash_length);
264
264
 
265
265
  /**
266
- * @brief Calls the GenerateKey function.
266
+ * @brief Calls the ImportKey function.
267
267
  *
268
268
  * @param user_context The user context.
269
- * @param key_type The type of the key to generate.
269
+ * @param key_type The type of the key to import.
270
270
  * @param raw_key The raw key data.
271
271
  * @param raw_key_length The length of the raw key data.
272
- * @param key_id The generated key ID.
272
+ * @param key_id The imported key ID.
273
273
  * @return int The result code.
274
274
  */
275
- int callGenerateKey(const void* user_context,
276
- enum edhoc_key_type key_type,
277
- const uint8_t* raw_key,
278
- size_t raw_key_length,
279
- void* key_id);
275
+ int callImportKey(const void* user_context,
276
+ enum edhoc_key_type key_type,
277
+ const uint8_t* raw_key,
278
+ size_t raw_key_length,
279
+ void* key_id);
280
280
 
281
281
  /**
282
282
  * @brief Calls the DestroyKey function.
@@ -481,17 +481,24 @@ class EdhocCryptoManager {
481
481
  uint8_t* hash,
482
482
  size_t hash_size,
483
483
  size_t* hash_length);
484
+ /**
485
+ * @brief Sets up the async functions.
486
+ */
487
+ void SetupAsyncFunctions();
488
+
489
+ /**
490
+ * @brief Releases the async functions.
491
+ */
492
+ void CleanupAsyncFunctions();
484
493
 
485
494
  private:
486
495
  Napi::ObjectReference cryptoManagerRef; ///< Reference to the JS object
487
496
 
488
- std::vector<Napi::Reference<Napi::Buffer<uint8_t>>>
489
- bufferReferences; ///< References to the JS buffers
497
+ std::vector<Napi::Reference<Napi::Buffer<uint8_t>>> bufferReferences; ///< References to the JS buffers
490
498
 
491
499
  /* Thread-safe functions */
492
- Napi::ThreadSafeFunction generateTsfn, destroyTsfn, makeKeyPairTsfn,
493
- keyAgreementTsfn, signTsfn, verifyTsfn, extractTsfn, expandTsfn,
494
- encryptTsfn, decryptTsfn, hashTsfn;
500
+ Napi::ThreadSafeFunction importTsfn, destroyTsfn, makeKeyPairTsfn, keyAgreementTsfn, signTsfn, verifyTsfn,
501
+ extractTsfn, expandTsfn, encryptTsfn, decryptTsfn, hashTsfn;
495
502
 
496
503
  /**
497
504
  * @brief Assosciates the thread-safe function with the JS object function.
@@ -2,6 +2,7 @@
2
2
  #define EDHOC_EAD_MANAGER_H
3
3
 
4
4
  #include <napi.h>
5
+
5
6
  #include <map>
6
7
  #include <vector>
7
8
 
@@ -50,9 +51,7 @@ class EdhocEadManager {
50
51
  * @param label The label associated with the EAD.
51
52
  * @param ead The EAD data to be stored.
52
53
  */
53
- void StoreEad(enum edhoc_message message,
54
- int label,
55
- const std::vector<uint8_t>& ead);
54
+ void StoreEad(enum edhoc_message message, int label, const std::vector<uint8_t>& ead);
56
55
 
57
56
  /**
58
57
  * @brief Stores the EAD for a specific EDHOC message using a Napi::Array.
@@ -143,9 +142,7 @@ class EdhocEadManager {
143
142
  * @param ead_token_size The size of the EAD token structure.
144
143
  * @return The status of the process operation.
145
144
  */
146
- int callProcessEad(enum edhoc_message message,
147
- const struct edhoc_ead_token* ead_token,
148
- size_t ead_token_size);
145
+ int callProcessEad(enum edhoc_message message, const struct edhoc_ead_token* ead_token, size_t ead_token_size);
149
146
  };
150
147
 
151
148
  #endif // EDHOC_EAD_MANAGER_H
@@ -1,7 +1,8 @@
1
- #ifndef EDHOC_EXPORT_ASYNC_WORKER_H
2
- #define EDHOC_EXPORT_ASYNC_WORKER_H
1
+ #ifndef EDHOC_EXPORT_OSCORE_ASYNC_WORKER_H
2
+ #define EDHOC_EXPORT_OSCORE_ASYNC_WORKER_H
3
3
 
4
4
  #include <napi.h>
5
+
5
6
  #include <functional>
6
7
  #include <vector>
7
8
 
@@ -10,36 +11,32 @@ extern "C" {
10
11
  }
11
12
 
12
13
  /**
13
- * @class EdhocExportAsyncWorker
14
+ * @class EdhocExportOscoreAsyncWorker
14
15
  * @brief A class that represents an asynchronous worker for exporting Edhoc
15
16
  * context.
16
17
  *
17
18
  * This class inherits from Napi::AsyncWorker and provides methods for executing
18
19
  * the export operation asynchronously and handling the result or error.
19
20
  */
20
- class EdhocExportAsyncWorker : public Napi::AsyncWorker {
21
+ class EdhocExportOscoreAsyncWorker : public Napi::AsyncWorker {
21
22
  public:
22
23
  /**
23
24
  * @brief The type definition for the callback function.
24
25
  */
25
- using CallbackType = std::function<void(Napi::Env)>;
26
+ using CallbackType = std::function<void(Napi::Env&)>;
26
27
 
27
28
  /**
28
- * @brief Constructs a new EdhocExportAsyncWorker object.
29
+ * @brief Constructs a new EdhocExportOscoreAsyncWorker object.
29
30
  *
30
31
  * @param env The Napi::Env object representing the current environment.
31
- * @param deferred The Napi::Promise::Deferred object representing the
32
- * deferred promise.
33
32
  * @param context The reference to the edhoc_context structure.
34
33
  */
35
- EdhocExportAsyncWorker(Napi::Env& env,
36
- Napi::Promise::Deferred deferred,
37
- struct edhoc_context& context);
34
+ EdhocExportOscoreAsyncWorker(Napi::Env& env, struct edhoc_context& context, CallbackType callback);
38
35
 
39
36
  /**
40
- * @brief Destroys the EdhocExportAsyncWorker object.
37
+ * @brief Destroys the EdhocExportOscoreAsyncWorker object.
41
38
  */
42
- ~EdhocExportAsyncWorker() override;
39
+ ~EdhocExportOscoreAsyncWorker() override;
43
40
 
44
41
  /**
45
42
  * @brief Executes the asynchronous worker task.
@@ -58,14 +55,20 @@ class EdhocExportAsyncWorker : public Napi::AsyncWorker {
58
55
  */
59
56
  void OnError(const Napi::Error& error) override;
60
57
 
58
+ /**
59
+ * @brief Returns the promise object.
60
+ * @return The promise object.
61
+ */
62
+ Napi::Promise GetPromise();
63
+
61
64
  private:
62
- Napi::Promise::Deferred deferred; ///< The deferred promise object.
63
- struct edhoc_context&
64
- context; ///< The reference to the edhoc_context structure.
65
+ Napi::Promise::Deferred deferred; ///< The deferred promise object.
66
+ struct edhoc_context& context; ///< The reference to the edhoc_context structure.
65
67
  std::vector<uint8_t> masterSecret; ///< The master secret.
66
68
  std::vector<uint8_t> masterSalt; ///< The master salt.
67
69
  std::vector<uint8_t> senderId; ///< The sender ID.
68
70
  std::vector<uint8_t> recipientId; ///< The recipient ID.
71
+ CallbackType callback; ///< The callback function to be executed.
69
72
  };
70
73
 
71
- #endif // EDHOC_EXPORT_ASYNC_WORKER_H
74
+ #endif // EDHOC_EXPORT_OSCORE_ASYNC_WORKER_H
@@ -0,0 +1,76 @@
1
+ #ifndef EDHOC_KEY_EXPORTER_ASYNC_WORKER_H
2
+ #define EDHOC_KEY_EXPORTER_ASYNC_WORKER_H
3
+
4
+ #include <napi.h>
5
+
6
+ #include <vector>
7
+
8
+ extern "C" {
9
+ #include "edhoc.h"
10
+ }
11
+
12
+ /**
13
+ * @class EdhocKeyExporterAsyncWorker
14
+ * @brief A class that represents an asynchronous worker for exporting PRKs.
15
+ *
16
+ * This class inherits from the Napi::AsyncWorker class and is used to perform
17
+ * PRK export in a separate thread. It takes an Edhoc context, a label, a
18
+ * desired length, and a callback function as input parameters. The export is
19
+ * performed in the Execute() method, and the result is returned through the
20
+ * OnOK() method or an error is handled through the OnError() method.
21
+ */
22
+ class EdhocKeyExporterAsyncWorker : public Napi::AsyncWorker {
23
+ public:
24
+ /**
25
+ * @brief The type definition for the callback function.
26
+ */
27
+ using CallbackType = std::function<void(Napi::Env&)>;
28
+
29
+ /**
30
+ * @brief Constructs a new EdhocKeyExporterAsyncWorker object.
31
+ *
32
+ * @param env The Napi::Env object representing the current environment.
33
+ * @param context The reference to the edhoc_context structure.
34
+ * @param label The label of the key to export.
35
+ * @param desiredLength The desired length of the key to export.
36
+ * @param callback The callback function to be called after the export.
37
+ */
38
+ EdhocKeyExporterAsyncWorker(Napi::Env& env,
39
+ struct edhoc_context& context,
40
+ uint16_t label,
41
+ uint8_t desiredLength,
42
+ CallbackType callback);
43
+
44
+ /**
45
+ * @brief Executes the asynchronous worker task.
46
+ */
47
+ void Execute() override;
48
+
49
+ /**
50
+ * @brief Executes when the asynchronous worker task is completed
51
+ * successfully.
52
+ */
53
+ void OnOK() override;
54
+
55
+ /**
56
+ * @brief Executes when an error occurs during the asynchronous worker task.
57
+ * @param error The Napi::Error object.
58
+ */
59
+ void OnError(const Napi::Error& error) override;
60
+
61
+ /**
62
+ * @brief Returns the promise object.
63
+ * @return The promise object.
64
+ */
65
+ Napi::Promise GetPromise();
66
+
67
+ private:
68
+ Napi::Promise::Deferred deferred;
69
+ struct edhoc_context& context;
70
+ uint16_t label;
71
+ uint8_t desiredLength;
72
+ std::vector<uint8_t> output;
73
+ CallbackType callback;
74
+ };
75
+
76
+ #endif // EDHOC_KEY_EXPORTER_ASYNC_WORKER_H
@@ -0,0 +1,72 @@
1
+ #ifndef EDHOC_KEY_UPDATE_ASYNC_WORKER_H
2
+ #define EDHOC_KEY_UPDATE_ASYNC_WORKER_H
3
+
4
+ #include <napi.h>
5
+
6
+ #include <vector>
7
+
8
+ extern "C" {
9
+ #include "edhoc.h"
10
+ }
11
+
12
+ /**
13
+ * @class EdhocKeyUpdateAsyncWorker
14
+ * @brief A class that represents an asynchronous worker for key update.
15
+ *
16
+ * This class inherits from the Napi::AsyncWorker class and is used to perform
17
+ * key update in a separate thread. It takes an Edhoc context, a context buffer,
18
+ * and a callback function as input parameters. The key update is performed
19
+ * in the Execute() method, and the result is returned through the OnOK() method
20
+ * or an error is handled through the OnError() method.
21
+ */
22
+ class EdhocKeyUpdateAsyncWorker : public Napi::AsyncWorker {
23
+ public:
24
+ /**
25
+ * @brief The type definition for the callback function.
26
+ */
27
+ using CallbackType = std::function<void(Napi::Env&)>;
28
+
29
+ /**
30
+ * @brief Constructs a new EdhocKeyUpdateAsyncWorker object.
31
+ *
32
+ * @param env The Napi::Env object representing the current environment.
33
+ * @param context The reference to the edhoc_context structure.
34
+ * @param contextBuffer The context buffer.
35
+ * @param callback The callback function to be called after the key update.
36
+ */
37
+ EdhocKeyUpdateAsyncWorker(Napi::Env& env,
38
+ struct edhoc_context& context,
39
+ std::vector<uint8_t> contextBuffer,
40
+ CallbackType callback);
41
+
42
+ /**
43
+ * @brief Executes the asynchronous worker task.
44
+ */
45
+ void Execute() override;
46
+
47
+ /**
48
+ * @brief Executes when the asynchronous worker task is completed
49
+ * successfully.
50
+ */
51
+ void OnOK() override;
52
+
53
+ /**
54
+ * @brief Executes when an error occurs during the asynchronous worker task.
55
+ * @param error The Napi::Error object.
56
+ */
57
+ void OnError(const Napi::Error& error) override;
58
+
59
+ /**
60
+ * @brief Returns the promise object.
61
+ * @return The promise object.
62
+ */
63
+ Napi::Promise GetPromise();
64
+
65
+ private:
66
+ Napi::Promise::Deferred deferred;
67
+ struct edhoc_context& context;
68
+ std::vector<uint8_t> contextBuffer;
69
+ CallbackType callback;
70
+ };
71
+
72
+ #endif // EDHOC_KEY_UPDATE_ASYNC_WORKER_H
@@ -2,6 +2,7 @@
2
2
  #define EDHOC_PROCESS_ASYNC_WORKER_H
3
3
 
4
4
  #include <napi.h>
5
+
5
6
  #include <vector>
6
7
 
7
8
  extern "C" {
@@ -31,7 +32,6 @@ class EdhocProcessAsyncWorker : public Napi::AsyncWorker {
31
32
  * @brief Constructs a new instance of the EdhocProcessAsyncWorker class.
32
33
  *
33
34
  * @param env The Napi::Env object.
34
- * @param deferred The Napi::Promise::Deferred object.
35
35
  * @param context The reference to the edhoc_context structure.
36
36
  * @param messageNumber The message number.
37
37
  * @param buffer The Napi::Buffer<uint8_t> object containing the message
@@ -39,7 +39,6 @@ class EdhocProcessAsyncWorker : public Napi::AsyncWorker {
39
39
  * @param callback The callback function to be called after processing.
40
40
  */
41
41
  EdhocProcessAsyncWorker(Napi::Env& env,
42
- Napi::Promise::Deferred deferred,
43
42
  struct edhoc_context& context,
44
43
  int messageNumber,
45
44
  Napi::Buffer<uint8_t> buffer,
@@ -62,15 +61,20 @@ class EdhocProcessAsyncWorker : public Napi::AsyncWorker {
62
61
  */
63
62
  void OnError(const Napi::Error& error) override;
64
63
 
64
+ /**
65
+ * @brief Returns the promise object.
66
+ * @return The promise object.
67
+ */
68
+ Napi::Promise GetPromise();
69
+
65
70
  private:
66
- Napi::Promise::Deferred deferred; ///< The Napi::Promise::Deferred object for
67
- ///< resolving or rejecting the promise.
68
- struct edhoc_context&
69
- context; ///< The reference to the edhoc_context structure.
70
- int messageNumber; ///< The message number.
71
- std::vector<uint8_t> messageBuffer; ///< The message buffer.
72
- CallbackType
73
- callback; ///< The callback function to be called after processing.
71
+ Napi::Promise::Deferred deferred; ///< The Napi::Promise::Deferred object for
72
+ ///< resolving or rejecting the promise.
73
+ struct edhoc_context& context; ///< The reference to the edhoc_context structure.
74
+ int messageNumber; ///< The message number.
75
+ std::vector<uint8_t> messageBuffer; ///< The message buffer.
76
+ CallbackType callback; ///< The callback function to be called after processing.
77
+ std::vector<uint8_t> peerCipherSuites; ///< The peer cipher suites.
74
78
  };
75
79
 
76
80
  #endif // EDHOC_PROCESS_ASYNC_WORKER_H
@@ -2,6 +2,7 @@
2
2
  #define LIB_EDHOC_H
3
3
 
4
4
  #include <napi.h>
5
+
5
6
  #include "UserContext.h"
6
7
 
7
8
  extern "C" {
@@ -88,20 +89,30 @@ class LibEDHOC : public Napi::ObjectWrap<LibEDHOC> {
88
89
  * associated with the LibEDHOC object.
89
90
  *
90
91
  * @param info The Napi::CallbackInfo representing the callback information.
91
- * @return Napi::Value The Method used in EDHOC.
92
+ * @return Napi::Value The supported methods used in EDHOC.
92
93
  */
93
- Napi::Value GetMethod(const Napi::CallbackInfo& info);
94
+ Napi::Value GetMethods(const Napi::CallbackInfo& info);
94
95
 
95
96
  /**
96
97
  * @brief Sets the Method (RFC 9528: 3.2.) used in EDHOC.
97
98
  *
98
- * This method sets the Method (RFC 9528: 3.2.) used in EDHOC for the LibEDHOC
99
- * object.
99
+ * This method sets the supported methods (RFC 9528: 3.2.) used in EDHOC for
100
+ * the LibEDHOC object.
100
101
  *
101
102
  * @param info The Napi::CallbackInfo representing the callback information.
102
- * @param value The Napi::Value representing the Method used in EDHOC.
103
+ * @param value The Napi::Value representing the supported methods used in EDHOC.
103
104
  */
104
- void SetMethod(const Napi::CallbackInfo& info, const Napi::Value& value);
105
+ void SetMethods(const Napi::CallbackInfo& info, const Napi::Value& value);
106
+
107
+ /**
108
+ * @brief Gets the selected method.
109
+ *
110
+ * This method returns the selected method associated with the LibEDHOC object.
111
+ *
112
+ * @param info The Napi::CallbackInfo representing the callback information.
113
+ * @return Napi::Value The selected method.
114
+ */
115
+ Napi::Value GetSelectedMethod(const Napi::CallbackInfo& info);
105
116
 
106
117
  /**
107
118
  * @brief Sets the cipher suites.
@@ -111,8 +122,7 @@ class LibEDHOC : public Napi::ObjectWrap<LibEDHOC> {
111
122
  * @param info The Napi::CallbackInfo representing the callback information.
112
123
  * @param value The Napi::Value representing the cipher suites.
113
124
  */
114
- void SetCipherSuites(const Napi::CallbackInfo& info,
115
- const Napi::Value& value);
125
+ void SetCipherSuites(const Napi::CallbackInfo& info, const Napi::Value& value);
116
126
 
117
127
  /**
118
128
  * @brief Gets the cipher suites.
@@ -247,13 +257,32 @@ class LibEDHOC : public Napi::ObjectWrap<LibEDHOC> {
247
257
  */
248
258
  Napi::Value ExportOSCORE(const Napi::CallbackInfo& info);
249
259
 
260
+ /**
261
+ * @brief Exports keying material using the EDHOC_Exporter interface.
262
+ *
263
+ * This method derives keying material using the EDHOC_Exporter, which
264
+ * utilizes an `exporter_label`, `context`, and `length` to generate the
265
+ * key.
266
+ *
267
+ * @param info The Napi::CallbackInfo representing the callback information.
268
+ * @return Napi::Value The derived keying material.
269
+ */
270
+ Napi::Value ExportKey(const Napi::CallbackInfo& info);
271
+
272
+ /**
273
+ * @brief Performs a key update.
274
+ *
275
+ * This method performs a key update for the LibEDHOC object.
276
+ *
277
+ * @param info The Napi::CallbackInfo representing the callback information.
278
+ * @return Napi::Value void.
279
+ */
280
+ Napi::Value KeyUpdate(const Napi::CallbackInfo& info);
281
+
250
282
  private:
251
283
  struct edhoc_context context; ///< The EDHOC context.
252
284
 
253
- struct edhoc_connection_id
254
- cid; ///< RFC 9528: 3.3.2. Representation of Byte String Identifiers.
255
-
256
- enum edhoc_method method; ///< RFC 9528: 3.2. Method.
285
+ struct edhoc_connection_id cid; ///< RFC 9528: 3.3.2. Representation of Byte String Identifiers.
257
286
 
258
287
  Napi::FunctionReference logger; ///< N-API reference to the logger function
259
288
 
@@ -271,10 +300,7 @@ class LibEDHOC : public Napi::ObjectWrap<LibEDHOC> {
271
300
  * @param buffer The buffer containing the log message.
272
301
  * @param buffer_length The length of the log message buffer.
273
302
  */
274
- static void Logger(void* user_context,
275
- const char* name,
276
- const uint8_t* buffer,
277
- size_t buffer_length);
303
+ static void Logger(void* user_context, const char* name, const uint8_t* buffer, size_t buffer_length);
278
304
 
279
305
  /**
280
306
  * @brief Composes an EDHOC message.
@@ -285,8 +311,7 @@ class LibEDHOC : public Napi::ObjectWrap<LibEDHOC> {
285
311
  * @param message The EDHOC message to compose.
286
312
  * @return Napi::Value The composed EDHOC message.
287
313
  */
288
- Napi::Value ComposeMessage(const Napi::CallbackInfo& info,
289
- enum edhoc_message message);
314
+ Napi::Value ComposeMessage(const Napi::CallbackInfo& info, enum edhoc_message message);
290
315
 
291
316
  /**
292
317
  * @brief Processes an EDHOC message.
@@ -297,8 +322,7 @@ class LibEDHOC : public Napi::ObjectWrap<LibEDHOC> {
297
322
  * @param message The EDHOC message to process.
298
323
  * @return Napi::Value The EAD data or Null for given EDHOC message.
299
324
  */
300
- Napi::Value ProcessMessage(const Napi::CallbackInfo& info,
301
- enum edhoc_message message);
325
+ Napi::Value ProcessMessage(const Napi::CallbackInfo& info, enum edhoc_message message);
302
326
  };
303
327
 
304
328
  #endif // LIB_EDHOC_H
@@ -2,7 +2,9 @@
2
2
  #define USER_CONTEXT_H
3
3
 
4
4
  #include <napi.h>
5
+
5
6
  #include <memory>
7
+
6
8
  #include "EdhocCredentialManager.h"
7
9
  #include "EdhocCryptoManager.h"
8
10
  #include "EdhocEadManager.h"
@@ -61,19 +63,15 @@ class UserContext {
61
63
  *
62
64
  * @return A pointer to the EdhocCredentialManager.
63
65
  */
64
- EdhocCredentialManager* GetCredentialManager() const {
65
- return credentialManager.get();
66
- }
66
+ EdhocCredentialManager* GetCredentialManager() const { return credentialManager.get(); }
67
67
 
68
68
  Napi::ThreadSafeFunction logger; ///< The logger for the UserContext
69
- Napi::ObjectReference
70
- parent; ///< The parent object reference for the UserContext
69
+ Napi::ObjectReference parent; ///< The parent object reference for the UserContext
71
70
 
72
71
  protected:
73
- std::shared_ptr<EdhocCryptoManager> cryptoManager; ///< The crypto manager
74
- std::shared_ptr<EdhocEadManager> eadManager; ///< The EAD manager
75
- std::shared_ptr<EdhocCredentialManager>
76
- credentialManager; ///< The credential manager
72
+ std::shared_ptr<EdhocCryptoManager> cryptoManager; ///< The crypto manager
73
+ std::shared_ptr<EdhocEadManager> eadManager; ///< The EAD manager
74
+ std::shared_ptr<EdhocCredentialManager> credentialManager; ///< The credential manager
77
75
  };
78
76
 
79
77
  #endif // USER_CONTEXT_H