activerecord_acrawriter 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/activerecord_acrawriter.rb +32 -12
  3. metadata +5 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 016bb2a7a35c6784a2374b6b9b6813b5cc11f4d2
4
- data.tar.gz: ce4446025561506b4706cb35c86f589266ae4df9
3
+ metadata.gz: 37fcd32964c5514acdab7efd03cdecfd3d91f7a0
4
+ data.tar.gz: 8c6ba7c488ea05e7b835e631c6ba5183e2a158f5
5
5
  SHA512:
6
- metadata.gz: 080a5702f2fb90ab7f30c9ca94578069106ff1167a925ea93f70b71116ce5bf0e107c6ca4adedc1759508d59b345e167fc17b0af33c81169cfff0f1b838a91ac
7
- data.tar.gz: 0ce0cc9aae7775247f88846516dd8ba8ab82303296fa78caba059c414dbeae6cfdefd650a9c16306f722cbe9066a76fd6ec5e3b27a390a9a8a175bcd62284f2a
6
+ metadata.gz: 6f50783df0e278938fe5e6ba9d1759d61795bc737dbfb05eec794839eb862f0ef7ccf061949a8a4a9dbc5e83fd20aa14112e664deb938d6e14027744ece027e8
7
+ data.tar.gz: e2f234e7560cafe60f15ef95e60d0a268e6cc39e7ca31e8e83ce5fe9052a2524e6dd25789abacbde0c9464dc2cbfe0c85fac6667b65970391c2992c0a48ec157
@@ -16,18 +16,38 @@ require 'active_record'
16
16
  require 'acrawriter'
17
17
 
18
18
  class AcraType < ActiveRecord::Type::String
19
- def cast(value)
20
- # scell can't encrypt null or empty objects
21
- if value.nil? or value == ''
22
- super
23
- else
24
- key = Base64.decode64(Rails.application.secrets.acra_public_key)
25
- ActiveRecord::Base.connection.escape_bytea(create_acrastruct(value.b, key))
19
+
20
+ def serialize(value)
21
+ return '' if value.to_s.empty?
22
+
23
+ key = Base64.decode64(Rails.application.secrets.acra_public_key)
24
+ acrastruct = create_acrastruct(value.b, key)
25
+
26
+ case ActiveRecord::Base.connection.adapter_name
27
+ when 'PostgreSQL'
28
+ return ActiveRecord::Base.connection.escape_bytea(acrastruct)
29
+ when 'Mysql2'
30
+ return acrastruct.b
26
31
  end
27
- end
28
32
 
29
- def deserialize(value)
30
- # override to avoid call cast method
31
- value
33
+ raise 'Do not know how to operate with adapter ' +
34
+ ActiveRecord::Base.connection.adapter_name
32
35
  end
33
- end
36
+
37
+ private
38
+
39
+ def cast_value(value)
40
+ return '' if value.to_s.empty?
41
+
42
+ case ActiveRecord::Base.connection.adapter_name
43
+ when 'PostgreSQL'
44
+ return [value[2..-1]].pack('H*') if value.start_with?('\x')
45
+ return value.to_s
46
+ when 'Mysql2'
47
+ return value.to_s
48
+ end
49
+
50
+ raise 'Do not know how to operate with adapter ' +
51
+ ActiveRecord::Base.connection.adapter_name
52
+ end
53
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord_acrawriter
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cossack Labs
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-08-14 00:00:00.000000000 Z
11
+ date: 2018-11-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubythemis
@@ -42,14 +42,14 @@ dependencies:
42
42
  name: activerecord
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  description: 'Acra helps you easily secure your databases in distributed, microservice-rich
@@ -83,7 +83,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
83
83
  requirements:
84
84
  - libthemis, v0.10.0
85
85
  rubyforge_project:
86
- rubygems_version: 2.4.8
86
+ rubygems_version: 2.6.12
87
87
  signing_key:
88
88
  specification_version: 4
89
89
  summary: Extra type for active record with AcraWriter usage