diff --git a/Makefile b/Makefile
index 680caa364..aa3f669a6 100644
--- a/Makefile
+++ b/Makefile
@@ -18,7 +18,6 @@ clean:
xcodebuild -project $(PROJECT) -scheme Vienna -configuration Development clean
xcodebuild -project $(PROJECT) -scheme Vienna -configuration Deployment clean
rm -fr Build
- rm -fr DerivedData
localize:
for locale in $(LOCALES); do \
diff --git a/README.md b/README.md
index 9a157236c..b57484a7a 100644
--- a/README.md
+++ b/README.md
@@ -16,8 +16,8 @@ Version 3.9 of Vienna will require a minimum of macOS 10.13 (High Sierra).
Vienna 3.8.x require a minimum of macOS 10.12 (Sierra).
Vienna 3.6.x and 3.7.x require a minimum of OS X 10.11 (El Capitan).
-Vienna 3.5.x requires a minimum of OS X 10.9 (Mavericks).
-Vienna 3.1.x to 3.4.x require a minimum of OS X 10.8 (Mountain Lion).
+Vienna 3.2.x to 3.5.x require a minimum of OS X 10.9 (Mavericks).
+Vienna 3.1.x requires a minimum of OS X 10.8 (Mountain Lion).
Vienna 3.0.x requires a minimum of OS X 10.6 (Snow Leopard).
diff --git a/Release Instructions.md b/Release Instructions.md
index 94af43015..7cc0acb94 100644
--- a/Release Instructions.md
+++ b/Release Instructions.md
@@ -5,9 +5,7 @@ Instructions for building and uploading Vienna binaries to Github and Sourceforg
### Build settings
In Xcode->File->Project settingsā¦, you should have :
-- Build System : New Build System
-- Derived Data : Project-relative Location
- - DerivedData
+- Derived Data : Default Location
- Advancedā¦ : Build Location : Custom : Relative to Workspace
- Products : Build/Products
- Intermediates : Build/Intermediates.noindex
@@ -24,9 +22,6 @@ should be exactly the name of your certificate as it is stored in Keychain.
`PRIVATE_EDDSA_KEY_PATH`
should be the location of the private EdDSA (ed25519) key used by Sparkle 2, which for obvious security reasons should not be located in the source directory !
-`PRIVATE_KEY_PATH`
-should be the location of the (legacy) private DSA key used by Sparkle, which for obvious security reasons should not be located in the source directory !
-
If you want to go further in automation of package building, you will have to define three additional environment variables in the `CS-ID.xcconfig` file. These ones are used to automate the use of the `notarytool` command line tool as described in [this page of Apple's documentation](https://developer.apple.com/documentation/xcode/notarizing_macos_software_before_distribution/customizing_the_notarization_workflow).
`APP_STORE_ID`
@@ -43,7 +38,6 @@ For instance, the content of my `Scripts/Resources/CS-ID.xcconfig` file looks li
CODE_SIGN_IDENTITY = Developer ID Application: Barijaona Ramaholimihaso
PRIVATE_EDDSA_KEY_PATH = $(SRCROOT)/../secrets/vienna_private_eddsa_key.pem
- PRIVATE_KEY_PATH = $(SRCROOT)/../secrets/vienna_private_key.pem
APP_STORE_ID = barijaona@mac.com
KEYCHAIN_PROFILE = AC_PASSWORD
TEAM_ID = KUU2LM7U9K
@@ -86,7 +80,7 @@ There are two distinct ways to get the different files needed to publish an upda
- Select the latest archive, click the "Distribute App" button,
- Select "Developer ID" as method of distribution,
- Accept the values proposed in the following prompts,
-- Wait for the upload to finish, then a mail notification from Apple informing you that the software was successfully notarized,
+- Wait for the upload to finish, then the message informing you that the software was successfully notarized,
- Close the organizer, select scheme "Deployment" at the top of Xcode's main window,
- Run the Deployment scheme,
- The Uploads window should open in the Finder after a while.
diff --git a/Scripts/Release-for-upload.sh b/Scripts/Release-for-upload.sh
index e7fd32b8b..b0dfd6ce5 100755
--- a/Scripts/Release-for-upload.sh
+++ b/Scripts/Release-for-upload.sh
@@ -36,10 +36,10 @@ tar -a -cf "${TGZ_FILENAME}" --exclude '.DS_Store' Vienna.app
rm -rf Vienna.app
# Output the sparkle change log
-SPARKLE_BIN="${SOURCE_ROOT}/DerivedData/Vienna/SourcePackages/artifacts/Sparkle/bin"
+SPARKLE_BIN=$(find "${SDK_STAT_CACHE_DIR}" -regex "${SDK_STAT_CACHE_DIR}/${PROJECT}-.*/SourcePackages/artifacts/sparkle/Sparkle/bin")
if [ ! -d "$SPARKLE_BIN" ]; then
- printf 'Unable to locate Sparkle binaries in the binary Swift Package. ' 1>&2
+ printf 'Unable to locate Sparkle binaries in DerivedData. ' 1>&2
printf 'Resolve the Swift Packages in Xcode first.\n' 1>&2
exit 1
fi
@@ -54,19 +54,7 @@ if [ ! -f "$PRIVATE_EDDSA_KEY_PATH" ]; then
fi
ED_SIGNATURE_AND_LENGTH="$(sign_update "$TGZ_FILENAME" -f "$PRIVATE_EDDSA_KEY_PATH")"
-# Generate DSA signature (deprecated; used for backwards compatibility). This
-# command outputs only a signature string, cf. the EdDSA signature string.
-if [ ! -f "$PRIVATE_KEY_PATH" ]; then
- printf 'Unable to load signing private key vienna_private_key.pem. ' 1>&2
- printf 'Set PRIVATE_KEY_PATH in Scripts/Resources/CS-ID.xcconfig\n' 1>&2
- exit 1
-fi
-
-export PATH="$SPARKLE_BIN/old_dsa_scripts:$PATH"
-
-DSA_SIGNATURE="sparkle:dsaSignature=\"$(sign_update "$TGZ_FILENAME" "$PRIVATE_KEY_PATH")\""
-
-pubDate="$(LC_TIME=en_US TZ=GMT date -jf '%FT%TZ' "${VCS_DATE}" '+%a, %d %b %G %T %z')"
+pubDate="$(LC_ALL=en_US.UTF8 TZ=GMT date -jf '%FT%TZ' "${VCS_DATE}" '+%a, %d %b %G %T %z')"
cat > "${VIENNA_CHANGELOG}" << EOF
@@ -84,9 +72,45 @@ cat > "${VIENNA_CHANGELOG}" << EOF
${N_VCS_NUM}
${V_VCS_TAG} :${VCS_SHORT_HASH}:
${MACOSX_DEPLOYMENT_TARGET}.0
-
+
https://www.vienna-rss.com/sparkle-files/noteson${N_VCS_TAG}.html
+ -
+ Vienna 3.8.7 :15608906:
+ Sun, 16 Apr 2023 11:30:01 +0000
+ https://github.com/ViennaRSS/vienna-rss/releases/tag/v%2F3.8.7
+ 8038
+ 3.8.7 :15608906:
+ 10.12.0
+
+ https://www.vienna-rss.com/sparkle-files/noteson3.8.7.html
+
+ -
+ Vienna 3.7.5 :e811b5c2:
+ Sun, 28 Aug 2022 09:13:53 +0000
+ https://github.com/ViennaRSS/vienna-rss/releases/tag/v%2F3.7.5
+ 7567
+ 3.7.5 :e811b5c2:
+ 10.11.0
+
+ https://www.vienna-rss.com/sparkle-files/noteson3.7.5.html
+
+ -
+ Vienna 3.5.10 :9b26c77b:
+ Sun, 08 Nov 2020 11:58:56 +0000
+ https://github.com/ViennaRSS/vienna-rss/releases/tag/v%2F3.5.10
+ 10.9.0
+
+ https://www.vienna-rss.com/sparkle-files/noteson3.5.10.html
+
+ -
+ Vienna 3.1.16 :891d05ea:
+ Mon, 25 Sep 2017 22:08:32 +0000
+ https://github.com/ViennaRSS/vienna-rss/releases/tag/v%2F3.1.16
+ 10.8.0
+
+ https://www.vienna-rss.com/sparkle-files/noteson3.1.16.html
+
diff --git a/Scripts/generate_keys.rb b/Scripts/generate_keys.rb
deleted file mode 100755
index b22439c7a..000000000
--- a/Scripts/generate_keys.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/usr/bin/ruby
-["dsaparam.pem", "dsa_priv.pem", "dsa_pub.pem"].each do |file|
- if File.exist? file
- puts "There's already a #{file} here! Move it aside or be more careful!"
- end
-end
-`openssl dsaparam 2048 < /dev/urandom > dsaparam.pem`
-`openssl gendsa dsaparam.pem -out dsa_priv.pem`
-`openssl dsa -in dsa_priv.pem -pubout -out dsa_pub.pem`
-`rm dsaparam.pem`
-puts "\nGenerated private and public keys: dsa_priv.pem and dsa_pub.pem.\n
-BACK UP YOUR PRIVATE KEY AND KEEP IT SAFE!\n
-If you lose it, your users will be unable to upgrade!\n"
\ No newline at end of file
diff --git a/Scripts/sign_update.rb b/Scripts/sign_update.rb
deleted file mode 100755
index 6d03e2ef0..000000000
--- a/Scripts/sign_update.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/usr/bin/ruby
-if ARGV.length < 2
- puts "Usage: ruby sign_update.rb update_archive private_key"
- exit
-end
-
-puts `openssl dgst -sha1 -binary < "#{ARGV[0]}" | openssl dgst -dss1 -sign "#{ARGV[1]}" | openssl enc -base64`
\ No newline at end of file
diff --git a/Vienna.xcodeproj/project.pbxproj b/Vienna.xcodeproj/project.pbxproj
index e3444cb96..1556b65aa 100644
--- a/Vienna.xcodeproj/project.pbxproj
+++ b/Vienna.xcodeproj/project.pbxproj
@@ -98,11 +98,12 @@
3A500129259A640D00AA6AAD /* ArticleStyleLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F2280372271B18A005D1023 /* ArticleStyleLoader.swift */; };
3A50014E259AA2BE00AA6AAD /* WebKitArticleConverter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FC4A18F257CF775005FF227 /* WebKitArticleConverter.swift */; };
3A60E60B2114AD740004D81D /* URLRequestExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A60E60A2114AD740004D81D /* URLRequestExtensions.m */; };
+ 3A78208729FF534100570771 /* ArchivalChecks.sh in Resources */ = {isa = PBXBuildFile; fileRef = 3A78208629FF534100570771 /* ArchivalChecks.sh */; };
+ 3A78208929FF536400570771 /* PostArchive.sh in Resources */ = {isa = PBXBuildFile; fileRef = 3A78208829FF536400570771 /* PostArchive.sh */; };
3A7BD0DD1989AC7700E9444B /* VNAVerticallyCenteredTextFieldCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A7BD0DC1989AC7700E9444B /* VNAVerticallyCenteredTextFieldCell.m */; };
3A8D9AE325A9DA4B0016F30F /* ArticleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A8D9AE225A9DA4B0016F30F /* ArticleTests.swift */; };
3AB95743258DBC5A00C54E83 /* Browser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FDF6FC5218A26B0002F77E9 /* Browser.swift */; };
3AC411A526BBFDFD004A8700 /* WebKitArticleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AC411A426BBFDFD004A8700 /* WebKitArticleView.swift */; };
- 3AEE7DE91695FC570018A17D /* SparkleDSAPublicKey.pem in Resources */ = {isa = PBXBuildFile; fileRef = 3AEE7DE81695FC570018A17D /* SparkleDSAPublicKey.pem */; };
435026E6165DD8BE0018EDB7 /* ArticleRef.m in Sources */ = {isa = PBXBuildFile; fileRef = 435026E5165DD8BE0018EDB7 /* ArticleRef.m */; };
4350283E165DE7F60018EDB7 /* NSNotificationAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4350283D165DE7F60018EDB7 /* NSNotificationAdditions.m */; };
43502895165DE9E00018EDB7 /* ActivityLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 43502848165DE9DF0018EDB7 /* ActivityLog.m */; };
@@ -358,6 +359,8 @@
3A60E6092114AD740004D81D /* URLRequestExtensions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = URLRequestExtensions.h; sourceTree = ""; };
3A60E60A2114AD740004D81D /* URLRequestExtensions.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = URLRequestExtensions.m; sourceTree = ""; };
3A6CC18623BBA49D0084ABEE /* Codesigning.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Codesigning.xcconfig; sourceTree = ""; };
+ 3A78208629FF534100570771 /* ArchivalChecks.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = ArchivalChecks.sh; sourceTree = ""; };
+ 3A78208829FF536400570771 /* PostArchive.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = PostArchive.sh; sourceTree = ""; };
3A7BD0DB1989AC7700E9444B /* VNAVerticallyCenteredTextFieldCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VNAVerticallyCenteredTextFieldCell.h; sourceTree = ""; };
3A7BD0DC1989AC7700E9444B /* VNAVerticallyCenteredTextFieldCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VNAVerticallyCenteredTextFieldCell.m; sourceTree = ""; };
3A8D9AE225A9DA4B0016F30F /* ArticleTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ArticleTests.swift; sourceTree = ""; };
@@ -365,7 +368,6 @@
3A932D8923BB999A009B8061 /* ViennaDeployment.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = ViennaDeployment.entitlements; sourceTree = ""; };
3AC411A426BBFDFD004A8700 /* WebKitArticleView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WebKitArticleView.swift; sourceTree = ""; };
3ADBA70C23DDAFCA00156722 /* Notarize.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = Notarize.sh; sourceTree = ""; };
- 3AEE7DE81695FC570018A17D /* SparkleDSAPublicKey.pem */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SparkleDSAPublicKey.pem; sourceTree = ""; };
430C4ADB1661753F0079C9FC /* autorevision.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = autorevision.h; sourceTree = ""; };
430C4AE0166175C20079C9FC /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
435026E5165DD8BE0018EDB7 /* ArticleRef.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ArticleRef.m; sourceTree = ""; };
@@ -1208,7 +1210,9 @@
children = (
2FE5DE71294641550089490B /* CombinePredicateTranslations */,
439824191666B37000FFE219 /* autorevision.sh */,
+ 3A78208629FF534100570771 /* ArchivalChecks.sh */,
3A5482F7168F5F4800887F91 /* Sparkle-setup.sh */,
+ 3A78208829FF536400570771 /* PostArchive.sh */,
4398241A1666B37000FFE219 /* Changes-and-Notes.sh */,
3ADBA70C23DDAFCA00156722 /* Notarize.sh */,
4398241C1666B37000FFE219 /* Release-for-upload.sh */,
@@ -1265,7 +1269,6 @@
F63DA1721F1CEFC3007CBED4 /* Strings */,
03F33D951DF2A2F900B04FAF /* Assets.xcassets */,
F6209C5923D3FFA700D5537D /* Vienna.sdef */,
- 3AEE7DE81695FC570018A17D /* SparkleDSAPublicKey.pem */,
);
path = Resources;
sourceTree = "";
@@ -1876,12 +1879,13 @@
F6D572B41E26AA9900CDA909 /* InfoWindow.xib in Resources */,
F6832F681F10F5DA007920D4 /* MainWindowController.xib in Resources */,
3A0F2A55258FBB8B0036397F /* TabbedBrowserViewController.xib in Resources */,
+ 3A78208729FF534100570771 /* ArchivalChecks.sh in Resources */,
3A0F2A9E258FCB780036397F /* BrowserTab.xib in Resources */,
F6D572BA1E26AAA900CDA909 /* SearchFolder.xib in Resources */,
F626F5F424A76B9100D3AAD8 /* Preferences.storyboard in Resources */,
- 3AEE7DE91695FC570018A17D /* SparkleDSAPublicKey.pem in Resources */,
F6209C5A23D3FFA700D5537D /* Vienna.sdef in Resources */,
F62580E71E286CEC0035E43C /* RSSSources.plist in Resources */,
+ 3A78208929FF536400570771 /* PostArchive.sh in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1984,6 +1988,7 @@
};
EAAF336614BEF4DF002A8837 /* Release For Upload */ = {
isa = PBXShellScriptBuildPhase;
+ alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
@@ -1999,6 +2004,7 @@
};
F6743B10224BB6980054FE1E /* Build Release Notes */ = {
isa = PBXShellScriptBuildPhase;
+ alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
diff --git a/Vienna/Info.plist b/Vienna/Info.plist
index 5f8b80caa..fa820940e 100644
--- a/Vienna/Info.plist
+++ b/Vienna/Info.plist
@@ -142,8 +142,6 @@
SUEnableInstallerLauncherService
- SUPublicDSAKeyFile
- SparkleDSAPublicKey.pem
SUPublicEDKey
nPwwT+poO5Kmi1NZkE5OveKB8lvQVY20N22E8jgxLCg=
UTExportedTypeDeclarations
diff --git a/Vienna/Resources/SparkleDSAPublicKey.pem b/Vienna/Resources/SparkleDSAPublicKey.pem
deleted file mode 100644
index 69c4f9b2c..000000000
--- a/Vienna/Resources/SparkleDSAPublicKey.pem
+++ /dev/null
@@ -1,20 +0,0 @@
------BEGIN PUBLIC KEY-----
-MIIDOzCCAi4GByqGSM44BAEwggIhAoIBAQD9mBIXQzsMWtw/yNvo3pNwLcJL0Hlr
-k7xC0xJcy+Qb8rWjsgbS/zxzKmycUsARwNj0klF7AGffoPcjeHsaU2YM7hhLFgdg
-KFxYu/15Adv5v4EPsMKjihR786r1yBeh46y+jfErzDV54Ij6RpSn0DgPgtJL84sx
-LCSavT5rKvNjjMZM8MHfrPlmUeTefdqC/W27ULRBH2N96ikR5xrymzRTTLlLzlXK
-1kXBKujSKWzoiGv9kU6HZJ42zAO7VIglbQxNwJsNdggPTD2UfC6hN4oPB6YLzgQo
-ucbxdEamJ3zy1CKDMG2VhNhsdVSaHqfLkz5PckMrohwJaT3ALOJyuYGdAhUA9kif
-n/Y0QDqdNbgeI8tMcUSFnWUCggEBAO67WbDbvxAL++8d5TH2H6f0ht/AdjnzgHWr
-SFhxAOxrYHCorNM02OXFX5N8BzZLbFqdg0W+QggS/FFOmWeKNGxFLb9qwW93DB8Z
-fD3ndWz4LKULoB63Ouq0NwyNo8AzsT6uRNExFLlk3eV3u559KWoH8v+P9g++eRfq
-CKILV0f6CC8y+ZseGezmuLJEb+ll2+WIJ4gRZ+sbRoGtdoOtYaJ+eI2azN6sE8ep
-FwAxyER1X24cyLZk5i+J3qUcbRUVANCBChGSrcW4XEJknEkp82mvBGiFOvt2GGQo
-oRcSv8puR42oNZvfvmCVS21W0fEnsGCknaW/mh9ZiwPk4zxhNIkDggEFAAKCAQBc
-IT/Z2jhEfQDZUYfY59nqfOexSEnbnCF2QGMp/vnck2Qp/xnnhMg3KvOH/Z4cIYhG
-hgZ1pDlGEub3hParKU7PE5hsKBYezwv2JpAj8NW2VG4qcADU+yAyD/we3XMtXcRA
-mXlmxalR9D0wjbSgaRDpUShG6i6cV7KhAGyAw77uDQ4eepulfbwPYHmjgviodp29
-J1teFAU7zOZA6Ndt+JXNMAFE0ger85lEh6OW5HezYlidJgikvFAdBWyMud97O1Jb
-OxSIJY2xaIIdsrzVnft+R7w9lpLzkSJOEjPsqdXIbTDI2rfNYBCDsj/qlHU0+pv2
-XwKTAM+0r4KOmWP5r+re
------END PUBLIC KEY-----