这是indexloc提供的服务,不要输入任何密码
Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .eslintrc
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
{
'parser': '@babel/eslint-parser',
'parserOptions': {
'ecmaVersion': 2021,
'sourceType': 'module'
},
'env': { // http://eslint.org/docs/user-guide/configuring.html#specifying-environments
'node': true,
'browser': true,
Expand Down
3 changes: 3 additions & 0 deletions babel.config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"plugins": ["@babel/plugin-syntax-top-level-await"]
}
58 changes: 27 additions & 31 deletions nacl-fast.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
(function(nacl) {
'use strict';

// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.
// Public domain.
//
// Implementation derived from TweetNaCl version 20140427.
// See for details: http://tweetnacl.cr.yp.to/

var nacl = {};

var gf = function(init) {
var i, r = new Float64Array(16);
if (init) for (i = 0; i < init.length; i++) r[i] = init[i];
Expand Down Expand Up @@ -2144,7 +2143,7 @@ nacl.lowlevel = {
set25519: set25519,
modL: modL,
scalarmult: scalarmult,
scalarbase: scalarbase,
scalarbase: scalarbase
};

/* High-level API */
Expand Down Expand Up @@ -2360,32 +2359,29 @@ nacl.setPRNG = function(fn) {
randombytes = fn;
};

(function() {
// Initialize PRNG if environment provides CSPRNG.
// If not, methods calling randombytes will throw.
var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;
if (crypto && crypto.getRandomValues) {
// Browsers.
var QUOTA = 65536;
nacl.setPRNG(function(x, n) {
var i, v = new Uint8Array(n);
for (i = 0; i < n; i += QUOTA) {
crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));
}
for (i = 0; i < n; i++) x[i] = v[i];
cleanup(v);
});
} else if (typeof require !== 'undefined') {
// Node.js.
crypto = require('crypto');
if (crypto && crypto.randomBytes) {
nacl.setPRNG(function(x, n) {
var i, v = crypto.randomBytes(n);
for (i = 0; i < n; i++) x[i] = v[i];
cleanup(v);
});
// Initialize PRNG if environment provides CSPRNG.
// If not, methods calling randombytes will throw.
var crypto = typeof window !== 'undefined' ? (window.crypto || window.msCrypto) : null;
if (crypto) {
// Browsers.
var QUOTA = 65536;
nacl.setPRNG(function(x, n) {
var i, v = new Uint8Array(n);
for (i = 0; i < n; i += QUOTA) {
crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));
}
}
})();
for (i = 0; i < n; i++) x[i] = v[i];
cleanup(v);
});
} else {
// Node.js.
crypto = await import('crypto');
crypto = crypto.default;
nacl.setPRNG(function(x, n) {
var i, v = crypto.randomBytes(n);
for (i = 0; i < n; i++) x[i] = v[i];
cleanup(v);
});
}

})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));
export default nacl;
1 change: 0 additions & 1 deletion nacl-fast.min.js

This file was deleted.

58 changes: 27 additions & 31 deletions nacl.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
(function(nacl) {
'use strict';

// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.
// Public domain.
//
// Implementation derived from TweetNaCl version 20140427.
// See for details: http://tweetnacl.cr.yp.to/

var nacl = {};

var u64 = function(h, l) { this.hi = h|0 >>> 0; this.lo = l|0 >>> 0; };
var gf = function(init) {
var i, r = new Float64Array(16);
Expand Down Expand Up @@ -931,7 +930,7 @@ nacl.lowlevel = {
set25519: set25519,
modL: modL,
scalarmult: scalarmult,
scalarbase: scalarbase,
scalarbase: scalarbase
};

/* High-level API */
Expand Down Expand Up @@ -1147,32 +1146,29 @@ nacl.setPRNG = function(fn) {
randombytes = fn;
};

(function() {
// Initialize PRNG if environment provides CSPRNG.
// If not, methods calling randombytes will throw.
var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;
if (crypto && crypto.getRandomValues) {
// Browsers.
var QUOTA = 65536;
nacl.setPRNG(function(x, n) {
var i, v = new Uint8Array(n);
for (i = 0; i < n; i += QUOTA) {
crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));
}
for (i = 0; i < n; i++) x[i] = v[i];
cleanup(v);
});
} else if (typeof require !== 'undefined') {
// Node.js.
crypto = require('crypto');
if (crypto && crypto.randomBytes) {
nacl.setPRNG(function(x, n) {
var i, v = crypto.randomBytes(n);
for (i = 0; i < n; i++) x[i] = v[i];
cleanup(v);
});
// Initialize PRNG if environment provides CSPRNG.
// If not, methods calling randombytes will throw.
var crypto = typeof window !== 'undefined' ? (window.crypto || window.msCrypto) : null;
if (crypto) {
// Browsers.
var QUOTA = 65536;
nacl.setPRNG(function(x, n) {
var i, v = new Uint8Array(n);
for (i = 0; i < n; i += QUOTA) {
crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));
}
}
})();
for (i = 0; i < n; i++) x[i] = v[i];
cleanup(v);
});
} else {
// Node.js.
crypto = await import('crypto');
crypto = crypto.default;
nacl.setPRNG(function(x, n) {
var i, v = crypto.randomBytes(n);
for (i = 0; i < n; i++) x[i] = v[i];
cleanup(v);
});
}

})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));
export default nacl;
1 change: 0 additions & 1 deletion nacl.min.js

This file was deleted.

31 changes: 16 additions & 15 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,20 @@
"version": "1.0.3",
"description": "Port of TweetNaCl cryptographic library to JavaScript",
"main": "nacl-fast.js",
"type": "module",
"types": "nacl.d.ts",
"exports": {
".": "./nacl-fast.js",
"./*": "./*"
},
"directories": {
"test": "test"
},
"scripts": {
"build": "uglifyjs nacl.js -c -m -o nacl.min.js && uglifyjs nacl-fast.js -c -m -o nacl-fast.min.js",
"test-node": "tape test/*.js | faucet",
"test-node-all": "make -C test/c && tape test/*.js test/c/*.js | faucet",
"build-test-browser": "browserify test/browser/init.js test/*.js | uglifyjs -c -m -o test/browser/_bundle.js 2>/dev/null && browserify test/browser/init.js test/*.quick.js | uglifyjs -c -m -o test/browser/_bundle-quick.js 2>/dev/null",
"test": "npm run test-node-all",
"test-node": "node test | faucet",
"test-node-c": "make -C test/c && node test/c | faucet",
"test": "npm run test-node && npm run test-node-c",
"test-browser": "ecstatic --cache no-cache --port 7357 test",
"bench": "node test/benchmark/bench.js",
"lint": "eslint nacl.js nacl-fast.js test/*.js test/benchmark/*.js"
},
Expand Down Expand Up @@ -41,16 +45,13 @@
},
"homepage": "https://tweetnacl.js.org",
"devDependencies": {
"browserify": "^16.2.3",
"eslint": "^6.8.0",
"@babel/core": "^7.12.3",
"@babel/eslint-parser": "^7.12.1",
"@babel/plugin-syntax-top-level-await": "^7.12.1",
"ecstatic": "^4.1.4",
"es-module-shims": "^0.7.1",
"faucet": "^0.0.1",
"tap-browser-color": "^0.1.2",
"tape": "^4.13.0",
"tweetnacl-util": "^0.15.0",
"uglify-js": "^3.7.5"
},
"browser": {
"buffer": false,
"crypto": false
"tap-esm": "^1.4.1",
"tweetnacl-util": "https://github.com/jessetane/tweetnacl-util-js#esm"
}
}
5 changes: 3 additions & 2 deletions test/00-api.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
var nacl = (typeof window !== 'undefined') ? window.nacl : require('../' + (process.env.NACL_SRC || 'nacl.min.js'));
var test = require('tape');
var nacl = await import('tweetnacl/' + (process.env.NACL_SRC || 'nacl.js'));
nacl = nacl.default;
import test from 'tap-esm';

var nonce = new Uint8Array(nacl.secretbox.nonceLength);
var key = new Uint8Array(nacl.secretbox.keyLength);
Expand Down
5 changes: 3 additions & 2 deletions test/01-verify.quick.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
var nacl = (typeof window !== 'undefined') ? window.nacl : require('../' + (process.env.NACL_SRC || 'nacl.min.js'));
var test = require('tape');
var nacl = await import('tweetnacl/' + (process.env.NACL_SRC || 'nacl.js'));
nacl = nacl.default;
import test from 'tap-esm';

test('nacl.verify', function(t) {
t.ok(nacl.verify(new Uint8Array(1), new Uint8Array(1)), 'equal arrays of length 1 should verify');
Expand Down
8 changes: 5 additions & 3 deletions test/02-randombytes.quick.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
var nacl = (typeof window !== 'undefined') ? window.nacl : require('../' + (process.env.NACL_SRC || 'nacl.min.js'));
nacl.util = require('tweetnacl-util');
var test = require('tape');
var nacl = await import('tweetnacl/' + (process.env.NACL_SRC || 'nacl.js'));
nacl = nacl.default;
import test from 'tap-esm';
import util from 'tweetnacl-util';
nacl.util = util;

test('nacl.randomBytes', function(t) {
t.plan(1);
Expand Down
10 changes: 6 additions & 4 deletions test/03-onetimeauth.quick.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
var nacl = (typeof window !== 'undefined') ? window.nacl : require('../' + (process.env.NACL_SRC || 'nacl.min.js'));
nacl.util = require('tweetnacl-util');
var test = require('tape');
var nacl = await import('tweetnacl/' + (process.env.NACL_SRC || 'nacl.js'));
nacl = nacl.default;
import test from 'tap-esm';
import util from 'tweetnacl-util';
nacl.util = util;

var specVectors = require('./data/onetimeauth.spec');
import specVectors from './data/onetimeauth.spec.js';

var enc = nacl.util.encodeBase64;

Expand Down
10 changes: 6 additions & 4 deletions test/04-secretbox.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
var nacl = (typeof window !== 'undefined') ? window.nacl : require('../' + (process.env.NACL_SRC || 'nacl.min.js'));
nacl.util = require('tweetnacl-util');
var test = require('tape');
var nacl = await import('tweetnacl/' + (process.env.NACL_SRC || 'nacl.js'));
nacl = nacl.default;
import test from 'tap-esm';
import util from 'tweetnacl-util';
nacl.util = util;

var randomVectors = require('./data/secretbox.random');
import randomVectors from './data/secretbox.random.js';

var enc = nacl.util.encodeBase64,
dec = nacl.util.decodeBase64;
Expand Down
8 changes: 5 additions & 3 deletions test/04-secretbox.quick.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
var nacl = (typeof window !== 'undefined') ? window.nacl : require('../' + (process.env.NACL_SRC || 'nacl.min.js'));
nacl.util = require('tweetnacl-util');
var test = require('tape');
var nacl = await import('tweetnacl/' + (process.env.NACL_SRC || 'nacl.js'));
nacl = nacl.default;
import test from 'tap-esm';
import util from 'tweetnacl-util';
nacl.util = util;

var enc = nacl.util.encodeBase64;

Expand Down
10 changes: 6 additions & 4 deletions test/05-scalarmult.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
var nacl = (typeof window !== 'undefined') ? window.nacl : require('../' + (process.env.NACL_SRC || 'nacl.min.js'));
nacl.util = require('tweetnacl-util');
var test = require('tape');
var nacl = await import('tweetnacl/' + (process.env.NACL_SRC || 'nacl.js'));
nacl = nacl.default;
import test from 'tap-esm';
import util from 'tweetnacl-util';
nacl.util = util;

var randomVectors = require('./data/scalarmult.random');
import randomVectors from './data/scalarmult.random.js';

var enc = nacl.util.encodeBase64,
dec = nacl.util.decodeBase64;
Expand Down
10 changes: 6 additions & 4 deletions test/06-box.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
var nacl = (typeof window !== 'undefined') ? window.nacl : require('../' + (process.env.NACL_SRC || 'nacl.min.js'));
nacl.util = require('tweetnacl-util');
var test = require('tape');
var nacl = await import('tweetnacl/' + (process.env.NACL_SRC || 'nacl.js'));
nacl = nacl.default;
import test from 'tap-esm';
import util from 'tweetnacl-util';
nacl.util = util;

var randomVectors = require('./data/box.random');
import randomVectors from './data/box.random.js';

var enc = nacl.util.encodeBase64,
dec = nacl.util.decodeBase64;
Expand Down
8 changes: 5 additions & 3 deletions test/06-box.quick.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
var nacl = (typeof window !== 'undefined') ? window.nacl : require('../' + (process.env.NACL_SRC || 'nacl.min.js'));
nacl.util = require('tweetnacl-util');
var test = require('tape');
var nacl = await import('tweetnacl/' + (process.env.NACL_SRC || 'nacl.js'));
nacl = nacl.default;
import test from 'tap-esm';
import util from 'tweetnacl-util';
nacl.util = util;

var enc = nacl.util.encodeBase64;

Expand Down
10 changes: 6 additions & 4 deletions test/07-hash.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
var nacl = (typeof window !== 'undefined') ? window.nacl : require('../' + (process.env.NACL_SRC || 'nacl.min.js'));
nacl.util = require('tweetnacl-util');
var test = require('tape');
var nacl = await import('tweetnacl/' + (process.env.NACL_SRC || 'nacl.js'));
nacl = nacl.default;
import test from 'tap-esm';
import util from 'tweetnacl-util';
nacl.util = util;

var randomVectors = require('./data/hash.random');
import randomVectors from './data/hash.random.js';

var enc = nacl.util.encodeBase64,
dec = nacl.util.decodeBase64;
Expand Down
10 changes: 6 additions & 4 deletions test/07-hash.quick.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
var nacl = (typeof window !== 'undefined') ? window.nacl : require('../' + (process.env.NACL_SRC || 'nacl.min.js'));
nacl.util = require('tweetnacl-util');
var test = require('tape');
var nacl = await import('tweetnacl/' + (process.env.NACL_SRC || 'nacl.js'));
nacl = nacl.default;
import test from 'tap-esm';
import util from 'tweetnacl-util';
nacl.util = util;

var specVectors = require('./data/hash.spec');
import specVectors from './data/hash.spec.js';

var enc = nacl.util.encodeBase64;

Expand Down
10 changes: 6 additions & 4 deletions test/08-sign.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
var nacl = (typeof window !== 'undefined') ? window.nacl : require('../' + (process.env.NACL_SRC || 'nacl.min.js'));
nacl.util = require('tweetnacl-util');
var test = require('tape');
var nacl = await import('tweetnacl/' + (process.env.NACL_SRC || 'nacl.js'));
nacl = nacl.default;
import test from 'tap-esm';
import util from 'tweetnacl-util';
nacl.util = util;

var specVectors = require('./data/sign.spec');
import specVectors from './data/sign.spec.js';

var enc = nacl.util.encodeBase64,
dec = nacl.util.decodeBase64;
Expand Down
Loading