Class: Ccrypto::CipherConfig
- Inherits:
-
Object
- Object
- Ccrypto::CipherConfig
- Includes:
- AlgoConfig, TR::CondUtils
- Defined in:
- lib/ccrypto/configs/cipher_config.rb
Instance Attribute Summary collapse
-
#algo ⇒ Object
readonly
set while this config is initialize and should not be changed.
-
#ccrypto_key ⇒ Object
given later by the provider.
-
#iv ⇒ Object
given later by the provider.
-
#ivLength ⇒ Object
readonly
Returns the value of attribute ivLength.
-
#key_config ⇒ Object
construct a standard key config for key generation engine.
-
#keysize ⇒ Object
readonly
Returns the value of attribute keysize.
-
#mandatory_block_size ⇒ Object
readonly
Use cases : openssl aes-128-xts only accepts input min 16 bytes other no padding mode aes128-wrap only works on block of 8 bytes.
-
#min_input_length ⇒ Object
readonly
Use cases : openssl aes-128-xts only accepts input min 16 bytes other no padding mode aes128-wrap only works on block of 8 bytes.
-
#mode ⇒ Object
readonly
set while this config is initialize and should not be changed.
-
#padding ⇒ Object
readonly
set while this config is initialize and should not be changed.
-
#provider_config ⇒ Object
provider specific.
Instance Method Summary collapse
-
#<=>(val) ⇒ Object
enable sort.
- #decrypt_cipher_mode ⇒ Object (also: #set_decrypt_mode)
- #encrypt_cipher_mode ⇒ Object (also: #set_encrypt_mode)
- #has_iv? ⇒ Boolean
- #has_key? ⇒ Boolean
-
#has_mandatory_block_size? ⇒ Boolean
def has_fixed_auth_tag_length? not_empty?(@fixed_auth_tag_length) and @fixed_auth_tag_length.to_i > -1 end.
- #has_min_input_length? ⇒ Boolean
-
#initialize(algo, opts = { }, &block) ⇒ CipherConfig
constructor
A new instance of CipherConfig.
- #is_algo?(algo) ⇒ Boolean
- #is_auth_mode_cipher? ⇒ Boolean
- #is_decrypt_cipher_mode? ⇒ Boolean
- #is_encrypt_cipher_mode? ⇒ Boolean
- #is_mode?(mode) ⇒ Boolean
- #iv_required? ⇒ Boolean
- #needs_ciphertext_length? ⇒ Boolean
- #needs_plaintext_length? ⇒ Boolean
- #to_s ⇒ Object
Methods included from AlgoConfig
Constructor Details
permalink #initialize(algo, opts = { }, &block) ⇒ CipherConfig
[View source]
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/ccrypto/configs/cipher_config.rb', line 27 def initialize(algo, opts = { }, &block) @algo = algo @authMode = false @plaintext_length = 0 @ciphertext_length = 0 @min_input_length = -1 @mandatory_block_size = -1 @fixed_iv_length = -1 if not_empty?(opts) and opts.is_a?(Hash) @mode = opts[:mode] @authMode = opts[:authMode] || false @iv = opts[:iv] @ivLength = opts[:ivLength] if is_empty?(@iv) @iv_required = (@ivLength.nil? ? false : @ivLength.to_i > 0) @ccrypto_key = opts[:ccrypto_key] @keysize = opts[:keysize] if is_empty?(@ccrypto_key) @padding = opts[:padding] @min_input_length = opts[:min_input_length] || -1 @mandatory_block_size = opts[:mandatory_block_size] || -1 #@fixed_auth_tag_length = opts[:fixed_auth_tag_length] || -1 @provider_config = opts[:provider_config] end end |
Instance Attribute Details
permalink #algo ⇒ Object (readonly)
set while this config is initialize and should not be changed
13 14 15 |
# File 'lib/ccrypto/configs/cipher_config.rb', line 13 def algo @algo end |
permalink #ccrypto_key ⇒ Object
given later by the provider
10 11 12 |
# File 'lib/ccrypto/configs/cipher_config.rb', line 10 def ccrypto_key @ccrypto_key end |
permalink #iv ⇒ Object
given later by the provider
10 11 12 |
# File 'lib/ccrypto/configs/cipher_config.rb', line 10 def iv @iv end |
permalink #ivLength ⇒ Object (readonly)
Returns the value of attribute ivLength.
14 15 16 |
# File 'lib/ccrypto/configs/cipher_config.rb', line 14 def ivLength @ivLength end |
permalink #key_config ⇒ Object
construct a standard key config for key generation engine
25 26 27 |
# File 'lib/ccrypto/configs/cipher_config.rb', line 25 def key_config @key_config end |
permalink #keysize ⇒ Object (readonly)
Returns the value of attribute keysize.
14 15 16 |
# File 'lib/ccrypto/configs/cipher_config.rb', line 14 def keysize @keysize end |
permalink #mandatory_block_size ⇒ Object (readonly)
Use cases : openssl aes-128-xts only accepts input min 16 bytes other no padding mode aes128-wrap only works on block of 8 bytes
19 20 21 |
# File 'lib/ccrypto/configs/cipher_config.rb', line 19 def mandatory_block_size @mandatory_block_size end |
permalink #min_input_length ⇒ Object (readonly)
Use cases : openssl aes-128-xts only accepts input min 16 bytes other no padding mode aes128-wrap only works on block of 8 bytes
19 20 21 |
# File 'lib/ccrypto/configs/cipher_config.rb', line 19 def min_input_length @min_input_length end |
permalink #mode ⇒ Object (readonly)
set while this config is initialize and should not be changed
13 14 15 |
# File 'lib/ccrypto/configs/cipher_config.rb', line 13 def mode @mode end |
permalink #padding ⇒ Object (readonly)
set while this config is initialize and should not be changed
13 14 15 |
# File 'lib/ccrypto/configs/cipher_config.rb', line 13 def padding @padding end |
permalink #provider_config ⇒ Object
provider specific
22 23 24 |
# File 'lib/ccrypto/configs/cipher_config.rb', line 22 def provider_config @provider_config end |
Instance Method Details
permalink #<=>(val) ⇒ Object
enable sort
137 138 139 |
# File 'lib/ccrypto/configs/cipher_config.rb', line 137 def <=>(val) @algo <=> val.algo end |
permalink #decrypt_cipher_mode ⇒ Object Also known as: set_decrypt_mode
[View source]
123 124 125 |
# File 'lib/ccrypto/configs/cipher_config.rb', line 123 def decrypt_cipher_mode @cipherOps = :decrypt end |
permalink #encrypt_cipher_mode ⇒ Object Also known as: set_encrypt_mode
[View source]
115 116 117 |
# File 'lib/ccrypto/configs/cipher_config.rb', line 115 def encrypt_cipher_mode @cipherOps = :encrypt end |
permalink #has_iv? ⇒ Boolean
[View source]
67 68 69 |
# File 'lib/ccrypto/configs/cipher_config.rb', line 67 def has_iv? not_empty?(@iv) end |
permalink #has_key? ⇒ Boolean
[View source]
71 72 73 |
# File 'lib/ccrypto/configs/cipher_config.rb', line 71 def has_key? not_empty?(@ccrypto_key) end |
permalink #has_mandatory_block_size? ⇒ Boolean
def has_fixed_auth_tag_length?
not_empty?(@fixed_auth_tag_length) and @fixed_auth_tag_length.to_i > -1
end
83 84 85 |
# File 'lib/ccrypto/configs/cipher_config.rb', line 83 def has_mandatory_block_size? not_empty?(@mandatory_block_size) and @mandatory_block_size.to_i > -1 end |
permalink #has_min_input_length? ⇒ Boolean
[View source]
75 76 77 |
# File 'lib/ccrypto/configs/cipher_config.rb', line 75 def has_min_input_length? not_empty?(@min_input_length) and @min_input_length.to_i > -1 end |
permalink #is_algo?(algo) ⇒ Boolean
[View source]
91 92 93 94 95 96 97 |
# File 'lib/ccrypto/configs/cipher_config.rb', line 91 def is_algo?(algo) if @algo.nil? or is_empty?(@algo) false else (@algo.to_s.downcase =~ /#{algo}/) != nil end end |
permalink #is_auth_mode_cipher? ⇒ Boolean
[View source]
87 88 89 |
# File 'lib/ccrypto/configs/cipher_config.rb', line 87 def is_auth_mode_cipher? @authMode == true end |
permalink #is_decrypt_cipher_mode? ⇒ Boolean
[View source]
127 128 129 |
# File 'lib/ccrypto/configs/cipher_config.rb', line 127 def is_decrypt_cipher_mode? @cipherOps == :decrypt end |
permalink #is_encrypt_cipher_mode? ⇒ Boolean
[View source]
119 120 121 |
# File 'lib/ccrypto/configs/cipher_config.rb', line 119 def is_encrypt_cipher_mode? @cipherOps == :encrypt end |
permalink #is_mode?(mode) ⇒ Boolean
[View source]
99 100 101 102 103 104 105 |
# File 'lib/ccrypto/configs/cipher_config.rb', line 99 def is_mode?(mode) if @mode.nil? or is_empty?(@mode) false else (@mode.to_s.downcase =~ /#{mode.to_s.downcase}/) != nil end end |
permalink #iv_required? ⇒ Boolean
[View source]
63 64 65 |
# File 'lib/ccrypto/configs/cipher_config.rb', line 63 def iv_required? @iv_required end |
permalink #needs_ciphertext_length? ⇒ Boolean
[View source]
111 112 113 |
# File 'lib/ccrypto/configs/cipher_config.rb', line 111 def needs_ciphertext_length? is_mode?(:ccm) end |
permalink #needs_plaintext_length? ⇒ Boolean
[View source]
107 108 109 |
# File 'lib/ccrypto/configs/cipher_config.rb', line 107 def needs_plaintext_length? is_mode?(:ccm) end |
permalink #to_s ⇒ Object
[View source]
131 132 133 134 |
# File 'lib/ccrypto/configs/cipher_config.rb', line 131 def to_s res = [@algo, @keysize, @mode, @padding].reject { |v| is_empty?(v) }.join("-") "#{res} (Auth mode? : #{@authMode})" end |