From 86c4017aca86dbc465ad89096d98fbb58db0edba Mon Sep 17 00:00:00 2001 From: Jonathan Dunlap Date: Fri, 13 Jul 2018 12:29:10 -0700 Subject: [PATCH 1/2] new sea test --- package.json | 2 +- test/sea/sea2.js | 60 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 test/sea/sea2.js diff --git a/package.json b/package.json index 7bb359a0..2da08e66 100644 --- a/package.json +++ b/package.json @@ -53,9 +53,9 @@ "devDependencies": { "@trust/webcrypto": "^0.7.1", "aws-sdk": ">=2.153.0", + "concat-map": "^0.0.1", "express": ">=4.15.2", "ip": "^1.1.5", - "concat-map": "^0.0.1", "mocha": ">=3.2.0", "panic-manager": "^1.2.0", "panic-server": "^1.1.1", diff --git a/test/sea/sea2.js b/test/sea/sea2.js new file mode 100644 index 00000000..a920f579 --- /dev/null +++ b/test/sea/sea2.js @@ -0,0 +1,60 @@ +/* global Gun,describe,expect,it,beforeEach */ +/*eslint max-len: ["error", 95, { "ignoreComments": true }]*/ +/*eslint semi: ["error", "always", { "omitLastInOneLineBlock": true}]*/ +/*eslint object-curly-spacing: ["error", "never"]*/ +/*eslint node/no-deprecated-api: [error, {ignoreModuleItems: ["new buffer.Buffer()"]}] */ + +var root; +var Gun; +(function(env){ + root = env.window ? env.window : global; + env.window && root.localStorage && root.localStorage.clear(); + try{ require('fs').unlinkSync('data.json') }catch(e){} + //root.Gun = root.Gun || require('../gun'); + if(root.Gun){ + //Gun = root.Gun = root.Gun; + } else { + var expect = global.expect = require("../expect"); + root.Gun = require('../../gun'); + //Gun.serve = require('../../lib/serve'); + //require('./s3'); + //require('./uws'); + //require('./wsp/server'); + require('../../lib/file'); + require('../../sea.js'); + } +}(this)); + +;(function(){ +Gun = root.Gun +const SEA = Gun.SEA + +if(!SEA){ return } + +describe('SEA', function(){ + var user; + var gun; + it('is instantiable', done => { + gun = Gun({ localStorage: true, radisk: false }) + user = gun.user() + done() + }) + + it('register users', async done => { + user.create('bob', 'test123', err => { + console.log('sea', SEA.err) + expect(err).toHaveProperty('ok') + setTimeout(done, 30) + }) + }) + + it('login users', async done => { + user.auth('bob', 'test123', err => { + expect(err).toHaveProperty('ok') + done() + }) + }) + +}) + +})() From 91babdb221bfe5d09d00d987b5bc41d7d5675261 Mon Sep 17 00:00:00 2001 From: Mark Nadal Date: Fri, 13 Jul 2018 12:59:56 -0700 Subject: [PATCH 2/2] progress with @jadbox who setup the tests! --- sea.js | 19 ++++++++++++++++--- test/sea/sea2.js | 11 ++++++----- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/sea.js b/sea.js index 71ee0259..569f777d 100644 --- a/sea.js +++ b/sea.js @@ -382,9 +382,11 @@ var shim = USE('./shim'); var S = USE('./settings'); var sha256hash = USE('./sha256'); + var u; SEA.sign = async (data, pair, cb) => { try { - if(data.slice + // TODO: how should undefined be handled? + if((u !== data) && data.slice && 'SEA{' === data.slice(0,4) && '"m":' === data.slice(4,8)){ // TODO: This would prevent pair2 signing pair1's signature. @@ -1150,13 +1152,24 @@ const epub = await SEA.sign(pairs.epub, pairs) if(u === epub){ throw SEA.err } // to keep the private key safe, we AES encrypt it with the proof of work! - const auth = await SEA.encrypt({ priv: priv, epriv: epriv }, proof) + var auth = {}; + auth.priv = priv; + if(epriv){ + auth.epriv = epriv; + } + auth = await SEA.encrypt(auth, proof) .then((auth) => // TODO: So signedsalt isn't needed? // SEA.sign(salt, pairs).then((signedsalt) => SEA.sign({ek: auth, s: salt}, pairs) // ) ).catch((e) => { Gun.log('SEA.en or SEA.write calls failed!'); cat.ing = false; gun.leave(); reject(e) }) - const user = { alias: alias, pub: pub, epub: epub, auth: auth } + const user = {}; + user.alias = alias; + user.pub = pub; + user.auth = auth; + if(epub){ + user.epub = epub; + } const tmp = '~'+pairs.pub; // awesome, now we can actually save the user with their public key as their ID. try{ diff --git a/test/sea/sea2.js b/test/sea/sea2.js index a920f579..6a7cbdfa 100644 --- a/test/sea/sea2.js +++ b/test/sea/sea2.js @@ -41,16 +41,17 @@ describe('SEA', function(){ }) it('register users', async done => { - user.create('bob', 'test123', err => { - console.log('sea', SEA.err) - expect(err).toHaveProperty('ok') + user.create('bob', 'test123', ack => { + expect(ack.err).to.not.be.ok(); setTimeout(done, 30) }) }) it('login users', async done => { - user.auth('bob', 'test123', err => { - expect(err).toHaveProperty('ok') + console.log("------------------"); + user.auth('bob', 'test123', ack => { + console.log("?????", ack, SEA.err); + expect(ack.err).to.not.be.ok(); done() }) })