ccrypto 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.release_history.yml +2 -0
- data/Gemfile.lock +6 -8
- data/lib/ccrypto/configs/cipher_config.rb +22 -3
- data/lib/ccrypto/configs/keypair_config.rb +2 -0
- data/lib/ccrypto/supported_cipher_list.rb +30 -16
- data/lib/ccrypto/version.rb +1 -1
- data/lib/ccrypto.rb +3 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d78804b935e3d34f37fb6a0923bf58fd0c7eb8d23686b7da39233c7faee7fcc6
|
4
|
+
data.tar.gz: a9b72eb6dd16aceb1d0ae3dbd7171df9ae0b5113a3e45df5340f9e880331686e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 17e938a40eb693df83d24341c1400d59640d65e49e53535f838dd918abf5016f541b80897fcb04d3ed4b45a14bcf035cfc7405ce8dbd3c1783c4ef1472874393
|
7
|
+
data.tar.gz: f4efc3711e6886ff8ad32e846cf2db74478197e4643a1a5065e938f7f40acbe4515d46cd9d5d9473ad49ae2ef55a5b2a4a1bc2920f1532546ea9ec4c6305747a
|
data/.release_history.yml
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
ccrypto (0.1.
|
4
|
+
ccrypto (0.1.3)
|
5
5
|
activesupport
|
6
6
|
teLogger
|
7
7
|
toolrack
|
@@ -14,11 +14,10 @@ GEM
|
|
14
14
|
i18n (>= 1.6, < 2)
|
15
15
|
minitest (>= 5.1)
|
16
16
|
tzinfo (~> 2.0)
|
17
|
-
base58 (0.2.3)
|
18
17
|
concurrent-ruby (1.2.2)
|
19
|
-
devops_assist (0.3.
|
18
|
+
devops_assist (0.3.11)
|
20
19
|
git_cli
|
21
|
-
git_cli_prompt
|
20
|
+
git_cli_prompt (~> 0.3.3)
|
22
21
|
gvcs
|
23
22
|
teLogger
|
24
23
|
toolrack
|
@@ -29,7 +28,7 @@ GEM
|
|
29
28
|
ptools (~> 1.4.0)
|
30
29
|
teLogger
|
31
30
|
toolrack
|
32
|
-
git_cli_prompt (0.3.
|
31
|
+
git_cli_prompt (0.3.4)
|
33
32
|
teLogger
|
34
33
|
toolrack
|
35
34
|
tty-prompt
|
@@ -50,13 +49,12 @@ GEM
|
|
50
49
|
rspec-expectations (3.12.2)
|
51
50
|
diff-lcs (>= 1.2.0, < 2.0)
|
52
51
|
rspec-support (~> 3.12.0)
|
53
|
-
rspec-mocks (3.12.
|
52
|
+
rspec-mocks (3.12.5)
|
54
53
|
diff-lcs (>= 1.2.0, < 2.0)
|
55
54
|
rspec-support (~> 3.12.0)
|
56
55
|
rspec-support (3.12.0)
|
57
56
|
teLogger (0.2.2)
|
58
|
-
toolrack (0.
|
59
|
-
base58
|
57
|
+
toolrack (0.21.0)
|
60
58
|
tty-color (0.6.0)
|
61
59
|
tty-cursor (0.7.1)
|
62
60
|
tty-prompt (0.23.1)
|
@@ -16,7 +16,7 @@ module Ccrypto
|
|
16
16
|
attr_accessor :cipherOps
|
17
17
|
|
18
18
|
# required by certain mode such as CCM
|
19
|
-
attr_accessor :plaintext_length, :ciphertext_length
|
19
|
+
attr_accessor :plaintext_length, :ciphertext_length, :fixed_auth_tag_length
|
20
20
|
|
21
21
|
# Use cases :
|
22
22
|
# openssl aes-128-xts only accepts input min 16 bytes
|
@@ -37,6 +37,7 @@ module Ccrypto
|
|
37
37
|
@ciphertext_length = 0
|
38
38
|
@min_input_length = -1
|
39
39
|
@mandatory_Block_size = -1
|
40
|
+
@fixed_iv_length = -1
|
40
41
|
|
41
42
|
if not_empty?(opts) and opts.is_a?(Hash)
|
42
43
|
@mode = opts[:mode]
|
@@ -66,6 +67,8 @@ module Ccrypto
|
|
66
67
|
|
67
68
|
@mandatory_block_size = opts[:mandatory_block_size] || -1
|
68
69
|
|
70
|
+
@fixed_auth_tag_length = opts[:fixed_auth_tag_length] || -1
|
71
|
+
|
69
72
|
end
|
70
73
|
|
71
74
|
#if block
|
@@ -107,8 +110,16 @@ module Ccrypto
|
|
107
110
|
not_empty?(@key)
|
108
111
|
end
|
109
112
|
|
113
|
+
def has_min_input_length?
|
114
|
+
not_empty?(@min_input_length) and @min_input_length.to_i > -1
|
115
|
+
end
|
116
|
+
|
117
|
+
def has_fixed_auth_tag_length?
|
118
|
+
not_empty?(@fixed_auth_tag_length) and @fixed_auth_tag_length.to_i > -1
|
119
|
+
end
|
120
|
+
|
110
121
|
def is_auth_mode_cipher?
|
111
|
-
@authMode
|
122
|
+
@authMode == true
|
112
123
|
end
|
113
124
|
|
114
125
|
def is_algo?(algo)
|
@@ -123,10 +134,18 @@ module Ccrypto
|
|
123
134
|
if @mode.nil? or is_empty?(@mode)
|
124
135
|
false
|
125
136
|
else
|
126
|
-
(@mode.to_s.downcase =~ /#{mode.to_s}/) != nil
|
137
|
+
(@mode.to_s.downcase =~ /#{mode.to_s.downcase}/) != nil
|
127
138
|
end
|
128
139
|
end
|
129
140
|
|
141
|
+
def needs_plaintext_length?
|
142
|
+
is_mode?(:ccm)
|
143
|
+
end
|
144
|
+
|
145
|
+
def needs_ciphertext_length?
|
146
|
+
is_mode?(:ccm)
|
147
|
+
end
|
148
|
+
|
130
149
|
def encrypt_cipher_mode
|
131
150
|
@cipherOps = :encrypt
|
132
151
|
end
|
@@ -38,8 +38,8 @@ module Ccrypto
|
|
38
38
|
|
39
39
|
mode = cc.mode.nil? ? "" : cc.mode.to_s
|
40
40
|
if not_empty?(mode)
|
41
|
-
@modes[mode
|
42
|
-
@modes[mode
|
41
|
+
@modes[mode] = [] if @modes[mode].nil?
|
42
|
+
@modes[mode] << cc
|
43
43
|
end
|
44
44
|
|
45
45
|
@algoKeysize[algo] = { } if @algoKeysize[algo].nil?
|
@@ -64,7 +64,7 @@ module Ccrypto
|
|
64
64
|
end
|
65
65
|
|
66
66
|
def items
|
67
|
-
@items
|
67
|
+
@items.freeze
|
68
68
|
end
|
69
69
|
|
70
70
|
def each(&block)
|
@@ -75,52 +75,66 @@ module Ccrypto
|
|
75
75
|
@algos.length
|
76
76
|
end
|
77
77
|
def find_algo(algo)
|
78
|
-
@algos[algo.to_sym] || []
|
78
|
+
res = @algos[algo.to_sym] || []
|
79
|
+
res.freeze
|
79
80
|
end
|
81
|
+
|
82
|
+
# Problem with this is the algo is in symbol
|
83
|
+
# and external app need to remember to conver it to
|
84
|
+
# symbol in order to compare.
|
85
|
+
# therefore the new method is_algo_supported? created
|
86
|
+
# to solve this issue
|
80
87
|
def algos
|
81
|
-
@algos.keys
|
88
|
+
@algos.keys.freeze
|
89
|
+
end
|
90
|
+
|
91
|
+
def is_algo_supported?(algo)
|
92
|
+
@algos.keys.include?(algo.to_sym)
|
82
93
|
end
|
83
94
|
|
84
95
|
def keysizes_count
|
85
96
|
@keysizes.length
|
86
97
|
end
|
87
98
|
def keysizes
|
88
|
-
@keysizes.keys
|
99
|
+
@keysizes.keys.freeze
|
89
100
|
end
|
90
|
-
def
|
91
|
-
@keysizes[keysize.to_s]
|
101
|
+
def find_config_by_keysize(keysize)
|
102
|
+
@keysizes[keysize.to_s].freeze
|
92
103
|
end
|
93
104
|
|
94
105
|
def mode_count
|
95
106
|
@modes.length
|
96
107
|
end
|
97
|
-
def
|
98
|
-
@modes[mode.to_s]
|
108
|
+
def find_config_by_mode(mode)
|
109
|
+
@modes[mode.to_s].freeze
|
99
110
|
end
|
100
111
|
def modes
|
101
|
-
@modes.keys
|
112
|
+
@modes.keys.freeze
|
102
113
|
end
|
103
114
|
|
104
115
|
def find_algo_keysize(algo, keysize)
|
105
116
|
res = @algoKeysize[algo.to_sym] || { }
|
106
|
-
res[keysize.to_s] || []
|
117
|
+
res = res[keysize.to_s] || []
|
118
|
+
res.freeze
|
107
119
|
end
|
108
120
|
|
109
121
|
def find_algo_mode(algo, mode)
|
110
122
|
res = @algoMode[algo.to_sym] || {}
|
111
|
-
res[mode.to_s] || []
|
123
|
+
res = res[mode.to_s] || []
|
124
|
+
res.freeze
|
112
125
|
end
|
113
126
|
|
114
127
|
def find_algo_keysize_mode(algo, keysize, mode)
|
115
128
|
res = @algoKeysizeMode[algo.to_sym] || {}
|
116
129
|
res = res[keysize.to_s] || {}
|
117
|
-
res[mode.to_s] || []
|
130
|
+
res = res[mode.to_s] || []
|
131
|
+
res.freeze
|
118
132
|
end
|
119
133
|
|
120
134
|
def find_keysize_modes(keysize, mode)
|
121
|
-
|
122
135
|
res = @keysizeMode[keysize.to_s] || {}
|
123
|
-
res[mode.to_s] || []
|
136
|
+
res = res[mode.to_s] || []
|
137
|
+
res.freeze
|
124
138
|
end
|
125
139
|
|
126
140
|
end
|
data/lib/ccrypto/version.rb
CHANGED
data/lib/ccrypto.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ccrypto
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ian
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-04-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: teLogger
|
@@ -128,7 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
128
128
|
- !ruby/object:Gem::Version
|
129
129
|
version: '0'
|
130
130
|
requirements: []
|
131
|
-
rubygems_version: 3.4.
|
131
|
+
rubygems_version: 3.4.10
|
132
132
|
signing_key:
|
133
133
|
specification_version: 4
|
134
134
|
summary: Crypto API normalization for Ruby and Java
|