@libp2p/noise 12.0.1 → 16.1.4-8484de8a2

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 (127) hide show
  1. package/README.md +95 -0
  2. package/dist/index.min.js +16 -20
  3. package/dist/index.min.js.map +7 -0
  4. package/dist/src/constants.d.ts +1 -0
  5. package/dist/src/constants.d.ts.map +1 -1
  6. package/dist/src/constants.js +1 -0
  7. package/dist/src/constants.js.map +1 -1
  8. package/dist/src/crypto/index.browser.d.ts +2 -0
  9. package/dist/src/crypto/index.browser.d.ts.map +1 -0
  10. package/dist/src/crypto/index.browser.js +3 -0
  11. package/dist/src/crypto/index.browser.js.map +1 -0
  12. package/dist/src/crypto/index.d.ts +3 -0
  13. package/dist/src/crypto/index.d.ts.map +1 -0
  14. package/dist/src/crypto/index.js +188 -0
  15. package/dist/src/crypto/index.js.map +1 -0
  16. package/dist/src/crypto/js.d.ts.map +1 -1
  17. package/dist/src/crypto/js.js +18 -17
  18. package/dist/src/crypto/js.js.map +1 -1
  19. package/dist/src/crypto.d.ts +11 -10
  20. package/dist/src/crypto.d.ts.map +1 -1
  21. package/dist/src/crypto.js +10 -1
  22. package/dist/src/crypto.js.map +1 -1
  23. package/dist/src/encoder.d.ts +5 -10
  24. package/dist/src/encoder.d.ts.map +1 -1
  25. package/dist/src/encoder.js +10 -51
  26. package/dist/src/encoder.js.map +1 -1
  27. package/dist/src/errors.d.ts +6 -0
  28. package/dist/src/errors.d.ts.map +1 -0
  29. package/dist/src/errors.js +9 -0
  30. package/dist/src/errors.js.map +1 -0
  31. package/dist/src/index.d.ts +50 -5
  32. package/dist/src/index.d.ts.map +1 -1
  33. package/dist/src/index.js +38 -1
  34. package/dist/src/index.js.map +1 -1
  35. package/dist/src/logger.d.ts +9 -10
  36. package/dist/src/logger.d.ts.map +1 -1
  37. package/dist/src/logger.js +39 -28
  38. package/dist/src/logger.js.map +1 -1
  39. package/dist/src/metrics.d.ts +1 -1
  40. package/dist/src/metrics.d.ts.map +1 -1
  41. package/dist/src/noise.d.ts +33 -30
  42. package/dist/src/noise.d.ts.map +1 -1
  43. package/dist/src/noise.js +122 -78
  44. package/dist/src/noise.js.map +1 -1
  45. package/dist/src/nonce.d.ts +2 -3
  46. package/dist/src/nonce.d.ts.map +1 -1
  47. package/dist/src/nonce.js +3 -2
  48. package/dist/src/nonce.js.map +1 -1
  49. package/dist/src/performHandshake.d.ts +5 -0
  50. package/dist/src/performHandshake.d.ts.map +1 -0
  51. package/dist/src/performHandshake.js +69 -0
  52. package/dist/src/performHandshake.js.map +1 -0
  53. package/dist/src/proto/payload.d.ts +4 -3
  54. package/dist/src/proto/payload.d.ts.map +1 -1
  55. package/dist/src/proto/payload.js +48 -29
  56. package/dist/src/proto/payload.js.map +1 -1
  57. package/dist/src/protocol.d.ts +71 -0
  58. package/dist/src/protocol.d.ts.map +1 -0
  59. package/dist/src/protocol.js +257 -0
  60. package/dist/src/protocol.js.map +1 -0
  61. package/dist/src/types.d.ts +98 -0
  62. package/dist/src/types.d.ts.map +1 -0
  63. package/dist/src/types.js +2 -0
  64. package/dist/src/types.js.map +1 -0
  65. package/dist/src/utils.d.ts +10 -19
  66. package/dist/src/utils.d.ts.map +1 -1
  67. package/dist/src/utils.js +159 -57
  68. package/dist/src/utils.js.map +1 -1
  69. package/package.json +43 -48
  70. package/src/constants.ts +1 -0
  71. package/src/crypto/index.browser.ts +3 -0
  72. package/src/crypto/index.ts +219 -0
  73. package/src/crypto/js.ts +25 -27
  74. package/src/crypto.ts +21 -10
  75. package/src/encoder.ts +10 -67
  76. package/src/errors.ts +10 -0
  77. package/src/index.ts +54 -6
  78. package/src/logger.ts +46 -32
  79. package/src/metrics.ts +1 -1
  80. package/src/noise.ts +176 -131
  81. package/src/nonce.ts +7 -7
  82. package/src/performHandshake.ts +91 -0
  83. package/src/proto/payload.proto +2 -1
  84. package/src/proto/payload.ts +53 -31
  85. package/src/protocol.ts +313 -0
  86. package/src/types.ts +105 -0
  87. package/src/utils.ts +189 -79
  88. package/dist/src/@types/basic.d.ts +0 -5
  89. package/dist/src/@types/basic.d.ts.map +0 -1
  90. package/dist/src/@types/basic.js +0 -2
  91. package/dist/src/@types/basic.js.map +0 -1
  92. package/dist/src/@types/handshake-interface.d.ts +0 -15
  93. package/dist/src/@types/handshake-interface.d.ts.map +0 -1
  94. package/dist/src/@types/handshake-interface.js +0 -2
  95. package/dist/src/@types/handshake-interface.js.map +0 -1
  96. package/dist/src/@types/handshake.d.ts +0 -40
  97. package/dist/src/@types/handshake.d.ts.map +0 -1
  98. package/dist/src/@types/handshake.js +0 -2
  99. package/dist/src/@types/handshake.js.map +0 -1
  100. package/dist/src/@types/libp2p.d.ts +0 -10
  101. package/dist/src/@types/libp2p.d.ts.map +0 -1
  102. package/dist/src/@types/libp2p.js +0 -2
  103. package/dist/src/@types/libp2p.js.map +0 -1
  104. package/dist/src/crypto/streaming.d.ts +0 -7
  105. package/dist/src/crypto/streaming.d.ts.map +0 -1
  106. package/dist/src/crypto/streaming.js +0 -50
  107. package/dist/src/crypto/streaming.js.map +0 -1
  108. package/dist/src/handshake-xx.d.ts +0 -33
  109. package/dist/src/handshake-xx.d.ts.map +0 -1
  110. package/dist/src/handshake-xx.js +0 -139
  111. package/dist/src/handshake-xx.js.map +0 -1
  112. package/dist/src/handshakes/abstract-handshake.d.ts +0 -36
  113. package/dist/src/handshakes/abstract-handshake.d.ts.map +0 -1
  114. package/dist/src/handshakes/abstract-handshake.js +0 -140
  115. package/dist/src/handshakes/abstract-handshake.js.map +0 -1
  116. package/dist/src/handshakes/xx.d.ts +0 -18
  117. package/dist/src/handshakes/xx.d.ts.map +0 -1
  118. package/dist/src/handshakes/xx.js +0 -161
  119. package/dist/src/handshakes/xx.js.map +0 -1
  120. package/src/@types/basic.ts +0 -5
  121. package/src/@types/handshake-interface.ts +0 -12
  122. package/src/@types/handshake.ts +0 -48
  123. package/src/@types/libp2p.ts +0 -10
  124. package/src/crypto/streaming.ts +0 -58
  125. package/src/handshake-xx.ts +0 -177
  126. package/src/handshakes/abstract-handshake.ts +0 -180
  127. package/src/handshakes/xx.ts +0 -184
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/protocol.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ import type { Nonce } from './nonce.js';
2
+ import type { NoiseExtensions, NoiseHandshakePayload } from './proto/payload.js';
3
+ import type { ConnectionEncrypter, Logger, PrivateKey, PublicKey } from '@libp2p/interface';
4
+ import type { LengthPrefixedStream } from '@libp2p/utils';
5
+ import type { Uint8ArrayList } from 'uint8arraylist';
6
+ /**
7
+ * Crypto functions defined by the noise protocol, abstracted from the
8
+ * underlying implementations
9
+ */
10
+ export interface ICrypto {
11
+ generateKeypair(): KeyPair;
12
+ dh(keypair: KeyPair, publicKey: Uint8Array | Uint8ArrayList): Uint8Array;
13
+ encrypt(plaintext: Uint8Array | Uint8ArrayList, nonce: Uint8Array, ad: Uint8Array, k: Uint8Array): Uint8ArrayList | Uint8Array;
14
+ decrypt(ciphertext: Uint8Array | Uint8ArrayList, nonce: Uint8Array, ad: Uint8Array, k: Uint8Array, dst?: Uint8Array): Uint8ArrayList | Uint8Array;
15
+ hash(data: Uint8Array | Uint8ArrayList): Uint8Array;
16
+ hkdf(ck: Uint8Array, ikm: Uint8Array): [Uint8Array, Uint8Array, Uint8Array];
17
+ }
18
+ export interface HandshakeParams {
19
+ log: Logger;
20
+ connection: LengthPrefixedStream;
21
+ crypto: ICrypto;
22
+ privateKey: PrivateKey;
23
+ prologue: Uint8Array;
24
+ /** static keypair */
25
+ s: KeyPair;
26
+ remoteIdentityKey?: PublicKey;
27
+ extensions?: NoiseExtensions;
28
+ }
29
+ export interface HandshakeResult {
30
+ payload: NoiseHandshakePayload;
31
+ encrypt(plaintext: Uint8Array | Uint8ArrayList): Uint8Array | Uint8ArrayList;
32
+ decrypt(ciphertext: Uint8Array | Uint8ArrayList, dst?: Uint8Array): Uint8Array | Uint8ArrayList;
33
+ }
34
+ /**
35
+ * A CipherState object contains k and n variables, which it uses to encrypt and
36
+ * decrypt ciphertext.
37
+ *
38
+ * During the handshake phase each party has a single CipherState, but during
39
+ * the transport phase each party has two CipherState objects: one for sending,
40
+ * and one for receiving.
41
+ */
42
+ export interface ICipherState {
43
+ /**
44
+ * A cipher key of 32 bytes (which may be empty). Empty is a special value
45
+ * which indicates k has not yet been initialized.
46
+ */
47
+ k?: Uint8Array;
48
+ /**
49
+ * An 8-byte (64-bit) unsigned integer nonce.
50
+ *
51
+ * For performance reasons, the nonce is represented as a Nonce object
52
+ * The nonce is treated as a uint64, even though the underlying `number` only
53
+ * has 52 safely-available bits.
54
+ */
55
+ n: Nonce;
56
+ }
57
+ /**
58
+ * A SymmetricState object contains a CipherState plus ck and h variables. It is
59
+ * so-named because it encapsulates all the "symmetric crypto" used by Noise.
60
+ *
61
+ * During the handshake phase each party has a single SymmetricState, which can
62
+ * be deleted once the handshake is finished.
63
+ */
64
+ export interface ISymmetricState {
65
+ cs: ICipherState;
66
+ /** A chaining key of 32 bytes. */
67
+ ck: Uint8Array;
68
+ /** A hash output of 32 bytes. */
69
+ h: Uint8Array;
70
+ }
71
+ /**
72
+ * A HandshakeState object contains a SymmetricState plus DH variables (s, e,
73
+ * rs, re) and a variable representing the handshake pattern.
74
+ *
75
+ * During the handshake phase each party has a single HandshakeState, which can
76
+ * be deleted once the handshake is finished.
77
+ */
78
+ export interface IHandshakeState {
79
+ ss: ISymmetricState;
80
+ /** The local static key pair */
81
+ s?: KeyPair;
82
+ /** The local ephemeral key pair */
83
+ e?: KeyPair;
84
+ /** The remote party's static public key */
85
+ rs?: Uint8Array | Uint8ArrayList;
86
+ /** The remote party's ephemeral public key */
87
+ re?: Uint8Array | Uint8ArrayList;
88
+ }
89
+ export interface KeyPair {
90
+ publicKey: Uint8Array;
91
+ privateKey: Uint8Array;
92
+ }
93
+ export interface INoiseExtensions {
94
+ webtransportCerthashes: Uint8Array[];
95
+ }
96
+ export interface INoiseConnection extends ConnectionEncrypter<INoiseExtensions> {
97
+ }
98
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAChF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC3F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,eAAe,IAAI,OAAO,CAAA;IAC1B,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,GAAG,cAAc,GAAG,UAAU,CAAA;IACxE,OAAO,CAAC,SAAS,EAAE,UAAU,GAAG,cAAc,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,cAAc,GAAG,UAAU,CAAA;IAC9H,OAAO,CAAC,UAAU,EAAE,UAAU,GAAG,cAAc,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,UAAU,GAAG,cAAc,GAAG,UAAU,CAAA;IACjJ,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,cAAc,GAAG,UAAU,CAAA;IACnD,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;CAC5E;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,oBAAoB,CAAA;IAChC,MAAM,EAAE,OAAO,CAAA;IACf,UAAU,EAAE,UAAU,CAAA;IACtB,QAAQ,EAAE,UAAU,CAAA;IACpB,qBAAqB;IACrB,CAAC,EAAE,OAAO,CAAA;IACV,iBAAiB,CAAC,EAAE,SAAS,CAAA;IAC7B,UAAU,CAAC,EAAE,eAAe,CAAA;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,qBAAqB,CAAA;IAC9B,OAAO,CAAE,SAAS,EAAE,UAAU,GAAG,cAAc,GAAG,UAAU,GAAG,cAAc,CAAA;IAC7E,OAAO,CAAE,UAAU,EAAE,UAAU,GAAG,cAAc,EAAE,GAAG,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,cAAc,CAAA;CACjG;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,CAAC,CAAC,EAAE,UAAU,CAAA;IACd;;;;;;OAMG;IACH,CAAC,EAAE,KAAK,CAAA;CACT;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,YAAY,CAAA;IAChB,kCAAkC;IAClC,EAAE,EAAE,UAAU,CAAA;IACd,iCAAiC;IACjC,CAAC,EAAE,UAAU,CAAA;CACd;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,eAAe,CAAA;IACnB,gCAAgC;IAChC,CAAC,CAAC,EAAE,OAAO,CAAA;IACX,mCAAmC;IACnC,CAAC,CAAC,EAAE,OAAO,CAAA;IACX,2CAA2C;IAC3C,EAAE,CAAC,EAAE,UAAU,GAAG,cAAc,CAAA;IAChC,8CAA8C;IAC9C,EAAE,CAAC,EAAE,UAAU,GAAG,cAAc,CAAA;CACjC;AAED,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,UAAU,CAAA;IACrB,UAAU,EAAE,UAAU,CAAA;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,sBAAsB,EAAE,UAAU,EAAE,CAAA;CACrC;AAED,MAAM,WAAW,gBAAiB,SAAQ,mBAAmB,CAAC,gBAAgB,CAAC;CAAI"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
@@ -1,20 +1,11 @@
1
- import { type NoiseExtensions, NoiseHandshakePayload } from './proto/payload.js';
2
- import type { bytes } from './@types/basic.js';
3
- import type { PeerId } from '@libp2p/interface/peer-id';
4
- export declare function getPayload(localPeer: PeerId, staticPublicKey: bytes, extensions?: NoiseExtensions): Promise<bytes>;
5
- export declare function createHandshakePayload(libp2pPublicKey: Uint8Array, signedPayload: Uint8Array, extensions?: NoiseExtensions): bytes;
6
- export declare function signPayload(peerId: PeerId, payload: bytes): Promise<bytes>;
7
- export declare function getPeerIdFromPayload(payload: NoiseHandshakePayload): Promise<PeerId>;
8
- export declare function decodePayload(payload: bytes | Uint8Array): NoiseHandshakePayload;
9
- export declare function getHandshakePayload(publicKey: bytes): bytes;
10
- /**
11
- * Verifies signed payload, throws on any irregularities.
12
- *
13
- * @param {bytes} noiseStaticKey - owner's noise static key
14
- * @param {bytes} payload - decoded payload
15
- * @param {PeerId} remotePeer - owner's libp2p peer ID
16
- * @returns {Promise<PeerId>} - peer ID of payload owner
17
- */
18
- export declare function verifySignedPayload(noiseStaticKey: bytes, payload: NoiseHandshakePayload, remotePeer: PeerId): Promise<PeerId>;
19
- export declare function isValidPublicKey(pk: bytes): boolean;
1
+ import { Uint8ArrayList } from 'uint8arraylist';
2
+ import { NoiseHandshakePayload } from './proto/payload.js';
3
+ import type { MetricsRegistry } from './metrics.ts';
4
+ import type { NoiseExtensions } from './proto/payload.js';
5
+ import type { HandshakeResult } from './types.ts';
6
+ import type { MessageStream, PrivateKey, PublicKey } from '@libp2p/interface';
7
+ export declare function createHandshakePayload(privateKey: PrivateKey, staticPublicKey: Uint8Array | Uint8ArrayList, extensions?: NoiseExtensions): Promise<Uint8Array | Uint8ArrayList>;
8
+ export declare function decodeHandshakePayload(payloadBytes: Uint8Array | Uint8ArrayList, remoteStaticKey?: Uint8Array | Uint8ArrayList, remoteIdentityKey?: PublicKey): Promise<NoiseHandshakePayload>;
9
+ export declare function getSignaturePayload(publicKey: Uint8Array | Uint8ArrayList): Uint8Array | Uint8ArrayList;
10
+ export declare function toMessageStream(connection: MessageStream, handshake: HandshakeResult, metrics?: MetricsRegistry): MessageStream;
20
11
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,eAAe,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAChF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAEvD,wBAAsB,UAAU,CAC9B,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,KAAK,EACtB,UAAU,CAAC,EAAE,eAAe,GAC3B,OAAO,CAAC,KAAK,CAAC,CAYhB;AAED,wBAAgB,sBAAsB,CACpC,eAAe,EAAE,UAAU,EAC3B,aAAa,EAAE,UAAU,EACzB,UAAU,CAAC,EAAE,eAAe,GAC3B,KAAK,CAMP;AAED,wBAAsB,WAAW,CAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAQjF;AAED,wBAAsB,oBAAoB,CAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CAE3F;AAED,wBAAgB,aAAa,CAAE,OAAO,EAAE,KAAK,GAAG,UAAU,GAAG,qBAAqB,CAEjF;AAED,wBAAgB,mBAAmB,CAAE,SAAS,EAAE,KAAK,GAAG,KAAK,CAG5D;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,cAAc,EAAE,KAAK,EACrB,OAAO,EAAE,qBAAqB,EAC9B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAyBjB;AAED,wBAAgB,gBAAgB,CAAE,EAAE,EAAE,KAAK,GAAG,OAAO,CAUpD"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAK/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,KAAK,EAAgB,aAAa,EAAE,UAAU,EAAE,SAAS,EAAoB,MAAM,mBAAmB,CAAA;AAG7G,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,UAAU,GAAG,cAAc,EAC5C,UAAU,CAAC,EAAE,eAAe,GAC3B,OAAO,CAAC,UAAU,GAAG,cAAc,CAAC,CAQtC;AAED,wBAAsB,sBAAsB,CAC1C,YAAY,EAAE,UAAU,GAAG,cAAc,EACzC,eAAe,CAAC,EAAE,UAAU,GAAG,cAAc,EAC7C,iBAAiB,CAAC,EAAE,SAAS,GAC5B,OAAO,CAAC,qBAAqB,CAAC,CAuBhC;AAED,wBAAgB,mBAAmB,CAAE,SAAS,EAAE,UAAU,GAAG,cAAc,GAAG,UAAU,GAAG,cAAc,CAUxG;AAsJD,wBAAgB,eAAe,CAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,aAAa,CAEhI"}
package/dist/src/utils.js CHANGED
@@ -1,74 +1,176 @@
1
- import { unmarshalPublicKey, unmarshalPrivateKey } from '@libp2p/crypto/keys';
2
- import { peerIdFromKeys } from '@libp2p/peer-id';
1
+ import { publicKeyFromProtobuf, publicKeyToProtobuf } from '@libp2p/crypto/keys';
2
+ import { StreamMessageEvent, UnexpectedPeerError } from '@libp2p/interface';
3
+ import { AbstractMessageStream, LengthPrefixedDecoder } from '@libp2p/utils';
4
+ import { Uint8ArrayList } from 'uint8arraylist';
3
5
  import { concat as uint8ArrayConcat } from 'uint8arrays/concat';
4
6
  import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
7
+ import { CHACHA_TAG_LENGTH, NOISE_MSG_MAX_LENGTH_BYTES, NOISE_MSG_MAX_LENGTH_BYTES_WITHOUT_TAG } from "./constants.js";
8
+ import { uint16BEEncode, uint16BEDecode } from "./encoder.js";
5
9
  import { NoiseHandshakePayload } from './proto/payload.js';
6
- export async function getPayload(localPeer, staticPublicKey, extensions) {
7
- const signedPayload = await signPayload(localPeer, getHandshakePayload(staticPublicKey));
8
- if (localPeer.publicKey == null) {
9
- throw new Error('PublicKey was missing from local PeerId');
10
- }
11
- return createHandshakePayload(localPeer.publicKey, signedPayload, extensions);
12
- }
13
- export function createHandshakePayload(libp2pPublicKey, signedPayload, extensions) {
10
+ export async function createHandshakePayload(privateKey, staticPublicKey, extensions) {
11
+ const identitySig = await privateKey.sign(getSignaturePayload(staticPublicKey));
14
12
  return NoiseHandshakePayload.encode({
15
- identityKey: libp2pPublicKey,
16
- identitySig: signedPayload,
17
- extensions: extensions ?? { webtransportCerthashes: [] }
18
- }).subarray();
13
+ identityKey: publicKeyToProtobuf(privateKey.publicKey),
14
+ identitySig,
15
+ extensions
16
+ });
19
17
  }
20
- export async function signPayload(peerId, payload) {
21
- if (peerId.privateKey == null) {
22
- throw new Error('PrivateKey was missing from PeerId');
18
+ export async function decodeHandshakePayload(payloadBytes, remoteStaticKey, remoteIdentityKey) {
19
+ try {
20
+ const payload = NoiseHandshakePayload.decode(payloadBytes);
21
+ const publicKey = publicKeyFromProtobuf(payload.identityKey);
22
+ if (remoteIdentityKey?.equals(publicKey) === false) {
23
+ throw new Error(`Payload identity key ${publicKey} does not match expected remote identity key ${remoteIdentityKey}`);
24
+ }
25
+ if (!remoteStaticKey) {
26
+ throw new Error('Remote static does not exist');
27
+ }
28
+ const signaturePayload = getSignaturePayload(remoteStaticKey);
29
+ if (!(await publicKey.verify(signaturePayload, payload.identitySig))) {
30
+ throw new Error('Invalid payload signature');
31
+ }
32
+ return payload;
33
+ }
34
+ catch (e) {
35
+ throw new UnexpectedPeerError(e.message);
23
36
  }
24
- const privateKey = await unmarshalPrivateKey(peerId.privateKey);
25
- return privateKey.sign(payload);
26
- }
27
- export async function getPeerIdFromPayload(payload) {
28
- return peerIdFromKeys(payload.identityKey);
29
- }
30
- export function decodePayload(payload) {
31
- return NoiseHandshakePayload.decode(payload);
32
37
  }
33
- export function getHandshakePayload(publicKey) {
38
+ export function getSignaturePayload(publicKey) {
34
39
  const prefix = uint8ArrayFromString('noise-libp2p-static-key:');
35
- return uint8ArrayConcat([prefix, publicKey], prefix.length + publicKey.length);
40
+ if (publicKey instanceof Uint8Array) {
41
+ return uint8ArrayConcat([prefix, publicKey], prefix.length + publicKey.length);
42
+ }
43
+ publicKey.prepend(prefix);
44
+ return publicKey;
36
45
  }
37
- /**
38
- * Verifies signed payload, throws on any irregularities.
39
- *
40
- * @param {bytes} noiseStaticKey - owner's noise static key
41
- * @param {bytes} payload - decoded payload
42
- * @param {PeerId} remotePeer - owner's libp2p peer ID
43
- * @returns {Promise<PeerId>} - peer ID of payload owner
44
- */
45
- export async function verifySignedPayload(noiseStaticKey, payload, remotePeer) {
46
- // Unmarshaling from PublicKey protobuf
47
- const payloadPeerId = await peerIdFromKeys(payload.identityKey);
48
- if (!payloadPeerId.equals(remotePeer)) {
49
- throw new Error(`Payload identity key ${payloadPeerId.toString()} does not match expected remote peer ${remotePeer.toString()}`);
46
+ class EncryptedMessageStream extends AbstractMessageStream {
47
+ stream;
48
+ handshake;
49
+ metrics;
50
+ decoder;
51
+ constructor(stream, handshake, metrics) {
52
+ super({
53
+ log: stream.log,
54
+ inactivityTimeout: stream.inactivityTimeout,
55
+ maxReadBufferLength: stream.maxReadBufferLength,
56
+ direction: stream.direction
57
+ });
58
+ this.stream = stream;
59
+ this.handshake = handshake;
60
+ this.metrics = metrics;
61
+ this.decoder = new LengthPrefixedDecoder({
62
+ lengthDecoder: uint16BEDecode,
63
+ maxBufferSize: 16 * 1024 * 1024,
64
+ encodingLength: () => 2
65
+ });
66
+ const noiseOnMessageDecrypt = (evt) => {
67
+ try {
68
+ for (const buf of this.decoder.decode(evt.data)) {
69
+ this.onData(this.decrypt(buf));
70
+ }
71
+ }
72
+ catch (err) {
73
+ this.abort(err);
74
+ }
75
+ };
76
+ this.stream.addEventListener('message', noiseOnMessageDecrypt);
77
+ const noiseOnClose = (evt) => {
78
+ if (evt.error != null) {
79
+ if (evt.local === true) {
80
+ this.abort(evt.error);
81
+ }
82
+ else {
83
+ this.onRemoteReset();
84
+ }
85
+ }
86
+ else {
87
+ this.onTransportClosed();
88
+ }
89
+ };
90
+ this.stream.addEventListener('close', noiseOnClose);
91
+ const noiseOnDrain = () => {
92
+ this.safeDispatchEvent('drain');
93
+ };
94
+ this.stream.addEventListener('drain', noiseOnDrain);
95
+ const noiseOnRemoteCloseWrite = () => {
96
+ this.onRemoteCloseWrite();
97
+ };
98
+ this.stream.addEventListener('remoteCloseWrite', noiseOnRemoteCloseWrite);
50
99
  }
51
- const generatedPayload = getHandshakePayload(noiseStaticKey);
52
- if (payloadPeerId.publicKey == null) {
53
- throw new Error('PublicKey was missing from PeerId');
100
+ encrypt(chunk) {
101
+ const output = new Uint8ArrayList();
102
+ for (let i = 0; i < chunk.byteLength; i += NOISE_MSG_MAX_LENGTH_BYTES_WITHOUT_TAG) {
103
+ let end = i + NOISE_MSG_MAX_LENGTH_BYTES_WITHOUT_TAG;
104
+ if (end > chunk.byteLength) {
105
+ end = chunk.byteLength;
106
+ }
107
+ let data;
108
+ if (chunk instanceof Uint8Array) {
109
+ data = this.handshake.encrypt(chunk.subarray(i, end));
110
+ }
111
+ else {
112
+ data = this.handshake.encrypt(chunk.sublist(i, end));
113
+ }
114
+ this.metrics?.encryptedPackets.increment();
115
+ output.append(uint16BEEncode(data.byteLength));
116
+ output.append(data);
117
+ }
118
+ return output;
54
119
  }
55
- if (payload.identitySig == null) {
56
- throw new Error('Signature was missing from message');
120
+ decrypt(chunk) {
121
+ const output = new Uint8ArrayList();
122
+ for (let i = 0; i < chunk.byteLength; i += NOISE_MSG_MAX_LENGTH_BYTES) {
123
+ let end = i + NOISE_MSG_MAX_LENGTH_BYTES;
124
+ if (end > chunk.byteLength) {
125
+ end = chunk.byteLength;
126
+ }
127
+ if (end - CHACHA_TAG_LENGTH < i) {
128
+ throw new Error('Invalid chunk');
129
+ }
130
+ let encrypted;
131
+ if (chunk instanceof Uint8Array) {
132
+ encrypted = chunk.subarray(i, end);
133
+ }
134
+ else {
135
+ encrypted = chunk.sublist(i, end);
136
+ }
137
+ // memory allocation is not cheap so reuse the encrypted Uint8Array
138
+ // see https://github.com/ChainSafe/js-libp2p-noise/pull/242#issue-1422126164
139
+ // this is ok because chacha20 reads bytes one by one and don't reread after that
140
+ // it's also tested in https://github.com/ChainSafe/as-chacha20poly1305/pull/1/files#diff-25252846b58979dcaf4e41d47b3eadd7e4f335e7fb98da6c049b1f9cd011f381R48
141
+ const dst = chunk.subarray(i, end - CHACHA_TAG_LENGTH);
142
+ try {
143
+ const plaintext = this.handshake.decrypt(encrypted, dst);
144
+ this.metrics?.decryptedPackets.increment();
145
+ output.append(plaintext);
146
+ }
147
+ catch (e) {
148
+ this.metrics?.decryptErrors.increment();
149
+ throw e;
150
+ }
151
+ }
152
+ return output;
57
153
  }
58
- const publicKey = unmarshalPublicKey(payloadPeerId.publicKey);
59
- const valid = await publicKey.verify(generatedPayload, payload.identitySig);
60
- if (!valid) {
61
- throw new Error("Static key doesn't match to peer that signed payload!");
154
+ close(options) {
155
+ return this.stream.close(options);
62
156
  }
63
- return payloadPeerId;
64
- }
65
- export function isValidPublicKey(pk) {
66
- if (!(pk instanceof Uint8Array)) {
67
- return false;
157
+ sendPause() {
158
+ this.stream.pause();
159
+ }
160
+ sendResume() {
161
+ this.stream.resume();
68
162
  }
69
- if (pk.length !== 32) {
70
- return false;
163
+ sendReset(err) {
164
+ this.stream.abort(err);
71
165
  }
72
- return true;
166
+ sendData(data) {
167
+ return {
168
+ sentBytes: data.byteLength,
169
+ canSendMore: this.stream.send(this.encrypt(data))
170
+ };
171
+ }
172
+ }
173
+ export function toMessageStream(connection, handshake, metrics) {
174
+ return new EncryptedMessageStream(connection, handshake, metrics);
73
175
  }
74
176
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,25 +1,26 @@
1
1
  {
2
2
  "name": "@libp2p/noise",
3
- "version": "12.0.1",
3
+ "version": "16.1.4-8484de8a2",
4
+ "description": "Noise libp2p handshake for js-libp2p",
4
5
  "author": "ChainSafe <info@chainsafe.io>",
5
6
  "license": "Apache-2.0 OR MIT",
6
- "homepage": "https://github.com/ChainSafe/js-libp2p-noise#readme",
7
+ "homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/connection-encrypter-noise#readme",
7
8
  "repository": {
8
9
  "type": "git",
9
- "url": "git+https://github.com/ChainSafe/js-libp2p-noise.git"
10
+ "url": "git+https://github.com/libp2p/js-libp2p.git"
10
11
  },
11
12
  "bugs": {
12
- "url": "https://github.com/ChainSafe/js-libp2p-noise/issues"
13
+ "url": "https://github.com/libp2p/js-libp2p/issues"
14
+ },
15
+ "publishConfig": {
16
+ "access": "public",
17
+ "provenance": true
13
18
  },
14
19
  "keywords": [
15
20
  "crypto",
16
21
  "libp2p",
17
22
  "noise"
18
23
  ],
19
- "engines": {
20
- "node": ">=16.0.0",
21
- "npm": ">=7.0.0"
22
- },
23
24
  "type": "module",
24
25
  "types": "./dist/src/index.d.ts",
25
26
  "files": [
@@ -34,22 +35,6 @@
34
35
  "import": "./dist/src/index.js"
35
36
  }
36
37
  },
37
- "eslintConfig": {
38
- "extends": "ipfs",
39
- "parserOptions": {
40
- "sourceType": "module"
41
- },
42
- "rules": {
43
- "@typescript-eslint/no-unused-vars": "error",
44
- "@typescript-eslint/explicit-function-return-type": "warn",
45
- "@typescript-eslint/strict-boolean-expressions": "off"
46
- },
47
- "ignorePatterns": [
48
- "src/proto/payload.js",
49
- "src/proto/payload.d.ts",
50
- "test/fixtures/node-globals.js"
51
- ]
52
- },
53
38
  "scripts": {
54
39
  "bench": "node benchmarks/benchmark.js",
55
40
  "clean": "aegir clean",
@@ -61,39 +46,49 @@
61
46
  "test:node": "aegir test -t node",
62
47
  "test:browser": "aegir test -t browser -t webworker",
63
48
  "test:electron-main": "aegir test -t electron-main",
49
+ "test:interop": "aegir test -t node -f dist/test/interop.js",
64
50
  "docs": "aegir docs",
65
51
  "proto:gen": "protons ./src/proto/payload.proto",
66
52
  "prepublish": "npm run build"
67
53
  },
68
54
  "dependencies": {
69
- "@libp2p/crypto": "^1.0.11",
70
- "@libp2p/interface": "~0.0.1",
71
- "@libp2p/logger": "^2.1.1",
72
- "@libp2p/peer-id": "^2.0.0",
73
- "@stablelib/chacha20poly1305": "^1.0.1",
74
- "@noble/hashes": "^1.3.0",
75
- "@stablelib/x25519": "^1.0.3",
76
- "it-length-prefixed": "^9.0.1",
77
- "it-length-prefixed-stream": "^1.0.0",
78
- "it-byte-stream": "^1.0.0",
79
- "it-pair": "^2.0.2",
80
- "it-pipe": "^3.0.1",
81
- "it-stream-types": "^2.0.1",
82
- "protons-runtime": "^5.0.0",
83
- "uint8arraylist": "^2.3.2",
84
- "uint8arrays": "^4.0.2"
55
+ "@chainsafe/as-chacha20poly1305": "^0.1.0",
56
+ "@chainsafe/as-sha256": "^1.2.0",
57
+ "@libp2p/crypto": "5.1.8-8484de8a2",
58
+ "@libp2p/interface": "2.11.0-8484de8a2",
59
+ "@libp2p/peer-id": "5.1.9-8484de8a2",
60
+ "@libp2p/utils": "6.7.2-8484de8a2",
61
+ "@noble/ciphers": "^1.3.0",
62
+ "@noble/curves": "^1.9.7",
63
+ "@noble/hashes": "^1.8.0",
64
+ "protons-runtime": "^5.6.0",
65
+ "uint8arraylist": "^2.4.8",
66
+ "uint8arrays": "^5.1.0",
67
+ "wherearewe": "^2.0.1"
85
68
  },
86
69
  "devDependencies": {
87
- "@libp2p/interface-compliance-tests": "^3.0.0",
88
- "@libp2p/peer-id-factory": "^2.0.0",
89
- "@types/sinon": "^10.0.14",
90
- "aegir": "^39.0.5",
70
+ "@libp2p/daemon-client": "9.0.8-8484de8a2",
71
+ "@libp2p/daemon-server": "8.0.6-8484de8a2",
72
+ "@libp2p/interface-compliance-tests": "6.5.0-8484de8a2",
73
+ "@libp2p/interop": "13.0.3-8484de8a2",
74
+ "@libp2p/logger": "5.2.0-8484de8a2",
75
+ "@libp2p/tcp": "10.1.19-8484de8a2",
76
+ "@libp2p/yamux": "7.0.4-8484de8a2",
77
+ "@multiformats/multiaddr": "^13.0.1",
78
+ "@types/sinon": "^17.0.4",
79
+ "aegir": "^47.0.21",
80
+ "execa": "^9.6.0",
81
+ "go-libp2p": "^1.6.0",
91
82
  "iso-random-stream": "^2.0.2",
92
- "protons": "^7.0.0",
93
- "sinon": "^15.0.0"
83
+ "libp2p": "2.10.0-8484de8a2",
84
+ "mkdirp": "^3.0.1",
85
+ "multiformats": "^13.4.0",
86
+ "p-defer": "^4.0.1",
87
+ "protons": "^7.7.0",
88
+ "sinon": "^21.0.0",
89
+ "sinon-ts": "^2.0.0"
94
90
  },
95
91
  "browser": {
96
- "./dist/src/alloc-unsafe.js": "./dist/src/alloc-unsafe-browser.js",
97
- "util": false
92
+ "./dist/src/crypto/index.js": "./dist/src/crypto/index.browser.js"
98
93
  }
99
94
  }
package/src/constants.ts CHANGED
@@ -2,3 +2,4 @@ export const NOISE_MSG_MAX_LENGTH_BYTES = 65535
2
2
  export const NOISE_MSG_MAX_LENGTH_BYTES_WITHOUT_TAG = NOISE_MSG_MAX_LENGTH_BYTES - 16
3
3
 
4
4
  export const DUMP_SESSION_KEYS = Boolean(globalThis.process?.env?.DUMP_SESSION_KEYS)
5
+ export const CHACHA_TAG_LENGTH = 16
@@ -0,0 +1,3 @@
1
+ import { pureJsCrypto } from './js.js'
2
+
3
+ export const defaultCrypto = pureJsCrypto