bip70 / bip70-php

PHP implementation of bitcoins BIP70 payment protocol
10 stars 7 forks source link

Example code for PaymentRequest/PaymentACK responses #15

Open jimtendo opened 5 years ago

jimtendo commented 5 years ago

Hi,

Is it possible to get some example code of how this library might be used for:

  1. PaymentRequest
  2. PaymentACK ... responses.

Currently, I've made it as far as the below for the PaymentRequest (Laravel Controller), but am receiving a "ERROR: Invalid Signature for Payment Request Data" error in Electron (am assuming I'm doing something incorrect when specifying my certs). These are LetsEncrypt certs for another domain that I have and I am using these as test placeholders for the time being.

public function getPaymentRequest(Request $request)
    {
        $output = new Output();
        // This script is just a placeholder for now - not sure if this is how it should be specified
        $output->setScript('OP_DUP OP_HASH160 404371705fa9bd789a2fcd52d2c580b65d35549d OP_EQUALVERIFY OP_CHECKSIG');
        $output->setAmount('1');

        $paymentDetails = new PaymentDetails();
        $paymentDetails->addOutputs($output);
        $paymentDetails->setPaymentUrl('http://bountycash.localhost/payment');
        $paymentDetails->setTime(time());

        // Load cert (using a LetsEncrypt cert)
        $privateKey = \Sop\CryptoEncoding\PEM::fromFile(resource_path('certs/privkey.pem'));
        $cert = \Sop\CryptoEncoding\PEM::fromFile(resource_path('certs/cert.pem'));
        $chain = \Sop\CryptoEncoding\PEM::fromFile(resource_path('certs/chain.pem'));;

        $requestSigner = new RequestSigner();
        $content = $requestSigner->sign( $paymentDetails,
                                         PKIType::X509_SHA256,
                                         \Sop\CryptoTypes\Asymmetric\PrivateKeyInfo::fromPEM($privateKey),
                                         \X509\Certificate\Certificate::fromPEM($cert),
                                         \X509\Certificate\CertificateBundle::fromPEMs($chain) )
                                 ->serialize();

        return response($content)
                    ->header('Content-Type', 'application/bitcoincash-paymentrequest') // Note that we have to use bitcoinCASH-paymentrequest here
                    ->header('Content-Disposition', 'inline; filename=bounty.cash.bchpaymentrequest')
                    ->header('Content-Transfer-Encoding', 'binary')
                    ->header('Expires', '0')
                    ->header('Cache-Control', 'must-revalidate');
    }
jimtendo commented 5 years ago

For more detailed debugging of the pull above:

Example diff of Electron Payload after encoding (Left) and bip70-php Payload (Right) after encoding.

00000000: 120b 7835 3039 2b73 6861 3235 361a f713  ..x509+sha | 00000000: 0801 120b 7835 3039 2b73 6861 3235 361a  ....x509+s
00000010: 0adb 0a30 8205 5730 8204 3fa0 0302 0102  ...0..W0.. | 00000010: f713 0adb 0a30 8205 5730 8204 3fa0 0302  .....0..W0
00000020: 0212 03b1 66fc 9eb4 e09f ec0a ae3c df4c  ....f..... | 00000020: 0102 0212 03b1 66fc 9eb4 e09f ec0a ae3c  ......f...
00000030: a1b8 2564 300d 0609 2a86 4886 f70d 0101  ..%d0...*. | 00000030: df4c a1b8 2564 300d 0609 2a86 4886 f70d  .L..%d0...
00000040: 0b05 0030 4a31 0b30 0906 0355 0406 1302  ...0J1.0.. | 00000040: 0101 0b05 0030 4a31 0b30 0906 0355 0406  .....0J1.0
00000050: 5553 3116 3014 0603 5504 0a13 0d4c 6574  US1.0...U. | 00000050: 1302 5553 3116 3014 0603 5504 0a13 0d4c  ..US1.0...
00000060: 2773 2045 6e63 7279 7074 3123 3021 0603  's Encrypt | 00000060: 6574 2773 2045 6e63 7279 7074 3123 3021  et's Encry
00000070: 5504 0313 1a4c 6574 2773 2045 6e63 7279  U....Let's | 00000070: 0603 5504 0313 1a4c 6574 2773 2045 6e63  ..U....Let
00000080: 7074 2041 7574 686f 7269 7479 2058 3330  pt Authori | 00000080: 7279 7074 2041 7574 686f 7269 7479 2058  rypt Autho
00000090: 1e17 0d31 3930 3230 3530 3733 3830 395a  ...1902050 | 00000090: 3330 1e17 0d31 3930 3230 3530 3733 3830  30...19020
000000a0: 170d 3139 3035 3036 3037 3338 3039 5a30  ..19050607 | 000000a0: 395a 170d 3139 3035 3036 3037 3338 3039  9Z..190506
000000b0: 1a31 1830 1606 0355 0403 130f 6170 692e  .1.0...U.. | 000000b0: 5a30 1a31 1830 1606 0355 0403 130f 6170  Z0.1.0...U
000000c0: 626f 756e 7479 2e63 6173 6830 8201 2230  bounty.cas | 000000c0: 692e 626f 756e 7479 2e63 6173 6830 8201  i.bounty.c
000000d0: 0d06 092a 8648 86f7 0d01 0101 0500 0382  ...*.H.... | 000000d0: 2230 0d06 092a 8648 86f7 0d01 0101 0500  "0...*.H..
000000e0: 010f 0030 8201 0a02 8201 0100 bfe4 f3a4  ...0...... | 000000e0: 0382 010f 0030 8201 0a02 8201 0100 bfe4  .....0....
000000f0: 39d7 6d72 158f 04a3 8a9c 011e b1ce 7a63  9.mr...... | 000000f0: f3a4 39d7 6d72 158f 04a3 8a9c 011e b1ce  ..9.mr....
00000100: 837a fd3a 9f27 16a4 efbb cb04 c0f7 4165  .z.:.'.... | 00000100: 7a63 837a fd3a 9f27 16a4 efbb cb04 c0f7  zc.z.:.'..
00000110: 4e79 1151 d761 7d2c bca4 3cd3 8a58 1fe9  Ny.Q.a},.. | 00000110: 4165 4e79 1151 d761 7d2c bca4 3cd3 8a58  AeNy.Q.a},
00000120: 2a52 5e4d 54db 67c3 5d82 4c8c c683 64e5  *R^MT.g.]. | 00000120: 1fe9 2a52 5e4d 54db 67c3 5d82 4c8c c683  ..*R^MT.g.
00000130: bae6 e995 a206 3a64 69cf 90f2 5dea f2d2  ......:di. | 00000130: 64e5 bae6 e995 a206 3a64 69cf 90f2 5dea  d.......:d
00000140: bd2a 9666 8acd 1702 cce3 98af c000 0ebf  .*.f...... | 00000140: f2d2 bd2a 9666 8acd 1702 cce3 98af c000  ...*.f....
00000150: cea6 4f44 33e2 43b6 e3da c4a2 c836 ba14  ..OD3.C... | 00000150: 0ebf cea6 4f44 33e2 43b6 e3da c4a2 c836  ....OD3.C.
00000160: 3e96 a71d ca14 2528 cf27 3abd 712b b4a4  >.....%(.' | 00000160: ba14 3e96 a71d ca14 2528 cf27 3abd 712b  ..>.....%(
00000170: 3d3d 7306 2bc5 c2d7 9a5a 7338 4944 deb5  ==s.+....Z | 00000170: b4a4 3d3d 7306 2bc5 c2d7 9a5a 7338 4944  ..==s.+...
00000180: e291 82f1 2a4b 4c7c 4196 673d a445 6daf  ....*KL|A. | 00000180: deb5 e291 82f1 2a4b 4c7c 4196 673d a445  ......*KL|
00000190: d850 698e 0d7d deaa d3ab e143 4c98 daf0  .Pi..}.... | 00000190: 6daf d850 698e 0d7d deaa d3ab e143 4c98  m..Pi..}..
000001a0: 43c2 2ed4 1ffe f2ad f064 4863 878a 8312  C........d | 000001a0: daf0 43c2 2ed4 1ffe f2ad f064 4863 878a  ..C.......
000001b0: b60c d081 416b eb46 6ab4 bf23 1f82 35de  ....Ak.Fj. | 000001b0: 8312 b60c d081 416b eb46 6ab4 bf23 1f82  ......Ak.F
000001c0: 56fd 4207 c700 28d1 f8b0 a4aa 9a95 5bf4  V.B...(... | 000001c0: 35de 56fd 4207 c700 28d1 f8b0 a4aa 9a95  5.V.B...(.
000001d0: c5c7 860c 3f43 c6ed 1ab6 2d9d 7164 f937  ....?C.... | 000001d0: 5bf4 c5c7 860c 3f43 c6ed 1ab6 2d9d 7164  [.....?C..
000001e0: a850 5fae b997 fd88 6522 6417 0203 0100  .P_.....e" | 000001e0: f937 a850 5fae b997 fd88 6522 6417 0203  .7.P_.....
000001f0: 01a3 8202 6530 8202 6130 0e06 0355 1d0f  ....e0..a0 | 000001f0: 0100 01a3 8202 6530 8202 6130 0e06 0355  ......e0..
00000200: 0101 ff04 0403 0205 a030 1d06 0355 1d25  .........0 | 00000200: 1d0f 0101 ff04 0403 0205 a030 1d06 0355  ..........
00000210: 0416 3014 0608 2b06 0105 0507 0301 0608  ..0...+... | 00000210: 1d25 0416 3014 0608 2b06 0105 0507 0301  .%..0...+.
00000220: 2b06 0105 0507 0302 300c 0603 551d 1301  +.......0. | 00000220: 0608 2b06 0105 0507 0302 300c 0603 551d  ..+.......
00000230: 01ff 0402 3000 301d 0603 551d 0e04 1604  ....0.0... | 00000230: 1301 01ff 0402 3000 301d 0603 551d 0e04  ......0.0.
00000240: 1410 e32f 8d02 2af9 d4c4 512c ff13 ceaa  .../..*... | 00000240: 1604 1410 e32f 8d02 2af9 d4c4 512c ff13  ...../..*.
00000250: 3753 1915 9a30 1f06 0355 1d23 0418 3016  7S...0...U | 00000250: ceaa 3753 1915 9a30 1f06 0355 1d23 0418  ..7S...0..
00000260: 8014 a84a 6a63 047d ddba e6d1 39b7 a645  ...Jjc.}.. | 00000260: 3016 8014 a84a 6a63 047d ddba e6d1 39b7  0....Jjc.}
00000270: 65ef f3a8 eca1 306f 0608 2b06 0105 0507  e.....0o.. | 00000270: a645 65ef f3a8 eca1 306f 0608 2b06 0105  .Ee.....0o
00000280: 0101 0463 3061 302e 0608 2b06 0105 0507  ...c0a0... | 00000280: 0507 0101 0463 3061 302e 0608 2b06 0105  .....c0a0.
00000290: 3001 8622 6874 7470 3a2f 2f6f 6373 702e  0.."http:/ | 00000290: 0507 3001 8622 6874 7470 3a2f 2f6f 6373  ..0.."http
000002a0: 696e 742d 7833 2e6c 6574 7365 6e63 7279  int-x3.let | 000002a0: 702e 696e 742d 7833 2e6c 6574 7365 6e63  p.int-x3.l
000002b0: 7074 2e6f 7267 302f 0608 2b06 0105 0507  pt.org0/.. | 000002b0: 7279 7074 2e6f 7267 302f 0608 2b06 0105  rypt.org0/
000002c0: 3002 8623 6874 7470 3a2f 2f63 6572 742e  0..#http:/ | 000002c0: 0507 3002 8623 6874 7470 3a2f 2f63 6572  ..0..#http
000002d0: 696e 742d 7833 2e6c 6574 7365 6e63 7279  int-x3.let | 000002d0: 742e 696e 742d 7833 2e6c 6574 7365 6e63  t.int-x3.l
000002e0: 7074 2e6f 7267 2f30 1a06 0355 1d11 0413  pt.org/0.. | 000002e0: 7279 7074 2e6f 7267 2f30 1a06 0355 1d11  rypt.org/0
000002f0: 3011 820f 6170 692e 626f 756e 7479 2e63  0...api.bo | 000002f0: 0413 3011 820f 6170 692e 626f 756e 7479  ..0...api.
00000300: 6173 6830 4c06 0355 1d20 0445 3043 3008  ash0L..U.  | 00000300: 2e63 6173 6830 4c06 0355 1d20 0445 3043  .cash0L..U
00000310: 0606 6781 0c01 0201 3037 060b 2b06 0104  ..g.....07 | 00000310: 3008 0606 6781 0c01 0201 3037 060b 2b06  0...g.....
00000320: 0182 df13 0101 0130 2830 2606 082b 0601  .......0(0 | 00000320: 0104 0182 df13 0101 0130 2830 2606 082b  .........0
00000330: 0505 0702 0116 1a68 7474 703a 2f2f 6370  .......htt | 00000330: 0601 0505 0702 0116 1a68 7474 703a 2f2f  .........h
00000340: 732e 6c65 7473 656e 6372 7970 742e 6f72  s.letsencr | 00000340: 6370 732e 6c65 7473 656e 6372 7970 742e  cps.letsen
00000350: 6730 8201 0506 0a2b 0601 0401 d679 0204  g0.....+.. | 00000350: 6f72 6730 8201 0506 0a2b 0601 0401 d679  org0.....+
00000360: 0204 81f6 0481 f300 f100 7700 747e da83  .......... | 00000360: 0204 0204 81f6 0481 f300 f100 7700 747e  ..........
00000370: 31ad 3310 9121 9cce 254f 4270 c2bf fd5e  1.3..!..%O | 00000370: da83 31ad 3310 9121 9cce 254f 4270 c2bf  ..1.3..!..
00000380: 4220 08c6 3735 79e6 107b cc56 0000 0168  B ..75y..{ | 00000380: fd5e 4220 08c6 3735 79e6 107b cc56 0000  .^B ..75y.
00000390: bcce b62d 0000 0403 0048 3046 0221 00ed  ...-.....H | 00000390: 0168 bcce b62d 0000 0403 0048 3046 0221  .h...-....
000003a0: d8ce 9a3b a9f4 dff7 2545 e80d 1cc1 13b4  ...;....%E | 000003a0: 00ed d8ce 9a3b a9f4 dff7 2545 e80d 1cc1  .....;....
000003b0: f218 2622 4e46 88af 212e 61c1 51e9 1d02  ..&"NF..!. | 000003b0: 13b4 f218 2622 4e46 88af 212e 61c1 51e9  ....&"NF..
000003c0: 2100 aa80 cea8 a37d c539 b97d 3149 865c  !......}.9 | 000003c0: 1d02 2100 aa80 cea8 a37d c539 b97d 3149  ..!......}
000003d0: 3b8f 0ee1 c60a 4021 3ccb 484d 56d0 fc3c  ;.....@!<. | 000003d0: 865c 3b8f 0ee1 c60a 4021 3ccb 484d 56d0  .\;.....@!
000003e0: 7aaa 0076 0029 3c51 9654 c839 65ba aa50  z..v.)<Q.T | 000003e0: fc3c 7aaa 0076 0029 3c51 9654 c839 65ba  .<z..v.)<Q
000003f0: fc58 07d4 b76f bf58 7a29 72dc a4c3 0cf4  .X...o.Xz) | 000003f0: aa50 fc58 07d4 b76f bf58 7a29 72dc a4c3  .P.X...o.X
00000400: e545 47f4 7800 0001 68bc ceb6 3300 0004  .EG.x...h. | 00000400: 0cf4 e545 47f4 7800 0001 68bc ceb6 3300  ...EG.x...
00000410: 0300 4730 4502 205c daf1 c36f 0fb3 8280  ..G0E. \.. | 00000410: 0004 0300 4730 4502 205c daf1 c36f 0fb3  ....G0E. \
00000420: 722d 074b 8f3b eba1 1c3c 0eac 5e83 7be6  r-.K.;...< | 00000420: 8280 722d 074b 8f3b eba1 1c3c 0eac 5e83  ..r-.K.;..
00000430: 26ba 29d4 2b57 ce02 2100 9bad 5896 784d  &.).+W..!. | 00000430: 7be6 26ba 29d4 2b57 ce02 2100 9bad 5896  {.&.).+W..
00000440: 1e12 ed9a 604c c1a1 1ed3 6cc7 a532 4b10  ....`L.... | 00000440: 784d 1e12 ed9a 604c c1a1 1ed3 6cc7 a532  xM....`L..
00000450: 96c5 6170 2f23 10fb 51de 300d 0609 2a86  ..ap/#..Q. | 00000450: 4b10 96c5 6170 2f23 10fb 51de 300d 0609  K...ap/#..
00000460: 4886 f70d 0101 0b05 0003 8201 0100 3b57  H......... | 00000460: 2a86 4886 f70d 0101 0b05 0003 8201 0100  *.H.......
00000470: 24c2 4184 c3dc 86e0 1ed5 c814 7862 6841  $.A....... | 00000470: 3b57 24c2 4184 c3dc 86e0 1ed5 c814 7862  ;W$.A.....
00000480: 82f5 c71d 1c88 14ff 2b7a 48be ceb2 4bc4  ........+z | 00000480: 6841 82f5 c71d 1c88 14ff 2b7a 48be ceb2  hA........
00000490: 231e 03e6 3929 d0cf 151b 9e80 f7ed cf23  #...9).... | 00000490: 4bc4 231e 03e6 3929 d0cf 151b 9e80 f7ed  K.#...9)..
000004a0: 1a9b 3020 50d0 a871 4e53 3345 9c9f b9ac  ..0 P..qNS | 000004a0: cf23 1a9b 3020 50d0 a871 4e53 3345 9c9f  .#..0 P..q
000004b0: da04 a2f8 e5e4 4ec9 f2df a22d b436 349d  ......N... | 000004b0: b9ac da04 a2f8 e5e4 4ec9 f2df a22d b436  ........N.
000004c0: 397c 5f59 8f79 da11 96c2 2b3c e708 1d50  9|_Y.y.... | 000004c0: 349d 397c 5f59 8f79 da11 96c2 2b3c e708  4.9|_Y.y..
000004d0: 5d9e b40a c5a4 5fb6 95f6 b0ac 5898 7d19  ]....._... | 000004d0: 1d50 5d9e b40a c5a4 5fb6 95f6 b0ac 5898  .P]....._.
000004e0: b807 cd94 e102 9631 8696 23ea b8dd 9e20  .......1.. | 000004e0: 7d19 b807 cd94 e102 9631 8696 23ea b8dd  }........1
000004f0: 2697 be37 3a04 9084 52e0 312b 5b6d 9b6d  &..7:...R. | 000004f0: 9e20 2697 be37 3a04 9084 52e0 312b 5b6d  . &..7:...
00000500: 5322 ad8f 0826 c3de aefe d77f 578e a36c  S"...&.... | 00000500: 9b6d 5322 ad8f 0826 c3de aefe d77f 578e  .mS"...&..
00000510: 72cb c799 c768 fb09 d376 6bcb edba c74b  r....h...v | 00000510: a36c 72cb c799 c768 fb09 d376 6bcb edba  .lr....h..
00000520: e9bf c0e1 9ec0 3d55 f0f7 6ca0 1770 4833  ......=U.. | 00000520: c74b e9bf c0e1 9ec0 3d55 f0f7 6ca0 1770  .K......=U
00000530: 1a03 fe4c ef4b 4742 8ad6 1120 e4e1 faab  ...L.KGB.. | 00000530: 4833 1a03 fe4c ef4b 4742 8ad6 1120 e4e1  H3...L.KGB
00000540: 2913 328a 34a4 96a2 e725 787c f742 048f  ).2.4....% | 00000540: faab 2913 328a 34a4 96a2 e725 787c f742  ..).2.4...
00000550: 2224 a622 a860 e9fb 0bd2 8f70 3f8c df12  "$.".`.... | 00000550: 048f 2224 a622 a860 e9fb 0bd2 8f70 3f8c  .."$.".`..
00000560: 3e22 1ab8 d21b 8d0e 5609 3278 7036 0a96  >"......V. | 00000560: df12 3e22 1ab8 d21b 8d0e 5609 3278 7036  ..>"......
00000570: 0930 8204 9230 8203 7aa0 0302 0102 0210  .0...0..z. | 00000570: 0a96 0930 8204 9230 8203 7aa0 0302 0102  ...0...0..
00000580: 0a01 4142 0000 0153 8573 6a0b 85ec a708  ..AB...S.s | 00000580: 0210 0a01 4142 0000 0153 8573 6a0b 85ec  ....AB...S
00000590: 300d 0609 2a86 4886 f70d 0101 0b05 0030  0...*.H... | 00000590: a708 300d 0609 2a86 4886 f70d 0101 0b05  ..0...*.H.
000005a0: 3f31 2430 2206 0355 040a 131b 4469 6769  ?1$0"..U.. | 000005a0: 0030 3f31 2430 2206 0355 040a 131b 4469  .0?1$0"..U
000005b0: 7461 6c20 5369 676e 6174 7572 6520 5472  tal Signat | 000005b0: 6769 7461 6c20 5369 676e 6174 7572 6520  gital Sign
000005c0: 7573 7420 436f 2e31 1730 1506 0355 0403  ust Co.1.0 | 000005c0: 5472 7573 7420 436f 2e31 1730 1506 0355  Trust Co.1
000005d0: 130e 4453 5420 526f 6f74 2043 4120 5833  ..DST Root | 000005d0: 0403 130e 4453 5420 526f 6f74 2043 4120  ....DST Ro
000005e0: 301e 170d 3136 3033 3137 3136 3430 3436  0...160317 | 000005e0: 5833 301e 170d 3136 3033 3137 3136 3430  X30...1603
000005f0: 5a17 0d32 3130 3331 3731 3634 3034 365a  Z..2103171 | 000005f0: 3436 5a17 0d32 3130 3331 3731 3634 3034  46Z..21031
00000600: 304a 310b 3009 0603 5504 0613 0255 5331  0J1.0...U. | 00000600: 365a 304a 310b 3009 0603 5504 0613 0255  6Z0J1.0...
00000610: 1630 1406 0355 040a 130d 4c65 7427 7320  .0...U.... | 00000610: 5331 1630 1406 0355 040a 130d 4c65 7427  S1.0...U..
00000620: 456e 6372 7970 7431 2330 2106 0355 0403  Encrypt1#0 | 00000620: 7320 456e 6372 7970 7431 2330 2106 0355  s Encrypt1
00000630: 131a 4c65 7427 7320 456e 6372 7970 7420  ..Let's En | 00000630: 0403 131a 4c65 7427 7320 456e 6372 7970  ....Let's 
00000640: 4175 7468 6f72 6974 7920 5833 3082 0122  Authority  | 00000640: 7420 4175 7468 6f72 6974 7920 5833 3082  t Authorit
00000650: 300d 0609 2a86 4886 f70d 0101 0105 0003  0...*.H... | 00000650: 0122 300d 0609 2a86 4886 f70d 0101 0105  ."0...*.H.
00000660: 8201 0f00 3082 010a 0282 0101 009c d30c  ....0..... | 00000660: 0003 8201 0f00 3082 010a 0282 0101 009c  ......0...
00000670: f05a e52e 47b7 725d 3783 b368 6330 ead7  .Z..G.r]7. | 00000670: d30c f05a e52e 47b7 725d 3783 b368 6330  ...Z..G.r]
00000680: 3526 1925 e1bd be35 f170 922f b7b8 4b41  5&.%...5.p | 00000680: ead7 3526 1925 e1bd be35 f170 922f b7b8  ..5&.%...5
00000690: 05ab a99e 3508 58ec b12a c468 870b a3e3  ....5.X..* | 00000690: 4b41 05ab a99e 3508 58ec b12a c468 870b  KA....5.X.
000006a0: 75e4 e6f3 a762 71ba 7981 601f d791 9a9f  u....bq.y. | 000006a0: a3e3 75e4 e6f3 a762 71ba 7981 601f d791  ..u....bq.
000006b0: f3d0 7867 71c8 690e 9591 cffe e699 e960  ..xgq.i... | 000006b0: 9a9f f3d0 7867 71c8 690e 9591 cffe e699  ....xgq.i.
000006c0: 3c48 cc7e ca4d 7712 249d 471b 5aeb b9ec  <H.~.Mw.$. | 000006c0: e960 3c48 cc7e ca4d 7712 249d 471b 5aeb  .`<H.~.Mw.
000006d0: 1e37 001c 9cac 7ba7 05ea ce4a ebbd 41e5  .7....{... | 000006d0: b9ec 1e37 001c 9cac 7ba7 05ea ce4a ebbd  ...7....{.
000006e0: 3698 b9cb fd6d 3c96 68df 232a 4290 0c86  6....m<.h. | 000006e0: 41e5 3698 b9cb fd6d 3c96 68df 232a 4290  A.6....m<.
000006f0: 7467 c87f a59a b852 6114 133f 65e9 8287  tg.....Ra. | 000006f0: 0c86 7467 c87f a59a b852 6114 133f 65e9  ..tg.....R
00000700: cbdb fa0e 56f6 8689 f385 3f97 86af b0dc  ....V..... | 00000700: 8287 cbdb fa0e 56f6 8689 f385 3f97 86af  ......V...
00000710: 1aef 6b0d 9516 7dc4 2ba0 65b2 9904 3675  ..k...}.+. | 00000710: b0dc 1aef 6b0d 9516 7dc4 2ba0 65b2 9904  ....k...}.
00000720: 806b ac4a f31b 9049 782f a296 4f2a 2025  .k.J...Ix/ | 00000720: 3675 806b ac4a f31b 9049 782f a296 4f2a  6u.k.J...I
00000730: 2904 c674 c0d0 31cd 8f31 3895 16ba a833  )..t..1..1 | 00000730: 2025 2904 c674 c0d0 31cd 8f31 3895 16ba   %)..t..1.
00000740: b843 f1b1 1fc3 307f a279 3113 3d2d 36f8  .C....0..y | 00000740: a833 b843 f1b1 1fc3 307f a279 3113 3d2d  .3.C....0.
00000750: e3fc f233 6ab9 3931 c5af c48d 0d1d 6416  ...3j.91.. | 00000750: 36f8 e3fc f233 6ab9 3931 c5af c48d 0d1d  6....3j.91
00000760: 33aa fa84 29b6 d40b c0d8 7dc3 9302 0301  3...)..... | 00000760: 6416 33aa fa84 29b6 d40b c0d8 7dc3 9302  d.3...)...
00000770: 0001 a382 017d 3082 0179 3012 0603 551d  .....}0..y | 00000770: 0301 0001 a382 017d 3082 0179 3012 0603  .......}0.
00000780: 1301 01ff 0408 3006 0101 ff02 0100 300e  ......0... | 00000780: 551d 1301 01ff 0408 3006 0101 ff02 0100  U.......0.
00000790: 0603 551d 0f01 01ff 0404 0302 0186 307f  ..U....... | 00000790: 300e 0603 551d 0f01 01ff 0404 0302 0186  0...U.....
000007a0: 0608 2b06 0105 0507 0101 0473 3071 3032  ..+....... | 000007a0: 307f 0608 2b06 0105 0507 0101 0473 3071  0...+.....
000007b0: 0608 2b06 0105 0507 3001 8626 6874 7470  ..+.....0. | 000007b0: 3032 0608 2b06 0105 0507 3001 8626 6874  02..+.....
000007c0: 3a2f 2f69 7372 672e 7472 7573 7469 642e  ://isrg.tr | 000007c0: 7470 3a2f 2f69 7372 672e 7472 7573 7469  tp://isrg.
000007d0: 6f63 7370 2e69 6465 6e74 7275 7374 2e63  ocsp.ident | 000007d0: 642e 6f63 7370 2e69 6465 6e74 7275 7374  d.ocsp.ide
000007e0: 6f6d 303b 0608 2b06 0105 0507 3002 862f  om0;..+... | 000007e0: 2e63 6f6d 303b 0608 2b06 0105 0507 3002  .com0;..+.
000007f0: 6874 7470 3a2f 2f61 7070 732e 6964 656e  http://app | 000007f0: 862f 6874 7470 3a2f 2f61 7070 732e 6964  ./http://a
00000800: 7472 7573 742e 636f 6d2f 726f 6f74 732f  trust.com/ | 00000800: 656e 7472 7573 742e 636f 6d2f 726f 6f74  entrust.co
00000810: 6473 7472 6f6f 7463 6178 332e 7037 6330  dstrootcax | 00000810: 732f 6473 7472 6f6f 7463 6178 332e 7037  s/dstrootc
00000820: 1f06 0355 1d23 0418 3016 8014 c4a7 b1a4  ...U.#..0. | 00000820: 6330 1f06 0355 1d23 0418 3016 8014 c4a7  c0...U.#..
00000830: 7b2c 71fa dbe1 4b90 75ff c415 6085 8910  {,q...K.u. | 00000830: b1a4 7b2c 71fa dbe1 4b90 75ff c415 6085  ..{,q...K.
00000840: 3054 0603 551d 2004 4d30 4b30 0806 0667  0T..U. .M0 | 00000840: 8910 3054 0603 551d 2004 4d30 4b30 0806  ..0T..U. .
00000850: 810c 0102 0130 3f06 0b2b 0601 0401 82df  .....0?..+ | 00000850: 0667 810c 0102 0130 3f06 0b2b 0601 0401  .g.....0?.
00000860: 1301 0101 3030 302e 0608 2b06 0105 0507  ....000... | 00000860: 82df 1301 0101 3030 302e 0608 2b06 0105  ......000.
00000870: 0201 1622 6874 7470 3a2f 2f63 7073 2e72  ..."http:/ | 00000870: 0507 0201 1622 6874 7470 3a2f 2f63 7073  ....."http
00000880: 6f6f 742d 7831 2e6c 6574 7365 6e63 7279  oot-x1.let | 00000880: 2e72 6f6f 742d 7831 2e6c 6574 7365 6e63  .root-x1.l
00000890: 7074 2e6f 7267 303c 0603 551d 1f04 3530  pt.org0<.. | 00000890: 7279 7074 2e6f 7267 303c 0603 551d 1f04  rypt.org0<
000008a0: 3330 31a0 2fa0 2d86 2b68 7474 703a 2f2f  301./.-.+h | 000008a0: 3530 3330 31a0 2fa0 2d86 2b68 7474 703a  50301./.-.
000008b0: 6372 6c2e 6964 656e 7472 7573 742e 636f  crl.identr | 000008b0: 2f2f 6372 6c2e 6964 656e 7472 7573 742e  //crl.iden
000008c0: 6d2f 4453 5452 4f4f 5443 4158 3343 524c  m/DSTROOTC | 000008c0: 636f 6d2f 4453 5452 4f4f 5443 4158 3343  com/DSTROO
000008d0: 2e63 726c 301d 0603 551d 0e04 1604 14a8  .crl0...U. | 000008d0: 524c 2e63 726c 301d 0603 551d 0e04 1604  RL.crl0...
000008e0: 4a6a 6304 7ddd bae6 d139 b7a6 4565 eff3  Jjc.}....9 | 000008e0: 14a8 4a6a 6304 7ddd bae6 d139 b7a6 4565  ..Jjc.}...
000008f0: a8ec a130 0d06 092a 8648 86f7 0d01 010b  ...0...*.H | 000008f0: eff3 a8ec a130 0d06 092a 8648 86f7 0d01  .....0...*
00000900: 0500 0382 0101 00dd 33d7 11f3 6358 38dd  ........3. | 00000900: 010b 0500 0382 0101 00dd 33d7 11f3 6358  ..........
00000910: 1815 fb09 55be 7656 b970 48a5 6947 277b  ....U.vV.p | 00000910: 38dd 1815 fb09 55be 7656 b970 48a5 6947  8.....U.vV
00000920: c224 0892 f15a 1f4a 1229 3724 7451 1c62  .$...Z.J.) | 00000920: 277b c224 0892 f15a 1f4a 1229 3724 7451  '{.$...Z.J
00000930: 68b8 cd95 7067 e5f7 a4bc 4e28 51cd 9be8  h...pg.... | 00000930: 1c62 68b8 cd95 7067 e5f7 a4bc 4e28 51cd  .bh...pg..
00000940: ae87 9dea d8ba 5aa1 019a dcf0 dd6a 1d6a  ......Z... | 00000940: 9be8 ae87 9dea d8ba 5aa1 019a dcf0 dd6a  ........Z.
00000950: d83e 5723 9ea6 1e04 629a ffd7 05ca b71f  .>W#....b. | 00000950: 1d6a d83e 5723 9ea6 1e04 629a ffd7 05ca  .j.>W#....
00000960: 3fc0 0a48 bc94 b0b6 6562 e0c1 54e5 a32a  ?..H....eb | 00000960: b71f 3fc0 0a48 bc94 b0b6 6562 e0c1 54e5  ..?..H....
00000970: ad20 c4e9 e6bb dcc8 f6b5 c332 a398 cc77  . ........ | 00000970: a32a ad20 c4e9 e6bb dcc8 f6b5 c332 a398  .*. ......
00000980: a8e6 7965 072b cb28 fe3a 1652 81ce 520c  ..ye.+.(.: | 00000980: cc77 a8e6 7965 072b cb28 fe3a 1652 81ce  .w..ye.+.(
00000990: 2e5f 83e8 d506 33fb 776c ce40 ea32 9e1f  ._....3.wl | 00000990: 520c 2e5f 83e8 d506 33fb 776c ce40 ea32  R.._....3.
000009a0: 925c 41c1 746c 5b5d 0a5f 33cc 4d9f ac38  .\A.tl[]._ | 000009a0: 9e1f 925c 41c1 746c 5b5d 0a5f 33cc 4d9f  ...\A.tl[]
000009b0: f02f 7b2c 629d d9a3 916f 251b 2f90 b119  ./{,b....o | 000009b0: ac38 f02f 7b2c 629d d9a3 916f 251b 2f90  .8./{,b...
000009c0: 463d f67e 1ba6 7a87 b9a3 7a6d 18fa 25a5  F=.~..z... | 000009c0: b119 463d f67e 1ba6 7a87 b9a3 7a6d 18fa  ..F=.~..z.
000009d0: 9187 15e0 f216 2f58 b006 2f2c 6826 c64b  ....../X.. | 000009d0: 25a5 9187 15e0 f216 2f58 b006 2f2c 6826  %......./X
000009e0: 98cd da9f 0cf9 7f90 ed43 4a12 444e 6f73  .........C | 000009e0: c64b 98cd da9f 0cf9 7f90 ed43 4a12 444e  .K........
000009f0: 7a28 eaa4 aa6e 7b4c 7d87 dde0 c902 44a7  z(...n{L}. | 000009f0: 6f73 7a28 eaa4 aa6e 7b4c 7d87 dde0 c902  osz(...n{L
00000a00: 87af c334 5bb4 4222 9401 1259 0801 1255  ...4[.B".. | 00000a00: 44a7 87af c334 5bb4 4222 9401 1259 0801  D....4[.B"
00000a10: 4f50 5f44 5550 204f 505f 4841 5348 3136  OP_DUP OP_ | 00000a10: 1255 4f50 5f44 5550 204f 505f 4841 5348  .UOP_DUP O
00000a20: 3020 3430 3433 3731 3730 3566 6139 6264  0 40437170 | 00000a20: 3136 3020 3430 3433 3731 3730 3566 6139  160 404371
00000a30: 3738 3961 3266 6364 3532 6432 6335 3830  789a2fcd52 | 00000a30: 6264 3738 3961 3266 6364 3532 6432 6335  bd789a2fcd
00000a40: 6236 3564 3335 3534 3964 204f 505f 4551  b65d35549d | 00000a40: 3830 6236 3564 3335 3534 3964 204f 505f  80b65d3554
00000a50: 5541 4c56 4552 4946 5920 4f50 5f43 4845  UALVERIFY  | 00000a50: 4551 5541 4c56 4552 4946 5920 4f50 5f43  EQUALVERIF
00000a60: 434b 5349 4718 8ffe a9e3 0520 bc83 aae3  CKSIG..... | 00000a60: 4845 434b 5349 4718 8ffe a9e3 0520 bc83  HECKSIG...
00000a70: 052a 0e74 6573 7420 7465 7374 2074 6573  .*.test te | 00000a70: aae3 052a 0e74 6573 7420 7465 7374 2074  ...*.test 
00000a80: 7432 1b68 7474 7073 3a2f 2f61 7069 2e62  t2.https:/ | 00000a80: 6573 7432 1b68 7474 7073 3a2f 2f61 7069  est2.https
00000a90: 6f75 6e74 792e 6361 7368 2f70 6179 2a00  ounty.cash | 00000a90: 2e62 6f75 6e74 792e 6361 7368 2f70 6179  .bounty.ca
                                                              > 00000aa0: 2a00                                     *.
pipizdos commented 4 years ago

@jimtendo so current implementation doesn't work for all clients?

afk11 commented 4 years ago

Hi, sorry for the delay posting here..

@pipizdos you're correct to mention that - there are some weird issues with BIP70 and protobufs, where implementations can serialize things differently. It's possible bitpay are using a different protobuf format to what everyone else is using.

A notable example is that the payment_details_version field is usually omitted during serialization if the value matches the default! However, some people will sign the data without omitting the field, and the signature will fail to validate.

I did write some extra codec thing to experiment with it (https://github.com/bip70/bip70-php/blob/master/src/Protobuf/Codec/NonDiscardingBinaryCodec.php)

but yea, it's one of many reasons the community now discourages BIP70.

sonofliberty commented 4 years ago

I merged some of your pull requests (thank you) into my fork. Works flawlessly now.

=> https://github.com/sonofliberty/bip70-php