From aa65c34683637ab2b60999c4ff644fb13571ba14 Mon Sep 17 00:00:00 2001 From: Daniel Elliott Date: Wed, 18 Feb 2026 19:16:47 -0800 Subject: [PATCH] Add release keystore for APK signing - Added rr3-release.keystore (RSA 2048-bit, valid 27 years) - Alias: rr3key, Password: rr3community - Added KEYSTORE-README.md with usage instructions - Required for signing all future releases - Community keystore shared publicly for team use Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- KEYSTORE-README.md | 60 +++++++++++++++++++++++++++++++++++++++++++ rr3-release.keystore | Bin 0 -> 2744 bytes 2 files changed, 60 insertions(+) create mode 100644 KEYSTORE-README.md create mode 100644 rr3-release.keystore diff --git a/KEYSTORE-README.md b/KEYSTORE-README.md new file mode 100644 index 000000000..42a37f279 --- /dev/null +++ b/KEYSTORE-README.md @@ -0,0 +1,60 @@ +# RR3 Release Keystore + +This keystore is used to sign all RR3 offline mod releases. + +## Keystore Details + +- **File:** rr3-release.keystore +- **Alias:** rr3key +- **Password:** rr3community +- **Key Algorithm:** RSA 2048-bit +- **Validity:** 10,000 days (~27 years) +- **Created:** 2026-02-18 + +## Usage + +### Signing an APK + +```bash +# Step 1: Zipalign +zipalign -v -p 4 input.apk aligned.apk + +# Step 2: Sign +apksigner sign --ks rr3-release.keystore \ + --ks-key-alias rr3key \ + --ks-pass pass:rr3community \ + --key-pass pass:rr3community \ + --out signed.apk \ + aligned.apk + +# Step 3: Verify +apksigner verify -v signed.apk +``` + +### Windows PowerShell + +```powershell +# Zipalign +& "path\to\zipalign.exe" -v -p 4 input.apk aligned.apk + +# Sign +& "path\to\apksigner.bat" sign --ks rr3-release.keystore --ks-key-alias rr3key --ks-pass pass:rr3community --key-pass pass:rr3community --out signed.apk aligned.apk + +# Verify +& "path\to\apksigner.bat" verify -v signed.apk +``` + +## Important Notes + +⚠️ **Keep this keystore safe!** All future updates must be signed with the same key, otherwise users will have to uninstall the old version before installing updates. + +⚠️ **This is a community keystore** with a simple password for ease of use. It's shared publicly in this repository. + +## Certificate Information + +- **Owner:** CN=RR3Community, OU=Modding, O=Community, L=Unknown, ST=Unknown, C=US +- **Valid until:** 02/18/2026 19:16:33.AddDays(10000).ToString('yyyy-MM-dd') + +## Files in This Release + +All APKs should be signed with this keystore before distribution. diff --git a/rr3-release.keystore b/rr3-release.keystore new file mode 100644 index 0000000000000000000000000000000000000000..34bf52669f8ac00f865b9cc7430338cefe4d3e87 GIT binary patch literal 2744 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 VbB)`1y6@;J5GbH=jpct?(BE0}_&@*v literal 0 HcmV?d00001