From 11b67a6404df8c403b7584d6b5df52b0ad01999a Mon Sep 17 00:00:00 2001 From: Christopher Jeffrey Date: Wed, 16 Jul 2014 09:31:31 -0700 Subject: [PATCH] paypro: use jsrsasign for browser. --- lib/browser/PayPro.js | 22 +++++----------------- package.json | 1 + 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/lib/browser/PayPro.js b/lib/browser/PayPro.js index c2e220d..6bf0b0f 100644 --- a/lib/browser/PayPro.js +++ b/lib/browser/PayPro.js @@ -1,9 +1,8 @@ "use strict"; var Key = require('./Key'); -var bignum = require('bignum'); +var x509 = require('./x509'); var assert = require('assert'); -var elliptic = require('elliptic'); var PayPro = require('../PayPro'); PayPro.sign = function(key) { @@ -17,17 +16,15 @@ PayPro.sign = function(key) { } else if (pki_type === 'none' || pki_type === 'x509+sha256' || pki_type === 'x509+sha1') { throw new Error('x509 currently unsuported.'); } else if (pki_type === 'x509+sha1' || pki_type === 'x509+sha256') { - // XXX node only var crypto = require('crypto'); var pki_data = this.get('pki_data'); // contains one or more x509 certs - //var details = this.get('serialized_payment_details'); var type = pki_type.split('+').toUpperCase(); - // var signature = crypto.createSign('RSA-' + type); var buf = this.serializeForSig(); - // signature.update(buf); - //var hexSig = _rsasign_getHexPaddedDigestInfoForString("aaa", 1024, 'sha1'); var hexSig = _rsasign_getHexPaddedDigestInfoForString(buf.toString(16), 2048, type); - // var sig = signature.sign(pki_data); + var size = hexSig.length / 2; + if (size % 2) size++ + var bbuf = new Uint8Array(size); + var sig = new Buffer(bbuf); } else if (pki_type === 'none') { return this; } else { @@ -52,22 +49,13 @@ PayPro.verify = function() { var pki_data = this.get('pki_data'); var buf = this.serializeForSig(); var type = pki_type.split('+').toUpperCase(); - - // var pubKey = PKCS5PKEY.getRSAKeyFromPublicPKCS8PEM(sKp1PubPEM); - // var result = pubKey.verifyPSS("aaa", sKp1SigAAA1, "sha1", -1); - var pubKey = PKCS5PKEY.getRSAKeyFromPublicPKCS8PEM(pki_data); var result = pubKey.verifyPSS(buf, buf.toString(16), type, -1); return result; - - // var verifier = crypto.createVerify('RSA-' + type); - // verifier.update(buf); - // return verifier.verify(pki_data, sig); } else if (pki_type === 'none') { return true; } - throw new Error('Unsupported pki_type'); }; diff --git a/package.json b/package.json index 17561b9..0a64dc8 100644 --- a/package.json +++ b/package.json @@ -65,6 +65,7 @@ "sjcl": "=1.0.1", "hash.js": "=0.3.1", "bn.js": "=0.13.3", + "jsrsasign": "=0.0.3", "elliptic": "=0.15.7", "bindings": "=1.1.1", "bufferput": "git://github.com/bitpay/node-bufferput.git",