{
"id": "app.certified.signature.defs",
"defs": {
"list": {
"type": "array",
"items": {
"refs": [
"app.certified.signature.defs#inline",
"com.atproto.repo.strongRef"
],
"type": "union"
},
"description": "Reusable array of cryptographic signatures attesting to a record's content. Open union of inline signatures and strong references to remote attestation proof records."
},
"inline": {
"type": "object",
"required": [
"signature",
"key"
],
"properties": {
"key": {
"type": "string",
"maxLength": 512,
"description": "Full DID verification method reference (format: did:{method}:{identifier}#{fragment}). Identifies the signer and the specific key used; the key's multicodec prefix determines the signing curve."
},
"signature": {
"type": "bytes",
"description": "ECDSA signature bytes (raw r,s) over the 36-byte CID of the record. Low-S variant per BIP-0062 is mandatory."
}
},
"description": "Inline attestation signature embedded directly in a record. Conforms to the ATProtocol Attestation Specification: the signed input is the 36-byte CIDv1 (dag-cbor + SHA-256) of the record with the `signatures` field removed and a temporary `$sig` metadata object (containing `$type` and the housing repository DID) inserted before canonical DAG-CBOR encoding. ECDSA with the low-S variant per BIP-0062 is required; the curve (P-256 or K-256) is determined by the multicodec prefix of the verification method's `publicKeyMultibase`."
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1,
"description": "Common type definitions for cryptographic signatures attached to records, per the ATProtocol Attestation Specification."
}