jwt 1.5.4 → 2.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. checksums.yaml +5 -13
  2. data/.codeclimate.yml +6 -18
  3. data/.github/workflows/coverage.yml +27 -0
  4. data/.github/workflows/test.yml +67 -0
  5. data/.gitignore +7 -0
  6. data/.reek.yml +22 -0
  7. data/.rspec +1 -1
  8. data/.rubocop.yml +66 -1
  9. data/.sourcelevel.yml +17 -0
  10. data/AUTHORS +119 -0
  11. data/Appraisals +13 -0
  12. data/CHANGELOG.md +786 -0
  13. data/CODE_OF_CONDUCT.md +84 -0
  14. data/CONTRIBUTING.md +99 -0
  15. data/Gemfile +4 -1
  16. data/README.md +332 -79
  17. data/Rakefile +15 -0
  18. data/lib/jwt/algos/ecdsa.rb +64 -0
  19. data/lib/jwt/algos/eddsa.rb +35 -0
  20. data/lib/jwt/algos/hmac.rb +36 -0
  21. data/lib/jwt/algos/none.rb +17 -0
  22. data/lib/jwt/algos/ps.rb +43 -0
  23. data/lib/jwt/algos/rsa.rb +22 -0
  24. data/lib/jwt/algos/unsupported.rb +19 -0
  25. data/lib/jwt/algos.rb +44 -0
  26. data/lib/jwt/base64.rb +19 -0
  27. data/lib/jwt/claims_validator.rb +37 -0
  28. data/lib/jwt/configuration/container.rb +21 -0
  29. data/lib/jwt/configuration/decode_configuration.rb +46 -0
  30. data/lib/jwt/configuration/jwk_configuration.rb +27 -0
  31. data/lib/jwt/configuration.rb +15 -0
  32. data/lib/jwt/decode.rb +119 -30
  33. data/lib/jwt/encode.rb +69 -0
  34. data/lib/jwt/error.rb +10 -0
  35. data/lib/jwt/json.rb +11 -9
  36. data/lib/jwt/jwk/ec.rb +199 -0
  37. data/lib/jwt/jwk/hmac.rb +67 -0
  38. data/lib/jwt/jwk/key_base.rb +35 -0
  39. data/lib/jwt/jwk/key_finder.rb +62 -0
  40. data/lib/jwt/jwk/kid_as_key_digest.rb +15 -0
  41. data/lib/jwt/jwk/rsa.rb +138 -0
  42. data/lib/jwt/jwk/thumbprint.rb +26 -0
  43. data/lib/jwt/jwk.rb +52 -0
  44. data/lib/jwt/security_utils.rb +59 -0
  45. data/lib/jwt/signature.rb +35 -0
  46. data/lib/jwt/verify.rb +59 -44
  47. data/lib/jwt/version.rb +8 -3
  48. data/lib/jwt/x5c_key_finder.rb +55 -0
  49. data/lib/jwt.rb +16 -162
  50. data/ruby-jwt.gemspec +14 -8
  51. metadata +71 -84
  52. data/.travis.yml +0 -13
  53. data/Manifest +0 -8
  54. data/spec/fixtures/certs/ec256-private.pem +0 -8
  55. data/spec/fixtures/certs/ec256-public.pem +0 -4
  56. data/spec/fixtures/certs/ec256-wrong-private.pem +0 -8
  57. data/spec/fixtures/certs/ec256-wrong-public.pem +0 -4
  58. data/spec/fixtures/certs/ec384-private.pem +0 -9
  59. data/spec/fixtures/certs/ec384-public.pem +0 -5
  60. data/spec/fixtures/certs/ec384-wrong-private.pem +0 -9
  61. data/spec/fixtures/certs/ec384-wrong-public.pem +0 -5
  62. data/spec/fixtures/certs/ec512-private.pem +0 -10
  63. data/spec/fixtures/certs/ec512-public.pem +0 -6
  64. data/spec/fixtures/certs/ec512-wrong-private.pem +0 -10
  65. data/spec/fixtures/certs/ec512-wrong-public.pem +0 -6
  66. data/spec/fixtures/certs/rsa-1024-private.pem +0 -15
  67. data/spec/fixtures/certs/rsa-1024-public.pem +0 -6
  68. data/spec/fixtures/certs/rsa-2048-private.pem +0 -27
  69. data/spec/fixtures/certs/rsa-2048-public.pem +0 -9
  70. data/spec/fixtures/certs/rsa-2048-wrong-private.pem +0 -27
  71. data/spec/fixtures/certs/rsa-2048-wrong-public.pem +0 -9
  72. data/spec/fixtures/certs/rsa-4096-private.pem +0 -51
  73. data/spec/fixtures/certs/rsa-4096-public.pem +0 -14
  74. data/spec/jwt/verify_spec.rb +0 -175
  75. data/spec/jwt_spec.rb +0 -232
  76. data/spec/spec_helper.rb +0 -31
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- NDM3ZjQ5OWVjMGQ3NDYxZWRmZjAxNTQzZmU5YjlhODg4YzcwY2QzMg==
5
- data.tar.gz: !binary |-
6
- YmM3YWU5NTkxNDEzOGQyMTAzMTIyYzVmNWNhY2ZlMWU2NTFlZjliNQ==
2
+ SHA256:
3
+ metadata.gz: a3098671a837e7b291103cde1921277c61ecaa0f0797b955e6adc65328498f0d
4
+ data.tar.gz: 3253833ac6d7743e40a5d5157b161cd0daecc9b77f61dfa7687d6b3da1be56ca
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- NzA3NWQ4ZjQ4OWEyNTY5ZjE5NGYzMjBhZDkzMmZhOTdmNzcwMmMxNWI5MmYz
10
- N2E3MmE5NmQ1ZjlhZTU2ZDc3NDYxYzIxZjhkMjJjOGE1NDI5MDI4MmVmN2Fi
11
- ZGExYWMzOGI3ZDAxNWE2NzdhOWRjNjkzZjAxMjRmMGM0NTIwZDU=
12
- data.tar.gz: !binary |-
13
- OGQxM2IyM2E1ZTUzM2QzZjBlMmZiYzBiMGU4OGM5YjI5NTU0YjA2ZWQ3MDY3
14
- MjQ0ZDMxNTEzMWE0NzUzYjAxOGQ2MTAwZTFiMmU5YmYzZDFjYTVhNTdhOGVm
15
- N2Q3Mjk0ODMxYWI3NDg3M2IwYzA5MmMwYTgzNzhjM2U5YTJkODI=
6
+ metadata.gz: 306c946b1199301a3f1000c8ffba4a77d07fd05dd83f769da86fd29f254827b5af8488a4b6a54b11f1f7f3a028cb88caafb7ed67528e7004c0337f6506e595ea
7
+ data.tar.gz: 57d1eba7a06bc9d9f9fcb76b42aa3808415af5020c53969b4cada890b1646e7d348a96ce18010ab0a978e42825febbeb7b3f205b72e8ce60ef90132cf5887599
data/.codeclimate.yml CHANGED
@@ -1,20 +1,8 @@
1
- engines:
1
+ plugins:
2
+ fixme:
3
+ enabled: true
4
+ shellcheck:
5
+ enabled: true
2
6
  rubocop:
3
7
  enabled: true
4
- golint:
5
- enabled: false
6
- gofmt:
7
- enabled: false
8
- eslint:
9
- enabled: false
10
- csslint:
11
- enabled: false
12
-
13
- ratings:
14
- paths:
15
- - lib/**
16
- - "**.rb"
17
-
18
- exclude_paths:
19
- - spec/**/*
20
- - vendor/**/*
8
+ channel: rubocop-1-23-0
@@ -0,0 +1,27 @@
1
+ ---
2
+ name: coverage
3
+ on:
4
+ push:
5
+ branches:
6
+ - "master"
7
+ jobs:
8
+ coverage:
9
+ name: coverage
10
+ runs-on: ubuntu-20.04
11
+ env:
12
+ BUNDLE_GEMFILE: 'gemfiles/rbnacl.gemfile'
13
+ CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
14
+ steps:
15
+ - uses: actions/checkout@v2
16
+ - name: Install libsodium
17
+ run: |
18
+ sudo apt-get update -q
19
+ sudo apt-get install libsodium-dev -y
20
+ - name: Set up Ruby
21
+ uses: ruby/setup-ruby@v1
22
+ with:
23
+ ruby-version: "2.7"
24
+ bundler-cache: true
25
+ - uses: paambaati/codeclimate-action@v3.0.0
26
+ with:
27
+ coverageCommand: bundle exec rspec
@@ -0,0 +1,67 @@
1
+ ---
2
+ name: test
3
+ on:
4
+ push:
5
+ branches:
6
+ - "*"
7
+ pull_request:
8
+ branches:
9
+ - "*"
10
+ jobs:
11
+ lint:
12
+ name: RuboCop
13
+ timeout-minutes: 30
14
+ runs-on: ubuntu-latest
15
+ steps:
16
+ - uses: actions/checkout@v3
17
+ - name: Set up Ruby
18
+ uses: ruby/setup-ruby@v1
19
+ with:
20
+ ruby-version: "3.0"
21
+ bundler-cache: true
22
+ - name: Run RuboCop
23
+ run: bundle exec rubocop
24
+ test:
25
+ name: ${{ matrix.os }} - Ruby ${{ matrix.ruby }}
26
+ runs-on: ${{ matrix.os }}
27
+ strategy:
28
+ fail-fast: false
29
+ matrix:
30
+ os:
31
+ - ubuntu-20.04
32
+ ruby:
33
+ - "2.5"
34
+ - "2.6"
35
+ - "2.7"
36
+ - "3.0"
37
+ - "3.1"
38
+ gemfile:
39
+ - gemfiles/standalone.gemfile
40
+ - gemfiles/openssl.gemfile
41
+ - gemfiles/rbnacl.gemfile
42
+ experimental: [false]
43
+ include:
44
+ - { os: ubuntu-20.04, ruby: "2.7", gemfile: 'gemfiles/rbnacl.gemfile', experimental: false }
45
+ - { os: ubuntu-22.04, ruby: "3.1", experimental: false }
46
+ - { os: ubuntu-20.04, ruby: "truffleruby-head", experimental: true }
47
+ - { os: ubuntu-22.04, ruby: "head", experimental: true }
48
+ continue-on-error: ${{ matrix.experimental }}
49
+ env:
50
+ BUNDLE_GEMFILE: ${{ matrix.gemfile }}
51
+
52
+ steps:
53
+ - uses: actions/checkout@v3
54
+
55
+ - name: Install libsodium
56
+ run: |
57
+ sudo apt-get update -q
58
+ sudo apt-get install libsodium-dev -y
59
+
60
+ - name: Set up Ruby
61
+ uses: ruby/setup-ruby@v1
62
+ with:
63
+ ruby-version: ${{ matrix.ruby }}
64
+ bundler-cache: true
65
+
66
+ - name: Run tests
67
+ run: bundle exec rspec
data/.gitignore CHANGED
@@ -4,3 +4,10 @@ pkg
4
4
  Gemfile.lock
5
5
  coverage/
6
6
  .DS_Store
7
+ .rbenv-gemsets
8
+ .ruby-version
9
+ .vscode/
10
+ .bundle
11
+ *gemfile.lock
12
+ .byebug_history
13
+ *.gem
data/.reek.yml ADDED
@@ -0,0 +1,22 @@
1
+ ---
2
+ detectors:
3
+ TooManyStatements:
4
+ max_statements: 10
5
+ UtilityFunction:
6
+ enabled: false
7
+ LongParameterList:
8
+ enabled: false
9
+ DuplicateMethodCall:
10
+ max_calls: 2
11
+ IrresponsibleModule:
12
+ enabled: false
13
+ NestedIterators:
14
+ max_allowed_nesting: 2
15
+ UnusedParameters:
16
+ enabled: false
17
+ FeatureEnvy:
18
+ enabled: false
19
+ ControlParameter:
20
+ enabled: false
21
+ UnusedPrivateMethod:
22
+ enabled: false
data/.rspec CHANGED
@@ -1,2 +1,2 @@
1
+ --require spec_helper
1
2
  --color
2
- --format d
data/.rubocop.yml CHANGED
@@ -1,2 +1,67 @@
1
- Metrics/LineLength:
1
+ AllCops:
2
+ TargetRubyVersion: 2.5
3
+ NewCops: enable
4
+ SuggestExtensions: false
5
+ Exclude:
6
+ - 'gemfiles/*.gemfile'
7
+ - 'vendor/**/*'
8
+
9
+ Style/Documentation:
10
+ Enabled: false
11
+
12
+ Style/BlockDelimiters:
13
+ Exclude:
14
+ - spec/**/*_spec.rb
15
+
16
+ Style/GuardClause:
17
+ Enabled: false
18
+
19
+ Style/IfUnlessModifier:
20
+ Enabled: false
21
+
22
+ Style/Lambda:
23
+ Enabled: false
24
+
25
+ Style/RaiseArgs:
26
+ Enabled: false
27
+
28
+ Metrics/AbcSize:
29
+ Max: 25
30
+
31
+ Metrics/ClassLength:
32
+ Max: 112
33
+
34
+ Metrics/ModuleLength:
35
+ Max: 100
36
+
37
+ Metrics/MethodLength:
38
+ Max: 20
39
+
40
+ Metrics/BlockLength:
41
+ Exclude:
42
+ - spec/**/*_spec.rb
43
+
44
+ Layout/LineLength:
45
+ Enabled: false
46
+
47
+ Layout/EndAlignment:
48
+ EnforcedStyleAlignWith: variable
49
+
50
+ Layout/EmptyLineBetweenDefs:
51
+ Enabled: true
52
+ AllowAdjacentOneLineDefs: true
53
+
54
+ Style/FormatString:
55
+ Enabled: false
56
+
57
+ Layout/MultilineMethodCallIndentation:
58
+ EnforcedStyle: indented
59
+
60
+ Layout/MultilineOperationIndentation:
61
+ EnforcedStyle: indented
62
+
63
+ Style/WordArray:
64
+ Enabled: false
65
+
66
+ Gemspec/RequireMFA:
2
67
  Enabled: false
data/.sourcelevel.yml ADDED
@@ -0,0 +1,17 @@
1
+ engines:
2
+ reek:
3
+ enabled: true
4
+ fixme:
5
+ enabled: true
6
+ rubocop:
7
+ enabled: true
8
+ channel: latest
9
+ duplication:
10
+ config:
11
+ languages:
12
+ - ruby
13
+ enabled: true
14
+ remark-lint:
15
+ enabled: false
16
+ exclude_paths:
17
+ - spec
data/AUTHORS ADDED
@@ -0,0 +1,119 @@
1
+ Tim Rudat
2
+ Joakim Antman
3
+ Jeff Lindsay
4
+ A.B
5
+ shields
6
+ Bob Aman
7
+ Emilio Cristalli
8
+ Egon Zemmer
9
+ Zane Shannon
10
+ Nikita Shatov
11
+ Paul Battley
12
+ Oliver
13
+ blackanger
14
+ Ville Lautanala
15
+ Tyler Pickett
16
+ James Stonehill
17
+ Adam Michael
18
+ Martin Emde
19
+ Saverio Trioni
20
+ Peter M. Goldstein
21
+ Korstiaan de Ridder
22
+ Richard Larocque
23
+ Andrew Davis
24
+ Yason Khaburzaniya
25
+ Klaas Jan Wierenga
26
+ Nick Hammond
27
+ Bart de Water
28
+ Steve Sloan
29
+ Antonis Berkakis
30
+ Bill Mill
31
+ Kevin Olbrich
32
+ Simon Fish
33
+ jb08
34
+ lukas
35
+ Rodrigo López Dato
36
+ ojab
37
+ Ritikesh
38
+ sawyerzhang
39
+ Larry Lv
40
+ smudge
41
+ wohlgejm
42
+ Tom Wey
43
+ yann ARMAND
44
+ Brian Flethcer
45
+ Jurriaan Pruis
46
+ Erik Michaels-Ober
47
+ Matthew Simpson
48
+ Steven Davidovitz
49
+ Nicolas Leger
50
+ Pierre Michard
51
+ RahulBajaj
52
+ Rob Wygand
53
+ Ryan Brushett
54
+ Ryan McIlmoyl
55
+ Ryan Metzler
56
+ Severin Schoepke
57
+ Shaun Guth
58
+ Steve Teti
59
+ T.J. Schuck
60
+ Taiki Sugawara
61
+ Takehiro Adachi
62
+ Tobias Haar
63
+ Toby Pinder
64
+ Tomé Duarte
65
+ Travis Hunter
66
+ Yuji Yaginuma
67
+ Zuzanna Stolińska
68
+ aarongray
69
+ danielgrippi
70
+ fusagiko/takayamaki
71
+ mai fujii
72
+ nycvotes-dev
73
+ revodoge
74
+ rono23
75
+ antonmorant
76
+ Adam Greene
77
+ Alexander Boyd
78
+ Alexandr Kostrikov
79
+ Aman Gupta
80
+ Ariel Salomon
81
+ Arnaud Mesureur
82
+ Artsiom Kuts
83
+ Austin Kabiru
84
+ B
85
+ Bouke van der Bijl
86
+ Brandon Keepers
87
+ Dan Leyden
88
+ Dave Grijalva
89
+ Dmitry Pashkevich
90
+ Dorian Marié
91
+ Ernie Miller
92
+ Evgeni Golov
93
+ Ewoud Kohl van Wijngaarden
94
+ HoneyryderChuck
95
+ Igor Victor
96
+ Ilyaaaaaaaaaaaaa Zhitomirskiy
97
+ Jens Hausherr
98
+ Jeremiah Wuenschel
99
+ John Downey
100
+ Jordan Brough
101
+ Josh Bodah
102
+ JotaSe
103
+ Juanito Fatas
104
+ Julio Lopez
105
+ Katelyn Kasperowicz
106
+ Leonardo Saraiva
107
+ Lowell Kirsh
108
+ Loïc Lengrand
109
+ Lucas Mazza
110
+ Makoto Chiba
111
+ Manuel Bustillo
112
+ Marco Adkins
113
+ Meredith Leu
114
+ Micah Gates
115
+ Michał Begejowicz
116
+ Mike Eirih
117
+ Mike Pastore
118
+ Mingan
119
+ Mitch Birti
data/Appraisals ADDED
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ appraise 'standalone' do
4
+ # No additions
5
+ end
6
+
7
+ appraise 'openssl' do
8
+ gem 'openssl', '~> 2.1'
9
+ end
10
+
11
+ appraise 'rbnacl' do
12
+ gem 'rbnacl'
13
+ end