From gpg-ops
Verify a GPG signature on a file or clear-signed text. Use when the user has downloaded a release artefact + `.sig`/`.asc` and wants to confirm authenticity, or received a clear-signed message and wants to check it. Distinguishes "good signature, untrusted key" from "good signature, trusted key" — both are cryptographically valid; only the latter proves identity.
npx claudepluginhub danielrosehill/claude-code-plugins --plugin gpg-opsThis skill uses the workspace's default tool permissions.
The user has a signature to verify:
Prevents silent decimal mismatch bugs in EVM ERC-20 tokens via runtime decimals lookup, chain-aware caching, bridged-token handling, and normalization. For DeFi bots, dashboards using Python/Web3, TypeScript/ethers, Solidity.
Share bugs, ideas, or general feedback.
The user has a signature to verify:
<file> + <file>.sig (or .asc).-----BEGIN PGP SIGNED MESSAGE----- block).gpg-decrypt.gpg --verify <file>.sig <file>
Or, if the signature filename matches the data filename with a .sig / .asc suffix, GPG auto-detects:
gpg --verify <file>.sig
gpg --verify <file>.asc
Prints Good signature from … and outputs the embedded message to stderr. To extract just the message body:
gpg --decrypt <file>.asc > message.txt
(Yes, --decrypt works on clear-signed text — it strips the signature wrapper while verifying.)
A passing verification prints something like:
gpg: Signature made <date>
gpg: using EDDSA key ABCDEF1234567890
gpg: Good signature from "Real Name <email@example.com>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no assurance this key belongs to the named user.
Primary key fingerprint: 1234 5678 ...
Three things to check:
Good signature — cryptographic check passed; the signature matches the data and the signing key.[unknown] / [marginal] is a warning, not a failure. If the user has independently confirmed the fingerprint, they can locally sign the key:
gpg --lsign-key <fingerprint>
Future verifications then show [full] and skip the warning.BAD signature — the file has been modified since signing, or the signature is corrupt. Do not trust.Can't check signature: No public key — you don't have the signer's public key on the keyring. Fetch it:
gpg --keyserver keys.openpgp.org --recv-keys <KEYID>
…or import from a .asc file the signer provided. Then re-run --verify.Signature made <date> ... key has expired — signature is mathematically valid but was made with an expired key. Up to the user whether to trust depending on context (was it signed before expiry?).Standard pattern:
gpg --keyserver keys.openpgp.org --recv-keys <PROJECT-KEYID>
gpg --verify release-1.2.3.tar.gz.sig release-1.2.3.tar.gz
Confirm the printed fingerprint matches the project's published signing-key fingerprint. Don't skip the fingerprint compare — anyone can upload a key claiming to be the project.