gitlab-license 2.2.2 → 2.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a061df608a1fce9d44d099ca2ec27c78f57954560d014ea3810a6a104d84e76c
4
- data.tar.gz: fc39825338f1e87996be207d2d16c0ad0fe809217614b91edd10b3df0a102a13
3
+ metadata.gz: 7446407f434ff04d36c14ef4ee97be748000280b8abf6e23b83ca6a78a6f1ce5
4
+ data.tar.gz: 8604082fe40f6684eeec09a90f6c7fccc25a0e8df672637889d39894b92efc1d
5
5
  SHA512:
6
- metadata.gz: ef5ee9e933e196a77dee538f4222fe42eb9b68b5d8b6520e6a32e99fd5186eed592eef7062bfb55702e747b780488dfaf42d7f1e99ca6b8a6a7462c23fd9a7d8
7
- data.tar.gz: dbb5a8a59e70b4d315115a622118987c718e19f0df7686026cb43bbd189c3d22a98ed64b9f155d4c41f9e7bda656ccd306eb1060a39e72270993d390fbd329d4
6
+ metadata.gz: 05e748a228c17e433a5b725835e79e66b564fe82fb3ebb922e80e9b892c61e27caf4dd518a9ea6d1f086d16d1bd405bb36ee8c4fc1ccf73db1110d3f49d0e44b
7
+ data.tar.gz: ba3caed401ef9783d01c1fe16c7e8cf1807e21c35b61ea99d0be3b127d9f6c815a9b28c56c32e28eac6b4b4bad5d60ffee4ea58a198b1ca23649e08e1503d946
@@ -1,5 +1,5 @@
1
1
  module Gitlab
2
2
  class License
3
- VERSION = '2.2.2'.freeze
3
+ VERSION = '2.3.0'.freeze
4
4
  end
5
5
  end
@@ -15,6 +15,7 @@ module Gitlab
15
15
 
16
16
  class << self
17
17
  attr_reader :encryption_key
18
+ attr_reader :fallback_decryption_keys
18
19
  @encryption_key = nil
19
20
 
20
21
  def encryption_key=(key)
@@ -24,6 +25,19 @@ module Gitlab
24
25
  @encryptor = nil
25
26
  end
26
27
 
28
+ def fallback_decryption_keys=(keys)
29
+ unless keys
30
+ @fallback_decryption_keys = nil
31
+ return
32
+ end
33
+
34
+ unless keys.is_a?(Enumerable) && keys.all? { |key| key.is_a?(OpenSSL::PKey::RSA) }
35
+ raise ArgumentError, 'Invalid fallback RSA encryption keys provided.'
36
+ end
37
+
38
+ @fallback_decryption_keys = Array(keys)
39
+ end
40
+
27
41
  def encryptor
28
42
  @encryptor ||= Encryptor.new(encryption_key)
29
43
  end
@@ -33,11 +47,7 @@ module Gitlab
33
47
 
34
48
  data = Boundary.remove_boundary(data)
35
49
 
36
- begin
37
- license_json = encryptor.decrypt(data)
38
- rescue Encryptor::Error
39
- raise ImportError, 'License data could not be decrypted.'
40
- end
50
+ license_json = decrypt_with_fallback_keys(data)
41
51
 
42
52
  begin
43
53
  attributes = JSON.parse(license_json)
@@ -47,6 +57,22 @@ module Gitlab
47
57
 
48
58
  new(attributes)
49
59
  end
60
+
61
+ def decrypt_with_fallback_keys(data)
62
+ keys_to_try = Array(encryption_key)
63
+ keys_to_try += fallback_decryption_keys if fallback_decryption_keys
64
+
65
+ keys_to_try.each do |decryption_key|
66
+ begin
67
+ decryptor = Encryptor.new(decryption_key)
68
+ return decryptor.decrypt(data)
69
+ rescue Encryptor::Error
70
+ next
71
+ end
72
+ end
73
+
74
+ raise ImportError, 'License data could not be decrypted.'
75
+ end
50
76
  end
51
77
 
52
78
  attr_reader :version
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitlab-license
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.2
4
+ version: 2.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Douwe Maan
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2023-05-05 00:00:00.000000000 Z
13
+ date: 2023-06-07 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
@@ -140,7 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
140
140
  - !ruby/object:Gem::Version
141
141
  version: '0'
142
142
  requirements: []
143
- rubygems_version: 3.1.6
143
+ rubygems_version: 3.4.13
144
144
  signing_key:
145
145
  specification_version: 4
146
146
  summary: gitlab-license helps you generate, verify and enforce software licenses.