truelayer-signing 0.1.2 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (87) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +10 -0
  3. data/README.md +12 -2
  4. data/examples/webhook-server/Gemfile +1 -0
  5. data/examples/webhook-server/Gemfile.lock +28 -3
  6. data/examples/webhook-server/main.rb +15 -14
  7. data/lib/truelayer-signing/jwt.rb +1 -1
  8. data/lib/truelayer-signing/signer.rb +3 -0
  9. data/lib/truelayer-signing/utils.rb +8 -1
  10. data/lib/truelayer-signing/verifier.rb +80 -20
  11. data/lib/truelayer-signing.rb +9 -1
  12. data/test/resources/failed-payment-expired-test-payload.json +12 -0
  13. data/test/resources/missing-zero-padding-test-jwks.json +19 -0
  14. data/test/resources/missing-zero-padding-test-payload.json +22 -0
  15. data/test/resources/missing-zero-padding-test-signature.txt +1 -0
  16. data/test/test-truelayer-signing.rb +141 -7
  17. data/truelayer-signing.gemspec +2 -2
  18. metadata +10 -75
  19. data/doc/CHANGELOG_md.html +0 -132
  20. data/doc/JWT/Decode.html +0 -97
  21. data/doc/JWT/Encode.html +0 -97
  22. data/doc/JWT/JWK/EC.html +0 -169
  23. data/doc/JWT/JWK.html +0 -91
  24. data/doc/JWT.html +0 -95
  25. data/doc/LICENSE-APACHE.html +0 -177
  26. data/doc/LICENSE-MIT.html +0 -105
  27. data/doc/README_md.html +0 -197
  28. data/doc/Rakefile.html +0 -106
  29. data/doc/TrueLayerSigning/Config.html +0 -211
  30. data/doc/TrueLayerSigning/Error.html +0 -97
  31. data/doc/TrueLayerSigning/JwsBase.html +0 -317
  32. data/doc/TrueLayerSigning/JwsHeader.html +0 -268
  33. data/doc/TrueLayerSigning/Signer.html +0 -186
  34. data/doc/TrueLayerSigning/Verifier.html +0 -327
  35. data/doc/TrueLayerSigning.html +0 -226
  36. data/doc/TrueLayerSigningExamples.html +0 -217
  37. data/doc/created.rid +0 -21
  38. data/doc/css/fonts.css +0 -167
  39. data/doc/css/rdoc.css +0 -662
  40. data/doc/examples/sign-request/Gemfile.html +0 -99
  41. data/doc/examples/sign-request/Gemfile_lock.html +0 -143
  42. data/doc/examples/sign-request/README_md.html +0 -138
  43. data/doc/examples/webhook-server/Gemfile.html +0 -99
  44. data/doc/examples/webhook-server/Gemfile_lock.html +0 -142
  45. data/doc/examples/webhook-server/README_md.html +0 -139
  46. data/doc/fonts/Lato-Light.ttf +0 -0
  47. data/doc/fonts/Lato-LightItalic.ttf +0 -0
  48. data/doc/fonts/Lato-Regular.ttf +0 -0
  49. data/doc/fonts/Lato-RegularItalic.ttf +0 -0
  50. data/doc/fonts/SourceCodePro-Bold.ttf +0 -0
  51. data/doc/fonts/SourceCodePro-Regular.ttf +0 -0
  52. data/doc/images/add.png +0 -0
  53. data/doc/images/arrow_up.png +0 -0
  54. data/doc/images/brick.png +0 -0
  55. data/doc/images/brick_link.png +0 -0
  56. data/doc/images/bug.png +0 -0
  57. data/doc/images/bullet_black.png +0 -0
  58. data/doc/images/bullet_toggle_minus.png +0 -0
  59. data/doc/images/bullet_toggle_plus.png +0 -0
  60. data/doc/images/date.png +0 -0
  61. data/doc/images/delete.png +0 -0
  62. data/doc/images/find.png +0 -0
  63. data/doc/images/loadingAnimation.gif +0 -0
  64. data/doc/images/macFFBgHack.png +0 -0
  65. data/doc/images/package.png +0 -0
  66. data/doc/images/page_green.png +0 -0
  67. data/doc/images/page_white_text.png +0 -0
  68. data/doc/images/page_white_width.png +0 -0
  69. data/doc/images/plugin.png +0 -0
  70. data/doc/images/ruby.png +0 -0
  71. data/doc/images/tag_blue.png +0 -0
  72. data/doc/images/tag_green.png +0 -0
  73. data/doc/images/transparent.png +0 -0
  74. data/doc/images/wrench.png +0 -0
  75. data/doc/images/wrench_orange.png +0 -0
  76. data/doc/images/zoom.png +0 -0
  77. data/doc/index.html +0 -118
  78. data/doc/js/darkfish.js +0 -84
  79. data/doc/js/navigation.js +0 -105
  80. data/doc/js/navigation.js.gz +0 -0
  81. data/doc/js/search.js +0 -110
  82. data/doc/js/search_index.js +0 -1
  83. data/doc/js/search_index.js.gz +0 -0
  84. data/doc/js/searcher.js +0 -229
  85. data/doc/js/searcher.js.gz +0 -0
  86. data/doc/table_of_contents.html +0 -269
  87. data/examples/sign-request/Gemfile.lock +0 -40
data/doc/css/rdoc.css DELETED
@@ -1,662 +0,0 @@
1
- /*
2
- * "Darkfish" Rdoc CSS
3
- * $Id: rdoc.css 54 2009-01-27 01:09:48Z deveiant $
4
- *
5
- * Author: Michael Granger <ged@FaerieMUD.org>
6
- *
7
- */
8
-
9
- /* vim: ft=css et sw=2 ts=2 sts=2 */
10
- /* Base Green is: #6C8C22 */
11
-
12
- .hide { display: none !important; }
13
-
14
- * { padding: 0; margin: 0; }
15
-
16
- body {
17
- background: #fafafa;
18
- font-family: Lato, sans-serif;
19
- font-weight: 300;
20
- }
21
-
22
- h1 span,
23
- h2 span,
24
- h3 span,
25
- h4 span,
26
- h5 span,
27
- h6 span {
28
- position: relative;
29
-
30
- display: none;
31
- padding-left: 1em;
32
- line-height: 0;
33
- vertical-align: baseline;
34
- font-size: 10px;
35
- }
36
-
37
- h1 span { top: -1.3em; }
38
- h2 span { top: -1.2em; }
39
- h3 span { top: -1.0em; }
40
- h4 span { top: -0.8em; }
41
- h5 span { top: -0.5em; }
42
- h6 span { top: -0.5em; }
43
-
44
- h1:hover span,
45
- h2:hover span,
46
- h3:hover span,
47
- h4:hover span,
48
- h5:hover span,
49
- h6:hover span {
50
- display: inline;
51
- }
52
-
53
- h1:target,
54
- h2:target,
55
- h3:target,
56
- h4:target,
57
- h5:target,
58
- h6:target {
59
- margin-left: -10px;
60
- border-left: 10px solid #f1edba;
61
- }
62
-
63
- :link,
64
- :visited {
65
- color: #6C8C22;
66
- text-decoration: none;
67
- }
68
-
69
- :link:hover,
70
- :visited:hover {
71
- border-bottom: 1px dotted #6C8C22;
72
- }
73
-
74
- code,
75
- pre {
76
- font-family: "Source Code Pro", Monaco, monospace;
77
- background-color: rgba(27,31,35,0.05);
78
- padding: 0em 0.2em;
79
- border-radius: 0.2em;
80
- }
81
-
82
- table {
83
- margin: 0;
84
- border-spacing: 0;
85
- border-collapse: collapse;
86
- }
87
-
88
- table tr th, table tr td {
89
- padding: 0.2em 0.4em;
90
- border: 1px solid #ccc;
91
- }
92
-
93
- table tr th {
94
- background-color: #eceaed;
95
- }
96
-
97
- table tr:nth-child(even) td {
98
- background-color: #f5f4f6;
99
- }
100
-
101
- /* @group Generic Classes */
102
-
103
- .initially-hidden {
104
- display: none;
105
- }
106
-
107
- #search-field {
108
- width: 98%;
109
- background: white;
110
- border: none;
111
- height: 1.5em;
112
- -webkit-border-radius: 4px;
113
- -moz-border-radius: 4px;
114
- border-radius: 4px;
115
- text-align: left;
116
- }
117
- #search-field:focus {
118
- background: #f1edba;
119
- }
120
- #search-field:-moz-placeholder,
121
- #search-field::-webkit-input-placeholder {
122
- font-weight: bold;
123
- color: #666;
124
- }
125
-
126
- .missing-docs {
127
- font-size: 120%;
128
- background: white url(../images/wrench_orange.png) no-repeat 4px center;
129
- color: #ccc;
130
- line-height: 2em;
131
- border: 1px solid #d00;
132
- opacity: 1;
133
- padding-left: 20px;
134
- text-indent: 24px;
135
- letter-spacing: 3px;
136
- font-weight: bold;
137
- -webkit-border-radius: 5px;
138
- -moz-border-radius: 5px;
139
- }
140
-
141
- .target-section {
142
- border: 2px solid #dcce90;
143
- border-left-width: 8px;
144
- padding: 0 1em;
145
- background: #fff3c2;
146
- }
147
-
148
- /* @end */
149
-
150
- /* @group Index Page, Standalone file pages */
151
- .table-of-contents ul {
152
- margin: 1em;
153
- list-style: none;
154
- }
155
-
156
- .table-of-contents ul ul {
157
- margin-top: 0.25em;
158
- }
159
-
160
- .table-of-contents ul :link,
161
- .table-of-contents ul :visited {
162
- font-size: 16px;
163
- }
164
-
165
- .table-of-contents li {
166
- margin-bottom: 0.25em;
167
- }
168
-
169
- .table-of-contents li .toc-toggle {
170
- width: 16px;
171
- height: 16px;
172
- background: url(../images/add.png) no-repeat;
173
- }
174
-
175
- .table-of-contents li .toc-toggle.open {
176
- background: url(../images/delete.png) no-repeat;
177
- }
178
-
179
- /* @end */
180
-
181
- /* @group Top-Level Structure */
182
-
183
- nav {
184
- float: left;
185
- width: 260px;
186
- font-family: Helvetica, sans-serif;
187
- font-size: 14px;
188
- border-right: 1px solid #ccc;
189
- position: sticky;
190
- top: 0;
191
- overflow: auto;
192
- height: calc(100vh - 100px); /* reduce the footer height */
193
- }
194
-
195
- main {
196
- display: block;
197
- margin: 0 2em 5em 260px;
198
- padding-left: 20px;
199
- min-width: 340px;
200
- font-size: 16px;
201
- }
202
-
203
- main h1,
204
- main h2,
205
- main h3,
206
- main h4,
207
- main h5,
208
- main h6 {
209
- font-family: Helvetica, sans-serif;
210
- }
211
-
212
- .table-of-contents main {
213
- margin-left: 2em;
214
- }
215
-
216
- #validator-badges {
217
- clear: both;
218
- margin: 1em 1em 2em;
219
- font-size: smaller;
220
- }
221
-
222
- /* @end */
223
-
224
- /* @group navigation */
225
- nav {
226
- margin-bottom: 1em;
227
- }
228
-
229
- nav .nav-section {
230
- margin-top: 2em;
231
- border-top: 2px solid #aaa;
232
- font-size: 90%;
233
- overflow: hidden;
234
- }
235
-
236
- nav h2 {
237
- margin: 0;
238
- padding: 2px 8px 2px 8px;
239
- background-color: #e8e8e8;
240
- color: #555;
241
- font-size: 125%;
242
- text-align: center;
243
- }
244
-
245
- nav h3,
246
- #table-of-contents-navigation {
247
- margin: 0;
248
- padding: 2px 8px 2px 8px;
249
- text-align: right;
250
- background-color: #e8e8e8;
251
- color: #555;
252
- }
253
-
254
- nav ul,
255
- nav dl,
256
- nav p {
257
- padding: 4px 8px 0;
258
- list-style: none;
259
- }
260
-
261
- #project-navigation .nav-section {
262
- margin: 0;
263
- border-top: 0;
264
- }
265
-
266
- #home-section h2 {
267
- text-align: center;
268
- }
269
-
270
- #table-of-contents-navigation {
271
- font-size: 1.2em;
272
- font-weight: bold;
273
- text-align: center;
274
- }
275
-
276
- #search-section {
277
- margin-top: 0;
278
- border-top: 0;
279
- }
280
-
281
- #search-field-wrapper {
282
- border-top: 1px solid #aaa;
283
- border-bottom: 1px solid #aaa;
284
- padding: 3px 8px;
285
- background-color: #e8e8e8;
286
- color: #555;
287
- }
288
-
289
- ul.link-list li {
290
- white-space: nowrap;
291
- line-height: 1.4em;
292
- }
293
-
294
- ul.link-list .type {
295
- font-size: 8px;
296
- text-transform: uppercase;
297
- color: white;
298
- background: #969696;
299
- padding: 2px 4px;
300
- -webkit-border-radius: 5px;
301
- }
302
-
303
- dl.note-list dt {
304
- float: left;
305
- margin-right: 1em;
306
- }
307
-
308
- .calls-super {
309
- background: url(../images/arrow_up.png) no-repeat right center;
310
- }
311
-
312
- .nav-section details summary {
313
- display: block;
314
- }
315
-
316
- .nav-section details summary::-webkit-details-marker {
317
- display: none;
318
- }
319
-
320
- .nav-section details summary:before {
321
- content: "";
322
- }
323
-
324
- .nav-section details summary:after {
325
- content: " \25B6"; /* BLACK RIGHT-POINTING TRIANGLE */
326
- }
327
- .nav-section details[open] > summary:after {
328
- content: " \25BD"; /* WHITE DOWN-POINTING TRIANGLE */
329
- }
330
-
331
- /* @end */
332
-
333
- /* @group Documentation Section */
334
- main {
335
- color: #333;
336
- }
337
-
338
- main > h1:first-child,
339
- main > h2:first-child,
340
- main > h3:first-child,
341
- main > h4:first-child,
342
- main > h5:first-child,
343
- main > h6:first-child {
344
- margin-top: 0px;
345
- }
346
-
347
- main sup {
348
- vertical-align: super;
349
- font-size: 0.8em;
350
- }
351
-
352
- /* The heading with the class name */
353
- main h1[class] {
354
- margin-top: 0;
355
- margin-bottom: 1em;
356
- font-size: 2em;
357
- color: #6C8C22;
358
- }
359
-
360
- main h1 {
361
- margin: 2em 0 0.5em;
362
- font-size: 1.7em;
363
- }
364
-
365
- main h2 {
366
- margin: 2em 0 0.5em;
367
- font-size: 1.5em;
368
- }
369
-
370
- main h3 {
371
- margin: 2em 0 0.5em;
372
- font-size: 1.2em;
373
- }
374
-
375
- main h4 {
376
- margin: 2em 0 0.5em;
377
- font-size: 1.1em;
378
- }
379
-
380
- main h5 {
381
- margin: 2em 0 0.5em;
382
- font-size: 1em;
383
- }
384
-
385
- main h6 {
386
- margin: 2em 0 0.5em;
387
- font-size: 1em;
388
- }
389
-
390
- main p {
391
- margin: 0 0 0.5em;
392
- line-height: 1.4em;
393
- }
394
-
395
- main pre {
396
- margin: 1.2em 0.5em;
397
- padding: 1em;
398
- font-size: 0.8em;
399
- }
400
-
401
- main hr {
402
- margin: 1.5em 1em;
403
- border: 2px solid #ddd;
404
- }
405
-
406
- main blockquote {
407
- margin: 0 2em 1.2em 1.2em;
408
- padding-left: 0.5em;
409
- border-left: 2px solid #ddd;
410
- }
411
-
412
- main ol,
413
- main ul {
414
- margin: 1em 2em;
415
- }
416
-
417
- main li > p {
418
- margin-bottom: 0.5em;
419
- }
420
-
421
- main dl {
422
- margin: 1em 0.5em;
423
- }
424
-
425
- main dt {
426
- margin-bottom: 0.5em;
427
- font-weight: bold;
428
- }
429
-
430
- main dd {
431
- margin: 0 1em 1em 0.5em;
432
- }
433
-
434
- main header h2 {
435
- margin-top: 2em;
436
- border-width: 0;
437
- border-top: 4px solid #bbb;
438
- font-size: 130%;
439
- }
440
-
441
- main header h3 {
442
- margin: 2em 0 1.5em;
443
- border-width: 0;
444
- border-top: 3px solid #bbb;
445
- font-size: 120%;
446
- }
447
-
448
- .documentation-section-title {
449
- position: relative;
450
- }
451
- .documentation-section-title .section-click-top {
452
- position: absolute;
453
- top: 6px;
454
- left: 12px;
455
- font-size: 10px;
456
- color: #9b9877;
457
- visibility: hidden;
458
- padding-left: 0.5px;
459
- }
460
-
461
- .documentation-section-title:hover .section-click-top {
462
- visibility: visible;
463
- }
464
-
465
- .constants-list > dl {
466
- margin: 1em 0 2em;
467
- border: 0;
468
- }
469
-
470
- .constants-list > dl dt {
471
- margin-bottom: 0.75em;
472
- padding-left: 0;
473
- font-family: "Source Code Pro", Monaco, monospace;
474
- font-size: 110%;
475
- }
476
-
477
- .constants-list > dl dt a {
478
- color: inherit;
479
- }
480
-
481
- .constants-list > dl dd {
482
- margin: 0 0 2em 0;
483
- padding: 0;
484
- color: #666;
485
- }
486
-
487
- .documentation-section h2 {
488
- position: relative;
489
- }
490
-
491
- .documentation-section h2 a {
492
- position: absolute;
493
- top: 8px;
494
- right: 10px;
495
- font-size: 12px;
496
- color: #9b9877;
497
- visibility: hidden;
498
- }
499
-
500
- .documentation-section h2:hover a {
501
- visibility: visible;
502
- }
503
-
504
- /* @group Method Details */
505
-
506
- main .method-source-code {
507
- max-height: 0;
508
- overflow: auto;
509
- transition-duration: 200ms;
510
- transition-delay: 0ms;
511
- transition-property: all;
512
- transition-timing-function: ease-in-out;
513
- }
514
-
515
- main .method-source-code.active-menu {
516
- max-height: 100vh;
517
- }
518
-
519
- main .method-description .method-calls-super {
520
- color: #333;
521
- font-weight: bold;
522
- }
523
-
524
- main .method-detail {
525
- margin-bottom: 2.5em;
526
- cursor: pointer;
527
- }
528
-
529
- main .method-detail:target {
530
- margin-left: -10px;
531
- border-left: 10px solid #f1edba;
532
- }
533
-
534
- main .method-heading {
535
- position: relative;
536
- font-family: "Source Code Pro", Monaco, monospace;
537
- font-size: 110%;
538
- font-weight: bold;
539
- color: #333;
540
- }
541
- main .method-heading :link,
542
- main .method-heading :visited {
543
- color: inherit;
544
- }
545
- main .method-click-advice {
546
- position: absolute;
547
- top: 2px;
548
- right: 5px;
549
- font-size: 12px;
550
- color: #9b9877;
551
- visibility: hidden;
552
- padding-right: 20px;
553
- line-height: 20px;
554
- background: url(../images/zoom.png) no-repeat right top;
555
- }
556
- main .method-heading:hover .method-click-advice {
557
- visibility: visible;
558
- }
559
-
560
- main .method-alias .method-heading {
561
- color: #666;
562
- }
563
-
564
- main .method-description,
565
- main .aliases {
566
- margin-top: 0.75em;
567
- color: #333;
568
- }
569
-
570
- main .aliases {
571
- padding-top: 4px;
572
- font-style: italic;
573
- cursor: default;
574
- }
575
- main .method-description ul {
576
- margin-left: 1.5em;
577
- }
578
-
579
- main #attribute-method-details .method-detail:hover {
580
- background-color: transparent;
581
- cursor: default;
582
- }
583
- main .attribute-access-type {
584
- text-transform: uppercase;
585
- padding: 0 1em;
586
- }
587
- /* @end */
588
-
589
- /* @end */
590
-
591
- /* @group Source Code */
592
-
593
- pre {
594
- margin: 0.5em 0;
595
- border: 1px dashed #999;
596
- padding: 0.5em;
597
- background: #262626;
598
- color: white;
599
- overflow: auto;
600
- }
601
-
602
- .ruby-constant { color: #7fffd4; background: transparent; }
603
- .ruby-keyword { color: #00ffff; background: transparent; }
604
- .ruby-ivar { color: #eedd82; background: transparent; }
605
- .ruby-operator { color: #00ffee; background: transparent; }
606
- .ruby-identifier { color: #ffdead; background: transparent; }
607
- .ruby-node { color: #ffa07a; background: transparent; }
608
- .ruby-comment { color: #dc0000; background: transparent; }
609
- .ruby-regexp { color: #ffa07a; background: transparent; }
610
- .ruby-value { color: #7fffd4; background: transparent; }
611
-
612
- /* @end */
613
-
614
-
615
- /* @group search results */
616
- #search-results {
617
- font-family: Lato, sans-serif;
618
- font-weight: 300;
619
- }
620
-
621
- #search-results .search-match {
622
- font-family: Helvetica, sans-serif;
623
- font-weight: normal;
624
- }
625
-
626
- #search-results .search-selected {
627
- background: #e8e8e8;
628
- border-bottom: 1px solid transparent;
629
- }
630
-
631
- #search-results li {
632
- list-style: none;
633
- border-bottom: 1px solid #aaa;
634
- margin-bottom: 0.5em;
635
- }
636
-
637
- #search-results li:last-child {
638
- border-bottom: none;
639
- margin-bottom: 0;
640
- }
641
-
642
- #search-results li p {
643
- padding: 0;
644
- margin: 0.5em;
645
- }
646
-
647
- #search-results .search-namespace {
648
- font-weight: bold;
649
- }
650
-
651
- #search-results li em {
652
- background: yellow;
653
- font-style: normal;
654
- }
655
-
656
- #search-results pre {
657
- margin: 0.5em;
658
- font-family: "Source Code Pro", Monaco, monospace;
659
- }
660
-
661
- /* @end */
662
-