From c209e3172d08eb32088f7afb3391310864d11ccd Mon Sep 17 00:00:00 2001 From: Christopher Jeffrey Date: Tue, 15 Jul 2014 18:19:24 -0700 Subject: [PATCH] paypro: x509 nonsense. --- lib/PayPro.js | 24 ++++++++++++----------- test/data/x509.pem | 46 +++++++++++++++++++++++++++++++++++++++++++++ test/test.PayPro.js | 4 +++- 3 files changed, 62 insertions(+), 12 deletions(-) create mode 100644 test/data/x509.pem diff --git a/lib/PayPro.js b/lib/PayPro.js index c948243f5..772dc8097 100644 --- a/lib/PayPro.js +++ b/lib/PayPro.js @@ -208,17 +208,18 @@ PayPro.prototype.sign = function(key) { if (pki_type === 'SIN') { var sig = this.sinSign(key); - } else if (pki_type === 'none' - || pki_type === 'x509+sha1' - || pki_type === 'x509+sha256') { + } 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 details = this.get('serialized_payment_details'); var signature = crypto.createSign('RSA-SHA256'); var buf = this.serializeForSig(); signature.update(buf); - var key = require('fs').readFileSync(__dirname + '/../test/data/x509.key'); - var sig = signature.sign(key); + //var pki_data = require('fs').readFileSync(__dirname + '/../test/data/x509.pem'); + var sig = signature.sign(pki_data); + } else if (pki_type === 'none') { + return this; } else { throw new Error('Unsupported pki_type'); } @@ -236,17 +237,18 @@ PayPro.prototype.verify = function() { if (pki_type === 'SIN') { return this.sinVerify(); - } else if (pki_type === 'none' - || pki_type === 'x509+sha1' - || pki_type === 'x509+sha256') { + } else if (pki_type === 'x509+sha1' || pki_type === 'x509+sha256') { + // XXX node only var crypto = require('crypto'); var sig = this.get('signature'); - var pki_data = this.get('pki_data'); // contains one or more x509 certs - var details = this.get('serialized_payment_details'); + var pki_data = this.get('pki_data'); + // var details = this.get('serialized_payment_details'); var buf = this.serializeForSig(); var verifier = crypto.createVerify('RSA-SHA256'); verifier.update(buf); return verifier.verify(buf, sig); + } else if (pki_type === 'none') { + return true; } throw new Error('Unsupported pki_type'); diff --git a/test/data/x509.pem b/test/data/x509.pem new file mode 100644 index 000000000..2891ee73d --- /dev/null +++ b/test/data/x509.pem @@ -0,0 +1,46 @@ +-----BEGIN CERTIFICATE----- +MIIDBjCCAe4CCQDGf3j9NsTyjzANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJB +VTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0 +cyBQdHkgTHRkMB4XDTE0MDcxNTAyMTUyM1oXDTE1MDcxNTAyMTUyM1owRTELMAkG +A1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0 +IFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +API4A1LJKeWHpbz8bY1rFCeJ3YXPXz6YQdaCF1m8cTQYWy3vw8COou8d0Zogizgp +eXpNIYhREu1dl5yuAYmgpEMGpNr8I6euMx08j3f9jS/vY3SwJbW9nw2lIdiGwAmi +qOtqWOru/2nL1KE7n0rjEFto5UNyHIyIhuLN+KNcg0X1Ch9hSxydTRjBFThzTHRV +Qqba9KELbO4WI3JWaBQsxyer84TJf9eO8dW9ea3BxNgGkKt6XwHiDyXc+nc4vhUa +5upm1z+2nX4UlaokJTPRvAHWD5Exc1X/LbuaCOwNexrCNbPcwBYYjltcfMULmPka +zStX8clZJJDsHM/uBr5vZjcCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAQrU2R1Yw +WJuqZnMqrk+EGIL6tAlyqj1W9j65N0jnPsvBVy3fWJ3AdSzQcJO8PzPavj1R4Nu9 +y55KZa6MZzAH7MkfPNZFoLUs4F7w0Sl+oHuMnw1HV4NeZBE653iQHx7Q+U8tJJKc +SnX0T5LXXPT9GuP/uzHlooKVNybcZ64ve89O8gw/GEidQdDOJ6RuWbdifADVInkP +dWQgsnMDGQmJGE7H77nZbrzMKZ2l0K44vEnxlxQiRqAOC3mDaSjaHfJmiGkfCjGZ +Pn7z8t051F8rXuzBHXUTqVtYd5kmeXN8BvGjF0g3QiQSF66CLm+bLEoRnyFEukfn +hDsMOVV628WjzA== +-----END CERTIFICATE----- +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEA8jgDUskp5YelvPxtjWsUJ4ndhc9fPphB1oIXWbxxNBhbLe/D +wI6i7x3RmiCLOCl5ek0hiFES7V2XnK4BiaCkQwak2vwjp64zHTyPd/2NL+9jdLAl +tb2fDaUh2IbACaKo62pY6u7/acvUoTufSuMQW2jlQ3IcjIiG4s34o1yDRfUKH2FL +HJ1NGMEVOHNMdFVCptr0oQts7hYjclZoFCzHJ6vzhMl/147x1b15rcHE2AaQq3pf +AeIPJdz6dzi+FRrm6mbXP7adfhSVqiQlM9G8AdYPkTFzVf8tu5oI7A17GsI1s9zA +FhiOW1x8xQuY+RrNK1fxyVkkkOwcz+4Gvm9mNwIDAQABAoIBAQDgYO8DM4JyNDRe +W2CIzpa/AcGKAU3zyEvFEIHdCOm9HorohOFLcVaSN4dBRcBx6Em199mGU8Q6yqZ1 +5+NYwM0poe/5Q/Urkf2bqcwllWXC7/mr0Lk+IEhE9aHi2QDwbBQa8EsqZveH4+A2 +8+peDvXKF+O5lO3JaXe6hp87ham9lLGm1JD1uUz+wDwtc0FJh3rQsfUhCTMYxXA7 +ombGmbRbyZgHXOTXa6Q2KuKF+OpJETg6QpybGLzp8F6djfV7vCSNY5eeMQ2lPdtc +l05gdnExOtKwxjpoc5xAL1ScWMP0Oa4WUZtwTZT+xn37ZJezh4J9NDKdGWI0GjRz +MNFcOCCxAoGBAP+dhzJFpbaIrfqtzz2EGnCwFeupSdpJ53PSQZDho+ze//9UcD6n +n0NKaIdkEmaZZgBFaJbG1D07xeAaBKEMDboOiH4ccEcD+XjyxXdpiLTYrJeScvoU +iQuz52tyspwCl21kt8gwuEOFl4w5snxNH9u0CSDBtD2DcBEVEdhqLYl1AoGBAPKV +UvV8L/0UpQZ2b730zlI+6ClU3pM/qSl8QvHtb8RtIUyCXozPN+qmoGX74SzvDxJY +Ru9hYPUuPHpjfhixgSbqSg6cjfs7uaKDMFDNj/08Y/BTlN/dGjADhDXgujpqv/ZD +dPHQ2DhdNKN80rgPJ021hOj1cdCsF6RpyHyA7o97AoGAOLDwVib6PMSNiYZY6zTM +RGfZRL30AjTX32knX4GbwKIotrE8f7jfaqYrDrQUHKsy4yaBrscENVx3Y1+B3VH2 +DWjBvu6BvE5WWwvE3doLFsjjZm51j59UUcMhtUPn9w/gE8P9uqmLhHYxiUkWm9jj +EvAYAirT1by78x3wKkZKOS0CgYARLMFS4BgFsxB8BKakrFBvQkTtqDSZ+EfhyAp1 +VnozTgathA1tqr4qvuFcVxj6NXK7ucRL7nkO4tclUyX6WZbrSmsz3aGvx+q8ts0U +63jmVQA+Y6yGrQDNpXIW3nJQ8H3m0Z/V/xNP6klvycahgXEm71MZq0cDnyuNWG/5 +YKeDQQKBgGTtNsOKl3A4z/nlrSEBHl/8n76kOVeRNbbbvaFvfbLD9twsmcbZk8o5 +xHo9MJ/kAAJfCavXc/uhJsVl1TLN56pgjbnXqQSGB7rWpAtD08UTWaTLc7yyKRPq +70FEbd6tgfsu7zdGX69rPrNLcu+QFniytNwwu63qXp48LakIgeqq +-----END RSA PRIVATE KEY----- diff --git a/test/test.PayPro.js b/test/test.PayPro.js index fb66c7034..edaea5359 100644 --- a/test/test.PayPro.js +++ b/test/test.PayPro.js @@ -334,7 +334,9 @@ describe('PayPro', function() { paypro.set('serialized_payment_details', pdbuf); paypro.set('pki_type', 'x509+sha256'); - paypro.set('pki_data', x509cert); // contains one or more x509 certs + var key = require('fs').readFileSync(__dirname + '/data/x509.der'); + paypro.set('pki_data', key); // contains one or more x509 certs + //paypro.set('pki_data', x509cert); // contains one or more x509 certs var key = new bitcore.Key(); key.private = bitcore.util.sha256('test key');