{"_id":"secret-handshake","_rev":"42-37d72a123f897f1203d45ceb18e0cf37","name":"secret-handshake","description":"a simple and highly private secure-channel protocol","dist-tags":{"latest":"1.1.21"},"versions":{"0.0.2":{"name":"secret-handshake","description":"secure-channel based on a a mutually authenticating key agreement handshake, with forward secure identity metadata.","version":"0.0.2","homepage":"https://github.com/dominictarr/secret-handshake","repository":{"type":"git","url":"git://github.com/dominictarr/secret-handshake.git"},"dependencies":{"deep-equal":"~1.0.0","pull-box-stream":"^1.0.2","pull-cat":"~1.1.5","pull-defer":"~0.1.1","pull-handshake":"~1.0.1","pull-pair":"~1.0.0","pull-pushable":"~1.1.4","pull-stream":"~2.26.1","sodium":"^1.0.19"},"devDependencies":{"pull-mac":"0.0.0","pull-randomly-split":"~1.0.4","tape":"~4.0.0","pull-bitflipper":"~0.1.0","stream-to-pull-stream":"~1.6.1"},"scripts":{"prepublish":"npm ls &&  npm test","test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"f9bfdf0fa3201d1482246b5d4178908286688679","bugs":{"url":"https://github.com/dominictarr/secret-handshake/issues"},"_id":"secret-handshake@0.0.2","_shasum":"c3b92f0f50d55a5cbba78cbbc219de7c691200fb","_from":".","_npmVersion":"2.11.0","_nodeVersion":"0.12.4","_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"dist":{"shasum":"c3b92f0f50d55a5cbba78cbbc219de7c691200fb","tarball":"https://registry.npmjs.org/secret-handshake/-/secret-handshake-0.0.2.tgz","integrity":"sha512-81liZAC4AYcDbgbLT3Inw2kIezauR08Py+bIJHCjXqXAjrZHsRQbyLUNjdMr/mtGPHi5QoFjO2bCuNIdArpu0A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDKk4CnMnnrsfRP8f1g8zUTmxbpy0FvTtJXz9fVuMOmwAiEA4C4pd1TN6fmHYOIr0T7OmlBGGhUo0fcWmOaEXpPAVeU="}]},"directories":{}},"0.1.0":{"name":"secret-handshake","description":"secure-channel based on a a mutually authenticating key agreement handshake, with forward secure identity metadata.","version":"0.1.0","homepage":"https://github.com/dominictarr/secret-handshake","repository":{"type":"git","url":"git://github.com/dominictarr/secret-handshake.git"},"dependencies":{"deep-equal":"~1.0.0","pull-box-stream":"^1.0.2","pull-cat":"~1.1.5","pull-defer":"~0.1.1","pull-handshake":"~1.0.1","pull-pair":"~1.0.0","pull-pushable":"~1.1.4","pull-stream":"~2.26.1","sodium":"^1.0.19"},"devDependencies":{"pull-mac":"0.0.0","pull-randomly-split":"~1.0.4","tape":"~4.0.0","pull-bitflipper":"~0.1.0","stream-to-pull-stream":"~1.6.1"},"scripts":{"prepublish":"npm ls &&  npm test","test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"246ab1bfc7b658f2a3a6094435fa81588d3be107","bugs":{"url":"https://github.com/dominictarr/secret-handshake/issues"},"_id":"secret-handshake@0.1.0","_shasum":"4d1c8849e9307578ccda2dc1051a675036f601be","_from":".","_npmVersion":"2.11.0","_nodeVersion":"0.12.4","_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"dist":{"shasum":"4d1c8849e9307578ccda2dc1051a675036f601be","tarball":"https://registry.npmjs.org/secret-handshake/-/secret-handshake-0.1.0.tgz","integrity":"sha512-CceHFIM8/ysWgq4qp2RvsejHHehUYvBgr0oxlI5qYbA492qGaog1yS4YQ6epDYXiBkAgUpgAbnUvIjbOFZZHSQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDsCGbJaAMdXMwPzLh3yTh8NKJYcpK3P9a8tLnVaPVplgIgRKAkRpHqNUYRzMe72YZDY8rpj8Vfjtf2n7a8n7zugyg="}]},"directories":{}},"0.1.1":{"name":"secret-handshake","description":"secure-channel based on a a mutually authenticating key agreement handshake, with forward secure identity metadata.","version":"0.1.1","homepage":"https://github.com/dominictarr/secret-handshake","repository":{"type":"git","url":"git://github.com/dominictarr/secret-handshake.git"},"dependencies":{"deep-equal":"~1.0.0","pull-box-stream":"^1.0.2","pull-cat":"~1.1.5","pull-defer":"~0.1.1","pull-handshake":"~1.0.1","pull-pair":"~1.0.0","pull-pushable":"~1.1.4","pull-stream":"~2.26.1","sodium":"git://github.com/dominictarr/node-sodium.git"},"devDependencies":{"pull-mac":"0.0.0","pull-randomly-split":"~1.0.4","tape":"~4.0.0","pull-bitflipper":"~0.1.0","stream-to-pull-stream":"~1.6.1"},"scripts":{"prepublish":"npm ls &&  npm test","test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"534ba5d9142c4d514664a05b56f5b93df0779c23","bugs":{"url":"https://github.com/dominictarr/secret-handshake/issues"},"_id":"secret-handshake@0.1.1","_shasum":"44c28162b4cb660bf982c2c5b58359e97482be8e","_from":".","_npmVersion":"2.11.0","_nodeVersion":"0.12.4","_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"dist":{"shasum":"44c28162b4cb660bf982c2c5b58359e97482be8e","tarball":"https://registry.npmjs.org/secret-handshake/-/secret-handshake-0.1.1.tgz","integrity":"sha512-X14XXV1hl6UWlDqVTKJrBo2jkBjLyu1ZxtjqAACOgdyLxXj/Hiq/KoQUlCkJ5HLdHLB/RT1xFf/oYmyuHjPUOw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHSmaFaVCSoo6KyjFsSNpXJ6zXIxQsHNIxXK139gY/OCAiAffZ668g47iQOsINUDlXwbrKlIxd4g24AuT4NJI/PZNw=="}]},"directories":{}},"0.1.2":{"name":"secret-handshake","description":"a simple and highly private secure-channel protocol","version":"0.1.2","homepage":"https://github.com/dominictarr/secret-handshake","repository":{"type":"git","url":"git://github.com/dominictarr/secret-handshake.git"},"dependencies":{"deep-equal":"~1.0.0","pull-box-stream":"^1.0.2","pull-cat":"~1.1.5","pull-defer":"~0.1.1","pull-handshake":"^1.0.2","pull-pair":"~1.0.0","pull-pushable":"~1.1.4","pull-stream":"~2.26.1","sodium":"git://github.com/dominictarr/node-sodium.git"},"devDependencies":{"pull-mac":"0.0.0","pull-randomly-split":"~1.0.4","tape":"~4.0.0","pull-bitflipper":"~0.1.0","stream-to-pull-stream":"~1.6.1"},"scripts":{"prepublish":"npm ls &&  npm test","test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"76df5dcee328257104696bbf4ca01c109e0e1ab0","bugs":{"url":"https://github.com/dominictarr/secret-handshake/issues"},"_id":"secret-handshake@0.1.2","_shasum":"ff1174ba121607089ab5179f7e652d8b4bf5a168","_from":".","_npmVersion":"2.12.0","_nodeVersion":"2.3.1","_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"dist":{"shasum":"ff1174ba121607089ab5179f7e652d8b4bf5a168","tarball":"https://registry.npmjs.org/secret-handshake/-/secret-handshake-0.1.2.tgz","integrity":"sha512-Rujly5eAupZ3S6bq8Zdsfmsa29fOMLNCo+Nfc/oorxoUBMb011Rm9+wpdNH8ii4Kjl++8wOyAG6yMBtheUtFPw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICf7lxBbg8C7nDPuYN4BMgwaQXe4eeiUE2F2FeGVlmw0AiBQ/Rb3NN476UX4YNkZZr4At03MeM+9GnW6v9pGqgMlDg=="}]},"directories":{}},"0.2.0":{"name":"secret-handshake","description":"a simple and highly private secure-channel protocol","version":"0.2.0","homepage":"https://github.com/dominictarr/secret-handshake","repository":{"type":"git","url":"git://github.com/dominictarr/secret-handshake.git"},"dependencies":{"deep-equal":"~1.0.0","pull-box-stream":"^1.0.2","pull-cat":"~1.1.5","pull-defer":"~0.2.0","pull-handshake":"^1.0.2","pull-pair":"~1.0.0","pull-pushable":"~1.1.4","pull-stream":"~2.26.1","sodium":"git://github.com/dominictarr/node-sodium.git"},"devDependencies":{"pull-mac":"0.0.0","pull-randomly-split":"~1.0.4","tape":"~4.0.0","pull-bitflipper":"~0.1.0","stream-to-pull-stream":"~1.6.1"},"scripts":{"prepublish":"npm ls &&  npm test","test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"f644de5ba2f2fcd7875435c3eca2df9563a3b0f2","bugs":{"url":"https://github.com/dominictarr/secret-handshake/issues"},"_id":"secret-handshake@0.2.0","_shasum":"915bfcc15437621cfcc5c168931c430e758e7058","_from":".","_npmVersion":"2.12.0","_nodeVersion":"2.3.1","_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"dist":{"shasum":"915bfcc15437621cfcc5c168931c430e758e7058","tarball":"https://registry.npmjs.org/secret-handshake/-/secret-handshake-0.2.0.tgz","integrity":"sha512-DAmKRHQSvljC4+mpPDMeB+wuux4EaSL2nNH0xNffgVQnmn/YToJGqHMdSTU4z8/eUEf1Q0/3NVUfzLpsQ/0AoA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCr83cvkgK5SySC4JlnC+0X6rqudMK0PzolgKBXzJM7OQIhAI3lB1NcHZIoGlODrl4WqLn403flrlSVEN2jG35wVmFL"}]},"directories":{}},"0.3.0":{"name":"secret-handshake","description":"a simple and highly private secure-channel protocol","version":"0.3.0","homepage":"https://github.com/dominictarr/secret-handshake","repository":{"type":"git","url":"git://github.com/dominictarr/secret-handshake.git"},"dependencies":{"deep-equal":"~1.0.0","pull-box-stream":"^1.0.2","pull-cat":"~1.1.5","pull-defer":"~0.2.0","pull-handshake":"^1.0.2","pull-pair":"~1.0.0","pull-pushable":"~1.1.4","pull-stream":"~2.26.1","sodium":"git://github.com/dominictarr/node-sodium.git"},"devDependencies":{"pull-mac":"0.0.0","pull-randomly-split":"~1.0.4","tape":"~4.0.0","pull-bitflipper":"~0.1.0","stream-to-pull-stream":"~1.6.1"},"scripts":{"prepublish":"npm ls &&  npm test","test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"5adb52b9e1e65e4423a3f78685a9beec201e24a6","bugs":{"url":"https://github.com/dominictarr/secret-handshake/issues"},"_id":"secret-handshake@0.3.0","_shasum":"907bf5e5bff26b087cef2f25d3d3d8ec42fc4d5e","_from":".","_npmVersion":"2.12.0","_nodeVersion":"2.3.1","_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"dist":{"shasum":"907bf5e5bff26b087cef2f25d3d3d8ec42fc4d5e","tarball":"https://registry.npmjs.org/secret-handshake/-/secret-handshake-0.3.0.tgz","integrity":"sha512-zPKcx9E8DXGX4iixi2v0mH7IH9Ds/O9LsLofiDo5ibgMvmFLrUK0VNuPcZZ+3IpmQe/gunBjbcTjKEMwJLuM8w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF9X6zsn6T4Mmx+6htuLR19ePbzogN39qUKSztiFfMJ5AiEApXkZSJ+lkFb5VBxgHnkLbOl/8KWa3491MOin/GDvI7k="}]},"directories":{}},"0.3.1":{"name":"secret-handshake","description":"a simple and highly private secure-channel protocol","version":"0.3.1","homepage":"https://github.com/dominictarr/secret-handshake","repository":{"type":"git","url":"git://github.com/dominictarr/secret-handshake.git"},"dependencies":{"deep-equal":"~1.0.0","pull-box-stream":"^1.0.2","pull-cat":"~1.1.5","pull-defer":"~0.2.0","pull-handshake":"^1.0.2","pull-pair":"~1.0.0","pull-pushable":"~1.1.4","pull-stream":"~2.26.1","sodium":"git://github.com/dominictarr/node-sodium.git#0fade334a8c67b6267a5e66f944199b74927713a"},"devDependencies":{"pull-mac":"0.0.0","pull-randomly-split":"~1.0.4","tape":"~4.0.0","pull-bitflipper":"~0.1.0","stream-to-pull-stream":"~1.6.1"},"scripts":{"prepublish":"npm ls &&  npm test","test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"3c07f83638d6c001c0b4a290b0c08b40a7c6fa71","bugs":{"url":"https://github.com/dominictarr/secret-handshake/issues"},"_id":"secret-handshake@0.3.1","_shasum":"9017801f6da686a2015d31b968b5c1e15be3e0cd","_from":".","_npmVersion":"2.13.2","_nodeVersion":"2.3.1","_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"dist":{"shasum":"9017801f6da686a2015d31b968b5c1e15be3e0cd","tarball":"https://registry.npmjs.org/secret-handshake/-/secret-handshake-0.3.1.tgz","integrity":"sha512-RWP4/c2iaRCQGaC+JZLRdPMuy65KBB+G7Qj0xg7oqnVYxr8MikQxAJaNJNxW5ATTLA0Et8/RDzpvipiqtEC76A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDp+e/8xEEoPqUGHu+6EgLqn2Nn1JVTUXT2wPPDjqAUKAIhANOl+6cXnUBZa9+ljzctWXkdmVr+IemJ70yDzpJ/wS/A"}]},"directories":{}},"0.3.3":{"name":"secret-handshake","description":"a simple and highly private secure-channel protocol","version":"0.3.3","homepage":"https://github.com/dominictarr/secret-handshake","repository":{"type":"git","url":"git://github.com/dominictarr/secret-handshake.git"},"dependencies":{"chloride":"^1.0.20-1","deep-equal":"~1.0.0","pull-box-stream":"^1.0.6","pull-cat":"~1.1.5","pull-defer":"~0.2.0","pull-handshake":"^1.0.2","pull-pair":"~1.0.0","pull-pushable":"~1.1.4","pull-stream":"~2.26.1","stream-to-pull-stream":"^1.6.2"},"devDependencies":{"pull-mac":"0.0.0","pull-randomly-split":"~1.0.4","tape":"~4.0.0","pull-bitflipper":"~0.1.0","stream-to-pull-stream":"~1.6.1"},"scripts":{"prepublish":"npm ls &&  npm test","test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"dcde0d98aa1f9f63c9286ba03376babb512f5de8","bugs":{"url":"https://github.com/dominictarr/secret-handshake/issues"},"_id":"secret-handshake@0.3.3","_shasum":"d3cad7bb2f4c9782114789dbd6e6c32f2c6ec6c2","_from":".","_npmVersion":"2.13.2","_nodeVersion":"2.3.1","_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"dist":{"shasum":"d3cad7bb2f4c9782114789dbd6e6c32f2c6ec6c2","tarball":"https://registry.npmjs.org/secret-handshake/-/secret-handshake-0.3.3.tgz","integrity":"sha512-jlVgXy5VfqMLZHMr/8V1EVP03ylohnGE4R6tWIt0cnu/k2Q2qzscVPHGAhHunMluEoh45RPxiikwDfT0hCUZDQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCcBqtD9a3LFY+QMah/Ngj8tOwIvj2NHcvKhZeu8FCjHgIhAJB8NgCzvKP3ItoanO2bX7sWveYE7bp2txP1xoxoQXsD"}]},"directories":{}},"0.3.4":{"name":"secret-handshake","description":"a simple and highly private secure-channel protocol","version":"0.3.4","homepage":"https://github.com/dominictarr/secret-handshake","repository":{"type":"git","url":"git://github.com/dominictarr/secret-handshake.git"},"dependencies":{"chloride":"^1.0.20-1","deep-equal":"~1.0.0","pull-box-stream":"^1.0.6","pull-cat":"~1.1.5","pull-defer":"~0.2.0","pull-handshake":"^1.0.2","pull-pair":"~1.0.0","pull-pushable":"~1.1.4","pull-stream":"~2.26.1","stream-to-pull-stream":"^1.6.2"},"devDependencies":{"pull-randomly-split":"~1.0.4","tape":"~4.0.0","pull-bitflipper":"~0.1.0","stream-to-pull-stream":"~1.6.1"},"scripts":{"prepublish":"npm ls &&  npm test","test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"f0af83e9b8f05821192c791ae294a9fe3780bb79","bugs":{"url":"https://github.com/dominictarr/secret-handshake/issues"},"_id":"secret-handshake@0.3.4","_shasum":"73917dc842510ebb35b6b1c24bb60b1f321b1d0b","_from":".","_npmVersion":"2.13.2","_nodeVersion":"2.3.1","_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"dist":{"shasum":"73917dc842510ebb35b6b1c24bb60b1f321b1d0b","tarball":"https://registry.npmjs.org/secret-handshake/-/secret-handshake-0.3.4.tgz","integrity":"sha512-5RuJ2LxDqZJB6inub9i1szmytO4SHBi3RX9yjUdCNDexG89/87qQDiwtJYoEduTMdlSM6AEb3kjgVA31OJQyOA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDfWg+Aen4rouxVs+zF8PXpeMRLileICjpgXcC8LL2otwIhANeaxn/OQpz3YTq/ddxIcbGM4Xt7lUAdkK1IKUsg0Udc"}]},"directories":{}},"0.3.6":{"name":"secret-handshake","description":"a simple and highly private secure-channel protocol","version":"0.3.6","homepage":"https://github.com/dominictarr/secret-handshake","repository":{"type":"git","url":"git://github.com/dominictarr/secret-handshake.git"},"dependencies":{"chloride":"^1.0.22","deep-equal":"~1.0.0","pull-box-stream":"^1.0.8","pull-cat":"~1.1.5","pull-defer":"~0.2.0","pull-handshake":"^1.0.2","pull-pair":"~1.0.0","pull-pushable":"~1.1.4","pull-stream":"~2.26.1","stream-to-pull-stream":"^1.6.2"},"devDependencies":{"pull-randomly-split":"~1.0.4","tape":"~4.0.0","pull-bitflipper":"~0.1.0","stream-to-pull-stream":"~1.6.1"},"scripts":{"prepublish":"npm ls &&  npm test","test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"76435d60b0f9e410bf6fd8de744bcd13ea207513","bugs":{"url":"https://github.com/dominictarr/secret-handshake/issues"},"_id":"secret-handshake@0.3.6","_shasum":"d654b51a3fe70ecc590225cc0f4a594154d6ee6a","_from":".","_npmVersion":"2.14.2","_nodeVersion":"4.0.0","_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"dist":{"shasum":"d654b51a3fe70ecc590225cc0f4a594154d6ee6a","tarball":"https://registry.npmjs.org/secret-handshake/-/secret-handshake-0.3.6.tgz","integrity":"sha512-1U7B/VSyJWLwDNKy6Sl63866mXIV+bDQg6U6QNCoy/by1qTz7KQ5k6dc5CY0lWjXmHx6mK3VHMZ4rmDkE4zQZQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGA4KdCK9eITdRl+wFVTTKEzQlDAekWp91ZujiuZJPpQAiEAwzhHMQcSwS4yTcx2MgB4oX71P0DZ+F6nIOQ8TmtsqgY="}]},"directories":{}},"0.3.7":{"name":"secret-handshake","description":"a simple and highly private secure-channel protocol","version":"0.3.7","homepage":"https://github.com/dominictarr/secret-handshake","repository":{"type":"git","url":"git://github.com/dominictarr/secret-handshake.git"},"dependencies":{"chloride":"^2.0.1","deep-equal":"~1.0.0","pull-box-stream":"^1.0.9","pull-cat":"~1.1.5","pull-defer":"~0.2.0","pull-handshake":"^1.0.2","pull-pair":"~1.0.0","pull-pushable":"~1.1.4","pull-stream":"~2.26.1","stream-to-pull-stream":"^1.6.2"},"devDependencies":{"pull-randomly-split":"~1.0.4","tape":"~4.0.0","pull-bitflipper":"~0.1.0","stream-to-pull-stream":"~1.6.1"},"scripts":{"prepublish":"npm ls &&  npm test","test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"2c759698ee4d424df952a212e67da7184b86f444","bugs":{"url":"https://github.com/dominictarr/secret-handshake/issues"},"_id":"secret-handshake@0.3.7","_shasum":"1b5bd03e1766e06acd45b961a49db155e2b54fab","_from":".","_npmVersion":"2.14.7","_nodeVersion":"4.2.3","_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"dist":{"shasum":"1b5bd03e1766e06acd45b961a49db155e2b54fab","tarball":"https://registry.npmjs.org/secret-handshake/-/secret-handshake-0.3.7.tgz","integrity":"sha512-lzKvV4zMcxWzxG1HzSFKE4vy9fDMSI2coPTD8V7TksXec9kiPVTnaiu+KS6ZPdlqItuqwLbMpgBZSrQ5vEVIhQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICJJU3hfN2+EW0h3hybMyyzk2aps5etCoNJR3h/qzp3LAiAQFw+qQzEswEi2W+wmn1zkbTLClEj+cAHQxNvGPA+o5w=="}]},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"directories":{}},"0.3.8":{"name":"secret-handshake","description":"a simple and highly private secure-channel protocol","version":"0.3.8","homepage":"https://github.com/dominictarr/secret-handshake","repository":{"type":"git","url":"git://github.com/dominictarr/secret-handshake.git"},"dependencies":{"chloride":"^2.0.1","deep-equal":"~1.0.0","pull-box-stream":"^1.0.9","pull-cat":"~1.1.5","pull-defer":"~0.2.0","pull-handshake":"^1.0.2","pull-pair":"~1.0.0","pull-pushable":"~1.1.4","pull-stream":"~2.26.1","stream-to-pull-stream":"^1.6.2"},"devDependencies":{"pull-randomly-split":"~1.0.4","tape":"~4.0.0","pull-bitflipper":"~0.1.0","stream-to-pull-stream":"~1.6.1"},"scripts":{"prepublish":"npm ls &&  npm test","test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"09d99f8d0e91f0918a339a8be230f2f6e6037a13","bugs":{"url":"https://github.com/dominictarr/secret-handshake/issues"},"_id":"secret-handshake@0.3.8","_shasum":"23510bce120086b1e45806f3232aff3e6710c0a1","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.3.0","_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"dist":{"shasum":"23510bce120086b1e45806f3232aff3e6710c0a1","tarball":"https://registry.npmjs.org/secret-handshake/-/secret-handshake-0.3.8.tgz","integrity":"sha512-1iMS8gMCCXm/2ayWSy00vvZYzNEIU/qAc/NxE1UFTEvnX+I4VMMQrxQYv5jeT7oh4fd2sfrSylFIM0arMG8V9w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDwkn7pmN+lYs011To/i4secFiahDx+l8FTO0rB3VfOFAIhANKU5wkFbF5lqeoXy9ZMhEmJKCpX0RpPHoDF/LB9c+Jf"}]},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"directories":{}},"0.4.0":{"name":"secret-handshake","description":"a simple and highly private secure-channel protocol","version":"0.4.0","homepage":"https://github.com/dominictarr/secret-handshake","repository":{"type":"git","url":"git://github.com/dominictarr/secret-handshake.git"},"dependencies":{"chloride":"^2.0.1","deep-equal":"~1.0.0","pull-box-stream":"^1.0.9","pull-cat":"~1.1.5","pull-defer":"^0.2.2","pull-handshake":"^1.1.1","pull-pair":"^1.1.0","pull-pushable":"^2.0.0","pull-reader":"^1.2.2","pull-stream":"^3.2.0","stream-to-pull-stream":"^1.6.2"},"devDependencies":{"pull-bitflipper":"~0.1.0","pull-hang":"0.0.0","pull-randomly-split":"~1.0.4","stream-to-pull-stream":"~1.6.1","tape":"~4.0.0"},"scripts":{"prepublish":"npm ls &&  npm test","test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"43a3ca6c3995546eabb2ce194c976b053d1bad19","bugs":{"url":"https://github.com/dominictarr/secret-handshake/issues"},"_id":"secret-handshake@0.4.0","_shasum":"bc9635f09e28dde8844b38e3a42fa5637cc8c8aa","_from":".","_npmVersion":"3.6.0","_nodeVersion":"5.6.0","_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"dist":{"shasum":"bc9635f09e28dde8844b38e3a42fa5637cc8c8aa","tarball":"https://registry.npmjs.org/secret-handshake/-/secret-handshake-0.4.0.tgz","integrity":"sha512-d+XGx2cKdIgN10LV0gIbh/gVE2dF6STr+y6d6YcKfJVJoqjj4dcYX7bYhQPGbOb8HV3JRJZblnzzQK5RF8e3kA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFBnU+UAuJLoz7vrBg2fHsaFw1OUgmEYZJ8bkUGi/P9sAiAr37JjmdIApcyxshjEbyjCiDN5kleKi0w7NRIvvcp6Lg=="}]},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"_npmOperationalInternal":{"host":"packages-13-west.internal.npmjs.com","tmp":"tmp/secret-handshake-0.4.0.tgz_1458015880904_0.5387142200488597"},"directories":{}},"0.4.1":{"name":"secret-handshake","description":"a simple and highly private secure-channel protocol","version":"0.4.1","homepage":"https://github.com/dominictarr/secret-handshake","repository":{"type":"git","url":"git://github.com/dominictarr/secret-handshake.git"},"dependencies":{"chloride":"^2.0.1","deep-equal":"~1.0.0","pull-box-stream":"^1.0.9","pull-cat":"~1.1.5","pull-defer":"^0.2.2","pull-handshake":"^1.1.1","pull-pair":"^1.1.0","pull-pushable":"^2.0.0","pull-reader":"^1.2.2","pull-stream":"^3.2.0","stream-to-pull-stream":"^1.6.2"},"devDependencies":{"pull-bitflipper":"~0.1.0","pull-hang":"0.0.0","pull-randomly-split":"~1.0.4","stream-to-pull-stream":"~1.6.1","tape":"~4.0.0"},"scripts":{"prepublish":"npm ls &&  npm test","test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"6761fe1f8c4e64af17100ed7b7b471edc7bc5bd6","bugs":{"url":"https://github.com/dominictarr/secret-handshake/issues"},"_id":"secret-handshake@0.4.1","_shasum":"bfd5aa0e4eb1effb81635f3f930b64037b215c23","_from":".","_npmVersion":"3.6.0","_nodeVersion":"5.6.0","_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"dist":{"shasum":"bfd5aa0e4eb1effb81635f3f930b64037b215c23","tarball":"https://registry.npmjs.org/secret-handshake/-/secret-handshake-0.4.1.tgz","integrity":"sha512-oW+GMp/eBS2oHqsglpaDaNmM05To+m7gsaDytCdxpA8qWjXq5HUAgpPN8o7L1YE534npaBT7x6W7Q9hTFbRCMQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCTtaXbMsfVGbhOQdd7HGSw16h8nTuWKxcXs2+jUNIV8gIhAI77lNDguyyi89Ld7eY8s6Qo0h+BtOGA5MHAhfI/Vkae"}]},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"_npmOperationalInternal":{"host":"packages-13-west.internal.npmjs.com","tmp":"tmp/secret-handshake-0.4.1.tgz_1458016882722_0.8090982344001532"},"directories":{}},"0.5.0":{"name":"secret-handshake","description":"a simple and highly private secure-channel protocol","version":"0.5.0","homepage":"https://github.com/dominictarr/secret-handshake","repository":{"type":"git","url":"git://github.com/dominictarr/secret-handshake.git"},"dependencies":{"chloride":"^2.0.1","deep-equal":"~1.0.0","pull-box-stream":"^1.0.9","pull-cat":"~1.1.5","pull-defer":"^0.2.2","pull-handshake":"^1.1.1","pull-pair":"^1.1.0","pull-pushable":"^2.0.0","pull-reader":"^1.2.2","pull-stream":"^3.2.0","stream-to-pull-stream":"^1.6.2"},"devDependencies":{"pull-bitflipper":"~0.1.0","pull-hang":"0.0.0","pull-randomly-split":"~1.0.4","stream-to-pull-stream":"~1.6.1","tape":"~4.0.0"},"scripts":{"prepublish":"npm ls &&  npm test","test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"95ca62074eff767c5012b17507bada2ceef45a70","bugs":{"url":"https://github.com/dominictarr/secret-handshake/issues"},"_id":"secret-handshake@0.5.0","_shasum":"8ce49cd3235a2e1d9ad640d2e022b0b3b8a29995","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"dist":{"shasum":"8ce49cd3235a2e1d9ad640d2e022b0b3b8a29995","tarball":"https://registry.npmjs.org/secret-handshake/-/secret-handshake-0.5.0.tgz","integrity":"sha512-rI8cy6cnyMRT5Z38TFIALkxfFr7nM+8JRvhG56CvP55lcBbdofZ6RsRrcA/sF8h6ngdXa98xVIxanZ84I3GwHQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFBW8KFykMij1M7UzFE3nH+bfjYbXxez6tyPkmvf31HfAiBT2/dU+K4zfkyEir1afZvo2DrSdZd479vpPrB23r9hAw=="}]},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/secret-handshake-0.5.0.tgz_1467972445563_0.8207395321223885"},"directories":{}},"1.0.0":{"name":"secret-handshake","description":"a simple and highly private secure-channel protocol","version":"1.0.0","homepage":"https://github.com/dominictarr/secret-handshake","repository":{"type":"git","url":"git://github.com/dominictarr/secret-handshake.git"},"dependencies":{"chloride":"^2.0.1","deep-equal":"~1.0.0","pull-box-stream":"^1.0.9","pull-cat":"~1.1.5","pull-defer":"^0.2.2","pull-handshake":"^1.1.1","pull-pair":"^1.1.0","pull-pushable":"^2.0.0","pull-reader":"^1.2.2","pull-stream":"^3.2.0","stream-to-pull-stream":"^1.6.2"},"devDependencies":{"pull-bitflipper":"~0.1.0","pull-hang":"0.0.0","pull-randomly-split":"~1.0.4","stream-to-pull-stream":"~1.6.1","tape":"~4.0.0"},"scripts":{"prepublish":"npm ls &&  npm test","test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"ba121299e81fa16933ee19c08ab02e7323297e6a","bugs":{"url":"https://github.com/dominictarr/secret-handshake/issues"},"_id":"secret-handshake@1.0.0","_shasum":"e9c6bcf6293c00b10dc83b7173e8b1013476b2a7","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"dist":{"shasum":"e9c6bcf6293c00b10dc83b7173e8b1013476b2a7","tarball":"https://registry.npmjs.org/secret-handshake/-/secret-handshake-1.0.0.tgz","integrity":"sha512-qW47p8W0O8vzuZ4WJGMqWxqgpn7FObX1+mjb/im4/lnhcjFTN33D6g7Fv0aRBni0DnhZPD9qT+OKC+MVLurb/Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCnVEjt0SCyI6YTfzNKGjfWIl3b+XuUOIl85+krxBeC8QIgb8T1KnYr+pqq0tKdsnMALWKYUvG6iDMN7d/AFAyqGNQ="}]},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/secret-handshake-1.0.0.tgz_1468039665249_0.8011872309725732"},"directories":{}},"1.1.1":{"name":"secret-handshake","description":"a simple and highly private secure-channel protocol","version":"1.1.1","homepage":"https://github.com/dominictarr/secret-handshake","repository":{"type":"git","url":"git://github.com/dominictarr/secret-handshake.git"},"dependencies":{"chloride":"^2.0.1","deep-equal":"~1.0.0","pull-box-stream":"^1.0.9","pull-handshake":"^1.1.1","pull-stream":"^3.4.5"},"devDependencies":{"pull-defer":"^0.2.2","pull-bitflipper":"~0.1.0","pull-hang":"0.0.0","stream-to-pull-stream":"~1.6.1","tape":"~4.0.0"},"scripts":{"prepublish":"npm ls &&  npm test","test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"5e3a3f4c93ea0bf94c6c6f633d7d2444bf44fccd","bugs":{"url":"https://github.com/dominictarr/secret-handshake/issues"},"_id":"secret-handshake@1.1.1","_shasum":"5036a826cdd99ce7fedacae4b92ebc8913e8fedb","_from":".","_npmVersion":"3.9.3","_nodeVersion":"6.4.0","_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"dist":{"shasum":"5036a826cdd99ce7fedacae4b92ebc8913e8fedb","tarball":"https://registry.npmjs.org/secret-handshake/-/secret-handshake-1.1.1.tgz","integrity":"sha512-24n9/+iIVJ7VfdoY2qO1AfKg/CFEi1tPXV3+hUJLrbT9esH/W7mwvnMmD4Nbou7vOC6c+qIMOuxRlFCiVoa/eQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF5Z3nFCWyfTZWqRjrAf+jay4TOi8dtrkT7wZ49TWpuWAiEA0T+Chr39kDUwlHo9bZrIFTDQGm3p26NGov7OuSQMpzQ="}]},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/secret-handshake-1.1.1.tgz_1475399648449_0.5570787640754133"},"directories":{}},"1.1.2":{"name":"secret-handshake","description":"a simple and highly private secure-channel protocol","version":"1.1.2","homepage":"https://github.com/dominictarr/secret-handshake","repository":{"type":"git","url":"git://github.com/dominictarr/secret-handshake.git"},"dependencies":{"chloride":"^2.0.1","deep-equal":"~1.0.0","pull-box-stream":"^1.0.9","pull-handshake":"^1.1.1","pull-stream":"^3.4.5"},"devDependencies":{"pull-defer":"^0.2.2","pull-bitflipper":"~0.1.0","pull-hang":"0.0.0","stream-to-pull-stream":"~1.6.1","tape":"~4.0.0"},"scripts":{"prepublish":"npm ls &&  npm test","test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"2aa9ab46c6b4d4f4e95fd8aaddb674a26190accb","bugs":{"url":"https://github.com/dominictarr/secret-handshake/issues"},"_id":"secret-handshake@1.1.2","_shasum":"0164af392e028553c8a82310b4036704a757f093","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.9.4","_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"dist":{"shasum":"0164af392e028553c8a82310b4036704a757f093","tarball":"https://registry.npmjs.org/secret-handshake/-/secret-handshake-1.1.2.tgz","integrity":"sha512-Nv42bwpt+cnqsTiM8JRur/2ydi3Y6yFTmRH+luLBjrKUaA0fShfG7M+4pZSEm7ZUUaJZOir2pbyptdxPtspk+Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBuWPyql42d71YH1+Sz3e9n64eGubhsOlytRZq2owl43AiEA7StPR5s6BoKf8n3S/lg/FyduZOWPeQZWSwASoQ3iqfE="}]},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/secret-handshake-1.1.2.tgz_1489910835194_0.47816868172958493"},"directories":{}},"1.1.4":{"name":"secret-handshake","description":"a simple and highly private secure-channel protocol","version":"1.1.4","homepage":"https://github.com/dominictarr/secret-handshake","repository":{"type":"git","url":"git://github.com/dominictarr/secret-handshake.git"},"dependencies":{"chloride":"^2.0.1","deep-equal":"~1.0.0","pull-box-stream":"^1.0.9","pull-handshake":"^1.1.1","pull-stream":"^3.4.5"},"devDependencies":{"pull-bitflipper":"~0.1.0","pull-defer":"^0.2.2","pull-hang":"0.0.0","stream-to-pull-stream":"~1.6.1","tape":"~4.0.0","test-secret-handshake":"^1.0.0"},"scripts":{"prepublish":"npm ls &&  npm test","test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"5e35336126d0cd5b68cfca6ab13692f6944cc12d","bugs":{"url":"https://github.com/dominictarr/secret-handshake/issues"},"_id":"secret-handshake@1.1.4","_shasum":"49395f5a0a5fe671d4a0c385d2d5872ee21f92d1","_from":".","_npmVersion":"4.0.5","_nodeVersion":"7.4.0","_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"dist":{"shasum":"49395f5a0a5fe671d4a0c385d2d5872ee21f92d1","tarball":"https://registry.npmjs.org/secret-handshake/-/secret-handshake-1.1.4.tgz","integrity":"sha512-37rr4rec5d0lJ//z6wa/35sw8s5UqzjK09PeZbc7JpSKoKfhZvjABP1AADmxDUhRyoAof1qjfnLG6cilYvNX7Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIErvXMTgleYVCgocV52z+RMmb1KVsfPEeq7R7oonx87LAiEA4J79F/Ix+ZxlGN+PMr6aPhF9RbiXa+bwZLPUOkOfKu8="}]},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/secret-handshake-1.1.4.tgz_1490649872262_0.6642206781543791"},"directories":{}},"1.1.5":{"name":"secret-handshake","description":"a simple and highly private secure-channel protocol","version":"1.1.5","homepage":"https://github.com/dominictarr/secret-handshake","repository":{"type":"git","url":"git://github.com/dominictarr/secret-handshake.git"},"dependencies":{"chloride":"^2.0.1","deep-equal":"~1.0.0","pull-box-stream":"^1.0.9","pull-handshake":"^1.1.1","pull-stream":"^3.4.5"},"devDependencies":{"pull-bitflipper":"~0.1.0","pull-defer":"^0.2.2","pull-hang":"0.0.0","stream-to-pull-stream":"~1.6.1","tape":"~4.0.0","test-secret-handshake":"^1.0.0"},"scripts":{"prepublish":"npm ls &&  npm test","test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"a04c2414e281d40c6f35e3be9eafc584d2c8bc55","bugs":{"url":"https://github.com/dominictarr/secret-handshake/issues"},"_id":"secret-handshake@1.1.5","_shasum":"2a849535d4381da36c9443ab0e91de82ce979eed","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.8.0","_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"dist":{"shasum":"2a849535d4381da36c9443ab0e91de82ce979eed","tarball":"https://registry.npmjs.org/secret-handshake/-/secret-handshake-1.1.5.tgz","integrity":"sha512-O2Ya6A3H5FHHMdKk3a0dUdAJoqQ9s0EbNi+TT/q7tfXxfUaPXHAv92WOyjkajDawXvBM+8X/94B+wJNtCXv/FQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEiTbBZ0r+68s9ZRU2NKJlqhmwqM86a1tOeB71LRSyI1AiBw+0CBL9Q/ZBjMEy2BzmmcECnUooylMQcnXUQOGVVfog=="}]},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/secret-handshake-1.1.5.tgz_1491787741955_0.04550643474794924"},"directories":{}},"1.1.6":{"name":"secret-handshake","description":"a simple and highly private secure-channel protocol","version":"1.1.6","homepage":"https://github.com/dominictarr/secret-handshake","repository":{"type":"git","url":"git://github.com/dominictarr/secret-handshake.git"},"dependencies":{"chloride":"^2.0.1","deep-equal":"~1.0.0","pull-box-stream":"^1.0.9","pull-handshake":"^1.1.1","pull-stream":"^3.4.5"},"devDependencies":{"pull-bitflipper":"~0.1.0","pull-defer":"^0.2.2","pull-hang":"0.0.0","stream-to-pull-stream":"~1.6.1","tape":"~4.0.0","test-secret-handshake":"^1.0.0"},"scripts":{"prepublish":"npm ls &&  npm test","test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"d102d5c9c079bc4ccdec96dafb9996c6141e647b","bugs":{"url":"https://github.com/dominictarr/secret-handshake/issues"},"_id":"secret-handshake@1.1.6","_shasum":"cada7df7b4b460bf06046efbe0e7df6ba0e00968","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.8.0","_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"dist":{"shasum":"cada7df7b4b460bf06046efbe0e7df6ba0e00968","tarball":"https://registry.npmjs.org/secret-handshake/-/secret-handshake-1.1.6.tgz","integrity":"sha512-GWkq8twre/BztHNwCjoGFbrTveS884AickafjMaCRLrc3jWGn401T3ykRsBnEoMAoVGEXNF72WtNQjHJxeRV3w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC3+xfolOXTekvrE1mvbTz0kuVnX+QBCX5UurPJ6FarXwIgd6EkswfRWJPw/y1R6BTBgKzJIA9EE5zA5UhEzRxkk9Q="}]},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/secret-handshake-1.1.6.tgz_1492394564964_0.53165438096039"},"directories":{}},"1.1.7":{"name":"secret-handshake","description":"a simple and highly private secure-channel protocol","version":"1.1.7","homepage":"https://github.com/dominictarr/secret-handshake","repository":{"type":"git","url":"git://github.com/dominictarr/secret-handshake.git"},"dependencies":{"chloride":"^2.0.1","deep-equal":"~1.0.0","pull-box-stream":"^1.0.9","pull-handshake":"^1.1.1","pull-stream":"^3.4.5"},"devDependencies":{"pull-bitflipper":"~0.1.0","pull-defer":"^0.2.2","pull-hang":"0.0.0","stream-to-pull-stream":"~1.6.1","tape":"~4.0.0","test-secret-handshake":"^1.0.0"},"scripts":{"prepublish":"npm ls &&  npm test","test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"afd8d1a614e6044fa39b8ac67b1866eddb4466ec","bugs":{"url":"https://github.com/dominictarr/secret-handshake/issues"},"_id":"secret-handshake@1.1.7","_shasum":"4a94f94c2940bbea3140dc7416ab203c2f1b3890","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.8.0","_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"dist":{"shasum":"4a94f94c2940bbea3140dc7416ab203c2f1b3890","tarball":"https://registry.npmjs.org/secret-handshake/-/secret-handshake-1.1.7.tgz","integrity":"sha512-Kzf74DgSupGcmzF+IKd2qI22MZ/N3+LgfIFsDZh6GvWLXFPBWrnhNWHSec9c8I5BDHKokCxIHec3w9Z19pFl3g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEnUHqfZTH0AzxmdfYfjHKCii6Ld+aDtNMrfkUm2Ln5gAiEA/9+3UgXCibPHsFPnswNHLAtOFVwiesI/uReFKxu+Q3g="}]},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/secret-handshake-1.1.7.tgz_1492415082882_0.42145858448930085"},"directories":{}},"1.1.11":{"name":"secret-handshake","description":"a simple and highly private secure-channel protocol","version":"1.1.11","homepage":"https://github.com/dominictarr/secret-handshake","repository":{"type":"git","url":"git://github.com/dominictarr/secret-handshake.git"},"dependencies":{"chloride":"^2.2.7","deep-equal":"~1.0.0","pull-box-stream":"^1.0.13","pull-handshake":"^1.1.1","pull-stream":"^3.4.5"},"devDependencies":{"pull-bitflipper":"~0.1.0","pull-defer":"^0.2.2","pull-hang":"0.0.0","stream-to-pull-stream":"~1.6.1","tape":"~4.0.0","test-secret-handshake":"^1.0.0"},"scripts":{"prepublish":"npm ls &&  npm test","test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"a1796f0956baf0ea931346e36450a1597322f743","bugs":{"url":"https://github.com/dominictarr/secret-handshake/issues"},"_id":"secret-handshake@1.1.11","_shasum":"239d613678f1e5c50f223f2605f36475cefd665e","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.8.0","_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"dist":{"shasum":"239d613678f1e5c50f223f2605f36475cefd665e","tarball":"https://registry.npmjs.org/secret-handshake/-/secret-handshake-1.1.11.tgz","integrity":"sha512-z0tmFTMSQe0z+PrEKsJQEqzyODs+WdF71TcqKvtnmUmwDUWclhELURmALJm29agdpo3P/quj0eCj84AUvnQOCw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHbEVoR3WMnajQMNFkZJUA7wScEIhLZQhOPJ3/xiIldcAiBWO9l/SrK3ZLt5n//kqulm+wOy9mvBULLh+aooeLckTg=="}]},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/secret-handshake-1.1.11.tgz_1495954941838_0.2457461729645729"},"directories":{}},"1.1.12":{"name":"secret-handshake","description":"a simple and highly private secure-channel protocol","version":"1.1.12","homepage":"https://github.com/dominictarr/secret-handshake","repository":{"type":"git","url":"git://github.com/dominictarr/secret-handshake.git"},"dependencies":{"chloride":"^2.2.7","deep-equal":"~1.0.0","pull-box-stream":"^1.0.13","pull-handshake":"^1.1.1","pull-stream":"^3.4.5"},"devDependencies":{"pull-bitflipper":"~0.1.0","pull-defer":"^0.2.2","pull-hang":"0.0.0","stream-to-pull-stream":"~1.6.1","tape":"~4.0.0","test-secret-handshake":"^1.0.0"},"scripts":{"prepublish":"npm ls &&  npm test","test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"854c6bf7c17d3c94e2761a3044fcdc3c65e2397f","bugs":{"url":"https://github.com/dominictarr/secret-handshake/issues"},"_id":"secret-handshake@1.1.12","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"dist":{"integrity":"sha512-5K2rx7QLBOz/JFAWGevU0JsoeC/0PZufSFJPqxQefZSdhMmB2aO16CJ9rwfnAzwMZMGrM+F2/ljXTP9wHp4GlA==","shasum":"933265deb0b298ddb22690f7354bfb88ebe8158c","tarball":"https://registry.npmjs.org/secret-handshake/-/secret-handshake-1.1.12.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCrwkh+AkoKW4nqv4xbWrOaBpFmdZ8DSO8tnZlp1jcbFgIhAKPjIi8Vl3VywPpKbYtw7yBLZamLmvq//+eQpByyXgJL"}]},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/secret-handshake-1.1.12.tgz_1512322821474_0.2738225772045553"},"directories":{}},"1.1.13":{"name":"secret-handshake","description":"a simple and highly private secure-channel protocol","version":"1.1.13","homepage":"https://github.com/dominictarr/secret-handshake","repository":{"type":"git","url":"git://github.com/dominictarr/secret-handshake.git"},"dependencies":{"chloride":"^2.2.7","deep-equal":"~1.0.0","pull-box-stream":"^1.0.13","pull-handshake":"^1.1.1","pull-stream":"^3.4.5"},"devDependencies":{"pull-bitflipper":"~0.1.0","pull-defer":"^0.2.2","pull-hang":"0.0.0","stream-to-pull-stream":"~1.6.1","tape":"~4.0.0","test-secret-handshake":"^1.0.0"},"scripts":{"prepublish":"npm ls &&  npm test","test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"86b5378749237d0d92a35986e8297643cbe861ae","bugs":{"url":"https://github.com/dominictarr/secret-handshake/issues"},"_id":"secret-handshake@1.1.13","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"dist":{"integrity":"sha512-jDpA1kPJGg+jEUOZGvqksQFGPWIx0aA96HpjU+AqIBKIKzmvZeOq0Lfl/XqVC5jviWTVZZM2B8+NqYR38Blz8A==","shasum":"69742834bb0af1447b05f2ebc5360cf62b7a5612","tarball":"https://registry.npmjs.org/secret-handshake/-/secret-handshake-1.1.13.tgz","fileCount":13,"unpackedSize":32679,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCHvgftfPsobNh0CGhUMJoWC1km+8G5A73MwsxF/IGkiAIhANmFBkJMuyDdEZN8miV7NBktKcm7Dy8PuQtEGTEPY8Yg"}]},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/secret-handshake_1.1.13_1523320241231_0.8508908711450194"},"_hasShrinkwrap":false},"1.1.14":{"name":"secret-handshake","description":"a simple and highly private secure-channel protocol","version":"1.1.14","homepage":"https://github.com/dominictarr/secret-handshake","repository":{"type":"git","url":"git://github.com/dominictarr/secret-handshake.git"},"dependencies":{"chloride":"^2.2.7","deep-equal":"~1.0.0","pull-box-stream":"^1.0.13","pull-handshake":"^1.1.1","pull-stream":"^3.4.5"},"devDependencies":{"pull-bitflipper":"~0.1.0","pull-defer":"^0.2.2","pull-hang":"0.0.0","stream-to-pull-stream":"~1.6.1","tape":"~4.0.0","test-secret-handshake":"^1.0.0"},"scripts":{"prepublish":"npm ls &&  npm test","test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"ad0d7d5fe077564bfb9f7dc6fa36079013019a3b","bugs":{"url":"https://github.com/dominictarr/secret-handshake/issues"},"_id":"secret-handshake@1.1.14","_npmVersion":"5.6.0","_nodeVersion":"8.11.4","_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"dist":{"integrity":"sha512-e4hiMTahaLiN5XKap1YrifoyT8yRu9yQEZrMTglTBgq8Lv8iChFKLpbmXYeNxy2rCnutuWaQDFbp3sBgl4NQ4g==","shasum":"3dc192b254e37e461d3d99e4d1c219ff6545b597","tarball":"https://registry.npmjs.org/secret-handshake/-/secret-handshake-1.1.14.tgz","fileCount":13,"unpackedSize":33275,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbrDW3CRA9TVsSAnZWagAAoREQAJD2yso12Bd0j/q2jtaf\nNj/+vJetRuudSSiK7adrISVl+392Po5aKNpxUbHGKlAoQxF7YV2aN5IsCyEh\nrJf5xKXsYhavzxftAapcYuu/cKpRt9bSDxsP6KvOW4eaB0o5P0KwTqPgbKNC\nAx+eTBuvC4VmzFHJwrahexEGQaq/jsjyNrj/OcfnUcmISnrhdAQ0Fscn2ePx\nqR89WdnT+PR2NPOsXcfK7C1PHfssMlyEiuQ38MAD289p8ExpkrfOcmTHKJLY\nws6wD83bZCnd1IfllKYlwL1XNIjDDI5VjSykG2ZBeT27buXm9mtjv9zA4SR4\ndj47QYqh1QZoUp6WvuXTHwkdvQhu1Y3Z0Cm1VAlqSnbOIsqWWDAawnTkXUYr\nPUeoMvyv4p17+a5MJlmLNpw1tYxIvbmqc4khTZel/uyLQjyMnMMOgyWLwB1N\nl70dtSNtz27N//XLExqPfNRC6YY03+1merN5fJrGFR/o6t9qfRc5I6br0Sxn\n0LwpQ623BuGT4RpA4M3h2YyLOlHGGIjV20xx3rKXXolyj1oWjRfavHZGjLml\nL6JQzTu8/TPSzpkBmis7bRGBdn70Wb1ope0tqNTkpoPD+WfbuwhT82Bo1//h\nnYg4qg4dlZ7vPeCAh0mXmmOOL9BPR5LIb9B22PruL+JMXOxe1JcRZKykW+Dv\niZb8\r\n=WWGp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCbW7NhutTp3nh7MnQ9C7WGJqlgLDcXUJ7u8ek0GS6YWAIhALJXkBOIdbs0YHqchQnrpNz+tHrK0G7k0Z/UOJdMTgBo"}]},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/secret-handshake_1.1.14_1538012598471_0.6682997840192015"},"_hasShrinkwrap":false},"1.1.15":{"name":"secret-handshake","description":"a simple and highly private secure-channel protocol","version":"1.1.15","homepage":"https://github.com/dominictarr/secret-handshake","repository":{"type":"git","url":"git://github.com/dominictarr/secret-handshake.git"},"dependencies":{"chloride":"^2.2.7","deep-equal":"~1.0.0","explain-error":"^1.0.4","pull-box-stream":"^1.0.13","pull-handshake":"^1.1.1","pull-stream":"^3.4.5"},"devDependencies":{"pull-bitflipper":"~0.1.0","pull-defer":"^0.2.2","pull-hang":"0.0.0","stream-to-pull-stream":"~1.6.1","tape":"~4.0.0","test-secret-handshake":"^1.0.0"},"scripts":{"prepublish":"npm ls &&  npm test","test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"4f0d2d9ec55602f1b8d21cab893ae91c2f3ac449","bugs":{"url":"https://github.com/dominictarr/secret-handshake/issues"},"_id":"secret-handshake@1.1.15","_npmVersion":"6.4.1","_nodeVersion":"8.11.4","_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"dist":{"integrity":"sha512-rLa71+caSqO7Ll58F7E8g001FjmIXl6AuL1jdm1kwX0tkDFRsLbwOcU/d/qb9u96AoPrUJUXpJBOCa4ovcmS9Q==","shasum":"cedc61822b0606950a65ec9a4b40e2f4c32ce84f","tarball":"https://registry.npmjs.org/secret-handshake/-/secret-handshake-1.1.15.tgz","fileCount":14,"unpackedSize":35141,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcOGYNCRA9TVsSAnZWagAAJpsP/AkIZ7XdRHQFK/HoV5Bn\n/5XXl99ORZpQXW6NJCvpiTz482s5c6y/OHPqrCI94sVevnRqcnK5gZyp7XGC\n8fLFcnad6Vsz4lCyjCQ65ZqB/+3dpimQ1DLAjGB18lGXsf/yKNsLqd0Kho9G\nYulRD5Xo2DLqW52ue2QD3ZPbqmsCe+3qYN2BF6wlcPpueac21RUj4R5WJXsr\njnBeTTIR3bTbAw4oDWkAu6l/lD/2gNIhqo745ePG+Y1F/1I399z+9W3YsvTu\nzIocrqZ7BvETJ/l/dUtrZ2oFPAR02kvXVqPbt6+djJb2YWeT/3MQ16rb7PvX\nUcxzwYvvL9SsmErA0sGmnuKQnjs//FTM0id63me4x7bOLRABrRKpnE32yUuy\nwQ38G0XjqMEDeD1VuoQ55MDj+C7jxQdDXRb9xd4L3pjP969ARMX3+1SYmP2O\nx1Z4fIc5AuWPMwosbkt1f/+QZf8dF3GDAWx6RAvNCNzEULPPCZogHdeTMOvh\nLpgmSaofgZROqpv+AV6XmjIWiU/Omh6erx6PF/ltRT7zHlKYvBSlaJxqBLdu\nZIo+dOVFTlNMa5pAkvGxI4GZVMWwVOevfzgKJLi46j5y2kvG1Vaj0bAMGRd9\nY/bMDuUYNjU2cqXNLYT15BBmYk0uPC35oPw/qt7PqHhJJknt1WtP+1PtG9rh\nS5rz\r\n=iPho\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCJrJzU5IOl9buSn8+JbrfrG2OKzmLh6LePRG6O8cEecwIhAN2/Egdl0aEfdvaX26657/PlH0qXBWRBuOxcOFsFp+NO"}]},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/secret-handshake_1.1.15_1547200013059_0.5808114258013317"},"_hasShrinkwrap":false},"1.1.16":{"name":"secret-handshake","description":"a simple and highly private secure-channel protocol","version":"1.1.16","homepage":"https://github.com/dominictarr/secret-handshake","repository":{"type":"git","url":"git://github.com/dominictarr/secret-handshake.git"},"dependencies":{"chloride":"^2.2.7","deep-equal":"~1.0.0","explain-error":"^1.0.4","pull-box-stream":"^1.0.13","pull-handshake":"^1.1.1","pull-stream":"^3.4.5"},"devDependencies":{"pull-bitflipper":"~0.1.0","pull-defer":"^0.2.2","pull-hang":"0.0.0","stream-to-pull-stream":"~1.6.1","tape":"~4.0.0","test-secret-handshake":"^1.0.0"},"scripts":{"prepublish":"npm ls &&  npm test","test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"115e980c1689419e1583cd1149a61547dea55e95","bugs":{"url":"https://github.com/dominictarr/secret-handshake/issues"},"_id":"secret-handshake@1.1.16","_npmVersion":"6.4.1","_nodeVersion":"8.11.4","_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"dist":{"integrity":"sha512-iJgGEykTXa8772vmYMGM20jYifTV7lg96bFeitGjly99aIEkIKHkiJWb+3KZ98dg4gwtF/6L+XhL/76iBgKhpA==","shasum":"ceff49db99b16e9978430b6857315103c9760561","tarball":"https://registry.npmjs.org/secret-handshake/-/secret-handshake-1.1.16.tgz","fileCount":14,"unpackedSize":35171,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcPDSeCRA9TVsSAnZWagAAglwP/3c+HX3jooUEAdQpFTWn\nrEXYvmEf9c6DGmrapCxrvt0BJ/cr8UCol/yqhlBicNoJtkSiABuxxz6HdZOp\nnq+RYXn3JSPyPPPIIQ5NRZUiLxBqRiY1+feheLQ/snIZnVeqrOJr80790XGB\n5irlhEUNn9ly73tg2WxGtLMpNUZ10Mf5a9pwi43T5UzQuVdGzQ3IlkxurqG9\n/u22NKXLvpA+7Fe22VMNG4sIc+pqq+Hv1J6eLKk0VYlQncrlWu9hfuhaYF+y\nOdrQotiSlipup+BZhsojhcxPAUlfw40DtuCLDFcdF2VCiSYSGOOjfddoD5gS\n+yiySQXxKMsJXuI2gJBGfADCueFSMPmkiHFU/PZHtNtHFUhIpYspCyJkNYjB\nIe123BdOEyUEfi/1oKtOO1Yn4F6SrToS2ywM9VwGnXK3T8FY1Zl/uybj2vuW\n/jrWeoDPTrUfg5GmOGLKMV2OD80v+f1t2hZYGWbDmnePiWm5Nb+LyZXhNFye\nPZj9LuLpV0BqU7TfSCoiFDmsfRlMKAXKhg5S1gtz2YFjSfyyi6pIXRuj0XpG\nGZyWy1fZZgB8RgjHMnkafd+sKtIUsKM0bkU/9p24v+bZBWR5VggmOpi2woJ6\nIgyPnYLKwwcvX+xIhkXmU56W5nhb5BNipenDg526F6FsIds3psj+mqhmqPKQ\ndJCF\r\n=07z0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEcRA37B4xzto+Cfg/otEkMXh3ZR4mbwyQMq7cGncYNeAiEAn2/VIgG7jgpu1+IpI/ZKPMJr0QFEEjXKsZ9ymJ7O1mw="}]},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/secret-handshake_1.1.16_1547449501349_0.09525309856133157"},"_hasShrinkwrap":false},"1.1.17":{"name":"secret-handshake","description":"a simple and highly private secure-channel protocol","version":"1.1.17","homepage":"https://github.com/dominictarr/secret-handshake","repository":{"type":"git","url":"git://github.com/dominictarr/secret-handshake.git"},"dependencies":{"chloride":"^2.2.8","deep-equal":"~1.0.0","explain-error":"^1.0.4","pull-box-stream":"^1.0.13","pull-handshake":"^1.1.1","pull-stream":"^3.4.5","sodium-native":"^1.10.3"},"devDependencies":{"pull-bitflipper":"~0.1.0","pull-defer":"^0.2.2","pull-hang":"0.0.0","stream-to-pull-stream":"~1.6.1","tape":"~4.0.0","test-secret-handshake":"^1.0.0"},"scripts":{"prepublishOnly":"npm ls &&  npm test","test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"fd49faad9e26a3f94ad90b788534149e8914893c","bugs":{"url":"https://github.com/dominictarr/secret-handshake/issues"},"_id":"secret-handshake@1.1.17","_nodeVersion":"8.15.0","_npmVersion":"6.8.0","dist":{"integrity":"sha512-XhLfa+K6fAc1Og//IuPT6TIVCnf0Rm6ucILkYinZfgPtyaz4/BJt47VDW5EAXxLT8JlGN1kE5gJhUkB4ZQ0ZAw==","shasum":"c54dd87dfcbfa670f0597339fca3d7d77ede4905","tarball":"https://registry.npmjs.org/secret-handshake/-/secret-handshake-1.1.17.tgz","fileCount":15,"unpackedSize":37066,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcyqcwCRA9TVsSAnZWagAAyREP/izfs35gADQVIr9WbAG1\n+QFbNlQ4NWl+gebCbCnsbxO90pwBj4Sxi71o6FKQNiT/D+vMEdaprPTR2isC\n7pkinmOMk5tciSjVA2OsoAOZBANoNpgXvPJTRSCc533PHjA2EPLzgs8XkL1N\n7qobOMcylDyq8yACmgQFlAJ5HVI7reqBEc6q76YtyO3ZZm7VfXV8ni4gJe/E\nviDpWX+E6/GZqEbF/qQsjnuwtI9xXHOlV7IYAo7Pja/rmX/99gITuvUg2OFl\nwkFey8JFR/6w1p46XAKR1UPDYPOCxV7Mk+B1iY0SH/bbmXXPxUWPgRpVe0p5\nIfmhhY9Ouz9sHevjLzRbRffFOci6pxAsq8sRTEIYrJXw/CBG4rSUUMsM0/WG\nUiA2iWXwsQwIHi17DlTruYgFZ3vFZ30jt/hj6+KxuvU4/4UbL6GMpD4/LVBn\nAVmWh7qUga2xyQYQFophIkdXf4U69dv+ueVrm9xxs1YLBR/rBsjgjG0e92Wj\nmQVoogYhez9xp1Wl2hRL2Zt6BWPekH1RkUsEjQS2MaDLgQcamaGsD2X1bo/g\ncfNIJv3yEj6cegbbr4CJxHMtTEVNsSL4tw9THpLL26FWP3gySz4FVybEIxY2\nM2MKmGJlxe1KH66shogzswSay3U/CGFAMCcm0j+932/nJgiyYTQbvK2OJ45k\npsKq\r\n=R+P7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFxY5P91PXM7pmSD3R1M3AW1mtrZiWRE9lPVH2ZZF99VAiEAh/oQnaw3Q3w7hKZPAAnmT3WteyZMp+orAnS1HN4Twuc="}]},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/secret-handshake_1.1.17_1556784943658_0.5685974102559304"},"_hasShrinkwrap":false},"1.1.18":{"name":"secret-handshake","description":"a simple and highly private secure-channel protocol","version":"1.1.18","homepage":"https://github.com/dominictarr/secret-handshake","repository":{"type":"git","url":"git://github.com/dominictarr/secret-handshake.git"},"dependencies":{"chloride":"^2.2.8","explain-error":"^1.0.4","pull-box-stream":"^1.0.13","pull-handshake":"^1.1.1","pull-stream":"^3.4.5"},"devDependencies":{"pull-bitflipper":"~0.1.0","pull-defer":"^0.2.2","pull-hang":"0.0.0","stream-to-pull-stream":"^1.7.3","tape":"^4.10.1","test-secret-handshake":"^1.0.0"},"scripts":{"prepublishOnly":"npm ls &&  npm test","test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"94a3196f82bc71615c9641279e5b9d6e867ad2fc","bugs":{"url":"https://github.com/dominictarr/secret-handshake/issues"},"_id":"secret-handshake@1.1.18","_npmVersion":"6.4.1","_nodeVersion":"10.15.1","_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"dist":{"integrity":"sha512-uP8s0ALmbJtjLEShGnJ5HHJSM1+TT8hbUme2/H2grw+WbiofSG6kr6AK1HHOmSublCVNFwfggjnWZXnEPTvIwQ==","shasum":"0608b9c1f49351332552caa7581cb631aa72a3f4","tarball":"https://registry.npmjs.org/secret-handshake/-/secret-handshake-1.1.18.tgz","fileCount":16,"unpackedSize":57076,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc1JwqCRA9TVsSAnZWagAAzs4QAJsgeBAwefK3QW8v2ldd\nxSR635H1dpVx79xGP3Vkkjb/V+/Q76fYYRWwxhN4p1wAVIi1wrq8SnyEjfia\nPvqS5VGyWAYy4vWl/TzNBVqJzuXEKybKZ6Ni81T0dcfJEZwt0h3k9LXzc5Oe\nI4uaasYFmc0jkjSyS/TsL5BNYy8iBNCfKdhANjgYGrcRXhiPBjqG6tjgYJ6t\nYyi2fkQ+WdnjPgW+VRd9eBAmM0HldRfLdUE370sLpPNSYGP0G6YKXPrxwv/q\nyk9anGsUMB0iQEiK76vDl2m1Sgf5KDr3z6ROIi2LdjwgqliXF3eEbGFiYQr6\nM0Qtp5SmqTv3SvGepCzb4l6rMtm6/KTj+OzlILaVAg5leJwZx7Ogxt+zXiLd\n0umhCNtYrRNaDVdKdFoG9QzFfdRiUo3+kQ7TjL4gi2oZfwdd9Se9UbdrWJDN\n68RPBBRcmoOoX1YGgYWacrNrAwSqnSmY3mZBJFLvREk6KtkH75yLn7FyTA/f\n06H/Iq5Zul+8OghxvOM37gXBfK2BNookf1Iqfa2E47WL+sn00x1W/Pa1MeHJ\nyMWev16j+dQn369lg+EwL9/xDg9DEmn4it88MKf/XOB8FnlmSBcMLyEGz/ka\no0dXOZT00Y6VQKhN1s5D0oDd+x/rfpnoBcrRUcSbHoyfAQCeixAgUlGt3IOx\nRdNY\r\n=byme\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBZCQAGUtd3PeN95CXZXJsp32Wy9l3WliolRMCQohgDlAiEAqnIJNw/3rinL+sGlIVcdSxXu5qGl7GuBaC/7D3H3eLg="}]},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/secret-handshake_1.1.18_1557437481236_0.31906168849438"},"_hasShrinkwrap":false},"1.1.19":{"name":"secret-handshake","description":"a simple and highly private secure-channel protocol","version":"1.1.19","homepage":"https://github.com/dominictarr/secret-handshake","repository":{"type":"git","url":"git://github.com/dominictarr/secret-handshake.git"},"dependencies":{"chloride":"^2.2.8","explain-error":"^1.0.4","pull-box-stream":"^1.0.13","pull-handshake":"^1.1.1","pull-stream":"^3.4.5"},"devDependencies":{"pull-bitflipper":"~0.1.0","pull-defer":"^0.2.2","pull-hang":"0.0.0","stream-to-pull-stream":"^1.7.3","tape":"^4.10.1","test-secret-handshake":"^1.0.0"},"scripts":{"prepublishOnly":"npm ls &&  npm test","test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"b7e76efa52cf756d14b44c715d9c21370ca3491c","bugs":{"url":"https://github.com/dominictarr/secret-handshake/issues"},"_id":"secret-handshake@1.1.19","_nodeVersion":"8.15.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-qNaeJYYdBQoI1ni4KLPP8815rz9vvaEHkylwsL2xF5877VQdtIMZ5/RpQQ6m61Ifcj3dY/CmfmPVBLSUv5W13g==","shasum":"d178d9899ca9ea7812113bdc6cd1810a7202be34","tarball":"https://registry.npmjs.org/secret-handshake/-/secret-handshake-1.1.19.tgz","fileCount":15,"unpackedSize":37022,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdAA1sCRA9TVsSAnZWagAAT0wQAJ0h99xntJji6Punwi6w\ngDfPmSL9vpHvWKqtq1KEsCCZXDofDBZRLDQ5WQoIo/51zMnI2bFVZ2kRzcxn\nhk+MJm99gweYbHWHndUHiOUPL5g8B/rKCH+E4dSCn0jWxWj7nWm8a3LBgIZP\nX1cZzMbRHVK8g8M6l+AN33ATx/CJxZDpvKFUQRZS52ZBPnw6JCZhfNOVtD1O\nfGjHhQKZknSXnnMZF4QkveI1ApPOTdfdThtGozxsS0TaZnd9A1otL9Csi3qe\nuiXtt9FA9efxk1OMwj1pUvAEVa3encuR9qdjcMJyQP5d9XR1staXx1U82llp\nAWT7ERYTbB34xOG3Nz10Jjnm/Y5LHmB7kZ7X1yugTfcbi7mbU1Us96L4ixtL\nvyliCTYZeOU1wO3UoKmiWgWCbyfGDZAp6EtkuOt6YU6jn7TkZKXdkfV5Ybb1\nzE7hXFn0V6vdESZBek74tFaxhEeInUJzHxHyj0HzvZPhhrom8a+UpD+BAZon\nIC6GYoi+ob5EG6d+JUas0C1tHXosp5CfNMDhRmBPs/CMbgPdnyUruCu8nYb5\nr8NLIzzLfkZ1X4R8u4alyFtyzBHVL3TZkap5bGpjxrLC24o1oJYHXW9pali1\nZerxnKGeer/YBcpgChXPLQ9UKSMjW7Y6uMWTNXKNKQz0Cpr+mT1rk3W1bfVv\nvr06\r\n=qtWQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAidGx7wuWU30OtOIjQo7nc+nE46omImfetn1GoGJe1BAiEAt3NxzpDB23mMOqBEHgBJzD64HB6vPc8V40WUfjZaZZI="}]},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/secret-handshake_1.1.19_1560284523610_0.1089431767133413"},"_hasShrinkwrap":false},"1.1.20":{"name":"secret-handshake","description":"a simple and highly private secure-channel protocol","version":"1.1.20","homepage":"https://github.com/dominictarr/secret-handshake","repository":{"type":"git","url":"git://github.com/dominictarr/secret-handshake.git"},"scripts":{"prepublishOnly":"npm ls &&  npm test","test":"npm-run-all test:original test:shs1-test","test:original":"set -e; for t in test/*.js; do node $t; done","test:shs1-test":"npm-run-all test:shs1-test:*","test:shs1-test:server":"shs1testserver test/shs1-test/server.js","test:shs1-test:client":"shs1testclient test/shs1-test/client.js"},"dependencies":{"chloride":"^2.2.8","explain-error":"^1.0.4","pull-box-stream":"^1.0.13","pull-handshake":"^1.1.1","pull-stream":"^3.4.5"},"devDependencies":{"npm-run-all":"^4.1.5","pull-bitflipper":"~0.1.0","pull-defer":"^0.2.2","pull-hang":"0.0.0","shs1-test":"^1.1.0","stream-to-pull-stream":"^1.7.3","tape":"^4.10.1","test-secret-handshake":"^1.0.0"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"bb95dc0ddc5f5ecfc845198da5e9f3ac23d7fab3","bugs":{"url":"https://github.com/dominictarr/secret-handshake/issues"},"_id":"secret-handshake@1.1.20","_nodeVersion":"8.15.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-sDtmZDpibGH2ixj3FOmsC3Z/b08eaB2/KAvy2oSp4qvcGdhatBSfb1RdVpwjQl5c3J83WbBo1HSZ7DBtMu43lA==","shasum":"39af0a59f80cd3f99a6e5555daf8907a8732fee6","tarball":"https://registry.npmjs.org/secret-handshake/-/secret-handshake-1.1.20.tgz","fileCount":17,"unpackedSize":41083,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdFG/ACRA9TVsSAnZWagAAOqAP/A5utnrPpOh86NhY3S5w\n6h3r5zgE04KE5o/7Gf81IyHCIvnSMn4GfInSsq+Y7qwiuBpUYbL9WzjHPGup\n45Tbn4Vd/io3CUVmJZ4C/r/0mqNlNd0daktHb7V2gPBmRJ3OgBxHm7zcwcrh\ndJftMbO7ahrOa6vDJym0wUBn9b1uZVheT7gIQg30TlOVZg+5nFXjhcxbi2Xv\nJnVcDp2mmKlbLPSdHi0B/mFPhrSBCreQR+MKcOMgqWmr5fOETiXI+RDOfMie\nHRQNr49Yh4kQL4sPrzFe9kmyhDNjBhCZbPOD+sXTIAgYLIZtnnqYTTBPBUzA\n/Jsrl06O3w3+uLI6FoETpJ/03nYMBO15iKaILjQTa5yYpPIlhd0P8YWxM8fe\nIPXYCObWZcoWKldC+s8QF2JbtJZDbkeGgojZoOBSdyJC2/QxZWvsrhq8+ZYi\nESbcIS76izzaeoujmN7A3MDknyvXxU0SldX+2zFeHNQbcLpt7ws8tCRJcNh+\nyz1oPpQ2Pe83tMVbr1Itc/0e+3kC19D1J5PF3+NoXZAAbHxB417WA6EY9STS\nEKUZlnhshe1gplsPqNNsAcxIeEGCymV0t1XOXj0f5qlorgNluGIQgy93ILCn\nfNj5bVmN+MYYyIliOnvttAOyyBT7MazxmFjWVAUb0xrE65tjEQeb8NFYnQrY\n7m3C\r\n=PJVS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDZpEsn0SGoZqDJRA65TmJ9YG/+dSj4exjhDn+bgEOFcAIhALimdwL2IJmDgNNCP5Fb2w/BkAMEQNxukTIHWpLjMC34"}]},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/secret-handshake_1.1.20_1561620416087_0.9102597999392932"},"_hasShrinkwrap":false},"1.1.21":{"name":"secret-handshake","description":"a simple and highly private secure-channel protocol","version":"1.1.21","homepage":"https://github.com/auditdrivencrypto/secret-handshake","repository":{"type":"git","url":"git://github.com/auditdrivencrypto/secret-handshake.git"},"dependencies":{"chloride":"^2.2.8","clarify-error":"^1.0.0","pull-box-stream":"^1.0.13","pull-handshake":"^1.1.1","pull-stream":"^3.4.5"},"devDependencies":{"npm-run-all":"^4.1.5","pull-bitflipper":"~0.1.0","pull-defer":"^0.2.2","pull-hang":"0.0.0","shs1-test":"^1.1.0","stream-to-pull-stream":"^1.7.3","tape":"^4.10.1","test-secret-handshake":"^1.0.0"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","scripts":{"test":"npm-run-all test:original test:shs1-test","test:original":"set -e; for t in test/*.js; do node $t; done","test:shs1-test":"npm-run-all test:shs1-test:*","test:shs1-test:server":"shs1testserver test/shs1-test/server.js","test:shs1-test:client":"shs1testclient test/shs1-test/client.js"},"_resolved":"","_integrity":"","_from":"file:secret-handshake-1.1.21.tgz","bugs":{"url":"https://github.com/auditdrivencrypto/secret-handshake/issues"},"_id":"secret-handshake@1.1.21","_nodeVersion":"12.19.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-e02+IddZv40tNJmaRZNZ6aYje95h9MvmpmbOg2PVjLKRA5p9QnrQypJlVE2dU516TyYc9jikBjqhXV1IlkwNUw==","shasum":"870c941ad1f610bcfd51181a906951daee8d5c24","tarball":"https://registry.npmjs.org/secret-handshake/-/secret-handshake-1.1.21.tgz","fileCount":8,"unpackedSize":26464,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiH4KIACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmph2g//WQF2ILzvQVqosCqM24LJdY1MLU8PDvmOgBIEKrIQ8ctsjLv0\r\nTLVWrkDwIRvUFuMWMpM5aX0lATIGD8aeEdrDDSFIOtFJ/mbv1HCvmxzBCxu/\r\ne7F0yxZWMYNe/j+xsrJE0KiF/lYnKXnwEvByvLap9FTdV75uXMJVhQwIcSy1\r\nDf2o52m835tfZfxJ1PLydVj8v+5oTNQ/2BbyAUPxHTUEOH+UUGmgldxH3YiI\r\nZu5DpDSCpGUfKCivMkPF2Eu1KhzQnaNITWF7m9zMVeNlx3gKI94AiUj5D2hq\r\nW4zH1CNrzaUys4qgzN8IEZXNiSPt9QIE2kOGK0aAYPjXYGzPA0maGZq3/JHU\r\nbjowtsKF3v7khWaEvortCMTF9TPkzi+kOqx/THF0lByqXhnMIv/Mx73bS7dy\r\nkBgUurCnBBjF0qRDIDasZi6piVeGYgTk2Q2IxwpiUH279a4BlE5UYRbirxX5\r\nBauY04GRKGHmi5+8diKe0/n/Zlv9ZykAmZaa9qSbh9FFFTDVWnWUS1GzqIRx\r\naqBBW/FowZrKeUI2UsveJzhKyySLxt1sIfXuMnJGw/UH20cTH+5HEtPv8e9Z\r\n1tJzNwkh6E3+WQjKDXzuhmBl44UPHKRiS1k2/Ua6Jg1QH+8Oe+4AULxvwBQl\r\nzmqcm09mVC4y3QjmVT0YdQ5rB3/R4RSsS6A=\r\n=qY7u\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBfzUOcLy9rr/SOke1IvRdgSEDS6j/Duzw6J6L9GnQVlAiEAvTu3DONCRB8eUoQhnOaXpq5df8ZnjSSPjn2r6NUpO2Y="}]},"_npmUser":{"name":"staltz","email":"andre+npm@staltz.com"},"directories":{},"maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"},{"name":"staltz","email":"andre+npm@staltz.com"},{"name":"arj03","email":"arj03@protonmail.ch"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/secret-handshake_1.1.21_1646232200305_0.05099899770495231"},"_hasShrinkwrap":false}},"readme":"# secret-handshake\n\nsecure-channel based on a a mutually authenticating key agreement handshake, with forward secure identity metadata.\n\nFor a full explanation of the design, read the\n[Design Paper](http://dominictarr.github.io/secret-handshake-paper/shs.pdf)\n\n## Implementations\n\n* javascript/node.js this repo.\n* go [cryptix/secretstream](https://github.com/cryptix/secretstream/)\n* rust [AljoschaMeyer/secret-handshake-rs](https://github.com/AljoschaMeyer/secret-handshake-rs)\n* c [AljoschaMeyer/shs1-c](https://github.com/AljoschaMeyer/shs1-c) (actually just implements the crypto, not the protocol used as a component in the rust implementation)\n* python/twisted [david415/txsecrethandshake](https://github.com/david415/txsecrethandshake) (WIP)\n* C++ [Kodest/cppshs](https://github.com/Kodest/cppshs) (WIP)\n* also [keks/tamarin-shs](https://github.com/keks/tamarin-shs) is a formal proof of the cryptographic properties!\n\n## Claims\n\nThis protocol derives shared keys and mutually\nauthenticates both ends of the connection.\nThe shared secrets are forward secure, and\nso is the identity metadata.\n\nby \"forward secure identity metadata\" I mean:\n\n* a later key compromise cannot confirm the public keys in the handshake.\n\nAnd also:\n\n* an eavesdropper cannot learn public keys\n* replay attacker cannot learn public keys.\n* man in the middle cannot learn public keys.\n* a \"wrong number\" cannot learn public keys.\n* an unauthenticated client cannot learn server key.\n  \n> note: a wrong number is just an accidental man in the middle.\n\nBy \"confirm\" I mean check a guess at the public key.\nBy \"learn\" I mean that you can _either_ extract the public key,\nor confirm the public key.\n\nAlso note that if the server decides not to authenticate a client,\nit will learn their public key. To get to this stage, the client\nmust know the server's key, so now the client and server both\nknow each others key. This is fair.\n\n## Disclaims\n\nThis protocol cannot hide your ip address.\nThis protocol does not attempt to obscure packet boundries.\nIf a man in the middle or wrong number later compromises\nthe server's key, they will be able to extract the client\nkey from the client's hello packet.\n\n## Example\n\n``` js\nvar SHS = require('secret-handshake')\n\nvar cl = require('chloride')\nvar appKey = ... //32 random bytes\nvar alice = cl.crypto_sign_keypair() //client\nvar bob = cl.crypto_sign_keypair()   //server\n\nfunction authorize(id, cb) {\n  cb(null, check(id)) //check wether id is authorized.\n}\n\n//initialize, with default timeouts.\nvar ServerStream = SHS.createServer(alice, authorize, appKey)\nvar ClientStream = SHS.createClient(bob, appkey)\n\nvar alice_stream = ServerStream(function (err, stream) {\n  ...\n})\n\nvar bob_stream = ClientStream(alice.publicKey, function (err, stream) {\n  ...\n})\n\n//simulate a streaming network connection by connecting streams together\npull(alice_stream, bob_stream, alice_stream)\n```\n\n## Notes\n\nI recommend using secret-handshake via [multiserver](https://github.com/dominictarr/multiserver)\n\n[pull-streams](https://github.com/dominictarr/pull-streams) are used.\nLearn about how pull-streams from [these examples](https://github.com/dominictarr/pull-stream-examples)\n\nKeypairs are expected to be of the form [sodium](https://github.com/paixaop/node-sodium) produces.\n[chloride](https://github.com/dominictarr/chloride) is my fork of this and is compatible.\n\nIf you're interested in the protocol, you can read more here : https://ssbc.github.io/scuttlebutt-protocol-guide/#handshake\n\n## api\n\n### createClient(keypair, authorize, appkey, timeout) => createClientStream(key, seed?, cb(err, plainstream)) => cipherstream\n\n`createClient` takes: \n- `keypair` - a keypair of form `{ secretKey, publicKey }` - your clients keys (see `chloride#crypto_sign_keypair`)\n- `appkey` - the network identifier, 32 random bytes\n- `timeout` - an integer (in milliseconds? CHECK THIS)\n\nand returns a `createClientStream`\n\n`createClientStream` takes a the public `key` for the remote peer,\nan optional `seed` (which is used to generate a one-time private key),\nand a callback, `cb`. `cipherstream`, an encrypted duplex pull-stream is returned.\n\nOnce the stream is connected to a server stream,\nsecret-handshake will attempt to authorize, and will call\n`cb` with an `err` if it fails, or `plainstream` if it succeeds.\nIf `keypair` is null, `seed` *must* be provided.\n\n### createServer(keypair, authorize(id, cb), appkey, timeout) => createServerStream(cb(err, plain_stream)) => cipherstream\n\n`createServer` is similar, except it takes `authorize`,\n- `keypair` - a keypair of form `{ secretKey, publicKey }` (see `chloride#crypto_sign_keypair`)\n- `authorize` - an async function of signature `(id, cb)` that decides whether a client with id == publicKey is allowed to continue with handshake\n- `appkey` - the network identifier, 32 random bytes\n- `timeout` - an integer (in milliseconds? CHECK THIS)\n\nA stream constructor function is returned\nNote the server DOES NOT take the client id as an argument - instead, in the process\nof the handshake, the server learns the `id`, and passes it to `authorize`.\nIf `authorize` calls back truthy, then it will callback `cb(null, plainstream)`\nelse it errors, `cb(err)`.\nThe value that `authorize` calls back `cb(null, <V>)` will be assigned to `plainstream.auth = <V>`.\nAlso, the `id` of the remote will be assigned to `plainstream.id`.\nThis way the application layer can know who it's peer is.\n\n## License\n\nMIT\n","maintainers":[{"name":"dominictarr","email":"dominic.tarr@gmail.com"},{"name":"staltz","email":"andre+npm@staltz.com"},{"name":"arj03","email":"arj03@protonmail.ch"}],"time":{"modified":"2022-06-26T17:12:29.360Z","created":"2015-06-17T17:55:21.209Z","0.0.2":"2015-06-17T17:55:21.209Z","0.1.0":"2015-06-18T13:46:16.654Z","0.1.1":"2015-06-19T15:27:48.407Z","0.1.2":"2015-07-03T17:52:20.371Z","0.2.0":"2015-07-13T09:42:56.955Z","0.3.0":"2015-07-26T21:24:12.884Z","0.3.1":"2015-07-30T18:28:41.979Z","0.3.3":"2015-07-31T18:17:42.525Z","0.3.4":"2015-07-31T18:18:59.354Z","0.3.6":"2015-10-12T03:34:16.115Z","0.3.7":"2015-12-05T07:58:14.110Z","0.3.8":"2016-01-18T03:52:35.331Z","0.4.0":"2016-03-15T04:24:41.679Z","0.4.1":"2016-03-15T04:41:23.407Z","0.5.0":"2016-07-08T10:07:26.156Z","1.0.0":"2016-07-09T04:47:48.071Z","1.1.1":"2016-10-02T09:14:08.689Z","1.1.2":"2017-03-19T08:07:15.456Z","1.1.3":"2017-03-20T01:27:43.268Z","1.1.4":"2017-03-27T21:24:32.551Z","1.1.5":"2017-04-10T01:29:02.223Z","1.1.6":"2017-04-17T02:02:45.207Z","1.1.7":"2017-04-17T07:44:43.106Z","1.1.11":"2017-05-28T07:02:21.920Z","1.1.12":"2017-12-03T17:40:21.575Z","1.1.13":"2018-04-10T00:30:41.289Z","1.1.14":"2018-09-27T01:43:18.840Z","1.1.15":"2019-01-11T09:46:53.267Z","1.1.16":"2019-01-14T07:05:01.514Z","1.1.17":"2019-05-02T08:15:43.844Z","1.1.18":"2019-05-09T21:31:21.351Z","1.1.19":"2019-06-11T20:22:03.729Z","1.1.20":"2019-06-27T07:26:56.242Z","1.1.21":"2022-03-02T14:43:20.444Z"},"homepage":"https://github.com/auditdrivencrypto/secret-handshake","repository":{"type":"git","url":"git://github.com/auditdrivencrypto/secret-handshake.git"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"bugs":{"url":"https://github.com/auditdrivencrypto/secret-handshake/issues"},"license":"MIT","readmeFilename":"","users":{"kiknag":true}}