master-crypt 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ddc51b2b9cee74b590878d2093ba349bccf6d8f1e6bef36a0ada98ad6977b3cd
4
- data.tar.gz: a72f8b1d23b86770904935f7d6de6acc668ad6666939411b155fdba18c6eb593
3
+ metadata.gz: d66fc7a3d34de5271f109f302daad32070724869cece105c062a844ae3bcc405
4
+ data.tar.gz: '06158f18251f6157085123568ee9818e46fea1e1f4dbf2db89f1f8293b7b7d6e'
5
5
  SHA512:
6
- metadata.gz: 7ec2566a3bf3df9d14b6c9793a09445684fce23996fda681491ecf5755dc774e8f3d950aa8112385c4146c04fe6b5167b769a623e15de8933e65d0ad0e176406
7
- data.tar.gz: 9ad6d7a3d566d109fcab5467c79b985a4a323bdf80253dfbab93e5e849ca7acdbd57c30cc4dbb0cd99725eebe1737798a4e2ea31799516a2072d4929d3520ff5
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
- module MasterCrypt
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, secrets)
9
- raise "Secrets must not be blank" unless secrets.select(&:empty?).empty?
10
- raise "At least 1 secret is required" if !secrets.is_a?(Array) || secrets.empty?
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 = secrets.collect do |secret|
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
 
@@ -1,3 +1,3 @@
1
- module MasterCrypt
2
- VERSION = "0.0.2"
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.2
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-01 00:00:00.000000000 Z
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.14.1
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.14.1
82
+ version: 0.13.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: pry-byebug
85
85
  requirement: !ruby/object:Gem::Requirement