asherah 0.2.0-x86_64-darwin → 0.3.0-x86_64-darwin

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: f78dcaa66db09c33f15a1e2a0d79e6003387e7249abcd94dd75f4b39d3d1495f
4
- data.tar.gz: ec27e86d304692f3f244d566d02d72fab3221bc343414c308a53659245b2caed
3
+ metadata.gz: 19b2444c560043be159c67a8ce073d195efdc97621bf2bc83aa51ccf782e05cf
4
+ data.tar.gz: d8cc8af342fe2738ff2775f87ac2a5a708a3efc22fd1abc5c1ce31c75bb31abf
5
5
  SHA512:
6
- metadata.gz: b6e74b580a3a09a6b6ecd730069f0fcfba950d0209b2aab30a4ebc34b51aad3fcd1cebf236e39221d4cb8d08aa14c03009fa1e38ae2a8dce8920d985af878b95
7
- data.tar.gz: 11f6e7b2c2f5b686c617255aac4d1e4a7c98be675dcc95a0da0baf9298e438303e54a99a716c884c374950f6dedcb0f0957757cf105414bbdc6663e67317c847
6
+ metadata.gz: e3306522c79aba79a641be8be76e8dd884717a229cad7ab1f880a3ff1918691e24c6e4021fdc73431446d9dbb8c60d389d260f2358bc07f728f88980609bdbdc
7
+ data.tar.gz: d3afd3c3a65aa26183328496a75a2e278764b4056516ea8a1fcd5121109aaf07078f8089ff43ed2e125532052dac3da9efa5c50ea826dd12273ed030acec36b6
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.3.0] - 2022-03-22
4
+
5
+ - Free up cobhan buffers after encrypt/decrypt to prevent growing heap memory
6
+ - Use local `estimate_buffer` calculation instead of FFI call
7
+ - Upgrade to use asherah-cobhan v0.4.3
8
+
3
9
  ## [0.2.0] - 2022-03-21
4
10
 
5
11
  - Implement versioning for asherah-cobhan binaries
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Asherah
4
- VERSION = '0.2.0'
4
+ VERSION = '0.3.0'
5
5
  end
data/lib/asherah.rb CHANGED
@@ -14,10 +14,13 @@ module Asherah
14
14
  [:SetupJson, [:pointer], :int32],
15
15
  [:EncryptToJson, [:pointer, :pointer, :pointer], :int32],
16
16
  [:DecryptFromJson, [:pointer, :pointer, :pointer], :int32],
17
- [:EstimateBuffer, [:int32, :int32], :int32],
18
17
  [:Shutdown, [], :void]
19
18
  ].freeze)
20
19
 
20
+ ESTIMATED_ENCRYPTION_OVERHEAD = 48
21
+ ESTIMATED_ENVELOPE_OVERHEAD = 185
22
+ BASE64_OVERHEAD = 1.34
23
+
21
24
  class << self
22
25
  # Configures Asherah
23
26
  #
@@ -27,6 +30,7 @@ module Asherah
27
30
  config = Config.new
28
31
  yield config
29
32
  config.validate!
33
+ @intermediated_key_overhead_bytesize = config.product_id.bytesize + config.service_name.bytesize
30
34
 
31
35
  config_buffer = string_to_cbuffer(config.to_json)
32
36
 
@@ -52,13 +56,15 @@ module Asherah
52
56
  def encrypt(partition_id, data)
53
57
  partition_id_buffer = string_to_cbuffer(partition_id)
54
58
  data_buffer = string_to_cbuffer(data)
55
- estimated_length = EstimateBuffer(data.bytesize, partition_id.bytesize)
56
- output_buffer = allocate_cbuffer(estimated_length)
59
+ estimated_buffer_bytesize = estimate_buffer(data.bytesize, partition_id.bytesize)
60
+ output_buffer = allocate_cbuffer(estimated_buffer_bytesize)
57
61
 
58
62
  result = EncryptToJson(partition_id_buffer, data_buffer, output_buffer)
59
63
  Error.check_result!(result, 'EncryptToJson failed')
60
64
 
61
65
  cbuffer_to_string(output_buffer)
66
+ ensure
67
+ [partition_id_buffer, data_buffer, output_buffer].map(&:free)
62
68
  end
63
69
 
64
70
  # Decrypts a DataRowRecord in JSON format for a partition_id and returns decrypted data.
@@ -75,11 +81,22 @@ module Asherah
75
81
  Error.check_result!(result, 'DecryptFromJson failed')
76
82
 
77
83
  cbuffer_to_string(output_buffer)
84
+ ensure
85
+ [partition_id_buffer, data_buffer, output_buffer].map(&:free)
78
86
  end
79
87
 
80
88
  # Stop the Asherah instance
81
89
  def shutdown
82
90
  Shutdown()
83
91
  end
92
+
93
+ private
94
+
95
+ def estimate_buffer(data_bytesize, partition_bytesize)
96
+ ESTIMATED_ENVELOPE_OVERHEAD +
97
+ @intermediated_key_overhead_bytesize +
98
+ partition_bytesize +
99
+ ((data_bytesize + ESTIMATED_ENCRYPTION_OVERHEAD) * BASE64_OVERHEAD)
100
+ end
84
101
  end
85
102
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: asherah
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: x86_64-darwin
6
6
  authors:
7
7
  - GoDaddy
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-03-21 00:00:00.000000000 Z
11
+ date: 2022-03-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cobhan