class Itamae::Secrets::AesKey
Constants
- AES1_KEY_LEN
Attributes
key[R]
name[R]
type[R]
Public Class Methods
generate_pkcs5(name, passphrase)
click to toggle source
# File lib/itamae/secrets/aes_key.rb, line 23 def self.generate_pkcs5(name, passphrase) key_len = key_len_for_type('aes1') salt = OpenSSL::Digest::SHA256.digest(name) key = OpenSSL::PKCS5.pbkdf2_hmac(passphrase, salt, 30000, key_len, OpenSSL::Digest::SHA256.new) new name, 'aes1', key end
generate_random(name)
click to toggle source
# File lib/itamae/secrets/aes_key.rb, line 18 def self.generate_random(name) key_len = key_len_for_type('aes1') new name, 'aes1', OpenSSL::Random.random_bytes(key_len) end
key_len_for_type(type)
click to toggle source
# File lib/itamae/secrets/aes_key.rb, line 9 def self.key_len_for_type(type) case type when 'aes1' AES1_KEY_LEN else raise ArgumentError, "unknown type #{type.inspect}" end end
load_json(json)
click to toggle source
# File lib/itamae/secrets/aes_key.rb, line 32 def self.load_json(json) data = JSON.parse(json) new(data['name'], data['type'], data['key'].unpack('m*')[0]) end
new(name, type, key)
click to toggle source
# File lib/itamae/secrets/aes_key.rb, line 37 def initialize(name, type, key) raise ArgumentError, "name must not contain slashes, commas, backslackes" if name.include?("\\") || name.include?(?/) || name.include?(?:) @name = name @type = type @key = key end
Public Instance Methods
algorithm_compatible?(algorithm)
click to toggle source
# File lib/itamae/secrets/aes_key.rb, line 46 def algorithm_compatible?(algorithm) algorithm == 'aes-256-gcm' end
to_json()
click to toggle source
# File lib/itamae/secrets/aes_key.rb, line 54 def to_json { name: name, type: type, key: [key].pack('m*'), }.to_json end
to_s()
click to toggle source
# File lib/itamae/secrets/aes_key.rb, line 50 def to_s key end