<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[silverpill:]]></title><description><![CDATA[silverpill:<blockquote><p>Several solutions were proposed - <code>embeddedObjects</code></p></blockquote><p>This sounds a lot like JSON-LD <code>@included</code>:</p><pre><code>{ "@context": "https://www.w3.org/ns/activitystreams", "id": "https://activity.example/", "actor": "https://actor.example/", "type": "Announce", "object": "https://object.example/", "@included": [ { "id": "https://actor.example/", "name": "Someone", "type": "Person" }, { "id": "https://object.example/", "type": "Article", "name": "Top 10 AS2 examples -- number 3 will surprise you!" } ]}</code></pre><p>If you ignore all the JSON-LD stuff, the "plain JSON" document is just this:</p><pre><code>{ "id": "https://activity.example/", "actor": "https://actor.example/", "type": "Announce", "object": "https://object.example/",}</code></pre><p>If you flatten the first example or convert it to N-Quads, the <code>@included</code> block goes away. The <code>@included</code> block is just a framing tool so that the "plain JSON" can match a specific schema (say one where <code>actor</code> and <code>object</code> are required to be JSON strings). It's broadly similar to <a href="https://jsonapi.org/format/#document-compound-documents">JSON:API's concept of "included"</a>, as <a href="https://www.w3.org/TR/json-ld11/#:~:text=analogous%20possibility">JSON-LD 1.1 points out</a>... except it keys off of <code>@id</code> only (instead of both <code>type</code> and <code>id</code>).</p><p>A canonicalization scheme could define that included blocks are stripped before hashing and signing, and that therefore the information included in an included block is not trustworthy on its own without its own signatures. I guess you could profile JCS if you wanted to depend on the JSON serialization, or profile RDFC if you wanted to depend on the N-Quads dataset (minus the included statements).</p> silverpill:<blockquote> Claire:<blockquote><p>how would you “make sure” the object is indeed a &lt;<code>https://www.w3.org/ns/activitystreams#object</code>&gt; while keeping the object’s JSON representation intact? Off the top of my head, I see no way to do that safely.</p></blockquote><p>If I understand the question correctly, this problem also arises in client-to-server context. An object published by a client can be parsed differently by the originating and receiving servers due to JSON-LD/JSON differences. This could cause security issues, and I have lately come to the conclusion that JSON-LD and JSON cannot coexist in the same network.</p></blockquote><p>The way you "make sure" that <code>object</code> is specifically  is via one of the following mechanisms:</p><ul><li>JSON-LD <code>@context</code> expansion. A JSON-LD processor loads the declared contexts (modulo other document loader safety concerns) and normalizes everything to its full IRI reference.</li><li>IANA media type signaled via HTTP <code>Content-Type</code> header is <code>application/activity+json</code> or equivalent. Per definition, that media type includes the semantics that the <code>object</code> key is defined as . For JSON-LD compatibility, this is also achieved via "context injection", i.e. when you encounter this specific IANA media type, you can convert it to an <code>application/ld+json</code> document by tacking on <code>"https://www.w3.org/ns/activitystreams"</code> as the end of the <code>@context</code> array in case it is missing.</li></ul><p>The latter is the closed-world / centralized variant of the former. They clearly already co-exist in the same network. The issue arises when you use terms that <em>aren't</em> defined by <code>application/activity+json</code> or its equivalent JSON-LD <code>@context</code>, but this isn't JSON-LD's fault -- the issue's real cause is that people can and will disagree on what terms mean, as with any other matters of language. You can't assume everyone always agrees with everything you do or say 100%. The point of having keys and terms be expandable to IRI references is that http(s): IRIs conveniently include an authority component, so you can workaround the lack of authority in the data model and disambiguate two different definitions of the same term. Having a way to detect that there is a conflict does not <em>create</em> the conflict; the conflict is still there even if you don't have a way of detecting it.</p><p>tl;dr,</p> Claire:<blockquote><p>how one is expected to handle proofs of embedded objects</p></blockquote><p>depends on canonicalization. Embedding an object from one document into another document should be done with the recognition that documents and objects are not the same thing, and that embedded information about an object is necessarily scoped to the current document in which that information is presented.</p><p>For example:</p><pre><code>GET /foo HTTP/1.1Host: domain.exampleAccept: application/activity+json</code></pre><pre><code>HTTP/1.1 200 OKContent-Type: application/activity+json{ "id": "https://domain.example/foo", "type": "Activity", "object": { "id": "https://domain.example/bar", "type": "Object" }}</code></pre><p>Here, the statement that /bar is an Object is a statement being made <em>within /foo</em>. You can GET /bar and obtain different information (e.g. that /bar is a Tombstone). That doesn't make the statement in /foo <em>incorrect</em>; it could be that statements in /foo and statements in /bar were made at different times.</p><p>When signing or verifying objects, it's crucial to consider what you're signing. As the author of /foo I can sign <em>my own statement about /bar within /foo</em>, and this is different than a signed statement about /bar from the author of /bar within /bar. If you don't distinguish or qualify statements by their source[^1], you will get confused.</p><p>[^1]: This is what quads are supposed to be in RDF -- they contextualize triples by the graph they came from. But you don't need to use quads, you just need to use some kind of contextualizing thing, like an HTTP resource; the statements in that resource can still be modeled as triples, while you reason about them as quads in order to explicitly consider <em>who</em> said something, or <em>when</em> they said it, or whether or how much you <em>trust</em> that statement.</p><p>I can't get too much into this further, since anything else depends heavily on what your trust model is. But for the purposes of signatures, you have to look to the current document (and possibly infer additional information from HTTP headers).</p>]]></description><link>https://fedi.wiki/topic/cc3e047d-490f-4b71-9b04-96d4fbb0f350/silverpill</link><generator>RSS for Node</generator><lastBuildDate>Sun, 26 Jul 2026 02:08:31 GMT</lastBuildDate><atom:link href="https://fedi.wiki/topic/cc3e047d-490f-4b71-9b04-96d4fbb0f350.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 27 Jun 2026 16:18:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to silverpill: on Thu, 09 Jul 2026 20:34:09 GMT]]></title><description><![CDATA[<p>I agree, it should be changed to MUST. I used other types for custom cryptosuites while the Data Integrity spec was still a draft, but today any custom cryptosuite can be specified using the <code>cryptosuite</code> property.</p>]]></description><link>https://fedi.wiki/post/https://mitra.social/objects/019f4896-7c57-76f2-9205-19ab7fba8ad6</link><guid isPermaLink="true">https://fedi.wiki/post/https://mitra.social/objects/019f4896-7c57-76f2-9205-19ab7fba8ad6</guid><dc:creator><![CDATA[silverpill@mitra.social]]></dc:creator><pubDate>Thu, 09 Jul 2026 20:34:09 GMT</pubDate></item><item><title><![CDATA[Reply to silverpill: on Wed, 08 Jul 2026 12:29:34 GMT]]></title><description><![CDATA[trwnh:<blockquote><p>I think the intended solution might be the <code>previousProof</code> property: <a href="https://www.w3.org/TR/vc-data-integrity/#previous-proofs">https://www.w3.org/TR/vc-data-integrity/#previous-proofs</a></p></blockquote><p>I don't think so? This is about having multiple proofs for the same document, but having one of the proofs only be valid if another one is valid too. What we are currently talking about is having a proof on a sub-graph and possibly no second proof. I see nothing in the Verifiable Credential Data Integrity spec addressing sub-graphs, only full documents (excluding proof graphs, but what we want to omit from the inner proof is not a proof graph). But that seems to imply RDFC would have the same issue indeed.</p>]]></description><link>https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/180248c9781c28fdf43cdd2f5736a080</link><guid isPermaLink="true">https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/180248c9781c28fdf43cdd2f5736a080</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 08 Jul 2026 12:29:34 GMT</pubDate></item><item><title><![CDATA[Reply to silverpill: on Mon, 06 Jul 2026 23:00:20 GMT]]></title><description><![CDATA[<p>also tangentially i noticed this part of the FEP:</p><blockquote><p>The proof type SHOULD be <code>DataIntegrityProof</code>, as specified in section <a href="https://www.w3.org/TR/vc-data-integrity/#dataintegrityproof">3.1 DataIntegrityProof</a></p></blockquote><p>@silverpill actually the <code>type</code> MUST be <code>DataIntegrityProof</code> per current spec (TR from May 2025). relatedly, the data-integrity/v2 <code>@context</code> definition scopes all properties to this type, so none of the proof properties mean anything unless this type is present</p><p>per <a href="https://w3id.org/security/data-integrity/v2">https://w3id.org/security/data-integrity/v2</a></p><pre><code>{ "@context": { "DataIntegrityProof": { "@id": "https://w3id.org/security#DataIntegrityProof", "@context": {...} } }}</code></pre><p>this allows using more generic terms like "created", "expires", "challenge", "domain", and "nonce" in other parts of the document without conflicts.</p>]]></description><link>https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/b285f9f5895d16e560afe7db68affa9f</link><guid isPermaLink="true">https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/b285f9f5895d16e560afe7db68affa9f</guid><dc:creator><![CDATA[trwnh@socialhub.activitypub.rocks]]></dc:creator><pubDate>Mon, 06 Jul 2026 23:00:20 GMT</pubDate></item><item><title><![CDATA[Reply to silverpill: on Mon, 06 Jul 2026 20:58:04 GMT]]></title><description><![CDATA[Claire:<blockquote><p>JCS embedded signed objects would not break anything, but they would be basically unverifiable and just be a waste in the payload.</p></blockquote><p>I think they can be verified deepest-first, which does require walking the entire JSON document and verifying proofs in reverse depth order.</p><p>The question is if outer proofs include the inner proofs, or if the proofs are simply "included" (<code>@included</code>) alongside the data. Generally it makes more sense to do the former, although nested proofs has the same complexities as nested contexts -- it's way easier to do this with a document boundary rather than compound documents, because then you don't have to deal with any cascades.</p><p>I think RDFC has the same issues because it's not immediately apparent if the signature input includes the entire graph or if it includes a subgraph. You have to understand if a property is semantically defined as <code>@container: @graph</code> or not. The RDFC proof is scoped to the immediate parent graph. (In Activity Streams 2.0's normative context, none of the properties are currently defined as graph containers, so proofs typically apply to the entire AS2 document.)</p><p>With JCS proofs, the scoping issue is in the reverse direction; it's about whether the proof applies only to the current JSON node or to subnodes as well. In other words, using compound documents is unexpected and discouraged.</p><p>For more on proof graphs, see <a href="https://www.w3.org/TR/vc-data-integrity/#proof-graphs">https://www.w3.org/TR/vc-data-integrity/#proof-graphs</a></p><p>I think the intended solution might be the <code>previousProof</code> property: <a href="https://www.w3.org/TR/vc-data-integrity/#previous-proofs">https://www.w3.org/TR/vc-data-integrity/#previous-proofs</a></p>]]></description><link>https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/1da16c159ae3429ca66e0cb3cfebd9b2</link><guid isPermaLink="true">https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/1da16c159ae3429ca66e0cb3cfebd9b2</guid><dc:creator><![CDATA[trwnh@socialhub.activitypub.rocks]]></dc:creator><pubDate>Mon, 06 Jul 2026 20:58:04 GMT</pubDate></item><item><title><![CDATA[Reply to silverpill: on Mon, 06 Jul 2026 08:05:41 GMT]]></title><description><![CDATA[silverpill:<blockquote><p>Do you think embedded signed objects will cause problems in real-world situations?</p></blockquote><p>Well, unless it has to do Linked Data Signatures validation, Mastodon is currently optimistic about the shorthands matching its own context, but that is not correct behavior and this is already an issue with Bookwyrm which use the same <code>quote</code> shorthand for a different property than Mastodon, causing compatibility issues. This is something systematic JSON-LD processing would fix, but it would render embedded signatures useless, as the underlying JSON would be changed by JSON-LD processing (either compaction or expansion). In themselves, JCS embedded signed objects would not break anything, but they would be basically unverifiable and just be a waste in the payload.</p> silverpill:<blockquote><p>@hongminhee implemented FEP-8b32 in Hollo, which is one of the ActivityPub servers that actually does JSON-LD processing, and didn’t encounter any issues (as far as I know).</p></blockquote><p>My understanding is that Fedify currently only supports verifying top-level FEP-8b32 signatures, by verifying them before JSON-LD processing, and does not support embedded signed objects yet.</p>]]></description><link>https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/f1d772427077d2c03da8584d09be7a9f</link><guid isPermaLink="true">https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/f1d772427077d2c03da8584d09be7a9f</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 06 Jul 2026 08:05:41 GMT</pubDate></item><item><title><![CDATA[Reply to silverpill: on Sat, 04 Jul 2026 22:16:14 GMT]]></title><description><![CDATA[Claire:<blockquote><p>Reading back the discussion, I don’t see any good solution for embedded proofs using JCS… this is a bit disheartening, as I was looking forward to using embedded signed objects for approval stamps.</p></blockquote><p>Do you think embedded signed objects will cause problems in real-world situations?</p><p>@hongminhee implemented FEP-8b32 in Hollo, which is one of the ActivityPub servers that actually does JSON-LD processing, and didn't encounter any issues (as far as I know).</p>]]></description><link>https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/27b12cd41e8ae07f35e5dd00f771ddac</link><guid isPermaLink="true">https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/27b12cd41e8ae07f35e5dd00f771ddac</guid><dc:creator><![CDATA[silverpill@socialhub.activitypub.rocks]]></dc:creator><pubDate>Sat, 04 Jul 2026 22:16:14 GMT</pubDate></item><item><title><![CDATA[Reply to silverpill: on Fri, 03 Jul 2026 14:12:24 GMT]]></title><description><![CDATA[<p>I see no issue with handling \<code>expires\</code>, so I added that to Mastodon (both for Object Identity Proofs and Linked Data Signatures—although for the latter you do need to take some care because the old security context actually has multiple aliases for the same property…)</p><p>Reading back the discussion, I don't see any good solution for embedded proofs using JCS… this is a bit disheartening, as I was looking forward to using embedded signed objects for approval stamps. We could still do that using <code>eddsa-rdfc-2022</code>, which I guess would make sense since we are dealing with JSON-LD to begin with. but I definitely see the value of avoiding the RDF Dataset Canonicalization algorithm if we can.</p>]]></description><link>https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/d8200b50f05090b4e16454ed42f2e7e8</link><guid isPermaLink="true">https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/d8200b50f05090b4e16454ed42f2e7e8</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 03 Jul 2026 14:12:24 GMT</pubDate></item><item><title><![CDATA[Reply to silverpill: on Wed, 01 Jul 2026 21:10:47 GMT]]></title><description><![CDATA[<p>I think <code>expires</code> is a good way to make a short-lived proof, although I'm not sure if any existing FEP-8b32 implementations support it.</p><p>Verifiers should probably treat expired proofs in the same way as proofs with unsupported algorithms and try other authentication methods on verification failure (e.g. fetch object by its <code>id</code>).</p><p><a href="https://codeberg.org/fediverse/fep/pulls/874">I opened a PR that adds the following text</a>:</p><blockquote><p>If a verifier encounters an integrity proof that uses a verification method that it can't resolve, or uses a cryptosuite that is not supported, or the proof has expired (as indicated by the <code>expires</code> property), the verifier SHOULD ignore the proof and try other authentication methods.</p></blockquote><p>The PR also adds Mastodon to the implementation list and adds "Quantum-resistant cryptosuites" to future work.</p>]]></description><link>https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/9254f3220fef83e1ae33e9d14bd61496</link><guid isPermaLink="true">https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/9254f3220fef83e1ae33e9d14bd61496</guid><dc:creator><![CDATA[silverpill@socialhub.activitypub.rocks]]></dc:creator><pubDate>Wed, 01 Jul 2026 21:10:47 GMT</pubDate></item><item><title><![CDATA[Reply to silverpill: on Wed, 01 Jul 2026 14:13:24 GMT]]></title><description><![CDATA[silverpill:<blockquote><p>This might be due to the presence of floating numbers in <code>fep-8b32.feature</code> document. Some JCS libraries don’t handle those correctly. Which one do you use?</p></blockquote><p>That was it, thanks! We use the \<code>json-canonicalization\</code> gem that we already had an indirect dependency on.</p><p>The next non-patch version of Mastodon should support incoming top-level Object Integrity Proofs using \<code>eddsa-jcs-2022\</code>. We are also looking at supporting \<code>mldsa44-jcs-2024\</code> defined in <a href="https://www.w3.org/TR/2026/WD-vc-di-quantum-resistant-1.0-20260616">https://www.w3.org/TR/2026/WD-vc-di-quantum-resistant-1.0-20260616</a> , it's very similar, though the proof config handling of \<code>@context\</code> is different, and it mandates Base64 instead of Base58-btc. This is fine for us as our Multibase implementation supports deconding both anyway.</p><p>For embedded objects, I still have to read up on the recent suggestions, but I'm afraid this is going to be quite complex even though this would be valuable to us (for instance, to bundle quoted objects with a short-lived proof that they have been accepted, and avoid the costly and failure prone initial round-trip).</p><p>Talking about short-lived proof, is there any recommendation as to what to do with \<code>created\</code>, or support for \<code>expires\</code>?</p>]]></description><link>https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/fd16b6baf3a31bd9f0e221f3a051a5c9</link><guid isPermaLink="true">https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/fd16b6baf3a31bd9f0e221f3a051a5c9</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 01 Jul 2026 14:13:24 GMT</pubDate></item><item><title><![CDATA[Reply to silverpill: on Sat, 27 Jun 2026 17:39:19 GMT]]></title><description><![CDATA[Claire:<blockquote><p>I am looking at implementing this into Mastodon, and I’m unable to verify the test vectors in <a href="https://codeberg.org/fediverse/fep/src/branch/main/fep/8b32/fep-8b32.feature">https://codeberg.org/fediverse/fep/src/branch/main/fep/8b32/fep-8b32.feature</a> although I’m able to verify these: <a href="https://www.w3.org/TR/vc-di-eddsa/#representation-eddsa-jcs-2022">https://www.w3.org/TR/vc-di-eddsa/#representation-eddsa-jcs-2022</a></p></blockquote><p>@Claire I added intermediary outputs to <code>fep-8b32.feature</code>: canonicalized document, canonicalized proof config and the combined hash:</p><p><a href="https://codeberg.org/fediverse/fep/src/commit/90444d8d5e880f2511e09efd8c142e4f0e13e4f6/fep/8b32/fep-8b32.feature#L31-L39">https://codeberg.org/fediverse/fep/src/commit/90444d8d5e880f2511e09efd8c142e4f0e13e4f6/fep/8b32/fep-8b32.feature#L31-L39</a></p><p>(PR: <a href="https://codeberg.org/fediverse/fep/pulls/871">https://codeberg.org/fediverse/fep/pulls/871</a>)</p>]]></description><link>https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/b0f0acb7a394536f1dd3ba1b6ac2635f</link><guid isPermaLink="true">https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/b0f0acb7a394536f1dd3ba1b6ac2635f</guid><dc:creator><![CDATA[silverpill@socialhub.activitypub.rocks]]></dc:creator><pubDate>Sat, 27 Jun 2026 17:39:19 GMT</pubDate></item><item><title><![CDATA[Reply to silverpill: on Sat, 27 Jun 2026 16:18:02 GMT]]></title><description><![CDATA[<p><a href="https://github.com/w3c/vc-di-eddsa/pull/79">JCS context injection PR</a> has been merged, <a href="https://w3c.github.io/vc-di-eddsa/#representation-eddsa-jcs-2022">test vectors</a> have been updated as well. I will update my implementation in two stages, according to the plan:</p> silverpill:<blockquote><p>To ensure smooth transition, I propose the following plan:</p><ul><li>Implement new proof verification algorithm (section 3.3.2), specifically step 4.</li><li>Give everyone some time to upgrade (a couple of months)</li><li>Implement new proof generation algorithm (section 3.3.1), specifically step 6 where <code>@context</code> is being copied from the document to the proof.</li></ul></blockquote><p>Two remaining unresolved issues are <a href="https://github.com/w3c/vc-data-integrity/issues/231">context injection when object doesn't have <code>@context</code></a> and <a href="https://github.com/w3c/vc-di-eddsa/issues/81">proving integrity of nested objects</a>.</p>]]></description><link>https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/d13b6636885e90a8b4e6cfce6eec86a0</link><guid isPermaLink="true">https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/d13b6636885e90a8b4e6cfce6eec86a0</guid><dc:creator><![CDATA[silverpill@socialhub.activitypub.rocks]]></dc:creator><pubDate>Sat, 27 Jun 2026 16:18:02 GMT</pubDate></item><item><title><![CDATA[Reply to silverpill: on Sat, 27 Jun 2026 16:18:02 GMT]]></title><description><![CDATA[<p>Proof generation and verification algorithms in <code>eddsa-jcs-2022</code> are changing:</p><p><a href="https://github.com/w3c/vc-di-eddsa/pull/79">https://github.com/w3c/vc-di-eddsa/pull/79</a></p><p>To ensure smooth transition, I propose the following plan:</p><ul><li>Implement new proof verification algorithm (section 3.3.2), specifically step 4.</li><li>Give everyone some time to upgrade (a couple of months)</li><li>Implement new proof generation algorithm (section 3.3.1), specifically step 6 where <code>@context</code> is being copied from the document to the proof.</li></ul>]]></description><link>https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/1a81fcf6c50f7cb49a9fced9c22bcec0</link><guid isPermaLink="true">https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/1a81fcf6c50f7cb49a9fced9c22bcec0</guid><dc:creator><![CDATA[silverpill@socialhub.activitypub.rocks]]></dc:creator><pubDate>Sat, 27 Jun 2026 16:18:02 GMT</pubDate></item><item><title><![CDATA[Reply to silverpill: on Sat, 27 Jun 2026 16:18:02 GMT]]></title><description><![CDATA[<p>I opened a pull request that adds "Nested objects" section to this proposal: <a href="https://codeberg.org/fediverse/fep/pulls/287/files">https://codeberg.org/fediverse/fep/pulls/287/files</a></p>]]></description><link>https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/ba161da328e20ba30596a4edc9673c99</link><guid isPermaLink="true">https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/ba161da328e20ba30596a4edc9673c99</guid><dc:creator><![CDATA[silverpill@socialhub.activitypub.rocks]]></dc:creator><pubDate>Sat, 27 Jun 2026 16:18:02 GMT</pubDate></item><item><title><![CDATA[Reply to silverpill: on Sat, 27 Jun 2026 16:18:02 GMT]]></title><description><![CDATA[<p>Removing warnings about nested objects from the FEP: <a href="https://codeberg.org/fediverse/fep/pulls/396">https://codeberg.org/fediverse/fep/pulls/396</a>.</p><p>Also, there was a sentence saying that <code>proof.verificationMethod</code> can be a DID. I think this is not correct because the fragment identifier of the verification method should be included as well, and that makes it a DID URL.</p>]]></description><link>https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/ce2f70fe4bffd1ba6d4b9f6b8e045958</link><guid isPermaLink="true">https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/ce2f70fe4bffd1ba6d4b9f6b8e045958</guid><dc:creator><![CDATA[silverpill@socialhub.activitypub.rocks]]></dc:creator><pubDate>Sat, 27 Jun 2026 16:18:02 GMT</pubDate></item><item><title><![CDATA[Reply to silverpill: on Sat, 27 Jun 2026 16:18:02 GMT]]></title><description><![CDATA[bumblefudge:<blockquote><p>Good-faith question because I too have mixed feelings about JSON-LD and its tooling/ecosystem support, but would recommending or requiring an RDFC step in signing FEPs (current or future) help the “bad LD” issue,</p></blockquote><p>My opinion is: No, it would not.</p><p>The entire JsonLD - RDF - LinkedData space has a list of known problems (In the sense, if you payed me a lot of money, I could write one down with examples). Replacing JCS with RDFC just makes some problems on the list better, and some other problems on the list worse.</p>]]></description><link>https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/ea2da802554a4ddc8435dbf066125250</link><guid isPermaLink="true">https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/ea2da802554a4ddc8435dbf066125250</guid><dc:creator><![CDATA[helge@socialhub.activitypub.rocks]]></dc:creator><pubDate>Sat, 27 Jun 2026 16:18:02 GMT</pubDate></item><item><title><![CDATA[Reply to silverpill: on Sat, 27 Jun 2026 16:18:02 GMT]]></title><description><![CDATA[<p>@robey Did you change the <code>proof.@context</code>? I saw an activity from your test actor few days ago, and it still had wrong context.</p>]]></description><link>https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/fc31865a355f2c297e5b16be1bf0e0e4</link><guid isPermaLink="true">https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/fc31865a355f2c297e5b16be1bf0e0e4</guid><dc:creator><![CDATA[silverpill@socialhub.activitypub.rocks]]></dc:creator><pubDate>Sat, 27 Jun 2026 16:18:02 GMT</pubDate></item><item><title><![CDATA[Reply to silverpill: on Sat, 27 Jun 2026 16:18:02 GMT]]></title><description><![CDATA[<p>Thanks, for this FEP being adopted.</p><h4>Suggestions</h4><p>[] Include test cases of activities that should be valid using various algorithm pairings. This would at least help me, if I wanted to implement this. [] Specify behavior if Authentication is missing, e.g.</p><blockquote><p>A server MAY require Authentication. In this case a request lacking authentication MUST be answered with HTTP 401.</p></blockquote><p>[] Discuss behavior for <a href="https://www.w3.org/TR/activitypub/#inbox-forwarding">AP S2S 7.1.2 Forwarding from Inbox</a>, e.g.</p><blockquote><p>A forwarded activity MAY be used without further verification, i.e. no GET is necessary from the original host.</p></blockquote><p>[] Discuss public key caching. This probably goes beyond the scope of this FEP. So, one might one want add something like <em>This section is non-normative.</em> to it.</p>]]></description><link>https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/1a6a087d01fd8b44618de3641831aa59</link><guid isPermaLink="true">https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/1a6a087d01fd8b44618de3641831aa59</guid><dc:creator><![CDATA[helge@socialhub.activitypub.rocks]]></dc:creator><pubDate>Sat, 27 Jun 2026 16:18:02 GMT</pubDate></item><item><title><![CDATA[Reply to silverpill: on Sat, 27 Jun 2026 16:18:02 GMT]]></title><description><![CDATA[I’ve never used Gherkin before, but I was able to read and edit your FEP-8b32 feature file without reading any docs. The syntax is intuitive and that makes Gherkin a useful tool for spec writers. 
My implementation tests for FEP-8b32/jcs-eddsa-2022 are not based on it though, as I try to avoid adding new dependencies. I simply copied inputs and outputs from the feature file.]]></description><link>https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/b67c92f91c59417befb996afb23b850e</link><guid isPermaLink="true">https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/b67c92f91c59417befb996afb23b850e</guid><dc:creator><![CDATA[silverpill@socialhub.activitypub.rocks]]></dc:creator><pubDate>Sat, 27 Jun 2026 16:18:02 GMT</pubDate></item><item><title><![CDATA[Reply to silverpill: on Sat, 27 Jun 2026 16:18:02 GMT]]></title><description><![CDATA[<p>VC workgroup changed the name of cryptosuite from <code>jcs-eddsa-2022</code> to <code>eddsa-jcs-2022</code>. The FEP has been updated accordingly.</p><p><a href="https://codeberg.org/fediverse/fep/pulls/142">https://codeberg.org/fediverse/fep/pulls/142</a></p>]]></description><link>https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/f399866dd34386433fd5f12cf25b2ff4</link><guid isPermaLink="true">https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/f399866dd34386433fd5f12cf25b2ff4</guid><dc:creator><![CDATA[silverpill@socialhub.activitypub.rocks]]></dc:creator><pubDate>Sat, 27 Jun 2026 16:18:02 GMT</pubDate></item><item><title><![CDATA[Reply to silverpill: on Sat, 27 Jun 2026 16:18:02 GMT]]></title><description><![CDATA[<p><a href="https://w3c.github.io/vc-di-eddsa/#jcs-eddsa-2022">jcs-eddsa-2022</a> description was fixed a couple of days ago (<a href="https://github.com/w3c/vc-di-eddsa/pull/43">PR</a>). I proceeded with implementation of the algorithm and incorporated it into my software (here is the <a href="https://codeberg.org/silverpill/mitra/src/commit/48033e983c4c846797d2edbb829ccab19012ad6d/src/json_signatures/create.rs#L186-L207">signing function</a>). However, I'm not sure how to distribute EdDSA keys. The most logical place for them seems to be <a href="https://w3c-ccg.github.io/security-vocab/#publicKey"><code>publicKey</code></a> property, which can take the form of array where the first item represents RSA key and the second item represents EdDSA key. But servers may expect <code>publicKey</code> to be an object and fail to process an array, making gradual upgrade impossible. So we need to either use some new property (<a href="https://w3c-ccg.github.io/security-vocab/#authenticationMethod">authentication</a>?) or keep RSA as the recommended signature algorithm.</p>]]></description><link>https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/83d0f523a7335b52ae2c83923f4c6b24</link><guid isPermaLink="true">https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/83d0f523a7335b52ae2c83923f4c6b24</guid><dc:creator><![CDATA[silverpill@socialhub.activitypub.rocks]]></dc:creator><pubDate>Sat, 27 Jun 2026 16:18:02 GMT</pubDate></item><item><title><![CDATA[Reply to silverpill: on Sat, 27 Jun 2026 16:18:02 GMT]]></title><description><![CDATA[<p>I'm not familiar with JWKs, but according to <a href="https://www.rfc-editor.org/rfc/rfc8037.html#page-3">RFC-8037</a> the "d" parameter is a base64url encoded private key. I tried to decode it, and the value I get is different from the multibase-encoded one.</p>]]></description><link>https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/05f39cde100b93b37608cf17c10cfe82</link><guid isPermaLink="true">https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/05f39cde100b93b37608cf17c10cfe82</guid><dc:creator><![CDATA[silverpill@socialhub.activitypub.rocks]]></dc:creator><pubDate>Sat, 27 Jun 2026 16:18:02 GMT</pubDate></item><item><title><![CDATA[Reply to silverpill: on Sat, 27 Jun 2026 16:18:02 GMT]]></title><description><![CDATA[silverpill:<blockquote><p>Your implementation of FEP-521a appears to be correct (I was able to fetch lobsters actor you mentioned in readme; can’t verify FEP-8b32 because my Follow activity is being rejected with <code>FST_ERR_CTP_INVALID_MEDIA_TYPE</code>).</p></blockquote><p>Thanks for checking it out! It looks like the follow requests were getting dropped by fastify because the content-type was “application/ld+json” instead of json or activity+json. I’ve just added that to the list of accepted content types.</p>]]></description><link>https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/f1b785170ebae8a6a3578136d8e82f12</link><guid isPermaLink="true">https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/f1b785170ebae8a6a3578136d8e82f12</guid><dc:creator><![CDATA[robey@socialhub.activitypub.rocks]]></dc:creator><pubDate>Sat, 27 Jun 2026 16:18:02 GMT</pubDate></item><item><title><![CDATA[Reply to silverpill: on Sat, 27 Jun 2026 16:18:02 GMT]]></title><description><![CDATA[<a href="/u/helge">@helge</a> Are you planning to move this file to <a href="https://socialhub.activitypub.rocks/t/test-cases-for-feps/3224/13">fediverse-features</a>? 
I want to add test vectors for FEP-8b32, but I am not sure how to do it. Gherkin syntax looks nice. It is human readable, and it is definitely better than <a href="https://github.com/w3c/vc-di-eddsa/tree/main/TestVectors/jcs-eddsa-2022" rel="noopener nofollow ugc">plain JSON files</a>. However, I think it would be better to put test vectors alongside the FEP, and not in a separate repo.]]></description><link>https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/3ddfd1aa1c67427f416c9d67e630010c</link><guid isPermaLink="true">https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/3ddfd1aa1c67427f416c9d67e630010c</guid><dc:creator><![CDATA[silverpill@socialhub.activitypub.rocks]]></dc:creator><pubDate>Sat, 27 Jun 2026 16:18:02 GMT</pubDate></item><item><title><![CDATA[Reply to silverpill: on Sat, 27 Jun 2026 16:18:02 GMT]]></title><description><![CDATA[My current plan is to locate all my Gherkin features in that repository. This includes both FEP and ones that test <a href="https://codeberg.org/helge/fediverse-features/src/branch/main/fedi/sending_message.feature" rel="noopener nofollow ugc">other aspects</a> of the Fediverse. 
I have no idea if different repositories for features and docs are a good split. As having a features repository already means that I split code and tests, it doesn’t seem like a big deal to me. 
I probably won’t have a firm opinion on what a good structure looks like in the next few weeks.]]></description><link>https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/218ce3108491de742bcd2cc442497e4a</link><guid isPermaLink="true">https://fedi.wiki/post/https://socialhub.activitypub.rocks/ap/object/218ce3108491de742bcd2cc442497e4a</guid><dc:creator><![CDATA[helge@socialhub.activitypub.rocks]]></dc:creator><pubDate>Sat, 27 Jun 2026 16:18:02 GMT</pubDate></item></channel></rss>