yopass 3.0.5 → 3.0.6

Sign up to get free protection for your applications and to get access to all the features.
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: []