Changeset 5d0d3f35 in Klonkt
- Timestamp:
- 10/25/2026 09:51:07 AM (less than one hour ago)
- Branches:
- main
- Parents:
- b1d5f3f
- Files:
-
- 1 added
- 1 edited
-
src/routes/activitypub.js (modified) (1 diff)
-
test/webfinger-did.test.js (added)
Legend:
- Unmodified
- Added
- Removed
-
src/routes/activitypub.js
rb1d5f3f r5d0d3f35 165 165 { rel: 'http://purl.org/openwebauth/v1', href: baseUrl(req) + '/owa/token' }, 166 166 ], 167 })); 168 } 169 // ── Een did:key: welk account zegt dat het deze sleutel is? ────── 170 // 171 // FEP-c390 zet het bewijs op de actor en zegt niets over vinden. Wie een 172 // papieren sleutel vasthoudt (shaer-jpxj) en wil weten bij welk account hij 173 // hoort -- bij een verhuizing, of om iemand na te lopen -- vraagt het hier: 174 // RFC 7033 laat elke URI als resource toe, dus dit is gewoon WebFinger. 175 // 176 // Alleen wat NU klopt: elke verklaring wordt opnieuw nagelopen tegen de 177 // actor waar ze op staat, en alleen openbare sites tellen, net als bij acct:. 178 // Twee accounts met dezelfde sleutel zijn mogelijk en horen er dan allebei 179 // te staan: dat is precies het oude en het nieuwe account na een verhuizing. 180 // De vrager leert niets dat niet al op die actors staat. 181 const did = String(req.query.resource || '').trim(); 182 if (IdentityProof.publicKeyFromDidKey(did)) { 183 const base = baseUrl(req); 184 // De LIKE voorselecteert alleen; base58 bevat geen % of _. 185 const actors = db.prepare('SELECT * FROM sites WHERE identity_proofs LIKE ? AND (is_public IS NULL OR is_public = 1) ORDER BY slug') 186 .all(`%${did}%`) 187 .filter((site) => { 188 const me = AP.actorId(base, site.slug); 189 return readProofs(site).some((b) => b && b.subject === did && IdentityProof.checkStatement(b, me).ok); 190 }) 191 .map((site) => AP.actorId(base, site.slug)); 192 if (!actors.length) return res.status(404).end(); 193 res.type('application/jrd+json; charset=utf-8'); 194 // Korter dan bij acct:: wie een sleutel net weghaalde, hoort dat snel terug te zien. 195 res.set('Cache-Control', 'public, max-age=60'); 196 return res.send(JSON.stringify({ 197 subject: did, 198 aliases: actors, 199 links: actors.map((href) => ({ rel: 'self', type: 'application/activity+json', href })), 167 200 })); 168 201 }
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)