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 +4 -4
- data/CHANGELOG.md +6 -0
- data/lib/asherah/native/libasherah-x64.so +0 -0
- data/lib/asherah/version.rb +1 -1
- data/lib/asherah.rb +20 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 758ad70b5b231d10c180fb71a049d96afd32a037fc57677c1f68d0073a21dbc5
|
4
|
+
data.tar.gz: 2d7ca84aad9d29edbc0d4d50b06a59eeefa2b6f42538255888de8a46bf8d6e26
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
data/lib/asherah/version.rb
CHANGED
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
|
-
|
56
|
-
output_buffer = allocate_cbuffer(
|
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.
|
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-
|
11
|
+
date: 2022-03-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cobhan
|