Method: Chef::EncryptedAttribute::EncryptedMash::Version1#encrypt
- Defined in:
- lib/chef/encrypted_attribute/encrypted_mash/version1.rb
#encrypt(value, public_keys) ⇒ EncryptedMash
Encrypts data inside the current Chef::EncryptedAttribute::EncryptedMash object.
136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 |
# File 'lib/chef/encrypted_attribute/encrypted_mash/version1.rb', line 136 def encrypt(value, public_keys) secrets = {} value_json = json_encode(value) public_keys = parse_public_keys(public_keys) # encrypt the data encrypted_data = symmetric_encrypt_value(value_json) # should no include the secret in clear secrets['data'] = encrypted_data.delete('secret') self['encrypted_data'] = encrypted_data # generate hmac (encrypt-then-mac), excluding the secret hmac = generate_hmac(json_encode(self['encrypted_data'].sort)) secrets['hmac'] = hmac.delete('secret') self['hmac'] = hmac # encrypt the shared secrets self['encrypted_secret'] = rsa_encrypt_multi_key(json_encode(secrets), public_keys) self end |