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.
- package/README.md +170 -0
- package/binding.gyp +13 -11
- package/dist/crypto.d.ts +9 -2
- package/dist/crypto.d.ts.map +1 -1
- package/dist/crypto.js +112 -84
- package/dist/edhoc.d.ts +31 -9
- package/dist/edhoc.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- 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/dist/credentials.d.ts +0 -16
- package/dist/credentials.d.ts.map +0 -1
- package/dist/credentials.js +0 -84
- 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
package/README.md
ADDED
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
# Node EDHOC
|
|
2
|
+
|
|
3
|
+
A TypeScript Node.js library implemented as a native addon, built on top of the C library [`libedhoc`](https://github.com/kamil-kielbasa/libedhoc/). It provides an efficient and lightweight way to use the Ephemeral Diffie-Hellman Over COSE (EDHOC) protocol, as specified in [RFC 9528](https://datatracker.ietf.org/doc/rfc9528/).
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
EDHOC is designed for lightweight communication and is particularly suitable for protocols like CoAP and OSCORE, but can work independently of the application and transport layers, ensuring minimal overhead while maintaining strong security guarantees. The library provides a default software implementation for X.509 credentials, with support for additional formats such as C509, CWT, and CCS coming soon. It also includes a software-based cryptographic implementation utilizing [`@noble/curves`](https://www.npmjs.com/package/@noble/curves/v/1.0.0). Additionally, it exposes credential and cryptographic API interfaces to allow for custom implementations, such as PKCS#11-based solutions.
|
|
8
|
+
|
|
9
|
+
## Features
|
|
10
|
+
|
|
11
|
+
- Full implementation of the EDHOC protocol (RFC 9528)
|
|
12
|
+
- TypeScript support for type safety and better developer experience
|
|
13
|
+
- Based on [`libedhoc`](https://github.com/kamil-kielbasa/libedhoc), a proven C implementation
|
|
14
|
+
|
|
15
|
+
## Installation
|
|
16
|
+
|
|
17
|
+
Install the package via npm:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm install node-edhoc
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Usage Examples
|
|
24
|
+
|
|
25
|
+
### Basic Handshake
|
|
26
|
+
|
|
27
|
+
The simplest EDHOC handshake using pre-shared keys (Method 0):
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
import { EDHOC, EdhocMethod, EdhocSuite } from 'node-edhoc';
|
|
31
|
+
|
|
32
|
+
// ...
|
|
33
|
+
|
|
34
|
+
const initiator = new EDHOC(10, [ EdhocMethod.Method0 ], [ EdhocSuite.Suite0 ], credentialsManager, cryptoManager);
|
|
35
|
+
const responder = new EDHOC(20, [ EdhocMethod.Method0 ], [ EdhocSuite.Suite0 ], credentialsManager, cryptoManager);
|
|
36
|
+
|
|
37
|
+
// Message 1: Initiator → Responder
|
|
38
|
+
const message1 = await initiator.composeMessage1();
|
|
39
|
+
await responder.processMessage1(message1);
|
|
40
|
+
|
|
41
|
+
// Message 2: Responder → Initiator
|
|
42
|
+
const message2 = await responder.composeMessage2();
|
|
43
|
+
await initiator.processMessage2(message2);
|
|
44
|
+
|
|
45
|
+
// Message 3: Initiator → Responder
|
|
46
|
+
const message3 = await initiator.composeMessage3();
|
|
47
|
+
await responder.processMessage3(message3);
|
|
48
|
+
|
|
49
|
+
// ...
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Using External Authorization Data (EAD)
|
|
54
|
+
|
|
55
|
+
You can include additional authorization data in EDHOC messages:
|
|
56
|
+
|
|
57
|
+
```typescript
|
|
58
|
+
// initiator.js
|
|
59
|
+
const ead_1 = [{
|
|
60
|
+
label: 1000,
|
|
61
|
+
value: Buffer.from('External Data')
|
|
62
|
+
}];
|
|
63
|
+
|
|
64
|
+
const message1 = await initiator.composeMessage1(ead_1);
|
|
65
|
+
|
|
66
|
+
// responder.js
|
|
67
|
+
const receivedEAD = await responder.processMessage1(message1);
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Certificate-Based Authentication
|
|
71
|
+
|
|
72
|
+
Using X.509 certificates for authentication (Method 1):
|
|
73
|
+
|
|
74
|
+
```typescript
|
|
75
|
+
import {
|
|
76
|
+
EDHOC,
|
|
77
|
+
X509CertificateCredentialManager,
|
|
78
|
+
DefaultEdhocCryptoManager
|
|
79
|
+
} from 'node-edhoc';
|
|
80
|
+
|
|
81
|
+
// Setup credential managers
|
|
82
|
+
const initiatorCreds = new X509CertificateCredentialManager(
|
|
83
|
+
[initiatorCert],
|
|
84
|
+
initiatorKeyID
|
|
85
|
+
);
|
|
86
|
+
initiatorCreds.addTrustedCA(trustedCA);
|
|
87
|
+
|
|
88
|
+
// Setup crypto managers
|
|
89
|
+
const initiatorCrypto = new DefaultEdhocCryptoManager();
|
|
90
|
+
|
|
91
|
+
// Initialize EDHOC with certificate-based auth
|
|
92
|
+
const initiator = new EDHOC(
|
|
93
|
+
10,
|
|
94
|
+
[EdhocMethod.Method1],
|
|
95
|
+
[EdhocSuite.Suite2],
|
|
96
|
+
initiatorCreds,
|
|
97
|
+
initiatorCrypto
|
|
98
|
+
);
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Exporting OSCORE Context
|
|
102
|
+
|
|
103
|
+
After a successful handshake, you can export the OSCORE security context:
|
|
104
|
+
|
|
105
|
+
```typescript
|
|
106
|
+
const initiatorContext = await initiator.exportOSCORE();
|
|
107
|
+
const responderContext = await responder.exportOSCORE();
|
|
108
|
+
|
|
109
|
+
console.log('Master Secret:', initiatorContext.masterSecret);
|
|
110
|
+
console.log('Master Salt:', initiatorContext.masterSalt);
|
|
111
|
+
console.log('Sender ID:', initiatorContext.senderId);
|
|
112
|
+
console.log('Recipient ID:', initiatorContext.recipientId);
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Key Update
|
|
116
|
+
|
|
117
|
+
Perform a key update for an existing OSCORE context:
|
|
118
|
+
|
|
119
|
+
```typescript
|
|
120
|
+
const keyUpdateContext = Buffer.from('new-entropy-data');
|
|
121
|
+
|
|
122
|
+
// Update keys for both parties
|
|
123
|
+
await initiator.keyUpdate(keyUpdateContext);
|
|
124
|
+
await responder.keyUpdate(keyUpdateContext);
|
|
125
|
+
|
|
126
|
+
// Export new OSCORE context
|
|
127
|
+
const newContext = await initiator.exportOSCORE();
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Custom Key Export
|
|
131
|
+
|
|
132
|
+
Export application-specific keys:
|
|
133
|
+
|
|
134
|
+
```typescript
|
|
135
|
+
// Export a 32-byte key with label 40001
|
|
136
|
+
const key = await initiator.exportKey(40001, 32);
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
For more detailed examples and API documentation, please refer to our [API Documentation](#).
|
|
140
|
+
|
|
141
|
+
## Documentation
|
|
142
|
+
|
|
143
|
+
For detailed documentation, refer to:
|
|
144
|
+
|
|
145
|
+
- [EDHOC Specification (RFC 9528)](https://datatracker.ietf.org/doc/rfc9528/)
|
|
146
|
+
- [API Documentation](#) *(TODO: Link to generated API docs if available)*
|
|
147
|
+
|
|
148
|
+
## Contributing
|
|
149
|
+
|
|
150
|
+
Contributions are welcome! To contribute:
|
|
151
|
+
|
|
152
|
+
1. Fork the repository and create a new branch.
|
|
153
|
+
2. Implement your feature or bugfix.
|
|
154
|
+
3. Write tests if applicable.
|
|
155
|
+
4. Open a pull request.
|
|
156
|
+
|
|
157
|
+
Please ensure your code follows the existing style and structure of the project.
|
|
158
|
+
|
|
159
|
+
## License
|
|
160
|
+
|
|
161
|
+
This project is licensed under the [MIT License](LICENSE).
|
|
162
|
+
|
|
163
|
+
## Related Projects
|
|
164
|
+
|
|
165
|
+
- [libedhoc](https://github.com/kamil-kielbasa/libedhoc/) - A C implementation of the Ephemeral Diffie-Hellman Over COSE
|
|
166
|
+
|
|
167
|
+
## Acknowledgments
|
|
168
|
+
|
|
169
|
+
This implementation is based on the EDHOC specification as defined in RFC 9528. Special thanks to the developers of [`libedhoc`](https://github.com/kamil-kielbasa/libedhoc/) for their foundational work on EDHOC in C.
|
|
170
|
+
|
package/binding.gyp
CHANGED
|
@@ -7,15 +7,16 @@
|
|
|
7
7
|
"target_name": "bindings",
|
|
8
8
|
'defines': [
|
|
9
9
|
'NAPI_CPP_EXCEPTIONS=1',
|
|
10
|
-
'
|
|
11
|
-
'
|
|
12
|
-
'
|
|
13
|
-
'
|
|
14
|
-
'
|
|
15
|
-
'
|
|
16
|
-
'
|
|
17
|
-
'
|
|
18
|
-
'
|
|
10
|
+
'CONFIG_LIBEDHOC_ENABLE=1',
|
|
11
|
+
'CONFIG_LIBEDHOC_MAX_NR_OF_CIPHER_SUITES=9',
|
|
12
|
+
'CONFIG_LIBEDHOC_MAX_LEN_OF_CONN_ID=7',
|
|
13
|
+
'CONFIG_LIBEDHOC_MAX_LEN_OF_ECC_KEY=56',
|
|
14
|
+
'CONFIG_LIBEDHOC_MAX_LEN_OF_MAC=64',
|
|
15
|
+
'CONFIG_LIBEDHOC_MAX_NR_OF_EAD_TOKENS=10',
|
|
16
|
+
'CONFIG_LIBEDHOC_MAX_LEN_OF_CRED_KEY_ID=1',
|
|
17
|
+
'CONFIG_LIBEDHOC_MAX_NR_OF_CERTS_IN_X509_CHAIN=5',
|
|
18
|
+
'CONFIG_LIBEDHOC_MAX_LEN_OF_HASH_ALG=1',
|
|
19
|
+
'CONFIG_LIBEDHOC_KEY_ID_LEN=4',
|
|
19
20
|
'ZCBOR_CANONICAL=1'
|
|
20
21
|
],
|
|
21
22
|
"sources": [
|
|
@@ -45,11 +46,12 @@
|
|
|
45
46
|
'conditions': [
|
|
46
47
|
['OS=="win"', {
|
|
47
48
|
'defines': [
|
|
48
|
-
'_Static_assert=static_assert'
|
|
49
|
+
'_Static_assert=static_assert',
|
|
50
|
+
'__attribute__(x)='
|
|
49
51
|
],
|
|
50
52
|
'msvs_settings': {
|
|
51
53
|
'VCCLCompilerTool': {
|
|
52
|
-
'AdditionalOptions': [ '-std:c++20', ],
|
|
54
|
+
'AdditionalOptions': [ '-std:c++20', "/D__attribute__(x)="],
|
|
53
55
|
'ExceptionHandling': 1
|
|
54
56
|
}
|
|
55
57
|
}
|
package/dist/crypto.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export declare class DefaultEdhocCryptoManager implements EdhocCryptoManager {
|
|
|
4
4
|
private keyIdentifier;
|
|
5
5
|
constructor();
|
|
6
6
|
addKey(keyID: Buffer, key: Buffer): void;
|
|
7
|
-
|
|
7
|
+
importKey(edhoc: EDHOC, keyType: EdhocKeyType, key: Buffer): Promise<Buffer>;
|
|
8
8
|
destroyKey(edhoc: EDHOC, keyID: Buffer): boolean;
|
|
9
9
|
makeKeyPair(edhoc: EDHOC, keyID: Buffer, privateKeySize: number, publicKeySize: number): {
|
|
10
10
|
privateKey: Buffer;
|
|
@@ -12,11 +12,18 @@ export declare class DefaultEdhocCryptoManager implements EdhocCryptoManager {
|
|
|
12
12
|
};
|
|
13
13
|
keyAgreement(edhoc: EDHOC, keyID: Buffer, publicKey: Buffer, privateKeySize: number): Buffer;
|
|
14
14
|
sign(edhoc: EDHOC, keyID: Buffer, input: Buffer, signatureSize: number): Buffer;
|
|
15
|
-
verify(edhoc: EDHOC, keyID: Buffer, input: Buffer, signature: Buffer): boolean
|
|
15
|
+
verify(edhoc: EDHOC, keyID: Buffer, input: Buffer, signature: Buffer): Promise<boolean>;
|
|
16
16
|
extract(edhoc: EDHOC, keyID: Buffer, salt: Buffer, keySize: number): Buffer;
|
|
17
17
|
expand(edhoc: EDHOC, keyID: Buffer, info: Buffer, keySize: number): Buffer;
|
|
18
18
|
encrypt(edhoc: EDHOC, keyID: Buffer, nonce: Buffer, aad: Buffer, plaintext: Buffer, size: number): Buffer;
|
|
19
19
|
decrypt(edhoc: EDHOC, keyID: Buffer, nonce: Buffer, aad: Buffer, ciphertext: Buffer, size: number): Buffer;
|
|
20
20
|
hash(edhoc: EDHOC, data: Buffer, hashSize: number): Promise<Buffer>;
|
|
21
|
+
private getKey;
|
|
22
|
+
private formatToBeSigned;
|
|
23
|
+
private formatPublicKey;
|
|
24
|
+
private getCurveForSignature;
|
|
25
|
+
private getCurveForKeyAgreement;
|
|
26
|
+
private getTagLength;
|
|
27
|
+
private getAlgorithm;
|
|
21
28
|
}
|
|
22
29
|
//# sourceMappingURL=crypto.d.ts.map
|
package/dist/crypto.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../lib/crypto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAc,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../lib/crypto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAc,MAAM,SAAS,CAAC;AAoB9E,qBAAa,yBAA0B,YAAW,kBAAkB;IAEhE,OAAO,CAAC,IAAI,CAAiB;IAC7B,OAAO,CAAC,aAAa,CAAgB;;IAM9B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAKlC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM;IAsBhE,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM;IAStC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM;;;;IActF,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;IAQnF,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM;IAiBhE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAa7F,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAKlE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAMjE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAmBhG,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAiB3F,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAIvD,OAAO,CAAC,MAAM;IAQd,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,YAAY;CAiBvB"}
|
package/dist/crypto.js
CHANGED
|
@@ -17,25 +17,15 @@ class DefaultEdhocCryptoManager {
|
|
|
17
17
|
const kid = keyID.toString('hex');
|
|
18
18
|
this.keys[kid] = key;
|
|
19
19
|
}
|
|
20
|
-
async
|
|
21
|
-
// Key Identifier
|
|
20
|
+
async importKey(edhoc, keyType, key) {
|
|
22
21
|
const keyBuffer = Buffer.alloc(4);
|
|
23
22
|
keyBuffer.writeInt32LE(this.keyIdentifier++);
|
|
24
23
|
const keyID = keyBuffer.toString('hex');
|
|
25
|
-
|
|
26
|
-
const
|
|
27
|
-
[edhoc_1.EdhocSuite.Suite0, edhoc_1.EdhocSuite.Suite1, edhoc_1.EdhocSuite.Suite4, edhoc_1.EdhocSuite.Suite6].includes(edhoc.selectedSuite) ? ed25519_1.x25519 : null;
|
|
28
|
-
// Signature Curve
|
|
29
|
-
const curveSIG = [edhoc_1.EdhocSuite.Suite2, edhoc_1.EdhocSuite.Suite3, edhoc_1.EdhocSuite.Suite5, edhoc_1.EdhocSuite.Suite6].includes(edhoc.selectedSuite) ? p256_1.p256 :
|
|
30
|
-
[edhoc_1.EdhocSuite.Suite0, edhoc_1.EdhocSuite.Suite1, edhoc_1.EdhocSuite.Suite4].includes(edhoc.selectedSuite) ? ed25519_1.ed25519 : null;
|
|
31
|
-
if (null == curveKE || null == curveSIG) {
|
|
32
|
-
throw new Error('Unsupported suite');
|
|
33
|
-
}
|
|
24
|
+
const curveKE = this.getCurveForKeyAgreement(edhoc.selectedSuite);
|
|
25
|
+
const curveSIG = this.getCurveForSignature(edhoc.selectedSuite);
|
|
34
26
|
switch (keyType) {
|
|
35
|
-
case edhoc_1.EdhocKeyType.MakeKeyPair:
|
|
36
|
-
this.keys[keyID] = curveKE.utils.randomPrivateKey();
|
|
37
|
-
break;
|
|
38
27
|
case edhoc_1.EdhocKeyType.KeyAgreement:
|
|
28
|
+
case edhoc_1.EdhocKeyType.MakeKeyPair:
|
|
39
29
|
this.keys[keyID] = key.byteLength > 0 ? Buffer.from(key) : curveKE.utils.randomPrivateKey();
|
|
40
30
|
break;
|
|
41
31
|
case edhoc_1.EdhocKeyType.Signature:
|
|
@@ -55,16 +45,12 @@ class DefaultEdhocCryptoManager {
|
|
|
55
45
|
return true;
|
|
56
46
|
}
|
|
57
47
|
makeKeyPair(edhoc, keyID, privateKeySize, publicKeySize) {
|
|
58
|
-
const
|
|
59
|
-
if (kid in this.keys === false) {
|
|
60
|
-
throw new Error(`Key '${kid}' not found`);
|
|
61
|
-
}
|
|
48
|
+
const key = this.getKey(keyID);
|
|
62
49
|
try {
|
|
63
|
-
const curveKE =
|
|
64
|
-
[edhoc_1.EdhocSuite.Suite0, edhoc_1.EdhocSuite.Suite1, edhoc_1.EdhocSuite.Suite4, edhoc_1.EdhocSuite.Suite6].includes(edhoc.selectedSuite) ? ed25519_1.x25519 : null;
|
|
50
|
+
const curveKE = this.getCurveForKeyAgreement(edhoc.selectedSuite);
|
|
65
51
|
return {
|
|
66
|
-
privateKey: Buffer.from(
|
|
67
|
-
publicKey: Buffer.from(curveKE.getPublicKey(
|
|
52
|
+
privateKey: Buffer.from(key),
|
|
53
|
+
publicKey: Buffer.from(curveKE.getPublicKey(key)).subarray(curveKE === p256_1.p256 ? 1 : 0)
|
|
68
54
|
};
|
|
69
55
|
}
|
|
70
56
|
catch (error) {
|
|
@@ -72,29 +58,17 @@ class DefaultEdhocCryptoManager {
|
|
|
72
58
|
}
|
|
73
59
|
}
|
|
74
60
|
keyAgreement(edhoc, keyID, publicKey, privateKeySize) {
|
|
75
|
-
const
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
// Key Exchange Curve
|
|
80
|
-
const curveKE = [edhoc_1.EdhocSuite.Suite2, edhoc_1.EdhocSuite.Suite3, edhoc_1.EdhocSuite.Suite5].includes(edhoc.selectedSuite) ? p256_1.p256 :
|
|
81
|
-
[edhoc_1.EdhocSuite.Suite0, edhoc_1.EdhocSuite.Suite1, edhoc_1.EdhocSuite.Suite4, edhoc_1.EdhocSuite.Suite6].includes(edhoc.selectedSuite) ? ed25519_1.x25519 : null;
|
|
82
|
-
const publicKeyBuffer = (curveKE === p256_1.p256) ? Buffer.concat([Buffer.from([publicKey.byteLength == 64 ? 0x04 : 0x02]), publicKey]) : publicKey;
|
|
83
|
-
const sharedSecrect = Buffer.from(curveKE.getSharedSecret(this.keys[kid], new Uint8Array(publicKeyBuffer)));
|
|
61
|
+
const key = this.getKey(keyID);
|
|
62
|
+
const curveKE = this.getCurveForKeyAgreement(edhoc.selectedSuite);
|
|
63
|
+
const publicKeyBuffer = this.formatPublicKey(curveKE, publicKey);
|
|
64
|
+
const sharedSecrect = Buffer.from(curveKE.getSharedSecret(key, new Uint8Array(publicKeyBuffer)));
|
|
84
65
|
return sharedSecrect.subarray(curveKE === p256_1.p256 ? 1 : 0);
|
|
85
66
|
}
|
|
86
67
|
sign(edhoc, keyID, input, signatureSize) {
|
|
87
|
-
const
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
// Signature Curve
|
|
92
|
-
const curveSIG = [edhoc_1.EdhocSuite.Suite2, edhoc_1.EdhocSuite.Suite3, edhoc_1.EdhocSuite.Suite5, edhoc_1.EdhocSuite.Suite6].includes(edhoc.selectedSuite) ? p256_1.p256 :
|
|
93
|
-
[edhoc_1.EdhocSuite.Suite0, edhoc_1.EdhocSuite.Suite1, edhoc_1.EdhocSuite.Suite4].includes(edhoc.selectedSuite) ? ed25519_1.ed25519 : null;
|
|
94
|
-
if (null === curveSIG) {
|
|
95
|
-
throw new Error('Unsupported suite');
|
|
96
|
-
}
|
|
97
|
-
const signature = curveSIG.sign((0, sha256_1.sha256)(input), new Uint8Array(this.keys[kid]));
|
|
68
|
+
const key = this.getKey(keyID);
|
|
69
|
+
const curveSIG = this.getCurveForSignature(edhoc.selectedSuite);
|
|
70
|
+
const payload = this.formatToBeSigned(curveSIG, input);
|
|
71
|
+
const signature = curveSIG.sign(payload, new Uint8Array(key));
|
|
98
72
|
if (signature instanceof Uint8Array) {
|
|
99
73
|
return Buffer.from(signature);
|
|
100
74
|
}
|
|
@@ -105,73 +79,127 @@ class DefaultEdhocCryptoManager {
|
|
|
105
79
|
throw new Error('Unsupported signature type');
|
|
106
80
|
}
|
|
107
81
|
}
|
|
108
|
-
verify(edhoc, keyID, input, signature) {
|
|
109
|
-
const
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
const curveSIG = [edhoc_1.EdhocSuite.Suite2, edhoc_1.EdhocSuite.Suite3, edhoc_1.EdhocSuite.Suite5, edhoc_1.EdhocSuite.Suite6].includes(edhoc.selectedSuite) ? p256_1.p256 :
|
|
115
|
-
[edhoc_1.EdhocSuite.Suite0, edhoc_1.EdhocSuite.Suite1, edhoc_1.EdhocSuite.Suite4].includes(edhoc.selectedSuite) ? ed25519_1.ed25519 : null;
|
|
116
|
-
if (null === curveSIG) {
|
|
117
|
-
throw new Error('Unsupported suite');
|
|
118
|
-
}
|
|
119
|
-
const publicKey = this.keys[kid];
|
|
120
|
-
const publicKeyBuffer = (curveSIG === p256_1.p256) ? Buffer.concat([Buffer.from([publicKey.byteLength == 64 ? 0x04 : 0x02]), publicKey]) : publicKey;
|
|
121
|
-
if (!curveSIG.verify(new Uint8Array(signature), (0, sha256_1.sha256)(input), new Uint8Array(publicKeyBuffer))) {
|
|
82
|
+
async verify(edhoc, keyID, input, signature) {
|
|
83
|
+
const key = this.getKey(keyID);
|
|
84
|
+
const curveSIG = this.getCurveForSignature(edhoc.selectedSuite);
|
|
85
|
+
const publicKeyBuffer = this.formatPublicKey(curveSIG, key);
|
|
86
|
+
const payload = this.formatToBeSigned(curveSIG, input);
|
|
87
|
+
if (!curveSIG.verify(new Uint8Array(signature), payload, new Uint8Array(publicKeyBuffer))) {
|
|
122
88
|
throw new Error('Signature not verified');
|
|
123
89
|
}
|
|
124
90
|
return true;
|
|
125
91
|
}
|
|
126
92
|
extract(edhoc, keyID, salt, keySize) {
|
|
127
|
-
const
|
|
128
|
-
|
|
129
|
-
throw new Error(`Key '${kid}' not found`);
|
|
130
|
-
}
|
|
131
|
-
return Buffer.from((0, hkdf_1.extract)(sha256_1.sha256, new Uint8Array(this.keys[kid]), new Uint8Array(salt)));
|
|
93
|
+
const key = this.getKey(keyID);
|
|
94
|
+
return Buffer.from((0, hkdf_1.extract)(sha256_1.sha256, new Uint8Array(key), new Uint8Array(salt)));
|
|
132
95
|
}
|
|
133
96
|
expand(edhoc, keyID, info, keySize) {
|
|
134
|
-
const
|
|
135
|
-
|
|
136
|
-
throw new Error(`Key '${kid}' not found`);
|
|
137
|
-
}
|
|
138
|
-
const expanded = Buffer.from((0, hkdf_1.expand)(sha256_1.sha256, new Uint8Array(this.keys[kid]), new Uint8Array(info), keySize));
|
|
97
|
+
const key = this.getKey(keyID);
|
|
98
|
+
const expanded = Buffer.from((0, hkdf_1.expand)(sha256_1.sha256, new Uint8Array(key), new Uint8Array(info), keySize));
|
|
139
99
|
return expanded;
|
|
140
100
|
}
|
|
141
101
|
encrypt(edhoc, keyID, nonce, aad, plaintext, size) {
|
|
142
|
-
const
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
const
|
|
148
|
-
[edhoc_1.EdhocSuite.Suite6].includes(edhoc.selectedSuite) ? 'aes-128-gcm' : 'aes-128-ccm';
|
|
149
|
-
const cipher = (0, crypto_1.createCipheriv)(algorithm, this.keys[kid], nonce, { authTagLength: tagLength });
|
|
102
|
+
const key = this.getKey(keyID);
|
|
103
|
+
const algorithm = this.getAlgorithm(edhoc.selectedSuite);
|
|
104
|
+
const options = {
|
|
105
|
+
authTagLength: this.getTagLength(edhoc.selectedSuite)
|
|
106
|
+
};
|
|
107
|
+
const cipher = (0, crypto_1.createCipheriv)(algorithm, key, nonce, options);
|
|
150
108
|
cipher.setAAD(aad, { plaintextLength: Buffer.byteLength(plaintext) });
|
|
109
|
+
const update = Buffer.byteLength(plaintext) === 0 ? Buffer.alloc(0) : plaintext;
|
|
151
110
|
const encrypted = Buffer.concat([
|
|
152
|
-
cipher.update(
|
|
111
|
+
cipher.update(update),
|
|
153
112
|
cipher.final(),
|
|
154
113
|
cipher.getAuthTag()
|
|
155
114
|
]);
|
|
156
115
|
return encrypted;
|
|
157
116
|
}
|
|
158
117
|
decrypt(edhoc, keyID, nonce, aad, ciphertext, size) {
|
|
159
|
-
const
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
}
|
|
163
|
-
const
|
|
164
|
-
const algorithm = [edhoc_1.EdhocSuite.Suite4, edhoc_1.EdhocSuite.Suite5].includes(edhoc.selectedSuite) ? 'chacha20-poly1305' :
|
|
165
|
-
[edhoc_1.EdhocSuite.Suite6].includes(edhoc.selectedSuite) ? 'aes-128-gcm' : 'aes-128-ccm';
|
|
166
|
-
const decipher = (0, crypto_1.createDecipheriv)(algorithm, this.keys[kid], nonce, { authTagLength: tagLength });
|
|
118
|
+
const key = this.getKey(keyID);
|
|
119
|
+
const tagLength = this.getTagLength(edhoc.selectedSuite);
|
|
120
|
+
const algorithm = this.getAlgorithm(edhoc.selectedSuite);
|
|
121
|
+
const options = { authTagLength: tagLength };
|
|
122
|
+
const decipher = (0, crypto_1.createDecipheriv)(algorithm, key, nonce, options);
|
|
167
123
|
decipher.setAuthTag(ciphertext.subarray(ciphertext.length - tagLength));
|
|
168
124
|
decipher.setAAD(aad, { plaintextLength: ciphertext.length - tagLength });
|
|
169
|
-
|
|
125
|
+
const decrypted = decipher.update(ciphertext.subarray(0, ciphertext.length - tagLength));
|
|
170
126
|
decipher.final();
|
|
171
127
|
return decrypted;
|
|
172
128
|
}
|
|
173
129
|
async hash(edhoc, data, hashSize) {
|
|
174
130
|
return Buffer.from((0, sha256_1.sha256)(data));
|
|
175
131
|
}
|
|
132
|
+
getKey(keyID) {
|
|
133
|
+
const kid = keyID.toString('hex');
|
|
134
|
+
if (kid in this.keys === false) {
|
|
135
|
+
throw new Error(`Key '${kid}' not found`);
|
|
136
|
+
}
|
|
137
|
+
return this.keys[kid];
|
|
138
|
+
}
|
|
139
|
+
formatToBeSigned(curve, payload) {
|
|
140
|
+
if (curve === p256_1.p256) {
|
|
141
|
+
return Buffer.from((0, sha256_1.sha256)(payload));
|
|
142
|
+
}
|
|
143
|
+
else if (curve === ed25519_1.ed25519) {
|
|
144
|
+
return payload;
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
throw new Error(`Unsupported curve ${curve}`);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
formatPublicKey(curve, key) {
|
|
151
|
+
if (curve === p256_1.p256) {
|
|
152
|
+
const prefix = key.byteLength === 64 ? 0x04 : (key[key.length - 1] & 1) ? 0x03 : 0x02;
|
|
153
|
+
return Buffer.concat([Buffer.from([prefix]), key]);
|
|
154
|
+
}
|
|
155
|
+
else if (curve === ed25519_1.ed25519 || curve === ed25519_1.x25519) {
|
|
156
|
+
return key;
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
throw new Error(`Unsupported curve ${curve}`);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
getCurveForSignature(suite) {
|
|
163
|
+
if ([edhoc_1.EdhocSuite.Suite2, edhoc_1.EdhocSuite.Suite3, edhoc_1.EdhocSuite.Suite5, edhoc_1.EdhocSuite.Suite6].includes(suite)) {
|
|
164
|
+
return p256_1.p256;
|
|
165
|
+
}
|
|
166
|
+
else if ([edhoc_1.EdhocSuite.Suite0, edhoc_1.EdhocSuite.Suite1, edhoc_1.EdhocSuite.Suite4].includes(suite)) {
|
|
167
|
+
return ed25519_1.ed25519;
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
throw new Error(`Unsupported EDHOC suite ${suite} for signature.`);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
getCurveForKeyAgreement(suite) {
|
|
174
|
+
if ([edhoc_1.EdhocSuite.Suite2, edhoc_1.EdhocSuite.Suite3, edhoc_1.EdhocSuite.Suite5].includes(suite)) {
|
|
175
|
+
return p256_1.p256;
|
|
176
|
+
}
|
|
177
|
+
else if ([edhoc_1.EdhocSuite.Suite0, edhoc_1.EdhocSuite.Suite1, edhoc_1.EdhocSuite.Suite4, edhoc_1.EdhocSuite.Suite6].includes(suite)) {
|
|
178
|
+
return ed25519_1.x25519;
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
throw new Error(`Unsupported EDHOC suite ${suite} for key agreement.`);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
getTagLength(suite) {
|
|
185
|
+
return [edhoc_1.EdhocSuite.Suite0, edhoc_1.EdhocSuite.Suite2].includes(suite) ? 8 : 16;
|
|
186
|
+
}
|
|
187
|
+
getAlgorithm(suite) {
|
|
188
|
+
if ([edhoc_1.EdhocSuite.Suite4, edhoc_1.EdhocSuite.Suite5, edhoc_1.EdhocSuite.Suite25].includes(suite)) {
|
|
189
|
+
return 'chacha20-poly1305';
|
|
190
|
+
}
|
|
191
|
+
else if ([edhoc_1.EdhocSuite.Suite6].includes(suite)) {
|
|
192
|
+
return 'aes-128-gcm';
|
|
193
|
+
}
|
|
194
|
+
else if ([edhoc_1.EdhocSuite.Suite24].includes(suite)) {
|
|
195
|
+
return 'aes-256-gcm';
|
|
196
|
+
}
|
|
197
|
+
else if ([edhoc_1.EdhocSuite.Suite0, edhoc_1.EdhocSuite.Suite1, edhoc_1.EdhocSuite.Suite2, edhoc_1.EdhocSuite.Suite3].includes(suite)) {
|
|
198
|
+
return 'aes-128-ccm';
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
throw new Error(`Unsupported EDHOC suite ${suite} for encryption.`);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
176
204
|
}
|
|
177
205
|
exports.DefaultEdhocCryptoManager = DefaultEdhocCryptoManager;
|
package/dist/edhoc.d.ts
CHANGED
|
@@ -20,7 +20,7 @@ export interface EdhocCredentials {
|
|
|
20
20
|
export interface EdhocCredentialsKID extends EdhocCredentials {
|
|
21
21
|
format: EdhocCredentialsFormat.kid;
|
|
22
22
|
kid: {
|
|
23
|
-
kid: number;
|
|
23
|
+
kid: number | Buffer;
|
|
24
24
|
credentials?: Buffer;
|
|
25
25
|
isCBOR?: boolean;
|
|
26
26
|
};
|
|
@@ -68,7 +68,7 @@ export interface EdhocCredentialManager {
|
|
|
68
68
|
* @param credentials The credentials to verify.
|
|
69
69
|
* @return A promise that resolves to the verified EdhocCredentials or throws an error if not successful.
|
|
70
70
|
*/
|
|
71
|
-
verify(edhoc: EDHOC, credentials: EdhocCredentials
|
|
71
|
+
verify(edhoc: EDHOC, credentials: EdhocCredentials, callback: (error: Error | null, credentials: EdhocCredentials) => void): void;
|
|
72
72
|
}
|
|
73
73
|
/**
|
|
74
74
|
* Enumerates the types of cryptographic operations that can be performed with EDHOC.
|
|
@@ -103,13 +103,13 @@ export interface PublicPrivateTuple {
|
|
|
103
103
|
*/
|
|
104
104
|
export interface EdhocCryptoManager {
|
|
105
105
|
/**
|
|
106
|
-
*
|
|
106
|
+
* Imports a cryptographic key of the specified type.
|
|
107
107
|
* @param edhoc The EDHOC session context.
|
|
108
|
-
* @param keyType The type of key to
|
|
108
|
+
* @param keyType The type of key to import, as defined in EdhocKeyType.
|
|
109
109
|
* @param key Optional buffer containing seed or related data if necessary.
|
|
110
|
-
* @return A promise resolving to a Buffer containing the
|
|
110
|
+
* @return A promise resolving to a Buffer containing the imported key.
|
|
111
111
|
*/
|
|
112
|
-
|
|
112
|
+
importKey(edhoc: EDHOC, keyType: EdhocKeyType, key: Buffer): Promise<Buffer> | Buffer | never;
|
|
113
113
|
/**
|
|
114
114
|
* Destroys a cryptographic key identified by the keyID.
|
|
115
115
|
* @param edhoc The EDHOC session context.
|
|
@@ -262,9 +262,13 @@ export declare class EDHOC {
|
|
|
262
262
|
*/
|
|
263
263
|
readonly peerConnectionID: EdhocConnectionID;
|
|
264
264
|
/**
|
|
265
|
-
* The
|
|
265
|
+
* The methods of authentication to be used in this EDHOC session, as defined in EdhocMethod.
|
|
266
266
|
*/
|
|
267
|
-
|
|
267
|
+
methods: EdhocMethod[];
|
|
268
|
+
/**
|
|
269
|
+
* The selected method of authentication to be used in this EDHOC session, as defined in EdhocMethod.
|
|
270
|
+
*/
|
|
271
|
+
selectedMethod: EdhocMethod;
|
|
268
272
|
/**
|
|
269
273
|
* A list of cipher suites supported by this session, providing flexibility in cryptographic negotiations.
|
|
270
274
|
*/
|
|
@@ -287,7 +291,7 @@ export declare class EDHOC {
|
|
|
287
291
|
* @param credentials A manager for handling credentials related to EDHOC.
|
|
288
292
|
* @param crypto A crypto manager to handle cryptographic functions.
|
|
289
293
|
*/
|
|
290
|
-
constructor(connectionID: EdhocConnectionID,
|
|
294
|
+
constructor(connectionID: EdhocConnectionID, methods: EdhocMethod[], suites: EdhocSuite[], credentials: EdhocCredentialManager, crypto: EdhocCryptoManager);
|
|
291
295
|
/**
|
|
292
296
|
* Composes the first EDHOC message.
|
|
293
297
|
* @param ead Optional array of EAD objects to include in the message.
|
|
@@ -298,6 +302,7 @@ export declare class EDHOC {
|
|
|
298
302
|
* Processes the received first EDHOC message.
|
|
299
303
|
* @param message The received message buffer.
|
|
300
304
|
* @return A promise that resolves to an array of EAD objects extracted from the message.
|
|
305
|
+
* @throws Error if processing fails, optionally including peerCipherSuites.
|
|
301
306
|
*/
|
|
302
307
|
processMessage1(message: Buffer): Promise<EdhocEAD[]> | never;
|
|
303
308
|
/**
|
|
@@ -310,6 +315,7 @@ export declare class EDHOC {
|
|
|
310
315
|
* Processes the received second EDHOC message.
|
|
311
316
|
* @param message The received message buffer.
|
|
312
317
|
* @return A promise that resolves to an array of EAD objects extracted from the message.
|
|
318
|
+
* @throws Error if processing fails, optionally including peerCipherSuites.
|
|
313
319
|
*/
|
|
314
320
|
processMessage2(message: Buffer): Promise<EdhocEAD[]> | never;
|
|
315
321
|
/**
|
|
@@ -322,6 +328,7 @@ export declare class EDHOC {
|
|
|
322
328
|
* Processes the received third EDHOC message.
|
|
323
329
|
* @param message The received message buffer.
|
|
324
330
|
* @return A promise that resolves to an array of EAD objects extracted from the message.
|
|
331
|
+
* @throws Error if processing fails, optionally including peerCipherSuites.
|
|
325
332
|
*/
|
|
326
333
|
processMessage3(message: Buffer): Promise<EdhocEAD[]> | never;
|
|
327
334
|
/**
|
|
@@ -334,6 +341,7 @@ export declare class EDHOC {
|
|
|
334
341
|
* Processes the received fourth EDHOC message.
|
|
335
342
|
* @param message The received message buffer.
|
|
336
343
|
* @return A promise that resolves to an array of EAD objects extracted from the message.
|
|
344
|
+
* @throws Error if processing fails, optionally including peerCipherSuites.
|
|
337
345
|
*/
|
|
338
346
|
processMessage4(message: Buffer): Promise<EdhocEAD[]> | never;
|
|
339
347
|
/**
|
|
@@ -341,6 +349,20 @@ export declare class EDHOC {
|
|
|
341
349
|
* @return A promise that resolves to the OSCORE context used for secured communication in constrained environments.
|
|
342
350
|
*/
|
|
343
351
|
exportOSCORE(): Promise<EdhocOscoreContext> | never;
|
|
352
|
+
/**
|
|
353
|
+
* Exports the key derived from the EDHOC session using the EDHOC_Exporter interface.
|
|
354
|
+
* @param exporterLabel The label of the key to export, as a registered uint from the "EDHOC Exporter Labels" registry.
|
|
355
|
+
* @param length The desired length of the key to export.
|
|
356
|
+
* @return A promise that resolves to the exported key.
|
|
357
|
+
*/
|
|
358
|
+
exportKey(exporterLabel: number, length: number): Promise<Buffer> | never;
|
|
359
|
+
/**
|
|
360
|
+
* Key update for the new OSCORE security session
|
|
361
|
+
* Read Appendix H of RFC 9528 - https://www.rfc-editor.org/rfc/rfc9528.html#appendix-H
|
|
362
|
+
* @param context Buffer containing the entropy for key update.
|
|
363
|
+
* @return A promise that resolves to void.
|
|
364
|
+
*/
|
|
365
|
+
keyUpdate(context: Buffer): Promise<void> | never;
|
|
344
366
|
}
|
|
345
367
|
export * from './bindings';
|
|
346
368
|
//# sourceMappingURL=edhoc.d.ts.map
|
package/dist/edhoc.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edhoc.d.ts","sourceRoot":"","sources":["../lib/edhoc.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,sBAAsB;IAC9B,GAAG,IAAI,CAAU,+BAA+B;IAChD,OAAO,KAAK,CAAK,yCAAyC;IAC1D,GAAG,KAAK;CACX;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,MAAM,EAAE,sBAAsB,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IACzD,MAAM,EAAE,sBAAsB,CAAC,GAAG,CAAC;IACnC,GAAG,EAAE;QACD,GAAG,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"edhoc.d.ts","sourceRoot":"","sources":["../lib/edhoc.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED