Skip to content

Commit 621f03c

Browse files
committed
Sign appcast feed
Sparkle 2.9 added the ability to verify appcast feeds with the developer's code signature. This adds an extra layer of security so that a supply chain / MITM attack cannot use a compromised appcast feed to show a malicious message. In order to support that, the server needs to serve signed appcasts first or the updated client will reject it. Split the appcast feed into further components so we can add in a signed portion. We now have latest.xml (which is signed), and a new latest_unsigned.xml (which is unsigned). The latest_unsigned.xml should not be used by the client at all and is only used for development purposes, as we need an unsigned version to sign against in the publishing process. From now on every time we want to publish a new appcast or do a slight edit to the release notes we will need to remember to re-sign the appcast.
1 parent c41bf02 commit 621f03c

4 files changed

Lines changed: 20 additions & 11 deletions

File tree

appcast/_appcast.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<rss version="2.0" xmlns:sparkle="http://www.andymatuschak.org/xml-namespaces/sparkle">
3+
<channel>
4+
<title>MacVim</title>
5+
<link>https://macvim.org/appcast/latest.xml</link>
6+
<description>MacVim</description>
7+
{% include_relative _prerelease.xml %}
8+
{% include_relative _release.xml %}
9+
{% include_relative _release_legacy.xml %}
10+
</channel>
11+
</rss>

appcast/_appcast_signature.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<!-- sparkle-signatures:
2+
edSignature: UwuYxfz+1MxV29U2H25Ojeqdxp6HrHSUmrSEMRAySf/OplUIR1xFS56vCRbbfHFW4erCpkT+0M+J5rDVHGZdBg==
3+
length: 37463
4+
-->

appcast/latest.xml

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,4 @@
11
---
22
---
3-
<?xml version="1.0" encoding="utf-8"?>
4-
<rss version="2.0" xmlns:sparkle="http://www.andymatuschak.org/xml-namespaces/sparkle">
5-
<channel>
6-
<title>MacVim</title>
7-
<link>https://macvim.org/appcast/latest.xml</link>
8-
<description>MacVim</description>
9-
{% include_relative _prerelease.xml %}
10-
{% include_relative _release.xml %}
11-
{% include_relative _release_legacy.xml %}
12-
</channel>
13-
</rss>
3+
{% include_relative _appcast.xml %}
4+
{% include_relative _appcast_signature.xml %}

appcast/latest_unsigned.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
---
2+
---
3+
{% include_relative _appcast.xml %}

0 commit comments

Comments
 (0)