From 0990eff69ccd641aa91a380cc6188e72a633122e Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Sun, 20 Mar 2016 17:54:52 +0100 Subject: [PATCH] don't add key_id to legacy private encrypted slap xml --- lib/diaspora_federation/salmon/encrypted_slap.rb | 2 +- lib/diaspora_federation/salmon/magic_envelope.rb | 10 +++++++--- .../diaspora_federation/salmon/encrypted_slap_spec.rb | 5 +++++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/lib/diaspora_federation/salmon/encrypted_slap.rb b/lib/diaspora_federation/salmon/encrypted_slap.rb index ce7ca6e..7b96991 100644 --- a/lib/diaspora_federation/salmon/encrypted_slap.rb +++ b/lib/diaspora_federation/salmon/encrypted_slap.rb @@ -114,7 +114,7 @@ module DiasporaFederation EncryptedSlap.new.tap do |slap| slap.author_id = author_id - magic_envelope = MagicEnvelope.new(entity, author_id) + magic_envelope = MagicEnvelope.new(entity) slap.cipher_params = magic_envelope.encrypt! slap.magic_envelope_xml = magic_envelope.envelop(privkey) end diff --git a/lib/diaspora_federation/salmon/magic_envelope.rb b/lib/diaspora_federation/salmon/magic_envelope.rb index 08b8474..bf7e833 100644 --- a/lib/diaspora_federation/salmon/magic_envelope.rb +++ b/lib/diaspora_federation/salmon/magic_envelope.rb @@ -49,8 +49,8 @@ module DiasporaFederation # @param [Entity] payload Entity instance # @param [String] sender diaspora-ID of the sender # @raise [ArgumentError] if either argument is not of the right type - def initialize(payload, sender) - raise ArgumentError unless payload.is_a?(Entity) && sender.is_a?(String) + def initialize(payload, sender=nil) + raise ArgumentError unless payload.is_a?(Entity) @payload = payload @sender = sender @@ -69,7 +69,7 @@ module DiasporaFederation xml["me"].data(Base64.urlsafe_encode64(payload_data), type: DATA_TYPE) xml["me"].encoding(ENCODING) xml["me"].alg(ALGORITHM) - xml["me"].sig(Base64.urlsafe_encode64(sign(privkey)), key_id: Base64.urlsafe_encode64(sender)) + xml["me"].sig(Base64.urlsafe_encode64(sign(privkey)), key_id) } } end @@ -132,6 +132,10 @@ module DiasporaFederation @payload_data ||= XmlPayload.pack(@payload).to_xml.strip end + def key_id + sender ? {key_id: Base64.urlsafe_encode64(sender)} : {} + end + # Builds the xml root node of the magic envelope. # # @yield [xml] Invokes the block with the diff --git a/spec/lib/diaspora_federation/salmon/encrypted_slap_spec.rb b/spec/lib/diaspora_federation/salmon/encrypted_slap_spec.rb index fd4c163..be11fa3 100644 --- a/spec/lib/diaspora_federation/salmon/encrypted_slap_spec.rb +++ b/spec/lib/diaspora_federation/salmon/encrypted_slap_spec.rb @@ -87,6 +87,11 @@ module DiasporaFederation expect(doc1.xpath("d:diaspora/me:env", ns).to_xml).to eq(doc2.xpath("d:diaspora/me:env", ns).to_xml) end + it "does not add the sender to the magic envelope" do + doc = Nokogiri::XML::Document.parse(slap_xml) + expect(doc.at_xpath("d:diaspora/me:env/me:sig", ns)["key_id"]).to be_nil + end + context "header" do subject { doc = Nokogiri::XML::Document.parse(slap_xml)