devise_encryptable_aes 0.0.1 → 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: 84f8fef8ce7fd3ef5539d997cc6c21551a9b9d01cc5acd606ea20d2641ab37d7
4
- data.tar.gz: ed56e0faa102cce47afb928a0359df772fa63e762472096e8b2cdc44267f4823
3
+ metadata.gz: 1c9e5f608fcfe59dff0a29a1f5ce2bbb04c744b1ff9d382182e9e7457ce8a1c5
4
+ data.tar.gz: 39ae7fd53d95e91f6dbceb465d20212a381d719dfb94f937e6961e2d87edd5fb
5
5
  SHA512:
6
- metadata.gz: f1477b1b5ab0dbb1b5616211e18d5c03482ab2a829bdabfc04cddf7f1d53a3f05784ea6cd88172be2b6b1fea66e8dec4faa1546a97cc2d5d0bf193690e1b812a
7
- data.tar.gz: a9f458c109d64d7b5fe9635226a7114d5b1b527f92e80e5cc1ac382e88346eb31def8c424b25943eced58dead2b16e10ca05d6ca0ff50dca0d36b038c1a8e44d
6
+ metadata.gz: 85d2cd0742d4d6f679d170f8ca8f1f96737cdb6f6b32eabf841cabfa2041a0e683bdb42110c60f87e551dcf417756ef907695f70ebebbf7d5110c73ed30156fc
7
+ data.tar.gz: 93ae280af08f5bf95554c7efa870a241fae8ea2496506481a2a0a77f67295f193f8bd2c48cc91d00a176de3ca4108464effbb7b6fb79e680c2bf3f7a08346720
data/README.md ADDED
@@ -0,0 +1,63 @@
1
+ # Devise Encryptable AES
2
+
3
+ Add AES encryption support for Devise
4
+
5
+ ## Table of Contents
6
+
7
+ - [Getting started](#getting-started)
8
+ - [Configuration](#configuration)
9
+ - [Usage](#usage)
10
+
11
+ ## Getting started
12
+
13
+ Add the following line to your Gemfile:
14
+
15
+ ```ruby
16
+ gem 'devise', '~> 4.9'
17
+ gem 'devise_encryptable_aes'
18
+ ```
19
+
20
+ Then run `bundle install`
21
+
22
+ ## Configuration
23
+
24
+ Add the `encryptable` module to your model:
25
+
26
+ ```ruby
27
+ class User < ActiveRecord::Base
28
+ devise :database_authenticatable, :encryptable
29
+ end
30
+ ```
31
+
32
+ And add the `password_salt` field to the database through a migration:
33
+
34
+ ```ruby
35
+ class DeviseCreateUsers < ActiveRecord::Migration
36
+ def change
37
+ add_column :users, :password_salt, :string
38
+ end
39
+ end
40
+ ```
41
+
42
+ Enable the AES encryptor in <tt>config/initializers/devise.rb</tt>
43
+
44
+ ```ruby
45
+ # Uncomment the generated pepper
46
+ config.pepper = "long random string"
47
+ # Enable the AES encryptor
48
+ config.encryptor = :aes256
49
+ ```
50
+
51
+ ## Usage
52
+
53
+ Compare password
54
+
55
+ ```ruby
56
+ ::Devise::Encryptable::Encryptors::Aes256.compare(encrypted_password, password, Devise.pepper)
57
+ ```
58
+
59
+ Decrypt password
60
+
61
+ ```ruby
62
+ ::Devise::Encryptable::Encryptors::Aes256.decrypt(encrypted_password, Devise.pepper)
63
+ ```
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'aes'
4
+ require 'devise/encryptable/encryptors/base'
5
+
6
+ module Devise
7
+ module Encryptable
8
+ module Encryptors
9
+ class Aes256 < Base
10
+ class << self
11
+ def digest(password, _stretches, salt, pepper)
12
+ ::AES.encrypt(password, pepper, { iv: salt }) if password
13
+ rescue StandardError
14
+ nil
15
+ end
16
+
17
+ def salt(_stretches)
18
+ ::AES.iv(:base_64)
19
+ end
20
+
21
+ def decrypt(encrypted_password, pepper)
22
+ ::AES.decrypt(encrypted_password, pepper)
23
+ end
24
+
25
+ def compare(encrypted_password, password, pepper)
26
+ return false if encrypted_password.blank?
27
+
28
+ decrypt(encrypted_password, pepper) == password
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -1,7 +1,3 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class DeviseEncryptableAes
4
- def self.hi
5
- puts "Hello world!"
6
- end
7
- end
3
+ require 'devise/encryptable/encryptors/aes256'
metadata CHANGED
@@ -1,23 +1,67 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devise_encryptable_aes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pham Tat Dat
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-05-31 00:00:00.000000000 Z
12
- dependencies: []
13
- description: A simple hello world gem
11
+ date: 2023-06-01 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: devise
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '4.9'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '4.9'
27
+ - !ruby/object:Gem::Dependency
28
+ name: aes
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.5.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.5.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: devise-encryptable
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.2.0
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.2.0
55
+ description: ''
14
56
  email: tatdat97dhbkhn@gmail.com
15
57
  executables: []
16
58
  extensions: []
17
59
  extra_rdoc_files: []
18
60
  files:
61
+ - README.md
62
+ - lib/devise/encryptable/encryptors/aes256.rb
19
63
  - lib/devise_encryptable_aes.rb
20
- homepage: https://rubygems.org/gems/devise_encryptable_aes
64
+ homepage: https://github.com/tatdat97dhbkhn/devise_encryptable_aes
21
65
  licenses:
22
66
  - MIT
23
67
  metadata: {}
@@ -39,5 +83,5 @@ requirements: []
39
83
  rubygems_version: 3.4.9
40
84
  signing_key:
41
85
  specification_version: 4
42
- summary: Devise encryptable aes!
86
+ summary: Add AES encryption support for Devise
43
87
  test_files: []