{"_id":"ecma-nacl","_rev":"41-587b1fb4b8bd051580b0ac9981272dbe","name":"ecma-nacl","dist-tags":{"latest":"2.5.3"},"versions":{"1.0.0":{"name":"ecma-nacl","version":"1.0.0","keywords":["encryption","high-level","crypto","nacl"],"license":{"url":"http://mozilla.org/MPL/2.0/","type":"MPLv2.0"},"_id":"ecma-nacl@1.0.0","maintainers":[{"name":"cubicbase","email":"mikalai@birukou.net"}],"contributors":[{"name":"Mikalai Birukou","email":"mikalai@birukou.net"}],"bugs":{"url":"https://github.com/cubicbase/ecma-nacl/issues"},"dist":{"shasum":"dcca00eb479f054be113228e3a3334b9c81b749a","tarball":"https://registry.npmjs.org/ecma-nacl/-/ecma-nacl-1.0.0.tgz","integrity":"sha512-OzQmoCuB9yF3UcEHJIbMhT8bk1OrJVqoe+Be39eSX2yoRfEk8i4mD6TgMsH5yDgxwrw3N+YPTOg0VfFOpIasAg==","signatures":[{"sig":"MEUCICW53cC971kYqVgYEPGS7rvFRwiX5p7XQokbUbgbVknpAiEAqPyLl3FYXi8X/aTZPocOvWlHkSAhakUyPAope19TSNw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./lib/ecma-nacl.js","_from":"./ecma-nacl/","engines":{"node":"*"},"_npmUser":{"name":"cubicbase","email":"mikalai@birukou.net"},"repository":{"url":"https://github.com/cubicbase/ecma-nacl.git","type":"git"},"_npmVersion":"1.3.8","description":"JavaScript (ECMAScript) version of NaCl Cryptographic library","directories":{}},"1.1.0":{"name":"ecma-nacl","version":"1.1.0","keywords":["encryption","high-level","crypto","nacl"],"license":{"url":"http://mozilla.org/MPL/2.0/","type":"MPLv2.0"},"_id":"ecma-nacl@1.1.0","maintainers":[{"name":"cubicbase","email":"mikalai@birukou.net"}],"contributors":[{"name":"Mikalai Birukou","email":"mikalai@birukou.net"}],"bugs":{"url":"https://github.com/3nsoft/ecma-nacl/issues"},"dist":{"shasum":"a42335731f9bfd71a66bc545687d0da297d5eed4","tarball":"https://registry.npmjs.org/ecma-nacl/-/ecma-nacl-1.1.0.tgz","integrity":"sha512-mq78NHdZeqvpDuod7Gi74S0iR4IYOc/9k5vsuHFkAC1c01v4RjzIZqvTaVH/sDdhpclzT+m9qCk9Trm5O+1EkQ==","signatures":[{"sig":"MEUCIQDBPEyQ77AkqCdDYtlWTrv7VLOsZdMk1vbZZd8Ge/AQpAIgUXgaEggbnitxO2Pfak03pg0fqJMNXGhq9lcPyofFExQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./lib/ecma-nacl.js","_from":".","engines":{"node":"*"},"_npmUser":{"name":"cubicbase","email":"mikalai@birukou.net"},"repository":{"url":"https://github.com/3nsoft/ecma-nacl.git","type":"git"},"_npmVersion":"1.3.11","description":"JavaScript (ECMAScript) version of NaCl Cryptographic library","directories":{},"devDependencies":{"js-nacl":"0.5.0","browserify":">=2.34.3"}},"1.1.1":{"name":"ecma-nacl","version":"1.1.1","keywords":["encryption","high-level","crypto","nacl"],"license":{"url":"http://mozilla.org/MPL/2.0/","type":"MPLv2.0"},"_id":"ecma-nacl@1.1.1","maintainers":[{"name":"cubicbase","email":"mikalai@birukou.net"}],"contributors":[{"name":"Mikalai Birukou","email":"mikalai@birukou.net"}],"bugs":{"url":"https://github.com/3nsoft/ecma-nacl/issues"},"dist":{"shasum":"29b42005cc7577b367bf3ecb7d8f1c0b060cb521","tarball":"https://registry.npmjs.org/ecma-nacl/-/ecma-nacl-1.1.1.tgz","integrity":"sha512-YhoK7ItNQpNjM+zOJe/3nOCZt5R4u1T1ha5vYzUDOiEqp1zuPZOr5OKL+bXBo77TMdcu4TsL09WE7mwNAYkmYg==","signatures":[{"sig":"MEUCIQC7oU7XlKJrSxePAPcuHhyHVBkG3oFp/O+vvHq0NjZKSAIgGEh91Vr/HWlMa2LsXeqSdYnJsBz7NeQinKZPI4w2ExE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./lib/ecma-nacl.js","_from":".","engines":{"node":"*"},"_npmUser":{"name":"cubicbase","email":"mikalai@birukou.net"},"repository":{"url":"https://github.com/3nsoft/ecma-nacl.git","type":"git"},"_npmVersion":"1.3.11","description":"JavaScript (ECMAScript) version of NaCl Cryptographic library","directories":{},"devDependencies":{"js-nacl":"0.5.0","browserify":">=2.34.3"}},"1.2.0":{"name":"ecma-nacl","version":"1.2.0","keywords":["encryption","high-level","crypto","nacl"],"license":{"url":"http://mozilla.org/MPL/2.0/","type":"MPLv2.0"},"_id":"ecma-nacl@1.2.0","maintainers":[{"name":"cubicbase","email":"mikalai@birukou.net"}],"contributors":[{"name":"Mikalai Birukou","email":"mikalai@birukou.net"}],"bugs":{"url":"https://github.com/3nsoft/ecma-nacl/issues"},"dist":{"shasum":"031b19f995ee51f9a40d92f07b2f4e515c6a7ea4","tarball":"https://registry.npmjs.org/ecma-nacl/-/ecma-nacl-1.2.0.tgz","integrity":"sha512-QgjGcHNhT6GsnjS/G2s2W4eWkfCkoQiSWCLFu/aU2YODAfKzWyxz4cUqeRC9zm0X4QfcJSRgyzEqvGrvpScHEA==","signatures":[{"sig":"MEUCIQC5mCrSmjfEEmLzBtzfUveg2LccG/gdbjZuChakDv1d7gIgN4jGyq8OX+RNez7SfEMUPlMr70HYcb+KL35uEEoaa3g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./lib/ecma-nacl.js","_from":".","engines":{"node":"*"},"_npmUser":{"name":"cubicbase","email":"mikalai@birukou.net"},"repository":{"url":"https://github.com/3nsoft/ecma-nacl.git","type":"git"},"_npmVersion":"1.3.11","description":"JavaScript (ECMAScript) version of NaCl Cryptographic library","directories":{},"devDependencies":{"js-nacl":"0.5.0","browserify":">=2.34.3"}},"1.2.1":{"name":"ecma-nacl","version":"1.2.1","keywords":["encryption","high-level","crypto","nacl"],"license":{"url":"http://mozilla.org/MPL/2.0/","type":"MPLv2.0"},"_id":"ecma-nacl@1.2.1","maintainers":[{"name":"cubicbase","email":"mikalai@birukou.net"}],"contributors":[{"name":"Mikalai Birukou","email":"mikalai@birukou.net"}],"bugs":{"url":"https://github.com/3nsoft/ecma-nacl/issues"},"dist":{"shasum":"d09590d5c89d82cd123f297d4dcf4e424afa5eba","tarball":"https://registry.npmjs.org/ecma-nacl/-/ecma-nacl-1.2.1.tgz","integrity":"sha512-DjaLyrMAlHKbxf/ODENu/MTFtCMqFxevZCdg2uWoNXJX4NJXwE0/wr7J5v0BK9o+8THobBzdEGlj39u2PRA2+w==","signatures":[{"sig":"MEUCIQDt2Kdbnr+Fn7z1+9dSLQO62UeiDjzQCootxPmDFw3FmQIgP6gR88I7Q8A6yb/R3D/O44JfMbL6OfK3RYPDKZ6Ndpo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./lib/ecma-nacl.js","_from":".","engines":{"node":"*"},"_npmUser":{"name":"cubicbase","email":"mikalai@birukou.net"},"repository":{"url":"https://github.com/3nsoft/ecma-nacl.git","type":"git"},"_npmVersion":"1.3.11","description":"JavaScript (ECMAScript) version of NaCl Cryptographic library","directories":{},"devDependencies":{"js-nacl":"0.5.0","browserify":">=2.34.3"}},"1.2.2":{"name":"ecma-nacl","version":"1.2.2","keywords":["encryption","high-level","crypto","nacl"],"license":{"url":"http://mozilla.org/MPL/2.0/","type":"MPLv2.0"},"_id":"ecma-nacl@1.2.2","maintainers":[{"name":"3nsoft","email":"mikalai@birukou.net"}],"contributors":[{"name":"Mikalai Birukou","email":"mikalai@birukou.net"}],"bugs":{"url":"https://github.com/3nsoft/ecma-nacl/issues"},"dist":{"shasum":"cddb93d2c3a52ee81988796f8d6f11c7dc52c795","tarball":"https://registry.npmjs.org/ecma-nacl/-/ecma-nacl-1.2.2.tgz","integrity":"sha512-vk491mCHpMpdarK3nilNm6lb98ClD7WliONCMQ0Flar/icyaQCicUmBMxRs+TLJogLIyCGDgsfuZjN2vis8lUA==","signatures":[{"sig":"MEUCIF8+msSsv9Y0fNbXjH76cSKC07sfTNSpC2aR8tppXZ9vAiEArQ6AddctcCY9+1mnVB4vwnVfsrbPq+GuGUyADezVFzE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./lib/ecma-nacl.js","_from":".","engines":{"node":"*"},"_npmUser":{"name":"3nsoft","email":"mikalai@birukou.net"},"repository":{"url":"https://github.com/3nsoft/ecma-nacl.git","type":"git"},"_npmVersion":"1.3.11","description":"JavaScript (ECMAScript) version of NaCl Cryptographic library","directories":{},"devDependencies":{"js-nacl":"0.5.0","browserify":">=2.34.3"}},"1.3.0":{"name":"ecma-nacl","version":"1.3.0","keywords":["encryption","high-level","crypto","nacl"],"license":{"url":"http://mozilla.org/MPL/2.0/","type":"MPLv2.0"},"_id":"ecma-nacl@1.3.0","maintainers":[{"name":"3nsoft","email":"mikalai@birukou.net"}],"contributors":[{"name":"Mikalai Birukou","email":"mikalai@birukou.net"}],"bugs":{"url":"https://github.com/3nsoft/ecma-nacl/issues"},"dist":{"shasum":"c2cbfe102275c0d208c041cea23481c3cef5fc9b","tarball":"https://registry.npmjs.org/ecma-nacl/-/ecma-nacl-1.3.0.tgz","integrity":"sha512-mF/MZTPbqu+fr1s4/W1JH46dBg3RnI6sfVJuqbahd8GWuJVvVRdhoZTcuIjlIQgFeWgc00b/RJkQdoxJBHsHWg==","signatures":[{"sig":"MEUCIAr//51G24F3vIDTGWixP3Ofuxdc2jCyXoAWI5lT+f0GAiEAtrsSoXeQqu0VxlPenibD+yp0nJl9nuH+KsPuOHgNx8M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./lib/ecma-nacl.js","_from":".","engines":{"node":"*"},"_npmUser":{"name":"3nsoft","email":"mikalai@birukou.net"},"repository":{"url":"https://github.com/3nsoft/ecma-nacl.git","type":"git"},"_npmVersion":"1.3.11","description":"JavaScript (ECMAScript) version of NaCl Cryptographic library","directories":{},"devDependencies":{"js-nacl":"0.5.0","browserify":">=2.34.3"}},"1.3.1":{"name":"ecma-nacl","version":"1.3.1","keywords":["encryption","high-level","crypto","nacl"],"license":{"url":"http://mozilla.org/MPL/2.0/","type":"MPLv2.0"},"_id":"ecma-nacl@1.3.1","maintainers":[{"name":"3nsoft","email":"mikalai@birukou.net"}],"contributors":[{"name":"Mikalai Birukou","email":"mikalai@birukou.net"}],"bugs":{"url":"https://github.com/3nsoft/ecma-nacl/issues"},"dist":{"shasum":"10e775ee38de91f1d44404d85932c88a4ae2abba","tarball":"https://registry.npmjs.org/ecma-nacl/-/ecma-nacl-1.3.1.tgz","integrity":"sha512-hJb56RMou6BAfz/6IPUdHzR3OKH2duB7TUnveiPUjDOKwAgioyVPloZ1ddeWVWUsuY25wF5/7cDocvI1Wb4Jzg==","signatures":[{"sig":"MEQCIE/zSm1zCubvNngM/+pF0IW6J58JXCb6qiLJ9xFDLpRXAiBidSew8kiNlGoN4BUtQW1kfZqXWbcF8LFfjjYTzvL+/A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./lib/ecma-nacl.js","_from":".","engines":{"node":"*"},"_npmUser":{"name":"3nsoft","email":"mikalai@birukou.net"},"repository":{"url":"https://github.com/3nsoft/ecma-nacl.git","type":"git"},"_npmVersion":"1.3.11","description":"JavaScript (ECMAScript) version of NaCl Cryptographic library","directories":{},"devDependencies":{"js-nacl":"0.5.0","browserify":">=2.34.3"}},"1.3.2":{"name":"ecma-nacl","version":"1.3.2","keywords":["encryption","high-level","crypto","nacl"],"license":{"url":"http://mozilla.org/MPL/2.0/","type":"MPLv2.0"},"_id":"ecma-nacl@1.3.2","maintainers":[{"name":"3nsoft","email":"mikalai@birukou.net"}],"contributors":[{"name":"Mikalai Birukou","email":"mikalai@birukou.net"}],"bugs":{"url":"https://github.com/3nsoft/ecma-nacl/issues"},"dist":{"shasum":"247299b617319bd341bb86964996973014a08af2","tarball":"https://registry.npmjs.org/ecma-nacl/-/ecma-nacl-1.3.2.tgz","integrity":"sha512-cDUM62FCGFZ65cKuCdNeplpYz0my6/Oz0QGYkbaUd6sSbvSx7xcbh3Tt4iKwtptMe1ymOJXAbGDtlxCXJNutfg==","signatures":[{"sig":"MEQCIC2sKMC3E+U+tNeIy2ilCLJZ9pYX9bWLQ25N5WPT2DY8AiA+KUX41cI2lOX88MGs/fZGfr2FyoGtDBs+SB4azlVBzQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./lib/ecma-nacl.js","_from":".","engines":{"node":"*"},"_npmUser":{"name":"3nsoft","email":"mikalai@birukou.net"},"repository":{"url":"https://github.com/3nsoft/ecma-nacl.git","type":"git"},"_npmVersion":"1.3.11","description":"JavaScript (ECMAScript) version of NaCl Cryptographic library","directories":{},"devDependencies":{"js-nacl":"0.5.0","browserify":">=2.34.3"}},"1.4.0":{"name":"ecma-nacl","version":"1.4.0","keywords":["encryption","high-level","crypto","nacl"],"license":{"url":"http://mozilla.org/MPL/2.0/","type":"MPLv2.0"},"_id":"ecma-nacl@1.4.0","maintainers":[{"name":"3nsoft","email":"mikalai@birukou.net"}],"contributors":[{"name":"Mikalai Birukou","email":"mikalai@birukou.net"}],"homepage":"https://github.com/3nsoft/ecma-nacl","bugs":{"url":"https://github.com/3nsoft/ecma-nacl/issues"},"dist":{"shasum":"a30154fc2f37c6066a176ce47d2842c5be4699d7","tarball":"https://registry.npmjs.org/ecma-nacl/-/ecma-nacl-1.4.0.tgz","integrity":"sha512-5JRujCmSTFA3iyHhCvUOsl9tBVJ3+EwhYoMjKVQQ+KoX2kStvu/tQPZLCbv2JrC6jyZQrUfnNeOfAL+e/G21ng==","signatures":[{"sig":"MEQCIEs6lqQ15wlO2rZUsueYGi8H0bws2/Aj/yxOBSA1kwobAiB19NNN2DAQrImKGU6zRe9Eyj8YUwQoZBoTdwyLBYlWBQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./lib/ecma-nacl.js","_from":".","engines":{"node":"*"},"_npmUser":{"name":"3nsoft","email":"mikalai@birukou.net"},"repository":{"url":"https://github.com/3nsoft/ecma-nacl.git","type":"git"},"_npmVersion":"1.3.24","description":"JavaScript (ECMAScript) version of NaCl Cryptographic library","directories":{},"devDependencies":{"js-nacl":"0.5.0","browserify":">=2.34.3"}},"2.0.0":{"name":"ecma-nacl","version":"2.0.0","keywords":["encryption","high-level","crypto","nacl"],"license":{"url":"http://mozilla.org/MPL/2.0/","type":"MPLv2.0"},"_id":"ecma-nacl@2.0.0","maintainers":[{"name":"3nsoft","email":"mikalai@birukou.net"}],"contributors":[{"name":"Mikalai Birukou","email":"mikalai@birukou.net"}],"homepage":"https://github.com/3nsoft/ecma-nacl","bugs":{"url":"https://github.com/3nsoft/ecma-nacl/issues"},"dist":{"shasum":"ac2c9353cca317b6436b3fe7edbeb09346e20954","tarball":"https://registry.npmjs.org/ecma-nacl/-/ecma-nacl-2.0.0.tgz","integrity":"sha512-gR5PE0awrz5HDRx+t8U3zxSE+XXA3nRoMxZuoxbujCEYZ/SgzNIbm30lthRm8KBxpXWSfcGt8SadpHaepwzkgA==","signatures":[{"sig":"MEUCIQCucCP2HXr6sdZQpBWAs8Po1VtnqvbFxoIZRzJVWl4V2QIgYfQNDy8Fn0jItAK3LIK5YBifUS6fOZBGO9gFhlwwfKY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./lib/ecma-nacl.js","_from":".","_shasum":"ac2c9353cca317b6436b3fe7edbeb09346e20954","engines":{"node":"*"},"_npmUser":{"name":"3nsoft","email":"mikalai@birukou.net"},"repository":{"url":"https://github.com/3nsoft/ecma-nacl.git","type":"git"},"_npmVersion":"1.4.9","description":"JavaScript (ECMAScript) version of NaCl Cryptographic library","directories":{},"devDependencies":{"js-nacl":"0.5.0","tweetnacl":"0.13.0","browserify":">=2.34.3"}},"2.0.1":{"name":"ecma-nacl","version":"2.0.1","keywords":["encryption","high-level","crypto","nacl"],"license":{"url":"http://mozilla.org/MPL/2.0/","type":"MPLv2.0"},"_id":"ecma-nacl@2.0.1","maintainers":[{"name":"3nsoft","email":"mikalai@birukou.net"}],"contributors":[{"name":"Mikalai Birukou","email":"mikalai@birukou.net"}],"homepage":"https://github.com/3nsoft/ecma-nacl","bugs":{"url":"https://github.com/3nsoft/ecma-nacl/issues"},"dist":{"shasum":"2fe96e53b16d0d69cc2545f544245b7938369536","tarball":"https://registry.npmjs.org/ecma-nacl/-/ecma-nacl-2.0.1.tgz","integrity":"sha512-aRIg6ULen9xKdyR9QIFjOJPRddSX6/2ezKP4PSjuZZ4G3zGQyuYAUjk0iLAEH+U0r9JEx61C96Nigp0G1YUYCQ==","signatures":[{"sig":"MEUCIECkHKIZvAaQVWJ5Cx7w6/8yjiZ4hQQ/1kLwquG61pIQAiEAq0SLxVG3T/jy4nzwGlRKKOmzsSbISmcVuPoi8zAS6vk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./dist/lib/ecma-nacl.js","_from":".","_shasum":"2fe96e53b16d0d69cc2545f544245b7938369536","engines":{"node":"*"},"scripts":{},"_npmUser":{"name":"3nsoft","email":"mikalai@birukou.net"},"repository":{"url":"https://github.com/3nsoft/ecma-nacl.git","type":"git"},"_npmVersion":"2.7.4","description":"JavaScript (ECMAScript) version of NaCl Cryptographic library","directories":{},"_nodeVersion":"0.12.2","devDependencies":{"gulp":"^3.8.11","tsify":"^0.8.1","merge2":"^0.3.4","js-nacl":"^0.6.0","nodeunit":"^0.9.1","tweetnacl":"^0.13.1","browserify":"^9.0.8","gulp-rename":"^1.2.2","gulp-uglify":"^1.2.0","gulp-streamify":"0.0.5","gulp-typescript":"^2.6.0","vinyl-source-stream":"^1.1.0","gulp-nodeunit-runner":"^0.2.2"}},"2.1.0":{"name":"ecma-nacl","version":"2.1.0","keywords":["encryption","high-level","crypto","nacl"],"license":{"url":"http://mozilla.org/MPL/2.0/","type":"MPLv2.0"},"_id":"ecma-nacl@2.1.0","maintainers":[{"name":"3nsoft","email":"mikalai@birukou.net"}],"contributors":[{"name":"Mikalai Birukou","email":"mikalai@birukou.net"}],"homepage":"https://github.com/3nsoft/ecma-nacl","bugs":{"url":"https://github.com/3nsoft/ecma-nacl/issues"},"dist":{"shasum":"3e012710d11101a87bcfc4559979593f27e8b9bf","tarball":"https://registry.npmjs.org/ecma-nacl/-/ecma-nacl-2.1.0.tgz","integrity":"sha512-Phf/J2fqqlzmM8wqV8Q1XaX69U03P5b863QDND5hIf6KD8deuz8uICXvN3IK/vsyeEC0ijv+v8UYq1Cf5VzrZg==","signatures":[{"sig":"MEYCIQCM2z9vQS8E1sb1HGp9fh+DaZx84H/+zauFohcrvwiSmQIhAKAbHi0VoMclPpE97TFNrmcQBrSprdHLQkRFBLmi1Ue+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./dist/lib/ecma-nacl.js","_from":".","_shasum":"3e012710d11101a87bcfc4559979593f27e8b9bf","engines":{"node":"*"},"scripts":{},"_npmUser":{"name":"3nsoft","email":"mikalai@birukou.net"},"repository":{"url":"https://github.com/3nsoft/ecma-nacl.git","type":"git"},"_npmVersion":"2.7.4","description":"JavaScript (ECMAScript) version of NaCl Cryptographic library","directories":{},"_nodeVersion":"0.12.2","devDependencies":{"gulp":"^3.8.11","tsify":"^0.8.1","merge2":"^0.3.4","js-nacl":"^0.6.0","nodeunit":"^0.9.1","tweetnacl":"^0.13.1","browserify":"^9.0.8","gulp-rename":"^1.2.2","gulp-uglify":"^1.2.0","gulp-streamify":"0.0.5","gulp-typescript":"^2.6.0","vinyl-source-stream":"^1.1.0","gulp-nodeunit-runner":"^0.2.2"}},"2.2.0":{"name":"ecma-nacl","version":"2.2.0","keywords":["encryption","high-level","crypto","nacl"],"license":{"url":"http://mozilla.org/MPL/2.0/","type":"MPLv2.0"},"_id":"ecma-nacl@2.2.0","maintainers":[{"name":"3nsoft","email":"mikalai@birukou.net"}],"contributors":[{"name":"Mikalai Birukou","email":"mikalai@birukou.net"}],"homepage":"https://github.com/3nsoft/ecma-nacl#readme","bugs":{"url":"https://github.com/3nsoft/ecma-nacl/issues"},"dist":{"shasum":"d89b8b8834f6b8a6790d1e6dbe48970a457c92d0","tarball":"https://registry.npmjs.org/ecma-nacl/-/ecma-nacl-2.2.0.tgz","integrity":"sha512-SzEhNFZbNqNJWUSDIm1/yzDLw+z6+IcuhQ/D53vIl1Av1JIF4Uq7TAqGQdJOrMtq/5GOBnlTfY95yicC/QUYlw==","signatures":[{"sig":"MEYCIQCnxmdpvCJj8/ymMb/LIhoBut7OvfedtJB3sgiyRPbeWgIhAMzyzKyry6SobQBVzOJK4IGEhRk7Z6ZdKEMLeBrTUdqi","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./dist/lib/ecma-nacl.js","_from":".","_shasum":"d89b8b8834f6b8a6790d1e6dbe48970a457c92d0","engines":{"node":"*"},"gitHead":"eaf034a6df3b2331f3f74c35c7e873a68beb8824","scripts":{},"_npmUser":{"name":"3nsoft","email":"mikalai@birukou.net"},"repository":{"url":"git+https://github.com/3nsoft/ecma-nacl.git","type":"git"},"_npmVersion":"2.11.2","description":"JavaScript (ECMAScript) version of NaCl Cryptographic library","directories":{},"_nodeVersion":"0.12.6","devDependencies":{"gulp":"^3.8.11","tsify":"^0.8.1","merge2":"^0.3.4","js-nacl":"^0.6.0","nodeunit":"^0.9.1","tweetnacl":"^0.13.1","browserify":"^9.0.8","gulp-rename":"^1.2.2","gulp-uglify":"^1.2.0","gulp-streamify":"0.0.5","gulp-typescript":"^2.6.0","vinyl-source-stream":"^1.1.0","gulp-nodeunit-runner":"^0.2.2"}},"2.2.1":{"name":"ecma-nacl","version":"2.2.1","keywords":["encryption","high-level","crypto","nacl"],"license":{"url":"http://mozilla.org/MPL/2.0/","type":"MPLv2.0"},"_id":"ecma-nacl@2.2.1","maintainers":[{"name":"3nsoft","email":"mikalai@birukou.net"}],"contributors":[{"name":"Mikalai Birukou","email":"mikalai@birukou.net"}],"homepage":"https://github.com/3nsoft/ecma-nacl#readme","bugs":{"url":"https://github.com/3nsoft/ecma-nacl/issues"},"dist":{"shasum":"25e747f04744856eea51ed945a74bcdf7c659a0a","tarball":"https://registry.npmjs.org/ecma-nacl/-/ecma-nacl-2.2.1.tgz","integrity":"sha512-G8Wmp/lEtXRt/fxi1Cyh7317lTbfp105pCQ3Mk4zDXiC+K6fQu6LTXO258G59NPGyNstLYVFQWehwp45IoWAqQ==","signatures":[{"sig":"MEUCIH3HXQixjIfsOCOMN1hOOfMlY2q01kaeTJJlfb2iszQUAiEA52YppGDV7yUch9olpGEzIveutWS26pBeZoNrORaBfEI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./dist/lib/ecma-nacl.js","_from":".","_shasum":"25e747f04744856eea51ed945a74bcdf7c659a0a","engines":{"node":"*"},"gitHead":"6bc200c4bf3fd826ecb1c4540aa3bbbf143e9c3c","scripts":{},"_npmUser":{"name":"3nsoft","email":"mikalai@birukou.net"},"repository":{"url":"git+https://github.com/3nsoft/ecma-nacl.git","type":"git"},"_npmVersion":"3.3.12","description":"JavaScript (ECMAScript) version of NaCl Cryptographic library","directories":{},"_nodeVersion":"5.1.0","devDependencies":{"gulp":"^3.8.11","tsify":"^0.8.1","merge2":"^0.3.4","js-nacl":"^0.6.0","nodeunit":"^0.9.1","tweetnacl":"^0.13.1","browserify":"^9.0.8","gulp-rename":"^1.2.2","gulp-uglify":"^1.2.0","gulp-streamify":"0.0.5","gulp-typescript":"^2.6.0","vinyl-source-stream":"^1.1.0","gulp-nodeunit-runner":"^0.2.2"},"_npmOperationalInternal":{"tmp":"tmp/ecma-nacl-2.2.1.tgz_1456435208824_0.8003306619357318","host":"packages-6-west.internal.npmjs.com"}},"2.3.1":{"name":"ecma-nacl","version":"2.3.1","keywords":["encryption","high-level","crypto","nacl","scrypt"],"license":"MPL-2.0","_id":"ecma-nacl@2.3.1","maintainers":[{"name":"3nsoft","email":"mikalai@birukou.net"}],"contributors":[{"name":"Mikalai Birukou","email":"mikalai@birukou.net"}],"homepage":"https://github.com/3nsoft/ecma-nacl#readme","bugs":{"url":"https://github.com/3nsoft/ecma-nacl/issues"},"dist":{"shasum":"bf91d167cb2db040cdc478921dcf5ca7ef594d34","tarball":"https://registry.npmjs.org/ecma-nacl/-/ecma-nacl-2.3.1.tgz","integrity":"sha512-te9VR5XhkZX6t2xNNYunJfSjCTUr/gMS5P86izjIk7uDVLrqlD7PRTcMU+LrawWSxaE8J4AnG08Tr4LvVAREbA==","signatures":[{"sig":"MEUCIF5JdQOJbtrfdrPVTPK0ALsXebFTPVuIZg66JCAt0b/tAiEAlgunph+gQYdq2vCoTaT2C7UjfYflSaZ0el4zSHI8AIY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./dist/lib/ecma-nacl.js","_from":".","_shasum":"bf91d167cb2db040cdc478921dcf5ca7ef594d34","engines":{"node":"*"},"gitHead":"0a92a1343576c331bee8025c428f1ec1e59f3f29","scripts":{},"typings":"./lib declarations/ecma-nacl.d.ts","_npmUser":{"name":"3nsoft","email":"mikalai@birukou.net"},"repository":{"url":"git+https://github.com/3nsoft/ecma-nacl.git","type":"git"},"_npmVersion":"3.8.6","description":"JavaScript (ECMAScript) version of NaCl Cryptographic library","directories":{},"_nodeVersion":"6.0.0","devDependencies":{"gulp":"^3.8.11","tsify":"^0.8.1","merge2":"^0.3.4","js-nacl":"^0.6.0","nodeunit":"^0.9.1","tweetnacl":"^0.13.1","browserify":"^9.0.8","gulp-rename":"^1.2.2","gulp-uglify":"^1.2.0","gulp-typedoc":"^1.1.0","gulp-streamify":"0.0.5","gulp-typescript":"^2.6.0","vinyl-source-stream":"^1.1.0","gulp-nodeunit-runner":"^0.2.2"},"_npmOperationalInternal":{"tmp":"tmp/ecma-nacl-2.3.1.tgz_1463414888738_0.8969421307556331","host":"packages-12-west.internal.npmjs.com"}},"2.4.0":{"name":"ecma-nacl","version":"2.4.0","keywords":["encryption","high-level","crypto","nacl","scrypt"],"license":"MPL-2.0","_id":"ecma-nacl@2.4.0","maintainers":[{"name":"3nsoft","email":"mikalai@birukou.net"}],"contributors":[{"name":"Mikalai Birukou","email":"mikalai@birukou.net"}],"homepage":"https://github.com/3nsoft/ecma-nacl#readme","bugs":{"url":"https://github.com/3nsoft/ecma-nacl/issues"},"dist":{"shasum":"d95adb6854371e903a6229201516136d72d80a63","tarball":"https://registry.npmjs.org/ecma-nacl/-/ecma-nacl-2.4.0.tgz","integrity":"sha512-pChoWdQZ1/a48qCQ3z7v7+L3c/sAU0YEJcJty8e796QjayhrshpG5tQScb365+THQJEFbK71bpTLXcRAHHTLYA==","signatures":[{"sig":"MEUCIQCjNvAx2Jn9TXYpoYps0OsqFhJ6GMRFsxEeNLbPLy3jjgIgK67xj0H+n3roQnr6/x/SpYrzytN4/wNn+RLUJ5yVlaY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./dist/lib/ecma-nacl.js","_from":".","_shasum":"d95adb6854371e903a6229201516136d72d80a63","engines":{"node":"*"},"gitHead":"df311346039e421317a9de49854ff93d428a404f","scripts":{"gulp":"gulp"},"typings":"./dist/lib/ecma-nacl.d.ts","_npmUser":{"name":"3nsoft","email":"mikalai@birukou.net"},"repository":{"url":"git+https://github.com/3nsoft/ecma-nacl.git","type":"git"},"_npmVersion":"3.8.6","description":"JavaScript (ECMAScript) version of NaCl Cryptographic library","directories":{},"_nodeVersion":"6.0.0","devDependencies":{"gulp":"^3.8.11","merge2":"^0.3.4","js-nacl":"^0.6.0","nodeunit":"^0.9.1","tweetnacl":"^0.13.1","browserify":"^9.0.8","gulp-rename":"^1.2.2","gulp-uglify":"^1.2.0","gulp-streamify":"0.0.5","gulp-typescript":"^2.6.0","vinyl-source-stream":"^1.1.0","gulp-nodeunit-runner":"^0.2.2"},"_npmOperationalInternal":{"tmp":"tmp/ecma-nacl-2.4.0.tgz_1470514194436_0.11280321655794978","host":"packages-12-west.internal.npmjs.com"}},"2.4.2":{"name":"ecma-nacl","version":"2.4.2","keywords":["encryption","high-level","crypto","nacl","scrypt"],"license":"MPL-2.0","_id":"ecma-nacl@2.4.2","maintainers":[{"name":"3nsoft","email":"mikalai@birukou.net"}],"contributors":[{"name":"Mikalai Birukou","email":"mikalai@birukou.net"}],"homepage":"https://github.com/3nsoft/ecma-nacl#readme","bugs":{"url":"https://github.com/3nsoft/ecma-nacl/issues"},"dist":{"shasum":"c0b3d641217ab749ed5c62d287e67ff9a1eb828f","tarball":"https://registry.npmjs.org/ecma-nacl/-/ecma-nacl-2.4.2.tgz","integrity":"sha512-QEds3p35MI09kHp0TLFmBqN2eEItVEYIWaeTDtz0AqQZcGX9xoZ+vg984KfoNHyNT18WbXjP2VUmi8t1vja7sQ==","signatures":[{"sig":"MEQCIF7M2qDBR1ijknjyAWqZZlsQKOXk0zCi+OC7YHSQZenhAiB/ukNUnC9tCHncGsB7hiUPShEcSc2QZo81QecKxw9P+w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./dist/lib/ecma-nacl.js","engines":{"node":"*"},"gitHead":"1a4d146cac514dda6ba1b761f8fbbcd24b0b640d","scripts":{"gulp":"gulp"},"typings":"./dist/lib/ecma-nacl.d.ts","_npmUser":{"name":"3nsoft","email":"mikalai@birukou.net"},"repository":{"url":"git+https://github.com/3nsoft/ecma-nacl.git","type":"git"},"_npmVersion":"5.5.1","description":"JavaScript (ECMAScript) version of NaCl Cryptographic library","directories":{},"_nodeVersion":"8.7.0","devDependencies":{"gulp":"^3.8.11","merge2":"^0.3.4","js-nacl":"^0.6.0","nodeunit":"^0.9.1","tweetnacl":"^0.13.1","browserify":"^9.0.8","gulp-rename":"^1.2.2","gulp-uglify":"^1.2.0","gulp-streamify":"0.0.5","gulp-typescript":"^2.6.0","vinyl-source-stream":"^1.1.0","gulp-nodeunit-runner":"^0.2.2"},"_npmOperationalInternal":{"tmp":"tmp/ecma-nacl-2.4.2.tgz_1513291222060_0.3355754571966827","host":"s3://npm-registry-packages"}},"2.5.0":{"name":"ecma-nacl","version":"2.5.0","keywords":["encryption","high-level","crypto","nacl","scrypt"],"author":{"url":"https://3nsoft.com","name":"3NSoft Inc.","email":"hq@3nsoft.com"},"license":"MPL-2.0","_id":"ecma-nacl@2.5.0","maintainers":[{"name":"3nsoft","email":"mb@3nsoft.com"}],"homepage":"https://github.com/3nsoft/ecma-nacl#readme","bugs":{"url":"https://github.com/3nsoft/ecma-nacl/issues"},"dist":{"shasum":"5688df5ab43e2538b12c594882c68238e2ae9938","tarball":"https://registry.npmjs.org/ecma-nacl/-/ecma-nacl-2.5.0.tgz","fileCount":39,"integrity":"sha512-VrG9jiOTsacP7TCFp8YlbdC2YSQRydo97Jv5feRVa9AJOYI82PWQDhF+8J2ChrWS9RpQ8LnWYhVGZbCNjgCZlA==","signatures":[{"sig":"MEUCIBMU5KKauMYvfZIJn5r7ZFg5Pw8Y9d8FW77by7797MTNAiEA4diZ/lZyyP2ANZBkoXmpcnOODvrJP1MbZkfyZlmBWVQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":395049,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgQNACRA9TVsSAnZWagAAGUIP/jFtPyyAgiHQ01ItqCaa\nncybeYKfTpg74pvM1dMXxPOufQJLX999MlsU9stJXKQo7IHvHc/lN9dn2lSh\nPkY9vkC9kioFuyn/UdQK+H2Ug9n6X/VkK4oTyVH/oBUXgneQuD7h8XmQOgY7\n0qlmE0xhfzX3DGUhZ4iwRQFaZw1c/5hHE/4dXjCA6ror5jdZuXCeXLKeYvlB\nC8h6AOKevNf7txzeaolHWRLWsy6LPGVy9p2uzi30c3hsYOTznar6Ms6XnHv/\neh5e8NJnTEx4KH7BOWnbSsSMSesKE7qEIXJ7+8TqNpGrerpFiCha6fUZ9Y0i\nH6TqdU7S09uVJAfoHhkFASlK76WTtxvBKIQ87SAmMcqwpyzyLWL/MmtagBo8\nrdGzETZ5Y/VxY7sCJahVBHMG8YxHxLeIdTcjY4hPpNGuFO8VvYN5ww2Ketar\nJ4eLCoW6OqEV6peuADq+2CphPl0NgkE8OcyWI1eV24zmmXVHTYGlNt/9c96M\nDnh6Ur32Cwb1Hdv/Rj5KwhAwMWEtzVB/Sno0chBcO9LevSivOC+/GMJK4XcO\noCD65LkkeQDhH4jHfcDPycfNaGY9iONv/wpmTUSWuzDIJv2DIeaW9IS4QsOG\niw+mP+RTEsfY6ImGGWQGBY4WuhjKRMbYY+5DASjJqlGfscQJFbtD2jTciaVY\ncCta\r\n=C1tB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./build/lib/ecma-nacl.js","engines":{"node":"*"},"gitHead":"04b38d4a9da55085cf35f0ef9cf74160eeef976b","scripts":{"test":"tsc -p src && node build/tests/jasmine.js","build":"tsc -p src","comparison":"tsc -p src && node build/tests/performance/comparison.js","performance":"tsc -p src && node build/tests/performance/ecma-nacl_runs.js"},"typings":"./build/lib/ecma-nacl.d.ts","_npmUser":{"name":"3nsoft","email":"mb@3nsoft.com"},"repository":{"url":"git+https://github.com/3nsoft/ecma-nacl.git","type":"git"},"_npmVersion":"6.9.0","description":"JavaScript (ECMAScript) version of NaCl Cryptographic library","directories":{},"_nodeVersion":"12.4.0","_hasShrinkwrap":false,"devDependencies":{"jasmine":"^2.4.1","js-nacl":"^0.6.0","tweetnacl":"^0.13.1","typescript":"^3.7.3","@types/node":"^12.0.4","@types/jasmine":"^3.5.11"},"_npmOperationalInternal":{"tmp":"tmp/ecma-nacl_2.5.0_1602290495767_0.030342542933602612","host":"s3://npm-registry-packages"}},"2.5.1":{"name":"ecma-nacl","version":"2.5.1","keywords":["encryption","high-level","crypto","nacl","scrypt"],"author":{"url":"https://3nsoft.com","name":"3NSoft Inc.","email":"hq@3nsoft.com"},"license":"MPL-2.0","_id":"ecma-nacl@2.5.1","maintainers":[{"name":"3nsoft","email":"mb@3nsoft.com"}],"homepage":"https://github.com/3nsoft/ecma-nacl#readme","bugs":{"url":"https://github.com/3nsoft/ecma-nacl/issues"},"dist":{"shasum":"e63400a221c953a63477f5dae00db283f6ac72a9","tarball":"https://registry.npmjs.org/ecma-nacl/-/ecma-nacl-2.5.1.tgz","fileCount":39,"integrity":"sha512-MZFbkwDJXAZnALv+qAr/b/aUPvZz5T5xDm1MLsF9kamqeTKkF1Dl1BmXpoPueDyO6o5OQ52lQc/4wWUj82pJRQ==","signatures":[{"sig":"MEUCIHFPl7AG0v7IziVFJDQ7j7J3R9YNE4Xj11xs5kpM1zEnAiEArfqM6xg3OGGT1hQGYs6xCUswayyNsr7dCfsLHknJqQ0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":395179,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhM7qDCRA9TVsSAnZWagAAY+wP/3ivGUsRWcMS5DyZhtNS\nDii16Tax74VMG5vOhYwK4+qx/8l3alkAscsHxUL0rYvIs8sEe5JrX3NHTE+j\n+HFduEQ8I+oDbdixAbddcnhjzEeDxqNcRHnyxf896h3GgXThuZhp1O4feRGH\nPlMDdjt+YztRaF4L2EATMa6u4AUGIL2yzHMYx783903YepyyCLrLSlK0i9Xh\n3kXAs5/Sfc4gotU+oilLP5DAM6/sV9Q/Sl0VOarkATwf+amX2VClGgvuaI0D\nlQ9DSDCI1qXz6wglIQvl35L4GA6ssEXXrm/tvT61YT8t+ufX2UNZeUOX0b8k\nF+Pp7xWiqw2NtSRjqoAkrfFfs/mvUfkEOBVuvhDH5SX6OD+YFoeZvahKv7b/\nQhHFNwg+9C2hcIrR66fcOh3+ua1nKY6PSxBYDuu9+2lJ1nagy3KaM6UT2L+y\nZGTifdYU3woMkrgtacUdRcwlVncD9jMc5q1Epa26Ejoyoi8tJWTAz2YF9iE/\n7g/+pH1Hr3Tcj+mETQbxUzQP4pOGxD96ftKjkGOCgd+5jgocuVs2oLzea8jO\nGbLXBz2N1Wf+K+aLS60Sg/8CLGrwcE+uZAwmbdf4NTy6YnVqfCd1KoFjsEm/\nWfvK+7q53uel1mXz0ETLppWOKF6Mm/BmFbJwKOk9O8XdzptMq+xnHGnHVJ+d\nvaeN\r\n=JkvC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./build/lib/ecma-nacl.js","engines":{"node":"*"},"gitHead":"324c31c96b7588cc7c3adb80e692a8012bf3294a","scripts":{"test":"tsc -p src && node build/tests/jasmine.js","build":"tsc -p src","comparison":"tsc -p src && node build/tests/performance/comparison.js","performance":"tsc -p src && node build/tests/performance/ecma-nacl_runs.js"},"typings":"./build/lib/ecma-nacl.d.ts","_npmUser":{"name":"3nsoft","email":"mb@3nsoft.com"},"repository":{"url":"git+https://github.com/3nsoft/ecma-nacl.git","type":"git"},"_npmVersion":"6.14.11","description":"JavaScript (ECMAScript) version of NaCl Cryptographic library","directories":{},"_nodeVersion":"14.16.0","_hasShrinkwrap":false,"devDependencies":{"jasmine":"^2.4.1","js-nacl":"^0.6.0","tweetnacl":"^0.13.1","typescript":"^3.7.3","@types/node":"^12.0.4","@types/jasmine":"^3.5.11"},"_npmOperationalInternal":{"tmp":"tmp/ecma-nacl_2.5.1_1630780035128_0.21777176943961618","host":"s3://npm-registry-packages"}},"2.5.3":{"name":"ecma-nacl","version":"2.5.3","description":"JavaScript (ECMAScript) version of NaCl Cryptographic library","main":"./build/lib/ecma-nacl.js","typings":"./build/lib/ecma-nacl.d.ts","scripts":{"build":"tsc -p src","test":"tsc -p src && node build/tests/jasmine.js","performance":"tsc -p src && node build/tests/performance/ecma-nacl_runs.js","comparison":"tsc -p src && node build/tests/performance/comparison.js"},"repository":{"type":"git","url":"git+https://github.com/3nsoft/ecma-nacl.git"},"engines":{"node":"*"},"devDependencies":{"@types/jasmine":"^3.5.11","@types/node":"^12.0.4","jasmine":"^2.4.1","js-nacl":"^0.6.0","tweetnacl":"^0.13.1","typescript":"^3.7.3"},"keywords":["encryption","high-level","crypto","nacl","scrypt"],"author":{"name":"3NSoft Inc.","email":"hq@3nsoft.com","url":"https://3nsoft.com"},"license":"MPL-2.0","_id":"ecma-nacl@2.5.3","gitHead":"d5dde0cef3e8064419428896bb2504ae4c15063e","bugs":{"url":"https://github.com/3nsoft/ecma-nacl/issues"},"homepage":"https://github.com/3nsoft/ecma-nacl#readme","_nodeVersion":"20.14.0","_npmVersion":"10.7.0","dist":{"integrity":"sha512-y8cHnMrAUEnGEHWTu+jF3JZfdeL+Qn5YuJaym5ukP1JdWmZTWYjNJTDB3tHe9JQp2AgVyji9Yh+Tfch0QCkfpQ==","shasum":"4d1ee57e701da4e583524412c948cc903bd95672","tarball":"https://registry.npmjs.org/ecma-nacl/-/ecma-nacl-2.5.3.tgz","fileCount":39,"unpackedSize":395197,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDCu7KgaIZlJOo2e98da195tmqDDoxTF5HZyaN9y+N2EAiEAhXNYZEITwOiutd/lqxZhgrEwXQ/Ta3IjEyEjE/qSj5w="}]},"_npmUser":{"name":"3nsoft","email":"mb@3nsoft.com"},"directories":{},"maintainers":[{"name":"3nsoft","email":"mb@3nsoft.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ecma-nacl_2.5.3_1736306935283_0.8297457095436835"},"_hasShrinkwrap":false}},"time":{"created":"2013-11-02T01:39:35.525Z","modified":"2025-01-08T03:28:55.635Z","1.0.0":"2013-11-02T01:39:53.179Z","1.1.0":"2013-11-30T19:27:50.379Z","1.1.1":"2013-12-02T21:19:28.583Z","1.2.0":"2014-01-11T22:44:44.114Z","1.2.1":"2014-01-24T17:47:29.649Z","1.2.2":"2014-01-28T23:42:34.596Z","1.3.0":"2014-02-01T20:30:35.660Z","1.3.1":"2014-02-02T20:27:08.778Z","1.3.2":"2014-02-04T23:02:23.423Z","1.4.0":"2014-04-06T15:45:53.468Z","2.0.0":"2015-04-03T19:47:00.997Z","2.0.1":"2015-04-21T20:25:09.941Z","2.1.0":"2015-06-12T18:53:41.605Z","2.2.0":"2015-07-27T00:29:42.336Z","2.2.1":"2016-02-25T21:20:12.858Z","2.3.1":"2016-05-16T16:08:12.126Z","2.4.0":"2016-08-06T20:09:54.686Z","2.4.2":"2017-12-14T22:40:22.229Z","2.5.0":"2020-10-10T00:41:35.918Z","2.5.1":"2021-09-04T18:27:15.263Z","2.5.3":"2025-01-08T03:28:55.474Z"},"bugs":{"url":"https://github.com/3nsoft/ecma-nacl/issues"},"author":{"name":"3NSoft Inc.","email":"hq@3nsoft.com","url":"https://3nsoft.com"},"license":"MPL-2.0","homepage":"https://github.com/3nsoft/ecma-nacl#readme","keywords":["encryption","high-level","crypto","nacl","scrypt"],"repository":{"type":"git","url":"git+https://github.com/3nsoft/ecma-nacl.git"},"description":"JavaScript (ECMAScript) version of NaCl Cryptographic library","maintainers":[{"name":"3nsoft","email":"mb@3nsoft.com"}],"readme":"# ecma-nacl: Pure JavaScript (ECMAScript) version of NaCl cryptographic library.\n\n[NaCl](http://nacl.cr.yp.to/) is a great crypto library that is not placing a burden of crypto-math choices onto developers, providing only solid high-level functionality (box - for public-key, and secret_box - for secret key  authenticated encryption), in a let's [stop blaming users](http://cr.yp.to/talks/2012.08.08/slides.pdf) of cryptographic library (e.g. end product developers, or us) manner.\nTake a look at details of NaCl's design  \"[The security impact of a new cryptographic\nlibrary](http://cr.yp.to/highspeed/coolnacl-20120725.pdf)\".\n\necma-nacl is a re-write of NaCl in TypeScript, which is ECMAScript with compile-time types.\nLibrary implements NaCl's box and secret box.\nSigning code comes from SUPERCOP version 2014-11-24.\n\nTypeScript re-write of [scrypt](http://www.tarsnap.com/scrypt.html) key derivation function has been added to ecma-nacl beyond NaCl.\nScrypt is a highly valuable thing for services that allow users to have passwords, while doing proper work with crypto keys, derived from those passwords.\n\nRe-writes are based on C sources, included in this repository.\nTests are written to correspond those in C code, to make sure that output of this library is the same as that of C's version.\nScrypt's tests a taken from an [RFC draft](http://tools.ietf.org/html/draft-josefsson-scrypt-kdf-01).\nBesides this, we added comparison runs between ecma-nacl, and js-nacl with js-scrypt, which is an [Emscripten](https://github.com/kripken/emscripten)-compilation of C respective libraries.\n\n## Get ecma-nacl\n\n### NPM Package\n\nThis library is registered on\n[npmjs.org](https://npmjs.org/package/ecma-nacl). To install it, do:\n```\nnpm install ecma-nacl\n```\nPackage comes only with already compiled library code and typescript definitions in build/ folder. For building and testing clone github project.\n\n### Building\n\nOnce you clone this repo, do in the folder\n```\nnpm install\n```\nwhich will install dev-dependencies.\n\nBuilding is done with npm script.\nDo in the folder\n```\nnpm run build\n```\nand\n```\nnpm run test\n```\nruns tests.\n\n## ecma-nacl API\n\n### API for secret-key authenticated encryption\n\nAdd module into code as\n\n```javascript\nimport * as nacl from 'ecma-nacl';\n```\n\n[Secret-key authenticated](http://nacl.cr.yp.to/secretbox.html) encryption is provided by secret_box, which implements XSalsa20+Poly1305.\n\nWhen encrypting, or packing, NaCl does following things. First, it encrypts plain text bytes using XSalas20 algorithm. Secondly, it creates 16 bytes of authentication Poly1305 code, and places these infront of the cipher. Thus, regular byte layout is 16 bytes of Poly1305 code, followed by cipher with actual message, having exactly the same length as plain text message.\n\nDecrypting, or opening goes through these steps in reverse. First, Poly1305 code is read and is compared with code, generated by reading cipher. When these do not match, it means either that key+nonce pair is incorrect, or that cipher with message has been damaged/changed. Our code will throw an exception in such a case. When verification is successful, XSalsa20 will do decryption, producing message bytes.\n\n```javascript\n// all incoming and outgoing things are Uint8Array's;\n// to encrypt, or pack plain text bytes into cipher bytes, use\nlet cipher_bytes = nacl.secret_box.pack(plain_bytes, nonce, key);\n\n// decryption, or opening is done by\nlet result_bytes = nacl.secret_box.open(cipher_bytes, nonce, key);\n```\n\nAbove pack method will produce an Uint8Array with cipher, offset by 16 zero bytes in the underlying buffer. Deciphered bytes, on the other hand, are offset by 32 zero bytes. This should always be kept in mind, when transferring raw buffers to/from web-workers. In all other places, this padding is never noticed, thanks to [typed array api](https://developer.mozilla.org/en-US/docs/Web/API/Uint8Array).\n\nKey is 32 bytes long. Nonce is 24 bytes. Nonce means number-used-once, i.e. it should be unique for every segment encrypted by the same key.\n\nSometimes, when storing things, it is convenient to pack cipher together with nonce (WN) into the same array.\n\n    +-------+ +------+ +---------------+\n    | nonce | | poly | |  data cipher  |\n    +-------+ +------+ +---------------+\n    | <----       WN format      ----> |\n\nFor this, secret_box has formatWN object, which is used analogously:\n\n```javascript\n// encrypting, and placing nonce as first 24 bytes infront NaCl's byte output layout\nlet cipher_bytes = nacl.secret_box.formatWN.pack(plain_bytes, nonce, key);\n\n// decryption, or opening is done by\nlet result_bytes = nacl.secret_box.formatWN.open(cipher_bytes, key);\n\n// extraction of nonce from cipher can be done as follows\nlet extracted_nonce = nacl.secret_box.formatWN.copyNonceFrom(cipher_bytes);\n```\n\nCipher array here has no offset in the buffer, but decrypted array does have the same 32 zero bytes offset, as mentioned above.\n\nIt is important to always use different nonce, when encrypting something new with the same key. Object nonce contains functions to advance nonce, to calculate consequent nonces, etc. The 24 bytes of a nnce are taken as three 32-bit integers, and are advanced by 1 (oddly), by 2 (evenly), or by n. So, when encrypting many segments of a huge file, one can advance nonce oddly every time. When key is shared, and is used for communication between two parties, one party's initial nonce may be oddly advanced initial nonce, received from the second party, and all other respective nonces are advanced evenly on both sides of communication. This way, unique nonces are used for every message send.\n\n```javascript\n// nonce changed in place oddly\nnacl.nonce.advanceOddly(nonce);\n\n// nonce changed in place evenly\nnacl.nonce.advanceEvenly(nonce);\n\n// nonce changed in place by delta\nnacl.nonce.advance(nonce, delta);\n\n// calculate related nonce\nlet relatedNonce = nacl.nonce.calculateNonce(nonce, delta, arrayFactory);\n\n// find delta between nonces (null result is for unrelated nonces)\nlet delta = nacl.nonce.calculateDelta(n1, n2);\n```\n\nIt is common, that certain code needs to be given encryption/decryption functionality, but according to [principle of least authority](https://en.wikipedia.org/wiki/Principle_of_least_privilege) such code does not necessarily need to know secret key, with which encryption is done. So, one may make an encryptor and a decryptor. These are made to produce and read ciphers with-nonce format.\n\n```javascript\n// delta is optional, defaults to one\nlet encryptor = nacl.secret_box.formatWN.makeEncryptor(key, nextNonce, delta);\n\n// packing bytes is done with\nlet cipher_bytes = encryptor.pack(plain_bytes);\n\n// when encryptor is no longer needed, key should be properly wiped from memory\nencryptor.destroy();\n\nlet decryptor = nacl.secret_box.formatWN.makeDecryptor(key);\n\n// opening is done with\nlet result_bytes = decryptor.open(cipher_bytes);\n\n// when encryptor is no longer needed, key should be properly wiped from memory\ndecryptor.destroy();\n```\n\n### API for public-key authenticated encryption\n\n[Public-key authenticated](http://nacl.cr.yp.to/box.html) encryption is provided by box, which implements Curve25519+XSalsa20+Poly1305. Given pairs of secret-public keys, corresponding shared, in Diffie–Hellman sense, key is calculated (Curve25519) and is used for data encryption with secret_box (XSalsa20+Poly1305).\n\nGiven any random secret key, we can generate corresponding public key:\n\n```javascript\nlet public_key = nacl.box.generate_pubkey(secret_key);\n```\n\nSecret key may come from `crypto`'s function, or be derived from a passphrase with scrypt.\n\nThere are two ways to use box. The first way is to always do two things, calculation of DH-shared key and subsequent packing/opening, in one step.\n\n```javascript\n// Alice encrypts message for Bob\nlet cipher_bytes = nacl.box.pack(msg_bytes, nonce, bob_pkey, alice_skey);\n\n// Bob opens the message\nlet msg_bytes = nacl.box.open(cipher_bytes, nonce, alice_pkey, bob_skey);\n```\n\nThe second way is to calculate DH-shared key once and use it for packing/opening multiple messages, with box.stream.pack and box.stream.open, which are just nicknames of described above secret_box.pack and secret_box.open.\n\n```javascript\n// Alice calculates DH-shared key\nlet dhshared_key = nacl.box.calc_dhshared_key(bob_pkey, alice_skey);\n// Alice encrypts message for Bob\nlet cipher_bytes = nacl.box.stream.pack(msg_bytes, nonce, dhshared_key);\n\n// Bob calculates DH-shared key\nlet dhshared_key = nacl.box.calc_dhshared_key(alice_pkey, bob_skey);\n// Bob opens the message\nlet msg_bytes = nacl.box.stream.open(cipher_bytes, nonce, dhshared_key);\n```\n\nOr, we may use box encryptors that do first step of DH-shared key calculation only at creation.\n\nAlice's side:\n\n```javascript\n// generate nonce\nlet nonce = crypto.randomBytes(24);\n\n// make encryptor to produce with-nonce format (default delta is two)\nlet encryptor = nacl.box.formatWN.makeEncryptor(bob_pkey, alice_skey, nonce);\n\n// pack messages to Bob\nlet cipher_to_send = encryptor.pack(msg_bytes);\n\n// open mesages from Bob\nlet decryptor = nacl.box.formatWN.makeDecryptor(bob_pkey, alice_skey);\nlet msg_from_bob = decryptor.open(received_cipher);\n    \n// when encryptor is no longer needed, key should be properly wiped from memory\nencryptor.destroy();\ndecryptor.destroy();\n```\n\nBob's side:\n\n```javascript\n// get nonce from Alice's first message, advance it oddly, and\n// use for encryptor, as encryptors on both sides advance nonces evenly\nlet nonce = nacl.box.formatWN.copyNonceFrom(cipher1_from_alice);\nnacl.nonce.advanceOddly(nonce);\n\n// make encryptor to produce with-nonce format (default delta is two)\nlet encryptor = nacl.box.formatWN.makeEncryptor(alice_pkey, bob_skey, nonce);\n\n// pack messages to Alice\nlet cipher_to_send = encryptor.pack(msg_bytes);\n\n// open mesages from Alice\nlet decryptor = nacl.box.formatWN.makeDecryptor(alice_pkey, bob_skey);\nlet msg_from_alice = encryptor.open(received_cipher);\n    \n// when encryptor is no longer needed, key should be properly wiped from memory\nencryptor.destroy();\ndecryptor.destroy();\n```\n\n### Signing\n\nCode for signing is a re-write of Ed25519 C version from [SUPERCOP's](http://bench.cr.yp.to/supercop.html), referenced in [NaCl](http://nacl.cr.yp.to/sign.html).\n\nsigning object contains all related functionality.\n\n```javascript\n// signing key pair can be generated from some seed array, which can\n// either be random itself, or be generated from a password\nlet pair = nacl.signing.generate_keypair(seed);\n\n// make signature bytes, for msg\nlet msgSig = nacl.signing.signature(msg, pair.skey);\n\n// verify signature\nlet sigIsOK = nacl.signing.verify(msgSig, msg, pair.pkey);\n```\n\nThere are functions like [NaCl's](http://nacl.cr.yp.to/sign.html) sign and sign_open methods, which place signature and message into one array, and expect the same for opening (verification).\nIn a context of [JWK](http://self-issued.info/docs/draft-ietf-jose-json-web-key.html), abovementioned functions seem to be more flexible and useful than C's API.\n\n### Random number generation\n\nNaCl does not do it. The randombytes in the original code is a unix shim with the following rational, given in the comment, quote: \"it's really stupid that there isn't a syscall for this\".\n\nSo, you should obtain cryptographically strong random bytes yourself. In node, there is crypto. There is crypto in browser. IE6? IE6 must die! Stop supporting insecure crap! Respect your users, and tell them truth, that they need modern secure browser(s).\n\n### Scrypt - key derivation from passphrases\n\nScrypt derives a key from users password.\nAlgorithm is memory-hard, which means it uses lots and lots of memory.\nThere are three parameters that go into derivation: `N` , `r` and `p` .\n\nAmount of memory used is roughly `128 * N * r == r * 2^(7+logN)`  bytes.\nWith `r = 8` , when `logN`  is 10, it is a MB range of memory, when `logN`  is 20, it is a GB range of memory in use.\n\nParameter `p`  says how many times should the whole operation occur.\nSo, when running out of memory (js is not giving enough memory for `logN = 20` ), one may up `p`  value.\n\nIt goes without saying, that such operations take time, and this implementation has a callback for progress reporting.\n\n```javascript\n// given pass (secret), salt and other less-secret parameters\n// key of length keyLen is generated as follows:\nlet logN = 17;\nlet r = 8;\nlet p = 2;\nlet key = nacl.scrypt(pass, salt, logN, r, p, keyLen, function(pDone) {\n    console.log('derivation progress: ' + pDone + '%');\n}); \n```\n\nColin Percival's [paper](http://www.tarsnap.com/scrypt/scrypt.pdf) about scrypt makes for a lovely weekend-long reading. \n\n\n## License\n\nThis code is provided here under [Mozilla Public License Version 2.0](https://www.mozilla.org/MPL/2.0/).\n\nNaCl C library is public domain code by Daniel J. Bernstein and co. We thank thy wisdom of giving us developer-friendly library.\n\nScrypt C library is created by Colin Percival. We thank thee for bringing us strong new ideas in key derivation tasks.\n","readmeFilename":"README.md","users":{"johnnyscript":true}}