{
  "$id": "EFvHYHX0cUx9sdjxZOr9fpPcQKdzRNFH42D8R29p7lAH",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Bind Key",
  "description": "Declare that issuer uses a cryptographic key that's not directly managed by the KEL (e.g., to conform to an external standard). Issuing this ACDC makes key binding provable and revokable.",
  "$comment": "These credentials are intentionally public and untargeted. Hence they lack an issuee and don't support compaction.",
  "type": "object",
  "credentialType": "BindKeyAttestation",
  "version": "1.0.0",
  "required": [
    "v",
    "d",
    "i",
    "ri",
    "s",
    "a"
  ],
  "properties": {
    "v": {
      "description": "version string using ACDC conventions",
      "type": "string"
    },
    "d": {
      "description": "SAID of the credential",
      "type": "string"
    },
    "i": {
      "description": "AID of the issuer",
      "type": "string"
    },
    "ri": {
      "description": "Registry for issuer's assertion status",
      "type": "string"
    },
    "s": {
      "description": "SAID of this schema",
      "type": "string"
    },
    "a": {
      "$id": "EEuuowmRpUKeaR2myHZDnMXPlVWOoSOJSbk5QWSSVlDl",
      "description": "Attributes block",
      "type": "object",
      "required": [
        "pubkey"
      ],
      "properties": {
        "d": {
          "description": "Attributes block SAID",
          "type": "string"
        },
        "dt": {
          "description": "Issuance datetime, ISO-8601 datetime string",
          "type": "string",
          "format": "date-time"
        },
        "pubkey": {
          "description": "Public key that issuer will use",
          "format": "cesr",
          "type": "string"
        },
        "startDate": {
          "description": "Time issuer intends key binding to start; if missing, starts on issuance",
          "format": "date-time",
          "type": "string"
        },
        "stopDate": {
          "description": "Time issuer intends key binding to stop; if missing, stops only on revocation",
          "format": "date-time",
          "type": "string"
        },
        "uses": {
          "description": "short strings that describe ways that the key will be used",
          "type": "array",
          "uniqueItems": true,
          "minItems": 1,
          "items": {
            "$comment": "Enum omitted to stay flexible, but use examples if they apply.",
            "examples": [
              "ssh",
              "x509",
              "gpg",
              "spf",
              "dkim",
              "dmarc"
            ],
            "type": "string",
            "pattern": "^([a-z]([a-z0-9]*[-._/]?))+[a-z0-9]+$"
          }
        }
      }
    }
  },
  "additionalProperties": false
}