master-crypt 0.0.2 → 0.0.3
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 +4 -4
- data/README.md +22 -0
- data/lib/master_crypt.rb +18 -5
- data/lib/master_crypt/version.rb +2 -2
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d66fc7a3d34de5271f109f302daad32070724869cece105c062a844ae3bcc405
|
4
|
+
data.tar.gz: '06158f18251f6157085123568ee9818e46fea1e1f4dbf2db89f1f8293b7b7d6e'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: da0d0b57b077b38d0e478d6940cf5c9de72b376cb8e9efbdccd0afefc04fabc1348fdf08ea014521ed3f2d747ed0afa240f027cd6fa8a26b090793e2a7804fb9
|
7
|
+
data.tar.gz: 3fabf752a22e46befa105e815e86964e1842c68e5d46f3d89c84f4a79be729103e893317c32d690999f28c6279c78aa5b5d39a377b76550caae35f2ba74a190c
|
data/README.md
CHANGED
@@ -1,5 +1,27 @@
|
|
1
1
|
# master-crypt
|
2
2
|
|
3
|
+
## Usage
|
4
|
+
|
5
|
+
### Encrypting data with a master key
|
6
|
+
```ruby
|
7
|
+
master_key = "Very secure & random master k3y"
|
8
|
+
other_secret_key = "Another very secure & random master k3y"
|
9
|
+
data = "Secret data..."
|
10
|
+
master_crypt = MasterCrypt.new(master_key)
|
11
|
+
|
12
|
+
encrypted_data = master_crypt.master_key_encrypt(data, [other_secret_key])
|
13
|
+
# encrypted_data can be decrypted with either the master_key or other_secret_key
|
14
|
+
```
|
15
|
+
|
16
|
+
### Decrypting data with a master key
|
17
|
+
```ruby
|
18
|
+
master_key = "Very secure & random master k3y"
|
19
|
+
encrypted_data = "...."
|
20
|
+
master_crypt = MasterCrypt.new(master_key)
|
21
|
+
|
22
|
+
plaintext = master_crypt.master_key_decrypt(encrypted_data)
|
23
|
+
```
|
24
|
+
|
3
25
|
## Development
|
4
26
|
```sh
|
5
27
|
bundle install
|
data/lib/master_crypt.rb
CHANGED
@@ -3,11 +3,24 @@ require "rbnacl"
|
|
3
3
|
require "base64"
|
4
4
|
require "digest"
|
5
5
|
|
6
|
-
|
6
|
+
class MasterCrypt
|
7
|
+
def initialize(master_key)
|
8
|
+
raise "Master key must not be blank" if master_key.nil? || master_key.empty?
|
9
|
+
@master_key = master_key
|
10
|
+
end
|
11
|
+
|
12
|
+
def master_key_encrypt(plaintext, secret_keys = [])
|
13
|
+
self.class.encrypt(plaintext, [@master_key] + Array(secret_keys))
|
14
|
+
end
|
15
|
+
|
16
|
+
def master_key_decrypt(encrypted_data)
|
17
|
+
self.class.decrypt(encrypted_data, @master_key)
|
18
|
+
end
|
19
|
+
|
7
20
|
class << self
|
8
|
-
def encrypt(plaintext,
|
9
|
-
raise "
|
10
|
-
raise "
|
21
|
+
def encrypt(plaintext, secret_keys)
|
22
|
+
raise "At least 1 secret key is required" if !secret_keys.is_a?(Array) || secret_keys.empty?
|
23
|
+
raise "Secret keys must not be blank" unless secret_keys.select(&:empty?).empty?
|
11
24
|
|
12
25
|
random_key = RbNaCl::Random.random_bytes(RbNaCl::SecretBox.key_bytes)
|
13
26
|
# encrypt data with random_key
|
@@ -17,7 +30,7 @@ module MasterCrypt
|
|
17
30
|
encrypted_data64 = Base64.strict_encode64(encrypted_data)
|
18
31
|
|
19
32
|
# encrypt random_kets with each secret
|
20
|
-
encrypted_random_keys64 =
|
33
|
+
encrypted_random_keys64 = secret_keys.collect do |secret|
|
21
34
|
key = generate_key_from_secret(secret)
|
22
35
|
box = RbNaCl::SimpleBox.from_secret_key(key)
|
23
36
|
|
data/lib/master_crypt/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
|
2
|
-
VERSION = "0.0.
|
1
|
+
class MasterCrypt
|
2
|
+
VERSION = "0.0.3"
|
3
3
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: master-crypt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cian McElhinney
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-08-
|
11
|
+
date: 2021-08-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: standardrb
|
@@ -72,14 +72,14 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 0.
|
75
|
+
version: 0.13.0
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 0.
|
82
|
+
version: 0.13.0
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: pry-byebug
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|