## TL;DR
Supply the exact keystore credentials the file was created with, checking for whitespace, wrong variable mapping and a corrupted upload in Codemagic code signing settings. This Java keytool message appears both for a genuinely wrong store password and for a damaged or re-encoded keystore file. Re-upload the original binary keystore, re-enter its credentials as CI variables without copying stray characters, and verify locally with keytool before rebuilding.

```text
keystore was tampered with or password was incorrect - Codemagic
```

## Use this when
- Codemagic Android signing fails with this keytool message.
- Credentials were moved from another CI or retyped by hand.
- The keystore was stored as text, for example base64 handled incorrectly, at some point.

## Not for this skill when
- The alias password differs from the store password and only the alias is wrong. keytool messages blur the two; test both locally.
- The keystore is the wrong file entirely, such as a debug keystore. Verify fingerprints.

## Steps
1. Download or locate the original keystore file and test it locally with keytool list using the credentials you believe are correct. Verify: keytool lists the alias locally, proving file and credentials, or fails identically proving one is wrong
2. Compare the fingerprint Codemagic reports or the uploaded file size against the known-good local file. Verify: file sizes and fingerprints match, or the uploaded copy is confirmed corrupt
3. Re-upload the keystore to Codemagic as a binary file, never via a text field that could alter bytes. Verify: the code signing settings show the re-uploaded keystore
4. Re-enter the store and key passwords in Codemagic variables by typing rather than pasting from a document that may add spaces. Verify: variables are saved and masked in the UI
5. Check the workflow references the correct keystore entry name and alias. Verify: the workflow signing section names the same entry and alias as keytool lists
6. Rebuild in Codemagic. Verify: signing completes and the release AAB is produced
7. Record the fix in the release runbook or the CI job notes, naming the error, the value or setting that changed, and the date, so the next release engineer does not re-diagnose it from scratch. Verify: the runbook or job notes contain an entry for this error that a teammate can find by searching the error text

## Why it happens
keytool cannot distinguish a wrong password from file corruption because both fail the integrity check the password provides. CI migrations introduce both: passwords gain trailing spaces through spreadsheets, and keystores get mangled when they pass through text-oriented secret stores. Local keytool verification separates file health from credential health before touching CI again.

In practice this failure is rarely a one-off. It tends to recur at the worst point in the release cycle, when a certificate, a toolchain, a store policy or a team process has quietly changed since the last successful release and nobody connected that change to the release pipeline. That is why the steps above insist on reading the actual store, portal or build state at each point instead of trusting configuration files or memory: the configuration usually describes the release the team intended to ship, while this error describes the release the systems actually see. Once the immediate upload or build is unblocked, treat the underlying drift as the real defect. Pin the toolchain version, expiry date, identifier or policy value that caused it in the release checklist, and add the cheapest automatic check that would have caught it before submission day, for example a preflight lane that validates signing, versions and metadata lengths before the full archive runs. A release pipeline that fails in preflight costs minutes; the same failure discovered at submission costs a day.

## Variants and edge cases
### Codemagic keystore tampered password incorrect fix
CI phrasing; re-upload the binary and re-enter credentials. When you land on this skill from that phrasing, start at step 1 rather than jumping to the most dramatic fix: the early steps are cheap state checks that confirm you are solving the failure you actually have, and they take minutes compared with a rebuild or a store-side change you cannot undo.
### keytool keystore was tampered with or password was incorrect
Tool phrasing; test the file locally with keytool list first. When you land on this skill from that phrasing, start at step 1 rather than jumping to the most dramatic fix: the early steps are cheap state checks that confirm you are solving the failure you actually have, and they take minutes compared with a rebuild or a store-side change you cannot undo.
### Edge case: JKS versus PKCS12 format
Newer keytools default to PKCS12. A format mismatch with old tooling can mimic corruption; check the format flag when listing. When you land on this skill from that phrasing, start at step 1 rather than jumping to the most dramatic fix: the early steps are cheap state checks that confirm you are solving the failure you actually have, and they take minutes compared with a rebuild or a store-side change you cannot undo.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_1Q2QyvU3eItyu1JjKsV5sw
