yopass 3.0.5 → 3.0.6

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 CHANGED
@@ -1,7 +1,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: cb83fba27a6f0639662c53d9df1e49bcbe9f3c50
4
- data.tar.gz: 8927dbb63e151b2f8d795f2ee8cce01047ef9452
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NmY3MjcyZjAzODUyZmE4YmU3ZTU4YmMyOGQ5ZGUxMjUzZjBiMjI4Mg==
5
+ data.tar.gz: !binary |-
6
+ YjA4NTY0MzZjY2Q0ZWNmNDgzZmNjMTg4OTI5YmEzNTJmN2FjNjI3NQ==
5
7
  SHA512:
6
- metadata.gz: 525c25c9a42d2605877ce37d34d549bc9e0b2c909e594c3b3aa1ae1704e3bd373ceec11a38e89e0589a52b68e55fa1f60496f938134ca4f44ad3582c4cf5b4ce
7
- data.tar.gz: 5435a0d89482b2a378eb941a5cee52e38fa4a44f35bf56d0b5024bc13cf1cc4d5c7ceba837807c515686682085dd26a545422ebdd2674107322b01faddbdfd4b
8
+ metadata.gz: !binary |-
9
+ Y2JiZjNjMGExMTUyNDI3OTQ0MGIxNmQ5MTUxM2NmN2JkNTY4OTExZmZmYTdm
10
+ ZWFhMzcwOWZhOTZjZjI3NDUxODI5ZWE1MWZmZWQwMDU1NzAwYjFkOGRlNjZk
11
+ MjU3Nzk2ZmYzODhkYzRlNmYzNTVhOTU2YWZmM2VhYTdjYmZiYTA=
12
+ data.tar.gz: !binary |-
13
+ NDM0ODdhZWZiYjkxM2QxZmE3NDZmOGQ1ZTkwMjU3YzQzZGQ3NDg2MDY4MTUx
14
+ YmUzNmExOTc1MTMwODhiYTQxMjg0ZGQyOWY3NmRlZmQ4NjY1ODdjZGY3ZjUx
15
+ Mjg1M2E2YjNjYWFlNDY2MzY2OWI0Y2ZiNzQyYWVjYmRmYzlhNDg=
@@ -4,7 +4,7 @@ rvm:
4
4
  - 2.0.0
5
5
  deploy:
6
6
  provider: rubygems
7
- gemspec: .gemspec
7
+ gemspec: yopass.gemspec
8
8
  api_key:
9
9
  secure: ko/Qz+/kwTBggJxw24IwYzpHoFUTT3LqyxOGkpuMj2BaQ994LNiZP7vaKx1THXc3b7FhRGKmi6KJaiO31wKQqXH13+azkZ777RuEC0Mz9rYLBcOcCFeniOcbLqCgLmFhroG0GhWz/tdP5xSw5bw+6kRO8SjBjyyrDSdrzbz0phw=
10
10
  gem: yopass
data/README.md CHANGED
@@ -1,17 +1,17 @@
1
- # YoPass - Share Secrets Securely
1
+ # Yopass - Share Secrets Securely
2
2
  [![Build Status](https://travis-ci.org/jhaals/yopass.png?branch=master)](https://travis-ci.org/jhaals/yopass)
3
3
 
4
- YoPass is a project for sharing secrets in a quick and secure manner.
5
- The sole purpose of yopass is to minimize the amount of passwords floating around in ticket management systems, IRC logs and emails. YoPass generates a one-time URL with an expiration date so you don't have to worry about passwords being visible forever. The decryption key can also be transferred over SMS.
4
+ Yopass is a project for sharing secrets in a quick and secure manner.
5
+ The sole purpose of Yopass is to minimize the amount of passwords floating around in ticket management systems, IRC logs and emails. YoPass generates a one-time URL with an expiration date so you don't have to worry about passwords being visible forever. The decryption key can also be transferred over SMS.
6
6
 
7
- You can easily integrate yopass into other systems using it's API and host it yourself.
7
+ You can easily integrate Yopass into other systems using it's API and host it yourself. [yopass-cli](https://github.com/jhaals/yopass-cli) is a CLI tool for yopass.
8
8
 
9
9
  __[Demo site available here](https://yopass.se)__
10
10
 
11
11
  * AES-256 encryption
12
12
  * Secrets can only be viewed once
13
13
  * No secrets are written to disk
14
- * No account or user management required
14
+ * No accounts or user management required
15
15
  * Secrets self destruct after X hours
16
16
  * Rate limiting
17
17
  * Decryption key can be sent over SMS
@@ -5,28 +5,37 @@
5
5
  URL: <a href="{{short_url}}">{{short_url}}</a><br/>
6
6
  Decryption Key: <b>{{decryption_key}}</b>
7
7
  </div>
8
+ <div class="jumbotron">
8
9
  <form>
9
10
  <div class="alert alert-danger" role="alert" ng-show="error">{{error}}</div>
10
11
  <div class="form-group">
11
- <label>Secret</label>
12
- <textarea class="form-control" rows="3" ng-model="secret.secret"></textarea>
12
+ <textarea class="form-control" rows="3" ng-model="secret.secret" placeholder="Secret message">
13
+ </textarea>
13
14
  </div>
14
- <label>Lifetime</label>
15
- <span class="help-block">Your secret will self destruct in...</span>
16
- <div class="radio">
17
- <label>
18
- <input ng-checked="true" type="radio" ng-model="secret.lifetime" value="1h">1 hour
19
- </label>
15
+ <div class="form-group" ng-click="toggleoptions()" ng-hide="options">
16
+ <span class="glyphicon glyphicon-triangle-bottom" aria-hidden="true"></span> Options
20
17
  </div>
21
- <div class="radio">
22
- <label>
23
- <input type="radio" ng-model="secret.lifetime" value="1d" checked>1 day
24
- </label>
18
+ <div ng-show="options">
19
+ <label>Lifetime</label>
20
+ <span class="help-block">Your secret will self destruct in...</span>
21
+ <div class="radio">
22
+ <label>
23
+ <input ng-checked="true" type="radio" ng-model="secret.lifetime" value="1h">1 hour
24
+ </label>
25
+ </div>
26
+ <div class="radio">
27
+ <label>
28
+ <input type="radio" ng-model="secret.lifetime" value="1d" checked>1 day
29
+ </label>
30
+ </div>
31
+ <div class="radio">
32
+ <label>
33
+ <input type="radio" ng-model="secret.lifetime" value="1w">1 week
34
+ </label>
35
+ </div>
25
36
  </div>
26
- <div class="radio">
27
- <label>
28
- <input type="radio" ng-model="secret.lifetime" value="1w">1 week
29
- </label>
30
- </div>
31
- <button type="submit" class="btn btn-primary" ng-click="save(secret)">Store Secret</button>
32
- </form>
37
+ <button type="button" class="btn btn-primary btn-lg btn-block" ng-click="save(secret)">
38
+ Encrypt Message
39
+ </button>
40
+ </form>
41
+ </div>
@@ -0,0 +1,81 @@
1
+ /* Space out content a bit */
2
+ body {
3
+ padding-top: 20px;
4
+ padding-bottom: 20px;
5
+ }
6
+
7
+ /* Everything but the jumbotron gets side spacing for mobile first views */
8
+ .header,
9
+ .marketing,
10
+ .footer {
11
+ padding-right: 15px;
12
+ padding-left: 15px;
13
+ }
14
+
15
+ /* Custom page header */
16
+ .header {
17
+ border-bottom: 1px solid #e5e5e5;
18
+ }
19
+ /* Make the masthead heading the same height as the navigation */
20
+ .header h3 {
21
+ padding-bottom: 19px;
22
+ margin-top: 0;
23
+ margin-bottom: 0;
24
+ line-height: 40px;
25
+ }
26
+
27
+ /* Custom page footer */
28
+ .footer {
29
+ padding-top: 19px;
30
+ color: #777;
31
+ border-top: 1px solid #e5e5e5;
32
+ }
33
+
34
+ /* Customize container */
35
+ @media (min-width: 768px) {
36
+ .container {
37
+ max-width: 730px;
38
+ }
39
+ }
40
+ .container-narrow > hr {
41
+ margin: 30px 0;
42
+ }
43
+
44
+ /* Main marketing message and sign up button */
45
+ .jumbotron {
46
+ text-align: center;
47
+ border-bottom: 1px solid #e5e5e5;
48
+ }
49
+ .jumbotron .btn {
50
+ padding: 14px 24px;
51
+ font-size: 21px;
52
+ }
53
+
54
+ /* Supporting marketing content */
55
+ .marketing {
56
+ margin: 40px 0;
57
+ }
58
+ .marketing p + h4 {
59
+ margin-top: 28px;
60
+ }
61
+
62
+ /* Responsive: Portrait tablets and up */
63
+ @media screen and (min-width: 768px) {
64
+ /* Remove the padding we set earlier */
65
+ .header,
66
+ .marketing,
67
+ .footer {
68
+ padding-right: 0;
69
+ padding-left: 0;
70
+ }
71
+ /* Space out the masthead */
72
+ .header {
73
+ margin-bottom: 30px;
74
+ }
75
+ /* Remove the bottom border on the jumbotron for visual effect */
76
+ .jumbotron {
77
+ border-bottom: 0;
78
+ }
79
+ }
80
+
81
+ #carbonads-container {display:none} h1[id] {padding-top:0px; margin-top:20px} .zero-clipboard {display:none !important} .bs-old-docs {display:none} .bs-social {display:none} .bs-sidebar {display:none !important} .col-md-9[role=main] {width:100% !important} .navbar-fixed-top {position:absolute !important}
@@ -1,7 +1,7 @@
1
- <div ng-show="invalidPassword">
2
- <h3>Invalid Decryption Key</h3>
1
+ <div class="alert alert-danger" ng-show="invalidPassword">
2
+ Invalid Decryption Key
3
3
  </div>
4
- <div ng-show="error">
4
+ <div ng-show="errorMessage">
5
5
  <h3>Secret does not exist</h3>
6
6
  <p>It might be caused by <b>any</b> of these reasons</p>
7
7
  <h5><span class="glyphicon glyphicon-eye-open" aria-hidden="true"></span> Opened Before</h5>
@@ -23,12 +23,14 @@ This secret will not be viewable again, save it!
23
23
  </div>
24
24
 
25
25
  <div ng-show="display_form">
26
+ <div class="jumbotron">
26
27
  <form novalidate ng-hide="secret">
27
28
  A decryption key is required to view this secret, please enter it below
28
29
  <div class="form-group">
29
30
  <label>Decryption Key</label>
30
31
  <input class="form-control" ng-model="form.decryption_key"></input>
31
32
  </div>
32
- <button type="submit" class="btn btn-primary" ng-click="view(form)">Decrypt</button>
33
+ <button type="submit" class="btn btn-primary" ng-click="view(form)">Decrypt Message</button>
33
34
  </form>
35
+ </div>
34
36
  </div>
@@ -3,49 +3,59 @@
3
3
  <head>
4
4
  <title>Yopass - Share Secrets Securely</title>
5
5
  <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css" />
6
+ <link rel="stylesheet" type="text/css" href="css/style.css" />
6
7
  <link rel="icon" type="image/png" href="img/favicon.png" />
7
8
  <script type="text/javascript" src="js/angular.js"></script>
8
9
  <script type="text/javascript" src="js/angular-route.min.js"></script>
9
10
  <script type="text/javascript" src="js/app.js"></script>
10
11
  </head>
11
- <body ng-controller="createController">
12
- <div class="row" ng-controller="createController">
13
- <div class="row">
14
- <div class="col-md-2"></div>
15
- <div class="col-md-5">
16
- <h1><a href="/#/create">Yopass</a> <small>Share Secrets Securely</small></h1>
17
- </div>
18
- <div class="col-md-3">
19
- </div>
20
- </div>
21
- <div class="row">
22
- <div class="col-md-2"></div>
23
- <div class="col-md-6" ng-view>
24
- </div>
25
- <div class="col-md-3">
26
- <h5><span class="glyphicon glyphicon-floppy-remove" aria-hidden="true"></span> In memory storage</h5>
27
- <p>Your Secrets are never written to disk</p>
28
- <h5><span class="glyphicon glyphicon-lock" aria-hidden="true"></span> AES-256 Encryption</h5>
29
- <p>Your secret is encrypted and no records of the decryption key is stored anywhere</p>
30
- <h5><span class="glyphicon glyphicon-time" aria-hidden="true"></span> Self destruction</h5>
31
- <p>Your secret will self destruct after X hours</p>
32
- <h5><span class="glyphicon glyphicon-eye-open" aria-hidden="true"></span> Visible once</h5>
33
- <p>Your secret is deleted automatically once viewed</p>
34
- <h5><span class="glyphicon glyphicon-eye-open" aria-hidden="true"></span> No Caching</h5>
35
- <p>Caching headers are disabled</p>
36
- <h5><span class="glyphicon glyphicon-fire" aria-hidden="true"></span> Rate limiting</h5>
37
- <p>Your secret will be deleted automatically after three failed decryption attempts</p>
38
- <h5><span class="glyphicon glyphicon-cutlery" aria-hidden="true"></span> Open Source</h5>
39
- <p>Yopass is an Open Source project meaning full transparency and the possibility to submit features, fix bugs or run the software yourself</p>
40
- </div>
12
+ <body ng-controller="createController">
13
+ <div class="container">
14
+ <div class="header">
15
+ <nav>
16
+ <ul class="nav nav-pills pull-right">
17
+ </ul>
18
+ </nav>
19
+ <h3 class="text-muted"><a href="#/create">Yopass</a> <small>Share Secrets Securely</small></h3>
20
+ </div>
21
+
22
+ <div ng-view>
23
+ </div>
24
+
25
+ <div class="row marketing">
26
+ <div class="col-lg-6">
27
+ <h4><span class="glyphicon glyphicon-floppy-remove" aria-hidden="true"></span> In memory storage</h4>
28
+ <p>The encrypted message is never stored on disk leaving no traces of your data</p>
29
+
30
+ <h4><span class="glyphicon glyphicon-time" aria-hidden="true"></span> Self destruction</h4>
31
+ <p>All messages have a fixed time to live and will be deleted automatically after expiration</p>
32
+
33
+ <h4><span class="glyphicon glyphicon-eye-open" aria-hidden="true"></span> Visible Once</h4>
34
+ <p>The decrypted message can only be viewed once before automatic deletion</p>
35
+
36
+ <h4><span class="glyphicon glyphicon-cog" aria-hidden="true"></span> API</h4>
37
+ <p>This site is just a frontend to the Yopass <a href="https://github.com/jhaals/yopass">API</a>, use it to extend other applications. A CLI tool is also available <a href="https://github.com/jhaals/yopass-cli">here</a></p>
41
38
  </div>
42
- <div class="row">
43
- <div class="col-md-2"></div>
44
- <div class="col-md-5">
45
- <footer><p>Created by <a href="https://github.com/jhaals">Johan Haals</a> | Integrate Yopass with your apps using the <a href="https://github.com/jhaals/yopass">API</a></p></footer>
46
- </div>
47
- <div class="col-md-3"></div>
39
+
40
+ <div class="col-lg-6">
41
+ <h4><span class="glyphicon glyphicon-lock" aria-hidden="true"></span> AES-256 Encryption</h4>
42
+ <p>Strong encryption method with no copies of the decryption key</p>
43
+
44
+ <h4><span class="glyphicon glyphicon-repeat" aria-hidden="true"></span> No caching</h4>
45
+ <p>Caching headers are disabled</p>
46
+
47
+ <h4><span class="glyphicon glyphicon-fire" aria-hidden="true"></span> Rate limiting</h4>
48
+ <p>Built in rate limiting preventing brute force attacks</p>
49
+
50
+ <h4><span class="glyphicon glyphicon-cutlery" aria-hidden="true"></span> Open Source</h4>
51
+ <p>Yopass is an Open Source project meaning full transparency and the possibility to submit features, fix bugs or run the software yourself</p>
48
52
  </div>
49
53
  </div>
50
- </body>
54
+
55
+ <footer class="footer">
56
+ <p>Yopass is created by <a href="https://github.com/jhaals">Johan Haals</a></p>
57
+ </footer>
58
+
59
+ </div> <!-- /container -->
60
+ </body>
51
61
  </html>
@@ -2,6 +2,9 @@ var app;
2
2
  var app = angular.module('yopass', ['ngRoute']);
3
3
 
4
4
  app.controller('createController', function($scope, $http, $location) {
5
+ $scope.toggleoptions = function() {
6
+ $scope.options = true;
7
+ }
5
8
  $scope.save = function(s) {
6
9
  $http.post('/v1/secret', {secret: s.secret, lifetime: s.lifetime})
7
10
  .success(function(data, status, headers, config) {
@@ -22,7 +25,7 @@ app.controller('ViewController', function($scope, $routeParams, $http) {
22
25
  function getSecret($key, $decryption_key) {
23
26
  $http.get('/v1/secret/'+$routeParams.key+'/'+$decryption_key)
24
27
  .success(function(data, status, headers, config) {
25
- $scope.error = false;
28
+ $scope.errorMessage = false;
26
29
  $scope.invalidPassword = false;
27
30
  $scope.secret = data.secret;
28
31
  })
@@ -32,7 +35,8 @@ app.controller('ViewController', function($scope, $routeParams, $http) {
32
35
  return;
33
36
  }
34
37
  $scope.invalidPassword = false;
35
- $scope.error = false;
38
+ $scope.errorMessage = true;
39
+ $scope.display_form = false;
36
40
  });
37
41
  };
38
42
  if ($routeParams.decryption_key) {
@@ -1,7 +1,7 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  Gem::Specification.new do |s|
3
3
  s.name = 'yopass'
4
- s.version = '3.0.5'
4
+ s.version = '3.0.6'
5
5
  s.author = 'Johan Haals'
6
6
  s.email = 'johan@haals.se'
7
7
  s.homepage = 'https://github.com/jhaals/yopass'
metadata CHANGED
@@ -1,117 +1,117 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yopass
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.5
4
+ version: 3.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Johan Haals
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-23 00:00:00.000000000 Z
11
+ date: 2015-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: encryptor
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.3'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: memcached
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
33
  version: '1.8'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.8'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rack
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - ! '>='
46
46
  - !ruby/object:Gem::Version
47
47
  version: 1.5.0
48
- - - "<"
48
+ - - <
49
49
  - !ruby/object:Gem::Version
50
50
  version: '1.6'
51
51
  type: :runtime
52
52
  prerelease: false
53
53
  version_requirements: !ruby/object:Gem::Requirement
54
54
  requirements:
55
- - - ">="
55
+ - - ! '>='
56
56
  - !ruby/object:Gem::Version
57
57
  version: 1.5.0
58
- - - "<"
58
+ - - <
59
59
  - !ruby/object:Gem::Version
60
60
  version: '1.6'
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: sinatra
63
63
  requirement: !ruby/object:Gem::Requirement
64
64
  requirements:
65
- - - "~>"
65
+ - - ~>
66
66
  - !ruby/object:Gem::Version
67
67
  version: '1.4'
68
68
  type: :runtime
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - "~>"
72
+ - - ~>
73
73
  - !ruby/object:Gem::Version
74
74
  version: '1.4'
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: sinatra-contrib
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
- - - "~>"
79
+ - - ~>
80
80
  - !ruby/object:Gem::Version
81
81
  version: '1.4'
82
82
  type: :runtime
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
- - - "~>"
86
+ - - ~>
87
87
  - !ruby/object:Gem::Version
88
88
  version: '1.4'
89
89
  - !ruby/object:Gem::Dependency
90
90
  name: rake
91
91
  requirement: !ruby/object:Gem::Requirement
92
92
  requirements:
93
- - - "~>"
93
+ - - ~>
94
94
  - !ruby/object:Gem::Version
95
95
  version: '10.4'
96
96
  type: :development
97
97
  prerelease: false
98
98
  version_requirements: !ruby/object:Gem::Requirement
99
99
  requirements:
100
- - - "~>"
100
+ - - ~>
101
101
  - !ruby/object:Gem::Version
102
102
  version: '10.4'
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: rspec
105
105
  requirement: !ruby/object:Gem::Requirement
106
106
  requirements:
107
- - - "~>"
107
+ - - ~>
108
108
  - !ruby/object:Gem::Version
109
109
  version: '3.0'
110
110
  type: :development
111
111
  prerelease: false
112
112
  version_requirements: !ruby/object:Gem::Requirement
113
113
  requirements:
114
- - - "~>"
114
+ - - ~>
115
115
  - !ruby/object:Gem::Version
116
116
  version: '3.0'
117
117
  description: Web service for sharing secrets more securely
@@ -120,9 +120,8 @@ executables: []
120
120
  extensions: []
121
121
  extra_rdoc_files: []
122
122
  files:
123
- - ".gemspec"
124
- - ".gitignore"
125
- - ".travis.yml"
123
+ - .gitignore
124
+ - .travis.yml
126
125
  - Dockerfile
127
126
  - Gemfile
128
127
  - LICENSE
@@ -131,6 +130,7 @@ files:
131
130
  - config.ru
132
131
  - lib/public/create-secret.html
133
132
  - lib/public/css/bootstrap.min.css
133
+ - lib/public/css/style.css
134
134
  - lib/public/display-secret.html
135
135
  - lib/public/fonts/glyphicons-halflings-regular.eot
136
136
  - lib/public/fonts/glyphicons-halflings-regular.svg
@@ -149,6 +149,7 @@ files:
149
149
  - spec/sms_provder_spec.rb
150
150
  - spec/spec_helper.rb
151
151
  - spec/yopass_spec.rb
152
+ - yopass.gemspec
152
153
  homepage: https://github.com/jhaals/yopass
153
154
  licenses:
154
155
  - Apache 2.0
@@ -159,21 +160,18 @@ require_paths:
159
160
  - lib
160
161
  required_ruby_version: !ruby/object:Gem::Requirement
161
162
  requirements:
162
- - - ">="
163
+ - - ! '>='
163
164
  - !ruby/object:Gem::Version
164
165
  version: 1.9.3
165
166
  required_rubygems_version: !ruby/object:Gem::Requirement
166
167
  requirements:
167
- - - ">="
168
+ - - ! '>='
168
169
  - !ruby/object:Gem::Version
169
170
  version: '0'
170
171
  requirements: []
171
172
  rubyforge_project:
172
- rubygems_version: 2.2.2
173
+ rubygems_version: 2.4.5
173
174
  signing_key:
174
175
  specification_version: 4
175
176
  summary: Secure sharing for secrets and passwords
176
- test_files:
177
- - spec/bulksms_spec.rb
178
- - spec/sms_provder_spec.rb
179
- - spec/yopass_spec.rb
177
+ test_files: []