asherah 0.2.0-x86_64-linux → 0.3.0-x86_64-linux

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: 1a3ea6ba3aca16701b48b1435b5dde4a014d0e3769cc66d6609af670b3d4b6cf
4
- data.tar.gz: d2cf924ab75bc682deeea77addea8fad85585460748e702e66005dd0d2af18e7
3
+ metadata.gz: 758ad70b5b231d10c180fb71a049d96afd32a037fc57677c1f68d0073a21dbc5
4
+ data.tar.gz: 2d7ca84aad9d29edbc0d4d50b06a59eeefa2b6f42538255888de8a46bf8d6e26
5
5
  SHA512:
6
- metadata.gz: 23a1ebfb0229e3245111a9b9abd7298e194a61b5e5d5172afcede238e4f5bc8456f54b81f585bf665354fce05420220d45e0593678c984fbd12471c95b77b01e
7
- data.tar.gz: d094f921ae9a0c2150ccff3285475449ead10a0609829449bc5336a9e968addb7ae9263e43a4f6899dbbd785a9a298ce8360165525759436c6b3dc2b16cf542b
6
+ metadata.gz: 595dfddbec67e401d03ca1173da193806ef9685883570345c8a2fb3b485cc68e7c9ed3c97c8b90ebcdab53ea4dcd221760d054f26ad3b9ff14ea2431552730b2
7
+ data.tar.gz: 5369890fc487da0e6108b3bb6ad50d47b01d80ac4a1f77c2e4d5253047d121fa381e14980da2a8fd2d3f48b9035ac3c2fc0f8afeeb10c3f183fbe9a51f74d638
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
Binary file
@@ -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-linux
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