From eef2b391a0a8169e6d91d5954a8e2d0eea75ac3c Mon Sep 17 00:00:00 2001 From: Hossain Khan Date: Sat, 28 Jun 2025 12:31:12 -0400 Subject: [PATCH] [MORE] Debugging for the key --- .github/workflows/test-keystore.yml | 127 ++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) diff --git a/.github/workflows/test-keystore.yml b/.github/workflows/test-keystore.yml index 70c71c3..a0c9fea 100644 --- a/.github/workflows/test-keystore.yml +++ b/.github/workflows/test-keystore.yml @@ -285,3 +285,130 @@ jobs: echo "Full entry details:" cat keystore-test/entry-details.txt fi + + - name: Compare Working vs Broken Keystore + if: always() + run: | + echo "Comparing your keystore with the working debug keystore..." + + echo "=== Your keystore details ===" + keytool -list -v -keystore keystore-test/release.keystore \ + -storepass "${{ secrets.KEYSTORE_PASSWORD }}" \ + -alias "${{ secrets.KEY_ALIAS }}" > keystore-test/your-keystore-details.txt 2>&1 || true + + echo "=== Debug keystore details ===" + keytool -list -v -keystore keystore-test/debug.keystore \ + -storepass "android" \ + -alias "androiddebugkey" > keystore-test/debug-keystore-details.txt 2>&1 || true + + echo "=== Testing jarsigner with debug keystore ===" + jarsigner -keystore keystore-test/debug.keystore \ + -storepass "android" \ + -keypass "android" \ + -signedjar keystore-test/debug-signed.jar \ + keystore-test/test.jar \ + "androiddebugkey" > keystore-test/debug-signing.txt 2>&1 || true + + if [ -f keystore-test/debug-signed.jar ]; then + echo "✅ Debug keystore can sign files successfully" + ls -la keystore-test/debug-signed.jar + else + echo "❌ Even debug keystore failed to sign" + cat keystore-test/debug-signing.txt + fi + + - name: Test with Different jarsigner Options + if: always() + run: | + echo "Testing jarsigner with different options..." + + # Try with explicit storetype + echo "=== Trying with explicit -storetype PKCS12 ===" + jarsigner -keystore keystore-test/release.keystore \ + -storetype PKCS12 \ + -storepass "${{ secrets.KEYSTORE_PASSWORD }}" \ + -keypass "${{ secrets.KEY_PASSWORD }}" \ + -signedjar keystore-test/signed-pkcs12.jar \ + keystore-test/test.jar \ + "${{ secrets.KEY_ALIAS }}" > keystore-test/signing-pkcs12.txt 2>&1 || true + + # Try with JKS storetype + echo "=== Trying with explicit -storetype JKS ===" + jarsigner -keystore keystore-test/release.keystore \ + -storetype JKS \ + -storepass "${{ secrets.KEYSTORE_PASSWORD }}" \ + -keypass "${{ secrets.KEY_PASSWORD }}" \ + -signedjar keystore-test/signed-jks.jar \ + keystore-test/test.jar \ + "${{ secrets.KEY_ALIAS }}" > keystore-test/signing-jks.txt 2>&1 || true + + # Try without keypass (in case store and key passwords are the same) + echo "=== Trying without explicit -keypass ===" + jarsigner -keystore keystore-test/release.keystore \ + -storepass "${{ secrets.KEYSTORE_PASSWORD }}" \ + -signedjar keystore-test/signed-no-keypass.jar \ + keystore-test/test.jar \ + "${{ secrets.KEY_ALIAS }}" > keystore-test/signing-no-keypass.txt 2>&1 || true + + echo "Results summary:" + for test in pkcs12 jks no-keypass; do + if [ -f keystore-test/signed-$test.jar ]; then + echo "✅ $test approach worked" + else + echo "❌ $test approach failed:" + cat keystore-test/signing-$test.txt | head -2 + fi + done + + - name: Analyze Private Key Accessibility + if: always() + run: | + echo "Analyzing private key accessibility..." + + # Try to export the private key (this will fail but give us info) + echo "=== Attempting to access private key directly ===" + keytool -exportcert -keystore keystore-test/release.keystore \ + -storepass "${{ secrets.KEYSTORE_PASSWORD }}" \ + -alias "${{ secrets.KEY_ALIAS }}" \ + -file keystore-test/cert.der > keystore-test/export-cert.txt 2>&1 || true + + if [ -f keystore-test/cert.der ]; then + echo "✅ Certificate export successful" + file keystore-test/cert.der + openssl x509 -in keystore-test/cert.der -inform DER -text -noout | head -10 + else + echo "❌ Certificate export failed" + cat keystore-test/export-cert.txt + fi + + # Check if we can change the key password (requires private key access) + echo "=== Testing private key access by changing key password ===" + cp keystore-test/release.keystore keystore-test/test-copy.keystore + keytool -keypasswd -keystore keystore-test/test-copy.keystore \ + -storepass "${{ secrets.KEYSTORE_PASSWORD }}" \ + -alias "${{ secrets.KEY_ALIAS }}" \ + -keypass "${{ secrets.KEY_PASSWORD }}" \ + -new "newpassword123" > keystore-test/keypasswd-test.txt 2>&1 || true + + if grep -q "Warning" keystore-test/keypasswd-test.txt; then + echo "❌ Cannot access private key for password change" + cat keystore-test/keypasswd-test.txt + else + echo "✅ Private key is accessible for password changes" + + # Now try jarsigner with the new password + echo "=== Testing jarsigner with new key password ===" + jarsigner -keystore keystore-test/test-copy.keystore \ + -storepass "${{ secrets.KEYSTORE_PASSWORD }}" \ + -keypass "newpassword123" \ + -signedjar keystore-test/signed-newpass.jar \ + keystore-test/test.jar \ + "${{ secrets.KEY_ALIAS }}" > keystore-test/signing-newpass.txt 2>&1 || true + + if [ -f keystore-test/signed-newpass.jar ]; then + echo "✅ Signing worked with new key password!" + else + echo "❌ Still failed with new key password" + cat keystore-test/signing-newpass.txt + fi + fi