{"_id":"@hyperswarm/secret-stream","_rev":"1873670","name":"@hyperswarm/secret-stream","description":"Secret stream backed by Noise and libsodium's secretstream","dist-tags":{"latest":"5.1.4"},"maintainers":[{"name":"davidmarkclements","email":"huperekchuno@googlemail.com"},{"name":"pfrazee","email":"pfrazee@gmail.com"}],"time":{"modified":"2021-12-06T11:26:14.000Z","created":"2021-10-14T19:04:24.272Z","5.1.4":"2021-12-06T11:22:26.415Z","5.1.3":"2021-11-24T12:37:30.408Z","5.1.2":"2021-11-22T11:10:45.957Z","5.1.1":"2021-11-07T18:25:26.606Z","5.1.0":"2021-11-05T14:48:09.437Z","5.0.1":"2021-11-03T14:08:36.879Z","5.0.0":"2021-10-14T19:04:24.272Z"},"users":{},"author":{"name":"Mathias Buus","url":"@mafintosh"},"repository":{"type":"git","url":"git+https://github.com/hyperswarm/secret-stream.git"},"versions":{"5.1.4":{"name":"@hyperswarm/secret-stream","version":"5.1.4","description":"Secret stream backed by Noise and libsodium's secretstream","main":"index.js","dependencies":{"b4a":"^1.1.0","noise-curve-ed":"^1.0.2","noise-handshake":"^2.1.0","sodium-secretstream":"^1.0.0","sodium-universal":"^3.0.4","streamx":"^2.10.2"},"devDependencies":{"standard":"^16.0.3","tape":"^5.2.2"},"scripts":{"test":"standard && tape test.js"},"repository":{"type":"git","url":"git+https://github.com/hyperswarm/secret-stream.git"},"author":{"name":"Mathias Buus","url":"@mafintosh"},"license":"MIT","bugs":{"url":"https://github.com/hyperswarm/secret-stream/issues"},"homepage":"https://github.com/hyperswarm/secret-stream","gitHead":"5e768f4d7003877734c533391d5f90b6e612ee4c","_id":"@hyperswarm/secret-stream@5.1.4","_nodeVersion":"16.8.0","_npmVersion":"6.14.15","dist":{"shasum":"830b186da8db772d5d4d7635ce7544c107b349e0","size":7685,"noattachment":false,"key":"/@hyperswarm/secret-stream/-/@hyperswarm/secret-stream-5.1.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/@hyperswarm/secret-stream/download/@hyperswarm/secret-stream-5.1.4.tgz"},"_npmUser":{"name":"mafintosh","email":"mathiasbuus@gmail.com"},"directories":{},"maintainers":[{"name":"davidmarkclements","email":"huperekchuno@googlemail.com"},{"name":"pfrazee","email":"pfrazee@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/secret-stream_5.1.4_1638789746290_0.30619577028052625"},"_hasShrinkwrap":false,"publish_time":1638789746415,"_cnpm_publish_time":1638789746415},"5.1.3":{"name":"@hyperswarm/secret-stream","version":"5.1.3","description":"Secret stream backed by Noise and libsodium's secretstream","main":"index.js","dependencies":{"b4a":"^1.1.0","noise-curve-ed":"^1.0.2","noise-handshake":"^2.1.0","sodium-secretstream":"^1.0.0","sodium-universal":"^3.0.4","streamx":"^2.10.2"},"devDependencies":{"standard":"^16.0.3","tape":"^5.2.2"},"scripts":{"test":"standard && tape test.js"},"repository":{"type":"git","url":"git+https://github.com/hyperswarm/secret-stream.git"},"author":{"name":"Mathias Buus","url":"@mafintosh"},"license":"MIT","bugs":{"url":"https://github.com/hyperswarm/secret-stream/issues"},"homepage":"https://github.com/hyperswarm/secret-stream","gitHead":"e74aa5198c5564c375d8b79ab9c25d9286427393","_id":"@hyperswarm/secret-stream@5.1.3","_nodeVersion":"16.8.0","_npmVersion":"6.14.15","dist":{"shasum":"92adb65d7966005b69aa8042470f037556699507","size":7268,"noattachment":false,"key":"/@hyperswarm/secret-stream/-/@hyperswarm/secret-stream-5.1.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/@hyperswarm/secret-stream/download/@hyperswarm/secret-stream-5.1.3.tgz"},"_npmUser":{"name":"mafintosh","email":"mathiasbuus@gmail.com"},"directories":{},"maintainers":[{"name":"davidmarkclements","email":"huperekchuno@googlemail.com"},{"name":"pfrazee","email":"pfrazee@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/secret-stream_5.1.3_1637757450196_0.8548964730019659"},"_hasShrinkwrap":false,"publish_time":1637757450408,"_cnpm_publish_time":1637757450408},"5.1.2":{"name":"@hyperswarm/secret-stream","version":"5.1.2","description":"Secret stream backed by Noise and libsodium's secretstream","main":"index.js","dependencies":{"b4a":"^1.1.0","noise-curve-ed":"^1.0.2","noise-handshake":"^2.1.0","sodium-secretstream":"^1.0.0","sodium-universal":"^3.0.4","streamx":"^2.10.2"},"devDependencies":{"standard":"^16.0.3","tape":"^5.2.2"},"scripts":{"test":"standard && tape test.js"},"repository":{"type":"git","url":"git+https://github.com/hyperswarm/secret-stream.git"},"author":{"name":"Mathias Buus","url":"@mafintosh"},"license":"MIT","bugs":{"url":"https://github.com/hyperswarm/secret-stream/issues"},"homepage":"https://github.com/hyperswarm/secret-stream","gitHead":"cd1a65559706b3a1d4de59a164f705ab9a4f00a0","_id":"@hyperswarm/secret-stream@5.1.2","_nodeVersion":"16.8.0","_npmVersion":"6.14.15","dist":{"shasum":"048acb7fcd724ea570c293ddb22f9909ce9e647a","size":7270,"noattachment":false,"key":"/@hyperswarm/secret-stream/-/@hyperswarm/secret-stream-5.1.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/@hyperswarm/secret-stream/download/@hyperswarm/secret-stream-5.1.2.tgz"},"_npmUser":{"name":"mafintosh","email":"mathiasbuus@gmail.com"},"directories":{},"maintainers":[{"name":"davidmarkclements","email":"huperekchuno@googlemail.com"},{"name":"pfrazee","email":"pfrazee@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/secret-stream_5.1.2_1637579445771_0.1707070130042212"},"_hasShrinkwrap":false,"publish_time":1637579445957,"_cnpm_publish_time":1637579445957},"5.1.1":{"name":"@hyperswarm/secret-stream","version":"5.1.1","description":"Secret stream backed by Noise and libsodium's secretstream","main":"index.js","dependencies":{"b4a":"^1.1.0","noise-curve-ed":"^1.0.2","noise-handshake":"^2.1.0","sodium-secretstream":"^1.0.0","sodium-universal":"^3.0.4","streamx":"^2.10.2"},"devDependencies":{"standard":"^16.0.3","tape":"^5.2.2"},"scripts":{"test":"standard && tape test.js"},"repository":{"type":"git","url":"git+https://github.com/hyperswarm/secret-stream.git"},"author":{"name":"Mathias Buus","url":"@mafintosh"},"license":"MIT","bugs":{"url":"https://github.com/hyperswarm/secret-stream/issues"},"homepage":"https://github.com/hyperswarm/secret-stream","gitHead":"75a03f8f46310eb1e70186dd9b6daab160e3e6e9","_id":"@hyperswarm/secret-stream@5.1.1","_nodeVersion":"16.8.0","_npmVersion":"6.14.15","dist":{"shasum":"711fcd23139b8622b6ae68d038ccc3a780348726","size":7299,"noattachment":false,"key":"/@hyperswarm/secret-stream/-/@hyperswarm/secret-stream-5.1.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/@hyperswarm/secret-stream/download/@hyperswarm/secret-stream-5.1.1.tgz"},"_npmUser":{"name":"mafintosh","email":"mathiasbuus@gmail.com"},"directories":{},"maintainers":[{"name":"davidmarkclements","email":"huperekchuno@googlemail.com"},{"name":"pfrazee","email":"pfrazee@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/secret-stream_5.1.1_1636309526485_0.376529480999209"},"_hasShrinkwrap":false,"publish_time":1636309526606,"_cnpm_publish_time":1636309526606},"5.1.0":{"name":"@hyperswarm/secret-stream","version":"5.1.0","description":"Secret stream backed by Noise and libsodium's secretstream","main":"index.js","dependencies":{"b4a":"^1.1.0","noise-curve-ed":"^1.0.2","noise-handshake":"^2.1.0","sodium-secretstream":"^1.0.0","sodium-universal":"^3.0.4","streamx":"^2.10.2"},"devDependencies":{"standard":"^16.0.3","tape":"^5.2.2"},"scripts":{"test":"standard && tape test.js"},"repository":{"type":"git","url":"git+https://github.com/hyperswarm/secret-stream.git"},"author":{"name":"Mathias Buus","url":"@mafintosh"},"license":"MIT","bugs":{"url":"https://github.com/hyperswarm/secret-stream/issues"},"homepage":"https://github.com/hyperswarm/secret-stream","gitHead":"c8ae288068672a333c0a826626f0606e424c215b","_id":"@hyperswarm/secret-stream@5.1.0","_nodeVersion":"16.8.0","_npmVersion":"6.14.15","dist":{"shasum":"3e009b44dfa67d6d84ce5be48fef21454b69088d","size":7295,"noattachment":false,"key":"/@hyperswarm/secret-stream/-/@hyperswarm/secret-stream-5.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/@hyperswarm/secret-stream/download/@hyperswarm/secret-stream-5.1.0.tgz"},"_npmUser":{"name":"mafintosh","email":"mathiasbuus@gmail.com"},"directories":{},"maintainers":[{"name":"davidmarkclements","email":"huperekchuno@googlemail.com"},{"name":"pfrazee","email":"pfrazee@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/secret-stream_5.1.0_1636123689287_0.8980038092645899"},"_hasShrinkwrap":false,"publish_time":1636123689437,"_cnpm_publish_time":1636123689437},"5.0.1":{"name":"@hyperswarm/secret-stream","version":"5.0.1","description":"Secret stream backed by Noise and libsodium's secretstream","main":"index.js","dependencies":{"b4a":"^1.1.0","noise-curve-ed":"^1.0.2","noise-handshake":"^2.1.0","sodium-secretstream":"^1.0.0","sodium-universal":"^3.0.4","streamx":"^2.10.2"},"devDependencies":{"standard":"^16.0.3","tape":"^5.2.2"},"scripts":{"test":"standard && tape test.js"},"repository":{"type":"git","url":"git+https://github.com/hyperswarm/secret-stream.git"},"author":{"name":"Mathias Buus","url":"@mafintosh"},"license":"MIT","bugs":{"url":"https://github.com/hyperswarm/secret-stream/issues"},"homepage":"https://github.com/hyperswarm/secret-stream","gitHead":"0e57393b5955dc15e7fc3801bd6d622eee86e245","_id":"@hyperswarm/secret-stream@5.0.1","_nodeVersion":"16.8.0","_npmVersion":"6.14.15","dist":{"shasum":"bf0a74be2ab090ffccccccc6f1e457ce7ed3abc1","size":7208,"noattachment":false,"key":"/@hyperswarm/secret-stream/-/@hyperswarm/secret-stream-5.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/@hyperswarm/secret-stream/download/@hyperswarm/secret-stream-5.0.1.tgz"},"_npmUser":{"name":"mafintosh","email":"mathiasbuus@gmail.com"},"directories":{},"maintainers":[{"name":"davidmarkclements","email":"huperekchuno@googlemail.com"},{"name":"pfrazee","email":"pfrazee@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/secret-stream_5.0.1_1635948516754_0.2862426046321429"},"_hasShrinkwrap":false,"publish_time":1635948516879,"_cnpm_publish_time":1635948516879},"5.0.0":{"name":"@hyperswarm/secret-stream","version":"5.0.0","description":"Secret stream backed by Noise and libsodium's secretstream","main":"index.js","dependencies":{"noise-curve-ed":"^1.0.2","noise-handshake":"^2.1.0","sodium-secretstream":"^1.0.0","sodium-universal":"^3.0.4","streamx":"^2.10.2"},"devDependencies":{"standard":"^16.0.3","tape":"^5.2.2"},"scripts":{"test":"standard && tape test.js"},"repository":{"type":"git","url":"git+https://github.com/hyperswarm/secret-stream.git"},"author":{"name":"Mathias Buus","url":"@mafintosh"},"license":"MIT","bugs":{"url":"https://github.com/hyperswarm/secret-stream/issues"},"homepage":"https://github.com/hyperswarm/secret-stream","gitHead":"4d1bbde66d180e0a46cec4ba6ac6b30d5ed2d76e","_id":"@hyperswarm/secret-stream@5.0.0","_nodeVersion":"16.8.0","_npmVersion":"6.14.15","dist":{"shasum":"1195ef8e5d9fb1abfa0ff5dd7069110146c6d0a7","size":7179,"noattachment":false,"key":"/@hyperswarm/secret-stream/-/@hyperswarm/secret-stream-5.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/@hyperswarm/secret-stream/download/@hyperswarm/secret-stream-5.0.0.tgz"},"_npmUser":{"name":"mafintosh","email":"mathiasbuus@gmail.com"},"directories":{},"maintainers":[{"name":"davidmarkclements","email":"huperekchuno@googlemail.com"},{"name":"pfrazee","email":"pfrazee@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/secret-stream_5.0.0_1634238264108_0.52423882245091"},"_hasShrinkwrap":false,"publish_time":1634238264272,"_cnpm_publish_time":1634238264272}},"readme":"# @hyperswarm/secret-stream\n\nSecret stream backed by Noise and libsodium's secretstream\n\n```\nnpm install @hyperswarm/secret-stream\n```\n\n## Usage\n\nYou can either make a secret stream from an existing transport stream.\n\n``` js\nconst SecretStream = require('@hyperswarm/secret-stream')\n\nconst a = new SecretStream(true, tcpClientStream)\nconst b = new SecretStream(false, tcpServerStream)\n\n// pipe the underlying rawstreams together\n\na.write(Buffer.from('hello encrypted!'))\n\nb.on('data', function (data) {\n  console.log(data) // <Buffer hello encrypted!>\n})\n```\n\nOr by making your own pipeline\n\n``` js\nconst a = new SecretStream(true)\nconst b = new SecretStream(false)\n\n// pipe the underlying rawstreams together\na.rawStream.pipe(b.rawStream).pipe(a.rawStream)\n\na.write(Buffer.from('hello encrypted!'))\n\nb.on('data', function (data) {\n  console.log(data) // <Buffer hello encrypted!>\n})\n```\n\n## API\n\n#### `const s = new SecretStream(isInitiator, [rawStream], [options])`\n\nMake a new stream. `isInitiator` is a boolean indication whether you are the client or the server.\n`rawStream` can be set to an underlying transport stream you want to run the noise stream over.\n\nOptions include:\n\n```js\n{\n  pattern: 'XX', // which noise pattern to use\n  remotePublicKey, // set if your handshake requires it\n  keyPair: { publicKey, secretKey },\n  handshake: { // if you want to use an handshake performed elsewhere pass it here\n    tx,\n    rx,\n    handshakeHash,\n    publicKey,\n    remotePublicKey\n  }\n}\n```\n\nThe SecretStream returned is a Duplex stream that you use as as normal stream, to write/read data from,\nexcept it's payloads are encrypted using the libsodium secretstream.\n\nNote that this uses ed25519 for the handshakes per default.\n\nIf need to load the key pair asynchronously, then secret-stream also supports passing in a promise\ninstead of the keypair that later resolves to `{ publicKey, secretKey }`. The stream lifecycle will wait\nfor the resolution and auto destroy the stream if the promise errors.\n\n#### `s.start(rawStream, [options])`\n\nStart a SecretStream from a rawStream asynchrously.\n\n``` js\nconst s = new SecretStream({\n  autoStart: false // call start manually\n})\n\n// ... do async stuff or destroy the stream\n\ns.start(rawStream, {\n  ... options from above\n})\n```\n\n#### `keyPair = SecretStream.keyPair([seed])`\n\nGenerate a ed25519 key pair.\n\n#### `s.publicKey`\n\nGet the local public key.\n\n#### `s.remotePublicKey`\n\nGet the remote's public key.\nPopulated after `open` is emitted.\n\n#### `s.handshakeHash`\n\nGet the unique hash of this handshake.\nPopulated after `open` is emitted.\n\n#### `s.on('connect', onconnect)`\n\nEmitted when the handshake is fully done.\nIt is safe to write to the stream immediately though, as data is buffered\ninternally before the handshake has been completed.\n\n## License\n\nMIT\n","_attachments":{},"homepage":"https://github.com/hyperswarm/secret-stream","bugs":{"url":"https://github.com/hyperswarm/secret-stream/issues"},"license":"MIT"}