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 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