{"schema":"itseasytobe.role-verification.v1","slug":"carpenter","country":"gb","version":1,"last_verified_at":"2026-08-19T07:54:09.193+00:00","content_sha256":"7be6f3d85e7f43f2fe241d2652043f6b22011ba801eebf2fae8414a58c2a6753","signed":true,"signature":"sU2gWpHw9zRnYJpT8F_7zX6CeL1jWoVh0XR3ZkiEb7mvlW8mAa9cwLatDdGTWuLDs_Q-QzsjnK1-0kA1dhM5Ag","kid":"N0Ho3alTlnN4D6mUC7T4T6TCIBD1DJLo88L9Y0vOH2g","algorithm":"EdDSA (Ed25519)","jwks_url":"https://www.itseasytobe.com/.well-known/jwks.json","canonical_content_url":"https://www.itseasytobe.com/api/verify/carpenter?include=content","how_to_verify":["1. GET https://www.itseasytobe.com/api/verify/carpenter?include=content and take the \"content\" object.","2. Canonicalize it (RFC 8785: sorted keys, no whitespace, UTF-8) and check sha256(canonical) equals content_sha256.","3. Rebuild the signed core {schema:\"itseasytobe.role-verification.v1\", slug, country, version, last_verified_at, content_sha256}, canonicalize it the same way.","4. Verify the Ed25519 signature (base64url) over those bytes against the JWK with matching kid from jwks_url."],"retrieved_at":"2026-09-15T15:14:49.198Z"}