cript 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 90f3e92ed1a33ba2218e5e22dfc623d190cfaf10
4
+ data.tar.gz: cb952affc3f86d859acb5aaee30bc5c7930771ab
5
+ SHA512:
6
+ metadata.gz: a63dfcdc9e85458c9b2e55746b275d686778dab8484b6bace6724096277b0c1e335a093766e591d1ae67ff47e4cd2eb721f5f8a0355bf1fe8e9de97ab8e29c66
7
+ data.tar.gz: 274864c4cd0d8761ae8976774865d8c927c494fb5531031d8a8c6cecc489b485d120ef03c3005937fe981994244accc219cf658e6864b29ec3c31cbdd3ee8397
@@ -2,6 +2,7 @@ language: ruby
2
2
  rvm:
3
3
  - 1.9.3
4
4
  - 2.0.0
5
+ - 2.1.2
5
6
  - jruby-19mode
6
7
  - rbx-2.1.1
7
8
  script: bundle exec rspec spec
data/README.md CHANGED
@@ -45,13 +45,14 @@ Obviously, this will have performance implications.
45
45
 
46
46
  Cript::Simple is a simple wrapper around the ruby openssl bindings.
47
47
  Once created, you can call encrypt or decrypt on it to encrypt or decrypt strings.
48
- It requires access to an RSA public key to do encryption, and an RSA private key to do decryption.
49
- If not provided at initialization, it will look in $HOME/.ssh/id_rsa and $HOME/.ssh/id_rsa.pub.
48
+ It requires access to an an RSA private key. It can use only a public key if you're
49
+ doing one-way encryption.
50
+ If not provided at initialization, it will look in $HOME/.ssh/id_rsa and/or $HOME/.ssh/id_rsa.pub.
50
51
 
51
52
  If you don't want to use your default ssh keys, you can pass in paths to a different key pair.
52
53
 
53
54
  ```ruby
54
- c1 = Cript::Simple.new(public_key_path: '/path/to/some/ssh_key.pub', private_key_path: '/path/to/some/ssh_key')
55
+ c1 = Cript::Simple.new(private_key_path: '/path/to/some/ssh_key')
55
56
  plain = "More secret stuff!"
56
57
  encrypted = c2.encrypt(plain)
57
58
  decrypted = c2.decrypt(encrypted)
@@ -61,7 +62,6 @@ Or you can pass in the ssh keys as strings in PEM format:
61
62
 
62
63
  ```ruby
63
64
  c2 = Cript::Simple.new({
64
- public_key_content: "-----BEGIN PUBLIC KEY-----\nafaf...",
65
65
  private_key_path: "-----BEGIN RSA PRIVATE KEY-----\n3f4q..."
66
66
  })
67
67
  encrypted = c.encrypt("More secret stuff!")
@@ -72,13 +72,7 @@ Type `cript --help` after gem installation for usage.
72
72
 
73
73
  ## TODO
74
74
 
75
- [ ] plugable encryption
76
- [ ] gpg encryption
77
- [ ] plugable storage
78
- [ ] ssh storage
79
- [ ] s3 storage
80
- [ ] google drive storage
81
- [ ] drb storage
75
+ - [ ] gpg encryption option
82
76
 
83
77
  ## Contributing
84
78
 
@@ -1,13 +1,10 @@
1
1
  require "cript/version"
2
2
 
3
3
  module Cript
4
- PRIVATE_KEY = "-----BEGIN RSA PRIVATE KEY-----\nMIIEoQIBAAKCAQEArhk4ZdrUm73R8gIZ0w6oJpLvjjgu3YvKC3rWF6Hg9nmC52Md\nWD+L10LEKttfKai11s9E+qP+UwEjqq+VVqaTfQpgK/uwAw5t7UuBvYUqBN9J7Zoq\nfFOONTl6y86eEJYj1hkM7+/PP8r5G3C/FYw2AyuduAArWZixuBrdOY8umsUvqPGR\nKFJsvxfR3VGuL2Lq0YuaZlwPpmIimxFnGgpCaRcFRlIPWfSm7AQgAe11bV/vXx+6\nKYNGYT+dQeXZZA38KDRha7ibJbX0q06izWz4j01Dzo/gKMwEzMegbCMq+XyAKPAj\nXZhr7HmrclUZyzo+iMP51G3mEriG1HA7NFac8QIDAQABAoIBAHYxUQR1B5mjyIAP\nxRBwBuAJKPDYW5i0ajpY7jelAmDSJXiI5Ucf/QPqo9qki3pwuuJWXHH8G5CmWVxr\nT2tAMyjUfm3dtKSeiypp9G6BlQExxbK00tsMrqKbny3124FPLI0Q/KN3nq+kUHG8\nnT03rwN//NcJ5mQxMZXXRxDoj68pyHcCU6cMjweC1vEWMIABGTJVTxHfobIVmfI6\n8gnxdMxmkgyJHdKKwzztaKdDNl5ISlhtisnuF/cIT0dWBkAdO+aIgePPK0rOgCL8\nW/YZ8cSLSag7WJnPQPhODhGNsRXhDeemtZUD+MGJ4i0D/B5zXm3yRJhqrbkpiNDg\nO91InbECgYEA157UYoymjPaZk/Tz/5PpGte46oPTAztD56XIxdm7XPwITmeQ/qhs\nXeaN3n8wt/wAjilvtGSUna7wtJCHM/Y8iP6SHSP3Fa/24xuH9MtapzTGLgrk4guh\neG05tsAWjTiKfYpbtgs6cTbwQFkgJaiMNuymeg4yxX3h+AVw9H+nYK8CgYEAzrPE\na2I/LwBuyM5OWD2ztlEm5GkjADXdU6eUJEuuQZGh7fldXz82Ld1vOiRUN8LPBhCQ\nfvikid9ZBb2DqzdvkL0dMHw5kx6lV+8gPRScaSkD+g58MpUTv0NGKQM7nxdPSvPk\n7X72QwmqcnJbIS+Al6HpPVYmeFzqP2RE0wt5BF8Cfyr0eVsoqgVrGy1enz1LOiUe\n1LfjiyYZqG19mYHQ3oKnsv/rofcZln0ecSTiMdJ1YabwmlBVuUWwlENkh4rSgzzH\nelRT1eV8KLMVyP/7gxPMb668fNyLdJ+JIvZFTjjUCsL3zU127y2exD4Ng1n9OfG3\nM3MdYP/3FA1VCCutQqsCgYAlx0FdBwXZR1D4LoyvIAfaiJZ9JKIbBb0/7t7qi1J7\n9WwNHIhuQhVa6J/Nlpo13ssLprdiHXulH0cb/3kzL9yaLZZKKEo1k2JQ4gmYYE3+\nAlsRttgIPqrvSBJoqIibGR2K62yp44yK0Bdw92mkdRQhopwIc9hwIztE/sR9dhlW\nLQKBgQCjD01i0JTA+mKQk9zPQzduDfTqMx5DVRqndROaKkqpgasMb5wBCSCWddlS\nJRWbl6Yiwv5AZMcYWw5zjd83w7zD/XiQYGxLF2oVbWXFl/65Qxj0Oum/TWM32+LH\n2oUSPzpyvmzM16o7vHW+1sPIaPGt/y63UzKXqf4kJrs6Wy5ipQ==\n-----END RSA PRIVATE KEY-----\n"
5
- PUBLIC_KEY = "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArhk4ZdrUm73R8gIZ0w6o\nJpLvjjgu3YvKC3rWF6Hg9nmC52MdWD+L10LEKttfKai11s9E+qP+UwEjqq+VVqaT\nfQpgK/uwAw5t7UuBvYUqBN9J7ZoqfFOONTl6y86eEJYj1hkM7+/PP8r5G3C/FYw2\nAyuduAArWZixuBrdOY8umsUvqPGRKFJsvxfR3VGuL2Lq0YuaZlwPpmIimxFnGgpC\naRcFRlIPWfSm7AQgAe11bV/vXx+6KYNGYT+dQeXZZA38KDRha7ibJbX0q06izWz4\nj01Dzo/gKMwEzMegbCMq+XyAKPAjXZhr7HmrclUZyzo+iMP51G3mEriG1HA7NFac\n8QIDAQAB\n-----END PUBLIC KEY-----\n"
6
- KEY_SIZE = 2048
4
+ INSECURE_PRIVATE_KEY = "-----BEGIN RSA PRIVATE KEY-----\nMIIEoQIBAAKCAQEArhk4ZdrUm73R8gIZ0w6oJpLvjjgu3YvKC3rWF6Hg9nmC52Md\nWD+L10LEKttfKai11s9E+qP+UwEjqq+VVqaTfQpgK/uwAw5t7UuBvYUqBN9J7Zoq\nfFOONTl6y86eEJYj1hkM7+/PP8r5G3C/FYw2AyuduAArWZixuBrdOY8umsUvqPGR\nKFJsvxfR3VGuL2Lq0YuaZlwPpmIimxFnGgpCaRcFRlIPWfSm7AQgAe11bV/vXx+6\nKYNGYT+dQeXZZA38KDRha7ibJbX0q06izWz4j01Dzo/gKMwEzMegbCMq+XyAKPAj\nXZhr7HmrclUZyzo+iMP51G3mEriG1HA7NFac8QIDAQABAoIBAHYxUQR1B5mjyIAP\nxRBwBuAJKPDYW5i0ajpY7jelAmDSJXiI5Ucf/QPqo9qki3pwuuJWXHH8G5CmWVxr\nT2tAMyjUfm3dtKSeiypp9G6BlQExxbK00tsMrqKbny3124FPLI0Q/KN3nq+kUHG8\nnT03rwN//NcJ5mQxMZXXRxDoj68pyHcCU6cMjweC1vEWMIABGTJVTxHfobIVmfI6\n8gnxdMxmkgyJHdKKwzztaKdDNl5ISlhtisnuF/cIT0dWBkAdO+aIgePPK0rOgCL8\nW/YZ8cSLSag7WJnPQPhODhGNsRXhDeemtZUD+MGJ4i0D/B5zXm3yRJhqrbkpiNDg\nO91InbECgYEA157UYoymjPaZk/Tz/5PpGte46oPTAztD56XIxdm7XPwITmeQ/qhs\nXeaN3n8wt/wAjilvtGSUna7wtJCHM/Y8iP6SHSP3Fa/24xuH9MtapzTGLgrk4guh\neG05tsAWjTiKfYpbtgs6cTbwQFkgJaiMNuymeg4yxX3h+AVw9H+nYK8CgYEAzrPE\na2I/LwBuyM5OWD2ztlEm5GkjADXdU6eUJEuuQZGh7fldXz82Ld1vOiRUN8LPBhCQ\nfvikid9ZBb2DqzdvkL0dMHw5kx6lV+8gPRScaSkD+g58MpUTv0NGKQM7nxdPSvPk\n7X72QwmqcnJbIS+Al6HpPVYmeFzqP2RE0wt5BF8Cfyr0eVsoqgVrGy1enz1LOiUe\n1LfjiyYZqG19mYHQ3oKnsv/rofcZln0ecSTiMdJ1YabwmlBVuUWwlENkh4rSgzzH\nelRT1eV8KLMVyP/7gxPMb668fNyLdJ+JIvZFTjjUCsL3zU127y2exD4Ng1n9OfG3\nM3MdYP/3FA1VCCutQqsCgYAlx0FdBwXZR1D4LoyvIAfaiJZ9JKIbBb0/7t7qi1J7\n9WwNHIhuQhVa6J/Nlpo13ssLprdiHXulH0cb/3kzL9yaLZZKKEo1k2JQ4gmYYE3+\nAlsRttgIPqrvSBJoqIibGR2K62yp44yK0Bdw92mkdRQhopwIc9hwIztE/sR9dhlW\nLQKBgQCjD01i0JTA+mKQk9zPQzduDfTqMx5DVRqndROaKkqpgasMb5wBCSCWddlS\nJRWbl6Yiwv5AZMcYWw5zjd83w7zD/XiQYGxLF2oVbWXFl/65Qxj0Oum/TWM32+LH\n2oUSPzpyvmzM16o7vHW+1sPIaPGt/y63UzKXqf4kJrs6Wy5ipQ==\n-----END RSA PRIVATE KEY-----\n"
7
5
  end
8
6
 
9
7
  require "cript/cripter"
10
8
  require "cript/simple"
11
- require "cript/naive"
12
9
  require "cript/store"
13
10
  require "cript/ehash"
@@ -12,29 +12,39 @@ module Cript
12
12
 
13
13
  # Build a new cripter
14
14
  #
15
- # Options:
15
+ # opts:
16
16
  # public_key_content
17
17
  # private_key_content
18
18
  # public_key_path
19
19
  # private_key_path
20
20
  # passphrase
21
- def initialize(options = {})
22
- @opt = options
21
+ def initialize(opts = {})
22
+ @opts = opts
23
23
 
24
- unless [:public_key_content, :private_key_content, :public_key_path, :private_key_path].any? { |o| @opt[o] }
24
+ # Attempt to use the private key at the default location
25
+ # if exists and not otherwise specified
26
+ unless [:private_key_content, :private_key_path].any? { |o| @opts[o] }
25
27
  if File.file?("#{ENV['HOME']}/.ssh/id_rsa")
26
- @opt[:private_key_path] = "#{ENV['HOME']}/.ssh/id_rsa"
27
- end
28
- if File.file?("#{ENV['HOME']}/.ssh/id_rsa.pub")
29
- @opt[:public_key_path] = "#{ENV['HOME']}/.ssh/id_rsa.pub"
28
+ @opts[:private_key_path] = "#{ENV['HOME']}/.ssh/id_rsa"
30
29
  end
31
30
  end
32
31
 
33
- if [:private_key_content, :private_key_path].any? { |o| @opt[o] }
34
- @private_key = OpenSSL::PKey::RSA.new(*[key_content(:private), @opt.delete(:passphrase)])
32
+ if @opts[:private_key_content]
33
+ @private_key = OpenSSL::PKey::RSA.new(*[@opts[:private_key_content], @opts.delete(:passphrase)])
34
+ elsif @opts[:private_key_path] && File.file?(@opts[:private_key_path])
35
+ @private_key = OpenSSL::PKey::RSA.new(*[File.read(@opts[:private_key_path]), @opts.delete(:passphrase)])
35
36
  end
36
- if [:public_key_content, :public_key_path].any? { |o| @opt[o] }
37
- @public_key = OpenSSL::PKey::RSA.new(key_content)
37
+
38
+ if @private_key
39
+ @public_key = @private_key.public_key
40
+ else
41
+ if @opts[:public_key_content]
42
+ @public_key = OpenSSL::PKey::RSA.new(@opts[:public_key_content])
43
+ elsif @opts[:public_key_path] && File.file?(@opts[:public_key_path])
44
+ @public_key = OpenSSL::PKey::RSA.new(File.read(@opts[:public_key_path]))
45
+ elsif File.file?("#{ENV['HOME']}/.ssh/id_rsa.pub")
46
+ @public_key = OpenSSL::PKey::RSA.new(File.read("#{ENV['HOME']}/.ssh/id_rsa.pub"))
47
+ end
38
48
  end
39
49
  end
40
50
 
@@ -54,36 +64,5 @@ module Cript
54
64
  decrypt(encrypt(message))
55
65
  end
56
66
 
57
- private
58
-
59
- def key_content(type = :public)
60
- type = :private unless type == :public
61
- if @opt[:"#{type}_key_content"]
62
- @opt[:"#{type}_key_content"]
63
- elsif @opt[:"#{type}_key_path"]
64
- content = File.read(@opt[:"#{type}_key_path"])
65
- if content.include?("#{type.to_s.upcase} KEY")
66
- content
67
- else
68
- ssh_key_to_pem(@opt[:"#{type}_key_path"])
69
- end
70
- else
71
- raise Cript::Cripter::Error, "No #{type} key content"
72
- end
73
- end
74
-
75
- def ssh_key_to_pem(path)
76
- ssh_keygen("-f \"#{path}\" -e -m pem")
77
- end
78
-
79
- def ssh_keygen(cmd)
80
- ssh_keygen = %x{ which ssh-keygen }.to_s.strip
81
- if ssh_keygen != ""
82
- %x{ #{ssh_keygen} #{cmd} }.to_s.strip
83
- else
84
- raise "ssh-keygen not available"
85
- end
86
- end
87
-
88
67
  end
89
68
  end
@@ -10,8 +10,8 @@ module Cript
10
10
  METHODS = Hash.new.methods - Object.new.methods
11
11
  KEY = :data
12
12
 
13
- def initialize(file, options = {})
14
- @store = Store.new(file, options)
13
+ def initialize(file, opts = {})
14
+ @store = Store.new(file, opts)
15
15
  @store.transaction do
16
16
  unless @store[KEY].is_a?(Hash)
17
17
  @store[KEY] = {}
@@ -19,6 +19,10 @@ module Cript
19
19
  end
20
20
  end
21
21
 
22
+ def self.insecure(file, opts = {})
23
+ new(file, opts.merge({ private_key_content: INSECURE_PRIVATE_KEY }))
24
+ end
25
+
22
26
  def inspect
23
27
  "#<#{self.class.name} path='#{@store.path}'>"
24
28
  end
@@ -31,8 +35,8 @@ module Cript
31
35
  end
32
36
  end
33
37
 
34
- def respond_to?(sym)
35
- METHODS.include?(sym)
38
+ def respond_to_missing?(sym, include_private = false)
39
+ METHODS.include?(sym) || super
36
40
  end
37
41
 
38
42
  end
@@ -0,0 +1,59 @@
1
+ module Cript
2
+ class KeyInfo
3
+ def ssh_key_to_pem(path)
4
+ ssh_keygen("-f \"#{path}\" -e -m pem")
5
+ end
6
+
7
+ def ssh_keygen(cmd)
8
+ ssh_keygen = %x{ which ssh-keygen }.to_s.strip
9
+ if ssh_keygen != ""
10
+ %x{ #{ssh_keygen} #{cmd} }.to_s.strip
11
+ else
12
+ raise "ssh-keygen not available"
13
+ end
14
+ end
15
+
16
+ def type
17
+ @opt[:type] || key_info[:type]
18
+ end
19
+
20
+ def size
21
+ @opt[:size] || key_info[:size]
22
+ end
23
+
24
+ def fingerprint
25
+ @opt[:fingerprint] || key_info[:fingerprint]
26
+ end
27
+
28
+ def comment
29
+ @opt[:comment] || key_info[:comment]
30
+ end
31
+
32
+ def key_content(type = :public)
33
+ type = :private unless type == :public
34
+ if @opt[:"#{type}_key_content"]
35
+ @opt[:"#{type}_key_content"]
36
+ elsif @opt[:"#{type}_key_path"]
37
+ content = File.read(@opt[:"#{type}_key_path"])
38
+ if content.include?("#{type.to_s.upcase} KEY")
39
+ content
40
+ else
41
+ ssh_key_to_pem(@opt[:"#{type}_key_path"])
42
+ end
43
+ else
44
+ raise Cript::Cripter::Error, "No #{type} key content"
45
+ end
46
+ end
47
+
48
+ def key_info
49
+ @key_info ||= begin
50
+ if @opt[:public_key_path]
51
+ info = ssh_keygen("-l -f \"#{@opt[:public_key_path]}\"").split(/[\s]+/)
52
+ if info.length == 4
53
+ { size: info[0].to_i, fingerprint: info[1], comment: info[2], type: info[3].match(/([\w]+)/)[1].downcase }
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -10,45 +10,6 @@ module Cript
10
10
  # Performance is poor because rsa public keys were not meant to do this.
11
11
  class Naive < Cripter
12
12
 
13
- class Error < StandardError; end
14
-
15
- # Options:
16
- # public_key_content
17
- # private_key_content
18
- #
19
- # public_key_path
20
- # private_key_path
21
- #
22
- # passphrase
23
- #
24
- # type
25
- # size
26
- # fingerprint
27
- # comment
28
- def initialize(options = {})
29
- super
30
- end
31
-
32
- def inspect
33
- "#<#{self.class.name} path=#{@opt[:public_key_path]}>"
34
- end
35
-
36
- def type
37
- @opt[:type] || key_info[:type]
38
- end
39
-
40
- def size
41
- @opt[:size] || key_info[:size]
42
- end
43
-
44
- def fingerprint
45
- @opt[:fingerprint] || key_info[:fingerprint]
46
- end
47
-
48
- def comment
49
- @opt[:comment] || key_info[:comment]
50
- end
51
-
52
13
  def encrypt(message)
53
14
  Base64::encode64(
54
15
  message.
@@ -66,18 +27,5 @@ module Cript
66
27
  join
67
28
  end
68
29
 
69
- private
70
-
71
- def key_info
72
- @key_info ||= begin
73
- if @opt[:public_key_path]
74
- info = ssh_keygen("-l -f \"#{@opt[:public_key_path]}\"").split(/[\s]+/)
75
- if info.length == 4
76
- { size: info[0].to_i, fingerprint: info[1], comment: info[2], type: info[3].match(/([\w]+)/)[1].downcase }
77
- end
78
- end
79
- end
80
- end
81
-
82
30
  end
83
31
  end
@@ -17,14 +17,17 @@ module Cript
17
17
  #
18
18
  # passphrase
19
19
  # thread_safe
20
- def initialize(file, options = {})
21
- @opt = options
22
- crypt_class = options.delete(:crypt_class) || Cript::Simple
23
- @crypt = crypt_class.new(options)
24
- thread_safe = !!options.delete(:thread_safe)
20
+ def initialize(file, opts = {})
21
+ @opts = opts
22
+ @cript = Cript::Simple.new(@opts)
23
+ thread_safe = !!@opts.delete(:thread_safe)
25
24
  super(file, thread_safe)
26
25
  end
27
26
 
27
+ def self.insecure(file, opts = {})
28
+ new(file, opts.merge({ private_key_content: INSECURE_PRIVATE_KEY }))
29
+ end
30
+
28
31
  def inspect
29
32
  "#<#{self.class.name} path=#{path}>"
30
33
  end
@@ -35,12 +38,12 @@ module Cript
35
38
 
36
39
  # encrypt
37
40
  def dump(table)
38
- @crypt.encrypt(Marshal::dump(table))
41
+ @cript.encrypt(Marshal::dump(table))
39
42
  end
40
43
 
41
44
  # decrypt
42
45
  def load(content)
43
- Marshal::load(@crypt.decrypt(content))
46
+ Marshal::load(@cript.decrypt(content))
44
47
  end
45
48
 
46
49
  def marshal_dump_supports_canonical_option?
@@ -1,3 +1,3 @@
1
1
  module Cript
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -13,7 +13,7 @@ describe Cript::EHash do
13
13
  end
14
14
 
15
15
  it 'should encrypt and decrypt' do
16
- e = Cript::EHash.new(file, private_key_content: Cript::PRIVATE_KEY, public_key_content: Cript::PUBLIC_KEY)
16
+ e = Cript::EHash.insecure(file)
17
17
  data = 10.times.inject({}) { |data,i| data[SecureRandom.hex] = SecureRandom.random_bytes(4096); data }
18
18
  data.keys.each do |key|
19
19
  e[key] = data[key]
@@ -1,11 +1,10 @@
1
1
  require 'spec_helper'
2
+ require 'cript/naive'
2
3
 
3
4
  describe Cript::Naive do
4
5
  let(:naive) do
5
6
  Cript::Simple.new({
6
- private_key_content: Cript::PRIVATE_KEY,
7
- public_key_content: Cript::PUBLIC_KEY,
8
- size: Cript::KEY_SIZE
7
+ private_key_content: Cript::INSECURE_PRIVATE_KEY
9
8
  })
10
9
  end
11
10
  let(:small_data) { SecureRandom.random_bytes }
@@ -3,8 +3,7 @@ require 'spec_helper'
3
3
  describe Cript::Simple do
4
4
  let(:simple) do
5
5
  Cript::Simple.new({
6
- private_key_content: Cript::PRIVATE_KEY,
7
- public_key_content: Cript::PUBLIC_KEY
6
+ private_key_content: Cript::INSECURE_PRIVATE_KEY
8
7
  })
9
8
  end
10
9
  let(:small_data) { SecureRandom.random_bytes }
metadata CHANGED
@@ -1,62 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cript
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
5
- prerelease:
4
+ version: 0.0.4
6
5
  platform: ruby
7
6
  authors:
8
7
  - Andrew Tongen
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-12-08 00:00:00.000000000 Z
11
+ date: 2014-05-30 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: bundler
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ~>
17
+ - - "~>"
20
18
  - !ruby/object:Gem::Version
21
19
  version: '1.3'
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ~>
24
+ - - "~>"
28
25
  - !ruby/object:Gem::Version
29
26
  version: '1.3'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rake
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - ">="
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - ">="
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: rspec
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - ">="
52
46
  - !ruby/object:Gem::Version
53
47
  version: '0'
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - ">="
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
62
55
  description: Simple Encryption Tools for Ruby
@@ -67,9 +60,9 @@ executables:
67
60
  extensions: []
68
61
  extra_rdoc_files: []
69
62
  files:
70
- - .gitignore
71
- - .rspec
72
- - .travis.yml
63
+ - ".gitignore"
64
+ - ".rspec"
65
+ - ".travis.yml"
73
66
  - Gemfile
74
67
  - LICENSE.txt
75
68
  - README.md
@@ -80,6 +73,7 @@ files:
80
73
  - lib/cript/cript_command.rb
81
74
  - lib/cript/cripter.rb
82
75
  - lib/cript/ehash.rb
76
+ - lib/cript/key_info.rb
83
77
  - lib/cript/naive.rb
84
78
  - lib/cript/simple.rb
85
79
  - lib/cript/store.rb
@@ -92,27 +86,26 @@ files:
92
86
  homepage: https://github.com/atongen/cript
93
87
  licenses:
94
88
  - MIT
89
+ metadata: {}
95
90
  post_install_message:
96
91
  rdoc_options: []
97
92
  require_paths:
98
93
  - lib
99
94
  required_ruby_version: !ruby/object:Gem::Requirement
100
- none: false
101
95
  requirements:
102
- - - ! '>='
96
+ - - ">="
103
97
  - !ruby/object:Gem::Version
104
98
  version: '0'
105
99
  required_rubygems_version: !ruby/object:Gem::Requirement
106
- none: false
107
100
  requirements:
108
- - - ! '>='
101
+ - - ">="
109
102
  - !ruby/object:Gem::Version
110
103
  version: '0'
111
104
  requirements: []
112
105
  rubyforge_project:
113
- rubygems_version: 1.8.23
106
+ rubygems_version: 2.2.2
114
107
  signing_key:
115
- specification_version: 3
108
+ specification_version: 4
116
109
  summary: Simple Encryption Tools for Ruby
117
110
  test_files:
118
111
  - spec/cript_command_spec.rb
@@ -120,4 +113,3 @@ test_files:
120
113
  - spec/naive_spec.rb
121
114
  - spec/simple_spec.rb
122
115
  - spec/spec_helper.rb
123
- has_rdoc: