{
  "formatVersion": 1,
  "category": "midnight-did-binding",
  "fixture": {
    "controllerAddressHex": "0101010101010101010101010101010101010101010101010101010101010101",
    "methodIdHex": "0202020202020202020202020202020202020202020202020202020202020202",
    "publicKey": {
      "x": "47805549206756120863994733988949966563868680443409072344285414365387721651928",
      "y": "10883866336127360287053583923937114185802477515052223349661086820822299756070"
    },
    "alternatePublicKey": {
      "x": "41781039653558041424378087441097781830366075995084681920492076253857675647465",
      "y": "4831175673904690165972121461665559889565427034601926888148043923603184925457"
    },
    "didStateVersion": "12",
    "verificationRelationship": 1
  },
  "positive": [
    {
      "id": "valid-midnight-did-method-binding",
      "operation": "validate"
    },
    {
      "id": "derive-midnight-did-method-binding-root",
      "operation": "root",
      "expectedHex": "59bdb59cb2f3b5ab800fd62fe933099f089c3cc111909a8e93c015506317ab9a"
    },
    {
      "id": "bind-proof-to-midnight-did-method",
      "operation": "proof"
    },
    {
      "id": "bind-holder-to-midnight-did-method",
      "operation": "holder"
    },
    {
      "id": "bind-authorization-to-midnight-did-method",
      "operation": "authorization"
    }
  ],
  "substitution": [
    {
      "id": "bind-substituted-midnight-did-controller-root",
      "operation": "root",
      "mutation": "root-controller",
      "expectedHex": "135be5b034fe2499ce7628de0ed162d1adf54d46f6ab558207735bf639d3912d"
    },
    {
      "id": "bind-substituted-midnight-did-method-root",
      "operation": "root",
      "mutation": "root-method",
      "expectedHex": "c83ff00030c01de7a9a1980f4d79c54729bafa6aeeae85090c0bcf5404f81907"
    },
    {
      "id": "bind-substituted-midnight-did-key-root",
      "operation": "root",
      "mutation": "root-key",
      "expectedHex": "0c9e5985cbcb12910f329b05f95da19060c66f77a83ad63dd23af4a9e770b4c5"
    },
    {
      "id": "bind-substituted-midnight-did-state-version-root",
      "operation": "root",
      "mutation": "root-state-version",
      "expectedHex": "e0417ea7454e5d9da715be2a7e087aad0b01863ee6e6215a1ff267e6508fc20e"
    },
    {
      "id": "bind-substituted-midnight-did-relationship-root",
      "operation": "root",
      "mutation": "root-relationship",
      "expectedHex": "798ecfe01db4f533d922f76ec04b459993b50ed7fe0a42e91c64a20ee467bb1e"
    }
  ],
  "negative": [
    {
      "id": "reject-empty-midnight-did-controller",
      "operation": "validate",
      "mutation": "empty-controller",
      "errorIncludes": "Verification method controller address must be set"
    },
    {
      "id": "reject-empty-midnight-did-method",
      "operation": "validate",
      "mutation": "empty-method",
      "errorIncludes": "Verification method reference must be set"
    },
    {
      "id": "reject-identity-midnight-did-key",
      "operation": "validate",
      "mutation": "identity-key",
      "errorIncludes": "Jubjub point must not be the identity point"
    },
    {
      "id": "reject-off-curve-midnight-did-key",
      "operation": "validate",
      "mutation": "off-curve-key",
      "errorIncludes": "unreachable"
    },
    {
      "id": "reject-torsion-midnight-did-key",
      "operation": "validate",
      "mutation": "torsion-key",
      "errorIncludes": "unreachable"
    },
    {
      "id": "reject-zero-midnight-did-state-version",
      "operation": "validate",
      "mutation": "zero-state-version",
      "errorIncludes": "Midnight DID state version must be positive"
    },
    {
      "id": "reject-midnight-did-proof-controller-substitution",
      "operation": "proof",
      "mutation": "proof-controller",
      "errorIncludes": "Proof signer controller does not match Midnight DID binding"
    },
    {
      "id": "reject-midnight-did-proof-method-substitution",
      "operation": "proof",
      "mutation": "proof-method",
      "errorIncludes": "Proof signer method does not match Midnight DID binding"
    },
    {
      "id": "reject-midnight-did-proof-key-substitution",
      "operation": "proof",
      "mutation": "proof-key",
      "errorIncludes": "Jubjub points do not match"
    },
    {
      "id": "reject-midnight-did-holder-relationship-substitution",
      "operation": "holder",
      "mutation": "holder-relationship",
      "errorIncludes": "Midnight DID holder binding requires authentication"
    },
    {
      "id": "reject-midnight-did-holder-method-substitution",
      "operation": "holder",
      "mutation": "holder-method",
      "errorIncludes": "Holder method does not match Midnight DID binding"
    },
    {
      "id": "reject-midnight-did-authorization-method-substitution",
      "operation": "authorization",
      "mutation": "authorization-method",
      "errorIncludes": "Authorized signer method does not match Midnight DID binding"
    },
    {
      "id": "reject-midnight-did-authorization-key-substitution",
      "operation": "authorization",
      "mutation": "authorization-key",
      "errorIncludes": "Jubjub points do not match"
    },
    {
      "id": "reject-midnight-did-authorization-state-version-substitution",
      "operation": "authorization",
      "mutation": "authorization-state-version",
      "errorIncludes": "Authorized signer DID state version does not match binding"
    },
    {
      "id": "reject-midnight-did-authorization-relationship-substitution",
      "operation": "authorization",
      "mutation": "authorization-relationship",
      "errorIncludes": "Authorized signer relationship does not match Midnight DID binding"
    }
  ]
}
