edhoc 1.2.3 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/binding.gyp +2 -2
  2. package/dist/edhoc.d.ts +4 -0
  3. package/dist/edhoc.d.ts.map +1 -1
  4. package/include/{LibEDHOC.h → Binding.h} +60 -40
  5. package/include/EdhocComposeAsyncWorker.h +8 -22
  6. package/include/EdhocCredentialManager.h +9 -25
  7. package/include/EdhocCryptoManager.h +27 -43
  8. package/include/EdhocEadManager.h +3 -4
  9. package/include/EdhocExportOscoreAsyncWorker.h +10 -27
  10. package/include/EdhocKeyExporterAsyncWorker.h +8 -28
  11. package/include/EdhocKeyUpdateAsyncWorker.h +7 -24
  12. package/include/EdhocProcessAsyncWorker.h +11 -36
  13. package/include/RunningContext.h +102 -0
  14. package/include/Utils.h +2 -46
  15. package/package.json +1 -2
  16. package/prebuilds/android-arm/edhoc.armv7.node +0 -0
  17. package/prebuilds/android-arm64/edhoc.armv8.node +0 -0
  18. package/prebuilds/darwin-arm64/edhoc.node +0 -0
  19. package/prebuilds/darwin-x64/edhoc.node +0 -0
  20. package/prebuilds/linux-arm/edhoc.armv6.node +0 -0
  21. package/prebuilds/linux-arm/edhoc.armv7.node +0 -0
  22. package/prebuilds/linux-arm64/edhoc.armv8.node +0 -0
  23. package/prebuilds/linux-x64/edhoc.glibc.node +0 -0
  24. package/prebuilds/linux-x64/edhoc.musl.node +0 -0
  25. package/prebuilds/win32-ia32/edhoc.node +0 -0
  26. package/prebuilds/win32-x64/edhoc.node +0 -0
  27. package/src/Binding.cpp +434 -0
  28. package/src/EdhocComposeAsyncWorker.cpp +39 -57
  29. package/src/EdhocCredentialManager.cpp +58 -93
  30. package/src/EdhocCryptoManager.cpp +181 -400
  31. package/src/EdhocEadManager.cpp +13 -13
  32. package/src/EdhocExportOscoreAsyncWorker.cpp +29 -45
  33. package/src/EdhocKeyExporterAsyncWorker.cpp +19 -37
  34. package/src/EdhocKeyUpdateAsyncWorker.cpp +15 -33
  35. package/src/EdhocProcessAsyncWorker.cpp +82 -96
  36. package/src/RunningContext.cpp +95 -0
  37. package/src/Utils.cpp +2 -34
  38. package/test/basic.test.ts +57 -3
  39. package/include/UserContext.h +0 -78
  40. package/src/LibEDHOC.cpp +0 -418
  41. package/test/errors.test.ts +0 -129
@@ -1,129 +0,0 @@
1
- import { EDHOC, X509CertificateCredentialManager, DefaultEdhocCryptoManager, EdhocMethod, EdhocSuite } from '../dist/index'
2
-
3
- describe('EDHOC Handshake', () => {
4
-
5
- const trustedCA = Buffer.from('308201323081DAA003020102021478408C6EC18A1D452DAE70C726CB0192A6116DBB300A06082A8648CE3D040302301A3118301606035504030C0F5468697320697320434120526F6F74301E170D3234313031393138333635335A170D3235313031393138333635335A301A3118301606035504030C0F5468697320697320434120526F6F743059301306072A8648CE3D020106082A8648CE3D03010703420004B9348A8A267EF52CFDC30109A29008A2D99F6B8F78BA9EAF5D51578C06134E78CB90A073EDC2488A14174B4E2997C840C5DE7F8E35EB54A0DB6977E894D1B2CB300A06082A8648CE3D040302034700304402203B92BFEC770B0FA4E17F8F02A13CD945D914ED8123AC85C37C8C7BAA2BE3E0F102202CB2DC2EC295B5F4B7BB631ED751179C145D6B6E081559AEA38CE215369E9C31', 'hex');
6
-
7
- let initiator: EDHOC;
8
- let responder: EDHOC;
9
- let uncaughtException: jest.Mock;
10
- let initiatorCryptoManager: DefaultEdhocCryptoManager;
11
- let responderCryptoManager: DefaultEdhocCryptoManager;
12
-
13
- let initiatorCredentialManager: X509CertificateCredentialManager;
14
- let responderCredentialManager: X509CertificateCredentialManager;
15
-
16
- const testError = new Error('Test error');
17
-
18
- beforeEach(() => {
19
- const initiatorKeyID = Buffer.from('00000001', 'hex');
20
- initiatorCredentialManager = new X509CertificateCredentialManager(
21
- [Buffer.from('3082012E3081D4A003020102021453423D5145C767CDC29895C3DB590192A611EA50300A06082A8648CE3D040302301A3118301606035504030C0F5468697320697320434120526F6F74301E170D3234313031393138333732345A170D3235313031393138333732345A30143112301006035504030C09696E69746961746F723059301306072A8648CE3D020106082A8648CE3D03010703420004EB0EF585F3992A1653CF310BF0F0F8035267CDAB6989C8B02E7228FBD759EF6B56263259AADF087F9849E7B7651F74C3B4F144CCCF86BB6FE2FF0EF3AA5FB5DC300A06082A8648CE3D0403020349003046022100D8C3AA7C98A730B3D4862EDAB4C1474FCD9A17A9CA3FB078914A10978FE95CC40221009F5877DD4E2C635A04ED1F6F1854C87B58521BDDFF533B1076F53D456739764C', 'hex')],
22
- initiatorKeyID
23
- );
24
- initiatorCredentialManager.addTrustedCA(trustedCA);
25
-
26
- initiatorCryptoManager = new DefaultEdhocCryptoManager();
27
- initiatorCryptoManager.addKey(initiatorKeyID, Buffer.from('DC1FBB05B6B08360CE5B9EEA08EBFBFC6766A21340641863D4C8A3F68F096337', 'hex'));
28
-
29
- const responderKeyID = Buffer.from('00000002', 'hex');
30
- responderCredentialManager = new X509CertificateCredentialManager(
31
- [Buffer.from('3082012E3081D4A00302010202146648869E2608FC2E16D945C10E1F0192A6125CC0300A06082A8648CE3D040302301A3118301606035504030C0F5468697320697320434120526F6F74301E170D3234313031393138333735345A170D3235313031393138333735345A30143112301006035504030C09726573706F6E6465723059301306072A8648CE3D020106082A8648CE3D03010703420004161F76A7A106C9B79B7F651156B5B095E63A6101A39020F4E86DDACE61FB395E8AEF6CD9C444EE9A43DBD62DAD44FF50FE4146247D3AFD28F60DBC01FBFC573C300A06082A8648CE3D0403020349003046022100E8AD0926518CDB61E84D171700C7158FD0E72D03A117D40133ECD10F8B9F42CE022100E7E69B4C79100B3F0792F010AE11EE5DD2859C29EFC4DBCEFD41FA5CD4D3C3C9', 'hex')],
32
- responderKeyID
33
- );
34
- responderCredentialManager.addTrustedCA(trustedCA);
35
-
36
- responderCryptoManager = new DefaultEdhocCryptoManager();
37
- responderCryptoManager.addKey(responderKeyID, Buffer.from('EE6287116FE27CDC539629DC87E12BF8EAA2229E7773AA67BC4C0FBA96E7FBB2', 'hex'));
38
-
39
- initiator = new EDHOC(10, [EdhocMethod.Method1], [EdhocSuite.Suite2], initiatorCredentialManager, initiatorCryptoManager);
40
- responder = new EDHOC(20, [EdhocMethod.Method2, EdhocMethod.Method0, EdhocMethod.Method1], [EdhocSuite.Suite2], responderCredentialManager, responderCryptoManager);
41
- });
42
-
43
- beforeEach(() => {
44
- uncaughtException = jest.fn();
45
- process.on('uncaughtException', err => uncaughtException(err))
46
- });
47
-
48
- afterEach(() => {
49
- process.removeAllListeners('uncaughtException');
50
- });
51
-
52
- test('should throw uncaughtException', async () => {
53
- const error = new Error('Test error');
54
- process.emit('uncaughtException', error);
55
- expect(uncaughtException).toHaveBeenCalledWith(error);
56
- });
57
-
58
- test('should throw from crypto manager hash', async () => {
59
-
60
- responderCryptoManager.hash = jest.fn().mockImplementation(() => { throw testError });
61
-
62
- try {
63
-
64
- const message1 = await initiator.composeMessage1([{ label: 1, value: Buffer.from('Hello') }]);
65
- await responder.processMessage1(message1);
66
-
67
- } catch (error) {
68
- expect(error).toBe(testError);
69
- }
70
-
71
- expect(uncaughtException).not.toHaveBeenCalled();
72
- });
73
-
74
- test('should throw from credential manager fetch', async () => {
75
-
76
- responderCredentialManager.fetch = jest.fn().mockImplementation(() => { throw testError });
77
- const catchHandler = jest.fn();
78
-
79
- try {
80
- const message1 = await initiator.composeMessage1();
81
- await responder.processMessage1(message1);
82
- await responder.composeMessage2();
83
- } catch (error) {
84
- catchHandler(error);
85
- }
86
-
87
- expect(catchHandler).toHaveBeenCalledWith(testError);
88
- expect(uncaughtException).not.toHaveBeenCalled();
89
- });
90
-
91
- test('should throw from crypto manager importKey', async () => {
92
-
93
- initiatorCryptoManager.importKey = jest.fn().mockImplementation(() => { throw testError });
94
- const catchHandler = jest.fn();
95
-
96
- try {
97
- const message1 = await initiator.composeMessage1([{ label: 1, value: Buffer.from('Hello') }]);
98
- await responder.processMessage1(message1);
99
- await responder.composeMessage2();
100
- } catch (error) {
101
- catchHandler(error);
102
- }
103
-
104
- expect(catchHandler).toHaveBeenCalled();
105
- expect(uncaughtException).not.toHaveBeenCalled();
106
- });
107
-
108
- test('should throw from crypto manager encrypt', async () => {
109
-
110
- initiatorCryptoManager.encrypt = jest.fn().mockImplementation(() => { throw testError });
111
- const catchHandler = jest.fn();
112
-
113
- try {
114
- const message1 = await initiator.composeMessage1([{ label: 1, value: Buffer.from('Hello') }]);
115
- await responder.processMessage1(message1);
116
-
117
- const message2 = await responder.composeMessage2();
118
- await initiator.processMessage2(message2);
119
-
120
- const message3 = await initiator.composeMessage3();
121
- await responder.processMessage3(message3);
122
- } catch (error) {
123
- catchHandler(error);
124
- }
125
-
126
- expect(catchHandler).toHaveBeenCalled();
127
- expect(uncaughtException).not.toHaveBeenCalled();
128
- });
129
- });