sshenc 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +29 -0
- data/Rakefile +1 -0
- data/bin/sshenc +90 -0
- data/lib/sshenc.rb +5 -0
- data/lib/sshenc/version.rb +3 -0
- data/sshenc.gemspec +23 -0
- metadata +83 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: bc7a2279ff577b053272e139bf2bd956834d735b
|
4
|
+
data.tar.gz: 119e7019540c835f643d06dcd28d3ba15fbe8d07
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 635f30e344a34d230ca5714bec764b01f4d782de208f82c68329891fcb667ff00e7a00da162172bb72399d08ef32d0ca6b2ec1b5a77e616a3a146e36542543d6
|
7
|
+
data.tar.gz: 52f2054ba5577fb088687de132611577e37eac65ef5014eaa22e388dcffdb592462a3e20191524306336a8370747fe3e3a1747277f870176cab3bd17094654ee
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 corona
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# Sshenc
|
2
|
+
|
3
|
+
TODO: Write a gem description
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'sshenc'
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
Or install it yourself as:
|
16
|
+
|
17
|
+
$ gem install sshenc
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
TODO: Write usage instructions here
|
22
|
+
|
23
|
+
## Contributing
|
24
|
+
|
25
|
+
1. Fork it
|
26
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
27
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
28
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
29
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/bin/sshenc
ADDED
@@ -0,0 +1,90 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'optparse'
|
4
|
+
|
5
|
+
def usage
|
6
|
+
print(<<-"EOB")
|
7
|
+
sshenc will make encrypted file by using ssh public key.
|
8
|
+
|
9
|
+
Usage:
|
10
|
+
Encrypt:
|
11
|
+
$ sshenc file id_rsa.pub
|
12
|
+
Decrypt:
|
13
|
+
$ sshenc [-k privatekey] file.sshenc.tar
|
14
|
+
|
15
|
+
By default, privatekey is using ~/.ssh/id_rsa
|
16
|
+
$ sshenc hoge.txt.sshenc.tar
|
17
|
+
If you want to change the privatekey, please use the option.
|
18
|
+
$ sshenc -k path/to/id_rsa hoge.txt.sshenc.tar
|
19
|
+
|
20
|
+
EOB
|
21
|
+
exit
|
22
|
+
end
|
23
|
+
|
24
|
+
opt = OptionParser.new
|
25
|
+
pkey = ""
|
26
|
+
opt.on('-k VAL') {|v| pkey = v}
|
27
|
+
opt.on('-h', '--help') { usage }
|
28
|
+
opt.parse!(ARGV)
|
29
|
+
|
30
|
+
if pkey == ""
|
31
|
+
PRIVATE_KEY = "~/.ssh/id_rsa"
|
32
|
+
else
|
33
|
+
PRIVATE_KEY = pkey
|
34
|
+
end
|
35
|
+
|
36
|
+
FILE = ARGV[0]
|
37
|
+
KEY = ARGV[1]
|
38
|
+
|
39
|
+
usage if FILE.nil?
|
40
|
+
|
41
|
+
case FILE
|
42
|
+
when /\.sshenc\.tar$/
|
43
|
+
|
44
|
+
begin
|
45
|
+
|
46
|
+
TMP_DIR = FILE.chomp(".tar")
|
47
|
+
INFILE = TMP_DIR + "/" + TMP_DIR
|
48
|
+
OUTFILE = TMP_DIR.chomp(".sshenc")
|
49
|
+
AES_KEY = TMP_DIR + "/" + OUTFILE + ".key"
|
50
|
+
|
51
|
+
system("tar xf " + FILE)
|
52
|
+
system("openssl rsautl -decrypt -in " + AES_KEY + ".sshenc -out " + AES_KEY + " -inkey " + PRIVATE_KEY)
|
53
|
+
system("openssl aes-256-cbc -d -in " + INFILE + " -out " + OUTFILE + " -pass file:" + AES_KEY)
|
54
|
+
system("rm -rf " + TMP_DIR)
|
55
|
+
|
56
|
+
puts "Decrypted!"
|
57
|
+
|
58
|
+
rescue => ex
|
59
|
+
puts "Error."
|
60
|
+
puts ex.message
|
61
|
+
end
|
62
|
+
|
63
|
+
else
|
64
|
+
|
65
|
+
begin
|
66
|
+
|
67
|
+
TMP_DIR = FILE + ".sshenc"
|
68
|
+
Dir.mkdir(TMP_DIR)
|
69
|
+
|
70
|
+
PUBLIC_KEY = TMP_DIR + "/pub.keys"
|
71
|
+
AES_KEY = TMP_DIR + "/" + FILE + ".key"
|
72
|
+
OUTFILE = TMP_DIR + "/" + FILE + ".sshenc"
|
73
|
+
|
74
|
+
system("ssh-keygen -f " + KEY + " -e -m PKCS8 > " + PUBLIC_KEY + ".pem")
|
75
|
+
system("cat /dev/urandom | LANG=C tr -dc '[:graph:]' | head -c 117 > " + AES_KEY)
|
76
|
+
system("openssl aes-256-cbc -e -in " + FILE + " -out " + OUTFILE + " -pass file:" + AES_KEY)
|
77
|
+
system("openssl rsautl -encrypt -in " + AES_KEY + " -out " + AES_KEY + ".sshenc -inkey " + PUBLIC_KEY + ".pem -pubin")
|
78
|
+
system("rm " + AES_KEY)
|
79
|
+
system("rm " + PUBLIC_KEY + ".pem")
|
80
|
+
system("tar cf " + FILE + ".sshenc.tar " + TMP_DIR)
|
81
|
+
system("rm -rf " + TMP_DIR)
|
82
|
+
|
83
|
+
puts "Encrypted!"
|
84
|
+
|
85
|
+
rescue => ex
|
86
|
+
puts "Error."
|
87
|
+
puts ex.message
|
88
|
+
end
|
89
|
+
|
90
|
+
end
|
data/lib/sshenc.rb
ADDED
data/sshenc.gemspec
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'sshenc/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "sshenc"
|
8
|
+
spec.version = Sshenc::VERSION
|
9
|
+
spec.authors = ["Yuichi Nagayama"]
|
10
|
+
spec.email = ["p54321ppp-qe9@yahoo.co.jp"]
|
11
|
+
spec.description = %q{sshenc will make encrypted file by using ssh public key.}
|
12
|
+
spec.summary = %q{encrypted file using ssh key}
|
13
|
+
spec.homepage = ""
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["bin", "lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
22
|
+
spec.add_development_dependency "rake"
|
23
|
+
end
|
metadata
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sshenc
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Yuichi Nagayama
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-04-28 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.3'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description: sshenc will make encrypted file by using ssh public key.
|
42
|
+
email:
|
43
|
+
- p54321ppp-qe9@yahoo.co.jp
|
44
|
+
executables:
|
45
|
+
- sshenc
|
46
|
+
extensions: []
|
47
|
+
extra_rdoc_files: []
|
48
|
+
files:
|
49
|
+
- .gitignore
|
50
|
+
- Gemfile
|
51
|
+
- LICENSE.txt
|
52
|
+
- README.md
|
53
|
+
- Rakefile
|
54
|
+
- bin/sshenc
|
55
|
+
- lib/sshenc.rb
|
56
|
+
- lib/sshenc/version.rb
|
57
|
+
- sshenc.gemspec
|
58
|
+
homepage: ''
|
59
|
+
licenses:
|
60
|
+
- MIT
|
61
|
+
metadata: {}
|
62
|
+
post_install_message:
|
63
|
+
rdoc_options: []
|
64
|
+
require_paths:
|
65
|
+
- bin
|
66
|
+
- lib
|
67
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
68
|
+
requirements:
|
69
|
+
- - '>='
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: '0'
|
72
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
requirements: []
|
78
|
+
rubyforge_project:
|
79
|
+
rubygems_version: 2.0.0
|
80
|
+
signing_key:
|
81
|
+
specification_version: 4
|
82
|
+
summary: encrypted file using ssh key
|
83
|
+
test_files: []
|