secure-keys 1.0.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +65 -37
- data/bin/{keys.rb → secure-keys} +2 -1
- data/lib/core/environment/ci.rb +1 -1
- data/lib/core/environment/keychain.rb +2 -2
- data/lib/core/globals/globals.rb +1 -1
- data/lib/core/utils/openssl/cipher.rb +1 -1
- data/lib/core/utils/swift/package.rb +1 -1
- data/lib/core/utils/swift/swift.rb +3 -3
- data/lib/core/utils/swift/writer.rb +9 -9
- data/lib/core/utils/swift/xcframework.rb +6 -6
- data/lib/keys.rb +16 -16
- data/lib/version.rb +5 -4
- metadata +27 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9bb9a148f4ac19f7be01927996960b0020bbcacbcf7fb7b96638782103f966e1
|
4
|
+
data.tar.gz: 558cb14cab97a77d118ef1b21f4c45501eb98a078d05e02e1898181d9cf7c214
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: df3de7c5d209a1b5d6f6193b1100d09ec5bfd74fb34ad67dd0612d31d72ba12d59b8ab2d340967ebea5db2090f92ad70d2e6bb3cba9638f99351cb404be5ad8c
|
7
|
+
data.tar.gz: 3f0b41426c81b87caa9326b81c92ef28bd508abae330813249c37ffe6cd43c1504d2310f77b463ae51d8079fe59b72a342d5e31ea9be64d5acba77db6a43e2c3
|
data/README.md
CHANGED
@@ -15,21 +15,40 @@ Utility to generate a `xcframework` for handling secure keys in iOS projects.
|
|
15
15
|
|
16
16
|
- Ruby 3.3.6 or higher
|
17
17
|
- iOS 13.0 or higher
|
18
|
+
- macOS 11.0 or higher
|
18
19
|
|
19
20
|
### Installation
|
20
21
|
|
21
|
-
|
22
|
+
You can install the `SecureKeys` utility using Homebrew using the following command:
|
22
23
|
|
23
24
|
```bash
|
24
|
-
|
25
|
+
brew tap derian-cordoba/secure-keys
|
26
|
+
|
27
|
+
brew install derian-cordoba/secure-keys/secure-keys
|
28
|
+
```
|
29
|
+
|
30
|
+
For more details, you can visit the [homebrew-secure-keys](https://github.com/derian-cordoba/homebrew-secure-keys) repository.
|
31
|
+
|
32
|
+
Another way, you can install the `SecureKeys` utility using `gem` command:
|
33
|
+
|
34
|
+
```bash
|
35
|
+
gem install secure-keys
|
36
|
+
```
|
37
|
+
|
38
|
+
If you using `bundler` you can add the `secure-keys` gem to the `Gemfile`:
|
39
|
+
|
40
|
+
```ruby
|
41
|
+
gem 'secure-keys'
|
25
42
|
```
|
26
43
|
|
27
|
-
|
44
|
+
Then, you can install the gem using:
|
28
45
|
|
29
46
|
```bash
|
30
|
-
|
47
|
+
bundle install
|
31
48
|
```
|
32
49
|
|
50
|
+
For more information about the gem, you can visit the [secure-keys](https://rubygems.org/gems/secure-keys) page.
|
51
|
+
|
33
52
|
## Usage
|
34
53
|
|
35
54
|
As first step, you need to determine the keys that you want to use in your iOS project. You can define the keys from Keychain or env variables.
|
@@ -95,21 +114,29 @@ export SECURE_KEYS_IDENTIFIER="github-token|api_key|firebaseToken"
|
|
95
114
|
|
96
115
|
### Ruby script
|
97
116
|
|
98
|
-
To generate the `
|
117
|
+
To generate the `SecureKeys.xcframework` use the `secure-keys` command in the iOS project root directory.
|
118
|
+
|
119
|
+
Using global gem:
|
99
120
|
|
100
121
|
```bash
|
101
|
-
|
122
|
+
secure-keys
|
123
|
+
```
|
124
|
+
|
125
|
+
Using bundler:
|
126
|
+
|
127
|
+
```bash
|
128
|
+
bundle exec secure-keys
|
102
129
|
```
|
103
130
|
|
104
131
|
### iOS project
|
105
132
|
|
106
|
-
Within the iOS project, you can use the `
|
133
|
+
Within the iOS project, you can use the `SecureKeys` target dependency like:
|
107
134
|
|
108
135
|
```swift
|
109
|
-
import
|
136
|
+
import SecureKeys
|
110
137
|
|
111
138
|
// Using key directly in the code
|
112
|
-
let apiKey =
|
139
|
+
let apiKey = SecureKey.apiKey.decryptedValue
|
113
140
|
|
114
141
|
// Using key from `Key` enum
|
115
142
|
let someKey: String = key(for: .someKey)
|
@@ -118,7 +145,7 @@ let someKey: String = key(for: .someKey)
|
|
118
145
|
let someKey: String = key(.someKey)
|
119
146
|
|
120
147
|
// Using raw value from `Key` enum
|
121
|
-
let apiKey:
|
148
|
+
let apiKey: SecureKey = "apiKey".secretKey
|
122
149
|
|
123
150
|
// Using raw value from `Key` enum with decrypted value
|
124
151
|
let apiKey: String = "apiKey".secretKey.decryptedValue
|
@@ -127,7 +154,7 @@ let apiKey: String = "apiKey".secretKey.decryptedValue
|
|
127
154
|
let apiKey: String = .key(for: .apiKey)
|
128
155
|
```
|
129
156
|
|
130
|
-
## How to install the `
|
157
|
+
## How to install the `SecureKeys.xcframework` in the iOS project
|
131
158
|
|
132
159
|
1. From the iOS project, click on the project target, select the `General` tab, and scroll down to the `Frameworks, Libraries, and Embedded Content` section.
|
133
160
|
|
@@ -137,55 +164,56 @@ let apiKey: String = .key(for: .apiKey)
|
|
137
164
|
|
138
165
|

|
139
166
|
|
140
|
-
3. Navigate to the `keys` directory and select the `
|
167
|
+
3. Navigate to the `keys` directory and select the `SecureKeys.xcframework` folder.
|
141
168
|
|
142
|
-

|
143
170
|
|
144
|
-
> Now the `
|
171
|
+
> Now the `SecureKeys.xcframework` is added to the iOS project.
|
145
172
|
|
146
|
-

|
147
174
|
|
148
175
|
4. Click on the `Build settings` tab and search for the `Search Paths` section.
|
149
176
|
|
150
177
|

|
151
178
|
|
152
|
-
> Add the path to the `
|
179
|
+
> Add the path to the `SecureKeys.xcframework` in the `Framework Search Paths` section.
|
153
180
|
|
154
181
|
```bash
|
155
182
|
$(inherited)
|
156
|
-
$(SRCROOT)/.keys
|
183
|
+
$(SRCROOT)/.secure-keys
|
157
184
|
```
|
158
185
|
|
159
186
|
## How it works
|
160
187
|
|
161
188
|
The process when the script is executed is:
|
162
189
|
|
163
|
-
1. Create a `.keys` directory.
|
164
|
-
2. Create a temporary `Swift Package` in the `.keys` directory.
|
190
|
+
1. Create a `.secure-keys` directory.
|
191
|
+
2. Create a temporary `Swift Package` in the `.secure-keys` directory.
|
165
192
|
3. Copy the `Keys` source code to the temporary `Swift Package`.
|
166
193
|
|
167
|
-
|
168
|
-
|
194
|
+
```swift
|
195
|
+
public enum SecureKey {
|
196
|
+
|
197
|
+
// MARK: - Cases
|
169
198
|
|
170
|
-
|
199
|
+
case apiKey
|
200
|
+
case someKey
|
201
|
+
case unknown
|
171
202
|
|
172
|
-
|
173
|
-
case someKey
|
174
|
-
case unknown
|
203
|
+
// MARK: - Properties
|
175
204
|
|
176
|
-
|
205
|
+
/// The decrypted value of the key
|
206
|
+
public var decryptedValue: String {
|
207
|
+
switch self {
|
208
|
+
case .apiKey: [1, 2, 4].decrypt(key: [248, 53, 26], iv: [148, 55, 47], tag: [119, 81])
|
209
|
+
case .someKey: [1, 2, 4].decrypt(key: [248, 53, 26], iv: [148, 55, 47], tag: [119, 81])
|
210
|
+
case .unknown: fatalError("Unknown key \(rawValue)")
|
211
|
+
}
|
212
|
+
}
|
213
|
+
}
|
214
|
+
```
|
177
215
|
|
178
|
-
|
179
|
-
public var decryptedValue: String {
|
180
|
-
switch self {
|
181
|
-
case .apiKey: [1, 2, 4].decrypt(key: [248, 53, 26], iv: [148, 55, 47], tag: [119, 81])
|
182
|
-
case .someKey: [1, 2, 4].decrypt(key: [248, 53, 26], iv: [148, 55, 47], tag: [119, 81])
|
183
|
-
case .unknown: fatalError("Unknown key \(rawValue)")
|
184
|
-
}
|
185
|
-
}
|
186
|
-
}
|
187
|
-
```
|
188
|
-
4. Generate the `Keys.xcframework` using the temporary `Swift Package`.
|
216
|
+
4. Generate the `SecureKeys.xcframework` using the temporary `Swift Package`.
|
189
217
|
5. Remove the temporary `Swift Package`.
|
190
218
|
|
191
219
|
## License
|
data/bin/{keys.rb → secure-keys}
RENAMED
data/lib/core/environment/ci.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'osx_keychain'
|
4
4
|
|
5
|
-
module
|
5
|
+
module SecureKeys
|
6
6
|
module Core
|
7
7
|
module Environment
|
8
8
|
class Keychain
|
@@ -20,7 +20,7 @@ module Keys
|
|
20
20
|
# @param key [String] the key of the keychain access item to fetch
|
21
21
|
# @return [String] the value of the keychain access item
|
22
22
|
def fetch(key:)
|
23
|
-
keychain[key,
|
23
|
+
keychain[key, SecureKeys::Globals.key_access_identifier]
|
24
24
|
rescue StandardError
|
25
25
|
puts "❌ Error fetching the key: #{key} from Keychain."
|
26
26
|
end
|
data/lib/core/globals/globals.rb
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
module
|
3
|
+
module SecureKeys
|
4
4
|
module Swift
|
5
5
|
# Constants
|
6
6
|
|
7
7
|
# The name of the directory that contains the keys
|
8
|
-
KEYS_DIRECTORY = '.keys'.freeze
|
8
|
+
KEYS_DIRECTORY = '.secure-keys'.freeze
|
9
9
|
|
10
10
|
# The name of the directory that contains the generated build
|
11
11
|
BUILD_DIRECTORY = 'Build'.freeze
|
12
12
|
|
13
13
|
# The name of the Swift Package
|
14
|
-
SWIFT_PACKAGE_NAME = '
|
14
|
+
SWIFT_PACKAGE_NAME = 'SecureKeys'.freeze
|
15
15
|
|
16
16
|
# The name of the directory that contains the generated Swift package
|
17
17
|
SWIFT_PACKAGE_DIRECTORY = "#{KEYS_DIRECTORY}/Package".freeze
|
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
require_relative './swift'
|
5
5
|
|
6
|
-
module
|
6
|
+
module SecureKeys
|
7
7
|
module Swift
|
8
8
|
class Writer
|
9
9
|
private
|
@@ -70,7 +70,7 @@ module Keys
|
|
70
70
|
///
|
71
71
|
/// - Returns: The decrypted value of the key
|
72
72
|
@available(iOS 13.0, *)
|
73
|
-
public func key(for key:
|
73
|
+
public func key(for key: SecureKey) -> String { key.decryptedValue }
|
74
74
|
|
75
75
|
/// Fetch the decrypted value of the key
|
76
76
|
///
|
@@ -79,13 +79,13 @@ module Keys
|
|
79
79
|
///
|
80
80
|
/// - Returns: The decrypted value of the key
|
81
81
|
@available(iOS 13.0, *)
|
82
|
-
public func key(_ key:
|
82
|
+
public func key(_ key: SecureKey) -> String { key.decryptedValue }
|
83
83
|
|
84
|
-
// MARK: -
|
84
|
+
// MARK: - SecureKey enum
|
85
85
|
|
86
86
|
/// Keys is a class that contains all the keys that are used in the application.
|
87
87
|
@available(iOS 13.0, *)
|
88
|
-
public enum
|
88
|
+
public enum SecureKey: String {
|
89
89
|
|
90
90
|
// MARK: - Cases
|
91
91
|
|
@@ -111,15 +111,15 @@ module Keys
|
|
111
111
|
}
|
112
112
|
}
|
113
113
|
|
114
|
-
// MARK: - String extension for keys
|
114
|
+
// MARK: - String extension for secure keys
|
115
115
|
|
116
116
|
@available(iOS 13.0, *)
|
117
117
|
extension String {
|
118
118
|
|
119
119
|
// MARK: - Methods
|
120
120
|
|
121
|
-
/// Fetch the key from the keys enum
|
122
|
-
public var secretKey:
|
121
|
+
/// Fetch the key from the secure keys enum
|
122
|
+
public var secretKey: SecureKey { SecureKey(rawValue: self) ?? .unknown }
|
123
123
|
|
124
124
|
/// Fetch the decrypted value of the key
|
125
125
|
///
|
@@ -127,7 +127,7 @@ module Keys
|
|
127
127
|
/// - key: The key to fetch the decrypted value for
|
128
128
|
///
|
129
129
|
/// - Returns: The decrypted value of the key
|
130
|
-
public static func key(for key:
|
130
|
+
public static func key(for key: SecureKey) -> String { key.decryptedValue }
|
131
131
|
}
|
132
132
|
|
133
133
|
// swiftlint:enable all
|
@@ -3,7 +3,7 @@
|
|
3
3
|
require_relative './swift'
|
4
4
|
require_relative '../../globals/globals'
|
5
5
|
|
6
|
-
module
|
6
|
+
module SecureKeys
|
7
7
|
module Swift
|
8
8
|
class XCFramework
|
9
9
|
# Generate the XCFramework from the Swift package
|
@@ -12,7 +12,7 @@ module Keys
|
|
12
12
|
# Currently this is failling with the following error:
|
13
13
|
# "library with the identifier 'ios-arm64' already exists."
|
14
14
|
%w[Release].each do |configuration|
|
15
|
-
|
15
|
+
SecureKeys::Globals.ios_platforms.each do |platform|
|
16
16
|
generate_key_modules(configuration:, platform:)
|
17
17
|
generate_key_libraries(configuration:, platform: platform[:path])
|
18
18
|
end
|
@@ -44,8 +44,8 @@ module Keys
|
|
44
44
|
def generate_key_libraries(configuration:, platform:)
|
45
45
|
command = <<~BASH
|
46
46
|
cd #{KEYS_DIRECTORY} &&
|
47
|
-
ar -crs #{BUILD_DIRECTORY}/#{configuration}-#{platform}/
|
48
|
-
#{BUILD_DIRECTORY}/#{configuration}-#{platform}
|
47
|
+
ar -crs #{BUILD_DIRECTORY}/#{configuration}-#{platform}/lib#{SWIFT_PACKAGE_NAME}.a \
|
48
|
+
#{BUILD_DIRECTORY}/#{configuration}-#{platform}/#{SWIFT_PACKAGE_NAME}.o
|
49
49
|
BASH
|
50
50
|
|
51
51
|
system(command)
|
@@ -71,8 +71,8 @@ module Keys
|
|
71
71
|
# Currently this is failling with the following error:
|
72
72
|
# "library with the identifier 'ios-arm64' already exists."
|
73
73
|
%w[Release].map do |configuration|
|
74
|
-
|
75
|
-
"-library #{BUILD_DIRECTORY}/#{configuration}-#{platform[:path]}/
|
74
|
+
SecureKeys::Globals.ios_platforms.map do |platform|
|
75
|
+
"-library #{BUILD_DIRECTORY}/#{configuration}-#{platform[:path]}/lib#{SWIFT_PACKAGE_NAME}.a"
|
76
76
|
end.join(' ')
|
77
77
|
end.join(' ')
|
78
78
|
end
|
data/lib/keys.rb
CHANGED
@@ -9,7 +9,7 @@ require_relative './core/utils/swift/swift'
|
|
9
9
|
require_relative './core/utils/swift/xcframework'
|
10
10
|
require_relative './core/utils/openssl/cipher'
|
11
11
|
|
12
|
-
module
|
12
|
+
module SecureKeys
|
13
13
|
class Generator
|
14
14
|
private
|
15
15
|
|
@@ -21,23 +21,23 @@ module Keys
|
|
21
21
|
# If the secure keys identifier is not set, set it to 'secure-keys'
|
22
22
|
ENV['SECURE_KEYS_IDENTIFIER'] = 'secure-keys' unless ENV.key?('SECURE_KEYS_IDENTIFIER')
|
23
23
|
|
24
|
-
puts "🔔 You're using a custom delimiter '#{
|
25
|
-
puts "🔔 You're using a custom key access identifier '#{
|
24
|
+
puts "🔔 You're using a custom delimiter '#{SecureKeys::Globals.key_delimiter}'" unless SecureKeys::Globals.key_delimiter.eql?(SecureKeys::Globals.default_key_delimiter)
|
25
|
+
puts "🔔 You're using a custom key access identifier '#{SecureKeys::Globals.key_access_identifier}'" unless SecureKeys::Globals.key_access_identifier.eql?(SecureKeys::Globals.default_key_access_identifier)
|
26
26
|
|
27
27
|
# Configure cipher
|
28
|
-
self.cipher =
|
28
|
+
self.cipher = SecureKeys::OpenSSL::Cipher.new
|
29
29
|
|
30
30
|
# Configure the secret source based on the environment
|
31
|
-
if
|
32
|
-
self.secrets_source =
|
31
|
+
if SecureKeys::Globals.ci?
|
32
|
+
self.secrets_source = SecureKeys::Core::Environment::CI.new
|
33
33
|
else
|
34
|
-
self.secrets_source =
|
34
|
+
self.secrets_source = SecureKeys::Core::Environment::Keychain.new
|
35
35
|
end
|
36
36
|
|
37
37
|
# Define the keys that we want to map
|
38
|
-
self.secret_keys = secrets_source.fetch(key:
|
38
|
+
self.secret_keys = secrets_source.fetch(key: SecureKeys::Globals.key_access_identifier)
|
39
39
|
.to_s
|
40
|
-
.split(
|
40
|
+
.split(SecureKeys::Globals.key_delimiter)
|
41
41
|
.map(&:strip)
|
42
42
|
|
43
43
|
# Add the keys that we want to map
|
@@ -52,14 +52,14 @@ module Keys
|
|
52
52
|
def setup
|
53
53
|
pre_actions
|
54
54
|
|
55
|
-
package =
|
55
|
+
package = SecureKeys::Swift::Package.new
|
56
56
|
package.generate
|
57
57
|
|
58
|
-
writer =
|
59
|
-
|
58
|
+
writer = SecureKeys::Swift::Writer.new(mapped_keys: mapped_keys,
|
59
|
+
secure_key_bytes: cipher.secure_key_bytes)
|
60
60
|
writer.write
|
61
61
|
|
62
|
-
xcframework =
|
62
|
+
xcframework = SecureKeys::Swift::XCFramework.new
|
63
63
|
xcframework.generate
|
64
64
|
|
65
65
|
post_actions
|
@@ -69,15 +69,15 @@ module Keys
|
|
69
69
|
|
70
70
|
def pre_actions
|
71
71
|
# Remove the keys directory
|
72
|
-
system("rm -rf #{
|
72
|
+
system("rm -rf #{SecureKeys::Swift::KEYS_DIRECTORY}")
|
73
73
|
end
|
74
74
|
|
75
75
|
def post_actions
|
76
76
|
# Remove the keys directory
|
77
|
-
system("rm -rf #{
|
77
|
+
system("rm -rf #{SecureKeys::Swift::SWIFT_PACKAGE_DIRECTORY}")
|
78
78
|
|
79
79
|
# Remove the build directory
|
80
|
-
system("rm -rf #{
|
80
|
+
system("rm -rf #{SecureKeys::Swift::KEYS_DIRECTORY}/#{SecureKeys::Swift::BUILD_DIRECTORY}")
|
81
81
|
end
|
82
82
|
end
|
83
83
|
end
|
data/lib/version.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
module
|
4
|
-
VERSION = '1.
|
5
|
-
SUMMARY = 'Keys is a simple tool for managing your secret keys'.freeze
|
6
|
-
DESCRIPTION = 'Keys is a simple tool to manage your secret keys in iOS
|
3
|
+
module SecureKeys
|
4
|
+
VERSION = '1.1.1'.freeze
|
5
|
+
SUMMARY = 'Secure Keys is a simple tool for managing your secret keys'.freeze
|
6
|
+
DESCRIPTION = 'Secure Keys is a simple tool to manage your secret keys in your iOS project'.freeze
|
7
|
+
HOMEPAGE_URI = 'https://github.com/DerianCordobaPerez/secure-keys-generator'.freeze
|
7
8
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: secure-keys
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Derian Córdoba
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-02-
|
11
|
+
date: 2025-02-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: base64
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 3.2.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: dotenv
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 3.1.7
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 3.1.7
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: json
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,11 +94,11 @@ dependencies:
|
|
80
94
|
- - "~>"
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: 1.71.2
|
83
|
-
description: Keys is a simple tool to manage your secret keys in iOS
|
97
|
+
description: Secure Keys is a simple tool to manage your secret keys in your iOS project
|
84
98
|
email:
|
85
99
|
- derianricardo451@gmail.com
|
86
100
|
executables:
|
87
|
-
- keys
|
101
|
+
- secure-keys
|
88
102
|
extensions: []
|
89
103
|
extra_rdoc_files: []
|
90
104
|
files:
|
@@ -99,15 +113,20 @@ files:
|
|
99
113
|
- "./lib/keys.rb"
|
100
114
|
- "./lib/version.rb"
|
101
115
|
- README.md
|
102
|
-
- bin/keys
|
116
|
+
- bin/secure-keys
|
103
117
|
homepage: https://github.com/DerianCordobaPerez/secure-keys-generator
|
104
118
|
licenses:
|
105
119
|
- MIT
|
106
|
-
metadata:
|
120
|
+
metadata:
|
121
|
+
bug_tracker_uri: https://github.com/DerianCordobaPerez/secure-keys-generator/issues
|
122
|
+
documentation_uri: https://github.com/DerianCordobaPerez/secure-keys-generator/blob/main/README.md
|
123
|
+
homepage_uri: https://github.com/DerianCordobaPerez/secure-keys-generator
|
124
|
+
source_code_uri: https://github.com/DerianCordobaPerez/secure-keys-generator
|
125
|
+
changelog_uri: https://github.com/DerianCordobaPerez/secure-keys-generator/releases
|
107
126
|
post_install_message:
|
108
127
|
rdoc_options: []
|
109
128
|
require_paths:
|
110
|
-
- lib
|
129
|
+
- "*/lib"
|
111
130
|
required_ruby_version: !ruby/object:Gem::Requirement
|
112
131
|
requirements:
|
113
132
|
- - ">="
|
@@ -122,5 +141,5 @@ requirements: []
|
|
122
141
|
rubygems_version: 3.5.22
|
123
142
|
signing_key:
|
124
143
|
specification_version: 4
|
125
|
-
summary: Keys is a simple tool for managing your secret keys
|
144
|
+
summary: Secure Keys is a simple tool for managing your secret keys
|
126
145
|
test_files: []
|