react / wstein / node_modules / browserify / node_modules / crypto-browserify / node_modules / public-encrypt / test / index.js
80552 viewsvar test = require('tape');1var fs = require('fs');2var constants = require('constants');3var parseKeys = require('parse-asn1');4require('./nodeTests');5var priv1024 = fs.readFileSync(__dirname + '/rsa.1024.priv');6var rsa1024 = {7private: fs.readFileSync(__dirname + '/rsa.1024.priv'),8public: fs.readFileSync(__dirname + '/rsa.1024.pub')9};10var rsa1024priv = {11private: fs.readFileSync(__dirname + '/rsa.1024.priv'),12public: fs.readFileSync(__dirname + '/rsa.1024.priv')13};14var rsa1024 = {15private: fs.readFileSync(__dirname + '/rsa.1024.priv'),16public: fs.readFileSync(__dirname + '/rsa.1024.pub')17};18var rsa2028 = {19private: fs.readFileSync(__dirname + '/rsa.2028.priv'),20public: fs.readFileSync(__dirname + '/rsa.2028.pub')21};22var nonrsa1024 = {23private: fs.readFileSync(__dirname + '/1024.priv'),24public: fs.readFileSync(__dirname + '/1024.pub')25};26var nonrsa1024str = {27private: fs.readFileSync(__dirname + '/1024.priv').toString(),28public: fs.readFileSync(__dirname + '/1024.pub').toString()29};30var pass1024 = {31private: {32passphrase: 'fooo',33key:fs.readFileSync(__dirname + '/pass.1024.priv')34},35public: fs.readFileSync(__dirname + '/pass.1024.pub')36};37var pass2028 = {38private: {39passphrase: 'password',40key:fs.readFileSync(__dirname + '/rsa.pass.priv')41},42public: fs.readFileSync(__dirname + '/rsa.pass.pub')43};4445var nodeCrypto = require('../');46var myCrypto = require('../browser');47function _testIt(keys, message, t) {48var pub = keys.public;49var priv = keys.private;50t.test(message.toString(), function (t) {51t.plan(8);5253var myEnc = myCrypto.publicEncrypt(pub, message);54var nodeEnc = nodeCrypto.publicEncrypt(pub, message);55t.equals(myCrypto.privateDecrypt(priv, myEnc).toString('hex'), message.toString('hex'), 'my decrypter my message');56t.equals(myCrypto.privateDecrypt(priv, nodeEnc).toString('hex'), message.toString('hex'), 'my decrypter node\'s message');57t.equals(nodeCrypto.privateDecrypt(priv, myEnc).toString('hex'), message.toString('hex'), 'node decrypter my message');58t.equals(nodeCrypto.privateDecrypt(priv, nodeEnc).toString('hex'), message.toString('hex'), 'node decrypter node\'s message');59myEnc = myCrypto.privateEncrypt(priv, message);60nodeEnc = nodeCrypto.privateEncrypt(priv, message);61t.equals(myCrypto.publicDecrypt(pub, myEnc).toString('hex'), message.toString('hex'), 'reverse methods my decrypter my message');62t.equals(myCrypto.publicDecrypt(pub, nodeEnc).toString('hex'), message.toString('hex'), 'reverse methods my decrypter node\'s message');63t.equals(nodeCrypto.publicDecrypt(pub, myEnc).toString('hex'), message.toString('hex'), 'reverse methods node decrypter my message');64t.equals(nodeCrypto.publicDecrypt(pub, nodeEnc).toString('hex'), message.toString('hex'), 'reverse methods node decrypter node\'s message');6566});67}68function testIt(keys, message, t) {69_testIt(keys, message, t);70_testIt(paddingObject(keys, 1), Buffer.concat([message, new Buffer(' with RSA_PKCS1_PADDING')]), t);71var parsedKey = parseKeys(keys.public);72var k = parsedKey.modulus.byteLength();73var zBuf = new Buffer(k);74zBuf.fill(0);75var msg = Buffer.concat([zBuf, message, new Buffer(' with no padding')]).slice(-k);76_testIt(paddingObject(keys, 3), msg, t);77}78function paddingObject(keys, padding) {79return {80public: addPadding(keys.public, padding),81private: addPadding(keys.private, padding)82};83}84function addPadding(key, padding) {85if (typeof key === 'string' || Buffer.isBuffer(key)) {86return {87key: key,88padding: padding89};90}91var out = {92key: key.key,93padding:padding94};95if ('passphrase' in key) {96out.passphrase = key.passphrase;97}98return out;99}100function testRun(i) {101test('run ' + i, function (t) {102testIt(rsa1024priv, new Buffer('1024 2 private keys'), t);103testIt(rsa1024, new Buffer('1024 keys'), t);104testIt(rsa2028, new Buffer('2028 keys'), t);105testIt(nonrsa1024, new Buffer('1024 keys non-rsa key'), t);106testIt(pass1024, new Buffer('1024 keys and password'), t);107testIt(nonrsa1024str, new Buffer('1024 keys non-rsa key as a string'), t);108testIt(pass2028, new Buffer('2028 rsa key with variant passwords'), t);109});110}111112var i = 0;113var num = 20;114while (++i <= 20) {115testRun(i);116}117118119