---
id: "age_recipient"
kind: "datatype"
status: "draft"
is_pii: false
categories: ["cryptography"]
langs: ["common"]
quality: 68
url: "http://registry.apicrafter.io/datatype/age_recipient"
---

# age public key (X25519 recipient) (`age_recipient`)

> **Draft.** Draft records have not been reviewed yet and may be incomplete or wrong; do not treat them as authoritative for legal or compliance decisions.

Public key of the age file encryption format and tool, that is, an X25519 recipient that files are encrypted to. It is a 62-character lowercase Bech32 string with the human-readable part age, so it starts with age1. Post-quantum recipients (age1pq1...) and recipients of age plugins are longer or use other prefixes and are not covered.

- Personal data (PII): no
- Categories: Cryptographic identifiers (cryptography)
- Countries: global
- Languages: Common to most languages (common)
- Classification: identifier

## Detection

Regular expression (Python `re`):

```
^age1[qpzry9x8gf2tvdw0s3jn54khce6mua7l]{58}$
```

Check digit algorithm: `bech32`

## Examples

- `age1zvkyg2lqzraa2lnjvqej32nkuu0ues2s82hzrye869xeexvn73equnujwj` — Test vector of the age specification
- `age1zvkyg2lqzraa2lnjvqej32nkuu0ues2s82hzrye869xeexvn73equnujwq` (invalid example) — Wrong Bech32 checksum
- `age1zvkyg2lqzraa2lnjvqej32nkuu0ues2s82hzrye869xeexvn73equnujw` (invalid example) — One character short

## Sources

- doc: <https://github.com/C2SP/C2SP/blob/main/age.md>

## Quality

Score 68/100. Missing: second example, mapping (Wikidata, Schema.org, ...), translation, detector coverage.

JSON: <http://registry.apicrafter.io/api/v1/datatypes/age_recipient.json> · Edit: <https://github.com/apicrafter/metacrafter-registry/edit/main/data/datatypes/any/cryptography/age_recipient.yaml>
