class ZuoraConnect::AppInstanceBase
def kms_encrypt(value, encryption_type: ZuoraConnect.configuration.encryption_type)
def kms_encrypt(value, encryption_type: ZuoraConnect.configuration.encryption_type) kms_tries ||= 0 case encryption_type when :direct resp = kms_client.encrypt({key_id: kms_key(raise_on_blank: true), plaintext: value}) return resp.ciphertext_blob.unpack('H*').first when :envelope cipher = fetch_cipher('encrypt') value = cipher.update(value.to_s) value << cipher.final return Base64.strict_encode64(value) else ZuoraConnect::Exceptions::Error.new("Invalid encryption method '#{encryption_type}'.") end rescue *AWS_AUTH_ERRORS => ex if (kms_tries += 1) < 3 Rails.logger.warn(AWS_AUTH_ERRORS_MSG, ex) retry else Rails.logger.error(AWS_AUTH_ERRORS_MSG, ex) raise end end