{
  "about": "Test vectors for verifying Chain Daddy session tokens and store receipts at time `now` (unix seconds). See https://docs.chaindaddy.io/developer/verifying-tokens",
  "now": 1790000000,
  "issuer": "https://chaindaddy.io",
  "appId": "dev-5f7533a9/my-game",
  "storeId": "store-1",
  "jwks": {
    "session": {
      "keys": [
        {
          "crv": "Ed25519",
          "x": "z3GTKwv-es9MIcoVred2-jaY9rJxCPTjx5GOT4VD3iA",
          "kty": "OKP",
          "kid": "apps-2026-09",
          "alg": "EdDSA",
          "use": "sig"
        }
      ]
    },
    "receipts": {
      "keys": [
        {
          "crv": "Ed25519",
          "x": "OhbyGd817_N88FN6JzWWi_0YcPjfCpzNppFt9UvutIc",
          "kty": "OKP",
          "kid": "iap-2026-09",
          "alg": "EdDSA",
          "use": "sig"
        }
      ]
    }
  },
  "cases": [
    {
      "name": "session: valid",
      "kind": "session",
      "valid": true,
      "token": "eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCIsImtpZCI6ImFwcHMtMjAyNi0wOSJ9.eyJpc3MiOiJodHRwczovL2NoYWluZGFkZHkuaW8iLCJ0eXAiOiJhcHAtc2Vzc2lvbit2MSIsInN1YiI6IjB4NDQwNGFiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjNjNCIsImF1ZCI6ImRldi01Zjc1MzNhOS9teS1nYW1lIiwiaWF0IjoxNzg5OTk5OTkwLCJleHAiOjE3OTAwMDAyOTAsImNyb3duSWQiOjgsImNoYWluS2V5IjoiYmFzZSJ9.SlLauWStz9lMk1Uqxb7H2lwvVaOPlJEb2Rg6vyM4r44lSteaGhOw8jEhUUAjvvQN1dUs-iPXw8cb-IDYTstaDQ"
    },
    {
      "name": "session: aud is a list with this app in it",
      "kind": "session",
      "valid": true,
      "token": "eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCIsImtpZCI6ImFwcHMtMjAyNi0wOSJ9.eyJpc3MiOiJodHRwczovL2NoYWluZGFkZHkuaW8iLCJ0eXAiOiJhcHAtc2Vzc2lvbit2MSIsInN1YiI6IjB4NDQwNGFiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjNjNCIsImF1ZCI6WyJvdGhlci9hcHAiLCJkZXYtNWY3NTMzYTkvbXktZ2FtZSJdLCJpYXQiOjE3ODk5OTk5OTAsImV4cCI6MTc5MDAwMDI5MCwiY3Jvd25JZCI6OCwiY2hhaW5LZXkiOiJiYXNlIn0.p4chgkALATQXRNp0eTJr1x_ZxNM_C9tMUa0tu39gGWJiVWT9JuB5tjKz_N8TE6rtezjND6ICNqF2VzX1XhKSBQ"
    },
    {
      "name": "session: expired 20 s ago, within the 30 s of clock skew",
      "kind": "session",
      "valid": true,
      "token": "eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCIsImtpZCI6ImFwcHMtMjAyNi0wOSJ9.eyJpc3MiOiJodHRwczovL2NoYWluZGFkZHkuaW8iLCJ0eXAiOiJhcHAtc2Vzc2lvbit2MSIsInN1YiI6IjB4NDQwNGFiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjNjNCIsImF1ZCI6ImRldi01Zjc1MzNhOS9teS1nYW1lIiwiaWF0IjoxNzg5OTk5OTkwLCJleHAiOjE3ODk5OTk5ODAsImNyb3duSWQiOjgsImNoYWluS2V5IjoiYmFzZSJ9.ACIt6K0Z9o4MNZPXy8ShHmsGoQODD4KaDNT-4L_Dodlj0nKW4Dts6uCZN43dbK66p0ci5Gy2rpjG87M2hgoKBg"
    },
    {
      "name": "session: expired 60 s ago",
      "kind": "session",
      "valid": false,
      "why": "exp",
      "token": "eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCIsImtpZCI6ImFwcHMtMjAyNi0wOSJ9.eyJpc3MiOiJodHRwczovL2NoYWluZGFkZHkuaW8iLCJ0eXAiOiJhcHAtc2Vzc2lvbit2MSIsInN1YiI6IjB4NDQwNGFiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjNjNCIsImF1ZCI6ImRldi01Zjc1MzNhOS9teS1nYW1lIiwiaWF0IjoxNzg5OTk5OTkwLCJleHAiOjE3ODk5OTk5NDAsImNyb3duSWQiOjgsImNoYWluS2V5IjoiYmFzZSJ9.KnSwQ2sGUP5AcuAC9DoYmR9qE4XNxUBfm4XkXt2iM4kQD5rTDKrLPc6Hs5XaTyl2yCjlgiYw9J5Q_hvi85ItDA"
    },
    {
      "name": "session: for another app",
      "kind": "session",
      "valid": false,
      "why": "aud",
      "token": "eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCIsImtpZCI6ImFwcHMtMjAyNi0wOSJ9.eyJpc3MiOiJodHRwczovL2NoYWluZGFkZHkuaW8iLCJ0eXAiOiJhcHAtc2Vzc2lvbit2MSIsInN1YiI6IjB4NDQwNGFiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjNjNCIsImF1ZCI6Im90aGVyL2FwcCIsImlhdCI6MTc4OTk5OTk5MCwiZXhwIjoxNzkwMDAwMjkwLCJjcm93bklkIjo4LCJjaGFpbktleSI6ImJhc2UifQ.L1lxQ-o4CHBSbPzAE0txDrTUshCupviJwq5cb0SY6AZ-TeFuTIg4qYYFcKe_USNVhVecTxc70H0VmpdvJKQbAg"
    },
    {
      "name": "session: from another issuer",
      "kind": "session",
      "valid": false,
      "why": "iss",
      "token": "eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCIsImtpZCI6ImFwcHMtMjAyNi0wOSJ9.eyJpc3MiOiJodHRwczovL2V4YW1wbGUuY29tIiwidHlwIjoiYXBwLXNlc3Npb24rdjEiLCJzdWIiOiIweDQ0MDRhYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDYzYzQiLCJhdWQiOiJkZXYtNWY3NTMzYTkvbXktZ2FtZSIsImlhdCI6MTc4OTk5OTk5MCwiZXhwIjoxNzkwMDAwMjkwLCJjcm93bklkIjo4LCJjaGFpbktleSI6ImJhc2UifQ.TgiyNQcLQzyyvFjSTEl5LWnU1nJE-ZZVHABN-FdBETl3v5Gnnqc2I3Mjv3zmkaHAGYmYxD9ab77hO8YPksKTAg"
    },
    {
      "name": "session: typ only in the header, not the claims",
      "kind": "session",
      "valid": false,
      "why": "typ",
      "token": "eyJhbGciOiJFZERTQSIsInR5cCI6ImFwcC1zZXNzaW9uK3YxIiwia2lkIjoiYXBwcy0yMDI2LTA5In0.eyJpc3MiOiJodHRwczovL2NoYWluZGFkZHkuaW8iLCJzdWIiOiIweDQ0MDRhYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDYzYzQiLCJhdWQiOiJkZXYtNWY3NTMzYTkvbXktZ2FtZSIsImlhdCI6MTc4OTk5OTk5MCwiZXhwIjoxNzkwMDAwMjkwLCJjcm93bklkIjo4LCJjaGFpbktleSI6ImJhc2UifQ.1SetcFjusi6ACZQdDa9z4OLhEdS57RDGGEv6BxsxESRjQmpGC7qzrbFCt40qNAK-EeiwILLwAwVPscSMTeBaCQ"
    },
    {
      "name": "session: a receipt-type document signed with the session key",
      "kind": "session",
      "valid": false,
      "why": "typ",
      "token": "eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCIsImtpZCI6ImFwcHMtMjAyNi0wOSJ9.eyJpc3MiOiJodHRwczovL2NoYWluZGFkZHkuaW8iLCJ0eXAiOiJpYXAtcmVjZWlwdCt2MSIsInN1YiI6IjB4NDQwNGFiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjNjNCIsImF1ZCI6ImRldi01Zjc1MzNhOS9teS1nYW1lIiwiaWF0IjoxNzg5OTk5OTkwLCJleHAiOjE3OTAwMDAyOTAsImNyb3duSWQiOjgsImNoYWluS2V5IjoiYmFzZSJ9.eZLC0vIwrl8DU-W74l6uW07pP0_K5XQAofcrlhMW7xUBDSh2xm64a6TdvUiUCR4TvvdCpyh6hyKkvRVF7l4RAg"
    },
    {
      "name": "session: no expiry",
      "kind": "session",
      "valid": false,
      "why": "exp",
      "token": "eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCIsImtpZCI6ImFwcHMtMjAyNi0wOSJ9.eyJpc3MiOiJodHRwczovL2NoYWluZGFkZHkuaW8iLCJ0eXAiOiJhcHAtc2Vzc2lvbit2MSIsInN1YiI6IjB4NDQwNGFiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjNjNCIsImF1ZCI6ImRldi01Zjc1MzNhOS9teS1nYW1lIiwiaWF0IjoxNzg5OTk5OTkwLCJjcm93bklkIjo4LCJjaGFpbktleSI6ImJhc2UifQ.2yaDWSZBFGgPNSoO7U8Pnq-6L32-bMJdJr59TOEg7Chhqq226eA_66gUp_rkXtNF5T8eIoOOf2ZLjH3DztrWBQ"
    },
    {
      "name": "session: signed by a key nobody published (the right kid)",
      "kind": "session",
      "valid": false,
      "why": "signature",
      "token": "eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCIsImtpZCI6ImFwcHMtMjAyNi0wOSJ9.eyJpc3MiOiJodHRwczovL2NoYWluZGFkZHkuaW8iLCJ0eXAiOiJhcHAtc2Vzc2lvbit2MSIsInN1YiI6IjB4NDQwNGFiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjNjNCIsImF1ZCI6ImRldi01Zjc1MzNhOS9teS1nYW1lIiwiaWF0IjoxNzg5OTk5OTkwLCJleHAiOjE3OTAwMDAyOTAsImNyb3duSWQiOjgsImNoYWluS2V5IjoiYmFzZSJ9.8CEQ9Ug65t3ZhlZeiNxjHj01BXF8IbTYXNNlW92lJw7GV9DQt7Bt3ZQglRNRo144kvE7ncJvfsg8q8bpBKDcCw"
    },
    {
      "name": "session: a valid receipt presented as a session token",
      "kind": "session",
      "valid": false,
      "why": "key",
      "token": "eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCIsImtpZCI6ImlhcC0yMDI2LTA5In0.eyJpc3MiOiJodHRwczovL2NoYWluZGFkZHkuaW8iLCJ0eXAiOiJpYXAtcmVjZWlwdCt2MSIsInJlY2VpcHRJZCI6InItMSIsIm9yZGVySWQiOiIweGFiYyIsInN0b3JlSWQiOiJzdG9yZS0xIiwiY3Jvd25JZCI6OCwic2t1Ijoibml0cm8iLCJza3VUeXBlIjoiY29uc3VtYWJsZSIsInF1YW50aXR5IjoxLCJ3YWxsZXQiOiIweDQ0MDRhYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDYzYzQiLCJhbW91bnQiOiIxNTA2MDAwMDAwMDAwMDAwMDAwMDAwMCIsImlhdCI6MTc4OTk5OTk0MH0._CEbIlHMrn9YHEsb_fnt8DzKsiySQky1OTeSg6zQYXkkQnfQDKFJWaNBb0DHATkAJkptHXBVZv81xe-gyLMPBQ"
    },
    {
      "name": "receipt: valid",
      "kind": "receipt",
      "valid": true,
      "token": "eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCIsImtpZCI6ImlhcC0yMDI2LTA5In0.eyJpc3MiOiJodHRwczovL2NoYWluZGFkZHkuaW8iLCJ0eXAiOiJpYXAtcmVjZWlwdCt2MSIsInJlY2VpcHRJZCI6InItMSIsIm9yZGVySWQiOiIweGFiYyIsInN0b3JlSWQiOiJzdG9yZS0xIiwiY3Jvd25JZCI6OCwic2t1Ijoibml0cm8iLCJza3VUeXBlIjoiY29uc3VtYWJsZSIsInF1YW50aXR5IjoxLCJ3YWxsZXQiOiIweDQ0MDRhYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDYzYzQiLCJhbW91bnQiOiIxNTA2MDAwMDAwMDAwMDAwMDAwMDAwMCIsImlhdCI6MTc4OTk5OTk0MH0._CEbIlHMrn9YHEsb_fnt8DzKsiySQky1OTeSg6zQYXkkQnfQDKFJWaNBb0DHATkAJkptHXBVZv81xe-gyLMPBQ"
    },
    {
      "name": "receipt: for another store",
      "kind": "receipt",
      "valid": false,
      "why": "storeId",
      "token": "eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCIsImtpZCI6ImlhcC0yMDI2LTA5In0.eyJpc3MiOiJodHRwczovL2NoYWluZGFkZHkuaW8iLCJ0eXAiOiJpYXAtcmVjZWlwdCt2MSIsInJlY2VpcHRJZCI6InItMSIsIm9yZGVySWQiOiIweGFiYyIsInN0b3JlSWQiOiJzdG9yZS0yIiwiY3Jvd25JZCI6OCwic2t1Ijoibml0cm8iLCJza3VUeXBlIjoiY29uc3VtYWJsZSIsInF1YW50aXR5IjoxLCJ3YWxsZXQiOiIweDQ0MDRhYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDYzYzQiLCJhbW91bnQiOiIxNTA2MDAwMDAwMDAwMDAwMDAwMDAwMCIsImlhdCI6MTc4OTk5OTk0MH0.VJJwWd3MSHlAMIHgZL7hjwFoGhq17yt06jEVxQrVua4u5yulV0tEY7CI7ODvjBQWDXMV32clPIHVUge7T9vPCQ"
    },
    {
      "name": "receipt: a session-type document signed with the receipt key",
      "kind": "receipt",
      "valid": false,
      "why": "typ",
      "token": "eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCIsImtpZCI6ImlhcC0yMDI2LTA5In0.eyJpc3MiOiJodHRwczovL2NoYWluZGFkZHkuaW8iLCJ0eXAiOiJhcHAtc2Vzc2lvbit2MSIsInJlY2VpcHRJZCI6InItMSIsIm9yZGVySWQiOiIweGFiYyIsInN0b3JlSWQiOiJzdG9yZS0xIiwiY3Jvd25JZCI6OCwic2t1Ijoibml0cm8iLCJza3VUeXBlIjoiY29uc3VtYWJsZSIsInF1YW50aXR5IjoxLCJ3YWxsZXQiOiIweDQ0MDRhYjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDYzYzQiLCJhbW91bnQiOiIxNTA2MDAwMDAwMDAwMDAwMDAwMDAwMCIsImlhdCI6MTc4OTk5OTk0MH0.ZTqj19UVTWYTSwrEWuh5hFh9SjT2CSU3W1ipjtH2FzUenzRZYsVgERaiG2YqBKRo8ddvxSh9Me9sAwwDY3XOAg"
    },
    {
      "name": "receipt: a valid session token presented as a receipt",
      "kind": "receipt",
      "valid": false,
      "why": "key",
      "token": "eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCIsImtpZCI6ImFwcHMtMjAyNi0wOSJ9.eyJpc3MiOiJodHRwczovL2NoYWluZGFkZHkuaW8iLCJ0eXAiOiJhcHAtc2Vzc2lvbit2MSIsInN1YiI6IjB4NDQwNGFiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjNjNCIsImF1ZCI6ImRldi01Zjc1MzNhOS9teS1nYW1lIiwiaWF0IjoxNzg5OTk5OTkwLCJleHAiOjE3OTAwMDAyOTAsImNyb3duSWQiOjgsImNoYWluS2V5IjoiYmFzZSJ9.SlLauWStz9lMk1Uqxb7H2lwvVaOPlJEb2Rg6vyM4r44lSteaGhOw8jEhUUAjvvQN1dUs-iPXw8cb-IDYTstaDQ"
    }
  ]
}
