gpg-locksmith 0.0.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 368818870b575dcf79a3f1fee7d6473d6cddc293
4
+ data.tar.gz: 07582f115486d9caee4cedb86dee0479cf42cabc
5
+ SHA512:
6
+ metadata.gz: d76701af274404cee99ac9279e6a7b7b845627d1379faae2c865bfb6f2530de04869dc58c2dac7efcca93e1c99c09c8be3a395081d7f5eb90b242057ad1094c0
7
+ data.tar.gz: ed669c005ca465c0363fff4f31ee3fd9cd8e7f96cc19fd1d7b84ab2eb094263fe5a5cc527e59fe5b84071ab1dbcad007a78e4fce49f51d72c673875865997567
@@ -0,0 +1,62 @@
1
+ LineLength:
2
+ Description: 'Limit lines to 120 characters.'
3
+ Max: 120
4
+
5
+ MethodLength:
6
+ Description: 'Avoid methods longer than 25 lines of code.'
7
+ CountComments: false # count full line comments?
8
+ Max: 25
9
+
10
+ BlockNesting:
11
+ Description: 'Avoid more than `Max` levels of nesting.'
12
+ Max: 5
13
+
14
+ # Align the elements of a hash literal if they span more than one line.
15
+ AlignHash:
16
+ # Alignment of entries using hash rocket as separator. Valid values are:
17
+ #
18
+ # key - left alignment of keys
19
+ # 'a' => 2
20
+ # 'bb' => 3
21
+ # separator - alignment of hash rockets, keys are right aligned
22
+ # 'a' => 2
23
+ # 'bb' => 3
24
+ # table - left alignment of keys, hash rockets, and values
25
+ # 'a' => 2
26
+ # 'bb' => 3
27
+ EnforcedHashRocketStyle: table
28
+ # Alignment of entries using colon as separator. Valid values are:
29
+ #
30
+ # key - left alignment of keys
31
+ # a: 0
32
+ # bb: 1
33
+ # separator - alignment of colons, keys are right aligned
34
+ # a: 0
35
+ # bb: 1
36
+ # table - left alignment of keys and values
37
+ # a: 0
38
+ # bb: 1
39
+ EnforcedColonStyle: separator
40
+
41
+ IfWithSemicolon:
42
+ Enabled: false
43
+
44
+ Semicolon:
45
+ Enabled: false
46
+
47
+ AssignmentInCondition:
48
+ Enabled: false
49
+
50
+ Alias:
51
+ Enabled: false
52
+
53
+ NumericLiterals:
54
+ Enabled: false
55
+
56
+ # should be dynamic if it's being used for test
57
+ RescueModifier:
58
+ Enabled: false
59
+
60
+ # should be turned on as a separate task
61
+ Documentation:
62
+ Enabled: false
@@ -0,0 +1 @@
1
+ 2.1
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem 'crystalline'
@@ -0,0 +1,129 @@
1
+ GEM
2
+ remote: https://rubygems.org/
3
+ specs:
4
+ abstract_type (0.0.7)
5
+ adamantium (0.1.0)
6
+ ice_nine (~> 0.9)
7
+ thread_safe (~> 0.1.2)
8
+ anima (0.2.0)
9
+ abstract_type (~> 0.0.7)
10
+ adamantium (~> 0.1)
11
+ equalizer (~> 0.0.8)
12
+ ast (1.1.0)
13
+ atomic (1.1.15)
14
+ coderay (1.1.0)
15
+ concord (0.1.4)
16
+ adamantium (~> 0.1)
17
+ equalizer (~> 0.0.7)
18
+ coveralls (0.7.0)
19
+ multi_json (~> 1.3)
20
+ rest-client
21
+ simplecov (>= 0.7)
22
+ term-ansicolor
23
+ thor
24
+ crystalline (1.5.3)
25
+ coveralls
26
+ erubis
27
+ flay
28
+ flog
29
+ gli
30
+ mutant (~> 0.3.0.rc1)
31
+ pry
32
+ rake
33
+ reek
34
+ rspec (~> 2.14.0)
35
+ rubocop
36
+ tilt
37
+ descendants_tracker (0.0.3)
38
+ diff-lcs (1.2.5)
39
+ docile (1.1.3)
40
+ equalizer (0.0.9)
41
+ erubis (2.7.0)
42
+ flay (2.4.0)
43
+ ruby_parser (~> 3.0)
44
+ sexp_processor (~> 4.0)
45
+ flog (4.2.0)
46
+ ruby_parser (~> 3.1, > 3.1.0)
47
+ sexp_processor (~> 4.4)
48
+ gli (2.9.0)
49
+ ice_nine (0.9.0)
50
+ inflecto (0.0.2)
51
+ json (1.8.1)
52
+ method_source (0.8.2)
53
+ mime-types (2.1)
54
+ multi_json (1.9.0)
55
+ mutant (0.3.6)
56
+ abstract_type (~> 0.0.7)
57
+ adamantium (~> 0.1.0)
58
+ anima (~> 0.2.0)
59
+ concord (~> 0.1.4)
60
+ descendants_tracker (~> 0.0.1)
61
+ equalizer (~> 0.0.7)
62
+ ice_nine (~> 0.9.0)
63
+ inflecto (~> 0.0.2)
64
+ parser (~> 2.1.4)
65
+ procto (~> 0.0.2)
66
+ rspec (~> 2.14.1)
67
+ unparser (~> 0.1.8)
68
+ parser (2.1.7)
69
+ ast (~> 1.1)
70
+ slop (~> 3.4, >= 3.4.5)
71
+ powerpack (0.0.9)
72
+ procto (0.0.2)
73
+ pry (0.9.12.6)
74
+ coderay (~> 1.0)
75
+ method_source (~> 0.8)
76
+ slop (~> 3.4)
77
+ rainbow (2.0.0)
78
+ rake (10.1.1)
79
+ reek (1.3.6)
80
+ ruby2ruby (~> 2.0.7)
81
+ ruby_parser (~> 3.2)
82
+ sexp_processor
83
+ rest-client (1.6.7)
84
+ mime-types (>= 1.16)
85
+ rspec (2.14.1)
86
+ rspec-core (~> 2.14.0)
87
+ rspec-expectations (~> 2.14.0)
88
+ rspec-mocks (~> 2.14.0)
89
+ rspec-core (2.14.8)
90
+ rspec-expectations (2.14.5)
91
+ diff-lcs (>= 1.1.3, < 2.0)
92
+ rspec-mocks (2.14.6)
93
+ rubocop (0.18.1)
94
+ json (>= 1.7.7, < 2)
95
+ parser (~> 2.1.3)
96
+ powerpack (~> 0.0.6)
97
+ rainbow (>= 1.99.1, < 3.0)
98
+ ruby2ruby (2.0.7)
99
+ ruby_parser (~> 3.1)
100
+ sexp_processor (~> 4.0)
101
+ ruby_parser (3.4.1)
102
+ sexp_processor (~> 4.1)
103
+ sexp_processor (4.4.1)
104
+ simplecov (0.8.2)
105
+ docile (~> 1.1.0)
106
+ multi_json
107
+ simplecov-html (~> 0.8.0)
108
+ simplecov-html (0.8.0)
109
+ slop (3.4.7)
110
+ term-ansicolor (1.3.0)
111
+ tins (~> 1.0)
112
+ thor (0.18.1)
113
+ thread_safe (0.1.3)
114
+ atomic
115
+ tilt (2.0.0)
116
+ tins (1.0.0)
117
+ unparser (0.1.9)
118
+ abstract_type (~> 0.0.7)
119
+ adamantium (~> 0.1)
120
+ concord (~> 0.1.4)
121
+ equalizer (~> 0.0.7)
122
+ parser (~> 2.1.0)
123
+ procto (~> 0.0.2)
124
+
125
+ PLATFORMS
126
+ ruby
127
+
128
+ DEPENDENCIES
129
+ crystalline
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 Joe Fredette
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.
@@ -0,0 +1,31 @@
1
+ # locksmith [![Gem Version](https://badge.fury.io/rb/locksmith.png)](http://badge.fury.io/rb/locksmith)[![Build Status](https://travis-ci.org/fredettej/locksmith.png?branch=master)](http://travis-ci.org/fredettej/locksmith)[![Code Climate](https://codeclimate.com/github/fredettej/locksmith.png)](https://codeclimate.com/github/fredettej/locksmith)[![Coverage Status](https://coveralls.io/repos/fredettej/locksmith/badge.png?branch=master)](https://coveralls.io/r/fredettej/locksmith)
2
+
3
+ Manages sharing your GPG keys between computers you control.
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'locksmith'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install locksmith
18
+
19
+ ## Contributing
20
+
21
+ 1. Fork it
22
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
23
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
24
+ 4. Push to the branch (`git push origin my-new-feature`)
25
+ 5. Create new Pull Request
26
+
27
+ # LICENSE
28
+
29
+ Copyright 2014, Joe Fredette
30
+
31
+ Released under the MIT open source license, see LICENSE for details
@@ -0,0 +1,3 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ require 'crystalline/rake'
@@ -0,0 +1,30 @@
1
+ # Design
2
+
3
+ ## Key sharing
4
+
5
+ I maintain a number of GPG keys for different purposes, from signing keys for
6
+ work and personal use, to encryption keys for communication, and so on.
7
+
8
+ Having several keys makes it easy to maintain different levels of security,
9
+ different expirations, differnet rotation strategies, and so on.
10
+
11
+ The hard part is this -- how can you conveniently, securely transfer keys
12
+ between multiple machines?
13
+
14
+ Ideally it would be something like Dropbox, all that would be required would be
15
+ to drop keys into one place and they'd automatically get moved around, no
16
+ problem.
17
+
18
+ The problem is that now your private keys are on a remote machine -- that sucks,
19
+ we don't want that, so instead we can use Bittorrent Sync.
20
+
21
+ Even then, we've only got one level of encryption, and though I'm sure BTSync is
22
+ pretty good, my level of paranoia is a few ticks higher. Instead, we can further
23
+ encrypt these keys with public keys for the target machines. Essentially, an
24
+ otherwise unpublished public key for each machine in the sharing ring. These
25
+ keys are transferred by you, and only you, by sneakernet, scp, whatever. I use
26
+ BTSync to sync the public keys. Locksmith runs on each machine as a daemon, when
27
+ it sees a new public key, it automatically imports it to the local keyring
28
+ (again, these keys are not shared), it then encrypts all the local keys listed
29
+ in the .localkeys file in the directory specified by the configuration. These
30
+ keys are put in a folder which is watched by the new machine.
@@ -0,0 +1,5 @@
1
+ require "locksmith/version"
2
+
3
+ module Locksmith
4
+ # Your code goes here...
5
+ end
@@ -0,0 +1,3 @@
1
+ module Locksmith
2
+ VERSION = "0.0.1"
3
+ end
@@ -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 'locksmith/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "gpg-locksmith"
8
+ spec.version = Locksmith::VERSION
9
+ spec.authors = ["Joe Fredette"]
10
+ spec.email = ["jfredett@gmail.com"]
11
+ spec.summary = %q{Manages sharing your GPG keys between computers you control.}
12
+ spec.description = %q{Manages sharing your GPG keys between computers you control.}
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
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 = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.5"
22
+ spec.add_development_dependency "rake"
23
+ end
@@ -0,0 +1,12 @@
1
+ require 'crystalline/spec'
2
+
3
+ #include helpers
4
+ Dir["./spec/helpers/*.rb"].each { |file| require file }
5
+
6
+ #include shared examples
7
+ Dir["./spec/shared/*_examples.rb"].each { |file| require file }
8
+
9
+ Coveralls.wear! if ENV['COVERALLS'] || ENV['CI']
10
+
11
+ Crystalline::Spec.install!
12
+
metadata ADDED
@@ -0,0 +1,85 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gpg-locksmith
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Joe Fredette
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-03-10 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.5'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.5'
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: Manages sharing your GPG keys between computers you control.
42
+ email:
43
+ - jfredett@gmail.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - ".rubocop.yml"
49
+ - ".ruby-version"
50
+ - Gemfile
51
+ - Gemfile.lock
52
+ - LICENSE
53
+ - README.md
54
+ - Rakefile
55
+ - docs/design.md
56
+ - lib/locksmith.rb
57
+ - lib/locksmith/version.rb
58
+ - locksmith.gemspec
59
+ - spec/spec_helper.rb
60
+ homepage: ''
61
+ licenses:
62
+ - MIT
63
+ metadata: {}
64
+ post_install_message:
65
+ rdoc_options: []
66
+ require_paths:
67
+ - lib
68
+ required_ruby_version: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ required_rubygems_version: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ requirements: []
79
+ rubyforge_project:
80
+ rubygems_version: 2.2.0
81
+ signing_key:
82
+ specification_version: 4
83
+ summary: Manages sharing your GPG keys between computers you control.
84
+ test_files:
85
+ - spec/spec_helper.rb