Skip to content

Sign appcast feed#5

Merged
ychin merged 1 commit intomainfrom
appcast-signature
Apr 6, 2026
Merged

Sign appcast feed#5
ychin merged 1 commit intomainfrom
appcast-signature

Conversation

@ychin
Copy link
Copy Markdown
Member

@ychin ychin commented Apr 6, 2026

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.


For reference, see https://sparkle-project.org/documentation/#signing-feeds-optional

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.
@ychin ychin force-pushed the appcast-signature branch from d21ade6 to 621f03c Compare April 6, 2026 23:58
@ychin ychin merged commit 02d0bf9 into main Apr 6, 2026
@ychin ychin deleted the appcast-signature branch April 6, 2026 23:59
ychin added a commit to ychin/macvim that referenced this pull request Apr 7, 2026
Sparkle 2.9 introduced the ability to verify appcast feeds using a
signature. Turn that on to prevent MITM attacks.

This requires the appcast on the server side to be re-generated with
signature at the end. This was done in
macvim-dev/macvim-dev.github.io#5.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant