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,395 @@
1
+ /**
2
+ * \file module_test_cipher_suite_0.c
3
+ * \author Kamil Kielbasa
4
+ * \brief Module tests for cipher suite 0.
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_0.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
+ /* Compact25519 crypto headers: */
35
+ #include <compact_x25519.h>
36
+ #include <compact_ed25519.h>
37
+
38
+ /* Module defines ---------------------------------------------------------- */
39
+ #define INPUT_TO_SIGN_LEN ((size_t)128)
40
+
41
+ /* Module types and type definitiones -------------------------------------- */
42
+ /* Module interface variables and constants -------------------------------- */
43
+ /* Static variables and constants ------------------------------------------ */
44
+
45
+ static const struct edhoc_keys keys = {
46
+ .import_key = cipher_suite_0_key_import,
47
+ .destroy_key = cipher_suite_0_key_destroy,
48
+ };
49
+
50
+ static const struct edhoc_crypto crypto = {
51
+ .make_key_pair = cipher_suite_0_make_key_pair,
52
+ .key_agreement = cipher_suite_0_key_agreement,
53
+ .signature = cipher_suite_0_signature,
54
+ .verify = cipher_suite_0_verify,
55
+ .extract = cipher_suite_0_extract,
56
+ .expand = cipher_suite_0_expand,
57
+ .encrypt = cipher_suite_0_encrypt,
58
+ .decrypt = cipher_suite_0_decrypt,
59
+ .hash = cipher_suite_0_hash,
60
+ };
61
+
62
+ static const struct edhoc_keys *edhoc_keys = &keys;
63
+ static const struct edhoc_crypto *edhoc_crypto = &crypto;
64
+
65
+ static int ret = PSA_ERROR_GENERIC_ERROR;
66
+
67
+ /* Static function declarations -------------------------------------------- */
68
+ /* Static function definitions --------------------------------------------- */
69
+ /* Module interface function definitions ----------------------------------- */
70
+
71
+ TEST_GROUP(cipher_suite_0);
72
+
73
+ TEST_SETUP(cipher_suite_0)
74
+ {
75
+ TEST_ASSERT_EQUAL(PSA_SUCCESS, psa_crypto_init());
76
+ }
77
+
78
+ TEST_TEAR_DOWN(cipher_suite_0)
79
+ {
80
+ mbedtls_psa_crypto_free();
81
+ }
82
+
83
+ TEST(cipher_suite_0, ecdsa)
84
+ {
85
+ psa_key_id_t key_id = PSA_KEY_HANDLE_INIT;
86
+
87
+ const uint8_t priv_key[ED25519_PRIVATE_KEY_SIZE] = {
88
+ 0xef, 0x14, 0x0f, 0xf9, 0x00, 0xb0, 0xab, 0x03,
89
+ 0xf0, 0xc0, 0x8d, 0x87, 0x9c, 0xbb, 0xd4, 0xb3,
90
+ 0x1e, 0xa7, 0x1e, 0x6e, 0x7e, 0xe7, 0xff, 0xcb,
91
+ 0x7e, 0x79, 0x55, 0x77, 0x7a, 0x33, 0x27, 0x99,
92
+
93
+ 0xa1, 0xdb, 0x47, 0xb9, 0x51, 0x84, 0x85, 0x4a,
94
+ 0xd1, 0x2a, 0x0c, 0x1a, 0x35, 0x4e, 0x41, 0x8a,
95
+ 0xac, 0xe3, 0x3a, 0xa0, 0xf2, 0xc6, 0x62, 0xc0,
96
+ 0x0b, 0x3a, 0xc5, 0x5d, 0xe9, 0x2f, 0x93, 0x59,
97
+ };
98
+
99
+ const uint8_t pub_key[ED25519_PUBLIC_KEY_SIZE] = {
100
+ 0xa1, 0xdb, 0x47, 0xb9, 0x51, 0x84, 0x85, 0x4a,
101
+ 0xd1, 0x2a, 0x0c, 0x1a, 0x35, 0x4e, 0x41, 0x8a,
102
+ 0xac, 0xe3, 0x3a, 0xa0, 0xf2, 0xc6, 0x62, 0xc0,
103
+ 0x0b, 0x3a, 0xc5, 0x5d, 0xe9, 0x2f, 0x93, 0x59,
104
+ };
105
+
106
+ /* Random input for signature. */
107
+ uint8_t input[INPUT_TO_SIGN_LEN] = { 0 };
108
+ ret = psa_generate_random(input, ARRAY_SIZE(input));
109
+ TEST_ASSERT_EQUAL(PSA_SUCCESS, ret);
110
+
111
+ /* Generate signature. */
112
+ size_t sign_len = 0;
113
+ uint8_t sign[ED25519_SIGNATURE_SIZE] = { 0 };
114
+
115
+ ret = edhoc_keys->import_key(NULL, EDHOC_KT_SIGNATURE, priv_key,
116
+ ARRAY_SIZE(priv_key), &key_id);
117
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
118
+
119
+ ret = edhoc_crypto->signature(NULL, &key_id, input, ARRAY_SIZE(input),
120
+ sign, ARRAY_SIZE(sign), &sign_len);
121
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
122
+
123
+ ret = edhoc_keys->destroy_key(NULL, &key_id);
124
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
125
+
126
+ /* Verify signature. */
127
+ ret = edhoc_keys->import_key(NULL, EDHOC_KT_VERIFY, pub_key,
128
+ ARRAY_SIZE(pub_key), &key_id);
129
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
130
+
131
+ ret = edhoc_crypto->verify(NULL, &key_id, input, ARRAY_SIZE(input),
132
+ sign, sign_len);
133
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
134
+
135
+ ret = edhoc_keys->destroy_key(NULL, &key_id);
136
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
137
+ }
138
+
139
+ TEST(cipher_suite_0, ecdh)
140
+ {
141
+ psa_key_id_t key_id_a = PSA_KEY_HANDLE_INIT;
142
+ psa_key_id_t key_id_b = PSA_KEY_HANDLE_INIT;
143
+
144
+ /* Alice ECDH key pair. */
145
+ size_t priv_key_len_a = 0;
146
+ uint8_t priv_key_a[X25519_KEY_SIZE] = { 0 };
147
+
148
+ size_t pub_key_len_a = 0;
149
+ uint8_t pub_key_a[X25519_KEY_SIZE] = { 0 };
150
+
151
+ ret = edhoc_keys->import_key(NULL, EDHOC_KT_MAKE_KEY_PAIR, NULL, 0,
152
+ &key_id_a);
153
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
154
+
155
+ ret = edhoc_crypto->make_key_pair(NULL, &key_id_a, priv_key_a,
156
+ ARRAY_SIZE(priv_key_a),
157
+ &priv_key_len_a, pub_key_a,
158
+ ARRAY_SIZE(pub_key_a),
159
+ &pub_key_len_a);
160
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
161
+ TEST_ASSERT_EQUAL(ARRAY_SIZE(priv_key_a), priv_key_len_a);
162
+ TEST_ASSERT_EQUAL(ARRAY_SIZE(pub_key_a), pub_key_len_a);
163
+
164
+ ret = edhoc_keys->destroy_key(NULL, &key_id_a);
165
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
166
+
167
+ /* Bob ECDH key pair. */
168
+ size_t priv_key_len_b = 0;
169
+ uint8_t priv_key_b[X25519_KEY_SIZE] = { 0 };
170
+
171
+ size_t pub_key_len_b = 0;
172
+ uint8_t pub_key_b[X25519_KEY_SIZE] = { 0 };
173
+
174
+ ret = edhoc_keys->import_key(NULL, EDHOC_KT_MAKE_KEY_PAIR, NULL, 0,
175
+ &key_id_b);
176
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
177
+
178
+ ret = edhoc_crypto->make_key_pair(NULL, &key_id_b, priv_key_b,
179
+ ARRAY_SIZE(priv_key_b),
180
+ &priv_key_len_b, pub_key_b,
181
+ ARRAY_SIZE(pub_key_b),
182
+ &pub_key_len_b);
183
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
184
+ TEST_ASSERT_EQUAL(ARRAY_SIZE(priv_key_b), priv_key_len_b);
185
+ TEST_ASSERT_EQUAL(ARRAY_SIZE(pub_key_b), pub_key_len_b);
186
+
187
+ ret = edhoc_keys->destroy_key(NULL, &key_id_b);
188
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
189
+
190
+ /* Shared secret for Alice. */
191
+ size_t shr_sec_len_a = 0;
192
+ uint8_t shr_sec_a[X25519_SHARED_SIZE] = { 0 };
193
+
194
+ ret = edhoc_keys->import_key(NULL, EDHOC_KT_KEY_AGREEMENT, priv_key_a,
195
+ priv_key_len_a, &key_id_a);
196
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
197
+
198
+ ret = edhoc_crypto->key_agreement(NULL, &key_id_a, pub_key_b,
199
+ pub_key_len_b, shr_sec_a,
200
+ ARRAY_SIZE(shr_sec_a),
201
+ &shr_sec_len_a);
202
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
203
+ TEST_ASSERT_EQUAL(ARRAY_SIZE(shr_sec_a), shr_sec_len_a);
204
+
205
+ ret = edhoc_keys->destroy_key(NULL, &key_id_a);
206
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
207
+
208
+ /* Shared secret for Bob. */
209
+ size_t shr_sec_len_b = 0;
210
+ uint8_t shr_sec_b[X25519_SHARED_SIZE] = { 0 };
211
+
212
+ ret = edhoc_keys->import_key(NULL, EDHOC_KT_KEY_AGREEMENT, priv_key_b,
213
+ priv_key_len_b, &key_id_b);
214
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
215
+
216
+ ret = edhoc_crypto->key_agreement(NULL, &key_id_b, pub_key_a,
217
+ pub_key_len_a, shr_sec_b,
218
+ ARRAY_SIZE(shr_sec_b),
219
+ &shr_sec_len_b);
220
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
221
+ TEST_ASSERT_EQUAL(ARRAY_SIZE(shr_sec_b), shr_sec_len_b);
222
+
223
+ ret = edhoc_keys->destroy_key(NULL, &key_id_b);
224
+ TEST_ASSERT_EQUAL(PSA_SUCCESS, ret);
225
+
226
+ /* Compare if Alice and Bob has the same shared secrets. */
227
+ TEST_ASSERT_EQUAL(shr_sec_len_a, shr_sec_len_b);
228
+ TEST_ASSERT_EQUAL_UINT8_ARRAY(shr_sec_a, shr_sec_b, shr_sec_len_a);
229
+ }
230
+
231
+ TEST(cipher_suite_0, hkdf)
232
+ {
233
+ psa_key_id_t key_id = PSA_KEY_HANDLE_INIT;
234
+
235
+ /* Test vectors taken from RFC 5869: A.1. Test Case 1. */
236
+ const uint8_t ikm[] = {
237
+ 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
238
+ 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
239
+ 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
240
+ };
241
+
242
+ const uint8_t salt[] = {
243
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
244
+ 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c,
245
+ };
246
+
247
+ const uint8_t info[] = {
248
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9,
249
+ };
250
+
251
+ const size_t L = 42;
252
+
253
+ const uint8_t prk[] = {
254
+ 0x07, 0x77, 0x09, 0x36, 0x2c, 0x2e, 0x32, 0xdf,
255
+ 0x0d, 0xdc, 0x3f, 0x0d, 0xc4, 0x7b, 0xba, 0x63,
256
+ 0x90, 0xb6, 0xc7, 0x3b, 0xb5, 0x0f, 0x9c, 0x31,
257
+ 0x22, 0xec, 0x84, 0x4a, 0xd7, 0xc2, 0xb3, 0xe5,
258
+ };
259
+
260
+ const uint8_t okm[] = {
261
+ 0x3c, 0xb2, 0x5f, 0x25, 0xfa, 0xac, 0xd5, 0x7a, 0x90,
262
+ 0x43, 0x4f, 0x64, 0xd0, 0x36, 0x2f, 0x2a, 0x2d, 0x2d,
263
+ 0x0a, 0x90, 0xcf, 0x1a, 0x5a, 0x4c, 0x5d, 0xb0, 0x2d,
264
+ 0x56, 0xec, 0xc4, 0xc5, 0xbf, 0x34, 0x00, 0x72, 0x08,
265
+ 0xd5, 0xb8, 0x87, 0x18, 0x58, 0x65,
266
+ };
267
+
268
+ /* HDFK extract part. */
269
+ size_t comp_prk_len = 0;
270
+ uint8_t comp_prk[32] = { 0 };
271
+
272
+ ret = edhoc_keys->import_key(NULL, EDHOC_KT_EXTRACT, ikm,
273
+ ARRAY_SIZE(ikm), &key_id);
274
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
275
+
276
+ ret = edhoc_crypto->extract(NULL, &key_id, salt, ARRAY_SIZE(salt),
277
+ comp_prk, ARRAY_SIZE(comp_prk),
278
+ &comp_prk_len);
279
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
280
+ TEST_ASSERT_EQUAL(ARRAY_SIZE(comp_prk), comp_prk_len);
281
+
282
+ ret = edhoc_keys->destroy_key(NULL, &key_id);
283
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
284
+
285
+ TEST_ASSERT_EQUAL(comp_prk_len, ARRAY_SIZE(prk));
286
+ TEST_ASSERT_EQUAL_UINT8_ARRAY(comp_prk, prk, comp_prk_len);
287
+
288
+ /* HDFK expand part. */
289
+ uint8_t comp_okm[L];
290
+ memset(comp_okm, 0, sizeof(comp_okm));
291
+
292
+ ret = edhoc_keys->import_key(NULL, EDHOC_KT_EXPAND, comp_prk,
293
+ ARRAY_SIZE(comp_prk), &key_id);
294
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
295
+
296
+ ret = edhoc_crypto->expand(NULL, &key_id, info, ARRAY_SIZE(info),
297
+ comp_okm, ARRAY_SIZE(comp_okm));
298
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
299
+
300
+ ret = edhoc_keys->destroy_key(NULL, &key_id);
301
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
302
+
303
+ TEST_ASSERT_EQUAL_UINT8_ARRAY(comp_okm, okm, ARRAY_SIZE(okm));
304
+ }
305
+
306
+ TEST(cipher_suite_0, aead)
307
+ {
308
+ psa_key_id_t key_id = PSA_KEY_HANDLE_INIT;
309
+
310
+ /* AEAD key, iv and aad. */
311
+ const uint8_t key[16] = {
312
+ 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3,
313
+ };
314
+ const uint8_t iv[13] = {
315
+ 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2,
316
+ };
317
+ const uint8_t aad[4] = {
318
+ 0,
319
+ 1,
320
+ 2,
321
+ 3,
322
+ };
323
+
324
+ /* AEAD encryption. */
325
+ const uint8_t ptxt[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
326
+
327
+ ret = edhoc_keys->import_key(NULL, EDHOC_KT_ENCRYPT, key,
328
+ ARRAY_SIZE(key), &key_id);
329
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
330
+
331
+ size_t ctxt_len = 0;
332
+ uint8_t ctxt[18] = { 0 };
333
+ ret = edhoc_crypto->encrypt(NULL, &key_id, iv, ARRAY_SIZE(iv), aad,
334
+ ARRAY_SIZE(aad), ptxt, ARRAY_SIZE(ptxt),
335
+ ctxt, ARRAY_SIZE(ctxt), &ctxt_len);
336
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
337
+ TEST_ASSERT_EQUAL(ARRAY_SIZE(ctxt), ctxt_len);
338
+
339
+ ret = edhoc_keys->destroy_key(NULL, &key_id);
340
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
341
+
342
+ /* AEAD decryption. */
343
+ size_t dec_ctxt_len = 0;
344
+ uint8_t dec_ctxt[ARRAY_SIZE(ptxt)] = { 0 };
345
+
346
+ ret = edhoc_keys->import_key(NULL, EDHOC_KT_DECRYPT, key,
347
+ ARRAY_SIZE(key), &key_id);
348
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
349
+
350
+ ret = edhoc_crypto->decrypt(NULL, &key_id, iv, ARRAY_SIZE(iv), aad,
351
+ ARRAY_SIZE(aad), ctxt, ctxt_len, dec_ctxt,
352
+ ARRAY_SIZE(dec_ctxt), &dec_ctxt_len);
353
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
354
+ TEST_ASSERT_EQUAL(ARRAY_SIZE(ptxt), dec_ctxt_len);
355
+
356
+ ret = edhoc_keys->destroy_key(NULL, &key_id);
357
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
358
+
359
+ /* Verify if plaintext is equal to decrypted ciphertext. */
360
+ TEST_ASSERT_EQUAL_UINT8_ARRAY(ptxt, dec_ctxt, ARRAY_SIZE(ptxt));
361
+ }
362
+
363
+ TEST(cipher_suite_0, hash)
364
+ {
365
+ /* Input for hash function and expected hash. */
366
+ const uint8_t input[] = { 'A' };
367
+
368
+ const uint8_t exp_hash[32] = {
369
+ 0x55, 0x9a, 0xea, 0xd0, 0x82, 0x64, 0xd5, 0x79,
370
+ 0x5d, 0x39, 0x09, 0x71, 0x8c, 0xdd, 0x05, 0xab,
371
+ 0xd4, 0x95, 0x72, 0xe8, 0x4f, 0xe5, 0x55, 0x90,
372
+ 0xee, 0xf3, 0x1a, 0x88, 0xa0, 0x8f, 0xdf, 0xfd,
373
+ };
374
+
375
+ /* Hashing operation. */
376
+ size_t hash_len = 0;
377
+ uint8_t hash[32] = { 0 };
378
+
379
+ ret = edhoc_crypto->hash(NULL, input, ARRAY_SIZE(input), hash,
380
+ ARRAY_SIZE(hash), &hash_len);
381
+ TEST_ASSERT_EQUAL(EDHOC_SUCCESS, ret);
382
+ TEST_ASSERT_EQUAL(ARRAY_SIZE(hash), hash_len);
383
+
384
+ /* Verify if hashes are equals. */
385
+ TEST_ASSERT_EQUAL_UINT8_ARRAY(hash, exp_hash, ARRAY_SIZE(exp_hash));
386
+ }
387
+
388
+ TEST_GROUP_RUNNER(cipher_suite_0)
389
+ {
390
+ RUN_TEST_CASE(cipher_suite_0, ecdsa);
391
+ RUN_TEST_CASE(cipher_suite_0, ecdh);
392
+ RUN_TEST_CASE(cipher_suite_0, hkdf);
393
+ RUN_TEST_CASE(cipher_suite_0, aead);
394
+ RUN_TEST_CASE(cipher_suite_0, hash);
395
+ }