conceal 0.1.0 → 0.2.0
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 +7 -0
- data/CHANGELOG.md +10 -0
- data/README.md +21 -5
- data/bin/conceal +5 -0
- data/conceal.gemspec +2 -0
- data/lib/conceal/cli.rb +54 -0
- data/lib/conceal/version.rb +1 -1
- metadata +35 -31
- data/bin/decrypt +0 -42
- data/bin/encrypt +0 -42
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 4a702eefd1ed82b3c014f4b89edaf6ca14e30242
|
4
|
+
data.tar.gz: da0bb21cc6c2c856646546971c9f41ee35179f53
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ff85d8c71613582a185520487e16776c1c7a400140ee0d8a6053b3cd6355b2f86e9f99818b2a56356a82d11c4d575a601dfbc7cb8f8d944d49a8120ed816f781
|
7
|
+
data.tar.gz: 1d178801b039dbb3aee4bd004c820659ddf135ef6362f19a17edd3a7f7514c07da0a43d5b9171f50a5861cf3628edd7d278e9efc08c6561a3a243f464833acd9
|
data/CHANGELOG.md
ADDED
data/README.md
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
# Conceal
|
2
2
|
|
3
|
-
Simple OpenSSL-based string encryption using a shared secret. The algorithm, initialization vector, salt, crypttext, and HMAC are all encoded into a single string
|
4
|
-
so it is easy to copy around.
|
3
|
+
Simple OpenSSL-based string encryption using a shared secret. The algorithm, initialization vector, salt, crypttext, and HMAC are all encoded into a single string so it is easy to copy around.
|
5
4
|
|
6
5
|
## Requirements
|
7
6
|
|
@@ -11,23 +10,40 @@ so it is easy to copy around.
|
|
11
10
|
|
12
11
|
Add this line to your application's Gemfile:
|
13
12
|
|
14
|
-
|
13
|
+
```ruby
|
14
|
+
gem 'conceal'
|
15
|
+
```
|
15
16
|
|
16
17
|
And then execute:
|
17
18
|
|
18
|
-
|
19
|
+
```
|
20
|
+
$ bundle
|
21
|
+
```
|
19
22
|
|
20
23
|
Or install it yourself as:
|
21
24
|
|
22
|
-
|
25
|
+
```
|
26
|
+
$ gem install conceal
|
27
|
+
```
|
23
28
|
|
24
29
|
## Usage
|
25
30
|
|
31
|
+
This gem provides both a ruby library and some command-line utilities.
|
32
|
+
|
33
|
+
### Library
|
34
|
+
|
26
35
|
```ruby
|
27
36
|
encrypted = Conceal.encrypt('some plaintext', key: 'your shared secret', algorithm: 'aes-256-cbc')
|
28
37
|
decrypted = Conceal.decrypt(encrypted, key: 'your shared secret')
|
29
38
|
```
|
30
39
|
|
40
|
+
### Command-line
|
41
|
+
|
42
|
+
```
|
43
|
+
$ ruby -rsecurerandom -e 'print SecureRandom.urlsafe_base64(32)' | conceal encrypt key.file | pbcopy
|
44
|
+
$ pbpaste | conceal decrypt key.file | pbcopy
|
45
|
+
```
|
46
|
+
|
31
47
|
## Authors
|
32
48
|
|
33
49
|
* Ben Scott (<gamepoet@gmail.com>)
|
data/bin/conceal
ADDED
data/conceal.gemspec
CHANGED
@@ -20,6 +20,8 @@ Gem::Specification.new do |spec|
|
|
20
20
|
|
21
21
|
spec.required_ruby_version = '>= 1.9.3'
|
22
22
|
|
23
|
+
spec.add_dependency 'thor', '~> 0.18'
|
24
|
+
|
23
25
|
spec.add_development_dependency 'bundler', '~> 1.6'
|
24
26
|
spec.add_development_dependency 'rake', '>= 0.8.7'
|
25
27
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
data/lib/conceal/cli.rb
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'thor'
|
2
|
+
|
3
|
+
module Conceal
|
4
|
+
class CLI < Thor
|
5
|
+
map %w(d de dec) => :decrypt
|
6
|
+
map %w(e en enc) => :encrypt
|
7
|
+
map %w(-v --version) => :version
|
8
|
+
|
9
|
+
option :newline, aliases: '-n', type: :boolean, desc: 'print a trailing newline character'
|
10
|
+
desc 'decrypt [OPTIONS] KEY_FILE', 'decrypt stdin using the given key file'
|
11
|
+
def decrypt(key_file)
|
12
|
+
require 'conceal'
|
13
|
+
|
14
|
+
# load the key
|
15
|
+
raise Thor::Error, 'ERROR: key file is not readable or does not exist' unless File.readable?(key_file)
|
16
|
+
key = IO.read(key_file)
|
17
|
+
|
18
|
+
# decrypt from stdin
|
19
|
+
encrypted_data = $stdin.read
|
20
|
+
plaintext = Conceal.decrypt(encrypted_data, key: key)
|
21
|
+
|
22
|
+
$stdout.write(plaintext)
|
23
|
+
$stdout.write("\n") if options[:newline]
|
24
|
+
end
|
25
|
+
|
26
|
+
option :newline, aliases: '-n', type: :boolean, desc: 'print a trailing newline character'
|
27
|
+
desc 'encrypt [OPTIONS] KEY_FILE', 'encrypt stdin using the given key file'
|
28
|
+
def encrypt(key_file)
|
29
|
+
require 'conceal'
|
30
|
+
|
31
|
+
# load the key
|
32
|
+
raise Thor::Error, 'ERROR: key file is not readable or does not exist' unless File.readable?(key_file)
|
33
|
+
key = IO.read(key_file)
|
34
|
+
|
35
|
+
# encrypt from stdin
|
36
|
+
plaintext = $stdin.read
|
37
|
+
encrypted_data = Conceal.encrypt(plaintext, key: key)
|
38
|
+
|
39
|
+
$stdout.write(encrypted_data)
|
40
|
+
$stdout.write("\n") if options[:newline]
|
41
|
+
end
|
42
|
+
|
43
|
+
desc 'version', 'display the version and exit'
|
44
|
+
def version
|
45
|
+
require 'conceal/version'
|
46
|
+
puts VERSION
|
47
|
+
end
|
48
|
+
|
49
|
+
protected
|
50
|
+
def self.exit_on_failure?
|
51
|
+
true
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
data/lib/conceal/version.rb
CHANGED
metadata
CHANGED
@@ -1,115 +1,119 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: conceal
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.2.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Ben Scott
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2014-
|
11
|
+
date: 2014-09-05 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: thor
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.18'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.18'
|
14
27
|
- !ruby/object:Gem::Dependency
|
15
28
|
name: bundler
|
16
29
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
30
|
requirements:
|
19
|
-
- - ~>
|
31
|
+
- - "~>"
|
20
32
|
- !ruby/object:Gem::Version
|
21
33
|
version: '1.6'
|
22
34
|
type: :development
|
23
35
|
prerelease: false
|
24
36
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
37
|
requirements:
|
27
|
-
- - ~>
|
38
|
+
- - "~>"
|
28
39
|
- !ruby/object:Gem::Version
|
29
40
|
version: '1.6'
|
30
41
|
- !ruby/object:Gem::Dependency
|
31
42
|
name: rake
|
32
43
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
44
|
requirements:
|
35
|
-
- -
|
45
|
+
- - ">="
|
36
46
|
- !ruby/object:Gem::Version
|
37
47
|
version: 0.8.7
|
38
48
|
type: :development
|
39
49
|
prerelease: false
|
40
50
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
51
|
requirements:
|
43
|
-
- -
|
52
|
+
- - ">="
|
44
53
|
- !ruby/object:Gem::Version
|
45
54
|
version: 0.8.7
|
46
55
|
- !ruby/object:Gem::Dependency
|
47
56
|
name: rspec
|
48
57
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
58
|
requirements:
|
51
|
-
- - ~>
|
59
|
+
- - "~>"
|
52
60
|
- !ruby/object:Gem::Version
|
53
61
|
version: '3.0'
|
54
62
|
type: :development
|
55
63
|
prerelease: false
|
56
64
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
65
|
requirements:
|
59
|
-
- - ~>
|
66
|
+
- - "~>"
|
60
67
|
- !ruby/object:Gem::Version
|
61
68
|
version: '3.0'
|
62
69
|
description: Encrypts and decrypts strings using OpenSSL.
|
63
70
|
email:
|
64
71
|
- gamepoet@gmail.com
|
65
72
|
executables:
|
66
|
-
-
|
67
|
-
- encrypt
|
73
|
+
- conceal
|
68
74
|
extensions: []
|
69
75
|
extra_rdoc_files: []
|
70
76
|
files:
|
71
|
-
- .gitignore
|
72
|
-
- .rspec
|
73
|
-
- .travis.yml
|
77
|
+
- ".gitignore"
|
78
|
+
- ".rspec"
|
79
|
+
- ".travis.yml"
|
80
|
+
- CHANGELOG.md
|
74
81
|
- Gemfile
|
75
82
|
- LICENSE
|
76
83
|
- README.md
|
77
84
|
- Rakefile
|
78
|
-
- bin/
|
79
|
-
- bin/encrypt
|
85
|
+
- bin/conceal
|
80
86
|
- conceal.gemspec
|
81
87
|
- lib/conceal.rb
|
88
|
+
- lib/conceal/cli.rb
|
82
89
|
- lib/conceal/version.rb
|
83
90
|
- spec/conceal_spec.rb
|
84
91
|
- spec/spec_helper.rb
|
85
92
|
homepage: https://github.com/gamepoet/conceal
|
86
93
|
licenses:
|
87
94
|
- MIT
|
95
|
+
metadata: {}
|
88
96
|
post_install_message:
|
89
97
|
rdoc_options: []
|
90
98
|
require_paths:
|
91
99
|
- lib
|
92
100
|
required_ruby_version: !ruby/object:Gem::Requirement
|
93
|
-
none: false
|
94
101
|
requirements:
|
95
|
-
- -
|
102
|
+
- - ">="
|
96
103
|
- !ruby/object:Gem::Version
|
97
104
|
version: 1.9.3
|
98
105
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
99
|
-
none: false
|
100
106
|
requirements:
|
101
|
-
- -
|
107
|
+
- - ">="
|
102
108
|
- !ruby/object:Gem::Version
|
103
109
|
version: '0'
|
104
|
-
segments:
|
105
|
-
- 0
|
106
|
-
hash: 3065879142632505148
|
107
110
|
requirements: []
|
108
111
|
rubyforge_project:
|
109
|
-
rubygems_version:
|
112
|
+
rubygems_version: 2.2.2
|
110
113
|
signing_key:
|
111
|
-
specification_version:
|
114
|
+
specification_version: 4
|
112
115
|
summary: Simple OpenSSL-based string encryption.
|
113
116
|
test_files:
|
114
117
|
- spec/conceal_spec.rb
|
115
118
|
- spec/spec_helper.rb
|
119
|
+
has_rdoc:
|
data/bin/decrypt
DELETED
@@ -1,42 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
require 'conceal'
|
3
|
-
require 'optparse'
|
4
|
-
|
5
|
-
class Options < Struct.new(:trailing_newline)
|
6
|
-
end
|
7
|
-
|
8
|
-
def main
|
9
|
-
opts = Options.new
|
10
|
-
opts.trailing_newline = true
|
11
|
-
|
12
|
-
OptionParser.new do |o|
|
13
|
-
o.banner = 'Usage: decrypt KEY_FILE'
|
14
|
-
o.on('-h', '--help', 'show this message') do
|
15
|
-
puts o
|
16
|
-
exit(0)
|
17
|
-
end
|
18
|
-
o.on('-n', "don't print the trailing newline") do
|
19
|
-
opts.trailing_newline = false
|
20
|
-
end
|
21
|
-
o.on('-v', '--version', 'print the version') do
|
22
|
-
puts Conceal::VERSION
|
23
|
-
end
|
24
|
-
end.parse!(ARGV)
|
25
|
-
|
26
|
-
# read the key file
|
27
|
-
if ARGV.empty?
|
28
|
-
$stderr.puts "Missing KEY_FILE argument"
|
29
|
-
exit(1)
|
30
|
-
end
|
31
|
-
key_file = ARGV.shift
|
32
|
-
key = IO.read(key_file)
|
33
|
-
|
34
|
-
# decrypt from stdin
|
35
|
-
encrypted_data = $stdin.read
|
36
|
-
plaintext = Conceal.decrypt(encrypted_data, key: key)
|
37
|
-
|
38
|
-
$stdout.write(plaintext)
|
39
|
-
$stdout.write("\n") if opts.trailing_newline
|
40
|
-
end
|
41
|
-
|
42
|
-
main
|
data/bin/encrypt
DELETED
@@ -1,42 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
require 'conceal'
|
3
|
-
require 'optparse'
|
4
|
-
|
5
|
-
class Options < Struct.new(:trailing_newline)
|
6
|
-
end
|
7
|
-
|
8
|
-
def main
|
9
|
-
opts = Options.new
|
10
|
-
opts.trailing_newline = true
|
11
|
-
|
12
|
-
OptionParser.new do |o|
|
13
|
-
o.banner = 'Usage: encrypt KEY_FILE'
|
14
|
-
o.on('-h', '--help', 'show this message') do
|
15
|
-
puts o
|
16
|
-
exit(0)
|
17
|
-
end
|
18
|
-
o.on('-n', "don't print the trailing newline") do
|
19
|
-
opts.trailing_newline = false
|
20
|
-
end
|
21
|
-
o.on('-v', '--version', 'print the version') do
|
22
|
-
puts Conceal::VERSION
|
23
|
-
end
|
24
|
-
end.parse!(ARGV)
|
25
|
-
|
26
|
-
# read the key file
|
27
|
-
if ARGV.empty?
|
28
|
-
$stderr.puts "Missing KEY_FILE argument"
|
29
|
-
exit(1)
|
30
|
-
end
|
31
|
-
key_file = ARGV.shift
|
32
|
-
key = IO.read(key_file)
|
33
|
-
|
34
|
-
# encrypt from stdin
|
35
|
-
plaintext = $stdin.read
|
36
|
-
encrypted_data = Conceal.encrypt(plaintext, key: key)
|
37
|
-
|
38
|
-
$stdout.write(encrypted_data)
|
39
|
-
$stdout.write("\n") if opts.trailing_newline
|
40
|
-
end
|
41
|
-
|
42
|
-
main
|