mobile-secrets 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/bin/mobile-secrets +1 -74
- data/lib/mobile-secrets.rb +75 -0
- data/lib/src/secrets_handler.rb +16 -4
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 96bdba0202a6a478beea1f412bbac5e8abd333af7f3f605dfb7ca6e09fb892de
|
4
|
+
data.tar.gz: 20545830edba12a31d17e141fe4330790fce4110eb401756c497d64c93ea28d5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8563eabd178ac86fd1b65da16a1686c275f364e0033b6801536069039a00f66285273629b34f1fb3eda32156d8166155dc43fa0df746880d80d5cc7578b2153f
|
7
|
+
data.tar.gz: 1c5ed3422664c6c8139053994fc7cf6f7f1c43baf0f3e687e581421478bb6a052334befa76c783e71410758d503c5ec0b78ad710fe2ab3e43f61280ef7817b6d
|
data/bin/mobile-secrets
CHANGED
@@ -1,79 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
require_relative '../lib/
|
2
|
+
require_relative '../lib/mobile-secrets'
|
3
3
|
require "dotgpg"
|
4
4
|
|
5
|
-
module MobileSecrets
|
6
|
-
class Cli
|
7
|
-
|
8
|
-
def header
|
9
|
-
"Mobile Secrets HELP:
|
10
|
-
##############################################################################################################################
|
11
|
-
## %# #%%%( ##% ,%%% (%%/ *%%%% ,%%%/ .%%( (%%, #%%%#.(%%# #%%*.#%%% ,%%%%%.%%%%. #%%%%.#%%%.*%% %%%%*#%% ##
|
12
|
-
## % #%%%( % *%%%# /%%%( *%%%% %%%%, %%%* %, (%%%# #( .%%%( %% (%%%# %%%% %%%%. .%.*% %%%%* #% ##
|
13
|
-
## #%%%( %%%%# /%%%% *%%%% %%%%. .%%%%%%#. (%%%( ,% %%%%( ,# (%%%# .%%%% .%%%%. (* ,( %%%%* .# ##
|
14
|
-
## #%%%( %%%%# /%%%% /%%%% *%%%* *%%%%%%%% (%%%((%% %%%%( (%%%#.#%#, .%%%%.%%* %%%%, ##
|
15
|
-
## #%%%( #%%%# /%%%% /%%%% .( (%%%%%# (%%%( ,% %%%%( (%%%# *%%%# .%%%%. #* %%%%, ##
|
16
|
-
## %%%%( %%%# /%%%. /%%%% ,%, %%%/ (%%%( (# (%%%( *# #%%%# .%%%% .%%%% #, %%%%, ##
|
17
|
-
## %%%%%%( /%%**%%( ,%%%%%( ,%%#. /%%* #%%%(./%%# *%%# .## #%%%# .%%%%#/ .%%%% ,%%, %%%%, ##
|
18
|
-
##############################################################################################################################"
|
19
|
-
end
|
20
|
-
|
21
|
-
def options
|
22
|
-
opt = ""
|
23
|
-
opt << "--init-gpg PATH \t\tInitialize GPG in the directory.\n"
|
24
|
-
opt << "--create-template \t\tCreates a template yml file to configure the MobileSecrets\n"
|
25
|
-
opt << "--import SECRETS_PATH \tAdds MobileSecrets to GPG secrets\n"
|
26
|
-
opt << "--export PATH \t\t\tCreates source file with obfuscated secrets at given PATH\n"
|
27
|
-
opt << "--usage \t\t\tManual for using MobileSecrets.\n\n"
|
28
|
-
opt << "Examples:\n"
|
29
|
-
opt << "--import \"./MobileSecrets.yml\"\n"
|
30
|
-
opt << "--export \"./Project/Src\"\n"
|
31
|
-
opt << "--init-gpg \".\""
|
32
|
-
opt
|
33
|
-
end
|
34
|
-
|
35
|
-
def usage
|
36
|
-
usage = ""
|
37
|
-
usage << "1) Create gpg first with --init-gpg \".\"\n"
|
38
|
-
usage << "2) Create a template for MobileSecrets with --create-template\n"
|
39
|
-
usage << "3) Configure MobileSecrets.yml with your hash key, secrets etc\n"
|
40
|
-
usage << "4) Import edited template to encrypted secret.gpg with --import\n"
|
41
|
-
usage << "5) Export secrets from secrets.gpg to source file with --export and PATH to project\n"
|
42
|
-
usage << "6) Add exported source file to the project\n"
|
43
|
-
end
|
44
|
-
|
45
|
-
def perform_action command, argv_1, argv_2
|
46
|
-
case command
|
47
|
-
when "--create-template"
|
48
|
-
FileUtils.cp("#{__dir__}/../lib/resources/example.yml", "#{Dir.pwd}#{File::SEPARATOR}MobileSecrets.yml")
|
49
|
-
when "--export"
|
50
|
-
return print_options if argv_1 == nil
|
51
|
-
|
52
|
-
secrets_handler = MobileSecrets::SecretsHandler.new
|
53
|
-
secrets_handler.export_secrets argv_1
|
54
|
-
when "--init-gpg"
|
55
|
-
return print_options if argv_1 == nil
|
56
|
-
|
57
|
-
Dotgpg::Cli.new.init(argv_1)
|
58
|
-
when "--import"
|
59
|
-
return print_options if argv_1 == nil
|
60
|
-
|
61
|
-
dotgpg = Dotgpg::Dir.new("#{Dir.pwd}/")
|
62
|
-
file = IO.read argv_1
|
63
|
-
dotgpg.encrypt "./secrets.gpg", file
|
64
|
-
when "--usage"
|
65
|
-
puts usage
|
66
|
-
else
|
67
|
-
print_options
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
def print_options
|
72
|
-
puts "#{header}\n\n#{options}" #Wrong action selected
|
73
|
-
end
|
74
|
-
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
5
|
cmd, argv_1, argv_2 = ARGV[0], ARGV[1], ARGV[2]
|
79
6
|
MobileSecrets::Cli.new.perform_action cmd, argv_1, argv_2
|
@@ -0,0 +1,75 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require_relative 'src/secrets_handler'
|
3
|
+
require "dotgpg"
|
4
|
+
|
5
|
+
module MobileSecrets
|
6
|
+
class Cli
|
7
|
+
|
8
|
+
def header
|
9
|
+
"Mobile Secrets HELP:
|
10
|
+
##############################################################################################################################
|
11
|
+
## %# #%%%( ##% ,%%% (%%/ *%%%% ,%%%/ .%%( (%%, #%%%#.(%%# #%%*.#%%% ,%%%%%.%%%%. #%%%%.#%%%.*%% %%%%*#%% ##
|
12
|
+
## % #%%%( % *%%%# /%%%( *%%%% %%%%, %%%* %, (%%%# #( .%%%( %% (%%%# %%%% %%%%. .%.*% %%%%* #% ##
|
13
|
+
## #%%%( %%%%# /%%%% *%%%% %%%%. .%%%%%%#. (%%%( ,% %%%%( ,# (%%%# .%%%% .%%%%. (* ,( %%%%* .# ##
|
14
|
+
## #%%%( %%%%# /%%%% /%%%% *%%%* *%%%%%%%% (%%%((%% %%%%( (%%%#.#%#, .%%%%.%%* %%%%, ##
|
15
|
+
## #%%%( #%%%# /%%%% /%%%% .( (%%%%%# (%%%( ,% %%%%( (%%%# *%%%# .%%%%. #* %%%%, ##
|
16
|
+
## %%%%( %%%# /%%%. /%%%% ,%, %%%/ (%%%( (# (%%%( *# #%%%# .%%%% .%%%% #, %%%%, ##
|
17
|
+
## %%%%%%( /%%**%%( ,%%%%%( ,%%#. /%%* #%%%(./%%# *%%# .## #%%%# .%%%%#/ .%%%% ,%%, %%%%, ##
|
18
|
+
##############################################################################################################################"
|
19
|
+
end
|
20
|
+
|
21
|
+
def options
|
22
|
+
opt = ""
|
23
|
+
opt << "--init-gpg PATH \t\tInitialize GPG in the directory.\n"
|
24
|
+
opt << "--create-template \t\tCreates a template yml file to configure the MobileSecrets\n"
|
25
|
+
opt << "--import SECRETS_PATH \tAdds MobileSecrets to GPG secrets\n"
|
26
|
+
opt << "--export PATH \t\t\tCreates source file with obfuscated secrets at given PATH\n"
|
27
|
+
opt << "--usage \t\t\tManual for using MobileSecrets.\n\n"
|
28
|
+
opt << "Examples:\n"
|
29
|
+
opt << "--import \"./MobileSecrets.yml\"\n"
|
30
|
+
opt << "--export \"./Project/Src\"\n"
|
31
|
+
opt << "--init-gpg \".\""
|
32
|
+
opt
|
33
|
+
end
|
34
|
+
|
35
|
+
def usage
|
36
|
+
usage = ""
|
37
|
+
usage << "1) Create gpg first with --init-gpg \".\"\n"
|
38
|
+
usage << "2) Create a template for MobileSecrets with --create-template\n"
|
39
|
+
usage << "3) Configure MobileSecrets.yml with your hash key, secrets etc\n"
|
40
|
+
usage << "4) Import edited template to encrypted secret.gpg with --import\n"
|
41
|
+
usage << "5) Export secrets from secrets.gpg to source file with --export and PATH to project\n"
|
42
|
+
usage << "6) Add exported source file to the project\n"
|
43
|
+
end
|
44
|
+
|
45
|
+
def perform_action command, argv_1, argv_2
|
46
|
+
case command
|
47
|
+
when "--create-template"
|
48
|
+
FileUtils.cp("#{__dir__}/../lib/resources/example.yml", "#{Dir.pwd}#{File::SEPARATOR}MobileSecrets.yml")
|
49
|
+
when "--export"
|
50
|
+
return print_options if argv_1 == nil
|
51
|
+
|
52
|
+
secrets_handler = MobileSecrets::SecretsHandler.new
|
53
|
+
secrets_handler.export_secrets argv_1
|
54
|
+
when "--init-gpg"
|
55
|
+
return print_options if argv_1 == nil
|
56
|
+
|
57
|
+
Dotgpg::Cli.new.init(argv_1)
|
58
|
+
when "--import"
|
59
|
+
return print_options if argv_1 == nil
|
60
|
+
|
61
|
+
file = IO.read argv_1
|
62
|
+
MobileSecrets::SecretsHandler.new.encrypt "./secrets.gpg", file, nil
|
63
|
+
when "--usage"
|
64
|
+
puts usage
|
65
|
+
else
|
66
|
+
print_options
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def print_options
|
71
|
+
puts "#{header}\n\n#{options}" #Wrong action selected
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
end
|
data/lib/src/secrets_handler.rb
CHANGED
@@ -6,8 +6,13 @@ module MobileSecrets
|
|
6
6
|
class SecretsHandler
|
7
7
|
|
8
8
|
def export_secrets path
|
9
|
-
|
10
|
-
|
9
|
+
decrypted_config = decrypt_secrets()
|
10
|
+
bytes = process_yaml_config decrypted_config
|
11
|
+
inject_secrets(bytes, "#{path}/secrets.swift")
|
12
|
+
end
|
13
|
+
|
14
|
+
def process_yaml_config yaml_string
|
15
|
+
config = YAML.load(yaml_string)["MobileSecrets"]
|
11
16
|
hash_key = config["hashKey"]
|
12
17
|
obfuscator = MobileSecrets::Obfuscator.new hash_key
|
13
18
|
|
@@ -19,10 +24,10 @@ module MobileSecrets
|
|
19
24
|
bytes << key.bytes << encrypted.bytes
|
20
25
|
end
|
21
26
|
|
22
|
-
|
27
|
+
bytes
|
23
28
|
end
|
24
29
|
|
25
|
-
def inject_secrets
|
30
|
+
def inject_secrets secret_bytes, file
|
26
31
|
template = IO.read "#{__dir__}/../resources/SecretsTemplate.swift"
|
27
32
|
secret_bytes = "#{secret_bytes}".gsub "],", "],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t"
|
28
33
|
bytes_variable = "private let bytes: [[UInt8]] = #{secret_bytes}"
|
@@ -31,6 +36,13 @@ module MobileSecrets
|
|
31
36
|
File.open(file, "w") { |f| f.puts swift_secrets }
|
32
37
|
end
|
33
38
|
|
39
|
+
def encrypt output_file_path, string, gpg_path
|
40
|
+
gpg_path = "." unless gpg_path
|
41
|
+
gpg_path = "#{Dir.pwd}/#{gpg_path}"
|
42
|
+
dotgpg = Dotgpg::Dir.new(gpg_path)
|
43
|
+
dotgpg.encrypt output_file_path, string
|
44
|
+
end
|
45
|
+
|
34
46
|
private
|
35
47
|
|
36
48
|
def decrypt_secrets
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mobile-secrets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cyril Cermak
|
@@ -34,6 +34,7 @@ extra_rdoc_files: []
|
|
34
34
|
files:
|
35
35
|
- Rakefile
|
36
36
|
- bin/mobile-secrets
|
37
|
+
- lib/mobile-secrets.rb
|
37
38
|
- lib/resources/SecretsTemplate.swift
|
38
39
|
- lib/resources/example.yml
|
39
40
|
- lib/src/obfuscator.rb
|
@@ -58,8 +59,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
58
59
|
- !ruby/object:Gem::Version
|
59
60
|
version: '0'
|
60
61
|
requirements: []
|
61
|
-
|
62
|
-
rubygems_version: 2.6.12
|
62
|
+
rubygems_version: 3.0.6
|
63
63
|
signing_key:
|
64
64
|
specification_version: 4
|
65
65
|
summary: mobile-secrets tool for handling your mobile secrets
|