{"_id":"@particle/device-control-crypto","_rev":"43-01cfb9b9352538cb72343b05cefb1ff3","name":"@particle/device-control-crypto","dist-tags":{"latest":"1.1.5"},"versions":{"1.1.0":{"name":"@particle/device-control-crypto","version":"1.1.0","author":{"name":"Particle Industries, Inc."},"license":"UNLICENSED","_id":"@particle/device-control-crypto@1.1.0","maintainers":[{"name":"guohui","email":"guohui@particle.io"},{"name":"sbrust","email":"scott.brust@particle.io"},{"name":"busticated","email":"itsbusticated@gmail.com"},{"name":"particlebot","email":"engineering+npm@particle.io"},{"name":"no1089","email":"chris.fourie@particle.io"},{"name":"carlos.hdez","email":"Carlos.Hernandez@particle.io"},{"name":"keeramis5","email":"keerthy@particle.io"},{"name":"monkbroc","email":"jvanier@gmail.com"},{"name":"suda","email":"admin@suda.pl"},{"name":"jgoggins","email":"joe@particle.io"},{"name":"elijthomas","email":"eli@particle.io"},{"name":"jhagerman","email":"jhagerman@particle.io"},{"name":"mstan","email":"npm@1379.tech"},{"name":"sergeuz","email":"sergeuz@gmail.com"},{"name":"cullenshane","email":"murphy.cullen7@gmail.com"},{"name":"debbie23","email":"debbie@particle.io"},{"name":"jtzemp-particle","email":"jt@particle.io"},{"name":"avtolstoy","email":"avtolstoy@gmail.com"},{"name":"mlauer","email":"matt.lauer@particle.io"},{"name":"wraithan","email":"xwraithanx@gmail.com"},{"name":"toolboxbot","email":"wojtek+toolbox@particle.io"},{"name":"azenk","email":"andrew.zenk@particle.io"},{"name":"shewy","email":"mike.sheward@particle.io"},{"name":"bwalach","email":"brett@particle.io"},{"name":"kisha","email":"kisha@culturepurveyor.io"},{"name":"parteberseth","email":"eric.berseth@particle.io"},{"name":"rickkas7","email":"rickkas7@rickk.com"},{"name":"mrlambchop_particle","email":"nick@particle.io"},{"name":"jaime171","email":"jaimesalvador.simental@gmail.com"},{"name":"hugo.montero","email":"hugo.montero@outlook.com"},{"name":"toddparticle","email":"todd.stellanova@particle.io"},{"name":"renemendoza","email":"rene.mendoza@particle.io"},{"name":"ianrgz","email":"ian.rodriguez@particle.io"},{"name":"mphsi","email":"mpaul.hernandez@gmail.com"},{"name":"deleonnmdn","email":"joel.dl08@gmail.com"}],"dist":{"shasum":"7301e04ca9db7812918487224675093080841e71","tarball":"https://registry.npmjs.org/@particle/device-control-crypto/-/device-control-crypto-1.1.0.tgz","fileCount":10,"integrity":"sha512-jvSd/wyaUS347UETtTHlnGQuAHwL7z/v/auJeCCgvLBR3R9uv+dlTHeRZKU2vl8PenutwjJYnV0+SI2sDY/5+A==","signatures":[{"sig":"MEUCIQDkAaxJTHdj2AfZpogDorsYRGEkum3C1L5wavO3S/mHXQIgeL/PR9daWy875kpNcKRUgBcgBB8+7nRD2mx0r04ZsfI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":55364,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiBCKiCRA9TVsSAnZWagAAHREP/AwQDmiSkYazXCsFeJqH\nJj7YH+XgIG0ZEUPA5pvsvpt8+KjiA5aAcvLKKH/joJnb0UjoZx6y1N2K+IXc\n2wEr8pDTm945cb4CWGmClDdDfZXPDRELhUKbfOgXm6IemVOHE2vk0sslq8ED\nSkzDwoJrdpgxRfFAOOE6I8bxc2S9ZC3h7BWAPZCS+V2l+po2pUtxJ1AEVUwX\n9jX25Jh/Ml2kt0jDCVu5JVKoHVtgPjjh6ECA6TTLpjBiIaIcaIreDXQB+7h1\n6PXLMY2dsLejmmOJ6Fmdkf614h1rdg9xnqJOgIJVOHHGnErZpxdPvqFdDWf7\n2V/MIDg56MWgfxaFX0sjOmnwGlvqh4lz0HuqeaJsHyVsQaXEPuU4AHHGCL5d\naSE+p/PJS5kMsaJipAOleO1K4CS2nnge7dkR2q1zEFAg6CfTP2WqNTFAw+gm\nrrt0T9ZNaxUgE67MgWXml5k7lkhZSmFPutqHwLTeVmm58bj717rukIX6P6XS\nD6LULA5Ze0EZKxjsh7mfu35o/21O1JecDlfFPyVyxqJIPvPKvi4c9KU7w+Zr\n0ZIgbLy0WIkQirH8a8PqEbXlz2xOQnW6C1lrxjVBJrHFNVviSzOrLkXkD6S0\nYgQdb8PHSZ6rFhH/wFDXV14A/T5vlMc22ctd4gSEC3uKPOQ2KZwnchvKxEsE\ntRVb\r\n=tEIJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"c527539f987401083fb3fcdb237ca3560326827a","scripts":{"docs":"npm run docs:jsdoc2md > doc/api.md","lint":"eslint .","test":"npm run lint -- --quiet && npm run test:unit -- --forbid-only && npm run docs:jsdoc2md > /dev/null","version":"npm run docs && git add doc","lint:fix":"npm run lint -- --fix","test:unit":"mocha","docs:jsdoc2md":"jsdoc2md --files='lib/**/*.js' --no-cache --module-index-format=none --global-index-format=none"},"_npmUser":{"name":"particlebot","email":"engineering+npm@particle.io"},"_npmVersion":"lerna/4.0.0/node@v12.22.10+x64 (linux)","description":"Elliptic Curve J-PAKE and AES CCM for Node.js and browsers","directories":{},"_nodeVersion":"12.22.10","dependencies":{"bn.js":"^5.2.0","elliptic":"^6.5.4","@particle/device-control-util":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.6","mocha":"^9.2.0","sinon":"^13.0.1","eslint":"^8.8.0","chai-bytes":"^0.1.2","chai-as-promised":"^7.1.1","jsdoc-to-markdown":"^7.1.1"},"_npmOperationalInternal":{"tmp":"tmp/device-control-crypto_1.1.0_1644438178025_0.8685943266160223","host":"s3://npm-registry-packages"}},"1.1.1":{"name":"@particle/device-control-crypto","version":"1.1.1","author":{"name":"Particle Industries, Inc."},"license":"UNLICENSED","_id":"@particle/device-control-crypto@1.1.1","maintainers":[{"name":"guohui","email":"guohui@particle.io"},{"name":"sbrust","email":"scott.brust@particle.io"},{"name":"busticated","email":"itsbusticated@gmail.com"},{"name":"particlebot","email":"engineering+npm@particle.io"},{"name":"no1089","email":"chris.fourie@particle.io"},{"name":"carlos.hdez","email":"Carlos.Hernandez@particle.io"},{"name":"keeramis5","email":"keerthy@particle.io"},{"name":"monkbroc","email":"jvanier@gmail.com"},{"name":"suda","email":"admin@suda.pl"},{"name":"jgoggins","email":"joe@particle.io"},{"name":"elijthomas","email":"eli@particle.io"},{"name":"jhagerman","email":"jhagerman@particle.io"},{"name":"mstan","email":"npm@1379.tech"},{"name":"sergeuz","email":"sergeuz@gmail.com"},{"name":"cullenshane","email":"murphy.cullen7@gmail.com"},{"name":"debbie23","email":"debbie@particle.io"},{"name":"jtzemp-particle","email":"jt@particle.io"},{"name":"avtolstoy","email":"avtolstoy@gmail.com"},{"name":"mlauer","email":"matt.lauer@particle.io"},{"name":"wraithan","email":"xwraithanx@gmail.com"},{"name":"toolboxbot","email":"wojtek+toolbox@particle.io"},{"name":"azenk","email":"andrew.zenk@particle.io"},{"name":"shewy","email":"mike.sheward@particle.io"},{"name":"bwalach","email":"brett@particle.io"},{"name":"kisha","email":"kisha@culturepurveyor.io"},{"name":"parteberseth","email":"eric.berseth@particle.io"},{"name":"rickkas7","email":"rickkas7@rickk.com"},{"name":"mrlambchop_particle","email":"nick@particle.io"},{"name":"jaime171","email":"jaimesalvador.simental@gmail.com"},{"name":"hugo.montero","email":"hugo.montero@outlook.com"},{"name":"toddparticle","email":"todd.stellanova@particle.io"},{"name":"renemendoza","email":"rene.mendoza@particle.io"},{"name":"ianrgz","email":"ian.rodriguez@particle.io"},{"name":"mphsi","email":"mpaul.hernandez@gmail.com"},{"name":"deleonnmdn","email":"joel.dl08@gmail.com"}],"nyc":{"exclude":["**/__fixtures__/**","**/*.test.js"],"include":["src/**/*.js"]},"dist":{"shasum":"e2e22d916504e07ce0fdbee00ac61edb32cb7c49","tarball":"https://registry.npmjs.org/@particle/device-control-crypto/-/device-control-crypto-1.1.1.tgz","fileCount":8,"integrity":"sha512-fQfI1gi7RPAk46tjO0Tjgp5BkWA5C0AP4afgtgFORPgnPzBFN4orHJMBfgqGXO6R31NxTb9C61MmJl5191RXAA==","signatures":[{"sig":"MEUCIC77eJ5yvc2HmprWQYv5XyE7HE+9Lp31h8sqLQAoYHW/AiEAwhwKdfOeFGcyRoW3a0YVc88baLwbLXgD5R+1SVNlL2Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":29629,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiDpYkACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq69BAAm101MXyLG1+2K6huWs7zS09j5CFBCIAoAeFctyLT22ZszFkz\r\n2PaBeTEngs4Ps7tTK3wtxZ02s6Mp9EwMlPkFF4ctxm8eUgAJ2OGf6QLtfjSN\r\n5dJi+98E6KO/P1Apb1pfRpJFCNROO71qicSFIYVH6KeR7giR7C7DszAoCeQ4\r\nRgWFdR3Nk36qMKJ/sDGBHbxzMlN6AZgMU1S1H3xsEL0kQQD0uN4n34PCrIjF\r\nyV2TTK0hVIiNqoc8Fy6q7TO6v7tF+oVKVb1ckemGKhY0/WPnA/3lmkHK/8o4\r\nNlpxpARcND3bGWmhlt0THHiFFo9GglFgtYcPcVQKzMpl17E3yeOvQqewH5tt\r\nG3zxi4TdyCjtV2mcH4SpaDusEwzB8fYgd4ahkwT2vKG4N0gy69qGOUYPCHpG\r\npe3FfWAE0HeHDq542xtIVDroU4KIiK4mRP504rAebsUsO9n/+aIkeCxLIzUW\r\nC3MwxK/qsbJODuaAtUCmIVAXPQ44FrFKTbxkx0DHBJ4QjoymhSiPoX2Kky05\r\nnFQMpFZ0ap/6lurt0Vp83QF6SXchsxW10A9wcj6HLAmj/GUbvciskX5ir+2T\r\n0EGCHDZWkDUx4iR8H17N0lvSNXnrA9tc6xil+XmbYfFbEzJZsIT+wiV8tSgr\r\nRLopBln0gC3AJfokbxxPGbNw7q3FM++FHN4=\r\n=vvHm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./src/index.js","engines":{"npm":"6.x","node":">=12"},"gitHead":"8a70598498096c4ee61971de7bec030863e52da0","scripts":{"test":"npm run test:unit","clean":"npm run clean:modules","test:ci":"npm run test:unit -- --forbid-only && npm run coverage","version":"npm run changelog:update","coverage":"nyc --reporter=text --temp-dir=./tmp/ --check-coverage --lines 91 --all npm run test:unit:silent","test:unit":"mocha './src/**/*.test.js' --color","docs:build":"node ../../bin/build-docs.js device-control-crypto","clean:modules":"rm -rf ./node_modules","test:unit:watch":"npm run test:unit -- --watch","changelog:update":"node ../../bin/update-changelog.js device-control-crypto","test:unit:silent":"npm run test:unit > tmp/test-unit-log.txt 2>&1","test:unit:inspect":"npm run test:unit -- --inspect-brk"},"_npmUser":{"name":"particlebot","email":"engineering+npm@particle.io"},"_npmVersion":"lerna/3.22.1/node@v12.22.10+x64 (linux)","description":"Elliptic Curve J-PAKE and AES CCM for Node.js and browsers","directories":{},"_nodeVersion":"12.22.10","dependencies":{"bn.js":"^5.2.0","elliptic":"^6.5.4","@particle/device-control-util":"^1.1.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/device-control-crypto_1.1.1_1645123108579_0.807237966864585","host":"s3://npm-registry-packages"}},"1.1.2":{"name":"@particle/device-control-crypto","version":"1.1.2","author":{"name":"Particle Industries, Inc."},"license":"UNLICENSED","_id":"@particle/device-control-crypto@1.1.2","maintainers":[{"name":"cole-abbeduto-particle","email":"cole.abbeduto@particle.io"},{"name":"pedrosordo","email":"pedro.sordo@particle.io"},{"name":"rowan.hamilton","email":"rowan.hamilton@particle.io"},{"name":"edablan","email":"ed@particle.io"},{"name":"edgravillparticle","email":"eduardo.grajales@particle.io"},{"name":"guohui","email":"guohui@particle.io"},{"name":"sbrust","email":"scott.brust@particle.io"},{"name":"busticated","email":"itsbusticated@gmail.com"},{"name":"particlebot","email":"engineering+npm@particle.io"},{"name":"no1089","email":"chris.fourie@particle.io"},{"name":"carlos.hdez","email":"Carlos.Hernandez@particle.io"},{"name":"keeramis5","email":"keerthy@particle.io"},{"name":"monkbroc","email":"jvanier@gmail.com"},{"name":"suda","email":"admin@suda.pl"},{"name":"jgoggins","email":"joe@particle.io"},{"name":"elijthomas","email":"eli@particle.io"},{"name":"jhagerman","email":"jhagerman@particle.io"},{"name":"mstan","email":"npm@1379.tech"},{"name":"sergeuz","email":"sergeuz@gmail.com"},{"name":"cullenshane","email":"murphy.cullen7@gmail.com"},{"name":"debbie23","email":"debbie@particle.io"},{"name":"jtzemp-particle","email":"jt@particle.io"},{"name":"avtolstoy","email":"avtolstoy@gmail.com"},{"name":"mlauer","email":"matt.lauer@particle.io"},{"name":"wraithan","email":"xwraithanx@gmail.com"},{"name":"toolboxbot","email":"wojtek+toolbox@particle.io"},{"name":"azenk","email":"andrew.zenk@particle.io"},{"name":"shewy","email":"mike.sheward@particle.io"},{"name":"bwalach","email":"brett@particle.io"},{"name":"kisha","email":"kisha@culturepurveyor.io"},{"name":"parteberseth","email":"eric.berseth@particle.io"},{"name":"rickkas7","email":"rickkas7@rickk.com"},{"name":"mrlambchop_particle","email":"nick@particle.io"},{"name":"hugo.montero","email":"hugo.montero@outlook.com"},{"name":"toddparticle","email":"todd.stellanova@particle.io"},{"name":"mphsi","email":"mpaul.hernandez@gmail.com"},{"name":"deleonnmdn","email":"joel.dl08@gmail.com"}],"nyc":{"exclude":["**/__fixtures__/**","**/*.test.js"],"include":["src/**/*.js"]},"dist":{"shasum":"504ab248f54ad2e6c191eaf217f436ef508b1515","tarball":"https://registry.npmjs.org/@particle/device-control-crypto/-/device-control-crypto-1.1.2.tgz","fileCount":8,"integrity":"sha512-CaDGwc1SY9OS5rQnYsCwNEDaH3JO+WdhLXtSN6VuGv+PTHUG7YIgRmHyrmGUUaXwJO0DJjoqoGmt01+sjEIQ9w==","signatures":[{"sig":"MEQCICCILw0qtQVN4NicH9vbgF2z3CvXCZOR0tF3TvanNCOqAiBKOvNYm0IlFDfhd2V+RYe7kTXIiTTptdcSJQz5+m8mew==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":29658,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJioMDPACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrMfA/+LkBfSsG3CR8KphxAU1sAqsIZ3NgBkg6nZtR9LgfYAWueGhBc\r\n3//oYt45NWBAIuICHYB8qMMEfX9wBx+UMQFRv//s0BrNX9WUylrojiwnqnn1\r\nhYmi+weV8zY1bBuRIH8iYo/RekjpVd2pbllVTq8BdOoIZM5UZfPRuLqN7Bs0\r\nec1m99wfTq4Txl4VZ9fRq/4Zskw7nQT1A1U2Lr2QKLjuwXaBzrOf4eJD74R5\r\nT626m+f4lpB51LxTeVUcuFp0SsWmZdAP26u2ueDuoA3zl4jJiyxJUFOfo7Ey\r\nqg6NvnqZW/BvtirMJHLTciIl1DC1nUJZjqZJ75teQ2drQvmH/0ydJAdYoEF0\r\nT4aIsd5GQDorkBRRgODetQsuJEZmRs+PfwJPriUE4mjaFVAKp0IDM+Ghwdvu\r\n4TZlz6wO0HKtVEtOX0houuEVqgh8yuRMM0dm/aBqxWmFYmL4N0hx1AKOKCa3\r\nPXf+XtH8is7nlADKvB0FZ0fmlV4bggZIxy8G0N7DrblxB36GJhfn0/mIaLjs\r\nF+ua0jj44QW0JtJK/r33hM4HFKvSJjpB7hjkP13It1l3IpgutUORH3LCsNoB\r\nOxp1yLTviWVpdsEBhZkxy88Gt9l9qQjEyMqhyJp6Ea6RsatWZCinsIUO8db+\r\nV5DM4NTkKsr/IQQAKzRMpdM40x+KgX8thIQ=\r\n=Fw7M\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./src/index.js","engines":{"npm":"6.x","node":">=12"},"gitHead":"7098125cf72de615813accf84f753b340c19b694","scripts":{"test":"npm run test:unit","clean":"npm run clean:modules","test:ci":"npm run test:unit -- --forbid-only && npm run coverage","version":"npm run changelog:update","coverage":"nyc --reporter=text --temp-dir=./tmp/ --check-coverage --lines 91 --all npm run test:unit:silent","test:unit":"mocha './src/**/*.test.js' --color","docs:build":"node ../../bin/build-docs.js device-control-crypto","clean:modules":"rm -rf ./node_modules","test:unit:watch":"npm run test:unit -- --watch","changelog:update":"node ../../bin/update-changelog.js device-control-crypto","test:unit:silent":"npm run test:unit > tmp/test-unit-log.txt 2>&1","test:unit:inspect":"npm run test:unit -- --inspect-brk"},"_npmUser":{"name":"particlebot","email":"engineering+npm@particle.io"},"_npmVersion":"lerna/3.22.1/node@v12.22.12+x64 (linux)","description":"Elliptic Curve J-PAKE and AES CCM for Node.js and browsers","directories":{},"_nodeVersion":"12.22.12","dependencies":{"bn.js":"^5.2.0","elliptic":"^6.5.4","@particle/device-control-util":"^1.1.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/device-control-crypto_1.1.2_1654702286961_0.725418325503034","host":"s3://npm-registry-packages"}},"1.1.3":{"name":"@particle/device-control-crypto","version":"1.1.3","author":{"name":"Particle Industries, Inc."},"license":"UNLICENSED","_id":"@particle/device-control-crypto@1.1.3","maintainers":[{"name":"amaury.particle","email":"amaury.aparicio@particle.io"},{"name":"cole-abbeduto-particle","email":"cole.abbeduto@particle.io"},{"name":"pedrosordo","email":"pedro.sordo@particle.io"},{"name":"rowan.hamilton","email":"rowan.hamilton@particle.io"},{"name":"guohui","email":"guohui@particle.io"},{"name":"sbrust","email":"scott.brust@particle.io"},{"name":"busticated","email":"itsbusticated@gmail.com"},{"name":"particlebot","email":"engineering+npm@particle.io"},{"name":"no1089","email":"chris.fourie@particle.io"},{"name":"carlos.hdez","email":"Carlos.Hernandez@particle.io"},{"name":"keeramis5","email":"keerthy@particle.io"},{"name":"monkbroc","email":"jvanier@gmail.com"},{"name":"suda","email":"admin@suda.pl"},{"name":"mstan","email":"npm@1379.tech"},{"name":"sergeuz","email":"sergeuz@gmail.com"},{"name":"debbie23","email":"debbie@particle.io"},{"name":"avtolstoy","email":"avtolstoy@gmail.com"},{"name":"mlauer","email":"matt.lauer@particle.io"},{"name":"wraithan","email":"xwraithanx@gmail.com"},{"name":"toolboxbot","email":"wojtek+toolbox@particle.io"},{"name":"azenk","email":"andrew.zenk@particle.io"},{"name":"shewy","email":"mike.sheward@particle.io"},{"name":"bwalach","email":"brett@particle.io"},{"name":"parteberseth","email":"eric.berseth@particle.io"},{"name":"rickkas7","email":"rickkas7@rickk.com"},{"name":"mrlambchop_particle","email":"nick@particle.io"},{"name":"hugo.montero","email":"hugo.montero@outlook.com"},{"name":"toddparticle","email":"todd.stellanova@particle.io"},{"name":"mphsi","email":"mpaul.hernandez@gmail.com"}],"nyc":{"exclude":["**/__fixtures__/**","**/*.test.js"],"include":["src/**/*.js"]},"dist":{"shasum":"86d5e0a39d4549de335151d524bcc760ad16d7a1","tarball":"https://registry.npmjs.org/@particle/device-control-crypto/-/device-control-crypto-1.1.3.tgz","fileCount":8,"integrity":"sha512-sdATyInb4BtpD9q1ri8S4vMuwQlymIvlS3RRZfy1g9Ef6z83hZcOu7NaxaeFCfWU837clkuxfvjsog+xE1SVCQ==","signatures":[{"sig":"MEQCICfBhWc601ezORE5VKg4iKz+Xgt6YBruIrMIyV40mQoHAiACQL9MByKPveO5BW20ZDUcdhPdzK+vvf0+/kGq8LPkgg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":29762,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi8p7hACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpIpQ/9Fab+8g1j+Ax84h7vLb3HwEWDjs+kAS07G9pEKHJw43x72avB\r\ny1ufHaKjzumwRAKRhffcPsX75M/gfJLfV4D9ZAC7EepXU28i8kUM+tbiU2ZI\r\nLwlsR57X5Mc8kJx0zawyPhlBo2Lrk0Y/MhS7X3Ap3lnOob854ZRReiPzrMGi\r\nMwpDN66TVSdNt49JDOhN1T/mSn55lOMc4EDubhG1dDpSKlxfESbZvdJzzuDK\r\n//yL10jBGuFR7VNdAArarc9yV378fpgE+hueViAr7dxpgkbG2RK44ErCBC7K\r\n/nYNj7GXaGcAQcBtOTxat/OwvKoo44CN1VjyN5KxwVwmWlfUs3DCr5iz8bdv\r\n1GK3wAySkXY7ILcaVaOZm92b1cEeD1KYC0/xQGJ5WvREYXzWhswln+l98ijA\r\ngGzFaA0lYb+I7epzYeJ357rseV9SAaCyJC4AVjsvGnvG1u5AYRs2/TZEDLmE\r\nKP9yWgkye1gYMpWJRsZvXvyjf+ZwzlAw1lscx7pVfzU/JlWOFXyIIcVLfN2I\r\nowfeJGjIlHsS8q8umeTAIxsE/Cj5Ih2aRvW3H7aXZFkjjOiigDIGhhlWXC9F\r\ndQSzxpCMUxtTUmibs1+OUwb6Zt3so7Xx5HDZk2NMh5u5mNIgGNHmhEboKTfs\r\n+PHvQFutPUBCntkFV8ZWUVJcuWsygOzEKzs=\r\n=g1q6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./src/index.js","engines":{"npm":"8.x","node":">=12"},"gitHead":"fe74d30adf5da8e83bc9c39da3be894a55ee6e56","scripts":{"test":"npm run test:unit","clean":"npm run clean:modules","test:ci":"npm run test:unit -- --forbid-only && npm run coverage","version":"npm run changelog:update","coverage":"nyc --reporter=text --temp-dir=./tmp/ --check-coverage --lines 91 --all npm run test:unit:silent","test:unit":"mocha './src/**/*.test.js' --color","docs:build":"node ../../bin/build-docs.js device-control-crypto","clean:modules":"rm -rf ./node_modules","test:unit:watch":"npm run test:unit -- --watch","changelog:update":"node ../../bin/update-changelog.js device-control-crypto","test:unit:silent":"npm run test:unit > tmp/test-unit-log.txt 2>&1","test:unit:inspect":"npm run test:unit -- --inspect-brk"},"_npmUser":{"name":"particlebot","email":"engineering+npm@particle.io"},"_npmVersion":"lerna/5.3.0/node@v16.16.0+x64 (linux)","description":"Elliptic Curve J-PAKE and AES CCM for Node.js and browsers","directories":{},"_nodeVersion":"16.16.0","dependencies":{"bn.js":"^5.2.0","elliptic":"^6.5.4","@particle/device-control-util":"^1.1.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/device-control-crypto_1.1.3_1660067552786_0.46560385731619935","host":"s3://npm-registry-packages"}},"1.1.4":{"name":"@particle/device-control-crypto","version":"1.1.4","author":{"name":"Particle Industries, Inc."},"license":"UNLICENSED","_id":"@particle/device-control-crypto@1.1.4","maintainers":[{"name":"particlebot","email":"engineering+npm@particle.io"},{"name":"no1089","email":"chris.fourie@particle.io"},{"name":"carlos.hdez","email":"Carlos.Hernandez@particle.io"},{"name":"guohui","email":"guohui@particle.io"},{"name":"keeramis5","email":"keerthy@particle.io"},{"name":"monkbroc","email":"jvanier@gmail.com"},{"name":"mstan","email":"npm@1379.tech"},{"name":"sergeuz","email":"sergeuz@gmail.com"},{"name":"avtolstoy","email":"avtolstoy@gmail.com"},{"name":"mlauer","email":"matt.lauer@particle.io"},{"name":"wraithan","email":"xwraithanx@gmail.com"},{"name":"azenk","email":"andrew.zenk@particle.io"},{"name":"bwalach","email":"brett@particle.io"},{"name":"rickkas7","email":"rickkas7@rickk.com"},{"name":"mrlambchop_particle","email":"nick@particle.io"},{"name":"hugo.montero","email":"hugo.montero@outlook.com"},{"name":"mphsi","email":"mpaul.hernandez@gmail.com"},{"name":"pedrosordo","email":"pedro.sordo@particle.io"},{"name":"cole-abbeduto-particle","email":"cole.abbeduto@particle.io"},{"name":"sbrust","email":"scott.brust@particle.io"},{"name":"eugene_particle","email":"eugene@particle.io"},{"name":"mohitparticle","email":"mohit@particle.io"},{"name":"karlag","email":"karla.garcia@particle.io"}],"nyc":{"exclude":["**/__fixtures__/**","**/*.test.js"],"include":["src/**/*.js"]},"dist":{"shasum":"391c3e03143d4e3c4933724fc92fd7fdf33ca4a4","tarball":"https://registry.npmjs.org/@particle/device-control-crypto/-/device-control-crypto-1.1.4.tgz","fileCount":8,"integrity":"sha512-1uvAFYFb9oF2CMxkWkAI3ghCD4TmV+OCvHAhbJaiF9o6VB997eV8/yogOTy6FGulVBY3h91jdvGl7Wi9u36mxw==","signatures":[{"sig":"MEYCIQC+mn0vXI3WGUQCDNCbmrcsVOwfb/9zO9RsvyuOzNdK2gIhAPWwCOwGRRrGIQXj/rMrJAcoS82zByrrnLAdKyHe/PuV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29799},"main":"./src/index.js","engines":{"npm":"8.x","node":">=12"},"gitHead":"5e775c1be2e1c343ea665b7a38b15ebd89041d1f","scripts":{"test":"npm run test:unit","clean":"npm run clean:modules","test:ci":"npm run test:unit -- --forbid-only && npm run coverage","version":"npm run changelog:update","coverage":"nyc --reporter=text --temp-dir=./tmp/ --check-coverage --lines 91 --all npm run test:unit:silent","test:unit":"mocha './src/**/*.test.js' --color","docs:build":"node ../../bin/build-docs.js device-control-crypto","clean:modules":"rm -rf ./node_modules","test:unit:watch":"npm run test:unit -- --watch","changelog:update":"node ../../bin/update-changelog.js device-control-crypto","test:unit:silent":"npm run test:unit > tmp/test-unit-log.txt 2>&1","test:unit:inspect":"npm run test:unit -- --inspect-brk"},"_npmUser":{"name":"particlebot","email":"engineering+npm@particle.io"},"_npmVersion":"lerna/5.3.0/node@v16.20.2+x64 (linux)","description":"Elliptic Curve J-PAKE and AES CCM for Node.js and browsers","directories":{},"_nodeVersion":"16.20.2","dependencies":{"bn.js":"^5.2.0","elliptic":"^6.6.1","@particle/device-control-util":"^1.1.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/device-control-crypto_1.1.4_1757444937338_0.6495965145784863","host":"s3://npm-registry-packages-npm-production"}},"1.1.5":{"name":"@particle/device-control-crypto","description":"Elliptic Curve J-PAKE and AES CCM for Node.js and browsers","version":"1.1.5","author":{"name":"Particle Industries, Inc."},"license":"Apache-2.0","main":"./src/index.js","publishConfig":{"access":"public"},"scripts":{"version":"npm run changelog:update","clean":"npm run clean:modules","clean:modules":"rm -rf ./node_modules","test":"npm run test:unit","test:ci":"npm run test:unit -- --forbid-only && npm run coverage","test:unit":"mocha './src/**/*.test.js' --color","test:unit:watch":"npm run test:unit -- --watch","test:unit:inspect":"npm run test:unit -- --inspect-brk","test:unit:silent":"npm run test:unit > tmp/test-unit-log.txt 2>&1","coverage":"nyc --reporter=text --temp-dir=./tmp/ --check-coverage --lines 91 --all npm run test:unit:silent","changelog:update":"node ../../bin/update-changelog.js device-control-crypto","docs:build":"node ../../bin/build-docs.js device-control-crypto"},"nyc":{"include":["src/**/*.js"],"exclude":["**/__fixtures__/**","**/*.test.js"]},"dependencies":{"@particle/device-control-util":"^1.1.3","bn.js":"^5.2.0","elliptic":"^6.6.1"},"engines":{"node":">=12","npm":"8.x"},"gitHead":"6f5d761d954247d0debfb320906fa674eab7f261","_id":"@particle/device-control-crypto@1.1.5","_nodeVersion":"16.20.2","_npmVersion":"lerna/5.3.0/node@v16.20.2+x64 (linux)","dist":{"integrity":"sha512-scJr5c+8X9fph/CQT59u/Te7YhCnc/1Pnp3QWaW9//t4drNhbmRjQOeGYHXuBowiRTy09RUPVycbRbSFgGvItw==","shasum":"b390f72f89ddcae30c8ee1b3e60598ab2e32c230","tarball":"https://registry.npmjs.org/@particle/device-control-crypto/-/device-control-crypto-1.1.5.tgz","fileCount":8,"unpackedSize":29884,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCQJMJNWV45i7tIzM/mY1bR10z/yithm1O+omx18sRhSwIhAJ4y7h0pqicJCTOI4vqHD3QS8tdGkOfWl+KAWrPFVxlN"}]},"_npmUser":{"name":"particlebot","email":"engineering+npm@particle.io"},"directories":{},"maintainers":[{"name":"particlebot","email":"engineering+npm@particle.io"},{"name":"no1089","email":"chris.fourie@particle.io"},{"name":"carlos.hdez","email":"Carlos.Hernandez@particle.io"},{"name":"guohui","email":"guohui@particle.io"},{"name":"keeramis5","email":"keerthy@particle.io"},{"name":"monkbroc","email":"jvanier@gmail.com"},{"name":"mstan","email":"npm@1379.tech"},{"name":"sergeuz","email":"sergeuz@gmail.com"},{"name":"avtolstoy","email":"avtolstoy@gmail.com"},{"name":"mlauer","email":"matt.lauer@particle.io"},{"name":"wraithan","email":"xwraithanx@gmail.com"},{"name":"azenk","email":"andrew.zenk@particle.io"},{"name":"bwalach","email":"brett@particle.io"},{"name":"rickkas7","email":"rickkas7@rickk.com"},{"name":"mrlambchop_particle","email":"nick@particle.io"},{"name":"hugo.montero","email":"hugo.montero@outlook.com"},{"name":"mphsi","email":"mpaul.hernandez@gmail.com"},{"name":"pedrosordo","email":"pedro.sordo@particle.io"},{"name":"cole-abbeduto-particle","email":"cole.abbeduto@particle.io"},{"name":"sbrust","email":"scott.brust@particle.io"},{"name":"eugene_particle","email":"eugene@particle.io"},{"name":"mohitparticle","email":"mohit@particle.io"},{"name":"karlag","email":"karla.garcia@particle.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/device-control-crypto_1.1.5_1757536602305_0.3061629133456163"},"_hasShrinkwrap":false}},"time":{"created":"2022-02-09T20:22:58.025Z","modified":"2025-09-10T20:36:42.932Z","1.1.0":"2022-02-09T20:22:58.145Z","1.1.1":"2022-02-17T18:38:28.728Z","1.1.2":"2022-06-08T15:31:27.125Z","1.1.3":"2022-08-09T17:52:32.977Z","1.1.4":"2025-09-09T19:08:57.509Z","1.1.5":"2025-09-10T20:36:42.480Z"},"author":{"name":"Particle Industries, Inc."},"license":"Apache-2.0","description":"Elliptic Curve J-PAKE and AES CCM for Node.js and browsers","maintainers":[{"name":"particlebot","email":"engineering+npm@particle.io"},{"name":"no1089","email":"chris.fourie@particle.io"},{"name":"carlos.hdez","email":"Carlos.Hernandez@particle.io"},{"name":"guohui","email":"guohui@particle.io"},{"name":"keeramis5","email":"keerthy@particle.io"},{"name":"monkbroc","email":"jvanier@gmail.com"},{"name":"mstan","email":"npm@1379.tech"},{"name":"sergeuz","email":"sergeuz@gmail.com"},{"name":"avtolstoy","email":"avtolstoy@gmail.com"},{"name":"mlauer","email":"matt.lauer@particle.io"},{"name":"wraithan","email":"xwraithanx@gmail.com"},{"name":"azenk","email":"andrew.zenk@particle.io"},{"name":"bwalach","email":"brett@particle.io"},{"name":"rickkas7","email":"rickkas7@rickk.com"},{"name":"mrlambchop_particle","email":"nick@particle.io"},{"name":"hugo.montero","email":"hugo.montero@outlook.com"},{"name":"mphsi","email":"mpaul.hernandez@gmail.com"},{"name":"pedrosordo","email":"pedro.sordo@particle.io"},{"name":"cole-abbeduto-particle","email":"cole.abbeduto@particle.io"},{"name":"sbrust","email":"scott.brust@particle.io"},{"name":"eugene_particle","email":"eugene@particle.io"},{"name":"mohitparticle","email":"mohit@particle.io"},{"name":"karlag","email":"karla.garcia@particle.io"}],"readme":"# @particle/device-control-crypto\n\nElliptic Curve J-PAKE and AES CCM for Node.js and browsers.\n\n\n## Installation\n\n```shell\nnpm install @particle/device-control-crypto --save\n```\n<!-- private-module-note-start -->\n\n<!-- private-module-note-end -->\n\n## API\n<!-- api-docs-start -->\n<a name=\"Ccm\"></a>\n\n### Ccm\nA class implementing the CCM mode of operation for a block cipher.\n\n**Kind**: global class  \n\n* [Ccm](#Ccm)\n    * [new Ccm(options)](#new_Ccm_new)\n    * [.encrypt(data, nonce, [addData])](#Ccm+encrypt) ⇒ <code>Promise.&lt;Uint8Array&gt;</code>\n    * [.decrypt(data, nonce, [addData])](#Ccm+decrypt) ⇒ <code>Promise.&lt;Uint8Array&gt;</code>\n\n\n* * *\n\n<a name=\"new_Ccm_new\"></a>\n\n#### new Ccm(options)\nConstructor.\n\n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| options | <code>Object</code> |  | Options. |\n| options.encrypt | [<code>EncryptFunction</code>](#EncryptFunction) |  | Encryption function. |\n| options.nonceLength | <code>Number</code> |  | Nonce length in bytes. The value must be in the range [7, 13]. |\n| [options.tagLength] | <code>Number</code> | <code>16</code> | Length of the authentication tag in bytes: 4, 6, 8, 10, 12,        14 or 16. |\n\n\n* * *\n\n<a name=\"Ccm+encrypt\"></a>\n\n#### ccm.encrypt(data, nonce, [addData]) ⇒ <code>Promise.&lt;Uint8Array&gt;</code>\nEncrypt a message.\n\n**Kind**: instance method of [<code>Ccm</code>](#Ccm)  \n**Returns**: <code>Promise.&lt;Uint8Array&gt;</code> - Encrypted data. The authentication tag is appended to the encrypted data.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| data | <code>Uint8Array</code> | Data to encrypt. |\n| nonce | <code>Uint8Array</code> | Nonce. |\n| [addData] | <code>Uint8Array</code> | Additional authenticated data. |\n\n\n* * *\n\n<a name=\"Ccm+decrypt\"></a>\n\n#### ccm.decrypt(data, nonce, [addData]) ⇒ <code>Promise.&lt;Uint8Array&gt;</code>\nDecrypt a message.\n\n**Kind**: instance method of [<code>Ccm</code>](#Ccm)  \n**Returns**: <code>Promise.&lt;Uint8Array&gt;</code> - Decrypted data.  \n**Throws**:\n\n- Throws an error if decryption fails.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| data | <code>Uint8Array</code> | Data to decrypt. The authentication tag must be appended to the encrypted data. |\n| nonce | <code>Uint8Array</code> | Nonce. |\n| [addData] | <code>Uint8Array</code> | Additional authenticated data. |\n\n\n* * *\n\n<a name=\"EcJpake\"></a>\n\n### EcJpake\nA class implementing the EC J-PAKE protocol as defined by the Thread specification.\n\n**Kind**: global class  \n\n* [EcJpake](#EcJpake)\n    * [.getRound1()](#EcJpake+getRound1) ⇒ <code>Promise.&lt;Uint8Array&gt;</code>\n    * [.readRound1(buf)](#EcJpake+readRound1) ⇒ <code>Number</code>\n    * [.getRound2()](#EcJpake+getRound2) ⇒ <code>Promise.&lt;Uint8Array&gt;</code>\n    * [.readRound2(buf)](#EcJpake+readRound2) ⇒ <code>Number</code>\n    * [.deriveSecret()](#EcJpake+deriveSecret) ⇒ <code>Promise.&lt;Uint8Array&gt;</code>\n\n\n* * *\n\n<a name=\"EcJpake+getRound1\"></a>\n\n#### ecJpake.getRound1() ⇒ <code>Promise.&lt;Uint8Array&gt;</code>\nGenerate a message for the first round of the protocol.\n\n**Kind**: instance method of [<code>EcJpake</code>](#EcJpake)  \n**Returns**: <code>Promise.&lt;Uint8Array&gt;</code> - Message data.  \n\n* * *\n\n<a name=\"EcJpake+readRound1\"></a>\n\n#### ecJpake.readRound1(buf) ⇒ <code>Number</code>\nRead a message generated by the peer for the first round of the protocol.\n\n**Kind**: instance method of [<code>EcJpake</code>](#EcJpake)  \n**Returns**: <code>Number</code> - Number of bytes read.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| buf | <code>Uint8Array</code> | Message data. |\n\n\n* * *\n\n<a name=\"EcJpake+getRound2\"></a>\n\n#### ecJpake.getRound2() ⇒ <code>Promise.&lt;Uint8Array&gt;</code>\nGenerate a message for the second round of the protocol.\n\n**Kind**: instance method of [<code>EcJpake</code>](#EcJpake)  \n**Returns**: <code>Promise.&lt;Uint8Array&gt;</code> - Message data.  \n\n* * *\n\n<a name=\"EcJpake+readRound2\"></a>\n\n#### ecJpake.readRound2(buf) ⇒ <code>Number</code>\nRead a message generated by the peer for the second round of the protocol.\n\n**Kind**: instance method of [<code>EcJpake</code>](#EcJpake)  \n**Returns**: <code>Number</code> - Number of bytes read.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| buf | <code>Uint8Array</code> | Message data. |\n\n\n* * *\n\n<a name=\"EcJpake+deriveSecret\"></a>\n\n#### ecJpake.deriveSecret() ⇒ <code>Promise.&lt;Uint8Array&gt;</code>\nDerive the shared secret.\n\n**Kind**: instance method of [<code>EcJpake</code>](#EcJpake)  \n**Returns**: <code>Promise.&lt;Uint8Array&gt;</code> - Shared secret.  \n\n* * *\n\n<a name=\"createAes128Cipher\"></a>\n\n### createAes128Cipher(key) ⇒ [<code>EncryptFunction</code>](#EncryptFunction)\nCreate an AES-128 cipher operating in ECB mode.\n\n**Kind**: global function  \n**Returns**: [<code>EncryptFunction</code>](#EncryptFunction) - Encryption function.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| key | <code>Uint8Array</code> | Encryption key. The key must be 16 bytes long. |\n\n\n* * *\n\n<a name=\"getRandomBytes\"></a>\n\n### getRandomBytes(size) ⇒ <code>Promise.&lt;Uint8Array&gt;</code>\nGenerate cryptographically strong random data.\n\n**Kind**: global function  \n**Returns**: <code>Promise.&lt;Uint8Array&gt;</code> - Random data.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| size | <code>Number</code> | Number of bytes to generate. |\n\n\n* * *\n\n<a name=\"EncryptFunction\"></a>\n\n### EncryptFunction ⇒ <code>Promise.&lt;Uint8Array&gt;</code>\nEncrypt a single block of data.\n\n**Kind**: global typedef  \n**Returns**: <code>Promise.&lt;Uint8Array&gt;</code> - Ciphertext block.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| block | <code>Uint8Array</code> | Plaintext block. The block must be 16 bytes long. |\n\n\n* * *\n\n<a name=\"RandomFunction\"></a>\n\n### RandomFunction ⇒ <code>Promise.&lt;Uint8Array&gt;</code>\nConstructor.\n\n**Kind**: global typedef  \n**Returns**: <code>Promise.&lt;Uint8Array&gt;</code> - Random bytes.  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| size | <code>Number</code> |  | Number of random bytes to generate. |\n| options | <code>Object</code> |  | Options. |\n| options.role | <code>String</code> |  | Role of this peer: `client` or `server`. |\n| options.secret | <code>String</code> \\| <code>Uint8Array</code> |  | Pre-shared secret. |\n| [options.randomBytes] | [<code>RandomFunction</code>](#RandomFunction) | <code>getRandomBytes</code> | Cryptographically strong random generator function. |\n| [options.curve] | <code>String</code> | <code>p256</code> | Curve name. |\n| [options.clientId] | <code>String</code> \\| <code>Uint8Array</code> | <code>client</code> | Client identity. |\n| [options.serverId] | <code>String</code> \\| <code>Uint8Array</code> | <code>server</code> | Server identity. |\n\n\n* * *\n\n\n<!-- api-docs-end -->\n\n_NOTE: Unfortunately, docs have a nasty habit of falling out of date. When in doubt, check usage in [tests](./src/index.test.js)_\n\n","readmeFilename":"README.md"}