diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4a3d7a3..f08276e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+## [unreleased]
+
+### Fixed
+* New style Diaspora Magic Envelope didn't require or like payload data to be cut to 60 char lines, as the legacy protocol does. Fixed to not cut lines.
+
## [0.6.0] - 2016-09-13
### Added
diff --git a/federation/protocols/diaspora/magic_envelope.py b/federation/protocols/diaspora/magic_envelope.py
index 05fcc8c..e3f6fff 100644
--- a/federation/protocols/diaspora/magic_envelope.py
+++ b/federation/protocols/diaspora/magic_envelope.py
@@ -28,20 +28,11 @@ class MagicEnvelope(object):
self.doc = None
self.payload = None
- def _encode_payload(self):
- """Encode the payload and wrap it to 60 char lines."""
- self.payload = urlsafe_b64encode(self.payload).decode("ascii")
- self.payload = '\n'.join(
- [self.payload[start:start + 60] for start in range(0, len(self.payload), 60)]
- )
- self.payload += "\n"
- return self.payload
-
def create_payload(self):
"""Create the payload doc.
Returns:
- bytes
+ str
"""
doc = etree.fromstring(self.message)
if self.wrap_payload:
@@ -50,6 +41,7 @@ class MagicEnvelope(object):
post.append(doc)
doc = wrap
self.payload = etree.tostring(doc, encoding="utf-8")
+ self.payload = urlsafe_b64encode(self.payload).decode("ascii")
return self.payload
def _build_signature(self):
@@ -70,7 +62,6 @@ class MagicEnvelope(object):
etree.SubElement(self.doc, "{%s}encoding" % self.nsmap["me"]).text = 'base64url'
etree.SubElement(self.doc, "{%s}alg" % self.nsmap["me"]).text = 'RSA-SHA256'
self.create_payload()
- self._encode_payload()
etree.SubElement(self.doc, "{%s}data" % self.nsmap["me"],
{"type": "application/xml"}).text = self.payload
signature, key_id = self._build_signature()
diff --git a/federation/tests/protocols/diaspora/test_magic_envelope.py b/federation/tests/protocols/diaspora/test_magic_envelope.py
index 5aedbea..f9bd925 100644
--- a/federation/tests/protocols/diaspora/test_magic_envelope.py
+++ b/federation/tests/protocols/diaspora/test_magic_envelope.py
@@ -30,7 +30,8 @@ class TestMagicEnvelope(object):
wrap_payload=True,
)
payload = env.create_payload()
- assert payload == b"bar"
+ assert payload == "PFhNTD48cG9zdD48c3RhdHVzX21lc3NhZ2U-PGZvbz5iYXI8L2Zvbz48L3N0YXR1c19tZXNzYWdlPjwvcG9zdD4" \
+ "8L1hNTD4="
def test_create_payload(self):
env = MagicEnvelope(
@@ -39,17 +40,7 @@ class TestMagicEnvelope(object):
author_handle="foobar@example.com"
)
payload = env.create_payload()
- assert payload == b"bar"
-
- def test_encode_payload(self):
- env = MagicEnvelope(
- message="bar",
- private_key="key",
- author_handle="foobar@example.com"
- )
- env.create_payload()
- payload = env._encode_payload()
- assert payload == "PHN0YXR1c19tZXNzYWdlPjxmb28-YmFyPC9mb28-PC9zdGF0dXNfbWVzc2Fn\nZT4=\n"
+ assert payload == "PHN0YXR1c19tZXNzYWdlPjxmb28-YmFyPC9mb28-PC9zdGF0dXNfbWVzc2FnZT4="
def test_build_signature(self):
env = MagicEnvelope(
@@ -58,14 +49,12 @@ class TestMagicEnvelope(object):
author_handle="foobar@example.com"
)
env.create_payload()
- env._encode_payload()
signature, key_id = env._build_signature()
- assert signature == b"RAfiBBrk0OzPbmh6xE7wMRe7ir-qprZ7zk5VDGfopc6rfATFNbNB2FWH" \
- b"FdvJfoky9ORNvfUoiFmtbMG7kmmFHgpQdUl_OU81lKb7NG6-aq2ZRVDQ" \
- b"T46UYat1ssdqkkynqywowdyEGVUxxalFkOHWuYajmpc7ajt_G8xXjMDU" \
- b"Ctt0VUFXepxshd24ZWRXO1RQK4bFr7X9-d26Ho3kLuB1VB_pYYbxJQCZl" \
- b"m0EDlFj7vktl0zibswMFyRqiacwu8zec_HR4x8yMkF_zSNJsnnLq6ch4ad6" \
- b"r83LOVk3Yvdxinb61spHEjr2zvPWExEgUt4Jcpc07aZRUKCJVfFXFYAGnA=="
+ assert signature == b'Cmk08MR4Tp8r9eVybD1hORcR_8NLRVxAu0biOfJbkI1xLx1c480zJ720cpVyKaF9CxVjW3lvlvRz' \
+ b'5YbswMv0izPzfHpXoWTXH-4UPrXaGYyJnrNvqEB2UWn4iHKJ2Rerto8sJY2b95qbXD6Nq75EoBNu' \
+ b'b5P7DYc16ENhp38YwBRnrBEvNOewddpOpEBVobyNB7no_QR8c_xkXie-hUDFNwI0z7vax9HkaBFb' \
+ b'vEmzFPMZAAdWyjxeGiWiqY0t2ZdZRCPTezy66X6Q0qc4I8kfT-Mt1ctjGmNMoJ4Lgu-PrO5hSRT4' \
+ b'QBAVyxaog5w-B0PIPuC-mUW5SZLsnX3_ZuwJww=='
assert key_id == b"Zm9vYmFyQGV4YW1wbGUuY29t"
def test_render(self):
@@ -76,17 +65,14 @@ class TestMagicEnvelope(object):
)
env.build()
output = env.render()
- assert output == '' \
- 'base64urlRSA-SHA256' \
- 'PHN0YXR1c19tZXNzYWdlPjxmb28-Ym' \
- 'FyPC9mb28-PC9zdGF0dXNfbWVzc2Fn\nZT4=\n' \
- 'RAfiBBrk0OzPbmh6xE7wMRe' \
- '7ir-qprZ7zk5VDGfopc6rfATFNbNB2FWHFdvJfoky9ORNvfUoiFmtbMG7kmmFHgp' \
- 'QdUl_OU81lKb7NG6-aq2ZRVDQT46UYat1ssdqkkynqywo' \
- 'wdyEGVUxxalFkOHWuYajmpc7ajt_G8xXjMDUCtt0VUFXepxshd24ZWRX' \
- 'O1RQK4bFr7X9-d26Ho3kLuB1VB_pYYbxJQCZlm0EDlFj7vktl0zibs' \
- 'wMFyRqiacwu8zec_HR4x8yMkF_zSNJsnnLq6ch4ad6r83LOVk3Yvdxin' \
- 'b61spHEjr2zvPWExEgUt4Jcpc07aZRUKCJVfFXFYAGnA=='
+ assert output == 'base64url' \
+ 'RSA-SHA256' \
+ 'PHN0YXR1c19tZXNzYWdlPjxmb28-YmFyPC9mb28-PC9zdGF0dXNfbWVzc2FnZT4=' \
+ 'Cmk08MR4Tp8r9eVybD1hORcR_8NLRVxAu0biOfJbk' \
+ 'I1xLx1c480zJ720cpVyKaF9CxVjW3lvlvRz5YbswMv0izPzfHpXoWTXH-4UPrXaGYyJnrNvqEB2UWn4iHK' \
+ 'J2Rerto8sJY2b95qbXD6Nq75EoBNub5P7DYc16ENhp38YwBRnrBEvNOewddpOpEBVobyNB7no_QR8c_xkX' \
+ 'ie-hUDFNwI0z7vax9HkaBFbvEmzFPMZAAdWyjxeGiWiqY0t2ZdZRCPTezy66X6Q0qc4I8kfT-Mt1ctjGmNM' \
+ 'oJ4Lgu-PrO5hSRT4QBAVyxaog5w-B0PIPuC-mUW5SZLsnX3_ZuwJww=='
env2 = MagicEnvelope(
message="bar",
private_key=get_dummy_private_key(),