asherah 0.2.0-aarch64-linux → 0.3.0-aarch64-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: a2e6fdb86dc94a52314b2e3c3b15e24a97a892e66a894f35187d9149ce8eb756
4
- data.tar.gz: 4d29ae34d0e5efae2078f53c6ea3ffd73d1c94888dc6451d0cea884b10b67bc6
3
+ metadata.gz: ef6d062e4ed676c66a72dba500d4376801b33199da28e69eb2e62f34dae62a40
4
+ data.tar.gz: 2909ca407f9d1954e68232122373baa30c3a33095d65b890d996061902bcc136
5
5
  SHA512:
6
- metadata.gz: fc4d1c627347bfcf984adf49647de53c86b7133474a2ef8c457fcc0645ca1641987fa7330a0a15bc2f4a621ba7397f480ce550f993c32dffe5416c14191609ae
7
- data.tar.gz: 8eeb0241c1eb2dfc8f7500eee412aa6955d77138b250137b37388fa4a120bfd07a5a572205b3e552582dd24d45ee7d92a22e5c4a21c406c1e89eaee01dd3f502
6
+ metadata.gz: 888f1d7c7534919bd79c70def643abd712e01b06808a78b4fc7017e0a0e0e841c267921635cf8beacf0bc7e99b986aa64e7258d2313728c02784c878d0cc5502
7
+ data.tar.gz: 18d76b1c06ed638fa06f15dbfbed49cca82c2ae19d31d0c5ff1968da854dce4b43b724cc267638e422c02db0b1692fd255deb360531418ac571e30b7a91a6d07
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: aarch64-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