{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:oprp:experimental:0.1:trust",
  "title": "OPRP experimental signed authority status",
  "description": "Structural format only. Signatures, authority constraints, status monotonicity, freshness and key ownership require the documented verifier. No X.509 compatibility is claimed.",
  "$ref": "#/$defs/signedStatus",
  "$defs": {
    "signedStatus": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "payload",
        "signature"
      ],
      "properties": {
        "payload": {
          "$ref": "./exchange.schema.json#/$defs/base64url",
          "maxLength": 100000
        },
        "signature": {
          "$ref": "./exchange.schema.json#/$defs/base64url",
          "minLength": 4412,
          "maxLength": 4412
        }
      }
    },
    "statusBody": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "issuer",
        "sequence",
        "issued_at",
        "next_update",
        "revoked_serials",
        "revoked_signing_kids",
        "revoked_encryption_kids"
      ],
      "properties": {
        "issuer": {
          "$ref": "./exchange.schema.json#/$defs/identifier"
        },
        "sequence": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "issued_at": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "next_update": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "revoked_serials": {
          "type": "array",
          "maxItems": 1000,
          "uniqueItems": true,
          "items": {
            "$ref": "./exchange.schema.json#/$defs/identifier"
          }
        },
        "revoked_signing_kids": {
          "type": "array",
          "maxItems": 1000,
          "uniqueItems": true,
          "items": {
            "$ref": "./exchange.schema.json#/$defs/identifier"
          }
        },
        "revoked_encryption_kids": {
          "type": "array",
          "maxItems": 1000,
          "uniqueItems": true,
          "items": {
            "$ref": "./exchange.schema.json#/$defs/identifier"
          }
        }
      }
    },
    "rotationProof": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "payload",
        "old_credential",
        "new_credential",
        "old_signature",
        "new_signature"
      ],
      "properties": {
        "payload": {
          "$ref": "./exchange.schema.json#/$defs/base64url",
          "maxLength": 4000
        },
        "old_credential": {
          "$ref": "./exchange.schema.json#/$defs/credential"
        },
        "new_credential": {
          "$ref": "./exchange.schema.json#/$defs/credential"
        },
        "old_signature": {
          "$ref": "./exchange.schema.json#/$defs/base64url",
          "minLength": 4412,
          "maxLength": 4412
        },
        "new_signature": {
          "$ref": "./exchange.schema.json#/$defs/base64url",
          "minLength": 4412,
          "maxLength": 4412
        }
      }
    },
    "rotationBody": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "rotation_id",
        "host",
        "subject",
        "old_signing_kid",
        "old_encryption_kid",
        "new_signing_kid",
        "new_encryption_kid",
        "issued_at",
        "expires_at"
      ],
      "properties": {
        "rotation_id": {
          "$ref": "./exchange.schema.json#/$defs/identifier"
        },
        "host": {
          "$ref": "./exchange.schema.json#/$defs/identifier"
        },
        "subject": {
          "$ref": "./exchange.schema.json#/$defs/identifier"
        },
        "old_signing_kid": {
          "$ref": "./exchange.schema.json#/$defs/identifier"
        },
        "old_encryption_kid": {
          "$ref": "./exchange.schema.json#/$defs/identifier"
        },
        "new_signing_kid": {
          "$ref": "./exchange.schema.json#/$defs/identifier"
        },
        "new_encryption_kid": {
          "$ref": "./exchange.schema.json#/$defs/identifier"
        },
        "issued_at": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "expires_at": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        }
      }
    }
  }
}
