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.
- package/README.md +170 -0
- package/binding.gyp +13 -11
- package/dist/bindings.d.ts +5 -0
- package/dist/bindings.d.ts.map +1 -0
- package/dist/bindings.js +10 -0
- package/dist/crypto.d.ts +29 -0
- package/dist/crypto.d.ts.map +1 -0
- package/dist/crypto.js +205 -0
- package/dist/edhoc.d.ts +368 -0
- package/dist/edhoc.d.ts.map +1 -0
- package/dist/edhoc.js +76 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/x509credentials.d.ts +20 -0
- package/dist/x509credentials.d.ts.map +1 -0
- package/dist/x509credentials.js +140 -0
- package/external/libedhoc/backends/cbor/include/backend_cbor_bstr_type_decode.h +1 -1
- package/external/libedhoc/backends/cbor/include/backend_cbor_bstr_type_encode.h +1 -1
- package/external/libedhoc/backends/cbor/include/backend_cbor_bstr_type_types.h +1 -1
- package/external/libedhoc/backends/cbor/include/backend_cbor_ead_decode.h +2 -2
- package/external/libedhoc/backends/cbor/include/backend_cbor_ead_encode.h +2 -2
- package/external/libedhoc/backends/cbor/include/backend_cbor_edhoc_types.h +48 -43
- package/external/libedhoc/backends/cbor/include/backend_cbor_enc_structure_decode.h +1 -1
- package/external/libedhoc/backends/cbor/include/backend_cbor_enc_structure_encode.h +1 -1
- package/external/libedhoc/backends/cbor/include/backend_cbor_enc_structure_types.h +3 -3
- package/external/libedhoc/backends/cbor/include/backend_cbor_id_cred_x_decode.h +1 -1
- package/external/libedhoc/backends/cbor/include/backend_cbor_id_cred_x_encode.h +1 -1
- package/external/libedhoc/backends/cbor/include/backend_cbor_info_decode.h +1 -1
- package/external/libedhoc/backends/cbor/include/backend_cbor_info_encode.h +1 -1
- package/external/libedhoc/backends/cbor/include/backend_cbor_int_type_decode.h +1 -1
- package/external/libedhoc/backends/cbor/include/backend_cbor_int_type_encode.h +1 -1
- package/external/libedhoc/backends/cbor/include/backend_cbor_int_type_types.h +1 -1
- package/external/libedhoc/backends/cbor/include/backend_cbor_message_1_decode.h +1 -1
- package/external/libedhoc/backends/cbor/include/backend_cbor_message_1_encode.h +1 -1
- package/external/libedhoc/backends/cbor/include/backend_cbor_message_2_decode.h +1 -1
- package/external/libedhoc/backends/cbor/include/backend_cbor_message_2_encode.h +1 -1
- package/external/libedhoc/backends/cbor/include/backend_cbor_message_3_decode.h +1 -1
- package/external/libedhoc/backends/cbor/include/backend_cbor_message_3_encode.h +1 -1
- package/external/libedhoc/backends/cbor/include/backend_cbor_message_4_decode.h +1 -1
- package/external/libedhoc/backends/cbor/include/backend_cbor_message_4_encode.h +1 -1
- package/external/libedhoc/backends/cbor/include/backend_cbor_message_error_decode.h +1 -1
- package/external/libedhoc/backends/cbor/include/backend_cbor_message_error_encode.h +1 -1
- package/external/libedhoc/backends/cbor/include/backend_cbor_plaintext_2_decode.h +1 -1
- package/external/libedhoc/backends/cbor/include/backend_cbor_plaintext_2_encode.h +1 -1
- package/external/libedhoc/backends/cbor/include/backend_cbor_plaintext_3_decode.h +1 -1
- package/external/libedhoc/backends/cbor/include/backend_cbor_plaintext_3_encode.h +1 -1
- package/external/libedhoc/backends/cbor/include/backend_cbor_plaintext_4_decode.h +3 -3
- package/external/libedhoc/backends/cbor/include/backend_cbor_plaintext_4_encode.h +3 -3
- package/external/libedhoc/backends/cbor/include/backend_cbor_sig_structure_decode.h +1 -1
- package/external/libedhoc/backends/cbor/include/backend_cbor_sig_structure_encode.h +1 -1
- package/external/libedhoc/backends/cbor/include/backend_cbor_sig_structure_types.h +4 -4
- package/external/libedhoc/backends/cbor/include/backend_cbor_x509_types.h +93 -83
- package/external/libedhoc/backends/cbor/src/backend_cbor_bstr_type_decode.c +11 -20
- package/external/libedhoc/backends/cbor/src/backend_cbor_bstr_type_encode.c +11 -20
- package/external/libedhoc/backends/cbor/src/backend_cbor_ead_decode.c +27 -32
- package/external/libedhoc/backends/cbor/src/backend_cbor_ead_encode.c +27 -32
- package/external/libedhoc/backends/cbor/src/backend_cbor_enc_structure_decode.c +14 -23
- package/external/libedhoc/backends/cbor/src/backend_cbor_enc_structure_encode.c +14 -23
- package/external/libedhoc/backends/cbor/src/backend_cbor_id_cred_x_decode.c +63 -52
- package/external/libedhoc/backends/cbor/src/backend_cbor_id_cred_x_encode.c +62 -51
- package/external/libedhoc/backends/cbor/src/backend_cbor_info_decode.c +14 -23
- package/external/libedhoc/backends/cbor/src/backend_cbor_info_encode.c +14 -23
- package/external/libedhoc/backends/cbor/src/backend_cbor_int_type_decode.c +11 -20
- package/external/libedhoc/backends/cbor/src/backend_cbor_int_type_encode.c +11 -20
- package/external/libedhoc/backends/cbor/src/backend_cbor_message_1_decode.c +54 -51
- package/external/libedhoc/backends/cbor/src/backend_cbor_message_1_encode.c +54 -51
- package/external/libedhoc/backends/cbor/src/backend_cbor_message_2_decode.c +11 -20
- package/external/libedhoc/backends/cbor/src/backend_cbor_message_2_encode.c +11 -20
- package/external/libedhoc/backends/cbor/src/backend_cbor_message_3_decode.c +11 -20
- package/external/libedhoc/backends/cbor/src/backend_cbor_message_3_encode.c +11 -20
- package/external/libedhoc/backends/cbor/src/backend_cbor_message_4_decode.c +11 -20
- package/external/libedhoc/backends/cbor/src/backend_cbor_message_4_encode.c +11 -20
- package/external/libedhoc/backends/cbor/src/backend_cbor_message_error_decode.c +36 -37
- package/external/libedhoc/backends/cbor/src/backend_cbor_message_error_encode.c +36 -37
- package/external/libedhoc/backends/cbor/src/backend_cbor_plaintext_2_decode.c +103 -80
- package/external/libedhoc/backends/cbor/src/backend_cbor_plaintext_2_encode.c +102 -79
- package/external/libedhoc/backends/cbor/src/backend_cbor_plaintext_3_decode.c +99 -76
- package/external/libedhoc/backends/cbor/src/backend_cbor_plaintext_3_encode.c +98 -75
- package/external/libedhoc/backends/cbor/src/backend_cbor_plaintext_4_decode.c +40 -41
- package/external/libedhoc/backends/cbor/src/backend_cbor_plaintext_4_encode.c +40 -41
- package/external/libedhoc/backends/cbor/src/backend_cbor_sig_structure_decode.c +15 -24
- package/external/libedhoc/backends/cbor/src/backend_cbor_sig_structure_encode.c +15 -24
- package/external/libedhoc/externals/Unity/examples/example_1/src/ProductionCode.c +31 -0
- package/external/libedhoc/externals/Unity/examples/example_1/src/ProductionCode.h +10 -0
- package/external/libedhoc/externals/Unity/examples/example_1/src/ProductionCode2.c +18 -0
- package/external/libedhoc/externals/Unity/examples/example_1/src/ProductionCode2.h +9 -0
- package/external/libedhoc/externals/Unity/examples/example_1/test/TestProductionCode.c +69 -0
- package/external/libedhoc/externals/Unity/examples/example_1/test/TestProductionCode2.c +38 -0
- package/external/libedhoc/externals/Unity/examples/example_1/test/test_runners/TestProductionCode2_Runner.c +53 -0
- package/external/libedhoc/externals/Unity/examples/example_1/test/test_runners/TestProductionCode_Runner.c +57 -0
- package/external/libedhoc/externals/Unity/examples/example_2/src/ProductionCode.c +31 -0
- package/external/libedhoc/externals/Unity/examples/example_2/src/ProductionCode.h +10 -0
- package/external/libedhoc/externals/Unity/examples/example_2/src/ProductionCode2.c +18 -0
- package/external/libedhoc/externals/Unity/examples/example_2/src/ProductionCode2.h +9 -0
- package/external/libedhoc/externals/Unity/examples/example_2/test/TestProductionCode.c +71 -0
- package/external/libedhoc/externals/Unity/examples/example_2/test/TestProductionCode2.c +40 -0
- package/external/libedhoc/externals/Unity/examples/example_2/test/test_runners/TestProductionCode2_Runner.c +16 -0
- package/external/libedhoc/externals/Unity/examples/example_2/test/test_runners/TestProductionCode_Runner.c +18 -0
- package/external/libedhoc/externals/Unity/examples/example_2/test/test_runners/all_tests.c +19 -0
- package/external/libedhoc/externals/Unity/examples/example_3/helper/UnityHelper.c +17 -0
- package/external/libedhoc/externals/Unity/examples/example_3/helper/UnityHelper.h +19 -0
- package/external/libedhoc/externals/Unity/examples/example_3/src/ProductionCode.c +31 -0
- package/external/libedhoc/externals/Unity/examples/example_3/src/ProductionCode.h +10 -0
- package/external/libedhoc/externals/Unity/examples/example_3/src/ProductionCode2.c +18 -0
- package/external/libedhoc/externals/Unity/examples/example_3/src/ProductionCode2.h +9 -0
- package/external/libedhoc/externals/Unity/examples/example_3/test/TestProductionCode.c +69 -0
- package/external/libedhoc/externals/Unity/examples/example_3/test/TestProductionCode2.c +38 -0
- package/external/libedhoc/externals/Unity/examples/example_4/src/ProductionCode.c +31 -0
- package/external/libedhoc/externals/Unity/examples/example_4/src/ProductionCode.h +10 -0
- package/external/libedhoc/externals/Unity/examples/example_4/src/ProductionCode2.c +18 -0
- package/external/libedhoc/externals/Unity/examples/example_4/src/ProductionCode2.h +9 -0
- package/external/libedhoc/externals/Unity/examples/example_4/test/TestProductionCode.c +70 -0
- package/external/libedhoc/externals/Unity/examples/example_4/test/TestProductionCode2.c +42 -0
- package/external/libedhoc/externals/Unity/examples/example_4/test/test_runners/TestProductionCode2_Runner.c +53 -0
- package/external/libedhoc/externals/Unity/examples/example_4/test/test_runners/TestProductionCode_Runner.c +57 -0
- package/external/libedhoc/externals/Unity/examples/unity_config.h +251 -0
- package/external/libedhoc/externals/Unity/extras/bdd/src/unity_bdd.h +44 -0
- package/external/libedhoc/externals/Unity/extras/bdd/test/test_bdd.c +129 -0
- package/external/libedhoc/externals/Unity/extras/fixture/src/unity_fixture.c +310 -0
- package/external/libedhoc/externals/Unity/extras/fixture/src/unity_fixture.h +95 -0
- package/external/libedhoc/externals/Unity/extras/fixture/src/unity_fixture_internals.h +51 -0
- package/external/libedhoc/externals/Unity/extras/fixture/test/main/AllTests.c +20 -0
- package/external/libedhoc/externals/Unity/extras/fixture/test/template_fixture_tests.c +40 -0
- package/external/libedhoc/externals/Unity/extras/fixture/test/unity_fixture_Test.c +246 -0
- package/external/libedhoc/externals/Unity/extras/fixture/test/unity_fixture_TestRunner.c +33 -0
- package/external/libedhoc/externals/Unity/extras/memory/src/unity_memory.c +203 -0
- package/external/libedhoc/externals/Unity/extras/memory/src/unity_memory.h +61 -0
- package/external/libedhoc/externals/Unity/extras/memory/test/unity_memory_Test.c +326 -0
- package/external/libedhoc/externals/Unity/extras/memory/test/unity_memory_TestRunner.c +50 -0
- package/external/libedhoc/externals/Unity/extras/memory/test/unity_output_Spy.c +57 -0
- package/external/libedhoc/externals/Unity/extras/memory/test/unity_output_Spy.h +17 -0
- package/external/libedhoc/externals/Unity/src/unity.c +2501 -0
- package/external/libedhoc/externals/Unity/src/unity.h +698 -0
- package/external/libedhoc/externals/Unity/src/unity_internals.h +1183 -0
- package/external/libedhoc/externals/Unity/test/expectdata/testsample_cmd.c +61 -0
- package/external/libedhoc/externals/Unity/test/expectdata/testsample_def.c +57 -0
- package/external/libedhoc/externals/Unity/test/expectdata/testsample_head1.c +55 -0
- package/external/libedhoc/externals/Unity/test/expectdata/testsample_head1.h +15 -0
- package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_cmd.c +80 -0
- package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_def.c +76 -0
- package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_head1.c +75 -0
- package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_head1.h +13 -0
- package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_new1.c +89 -0
- package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_new2.c +89 -0
- package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_param.c +77 -0
- package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_run1.c +89 -0
- package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_run2.c +89 -0
- package/external/libedhoc/externals/Unity/test/expectdata/testsample_mock_yaml.c +90 -0
- package/external/libedhoc/externals/Unity/test/expectdata/testsample_new1.c +67 -0
- package/external/libedhoc/externals/Unity/test/expectdata/testsample_new2.c +70 -0
- package/external/libedhoc/externals/Unity/test/expectdata/testsample_param.c +58 -0
- package/external/libedhoc/externals/Unity/test/expectdata/testsample_run1.c +67 -0
- package/external/libedhoc/externals/Unity/test/expectdata/testsample_run2.c +70 -0
- package/external/libedhoc/externals/Unity/test/expectdata/testsample_yaml.c +71 -0
- package/external/libedhoc/externals/Unity/test/testdata/CException.h +18 -0
- package/external/libedhoc/externals/Unity/test/testdata/Defs.h +16 -0
- package/external/libedhoc/externals/Unity/test/testdata/cmock.h +21 -0
- package/external/libedhoc/externals/Unity/test/testdata/mockMock.h +20 -0
- package/external/libedhoc/externals/Unity/test/testdata/testRunnerGenerator.c +204 -0
- package/external/libedhoc/externals/Unity/test/testdata/testRunnerGeneratorSmall.c +73 -0
- package/external/libedhoc/externals/Unity/test/testdata/testRunnerGeneratorWithMocks.c +200 -0
- package/external/libedhoc/externals/Unity/test/tests/self_assessment_utils.h +151 -0
- package/external/libedhoc/externals/Unity/test/tests/test_unity_arrays.c +2941 -0
- package/external/libedhoc/externals/Unity/test/tests/test_unity_core.c +375 -0
- package/external/libedhoc/externals/Unity/test/tests/test_unity_doubles.c +1285 -0
- package/external/libedhoc/externals/Unity/test/tests/test_unity_floats.c +1395 -0
- package/external/libedhoc/externals/Unity/test/tests/test_unity_integers.c +2863 -0
- package/external/libedhoc/externals/Unity/test/tests/test_unity_integers_64.c +783 -0
- package/external/libedhoc/externals/Unity/test/tests/test_unity_memory.c +82 -0
- package/external/libedhoc/externals/Unity/test/tests/test_unity_parameterized.c +309 -0
- package/external/libedhoc/externals/Unity/test/tests/test_unity_parameterizedDemo.c +28 -0
- package/external/libedhoc/externals/Unity/test/tests/test_unity_strings.c +330 -0
- package/external/libedhoc/externals/Unity/test/tests/types_for_test.h +21 -0
- package/external/libedhoc/externals/zcbor/include/zcbor_common.h +147 -60
- package/external/libedhoc/externals/zcbor/include/zcbor_decode.h +291 -202
- package/external/libedhoc/externals/zcbor/include/zcbor_encode.h +100 -156
- package/external/libedhoc/externals/zcbor/include/zcbor_print.h +165 -0
- package/external/libedhoc/externals/zcbor/samples/hello_world/src/main.c +1 -1
- package/external/libedhoc/externals/zcbor/samples/pet/include/pet_decode.h +1 -1
- package/external/libedhoc/externals/zcbor/samples/pet/include/pet_encode.h +1 -1
- package/external/libedhoc/externals/zcbor/samples/pet/include/pet_types.h +4 -4
- package/external/libedhoc/externals/zcbor/samples/pet/src/main.c +4 -4
- package/external/libedhoc/externals/zcbor/samples/pet/src/pet_decode.c +15 -24
- package/external/libedhoc/externals/zcbor/samples/pet/src/pet_encode.c +14 -23
- package/external/libedhoc/externals/zcbor/src/zcbor_common.c +202 -29
- package/external/libedhoc/externals/zcbor/src/zcbor_decode.c +633 -173
- package/external/libedhoc/externals/zcbor/src/zcbor_encode.c +71 -184
- package/external/libedhoc/externals/zcbor/tests/decode/test1_suit_old_formats/src/main.c +152 -153
- package/external/libedhoc/externals/zcbor/tests/decode/test2_suit/src/main.c +64 -64
- package/external/libedhoc/externals/zcbor/tests/decode/test3_simple/src/main.c +15 -16
- package/external/libedhoc/externals/zcbor/tests/decode/test5_corner_cases/src/main.c +228 -84
- package/external/libedhoc/externals/zcbor/tests/decode/test7_suit9_simple/src/main.c +9 -9
- package/external/libedhoc/externals/zcbor/tests/decode/test8_suit12/src/main.c +0 -1
- package/external/libedhoc/externals/zcbor/tests/decode/test9_manifest14/src/main.c +172 -173
- package/external/libedhoc/externals/zcbor/tests/encode/test1_suit/src/main.c +73 -73
- package/external/libedhoc/externals/zcbor/tests/encode/test2_simple/src/main.c +1 -2
- package/external/libedhoc/externals/zcbor/tests/encode/test3_corner_cases/src/main.c +83 -56
- package/external/libedhoc/externals/zcbor/tests/encode/test4_senml/src/main.c +15 -16
- package/external/libedhoc/externals/zcbor/tests/fuzz/fuzz_everything.c +12 -0
- package/external/libedhoc/externals/zcbor/tests/fuzz/fuzz_manifest12.c +69 -69
- package/external/libedhoc/externals/zcbor/tests/unit/test1_unit_tests/src/main.c +448 -55
- package/external/libedhoc/externals/zcbor/tests/unit/test3_float16/src/main.c +49 -48
- package/external/libedhoc/include/edhoc.h +348 -54
- package/external/libedhoc/include/edhoc_common.h +289 -0
- package/external/libedhoc/include/edhoc_context.h +60 -35
- package/external/libedhoc/include/edhoc_credentials.h +55 -7
- package/external/libedhoc/include/edhoc_crypto.h +10 -10
- package/external/libedhoc/include/edhoc_ead.h +13 -10
- package/external/libedhoc/include/edhoc_macros.h +20 -11
- package/external/libedhoc/include/edhoc_values.h +2 -2
- package/external/libedhoc/library/edhoc.c +70 -36
- package/external/libedhoc/library/edhoc_common.c +1314 -0
- package/external/libedhoc/library/edhoc_exporter.c +45 -46
- package/external/libedhoc/library/edhoc_message_1.c +107 -72
- package/external/libedhoc/library/edhoc_message_2.c +396 -1693
- package/external/libedhoc/library/edhoc_message_3.c +465 -1656
- package/external/libedhoc/library/edhoc_message_4.c +93 -91
- package/external/libedhoc/library/edhoc_message_error.c +41 -41
- package/external/libedhoc/tests/include/{cipher_suites/cipher_suite_0.h → cipher_suite_0.h} +131 -134
- package/external/libedhoc/tests/include/{cipher_suites/cipher_suite_2.h → cipher_suite_2.h} +139 -140
- package/external/libedhoc/tests/include/{edhoc_trace_1/test_vector_1.h → test_vector_rfc9529_chapter_2.h} +786 -738
- package/external/libedhoc/tests/include/{edhoc_trace_2/test_vector_2.h → test_vector_rfc9529_chapter_3.h} +14 -10
- 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
- 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
- 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
- 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
- package/external/libedhoc/tests/src/{cipher_suites/cipher_suite_0.c → cipher_suite_0.c} +445 -447
- package/external/libedhoc/tests/src/{cipher_suites/cipher_suite_2.c → cipher_suite_2.c} +600 -600
- package/external/libedhoc/tests/src/module_test_api.c +430 -0
- package/external/libedhoc/tests/src/module_test_cipher_suite_0.c +395 -0
- package/external/libedhoc/tests/src/module_test_cipher_suite_2.c +392 -0
- package/external/libedhoc/tests/src/{error_message/test_edhoc_error_message.c → module_test_error_message.c} +94 -69
- package/external/libedhoc/tests/src/module_test_main.c +49 -0
- package/external/libedhoc/tests/src/{cipher_suite_negotiation/test_edhoc_cipher_suite_negotiation.c → module_test_rfc9528_suites_negotiation.c} +224 -227
- package/external/libedhoc/tests/src/module_test_rfc9529_chapter_2.c +2681 -0
- package/external/libedhoc/tests/src/module_test_rfc9529_chapter_3.c +1635 -0
- package/external/libedhoc/tests/src/module_test_x5chain_sign_keys_suite_0.c +1135 -0
- package/external/libedhoc/tests/src/module_test_x5chain_sign_keys_suite_2.c +1249 -0
- package/external/libedhoc/tests/src/module_test_x5chain_static_dh_keys_suite_2.c +798 -0
- package/external/libedhoc/tests/src/module_test_x5t_sign_keys_suite_2.c +956 -0
- package/include/EdhocComposeAsyncWorker.h +8 -6
- package/include/EdhocCredentialManager.h +16 -11
- package/include/EdhocCryptoManager.h +28 -21
- package/include/EdhocEadManager.h +3 -6
- package/include/{EdhocExportAsyncWorker.h → EdhocExportOscoreAsyncWorker.h} +20 -17
- package/include/EdhocKeyExporterAsyncWorker.h +76 -0
- package/include/EdhocKeyUpdateAsyncWorker.h +72 -0
- package/include/EdhocProcessAsyncWorker.h +14 -10
- package/include/LibEDHOC.h +44 -20
- package/include/UserContext.h +7 -9
- package/include/Utils.h +31 -27
- package/package.json +14 -3
- package/prebuilds/android-arm/edhoc.armv7.node +0 -0
- package/prebuilds/android-arm64/edhoc.armv8.node +0 -0
- package/prebuilds/darwin-arm64/edhoc.node +0 -0
- package/prebuilds/darwin-x64/edhoc.node +0 -0
- package/prebuilds/linux-arm/edhoc.armv6.node +0 -0
- package/prebuilds/linux-arm/edhoc.armv7.node +0 -0
- package/prebuilds/linux-arm64/edhoc.armv8.node +0 -0
- package/prebuilds/linux-x64/edhoc.glibc.node +0 -0
- package/prebuilds/linux-x64/edhoc.musl.node +0 -0
- package/prebuilds/win32-ia32/edhoc.node +0 -0
- package/prebuilds/win32-x64/edhoc.node +0 -0
- package/src/EdhocComposeAsyncWorker.cpp +18 -35
- package/src/EdhocCredentialManager.cpp +160 -187
- package/src/EdhocCryptoManager.cpp +386 -586
- package/src/EdhocEadManager.cpp +10 -18
- package/src/EdhocExportOscoreAsyncWorker.cpp +77 -0
- package/src/EdhocKeyExporterAsyncWorker.cpp +49 -0
- package/src/EdhocKeyUpdateAsyncWorker.cpp +41 -0
- package/src/EdhocProcessAsyncWorker.cpp +72 -19
- package/src/LibEDHOC.cpp +213 -174
- package/src/Suites.cpp +39 -72
- package/src/Utils.cpp +32 -56
- package/test/basic.test.ts +64 -0
- package/test/vectors.test.ts +111 -0
- package/external/libedhoc/externals/zcbor/include/zcbor_debug.h +0 -69
- package/external/libedhoc/tests/include/cipher_suite_negotiation/test_edhoc_cipher_suite_negotiation.h +0 -37
- package/external/libedhoc/tests/include/cipher_suites/test_cipher_suite_0.h +0 -48
- package/external/libedhoc/tests/include/cipher_suites/test_cipher_suite_2.h +0 -48
- package/external/libedhoc/tests/include/edhoc_trace_1/authentication_credentials_1.h +0 -60
- package/external/libedhoc/tests/include/edhoc_trace_1/test_edhoc_handshake_1.h +0 -208
- package/external/libedhoc/tests/include/edhoc_trace_1/test_edhoc_handshake_ead_1.h +0 -59
- package/external/libedhoc/tests/include/edhoc_trace_2/authentication_credentials_2.h +0 -60
- package/external/libedhoc/tests/include/edhoc_trace_2/test_edhoc_handshake_2.h +0 -199
- package/external/libedhoc/tests/include/error_message/test_edhoc_error_message.h +0 -48
- package/external/libedhoc/tests/include/x509_chain_cs_0/authentication_credentials_x5chain_cs_0.h +0 -92
- package/external/libedhoc/tests/include/x509_chain_cs_0/test_edhoc_handshake_x5chain_cs_0.h +0 -96
- package/external/libedhoc/tests/include/x509_chain_cs_2/authentication_credentials_x5chain_cs_2.h +0 -58
- package/external/libedhoc/tests/include/x509_chain_cs_2/test_edhoc_handshake_x5chain_cs_2.h +0 -56
- package/external/libedhoc/tests/include/x509_chain_cs_2/test_edhoc_handshake_x5chain_cs_2_ead.h +0 -57
- package/external/libedhoc/tests/include/x509_chain_cs_2_static_dh/authentication_credentials_x5chain_cs_2_static_dh.h +0 -59
- package/external/libedhoc/tests/include/x509_chain_cs_2_static_dh/test_edhoc_handshake_x5chain_cs_2_static_dh_ead.h +0 -57
- package/external/libedhoc/tests/include/x509_hash_cs_2/authentication_credentials_x5t_cs_2.h +0 -60
- package/external/libedhoc/tests/include/x509_hash_cs_2/test_edhoc_handshake_x5t_cs_2_ead.h +0 -57
- package/external/libedhoc/tests/src/cipher_suites/test_cipher_suite_0.c +0 -475
- package/external/libedhoc/tests/src/cipher_suites/test_cipher_suite_2.c +0 -473
- package/external/libedhoc/tests/src/edhoc_trace_1/authentication_credentials_1.c +0 -252
- package/external/libedhoc/tests/src/edhoc_trace_1/test_edhoc_handshake_1.c +0 -1829
- package/external/libedhoc/tests/src/edhoc_trace_1/test_edhoc_handshake_ead_1.c +0 -1247
- package/external/libedhoc/tests/src/edhoc_trace_2/authentication_credentials_2.c +0 -170
- package/external/libedhoc/tests/src/edhoc_trace_2/test_edhoc_handshake_2.c +0 -1783
- package/external/libedhoc/tests/src/tests.c +0 -228
- package/external/libedhoc/tests/src/x509_chain_cs_0/authentication_credentials_x5chain_cs_0.c +0 -332
- package/external/libedhoc/tests/src/x509_chain_cs_0/test_edhoc_handshake_x5chain_cs_0.c +0 -936
- package/external/libedhoc/tests/src/x509_chain_cs_2/authentication_credentials_x5chain_cs_2.c +0 -166
- package/external/libedhoc/tests/src/x509_chain_cs_2/test_edhoc_handshake_x5chain_cs_2.c +0 -587
- package/external/libedhoc/tests/src/x509_chain_cs_2/test_edhoc_handshake_x5chain_cs_2_ead.c +0 -917
- package/external/libedhoc/tests/src/x509_chain_cs_2_static_dh/authentication_credentials_x5chain_cs_2_static_dh.c +0 -186
- package/external/libedhoc/tests/src/x509_chain_cs_2_static_dh/test_edhoc_handshake_x5chain_cs_2_static_dh_ead.c +0 -743
- package/external/libedhoc/tests/src/x509_hash_cs_2/authentication_credentials_x5t_cs_2.c +0 -261
- package/external/libedhoc/tests/src/x509_hash_cs_2/test_edhoc_handshake_x5t_cs_2_ead.c +0 -854
- package/src/EdhocExportAsyncWorker.cpp +0 -82
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* \file edhoc_exporter.c
|
|
3
3
|
* \author Kamil Kielbasa
|
|
4
4
|
* \brief EDHOC exporter for PRK exporter, key update or OSCORE session.
|
|
5
|
-
* \version 0.
|
|
6
|
-
* \date 2024-
|
|
5
|
+
* \version 0.6
|
|
6
|
+
* \date 2024-08-05
|
|
7
7
|
*
|
|
8
8
|
* \copyright Copyright (c) 2024
|
|
9
9
|
*
|
|
@@ -139,26 +139,26 @@ static int compute_prk_out(struct edhoc_context *ctx)
|
|
|
139
139
|
len += ctx->th_len + cbor_bstr_overhead(ctx->th_len);
|
|
140
140
|
len += cbor_int_mem_req((int32_t)csuite.hash_length);
|
|
141
141
|
|
|
142
|
-
|
|
143
|
-
memset(info, 0,
|
|
142
|
+
VLA_ALLOC(uint8_t, info, len);
|
|
143
|
+
memset(info, 0, VLA_SIZEOF(info));
|
|
144
144
|
|
|
145
145
|
/* Generate PRK_out. */
|
|
146
146
|
struct info input_info = {
|
|
147
|
-
.
|
|
148
|
-
.
|
|
149
|
-
.
|
|
150
|
-
.
|
|
147
|
+
.info_label = EDHOC_EXTRACT_PRK_INFO_LABEL_PRK_OUT,
|
|
148
|
+
.info_context.value = ctx->th,
|
|
149
|
+
.info_context.len = ctx->th_len,
|
|
150
|
+
.info_length = (uint32_t)csuite.hash_length,
|
|
151
151
|
};
|
|
152
152
|
|
|
153
153
|
len = 0;
|
|
154
|
-
ret = cbor_encode_info(info,
|
|
154
|
+
ret = cbor_encode_info(info, VLA_SIZE(info), &input_info, &len);
|
|
155
155
|
|
|
156
156
|
if (ZCBOR_SUCCESS != ret)
|
|
157
157
|
return EDHOC_ERROR_CBOR_FAILURE;
|
|
158
158
|
|
|
159
|
-
uint8_t key_id[
|
|
160
|
-
ret = ctx->keys.
|
|
161
|
-
|
|
159
|
+
uint8_t key_id[CONFIG_LIBEDHOC_KEY_ID_LEN] = { 0 };
|
|
160
|
+
ret = ctx->keys.import_key(ctx->user_ctx, EDHOC_KT_EXPAND, ctx->prk,
|
|
161
|
+
ctx->prk_len, key_id);
|
|
162
162
|
|
|
163
163
|
if (EDHOC_SUCCESS != ret)
|
|
164
164
|
return EDHOC_ERROR_CRYPTO_FAILURE;
|
|
@@ -198,26 +198,26 @@ static int compute_new_prk_out(struct edhoc_context *ctx,
|
|
|
198
198
|
len += entropy_len + cbor_bstr_overhead(entropy_len);
|
|
199
199
|
len += cbor_int_mem_req((int32_t)csuite.hash_length);
|
|
200
200
|
|
|
201
|
-
|
|
202
|
-
memset(info, 0,
|
|
201
|
+
VLA_ALLOC(uint8_t, info, len);
|
|
202
|
+
memset(info, 0, VLA_SIZEOF(info));
|
|
203
203
|
|
|
204
204
|
/* Generate PRK_out. */
|
|
205
205
|
struct info input_info = {
|
|
206
|
-
.
|
|
207
|
-
.
|
|
208
|
-
.
|
|
209
|
-
.
|
|
206
|
+
.info_label = EDHOC_EXTRACT_PRK_INFO_LABEL_NEW_PRK_OUT,
|
|
207
|
+
.info_context.value = entropy,
|
|
208
|
+
.info_context.len = entropy_len,
|
|
209
|
+
.info_length = (uint32_t)csuite.hash_length,
|
|
210
210
|
};
|
|
211
211
|
|
|
212
212
|
len = 0;
|
|
213
|
-
ret = cbor_encode_info(info,
|
|
213
|
+
ret = cbor_encode_info(info, VLA_SIZE(info), &input_info, &len);
|
|
214
214
|
|
|
215
215
|
if (ZCBOR_SUCCESS != ret)
|
|
216
216
|
return EDHOC_ERROR_CBOR_FAILURE;
|
|
217
217
|
|
|
218
|
-
uint8_t key_id[
|
|
219
|
-
ret = ctx->keys.
|
|
220
|
-
|
|
218
|
+
uint8_t key_id[CONFIG_LIBEDHOC_KEY_ID_LEN] = { 0 };
|
|
219
|
+
ret = ctx->keys.import_key(ctx->user_ctx, EDHOC_KT_EXPAND, ctx->prk,
|
|
220
|
+
ctx->prk_len, key_id);
|
|
221
221
|
|
|
222
222
|
if (EDHOC_SUCCESS != ret)
|
|
223
223
|
return EDHOC_ERROR_CRYPTO_FAILURE;
|
|
@@ -253,26 +253,26 @@ static int compute_prk_exporter(const struct edhoc_context *ctx,
|
|
|
253
253
|
len += 1 + cbor_bstr_overhead(0); /* cbor empty byte string. */
|
|
254
254
|
len += cbor_int_mem_req((int32_t)csuite.hash_length);
|
|
255
255
|
|
|
256
|
-
|
|
257
|
-
memset(info, 0,
|
|
256
|
+
VLA_ALLOC(uint8_t, info, len);
|
|
257
|
+
memset(info, 0, VLA_SIZEOF(info));
|
|
258
258
|
|
|
259
259
|
struct info input_info = {
|
|
260
|
-
.
|
|
260
|
+
.info_label =
|
|
261
261
|
(int32_t)EDHOC_EXTRACT_PRK_INFO_LABEL_PRK_EXPORTER,
|
|
262
|
-
.
|
|
263
|
-
.
|
|
264
|
-
.
|
|
262
|
+
.info_context.value = NULL,
|
|
263
|
+
.info_context.len = 0,
|
|
264
|
+
.info_length = (uint32_t)csuite.hash_length,
|
|
265
265
|
};
|
|
266
266
|
|
|
267
267
|
len = 0;
|
|
268
|
-
ret = cbor_encode_info(info,
|
|
268
|
+
ret = cbor_encode_info(info, VLA_SIZE(info), &input_info, &len);
|
|
269
269
|
|
|
270
270
|
if (ZCBOR_SUCCESS != ret)
|
|
271
271
|
return EDHOC_ERROR_CBOR_FAILURE;
|
|
272
272
|
|
|
273
|
-
uint8_t key_id[
|
|
274
|
-
ret = ctx->keys.
|
|
275
|
-
|
|
273
|
+
uint8_t key_id[CONFIG_LIBEDHOC_KEY_ID_LEN] = { 0 };
|
|
274
|
+
ret = ctx->keys.import_key(ctx->user_ctx, EDHOC_KT_EXPAND, ctx->prk,
|
|
275
|
+
ctx->prk_len, key_id);
|
|
276
276
|
|
|
277
277
|
if (EDHOC_SUCCESS != ret)
|
|
278
278
|
return EDHOC_ERROR_CRYPTO_FAILURE;
|
|
@@ -333,10 +333,10 @@ int edhoc_export_prk_exporter(struct edhoc_context *ctx, size_t label,
|
|
|
333
333
|
ctx->csuite[ctx->chosen_csuite_idx];
|
|
334
334
|
|
|
335
335
|
/* 3. Compute pseudo random key exporter (PRK_exporter). */
|
|
336
|
-
|
|
337
|
-
memset(prk_exporter, 0,
|
|
336
|
+
VLA_ALLOC(uint8_t, prk_exporter, csuite.hash_length);
|
|
337
|
+
memset(prk_exporter, 0, VLA_SIZEOF(prk_exporter));
|
|
338
338
|
|
|
339
|
-
ret = compute_prk_exporter(ctx, prk_exporter,
|
|
339
|
+
ret = compute_prk_exporter(ctx, prk_exporter, VLA_SIZE(prk_exporter));
|
|
340
340
|
|
|
341
341
|
if (EDHOC_SUCCESS != ret)
|
|
342
342
|
return EDHOC_ERROR_PSEUDORANDOM_KEY_FAILURE;
|
|
@@ -347,26 +347,25 @@ int edhoc_export_prk_exporter(struct edhoc_context *ctx, size_t label,
|
|
|
347
347
|
len += 1 + cbor_bstr_overhead(0); /* cbor empty byte string. */
|
|
348
348
|
len += cbor_int_mem_req((int32_t)csuite.hash_length);
|
|
349
349
|
|
|
350
|
-
|
|
351
|
-
memset(info, 0,
|
|
350
|
+
VLA_ALLOC(uint8_t, info, len);
|
|
351
|
+
memset(info, 0, VLA_SIZEOF(info));
|
|
352
352
|
|
|
353
353
|
const struct info input_info = (struct info){
|
|
354
|
-
.
|
|
355
|
-
.
|
|
356
|
-
.
|
|
357
|
-
.
|
|
354
|
+
.info_label = (int32_t)label,
|
|
355
|
+
.info_context.value = NULL,
|
|
356
|
+
.info_context.len = 0,
|
|
357
|
+
.info_length = (uint32_t)secret_len,
|
|
358
358
|
};
|
|
359
359
|
|
|
360
360
|
len = 0;
|
|
361
|
-
ret = cbor_encode_info(info,
|
|
361
|
+
ret = cbor_encode_info(info, VLA_SIZE(info), &input_info, &len);
|
|
362
362
|
|
|
363
363
|
if (ZCBOR_SUCCESS != ret)
|
|
364
364
|
return EDHOC_ERROR_CBOR_FAILURE;
|
|
365
365
|
|
|
366
|
-
uint8_t key_id[
|
|
367
|
-
ret = ctx->keys.
|
|
368
|
-
|
|
369
|
-
key_id);
|
|
366
|
+
uint8_t key_id[CONFIG_LIBEDHOC_KEY_ID_LEN] = { 0 };
|
|
367
|
+
ret = ctx->keys.import_key(ctx->user_ctx, EDHOC_KT_EXPAND, prk_exporter,
|
|
368
|
+
VLA_SIZE(prk_exporter), key_id);
|
|
370
369
|
|
|
371
370
|
if (EDHOC_SUCCESS != ret)
|
|
372
371
|
return EDHOC_ERROR_CRYPTO_FAILURE;
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* \file edhoc_message_1.c
|
|
3
3
|
* \author Kamil Kielbasa
|
|
4
4
|
* \brief EDHOC message 1.
|
|
5
|
-
* \version 0.
|
|
6
|
-
* \date 2024-
|
|
5
|
+
* \version 0.6
|
|
6
|
+
* \date 2024-08-05
|
|
7
7
|
*
|
|
8
8
|
* \copyright Copyright (c) 2024
|
|
9
9
|
*
|
|
@@ -48,7 +48,8 @@
|
|
|
48
48
|
|
|
49
49
|
/*
|
|
50
50
|
* Steps for composition of message 1:
|
|
51
|
-
*
|
|
51
|
+
* 1a. Choose most preferred cipher suite.
|
|
52
|
+
* 1b. Choose most preferred method.
|
|
52
53
|
* 2. Generate ephemeral Diffie-Hellmann key pair.
|
|
53
54
|
* 3a. Fill CBOR structure for message 1 - method.
|
|
54
55
|
* 3b. Fill CBOR structure for message 1 - cipher suite.
|
|
@@ -74,33 +75,37 @@ int edhoc_message_1_compose(struct edhoc_context *ctx, uint8_t *msg_1,
|
|
|
74
75
|
|
|
75
76
|
ctx->status = EDHOC_SM_ABORTED;
|
|
76
77
|
ctx->error_code = EDHOC_ERROR_CODE_UNSPECIFIED_ERROR;
|
|
78
|
+
ctx->message = EDHOC_MSG_1;
|
|
79
|
+
ctx->role = EDHOC_INITIATOR;
|
|
77
80
|
|
|
78
|
-
/*
|
|
81
|
+
/* 1a. Choose most preferred cipher suite. */
|
|
79
82
|
if (0 == ctx->csuite_len)
|
|
80
|
-
return
|
|
83
|
+
return EDHOC_ERROR_BAD_STATE;
|
|
81
84
|
|
|
82
85
|
ctx->chosen_csuite_idx = ctx->csuite_len - 1;
|
|
83
86
|
const struct edhoc_cipher_suite csuite =
|
|
84
87
|
ctx->csuite[ctx->chosen_csuite_idx];
|
|
85
88
|
|
|
89
|
+
/* 1b. Choose most preferred method. */
|
|
90
|
+
ctx->chosen_method = ctx->method[0];
|
|
91
|
+
|
|
86
92
|
/* 2. Generate ephemeral Diffie-Hellmann key pair. */
|
|
87
|
-
uint8_t key_id[
|
|
88
|
-
ret = ctx->keys.
|
|
89
|
-
|
|
93
|
+
uint8_t key_id[CONFIG_LIBEDHOC_KEY_ID_LEN] = { 0 };
|
|
94
|
+
ret = ctx->keys.import_key(ctx->user_ctx, EDHOC_KT_MAKE_KEY_PAIR, NULL,
|
|
95
|
+
0, key_id);
|
|
90
96
|
|
|
91
97
|
if (EDHOC_SUCCESS != ret)
|
|
92
98
|
return EDHOC_ERROR_EPHEMERAL_DIFFIE_HELLMAN_FAILURE;
|
|
93
99
|
|
|
94
|
-
|
|
95
|
-
memset(dh_pub_key, 0,
|
|
100
|
+
VLA_ALLOC(uint8_t, dh_pub_key, csuite.ecc_key_length);
|
|
101
|
+
memset(dh_pub_key, 0, VLA_SIZEOF(dh_pub_key));
|
|
96
102
|
|
|
97
103
|
size_t dh_priv_key_len = 0;
|
|
98
104
|
size_t dh_pub_key_len = 0;
|
|
99
105
|
ret = ctx->crypto.make_key_pair(ctx->user_ctx, key_id, ctx->dh_priv_key,
|
|
100
106
|
ARRAY_SIZE(ctx->dh_priv_key),
|
|
101
107
|
&dh_priv_key_len, dh_pub_key,
|
|
102
|
-
|
|
103
|
-
&dh_pub_key_len);
|
|
108
|
+
VLA_SIZE(dh_pub_key), &dh_pub_key_len);
|
|
104
109
|
ctx->keys.destroy_key(ctx->user_ctx, key_id);
|
|
105
110
|
|
|
106
111
|
if (EDHOC_SUCCESS != ret || csuite.ecc_key_length != dh_priv_key_len ||
|
|
@@ -118,44 +123,44 @@ int edhoc_message_1_compose(struct edhoc_context *ctx, uint8_t *msg_1,
|
|
|
118
123
|
struct message_1 cbor_enc_msg_1 = { 0 };
|
|
119
124
|
|
|
120
125
|
/* 3a. Fill CBOR structure for message 1 - method. */
|
|
121
|
-
cbor_enc_msg_1.
|
|
126
|
+
cbor_enc_msg_1.message_1_METHOD = (int32_t)ctx->chosen_method;
|
|
122
127
|
|
|
123
128
|
/* 3b. Fill CBOR structure for message 1 - cipher suite. */
|
|
124
129
|
if (1UL == ctx->csuite_len) {
|
|
125
|
-
cbor_enc_msg_1.
|
|
126
|
-
cbor_enc_msg_1.
|
|
130
|
+
cbor_enc_msg_1.message_1_SUITES_I.suites_choice = suites_int_c;
|
|
131
|
+
cbor_enc_msg_1.message_1_SUITES_I.suites_int = csuite.value;
|
|
127
132
|
} else {
|
|
128
|
-
cbor_enc_msg_1.
|
|
129
|
-
|
|
130
|
-
cbor_enc_msg_1.
|
|
133
|
+
cbor_enc_msg_1.message_1_SUITES_I.suites_choice =
|
|
134
|
+
suites_int_l_c;
|
|
135
|
+
cbor_enc_msg_1.message_1_SUITES_I.suites_int_l_int_count =
|
|
131
136
|
ctx->csuite_len;
|
|
132
137
|
|
|
133
|
-
if (ARRAY_SIZE(cbor_enc_msg_1.
|
|
134
|
-
.
|
|
138
|
+
if (ARRAY_SIZE(cbor_enc_msg_1.message_1_SUITES_I
|
|
139
|
+
.suites_int_l_int) < ctx->csuite_len) {
|
|
135
140
|
return EDHOC_ERROR_BUFFER_TOO_SMALL;
|
|
136
141
|
}
|
|
137
142
|
|
|
138
143
|
for (size_t i = 0; i < ctx->csuite_len; ++i) {
|
|
139
|
-
cbor_enc_msg_1.
|
|
144
|
+
cbor_enc_msg_1.message_1_SUITES_I.suites_int_l_int[i] =
|
|
140
145
|
ctx->csuite[i].value;
|
|
141
146
|
}
|
|
142
147
|
}
|
|
143
148
|
|
|
144
149
|
/* 3c. Fill CBOR structure for message 1 - ephemeral public key. */
|
|
145
|
-
cbor_enc_msg_1.
|
|
146
|
-
cbor_enc_msg_1.
|
|
150
|
+
cbor_enc_msg_1.message_1_G_X.value = dh_pub_key;
|
|
151
|
+
cbor_enc_msg_1.message_1_G_X.len = VLA_SIZE(dh_pub_key);
|
|
147
152
|
|
|
148
153
|
/* 3d. Fill CBOR structure for message 1 - connection identifier. */
|
|
149
154
|
switch (ctx->cid.encode_type) {
|
|
150
155
|
case EDHOC_CID_TYPE_ONE_BYTE_INTEGER:
|
|
151
|
-
cbor_enc_msg_1.
|
|
152
|
-
cbor_enc_msg_1.
|
|
156
|
+
cbor_enc_msg_1.message_1_C_I_choice = message_1_C_I_int_c;
|
|
157
|
+
cbor_enc_msg_1.message_1_C_I_int = ctx->cid.int_value;
|
|
153
158
|
break;
|
|
154
159
|
|
|
155
160
|
case EDHOC_CID_TYPE_BYTE_STRING:
|
|
156
|
-
cbor_enc_msg_1.
|
|
157
|
-
cbor_enc_msg_1.
|
|
158
|
-
cbor_enc_msg_1.
|
|
161
|
+
cbor_enc_msg_1.message_1_C_I_choice = message_1_C_I_bstr_c;
|
|
162
|
+
cbor_enc_msg_1.message_1_C_I_bstr.value = ctx->cid.bstr_value;
|
|
163
|
+
cbor_enc_msg_1.message_1_C_I_bstr.len = ctx->cid.bstr_length;
|
|
159
164
|
break;
|
|
160
165
|
|
|
161
166
|
default:
|
|
@@ -164,7 +169,7 @@ int edhoc_message_1_compose(struct edhoc_context *ctx, uint8_t *msg_1,
|
|
|
164
169
|
|
|
165
170
|
/* 3e. Fill CBOR structure for message 1 - external authorization data if present. */
|
|
166
171
|
if (NULL != ctx->ead.compose && 0 != ARRAY_SIZE(ctx->ead_token) - 1) {
|
|
167
|
-
ret = ctx->ead.compose(ctx->user_ctx,
|
|
172
|
+
ret = ctx->ead.compose(ctx->user_ctx, ctx->message,
|
|
168
173
|
ctx->ead_token,
|
|
169
174
|
ARRAY_SIZE(ctx->ead_token) - 1,
|
|
170
175
|
&ctx->nr_of_ead_tokens);
|
|
@@ -192,23 +197,25 @@ int edhoc_message_1_compose(struct edhoc_context *ctx, uint8_t *msg_1,
|
|
|
192
197
|
}
|
|
193
198
|
|
|
194
199
|
if (0 != ctx->nr_of_ead_tokens) {
|
|
195
|
-
cbor_enc_msg_1.
|
|
196
|
-
cbor_enc_msg_1.
|
|
200
|
+
cbor_enc_msg_1.message_1_EAD_1_m_present = true;
|
|
201
|
+
cbor_enc_msg_1.message_1_EAD_1_m.EAD_1_count =
|
|
197
202
|
ctx->nr_of_ead_tokens;
|
|
198
203
|
|
|
199
204
|
for (size_t i = 0; i < ctx->nr_of_ead_tokens; ++i) {
|
|
200
|
-
cbor_enc_msg_1.
|
|
201
|
-
.
|
|
202
|
-
cbor_enc_msg_1.
|
|
203
|
-
ctx->ead_token[i].label;
|
|
204
|
-
cbor_enc_msg_1.
|
|
205
|
-
.
|
|
206
|
-
|
|
205
|
+
cbor_enc_msg_1.message_1_EAD_1_m.EAD_1[i]
|
|
206
|
+
.ead_x_ead_value_present = true;
|
|
207
|
+
cbor_enc_msg_1.message_1_EAD_1_m.EAD_1[i]
|
|
208
|
+
.ead_x_ead_label = ctx->ead_token[i].label;
|
|
209
|
+
cbor_enc_msg_1.message_1_EAD_1_m.EAD_1[i]
|
|
210
|
+
.ead_x_ead_value.value =
|
|
211
|
+
ctx->ead_token[i].value;
|
|
212
|
+
cbor_enc_msg_1.message_1_EAD_1_m.EAD_1[i]
|
|
213
|
+
.ead_x_ead_value.len =
|
|
207
214
|
ctx->ead_token[i].value_len;
|
|
208
215
|
}
|
|
209
216
|
} else {
|
|
210
|
-
cbor_enc_msg_1.
|
|
211
|
-
cbor_enc_msg_1.
|
|
217
|
+
cbor_enc_msg_1.message_1_EAD_1_m_present = false;
|
|
218
|
+
cbor_enc_msg_1.message_1_EAD_1_m.EAD_1_count = 0;
|
|
212
219
|
}
|
|
213
220
|
|
|
214
221
|
/* 4. Encode cbor sequence of message 1. */
|
|
@@ -263,6 +270,8 @@ int edhoc_message_1_process(struct edhoc_context *ctx, const uint8_t *msg_1,
|
|
|
263
270
|
|
|
264
271
|
ctx->status = EDHOC_SM_ABORTED;
|
|
265
272
|
ctx->error_code = EDHOC_ERROR_CODE_UNSPECIFIED_ERROR;
|
|
273
|
+
ctx->message = EDHOC_MSG_1;
|
|
274
|
+
ctx->role = EDHOC_RESPONDER;
|
|
266
275
|
|
|
267
276
|
int ret = EDHOC_ERROR_GENERIC_ERROR;
|
|
268
277
|
|
|
@@ -276,33 +285,59 @@ int edhoc_message_1_process(struct edhoc_context *ctx, const uint8_t *msg_1,
|
|
|
276
285
|
|
|
277
286
|
/* 2. Choose most preferred cipher suite. */
|
|
278
287
|
if (0 == ctx->csuite_len)
|
|
279
|
-
return
|
|
288
|
+
return EDHOC_ERROR_BAD_STATE;
|
|
280
289
|
|
|
281
290
|
ctx->chosen_csuite_idx = ctx->csuite_len - 1;
|
|
282
291
|
const struct edhoc_cipher_suite csuite =
|
|
283
292
|
ctx->csuite[ctx->chosen_csuite_idx];
|
|
284
293
|
|
|
285
294
|
/* 3a. Verify method. */
|
|
286
|
-
|
|
295
|
+
bool method_match = false;
|
|
296
|
+
for (size_t i = 0; i < ctx->method_len; ++i) {
|
|
297
|
+
if ((int32_t)ctx->method[i] ==
|
|
298
|
+
cbor_dec_msg_1.message_1_METHOD) {
|
|
299
|
+
ctx->chosen_method = ctx->method[i];
|
|
300
|
+
method_match = true;
|
|
301
|
+
break;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
if (false == method_match)
|
|
287
306
|
return EDHOC_ERROR_MSG_1_PROCESS_FAILURE;
|
|
288
307
|
|
|
289
308
|
/* 3b. Verify cipher suite. */
|
|
290
|
-
switch (cbor_dec_msg_1.
|
|
291
|
-
case
|
|
309
|
+
switch (cbor_dec_msg_1.message_1_SUITES_I.suites_choice) {
|
|
310
|
+
case suites_int_c: {
|
|
311
|
+
ctx->peer_csuite[ctx->peer_csuite_len].value =
|
|
312
|
+
cbor_dec_msg_1.message_1_SUITES_I.suites_int;
|
|
313
|
+
ctx->peer_csuite_len = 1;
|
|
314
|
+
|
|
292
315
|
if (csuite.value !=
|
|
293
|
-
cbor_dec_msg_1.
|
|
316
|
+
cbor_dec_msg_1.message_1_SUITES_I.suites_int) {
|
|
294
317
|
ctx->error_code =
|
|
295
318
|
EDHOC_ERROR_CODE_WRONG_SELECTED_CIPHER_SUITE;
|
|
296
319
|
return EDHOC_ERROR_MSG_1_PROCESS_FAILURE;
|
|
297
320
|
}
|
|
321
|
+
|
|
298
322
|
break;
|
|
299
323
|
}
|
|
300
324
|
|
|
301
|
-
case
|
|
325
|
+
case suites_int_l_c: {
|
|
326
|
+
if (ARRAY_SIZE(ctx->peer_csuite) <
|
|
327
|
+
cbor_dec_msg_1.message_1_SUITES_I.suites_int_l_int_count)
|
|
328
|
+
return EDHOC_ERROR_BUFFER_TOO_SMALL;
|
|
329
|
+
|
|
330
|
+
ctx->peer_csuite_len =
|
|
331
|
+
cbor_dec_msg_1.message_1_SUITES_I.suites_int_l_int_count;
|
|
332
|
+
for (size_t i = 0; i < ctx->peer_csuite_len; ++i)
|
|
333
|
+
ctx->peer_csuite[i].value =
|
|
334
|
+
cbor_dec_msg_1.message_1_SUITES_I
|
|
335
|
+
.suites_int_l_int[i];
|
|
336
|
+
|
|
302
337
|
if (csuite.value !=
|
|
303
|
-
cbor_dec_msg_1.
|
|
304
|
-
.
|
|
305
|
-
.
|
|
338
|
+
cbor_dec_msg_1.message_1_SUITES_I
|
|
339
|
+
.suites_int_l_int[cbor_dec_msg_1.message_1_SUITES_I
|
|
340
|
+
.suites_int_l_int_count -
|
|
306
341
|
1]) {
|
|
307
342
|
ctx->error_code =
|
|
308
343
|
EDHOC_ERROR_CODE_WRONG_SELECTED_CIPHER_SUITE;
|
|
@@ -317,39 +352,39 @@ int edhoc_message_1_process(struct edhoc_context *ctx, const uint8_t *msg_1,
|
|
|
317
352
|
}
|
|
318
353
|
|
|
319
354
|
/* 3c. Verify ephemeral public key. */
|
|
320
|
-
if (cbor_dec_msg_1.
|
|
355
|
+
if (cbor_dec_msg_1.message_1_G_X.len != csuite.ecc_key_length)
|
|
321
356
|
return EDHOC_ERROR_MSG_1_PROCESS_FAILURE;
|
|
322
357
|
|
|
323
|
-
ctx->dh_peer_pub_key_len = cbor_dec_msg_1.
|
|
324
|
-
memcpy(ctx->dh_peer_pub_key, cbor_dec_msg_1.
|
|
358
|
+
ctx->dh_peer_pub_key_len = cbor_dec_msg_1.message_1_G_X.len;
|
|
359
|
+
memcpy(ctx->dh_peer_pub_key, cbor_dec_msg_1.message_1_G_X.value,
|
|
325
360
|
csuite.ecc_key_length);
|
|
326
361
|
|
|
327
362
|
/* 3d. Verify connection identifier. */
|
|
328
|
-
switch (cbor_dec_msg_1.
|
|
329
|
-
case
|
|
363
|
+
switch (cbor_dec_msg_1.message_1_C_I_choice) {
|
|
364
|
+
case message_1_C_I_int_c: {
|
|
330
365
|
if (ONE_BYTE_CBOR_INT_MIN_VALUE >
|
|
331
|
-
cbor_dec_msg_1.
|
|
366
|
+
cbor_dec_msg_1.message_1_C_I_int ||
|
|
332
367
|
ONE_BYTE_CBOR_INT_MAX_VALUE <
|
|
333
|
-
cbor_dec_msg_1.
|
|
368
|
+
cbor_dec_msg_1.message_1_C_I_int)
|
|
334
369
|
return EDHOC_ERROR_MSG_1_PROCESS_FAILURE;
|
|
335
370
|
|
|
336
371
|
ctx->peer_cid.encode_type = EDHOC_CID_TYPE_ONE_BYTE_INTEGER;
|
|
337
372
|
ctx->peer_cid.int_value =
|
|
338
|
-
(int8_t)cbor_dec_msg_1.
|
|
373
|
+
(int8_t)cbor_dec_msg_1.message_1_C_I_int;
|
|
339
374
|
break;
|
|
340
375
|
}
|
|
341
376
|
|
|
342
|
-
case
|
|
377
|
+
case message_1_C_I_bstr_c: {
|
|
343
378
|
if (ARRAY_SIZE(ctx->peer_cid.bstr_value) <
|
|
344
|
-
cbor_dec_msg_1.
|
|
379
|
+
cbor_dec_msg_1.message_1_C_I_bstr.len)
|
|
345
380
|
return EDHOC_ERROR_MSG_1_PROCESS_FAILURE;
|
|
346
381
|
|
|
347
382
|
ctx->peer_cid.encode_type = EDHOC_CID_TYPE_BYTE_STRING;
|
|
348
383
|
ctx->peer_cid.bstr_length =
|
|
349
|
-
cbor_dec_msg_1.
|
|
384
|
+
cbor_dec_msg_1.message_1_C_I_bstr.len;
|
|
350
385
|
memcpy(ctx->peer_cid.bstr_value,
|
|
351
|
-
cbor_dec_msg_1.
|
|
352
|
-
cbor_dec_msg_1.
|
|
386
|
+
cbor_dec_msg_1.message_1_C_I_bstr.value,
|
|
387
|
+
cbor_dec_msg_1.message_1_C_I_bstr.len);
|
|
353
388
|
break;
|
|
354
389
|
}
|
|
355
390
|
|
|
@@ -376,27 +411,27 @@ int edhoc_message_1_process(struct edhoc_context *ctx, const uint8_t *msg_1,
|
|
|
376
411
|
}
|
|
377
412
|
|
|
378
413
|
/* 4. Process EAD if present. */
|
|
379
|
-
if (true == cbor_dec_msg_1.
|
|
414
|
+
if (true == cbor_dec_msg_1.message_1_EAD_1_m_present &&
|
|
380
415
|
NULL != ctx->ead.process) {
|
|
381
416
|
if (ARRAY_SIZE(ctx->ead_token) - 1 <
|
|
382
|
-
cbor_dec_msg_1.
|
|
417
|
+
cbor_dec_msg_1.message_1_EAD_1_m.EAD_1_count)
|
|
383
418
|
return EDHOC_ERROR_BUFFER_TOO_SMALL;
|
|
384
419
|
|
|
385
420
|
ctx->nr_of_ead_tokens =
|
|
386
|
-
cbor_dec_msg_1.
|
|
421
|
+
cbor_dec_msg_1.message_1_EAD_1_m.EAD_1_count;
|
|
387
422
|
for (size_t i = 0; i < ctx->nr_of_ead_tokens; ++i) {
|
|
388
423
|
ctx->ead_token[i].label =
|
|
389
|
-
cbor_dec_msg_1.
|
|
390
|
-
.
|
|
424
|
+
cbor_dec_msg_1.message_1_EAD_1_m.EAD_1[i]
|
|
425
|
+
.ead_x_ead_label;
|
|
391
426
|
ctx->ead_token[i].value =
|
|
392
|
-
cbor_dec_msg_1.
|
|
393
|
-
.
|
|
427
|
+
cbor_dec_msg_1.message_1_EAD_1_m.EAD_1[i]
|
|
428
|
+
.ead_x_ead_value.value;
|
|
394
429
|
ctx->ead_token[i].value_len =
|
|
395
|
-
cbor_dec_msg_1.
|
|
396
|
-
.
|
|
430
|
+
cbor_dec_msg_1.message_1_EAD_1_m.EAD_1[i]
|
|
431
|
+
.ead_x_ead_value.len;
|
|
397
432
|
}
|
|
398
433
|
|
|
399
|
-
ret = ctx->ead.process(ctx->user_ctx,
|
|
434
|
+
ret = ctx->ead.process(ctx->user_ctx, ctx->message,
|
|
400
435
|
ctx->ead_token, ctx->nr_of_ead_tokens);
|
|
401
436
|
|
|
402
437
|
if (EDHOC_SUCCESS == ret && NULL != ctx->logger) {
|