# Copyright (c) 2010-2011, Diaspora Inc. This file is # licensed under the Affero General Public License version 3 or later. See # the COPYRIGHT file. module Salmon class EncryptedSlap < Slap # Construct an encrypted header # @return [String] Header XML def header(person) < #{person.encrypt("#{plaintext_header}")} XML end # @return [String, Boolean] False if RSAError; XML if no error def xml_for(person) begin super rescue OpenSSL::PKey::RSAError => e Rails.logger.info(:event => :invalid_rsa_key, :identifier => person.diaspora_handle) false end end # Decrypts an encrypted magic sig envelope # @param key_hash [Hash] Contains 'key' (aes) and 'iv' values # @param user [User] def parse_data(key_hash, user) user.aes_decrypt(super, key_hash) end # Decrypts and parses out the salmon header # @return [Nokogiri::Doc] def salmon_header(doc, user) header = user.decrypt(doc.search('encrypted_header').text) Nokogiri::XML(header) end # Encrypt the magic sig # @return [String] def self.payload(activity, user, aes_key_hash) user.person.aes_encrypt(activity, aes_key_hash) end end end