{"_id":"libp2p-keychain","_rev":"4634436","name":"libp2p-keychain","description":"Key management and cryptographically protected messages","dist-tags":{"latest":"0.6.1"},"maintainers":[{"name":"daviddias","email":"daviddias.p@gmail.com"}],"time":{"modified":"2026-04-10T19:08:07.000Z","created":"2017-12-20T13:52:28.756Z","0.6.1":"2020-06-09T13:08:03.471Z","0.5.5":"2019-12-28T10:12:25.059Z","0.6.0":"2019-12-18T16:59:16.130Z","0.5.4":"2019-12-18T16:53:09.053Z","0.5.3":"2019-12-18T10:16:38.364Z","0.5.2":"2019-12-02T16:18:09.320Z","0.5.1":"2019-09-25T10:33:45.715Z","0.5.0":"2019-08-16T13:25:23.487Z","0.4.2":"2019-06-13T13:50:58.954Z","0.4.1":"2019-03-14T22:39:23.306Z","0.4.0":"2019-02-26T11:46:53.173Z","0.3.6":"2019-01-10T11:34:18.339Z","0.3.4":"2019-01-04T10:55:01.410Z","0.3.3":"2018-10-25T08:37:45.634Z","0.3.2":"2018-09-18T12:03:07.316Z","0.3.1":"2018-01-29T06:38:00.909Z","0.3.0":"2018-01-29T06:23:50.007Z","0.2.1":"2017-12-28T08:51:40.807Z","0.2.0":"2017-12-20T13:52:28.756Z"},"users":{},"repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p-keychain.git"},"versions":{"0.6.1":{"name":"libp2p-keychain","version":"0.6.1","description":"Key management and cryptographically protected messages","leadMaintainer":"Vasco Santos <vasco.santos@moxy.studio>","main":"src/index.js","scripts":{"lint":"aegir lint","build":"aegir build","coverage":"nyc --reporter=text --reporter=lcov npm run test:node","test":"aegir test -t node -t browser","test:node":"aegir test -t node","test:browser":"aegir test -t browser","release":"aegir release","release-minor":"aegir release --type minor","release-major":"aegir release --type major"},"pre-push":["lint"],"engines":{"node":">=10.0.0","npm":">=3.0.0"},"repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p-keychain.git"},"keywords":["IPFS","libp2p","keys","encryption","secure","crypto"],"license":"MIT","bugs":{"url":"https://github.com/libp2p/js-libp2p-keychain/issues"},"homepage":"https://github.com/libp2p/js-libp2p-keychain#readme","dependencies":{"err-code":"^2.0.0","interface-datastore":"^1.0.2","libp2p-crypto":"^0.17.1","merge-options":"^2.0.0","node-forge":"^0.9.1","sanitize-filename":"^1.6.1"},"devDependencies":{"aegir":"^22.0.0","chai":"^4.2.0","chai-string":"^1.5.0","datastore-fs":"^1.0.0","datastore-level":"^1.0.0","dirty-chai":"^2.0.1","level":"^6.0.0","multihashes":"^0.4.15","peer-id":"^0.13.5","promisify-es6":"^1.0.3","rimraf":"^3.0.0"},"contributors":[{"name":"Vasco Santos","email":"vasco.santos@moxy.studio"},{"name":"Richard Schneider","email":"makaretu@gmail.com"},{"name":"David Dias","email":"daviddias.p@gmail.com"},{"name":"Alan Shaw","email":"alan.shaw@protocol.ai"},{"name":"Alex Potsides","email":"alex@achingbrain.net"},{"name":"Alberto Elias","email":"hi@albertoelias.me"},{"name":"Masahiro Saito","email":"camelmasa@gmail.com"},{"name":"Maciej Krüger","email":"mkg20001@gmail.com"},{"name":"Jacob Heun","email":"jacobheun@gmail.com"},{"name":"Hugo Dias","email":"mail@hugodias.me"},{"name":"Victor Bjelkholm","email":"victorbjelkholm@gmail.com"}],"gitHead":"45f22dd96bedc4b2c5629df08d8d3531acf2d6b4","_id":"libp2p-keychain@0.6.1","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"shasum":"7c0635dff7bade4d7171ccbad0f9994ffa23feec","size":42917,"noattachment":false,"key":"/libp2p-keychain/-/libp2p-keychain-0.6.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/libp2p-keychain/download/libp2p-keychain-0.6.1.tgz"},"maintainers":[{"name":"daviddias","email":"daviddias.p@gmail.com"}],"_npmUser":{"name":"vascosantos","email":"vasco.santos@moxy.studio"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/libp2p-keychain_0.6.1_1591708083367_0.6043701729653281"},"_hasShrinkwrap":false,"publish_time":1591708083471,"deprecated":"No longer supported for js-libp2p0.28.0 or later","_cnpm_publish_time":1591708083471,"_cnpmcore_publish_time":"2021-12-16T19:10:10.281Z"},"0.5.5":{"name":"libp2p-keychain","version":"0.5.5","description":"Key management and cryptographically protected messages","leadMaintainer":"Vasco Santos <vasco.santos@moxy.studio>","main":"src/index.js","scripts":{"lint":"aegir lint","build":"aegir build","coverage":"nyc --reporter=text --reporter=lcov npm run test:node","test":"aegir test -t node -t browser","test:node":"aegir test -t node","test:browser":"aegir test -t browser","release":"aegir release","release-minor":"aegir release --type minor","release-major":"aegir release --type major"},"pre-push":["lint"],"engines":{"node":">=10.0.0","npm":">=3.0.0"},"repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p-keychain.git"},"keywords":["IPFS","libp2p","keys","encryption","secure","crypto"],"license":"MIT","bugs":{"url":"https://github.com/libp2p/js-libp2p-keychain/issues"},"homepage":"https://github.com/libp2p/js-libp2p-keychain#readme","dependencies":{"err-code":"^2.0.0","interface-datastore":"^0.7.0","libp2p-crypto":"^0.16.2","merge-options":"^1.0.1","node-forge":"^0.9.1","promisify-es6":"^1.0.3","sanitize-filename":"^1.6.1"},"devDependencies":{"aegir":"^20.0.0","chai":"^4.2.0","chai-string":"^1.5.0","datastore-fs":"^0.9.0","datastore-level":"^0.12.1","dirty-chai":"^2.0.1","level":"^5.0.1","multihashes":"^0.4.15","peer-id":"^0.12.2","rimraf":"^2.6.3"},"contributors":[{"name":"Alan Shaw","email":"alan.shaw@protocol.ai"},{"name":"Alberto Elias","email":"hi@albertoelias.me"},{"name":"Alex Potsides","email":"alex@achingbrain.net"},{"name":"David Dias","email":"daviddias.p@gmail.com"},{"name":"Hugo Dias","email":"mail@hugodias.me"},{"name":"Jacob Heun","email":"jacobheun@gmail.com"},{"name":"Maciej Krüger","email":"mkg20001@gmail.com"},{"name":"Masahiro Saito","email":"camelmasa@gmail.com"},{"name":"Richard Schneider","email":"makaretu@gmail.com"},{"name":"Vasco Santos","email":"vasco.santos@moxy.studio"},{"name":"Vasco Santos","email":"vasco.santos@ua.pt"},{"name":"Victor Bjelkholm","email":"victorbjelkholm@gmail.com"}],"gitHead":"786001f94fb3a21f5c8064285968b0ed438b6fda","_id":"libp2p-keychain@0.5.5","_nodeVersion":"12.14.0","_npmVersion":"6.13.4","dist":{"shasum":"06df80ab81056d62ec65ebc2752eac0b9c2e2fcf","size":42959,"noattachment":false,"key":"/libp2p-keychain/-/libp2p-keychain-0.5.5.tgz","tarball":"http://registry.cnpm.dingdandao.com/libp2p-keychain/download/libp2p-keychain-0.5.5.tgz"},"maintainers":[{"name":"daviddias","email":"daviddias.p@gmail.com"}],"_npmUser":{"name":"vascosantos","email":"vasco.santos@moxy.studio"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/libp2p-keychain_0.5.5_1577527944944_0.7054765529286613"},"_hasShrinkwrap":false,"publish_time":1577527945059,"deprecated":"No longer supported for js-libp2p0.28.0 or later","_cnpm_publish_time":1577527945059,"_cnpmcore_publish_time":"2021-12-16T19:10:10.534Z"},"0.6.0":{"name":"libp2p-keychain","version":"0.6.0","description":"Key management and cryptographically protected messages","leadMaintainer":"Vasco Santos <vasco.santos@moxy.studio>","main":"src/index.js","scripts":{"lint":"aegir lint","build":"aegir build","coverage":"nyc --reporter=text --reporter=lcov npm run test:node","test":"aegir test -t node -t browser","test:node":"aegir test -t node","test:browser":"aegir test -t browser","release":"aegir release","release-minor":"aegir release --type minor","release-major":"aegir release --type major"},"pre-push":["lint"],"engines":{"node":">=10.0.0","npm":">=3.0.0"},"repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p-keychain.git"},"keywords":["IPFS","libp2p","keys","encryption","secure","crypto"],"license":"MIT","bugs":{"url":"https://github.com/libp2p/js-libp2p-keychain/issues"},"homepage":"https://github.com/libp2p/js-libp2p-keychain#readme","dependencies":{"err-code":"^2.0.0","interface-datastore":"^0.8.0","libp2p-crypto":"^0.17.1","merge-options":"^2.0.0","node-forge":"^0.9.1","sanitize-filename":"^1.6.1"},"devDependencies":{"aegir":"^20.0.0","chai":"^4.2.0","chai-string":"^1.5.0","datastore-fs":"^0.9.0","datastore-level":"^0.14.0","dirty-chai":"^2.0.1","level":"^6.0.0","multihashes":"^0.4.15","peer-id":"^0.13.5","promisify-es6":"^1.0.3","rimraf":"^3.0.0"},"contributors":[{"name":"Alan Shaw","email":"alan.shaw@protocol.ai"},{"name":"Alberto Elias","email":"hi@albertoelias.me"},{"name":"Alex Potsides","email":"alex@achingbrain.net"},{"name":"David Dias","email":"daviddias.p@gmail.com"},{"name":"Hugo Dias","email":"mail@hugodias.me"},{"name":"Jacob Heun","email":"jacobheun@gmail.com"},{"name":"Maciej Krüger","email":"mkg20001@gmail.com"},{"name":"Masahiro Saito","email":"camelmasa@gmail.com"},{"name":"Richard Schneider","email":"makaretu@gmail.com"},{"name":"Vasco Santos","email":"vasco.santos@moxy.studio"},{"name":"Vasco Santos","email":"vasco.santos@ua.pt"},{"name":"Victor Bjelkholm","email":"victorbjelkholm@gmail.com"}],"gitHead":"44a1e7c709e71aae37f968305340d9ccfbd4ee49","_id":"libp2p-keychain@0.6.0","_nodeVersion":"12.14.0","_npmVersion":"6.13.4","dist":{"shasum":"9e920e52d8a85e1bef51e36338c8412216764764","size":42897,"noattachment":false,"key":"/libp2p-keychain/-/libp2p-keychain-0.6.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/libp2p-keychain/download/libp2p-keychain-0.6.0.tgz"},"maintainers":[{"name":"daviddias","email":"daviddias.p@gmail.com"}],"_npmUser":{"name":"vascosantos","email":"vasco.santos@moxy.studio"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/libp2p-keychain_0.6.0_1576688355985_0.8880499379611217"},"_hasShrinkwrap":false,"publish_time":1576688356130,"deprecated":"No longer supported for js-libp2p0.28.0 or later","_cnpm_publish_time":1576688356130,"_cnpmcore_publish_time":"2021-12-16T19:10:10.822Z"},"0.5.4":{"name":"libp2p-keychain","version":"0.5.4","description":"Key management and cryptographically protected messages","leadMaintainer":"Vasco Santos <vasco.santos@moxy.studio>","main":"src/index.js","scripts":{"lint":"aegir lint","build":"aegir build","coverage":"nyc --reporter=text --reporter=lcov npm run test:node","test":"aegir test -t node -t browser","test:node":"aegir test -t node","test:browser":"aegir test -t browser","release":"aegir release","release-minor":"aegir release --type minor","release-major":"aegir release --type major"},"pre-push":["lint"],"engines":{"node":">=10.0.0","npm":">=3.0.0"},"repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p-keychain.git"},"keywords":["IPFS","libp2p","keys","encryption","secure","crypto"],"license":"MIT","bugs":{"url":"https://github.com/libp2p/js-libp2p-keychain/issues"},"homepage":"https://github.com/libp2p/js-libp2p-keychain#readme","dependencies":{"err-code":"^2.0.0","interface-datastore":"^0.7.0","libp2p-crypto":"^0.16.2","merge-options":"^1.0.1","node-forge":"^0.9.1","sanitize-filename":"^1.6.1"},"devDependencies":{"aegir":"^20.0.0","chai":"^4.2.0","chai-string":"^1.5.0","datastore-fs":"^0.9.0","datastore-level":"^0.12.1","dirty-chai":"^2.0.1","level":"^5.0.1","multihashes":"^0.4.15","peer-id":"^0.12.2","promisify-es6":"^1.0.3","rimraf":"^2.6.3"},"contributors":[{"name":"Alan Shaw","email":"alan.shaw@protocol.ai"},{"name":"Alberto Elias","email":"hi@albertoelias.me"},{"name":"Alex Potsides","email":"alex@achingbrain.net"},{"name":"David Dias","email":"daviddias.p@gmail.com"},{"name":"Hugo Dias","email":"mail@hugodias.me"},{"name":"Jacob Heun","email":"jacobheun@gmail.com"},{"name":"Maciej Krüger","email":"mkg20001@gmail.com"},{"name":"Masahiro Saito","email":"camelmasa@gmail.com"},{"name":"Richard Schneider","email":"makaretu@gmail.com"},{"name":"Vasco Santos","email":"vasco.santos@moxy.studio"},{"name":"Vasco Santos","email":"vasco.santos@ua.pt"},{"name":"Victor Bjelkholm","email":"victorbjelkholm@gmail.com"}],"gitHead":"0d13a8b729e22e3a30084296f900e11026dcdc24","_id":"libp2p-keychain@0.5.4","_nodeVersion":"12.14.0","_npmVersion":"6.13.4","dist":{"shasum":"819e2c7920a44d02cd79b9d00031e3bfe592f5a7","size":42956,"noattachment":false,"key":"/libp2p-keychain/-/libp2p-keychain-0.5.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/libp2p-keychain/download/libp2p-keychain-0.5.4.tgz"},"maintainers":[{"name":"daviddias","email":"daviddias.p@gmail.com"}],"_npmUser":{"name":"vascosantos","email":"vasco.santos@moxy.studio"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/libp2p-keychain_0.5.4_1576687988870_0.04810469828000219"},"_hasShrinkwrap":false,"publish_time":1576687989053,"deprecated":"No longer supported for js-libp2p0.28.0 or later","_cnpm_publish_time":1576687989053,"_cnpmcore_publish_time":"2021-12-16T19:10:11.507Z"},"0.5.3":{"name":"libp2p-keychain","version":"0.5.3","description":"Key management and cryptographically protected messages","leadMaintainer":"Vasco Santos <vasco.santos@moxy.studio>","main":"src/index.js","scripts":{"lint":"aegir lint","build":"aegir build","coverage":"nyc --reporter=text --reporter=lcov npm run test:node","test":"aegir test -t node -t browser","test:node":"aegir test -t node","test:browser":"aegir test -t browser","release":"aegir release","release-minor":"aegir release --type minor","release-major":"aegir release --type major"},"pre-push":["lint"],"engines":{"node":">=10.0.0","npm":">=3.0.0"},"repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p-keychain.git"},"keywords":["IPFS","libp2p","keys","encryption","secure","crypto"],"license":"MIT","bugs":{"url":"https://github.com/libp2p/js-libp2p-keychain/issues"},"homepage":"https://github.com/libp2p/js-libp2p-keychain#readme","dependencies":{"err-code":"^2.0.0","interface-datastore":"^0.8.0","libp2p-crypto":"^0.17.1","merge-options":"^2.0.0","node-forge":"^0.9.1","sanitize-filename":"^1.6.1"},"devDependencies":{"aegir":"^20.0.0","chai":"^4.2.0","chai-string":"^1.5.0","datastore-fs":"^0.9.0","datastore-level":"^0.14.0","dirty-chai":"^2.0.1","level":"^6.0.0","multihashes":"^0.4.15","peer-id":"^0.13.5","promisify-es6":"^1.0.3","rimraf":"^3.0.0"},"contributors":[{"name":"Alan Shaw","email":"alan.shaw@protocol.ai"},{"name":"Alberto Elias","email":"hi@albertoelias.me"},{"name":"Alex Potsides","email":"alex@achingbrain.net"},{"name":"David Dias","email":"daviddias.p@gmail.com"},{"name":"Hugo Dias","email":"mail@hugodias.me"},{"name":"Jacob Heun","email":"jacobheun@gmail.com"},{"name":"Maciej Krüger","email":"mkg20001@gmail.com"},{"name":"Masahiro Saito","email":"camelmasa@gmail.com"},{"name":"Richard Schneider","email":"makaretu@gmail.com"},{"name":"Vasco Santos","email":"vasco.santos@moxy.studio"},{"name":"Vasco Santos","email":"vasco.santos@ua.pt"},{"name":"Victor Bjelkholm","email":"victorbjelkholm@gmail.com"}],"gitHead":"be63323cef833672b585f4bab93e923138791179","_id":"libp2p-keychain@0.5.3","_nodeVersion":"13.3.0","_npmVersion":"6.13.2","dist":{"shasum":"a658477893431a1f1ba1de06d572dcb018719451","size":42865,"noattachment":false,"key":"/libp2p-keychain/-/libp2p-keychain-0.5.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/libp2p-keychain/download/libp2p-keychain-0.5.3.tgz"},"maintainers":[{"name":"daviddias","email":"daviddias.p@gmail.com"}],"_npmUser":{"name":"vascosantos","email":"vasco.santos@moxy.studio"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/libp2p-keychain_0.5.3_1576664198247_0.06091572209578078"},"_hasShrinkwrap":false,"publish_time":1576664198364,"deprecated":"No longer supported for js-libp2p0.28.0 or later","_cnpm_publish_time":1576664198364,"_cnpmcore_publish_time":"2021-12-16T19:10:11.927Z"},"0.5.2":{"name":"libp2p-keychain","version":"0.5.2","description":"Key management and cryptographically protected messages","leadMaintainer":"Vasco Santos <vasco.santos@moxy.studio>","main":"src/index.js","scripts":{"lint":"aegir lint","build":"aegir build","coverage":"nyc --reporter=text --reporter=lcov npm run test:node","test":"aegir test -t node -t browser","test:node":"aegir test -t node","test:browser":"aegir test -t browser","release":"aegir release","release-minor":"aegir release --type minor","release-major":"aegir release --type major"},"pre-push":["lint"],"engines":{"node":">=10.0.0","npm":">=3.0.0"},"repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p-keychain.git"},"keywords":["IPFS","libp2p","keys","encryption","secure","crypto"],"license":"MIT","bugs":{"url":"https://github.com/libp2p/js-libp2p-keychain/issues"},"homepage":"https://github.com/libp2p/js-libp2p-keychain#readme","dependencies":{"err-code":"^2.0.0","interface-datastore":"^0.7.0","libp2p-crypto":"^0.16.2","merge-options":"^1.0.1","node-forge":"^0.9.1","sanitize-filename":"^1.6.1"},"devDependencies":{"aegir":"^20.0.0","chai":"^4.2.0","chai-string":"^1.5.0","datastore-fs":"^0.9.0","datastore-level":"^0.12.1","dirty-chai":"^2.0.1","level":"^5.0.1","multihashes":"^0.4.15","peer-id":"^0.12.2","promisify-es6":"^1.0.3","rimraf":"^2.6.3"},"contributors":[{"name":"Alan Shaw","email":"alan.shaw@protocol.ai"},{"name":"Alberto Elias","email":"hi@albertoelias.me"},{"name":"Alex Potsides","email":"alex@achingbrain.net"},{"name":"David Dias","email":"daviddias.p@gmail.com"},{"name":"Hugo Dias","email":"mail@hugodias.me"},{"name":"Jacob Heun","email":"jacobheun@gmail.com"},{"name":"Maciej Krüger","email":"mkg20001@gmail.com"},{"name":"Masahiro Saito","email":"camelmasa@gmail.com"},{"name":"Richard Schneider","email":"makaretu@gmail.com"},{"name":"Vasco Santos","email":"vasco.santos@moxy.studio"},{"name":"Vasco Santos","email":"vasco.santos@ua.pt"},{"name":"Victor Bjelkholm","email":"victorbjelkholm@gmail.com"}],"gitHead":"163edbbe88d0c6610ce365130ad55203051332f9","_id":"libp2p-keychain@0.5.2","_nodeVersion":"10.15.1","_npmVersion":"6.11.3","dist":{"shasum":"dc108068a7734db421cadf0db37ea9803b7e1920","size":42933,"noattachment":false,"key":"/libp2p-keychain/-/libp2p-keychain-0.5.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/libp2p-keychain/download/libp2p-keychain-0.5.2.tgz"},"maintainers":[{"name":"daviddias","email":"daviddias.p@gmail.com"}],"_npmUser":{"name":"vascosantos","email":"vasco.santos@moxy.studio"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/libp2p-keychain_0.5.2_1575303488539_0.0452234074633886"},"_hasShrinkwrap":false,"publish_time":1575303489320,"deprecated":"No longer supported for js-libp2p0.28.0 or later","_cnpm_publish_time":1575303489320,"_cnpmcore_publish_time":"2021-12-16T19:10:12.253Z"},"0.5.1":{"name":"libp2p-keychain","version":"0.5.1","description":"Key management and cryptographically protected messages","leadMaintainer":"Vasco Santos <vasco.santos@moxy.studio>","main":"src/index.js","scripts":{"lint":"aegir lint","build":"aegir build","coverage":"nyc --reporter=text --reporter=lcov npm run test:node","test":"aegir test -t node -t browser","test:node":"aegir test -t node","test:browser":"aegir test -t browser","release":"aegir release","release-minor":"aegir release --type minor","release-major":"aegir release --type major"},"pre-push":["lint"],"engines":{"node":">=10.0.0","npm":">=3.0.0"},"repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p-keychain.git"},"keywords":["IPFS","libp2p","keys","encryption","secure","crypto"],"license":"MIT","bugs":{"url":"https://github.com/libp2p/js-libp2p-keychain/issues"},"homepage":"https://github.com/libp2p/js-libp2p-keychain#readme","dependencies":{"err-code":"^2.0.0","interface-datastore":"^0.7.0","libp2p-crypto":"^0.16.2","merge-options":"^1.0.1","node-forge":"^0.8.5","sanitize-filename":"^1.6.1"},"devDependencies":{"aegir":"^20.0.0","chai":"^4.2.0","chai-string":"^1.5.0","datastore-fs":"^0.9.0","datastore-level":"^0.12.1","dirty-chai":"^2.0.1","level":"^5.0.1","multihashes":"^0.4.15","peer-id":"^0.12.2","promisify-es6":"^1.0.3","rimraf":"^2.6.3"},"contributors":[{"name":"Alan Shaw","email":"alan.shaw@protocol.ai"},{"name":"Alberto Elias","email":"hi@albertoelias.me"},{"name":"Alex Potsides","email":"alex@achingbrain.net"},{"name":"David Dias","email":"daviddias.p@gmail.com"},{"name":"Hugo Dias","email":"mail@hugodias.me"},{"name":"Jacob Heun","email":"jacobheun@gmail.com"},{"name":"Maciej Krüger","email":"mkg20001@gmail.com"},{"name":"Masahiro Saito","email":"camelmasa@gmail.com"},{"name":"Richard Schneider","email":"makaretu@gmail.com"},{"name":"Vasco Santos","email":"vasco.santos@moxy.studio"},{"name":"Vasco Santos","email":"vasco.santos@ua.pt"},{"name":"Victor Bjelkholm","email":"victorbjelkholm@gmail.com"}],"gitHead":"ce8c412fb6c1ecc087ad332122826d2bd43d7c19","_id":"libp2p-keychain@0.5.1","_nodeVersion":"10.15.1","_npmVersion":"6.11.3","dist":{"shasum":"d643f254fbca335bca5359cd7f6375be29b6631e","size":42921,"noattachment":false,"key":"/libp2p-keychain/-/libp2p-keychain-0.5.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/libp2p-keychain/download/libp2p-keychain-0.5.1.tgz"},"maintainers":[{"name":"daviddias","email":"daviddias.p@gmail.com"}],"_npmUser":{"name":"vascosantos","email":"vasco.santos@moxy.studio"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/libp2p-keychain_0.5.1_1569407625609_0.9863217889306806"},"_hasShrinkwrap":false,"publish_time":1569407625715,"deprecated":"No longer supported for js-libp2p0.28.0 or later","_cnpm_publish_time":1569407625715,"_cnpmcore_publish_time":"2021-12-16T19:10:12.837Z"},"0.5.0":{"name":"libp2p-keychain","version":"0.5.0","description":"Key management and cryptographically protected messages","leadMaintainer":"Vasco Santos <vasco.santos@moxy.studio>","main":"src/index.js","scripts":{"lint":"aegir lint","build":"aegir build","coverage":"nyc --reporter=text --reporter=lcov npm run test:node","test":"aegir test -t node -t browser","test:node":"aegir test -t node","test:browser":"aegir test -t browser","release":"aegir release","release-minor":"aegir release --type minor","release-major":"aegir release --type major"},"pre-push":["lint"],"engines":{"node":">=10.0.0","npm":">=3.0.0"},"repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p-keychain.git"},"keywords":["IPFS","libp2p","keys","encryption","secure","crypto"],"license":"MIT","bugs":{"url":"https://github.com/libp2p/js-libp2p-keychain/issues"},"homepage":"https://github.com/libp2p/js-libp2p-keychain#readme","dependencies":{"err-code":"^2.0.0","interface-datastore":"^0.7.0","libp2p-crypto":"^0.17.0","merge-options":"^1.0.1","node-forge":"^0.8.5","sanitize-filename":"^1.6.1"},"devDependencies":{"aegir":"^20.0.0","chai":"^4.2.0","chai-string":"^1.5.0","datastore-fs":"^0.9.0","datastore-level":"^0.12.1","dirty-chai":"^2.0.1","level":"^5.0.1","multihashes":"^0.4.15","peer-id":"^0.13.2","promisify-es6":"^1.0.3","rimraf":"^2.6.3"},"contributors":[{"name":"Alan Shaw","email":"alan.shaw@protocol.ai"},{"name":"Alberto Elias","email":"hi@albertoelias.me"},{"name":"Alex Potsides","email":"alex@achingbrain.net"},{"name":"David Dias","email":"daviddias.p@gmail.com"},{"name":"Hugo Dias","email":"mail@hugodias.me"},{"name":"Jacob Heun","email":"jacobheun@gmail.com"},{"name":"Maciej Krüger","email":"mkg20001@gmail.com"},{"name":"Masahiro Saito","email":"camelmasa@gmail.com"},{"name":"Richard Schneider","email":"makaretu@gmail.com"},{"name":"Vasco Santos","email":"vasco.santos@moxy.studio"},{"name":"Vasco Santos","email":"vasco.santos@ua.pt"},{"name":"Victor Bjelkholm","email":"victorbjelkholm@gmail.com"}],"gitHead":"ad378174f79fb0bfbda75c4b12eb817d2960d27c","_id":"libp2p-keychain@0.5.0","_npmVersion":"6.4.1","_nodeVersion":"10.15.1","_npmUser":{"name":"vascosantos","email":"vasco.santos@moxy.studio"},"dist":{"shasum":"2a45f145d78d34a25da9086831146c21e424fd7e","size":43191,"noattachment":false,"key":"/libp2p-keychain/-/libp2p-keychain-0.5.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/libp2p-keychain/download/libp2p-keychain-0.5.0.tgz"},"maintainers":[{"name":"daviddias","email":"daviddias.p@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/libp2p-keychain_0.5.0_1565961923392_0.24937061285192197"},"_hasShrinkwrap":false,"publish_time":1565961923487,"deprecated":"No longer supported for js-libp2p0.28.0 or later","_cnpm_publish_time":1565961923487,"_cnpmcore_publish_time":"2021-12-16T19:10:13.115Z"},"0.4.2":{"name":"libp2p-keychain","version":"0.4.2","description":"Key management and cryptographically protected messages","leadMaintainer":"Vasco Santos <vasco.santos@moxy.studio>","main":"src/index.js","scripts":{"lint":"aegir lint","build":"aegir build","test":"aegir test -t node -t browser","test:node":"aegir test -t node","test:browser":"aegir test -t browser","release":"aegir release","release-minor":"aegir release --type minor","release-major":"aegir release --type major","coverage":"aegir coverage","coverage-publish":"aegir coverage publish"},"pre-push":["lint","test"],"engines":{"node":">=6.0.0","npm":">=3.0.0"},"repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p-keychain.git"},"keywords":["IPFS","libp2p","keys","encryption","secure","crypto"],"license":"MIT","bugs":{"url":"https://github.com/libp2p/js-libp2p-keychain/issues"},"homepage":"https://github.com/libp2p/js-libp2p-keychain#readme","dependencies":{"async":"^2.6.2","err-code":"^1.1.2","interface-datastore":"~0.6.0","libp2p-crypto":"~0.16.1","merge-options":"^1.0.1","node-forge":"~0.7.6","pull-stream":"^3.6.9","sanitize-filename":"^1.6.1"},"devDependencies":{"aegir":"^18.2.1","chai":"^4.2.0","chai-string":"^1.5.0","datastore-fs":"~0.8.0","datastore-level":"~0.10.0","dirty-chai":"^2.0.1","level-js":"^4.0.1","mocha":"^5.2.0","multihashes":"~0.4.14","peer-id":"~0.12.2","rimraf":"^2.6.3"},"contributors":[{"name":"Alan Shaw","email":"alan.shaw@protocol.ai"},{"name":"Alberto Elias","email":"hi@albertoelias.me"},{"name":"Alex Potsides","email":"alex@achingbrain.net"},{"name":"David Dias","email":"daviddias.p@gmail.com"},{"name":"Hugo Dias","email":"mail@hugodias.me"},{"name":"Maciej Krüger","email":"mkg20001@gmail.com"},{"name":"Masahiro Saito","email":"camelmasa@gmail.com"},{"name":"Richard Schneider","email":"makaretu@gmail.com"},{"name":"Vasco Santos","email":"vasco.santos@ua.pt"},{"name":"Vasco Santos","email":"vasco.santos@moxy.studio"},{"name":"Victor Bjelkholm","email":"victorbjelkholm@gmail.com"}],"gitHead":"717112bdf84db2df647be7993e3d6cdea3428d66","_id":"libp2p-keychain@0.4.2","_npmVersion":"6.4.1","_nodeVersion":"10.15.1","_npmUser":{"name":"vascosantos","email":"vasco.santos@moxy.studio"},"dist":{"shasum":"2972ebdaf762a27702c8f3c9bd5e883265d344cf","size":43404,"noattachment":false,"key":"/libp2p-keychain/-/libp2p-keychain-0.4.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/libp2p-keychain/download/libp2p-keychain-0.4.2.tgz"},"maintainers":[{"name":"daviddias","email":"daviddias.p@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/libp2p-keychain_0.4.2_1560433858580_0.1298625481236595"},"_hasShrinkwrap":false,"publish_time":1560433858954,"deprecated":"No longer supported for js-libp2p0.28.0 or later","_cnpm_publish_time":1560433858954,"_cnpmcore_publish_time":"2021-12-16T19:10:13.433Z"},"0.4.1":{"name":"libp2p-keychain","version":"0.4.1","description":"Key management and cryptographically protected messages","leadMaintainer":"Vasco Santos <vasco.santos@moxy.studio>","main":"src/index.js","scripts":{"lint":"aegir lint","build":"aegir build","test":"aegir test -t node -t browser","test:node":"aegir test -t node","test:browser":"aegir test -t browser","release":"aegir release","release-minor":"aegir release --type minor","release-major":"aegir release --type major","coverage":"aegir coverage","coverage-publish":"aegir coverage publish"},"pre-push":["lint","test"],"engines":{"node":">=6.0.0","npm":">=3.0.0"},"repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p-keychain.git"},"keywords":["IPFS","libp2p","keys","encryption","secure","crypto"],"license":"MIT","bugs":{"url":"https://github.com/libp2p/js-libp2p-keychain/issues"},"homepage":"https://github.com/libp2p/js-libp2p-keychain#readme","dependencies":{"async":"^2.6.1","interface-datastore":"~0.6.0","libp2p-crypto":"~0.16.1","merge-options":"^1.0.1","node-forge":"~0.7.6","pull-stream":"^3.6.8","sanitize-filename":"^1.6.1"},"devDependencies":{"aegir":"^18.0.3","chai":"^4.2.0","chai-string":"^1.4.0","datastore-fs":"~0.7.0","datastore-level":"~0.10.0","dirty-chai":"^2.0.1","level-js":"^4.0.0","mocha":"^5.2.0","multihashes":"~0.4.14","peer-id":"~0.12.2","rimraf":"^2.6.3"},"contributors":[{"name":"Alan Shaw","email":"alan.shaw@protocol.ai"},{"name":"Alberto Elias","email":"hi@albertoelias.me"},{"name":"David Dias","email":"daviddias.p@gmail.com"},{"name":"Hugo Dias","email":"mail@hugodias.me"},{"name":"Maciej Krüger","email":"mkg20001@gmail.com"},{"name":"Masahiro Saito","email":"camelmasa@gmail.com"},{"name":"Richard Schneider","email":"makaretu@gmail.com"},{"name":"Vasco Santos","email":"vasco.santos@moxy.studio"},{"name":"Vasco Santos","email":"vasco.santos@ua.pt"},{"name":"Victor Bjelkholm","email":"victorbjelkholm@gmail.com"}],"gitHead":"a5fd967c028efc54effa92f597918fc98c462320","_id":"libp2p-keychain@0.4.1","_npmVersion":"6.4.1","_nodeVersion":"10.15.1","_npmUser":{"name":"vascosantos","email":"vasco.santos@moxy.studio"},"dist":{"shasum":"d721709e7346481ee99bf2e337e7f51fbeae8e89","size":42993,"noattachment":false,"key":"/libp2p-keychain/-/libp2p-keychain-0.4.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/libp2p-keychain/download/libp2p-keychain-0.4.1.tgz"},"maintainers":[{"name":"daviddias","email":"daviddias.p@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/libp2p-keychain_0.4.1_1552603163079_0.306099561218941"},"_hasShrinkwrap":false,"publish_time":1552603163306,"deprecated":"No longer supported for js-libp2p0.28.0 or later","_cnpm_publish_time":1552603163306,"_cnpmcore_publish_time":"2021-12-16T19:10:13.686Z"},"0.4.0":{"name":"libp2p-keychain","version":"0.4.0","description":"Key management and cryptographically protected messages","leadMaintainer":"Vasco Santos <vasco.santos@moxy.studio>","main":"src/index.js","scripts":{"lint":"aegir lint","build":"aegir build","test":"aegir test -t node -t browser","test:node":"aegir test -t node","test:browser":"aegir test -t browser","release":"aegir release","release-minor":"aegir release --type minor","release-major":"aegir release --type major","coverage":"aegir coverage","coverage-publish":"aegir coverage publish"},"pre-push":["lint","test"],"engines":{"node":">=6.0.0","npm":">=3.0.0"},"repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p-keychain.git"},"keywords":["IPFS","libp2p","keys","encryption","secure","crypto"],"license":"MIT","bugs":{"url":"https://github.com/libp2p/js-libp2p-keychain/issues"},"homepage":"https://github.com/libp2p/js-libp2p-keychain#readme","dependencies":{"async":"^2.6.1","interface-datastore":"~0.6.0","libp2p-crypto":"~0.16.1","merge-options":"^1.0.1","node-forge":"~0.7.6","pull-stream":"^3.6.8","sanitize-filename":"^1.6.1"},"devDependencies":{"aegir":"^18.0.3","chai":"^4.2.0","chai-string":"^1.4.0","datastore-fs":"~0.7.0","datastore-level":"~0.10.0","dirty-chai":"^2.0.1","level-js":"^4.0.0","mocha":"^5.2.0","multihashes":"~0.4.14","peer-id":"~0.12.2","rimraf":"^2.6.3"},"contributors":[{"name":"Alan Shaw","email":"alan.shaw@protocol.ai"},{"name":"Alberto Elias","email":"hi@albertoelias.me"},{"name":"David Dias","email":"daviddias.p@gmail.com"},{"name":"Hugo Dias","email":"mail@hugodias.me"},{"name":"Maciej Krüger","email":"mkg20001@gmail.com"},{"name":"Masahiro Saito","email":"camelmasa@gmail.com"},{"name":"Richard Schneider","email":"makaretu@gmail.com"},{"name":"Vasco Santos","email":"vasco.santos@ua.pt"},{"name":"Vasco Santos","email":"vasco.santos@moxy.studio"},{"name":"Victor Bjelkholm","email":"victorbjelkholm@gmail.com"}],"gitHead":"e30330e1a0e179d70eb2c082c0a955bf1b4847cf","_id":"libp2p-keychain@0.4.0","_npmVersion":"6.4.1","_nodeVersion":"10.15.1","_npmUser":{"name":"vascosantos","email":"vasco.santos@moxy.studio"},"dist":{"shasum":"0927212425a8fc71889720b85ccc8002b2472930","size":43443,"noattachment":false,"key":"/libp2p-keychain/-/libp2p-keychain-0.4.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/libp2p-keychain/download/libp2p-keychain-0.4.0.tgz"},"maintainers":[{"name":"daviddias","email":"daviddias.p@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/libp2p-keychain_0.4.0_1551181613070_0.016239231971050483"},"_hasShrinkwrap":false,"publish_time":1551181613173,"deprecated":"No longer supported for js-libp2p0.28.0 or later","_cnpm_publish_time":1551181613173,"_cnpmcore_publish_time":"2021-12-16T19:10:13.904Z"},"0.3.6":{"name":"libp2p-keychain","version":"0.3.6","description":"Key management and cryptographically protected messages","leadMaintainer":"Vasco Santos <vasco.santos@moxy.studio>","main":"src/index.js","scripts":{"lint":"aegir lint","build":"aegir build","test":"aegir test -t node -t browser","test:node":"aegir test -t node","test:browser":"aegir test -t browser","release":"aegir release","release-minor":"aegir release --type minor","release-major":"aegir release --type major","coverage":"aegir coverage","coverage-publish":"aegir coverage publish"},"pre-push":["lint","test"],"engines":{"node":">=6.0.0","npm":">=3.0.0"},"repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p-keychain.git"},"keywords":["IPFS","libp2p","keys","encryption","secure","crypto"],"license":"MIT","bugs":{"url":"https://github.com/libp2p/js-libp2p-keychain/issues"},"homepage":"https://github.com/libp2p/js-libp2p-keychain#readme","dependencies":{"async":"^2.6.1","interface-datastore":"~0.6.0","libp2p-crypto":"~0.16.0","merge-options":"^1.0.1","node-forge":"~0.7.6","pull-stream":"^3.6.8","sanitize-filename":"^1.6.1"},"devDependencies":{"aegir":"^18.0.3","chai":"^4.2.0","chai-string":"^1.4.0","datastore-fs":"~0.7.0","datastore-level":"~0.10.0","dirty-chai":"^2.0.1","level-js":"^4.0.0","mocha":"^5.2.0","multihashes":"~0.4.14","peer-id":"~0.12.2","rimraf":"^2.6.3"},"contributors":[{"name":"Alan Shaw","email":"alan.shaw@protocol.ai"},{"name":"David Dias","email":"daviddias.p@gmail.com"},{"name":"Hugo Dias","email":"mail@hugodias.me"},{"name":"Maciej Krüger","email":"mkg20001@gmail.com"},{"name":"Masahiro Saito","email":"camelmasa@gmail.com"},{"name":"Richard Schneider","email":"makaretu@gmail.com"},{"name":"Vasco Santos","email":"vasco.santos@moxy.studio"},{"name":"Vasco Santos","email":"vasco.santos@ua.pt"},{"name":"Victor Bjelkholm","email":"victorbjelkholm@gmail.com"}],"gitHead":"aa5a6cb73c564a0b01dfb6d2b74c4ca490b8e2cd","_id":"libp2p-keychain@0.3.6","_npmVersion":"6.5.0","_nodeVersion":"10.14.1","_npmUser":{"name":"vascosantos","email":"vasco.santos@moxy.studio"},"dist":{"shasum":"ba7552797050e845271f4bedec650ae72b67ded8","size":42635,"noattachment":false,"key":"/libp2p-keychain/-/libp2p-keychain-0.3.6.tgz","tarball":"http://registry.cnpm.dingdandao.com/libp2p-keychain/download/libp2p-keychain-0.3.6.tgz"},"maintainers":[{"name":"daviddias","email":"daviddias.p@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/libp2p-keychain_0.3.6_1547120058195_0.572205757264896"},"_hasShrinkwrap":false,"publish_time":1547120058339,"deprecated":"No longer supported for js-libp2p0.28.0 or later","_cnpm_publish_time":1547120058339,"_cnpmcore_publish_time":"2021-12-16T19:10:14.201Z"},"0.3.4":{"name":"libp2p-keychain","version":"0.3.4","description":"Key management and cryptographically protected messages","leadMaintainer":"Vasco Santos <vasco.santos@moxy.studio>","main":"src/index.js","scripts":{"lint":"aegir lint","build":"aegir build","test":"aegir test -t node -t browser","test:node":"aegir test -t node","test:browser":"aegir test -t browser","release":"aegir release","release-minor":"aegir release --type minor","release-major":"aegir release --type major","coverage":"aegir coverage","coverage-publish":"aegir coverage publish"},"pre-push":["lint","test"],"engines":{"node":">=6.0.0","npm":">=3.0.0"},"repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p-keychain.git"},"keywords":["IPFS","libp2p","keys","encryption","secure","crypto"],"license":"MIT","bugs":{"url":"https://github.com/libp2p/js-libp2p-keychain/issues"},"homepage":"https://github.com/libp2p/js-libp2p-keychain#readme","dependencies":{"async":"^2.6.1","interface-datastore":"~0.6.0","libp2p-crypto":"~0.15.0","lodash":"^4.17.11","pull-stream":"^3.6.9","sanitize-filename":"^1.6.1"},"devDependencies":{"aegir":"^18.0.2","chai":"^4.2.0","chai-string":"^1.5.0","datastore-fs":"~0.7.0","datastore-level":"~0.10.0","dirty-chai":"^2.0.1","level-js":"^4.0.0","mocha":"^5.2.0","peer-id":"~0.12.1","rimraf":"^2.6.3"},"contributors":[{"name":"Alan Shaw","email":"alan.shaw@protocol.ai"},{"name":"David Dias","email":"daviddias.p@gmail.com"},{"name":"Maciej Krüger","email":"mkg20001@gmail.com"},{"name":"Masahiro Saito","email":"camelmasa@gmail.com"},{"name":"Richard Schneider","email":"makaretu@gmail.com"},{"name":"Vasco Santos","email":"vasco.santos@ua.pt"},{"name":"Vasco Santos","email":"vasco.santos@moxy.studio"},{"name":"Victor Bjelkholm","email":"victorbjelkholm@gmail.com"}],"gitHead":"4b895cf46ffdf0eae8ae15fee1bb4800d6f97e9b","_id":"libp2p-keychain@0.3.4","_npmVersion":"6.5.0","_nodeVersion":"10.14.1","_npmUser":{"name":"vascosantos","email":"vasco.santos@moxy.studio"},"dist":{"shasum":"4e407753b0c5dba9517cf1ab8eb7044e6acc7221","size":42753,"noattachment":false,"key":"/libp2p-keychain/-/libp2p-keychain-0.3.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/libp2p-keychain/download/libp2p-keychain-0.3.4.tgz"},"maintainers":[{"name":"daviddias","email":"daviddias.p@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/libp2p-keychain_0.3.4_1546599301276_0.67850945836139"},"_hasShrinkwrap":false,"publish_time":1546599301410,"deprecated":"No longer supported for js-libp2p0.28.0 or later","_cnpm_publish_time":1546599301410,"_cnpmcore_publish_time":"2021-12-16T19:10:14.446Z"},"0.3.3":{"name":"libp2p-keychain","version":"0.3.3","description":"Key management and cryptographically protected messages","leadMaintainer":"Vasco Santos <vasco.santos@moxy.studio>","main":"src/index.js","scripts":{"lint":"aegir lint","build":"aegir build","test":"aegir test -t node -t browser","test:node":"aegir test -t node","test:browser":"aegir test -t browser","release":"aegir release","release-minor":"aegir release --type minor","release-major":"aegir release --type major","coverage":"aegir coverage","coverage-publish":"aegir coverage publish"},"pre-push":["lint","test"],"engines":{"node":">=6.0.0","npm":">=3.0.0"},"repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p-keychain.git"},"keywords":["IPFS","libp2p","keys","encryption","secure","crypto"],"license":"MIT","bugs":{"url":"https://github.com/libp2p/js-libp2p-keychain/issues"},"homepage":"https://github.com/libp2p/js-libp2p-keychain#readme","dependencies":{"async":"^2.6.1","interface-datastore":"~0.6.0","libp2p-crypto":"~0.13.0","lodash":"^4.6.1","pull-stream":"^3.6.8","sanitize-filename":"^1.6.1"},"devDependencies":{"aegir":"^15.3.0","chai":"^4.2.0","chai-string":"^1.4.0","datastore-fs":"~0.5.0","datastore-level":"~0.8.0","dirty-chai":"^2.0.1","level-js":"^3.0.0","mocha":"^5.2.0","peer-id":"~0.10.7","rimraf":"^2.6.2"},"contributors":[{"name":"Alan Shaw","email":"alan.shaw@protocol.ai"},{"name":"David Dias","email":"daviddias.p@gmail.com"},{"name":"Maciej Krüger","email":"mkg20001@gmail.com"},{"name":"Masahiro Saito","email":"camelmasa@gmail.com"},{"name":"Richard Schneider","email":"makaretu@gmail.com"},{"name":"Vasco Santos","email":"vasco.santos@ua.pt"},{"name":"Vasco Santos","email":"vasco.santos@moxy.studio"},{"name":"Victor Bjelkholm","email":"victorbjelkholm@gmail.com"}],"gitHead":"251e0b87b64626798405b6c0da2c8246b141b9b5","_id":"libp2p-keychain@0.3.3","_npmVersion":"5.6.0","_nodeVersion":"8.11.3","_npmUser":{"name":"vascosantos","email":"vasco.santos@moxy.studio"},"dist":{"shasum":"d71cb744e8f38f94dc057207fd60c0a841d070f1","size":43182,"noattachment":false,"key":"/libp2p-keychain/-/libp2p-keychain-0.3.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/libp2p-keychain/download/libp2p-keychain-0.3.3.tgz"},"maintainers":[{"name":"daviddias","email":"daviddias.p@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/libp2p-keychain_0.3.3_1540456665505_0.0390599175430808"},"_hasShrinkwrap":false,"publish_time":1540456665634,"deprecated":"No longer supported for js-libp2p0.28.0 or later","_cnpm_publish_time":1540456665634,"_cnpmcore_publish_time":"2021-12-16T19:10:14.782Z"},"0.3.2":{"name":"libp2p-keychain","version":"0.3.2","description":"Key management and cryptographically protected messages","leadMaintainer":"Vasco Santos <vasco.santos@moxy.studio>","main":"src/index.js","scripts":{"lint":"aegir lint","build":"aegir build","test":"aegir test -t node -t browser","test:node":"aegir test -t node","test:browser":"aegir test -t browser","release":"aegir release","release-minor":"aegir release --type minor","release-major":"aegir release --type major","coverage":"aegir coverage","coverage-publish":"aegir coverage publish"},"pre-push":["lint","test"],"engines":{"node":">=6.0.0","npm":">=3.0.0"},"repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p-keychain.git"},"keywords":["IPFS","libp2p","keys","encryption","secure","crypto"],"license":"MIT","bugs":{"url":"https://github.com/libp2p/js-libp2p-keychain/issues"},"homepage":"https://github.com/libp2p/js-libp2p-keychain#readme","dependencies":{"async":"^2.6.1","interface-datastore":"~0.4.2","libp2p-crypto":"~0.13.0","lodash":"^4.6.1","pull-stream":"^3.6.8","sanitize-filename":"^1.6.1"},"devDependencies":{"aegir":"^14.0.0","chai":"^4.1.2","chai-string":"^1.4.0","datastore-fs":"~0.5.0","datastore-level":"~0.8.0","dirty-chai":"^2.0.1","level-js":"^3.0.0","mocha":"^5.2.0","peer-id":"~0.10.7","rimraf":"^2.6.2"},"contributors":[{"name":"Alan Shaw","email":"alan.shaw@protocol.ai"},{"name":"David Dias","email":"daviddias.p@gmail.com"},{"name":"Maciej Krüger","email":"mkg20001@gmail.com"},{"name":"Masahiro Saito","email":"camelmasa@gmail.com"},{"name":"Richard Schneider","email":"makaretu@gmail.com"},{"name":"Vasco Santos","email":"vasco.santos@ua.pt"},{"name":"Victor Bjelkholm","email":"victorbjelkholm@gmail.com"}],"gitHead":"5d3f489f23622415cb6d29d891d87743f295b06a","_id":"libp2p-keychain@0.3.2","_npmVersion":"5.6.0","_nodeVersion":"8.11.3","_npmUser":{"name":"vascosantos","email":"vasco.santos@moxy.studio"},"dist":{"shasum":"9a572343d04dc790109a2750fa91adafadc5378e","size":43168,"noattachment":false,"key":"/libp2p-keychain/-/libp2p-keychain-0.3.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/libp2p-keychain/download/libp2p-keychain-0.3.2.tgz"},"maintainers":[{"name":"daviddias","email":"daviddias.p@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/libp2p-keychain_0.3.2_1537272187185_0.4874917895476789"},"_hasShrinkwrap":false,"publish_time":1537272187316,"deprecated":"No longer supported for js-libp2p0.28.0 or later","_cnpm_publish_time":1537272187316,"_cnpmcore_publish_time":"2021-12-16T19:10:15.051Z"},"0.3.1":{"name":"libp2p-keychain","version":"0.3.1","description":"Key management and cryptographically protected messages","main":"src/index.js","scripts":{"lint":"aegir lint","build":"aegir build","test":"aegir test -t node -t browser","test:node":"aegir test -t node","test:browser":"aegir test -t browser","release":"aegir release","release-minor":"aegir release --type minor","release-major":"aegir release --type major","coverage":"aegir coverage","coverage-publish":"aegir coverage publish"},"pre-commit":["lint","test"],"engines":{"node":">=6.0.0","npm":">=3.0.0"},"repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p-keychain.git"},"keywords":["IPFS","libp2p","keys","encryption","secure","crypto"],"author":{"name":"Richard Schneider","email":"makaretu@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/libp2p/js-libp2p-keychain/issues"},"homepage":"https://github.com/libp2p/js-libp2p-keychain#readme","dependencies":{"async":"^2.6.0","deepmerge":"^1.5.2","interface-datastore":"~0.4.2","libp2p-crypto":"~0.12.0","pull-stream":"^3.6.1","sanitize-filename":"^1.6.1"},"devDependencies":{"aegir":"^12.4.0","chai":"^4.1.2","chai-string":"^1.4.0","datastore-fs":"~0.4.2","datastore-level":"~0.7.0","dirty-chai":"^2.0.1","level-js":"^2.2.4","mocha":"^5.0.0","peer-id":"~0.10.5","pre-commit":"^1.2.2","rimraf":"^2.6.2"},"contributors":[{"name":"David Dias","email":"daviddias.p@gmail.com"},{"name":"Maciej Krüger","email":"mkg20001@gmail.com"},{"name":"Richard Schneider","email":"makaretu@gmail.com"},{"name":"Victor Bjelkholm","email":"victorbjelkholm@gmail.com"}],"gitHead":"ee978a54ea83bdd47be9e2c7d48f0ce403cd9c61","_id":"libp2p-keychain@0.3.1","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"daviddias","email":"daviddias.p@gmail.com"},"dist":{"shasum":"de39c8f66161bc82441e6d314f334882f0e249be","size":42827,"noattachment":false,"key":"/libp2p-keychain/-/libp2p-keychain-0.3.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/libp2p-keychain/download/libp2p-keychain-0.3.1.tgz"},"maintainers":[{"name":"daviddias","email":"daviddias.p@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/libp2p-keychain-0.3.1.tgz_1517207880800_0.05622004228644073"},"directories":{},"publish_time":1517207880909,"_hasShrinkwrap":false,"deprecated":"No longer supported for js-libp2p0.28.0 or later","_cnpm_publish_time":1517207880909,"_cnpmcore_publish_time":"2021-12-16T19:10:15.325Z"},"0.3.0":{"name":"libp2p-keychain","version":"0.3.0","description":"Key management and cryptographically protected messages","main":"src/index.js","scripts":{"lint":"aegir lint","build":"aegir build","test":"aegir test -t node -t browser","test:node":"aegir test -t node","test:browser":"aegir test -t browser","release":"aegir release","release-minor":"aegir release --type minor","release-major":"aegir release --type major","coverage":"aegir coverage","coverage-publish":"aegir coverage publish"},"pre-commit":["lint","test"],"engines":{"node":">=6.0.0","npm":">=3.0.0"},"repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p-keychain.git"},"keywords":["IPFS","libp2p","keys","encryption","secure","crypto"],"author":{"name":"Richard Schneider","email":"makaretu@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/libp2p/js-libp2p-keychain/issues"},"homepage":"https://github.com/libp2p/js-libp2p-keychain#readme","dependencies":{"async":"^2.6.0","deepmerge":"^1.5.2","interface-datastore":"~0.4.2","libp2p-crypto":"~0.12.0","pull-stream":"^3.6.1","sanitize-filename":"^1.6.1"},"devDependencies":{"aegir":"^12.4.0","chai":"^4.1.2","chai-string":"^1.4.0","datastore-fs":"~0.4.2","datastore-level":"~0.7.0","dirty-chai":"^2.0.1","level-js":"^2.2.4","mocha":"^5.0.0","peer-id":"~0.10.5","pre-commit":"^1.2.2","rimraf":"^2.6.2"},"contributors":[{"name":"David Dias","email":"daviddias.p@gmail.com"},{"name":"Maciej Krüger","email":"mkg20001@gmail.com"},{"name":"Richard Schneider","email":"makaretu@gmail.com"},{"name":"Victor Bjelkholm","email":"victorbjelkholm@gmail.com"}],"gitHead":"acf48a8efe33f0bb4c7ae0f8f9a55ff2ab378168","_id":"libp2p-keychain@0.3.0","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"daviddias","email":"daviddias.p@gmail.com"},"dist":{"shasum":"189960280ae5ab514766c9e02d527a8a964f93eb","size":39061,"noattachment":false,"key":"/libp2p-keychain/-/libp2p-keychain-0.3.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/libp2p-keychain/download/libp2p-keychain-0.3.0.tgz"},"maintainers":[{"name":"daviddias","email":"daviddias.p@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/libp2p-keychain-0.3.0.tgz_1517207029825_0.5751919825561345"},"directories":{},"publish_time":1517207030007,"_hasShrinkwrap":false,"deprecated":"No longer supported for js-libp2p0.28.0 or later","_cnpm_publish_time":1517207030007,"_cnpmcore_publish_time":"2021-12-16T19:10:15.623Z"},"0.2.1":{"name":"libp2p-keychain","version":"0.2.1","description":"Key management and cryptographically protected messages","main":"src/index.js","scripts":{"lint":"aegir lint","build":"aegir build","test":"aegir test -t node -t browser","test:node":"aegir test -t node","test:browser":"aegir test -t browser","release":"aegir release","release-minor":"aegir release --type minor","release-major":"aegir release --type major","coverage":"aegir coverage","coverage-publish":"aegir coverage publish"},"pre-commit":["lint","test"],"engines":{"node":">=6.0.0","npm":">=3.0.0"},"repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p-keychain.git"},"keywords":["IPFS","libp2p","keys","encryption","secure","crypto"],"author":{"name":"Richard Schneider","email":"makaretu@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/libp2p/js-libp2p-keychain/issues"},"homepage":"https://github.com/libp2p/js-libp2p-keychain#readme","dependencies":{"async":"^2.6.0","deepmerge":"^1.5.2","interface-datastore":"~0.4.2","libp2p-crypto":"~0.11.0","pull-stream":"^3.6.1","sanitize-filename":"^1.6.1"},"devDependencies":{"aegir":"^12.3.0","chai":"^4.1.2","chai-string":"^1.4.0","datastore-fs":"~0.4.2","datastore-level":"~0.7.0","dirty-chai":"^2.0.1","level-js":"^2.2.4","mocha":"^4.0.1","peer-id":"~0.10.4","pre-commit":"^1.2.2","rimraf":"^2.6.2"},"contributors":[{"name":"David Dias","email":"daviddias.p@gmail.com"},{"name":"Maciej Krüger","email":"mkg20001@gmail.com"},{"name":"Richard Schneider","email":"makaretu@gmail.com"},{"name":"Victor Bjelkholm","email":"victorbjelkholm@gmail.com"}],"gitHead":"6a84873a0a77a84b5ad00234d0ee8f688aa598b7","_id":"libp2p-keychain@0.2.1","_npmVersion":"5.6.0","_nodeVersion":"8.8.0","_npmUser":{"name":"daviddias","email":"daviddias.p@gmail.com"},"dist":{"shasum":"0fcaad1bb392d0d6ca2986181667cb729ae23092","size":38991,"noattachment":false,"key":"/libp2p-keychain/-/libp2p-keychain-0.2.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/libp2p-keychain/download/libp2p-keychain-0.2.1.tgz"},"maintainers":[{"name":"daviddias","email":"daviddias.p@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/libp2p-keychain-0.2.1.tgz_1514451100643_0.3480114066042006"},"directories":{},"publish_time":1514451100807,"_hasShrinkwrap":false,"deprecated":"No longer supported for js-libp2p0.28.0 or later","_cnpm_publish_time":1514451100807,"_cnpmcore_publish_time":"2021-12-16T19:10:15.940Z"},"0.2.0":{"name":"libp2p-keychain","version":"0.2.0","description":"Key management and cryptographically protected messages","main":"src/index.js","scripts":{"lint":"aegir lint","build":"aegir build","test":"aegir test -t node -t browser","test:node":"aegir test -t node","test:browser":"aegir test -t browser","release":"aegir release","release-minor":"aegir release --type minor","release-major":"aegir release --type major","coverage":"aegir coverage","coverage-publish":"aegir coverage publish"},"pre-commit":["lint","test"],"engines":{"node":">=6.0.0","npm":">=3.0.0"},"repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p-keychain.git"},"keywords":["IPFS","libp2p","keys","encryption","secure","crypto"],"author":{"name":"Richard Schneider","email":"makaretu@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/libp2p/js-libp2p-keychain/issues"},"homepage":"https://github.com/libp2p/js-libp2p-keychain#readme","dependencies":{"async":"^2.6.0","deepmerge":"^1.5.2","interface-datastore":"~0.4.2","libp2p-crypto":"~0.11.0","pull-stream":"^3.6.1","sanitize-filename":"^1.6.1"},"devDependencies":{"aegir":"^12.3.0","chai":"^4.1.2","chai-string":"^1.4.0","datastore-fs":"~0.4.2","datastore-level":"~0.7.0","dirty-chai":"^2.0.1","level-js":"^2.2.4","mocha":"^4.0.1","peer-id":"~0.10.4","pre-commit":"^1.2.2","rimraf":"^2.6.2"},"contributors":[{"name":"David Dias","email":"daviddias.p@gmail.com"},{"name":"Maciej Krüger","email":"mkg20001@gmail.com"},{"name":"Richard Schneider","email":"makaretu@gmail.com"},{"name":"Victor Bjelkholm","email":"victorbjelkholm@gmail.com"}],"gitHead":"de15d129ddd5d7e2720ebbd070e6719d318ad304","_id":"libp2p-keychain@0.2.0","_npmVersion":"5.6.0","_nodeVersion":"8.8.0","_npmUser":{"name":"daviddias","email":"daviddias.p@gmail.com"},"dist":{"shasum":"75fef046608335ca818b521968f5e04bbcbd0245","size":38734,"noattachment":false,"key":"/libp2p-keychain/-/libp2p-keychain-0.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/libp2p-keychain/download/libp2p-keychain-0.2.0.tgz"},"maintainers":[{"name":"daviddias","email":"daviddias.p@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/libp2p-keychain-0.2.0.tgz_1513777947785_0.25840799091383815"},"directories":{},"publish_time":1513777948756,"_hasShrinkwrap":false,"deprecated":"No longer supported for js-libp2p0.28.0 or later","_cnpm_publish_time":1513777948756,"_cnpmcore_publish_time":"2021-12-16T19:10:16.206Z"}},"readme":"# js-libp2p-keychain\n\n[![](https://img.shields.io/badge/made%20by-Protocol%20Labs-blue.svg?style=flat-square)](http://protocol.ai)\n[![](https://img.shields.io/badge/project-libp2p-yellow.svg?style=flat-square)](http://libp2p.io/)\n[![](https://img.shields.io/badge/freenode-%23libp2p-yellow.svg?style=flat-square)](http://webchat.freenode.net/?channels=%23libp2p)\n[![Discourse posts](https://img.shields.io/discourse/https/discuss.libp2p.io/posts.svg)](https://discuss.libp2p.io)\n[![](https://img.shields.io/codecov/c/github/libp2p/js-libp2p-keychain.svg?style=flat-square)](https://codecov.io/gh/libp2p/js-libp2p-keychain)\n[![](https://img.shields.io/travis/libp2p/js-libp2p-keychain.svg?style=flat-square)](https://travis-ci.com/libp2p/js-libp2p-keychain)\n[![Dependency Status](https://david-dm.org/libp2p/js-libp2p-keychain.svg?style=flat-square)](https://david-dm.org/libp2p/js-libp2p-keychain)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square)](https://github.com/feross/standard)\n\n> A secure key chain for libp2p in JavaScript\n\n## Lead Maintainer\n\n[Vasco Santos](https://github.com/vasco-santos).\n\n## Features\n\n- Manages the lifecycle of a key\n- Keys are encrypted at rest\n- Enforces the use of safe key names\n- Uses encrypted PKCS 8 for key storage\n- Uses PBKDF2 for a \"stetched\" key encryption key\n- Enforces NIST SP 800-131A and NIST SP 800-132\n- Uses PKCS 7: CMS (aka RFC 5652) to provide cryptographically protected messages\n- Delays reporting errors to slow down brute force attacks\n\n## Table of Contents\n\n## Install\n\n```sh\nnpm install --save libp2p-keychain\n```\n\n### Usage\n\n```js\nconst Keychain = require('libp2p-keychain')\nconst FsStore = require('datastore-fs')\n\nconst datastore = new FsStore('./a-keystore')\nconst opts = {\n  passPhrase: 'some long easily remembered phrase'\n}\nconst keychain = new Keychain(datastore, opts)\n```\n\n## API\n\nManaging a key\n\n- `async createKey (name, type, size)`\n- `async renameKey (oldName, newName)`\n- `async removeKey (name)`\n- `async exportKey (name, password)`\n- `async importKey (name, pem, password)`\n- `async importPeer (name, peer)`\n\nA naming service for a key\n\n- `async listKeys ()`\n- `async findKeyById (id)`\n- `async findKeyByName (name)`\n\nCryptographically protected messages\n\n- `async cms.encrypt (name, plain)`\n- `async cms.decrypt (cmsData)`\n\n### KeyInfo\n\nThe key management and naming service API all return a `KeyInfo` object.  The `id` is a universally unique identifier for the key.  The `name` is local to the key chain.\n\n```js\n{\n  name: 'rsa-key',\n  id: 'QmYWYSUZ4PV6MRFYpdtEDJBiGs4UrmE6g8wmAWSePekXVW'\n}\n```\n\nThe **key id** is the SHA-256 [multihash](https://github.com/multiformats/multihash) of its public key. The *public key* is a [protobuf encoding](https://github.com/libp2p/js-libp2p-crypto/blob/master/src/keys/keys.proto.js) containing a type and the [DER encoding](https://en.wikipedia.org/wiki/X.690) of the PKCS [SubjectPublicKeyInfo](https://www.ietf.org/rfc/rfc3279.txt).\n\n### Private key storage\n\nA private key is stored as an encrypted PKCS 8 structure in the PEM format. It is protected by a key generated from the key chain's *passPhrase* using **PBKDF2**.\n\nThe default options for generating the derived encryption key are in the `dek` object.  This, along with the passPhrase, is the input to a `PBKDF2` function.\n\n```js\nconst defaultOptions = {\n  //See https://cryptosense.com/parameter-choice-for-pbkdf2/\n  dek: {\n    keyLength: 512 / 8,\n    iterationCount: 1000,\n    salt: 'at least 16 characters long',\n    hash: 'sha2-512'\n  }\n}\n```\n\n![key storage](./doc/private-key.png?raw=true)\n\n### Physical storage\n\nThe actual physical storage of an encrypted key is left to implementations of [interface-datastore](https://github.com/ipfs/interface-datastore/).  A key benifit is that now the key chain can be used in browser with the [js-datastore-level](https://github.com/ipfs/js-datastore-level) implementation.\n\n### Cryptographic Message Syntax (CMS)\n\nCMS, aka [PKCS #7](https://en.wikipedia.org/wiki/PKCS) and [RFC 5652](https://tools.ietf.org/html/rfc5652), describes an encapsulation syntax for data protection. It is used to digitally sign, digest, authenticate, or encrypt arbitrary message content. Basically, `cms.encrypt` creates a DER message that can be only be read by someone holding the private key.\n\n## Contribute\n\nFeel free to join in. All welcome. Open an [issue](https://github.com/libp2p/js-libp2p-keychain/issues)!\n\nThis repository falls under the IPFS [Code of Conduct](https://github.com/ipfs/community/blob/master/code-of-conduct.md).\n\n[![](https://cdn.rawgit.com/jbenet/contribute-ipfs-gif/master/img/contribute.gif)](https://github.com/ipfs/community/blob/master/CONTRIBUTING.md)\n\n## License\n\n[MIT](LICENSE)\n","_attachments":{},"homepage":"https://github.com/libp2p/js-libp2p-keychain#readme","bugs":{"url":"https://github.com/libp2p/js-libp2p-keychain/issues"},"license":"MIT"}