var chai = chai || require('chai'); var bitcore = bitcore || require('../bitcore'); var coinUtil = coinUtil || bitcore.util; var buffertools = require('buffertools'); var should = chai.should(); var assert = chai.assert; var Key = bitcore.Key; //addUncompressed is a node-only interface feature if (typeof process !== 'undefined' && process.versions) { describe('#Key.node', function() { describe('#addUncompressed', function() { it('should exist', function() { should.exist(Key.addUncompressed); }); it('should add two uncompressed public keys', function() { var key1 = Key.generateSync(); key1.compressed = false; var key2 = Key.generateSync(); key2.compressed = false; var pubkey1 = key1.public; var pubkey2 = key2.public; var pubkey = Key.addUncompressed(pubkey1, pubkey2); pubkey.length.should.equal(65); }); it('a + b should equal b + a', function() { var key1 = Key.generateSync(); key1.compressed = false; var key2 = Key.generateSync(); key2.compressed = false; var pubkey1 = key1.public; var pubkey2 = key2.public; var r1 = Key.addUncompressed(pubkey1, pubkey2); var r2 = Key.addUncompressed(pubkey2, pubkey1); r1.toString('hex').should.equal(r2.toString('hex')); }); it('should be able to add these two public keys without error', function() { var key1 = new Key(); key1.private = coinUtil.sha256("first " + 3); key1.compressed = false; key1.regenerateSync(); var key2 = new Key(); key2.private = coinUtil.sha256("second " + 3); key2.compressed = false; key2.regenerateSync(); var pubkey1 = key1.public; var pubkey2 = key2.public; var pubkey = Key.addUncompressed(pubkey1, pubkey2); pubkey.length.should.equal(65); var key = new Key(); key.public = pubkey; assert(key.public !== null); }); }); describe('node only Key functionality', function() { it('should not fail when called as Key() without "new"', function() { var key = Key(); should.exist(key); }); it('should not fail when called as Key() without "new" with some args', function() { var key = Key(1, 2, 3, 4, 5); should.exist(key); }); it('should have correct properties when called with Key() without "new"', function() { var key = Key(); key.compressed.should.equal(true); should.not.exist(key.public); should.not.exist(key.private); should.exist(key); }); }); }); }