Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse

NodeBB

  1. Home
  2. Technical Discussion
  3. NodeBB and RFC 9421

NodeBB and RFC 9421

Scheduled Pinned Locked Moved Technical Discussion
9421rfcactivitypubsignaturescavage
1 Cross-posts 8 Posts 5 Posters 13 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • julian@activitypub.spaceJ This user is from outside of this forum
    julian@activitypub.spaceJ This user is from outside of this forum
    julian@activitypub.space
    wrote last edited by
    #1

    I've been working (admittedly, with AI assistance) on HTTP signatures RFC 9421 support.

    The work will be done in stages. The first step is ensuring NodeBB can handle receipt of activities signed under the new standard (with adequate fallback to draft cavage-12).

    Afterwards NodeBB will begin sending out activities signed with both methods.

    Question re: double knock for AP devs who have implemented... is there a specific reason 9421-signed is sent first, and then cavage-12? My understanding is the headers are separate — Signature-Input vs Signature, though there are two of the latter.

    It seems possible to send both signatures at once.

    dmathieu@fosstodon.orgD nick@mammuthus.deN skavish@welley.socialS julian@activitypub.spaceJ 4 Replies Last reply
    0
    • julian@activitypub.spaceJ julian@activitypub.space

      I've been working (admittedly, with AI assistance) on HTTP signatures RFC 9421 support.

      The work will be done in stages. The first step is ensuring NodeBB can handle receipt of activities signed under the new standard (with adequate fallback to draft cavage-12).

      Afterwards NodeBB will begin sending out activities signed with both methods.

      Question re: double knock for AP devs who have implemented... is there a specific reason 9421-signed is sent first, and then cavage-12? My understanding is the headers are separate — Signature-Input vs Signature, though there are two of the latter.

      It seems possible to send both signatures at once.

      dmathieu@fosstodon.orgD This user is from outside of this forum
      dmathieu@fosstodon.orgD This user is from outside of this forum
      dmathieu@fosstodon.org
      wrote last edited by
      #2

      @julian because most implementations still default to cavage, so it's the fastest path?

      1 Reply Last reply
      0
      • julian@activitypub.spaceJ julian@activitypub.space

        I've been working (admittedly, with AI assistance) on HTTP signatures RFC 9421 support.

        The work will be done in stages. The first step is ensuring NodeBB can handle receipt of activities signed under the new standard (with adequate fallback to draft cavage-12).

        Afterwards NodeBB will begin sending out activities signed with both methods.

        Question re: double knock for AP devs who have implemented... is there a specific reason 9421-signed is sent first, and then cavage-12? My understanding is the headers are separate — Signature-Input vs Signature, though there are two of the latter.

        It seems possible to send both signatures at once.

        nick@mammuthus.deN This user is from outside of this forum
        nick@mammuthus.deN This user is from outside of this forum
        nick@mammuthus.de
        wrote last edited by
        #3

        @julian@activitypub.space

        Double-Knock... i can just guess, that some considering RFC 9421 signatures as the preferred variant, so that this is suggested to try first.

        It might be possible, that i start to do a double-knocking at the beginning with Draft Cavage 12 first.

        Regarding "to send both signatures at once": Both signature types are using a "Signature" header. So it doesn't look like you can send both signature types at once.

        Btw.: Was your post shortened on #Mastodon? (I saw it first on norden.social).

        #Fediverse #ActivityPub #Signature #HTTP #RFC9421 #DraftCavage12

        smallcircles@social.coopS 1 Reply Last reply
        0
        • julian@activitypub.spaceJ julian@activitypub.space

          I've been working (admittedly, with AI assistance) on HTTP signatures RFC 9421 support.

          The work will be done in stages. The first step is ensuring NodeBB can handle receipt of activities signed under the new standard (with adequate fallback to draft cavage-12).

          Afterwards NodeBB will begin sending out activities signed with both methods.

          Question re: double knock for AP devs who have implemented... is there a specific reason 9421-signed is sent first, and then cavage-12? My understanding is the headers are separate — Signature-Input vs Signature, though there are two of the latter.

          It seems possible to send both signatures at once.

          skavish@welley.socialS This user is from outside of this forum
          skavish@welley.socialS This user is from outside of this forum
          skavish@welley.social
          wrote last edited by
          #4

          we hit this exact thing in Welley.

           

          you can't send both at once, and it's not because of Signature-Input. that header's fine, it's unique to 9421. the problem is the Signature header itself, both schemes want it, with totally different, incompatible contents. cavage fills it with keyId="...",headers="...",signature="...", and 9421 fills it with sig1=....

           

          same header name, two languages that don't mix.

           

          and if you try to send two Signature headers, HTTP is allowed to just squash repeated headers into one comma-joined value. so the receiver might see both jammed together, which is garbage to a cavage parser.

           

          as for why 9421 goes first: no protocol rule says it has to, it's just a "prefer the new thing" move. lead with 9421, fall back to cavage only when needed, and as the network upgrades more first-knocks succeed until you can eventually drop cavage entirely.

           

          one tip for when you get to sending: cache per-domain which scheme worked, otherwise you're doubling every delivery to un-upgraded peers forever. and only retry-with-the-other-scheme on an actual signature failure, don't re-knock on a 401 that just means you're blocked, or a 410 gone.

           

          for what it's worth, your staging is spot on: receive-both first, dual-send later. that's exactly where Mastodon and we are too, everyone accepts both but still sends one

          1 Reply Last reply
          0
          • nick@mammuthus.deN nick@mammuthus.de

            @julian@activitypub.space

            Double-Knock... i can just guess, that some considering RFC 9421 signatures as the preferred variant, so that this is suggested to try first.

            It might be possible, that i start to do a double-knocking at the beginning with Draft Cavage 12 first.

            Regarding "to send both signatures at once": Both signature types are using a "Signature" header. So it doesn't look like you can send both signature types at once.

            Btw.: Was your post shortened on #Mastodon? (I saw it first on norden.social).

            #Fediverse #ActivityPub #Signature #HTTP #RFC9421 #DraftCavage12

            smallcircles@social.coopS This user is from outside of this forum
            smallcircles@social.coopS This user is from outside of this forum
            smallcircles@social.coop
            wrote last edited by
            #5

            @nick @julian

            Yes, it is shortened. The last sentence shown in Mastodon Web UI is:

            > Question re: double knock for AP devs who have implemented... is there a specific reason 9421-signed is sent first, and then cavage-12?

            I hadn't really noticed as it cut off right at the question mark 🙂

            1 Reply Last reply
            0
            • skavish@welley.socialS skavish@welley.social

              we hit this exact thing in Welley.

               

              you can't send both at once, and it's not because of Signature-Input. that header's fine, it's unique to 9421. the problem is the Signature header itself, both schemes want it, with totally different, incompatible contents. cavage fills it with keyId="...",headers="...",signature="...", and 9421 fills it with sig1=....

               

              same header name, two languages that don't mix.

               

              and if you try to send two Signature headers, HTTP is allowed to just squash repeated headers into one comma-joined value. so the receiver might see both jammed together, which is garbage to a cavage parser.

               

              as for why 9421 goes first: no protocol rule says it has to, it's just a "prefer the new thing" move. lead with 9421, fall back to cavage only when needed, and as the network upgrades more first-knocks succeed until you can eventually drop cavage entirely.

               

              one tip for when you get to sending: cache per-domain which scheme worked, otherwise you're doubling every delivery to un-upgraded peers forever. and only retry-with-the-other-scheme on an actual signature failure, don't re-knock on a 401 that just means you're blocked, or a 410 gone.

               

              for what it's worth, your staging is spot on: receive-both first, dual-send later. that's exactly where Mastodon and we are too, everyone accepts both but still sends one

              julian@activitypub.spaceJ This user is from outside of this forum
              julian@activitypub.spaceJ This user is from outside of this forum
              julian@activitypub.space
              wrote last edited by
              #6

              > @skavish@welley.social said:
              >
              > same header name, two languages that don't mix.

              Yes, I was worried about this. I was hoping maybe cavage parsers were smart enough to only parse header values that match expected inputs, so sending two Signature headers would work, but knowing what I know, that's wishful thinking <img class="not-responsive emoji" src="https://activitypub.space/assets/plugins/nodebb-plugin-emoji/emoji/android/1f605.png?v=9f67c8a21b0" title="😅" />

              Thanks for the detailed reply! Looking forward to testing in the next few days.

              1 Reply Last reply
              0
              • smallcircles@social.coopS smallcircles@social.coop

                @nick @julian

                Yes, it is shortened. The last sentence shown in Mastodon Web UI is:

                > Question re: double knock for AP devs who have implemented... is there a specific reason 9421-signed is sent first, and then cavage-12?

                I hadn't really noticed as it cut off right at the question mark 🙂

                julian@activitypub.spaceJ This user is from outside of this forum
                julian@activitypub.spaceJ This user is from outside of this forum
                julian@activitypub.space
                wrote last edited by
                #7

                @smallcircles@social.coop indeed, we cut off at the end of a sentence and link out to the full page for Articles (although in this case it's not very long)

                The cutoff is somewhere around 500 chars.

                1 Reply Last reply
                0
                • julian@activitypub.spaceJ julian@activitypub.space

                  I've been working (admittedly, with AI assistance) on HTTP signatures RFC 9421 support.

                  The work will be done in stages. The first step is ensuring NodeBB can handle receipt of activities signed under the new standard (with adequate fallback to draft cavage-12).

                  Afterwards NodeBB will begin sending out activities signed with both methods.

                  Question re: double knock for AP devs who have implemented... is there a specific reason 9421-signed is sent first, and then cavage-12? My understanding is the headers are separate — Signature-Input vs Signature, though there are two of the latter.

                  It seems possible to send both signatures at once.

                  julian@activitypub.spaceJ This user is from outside of this forum
                  julian@activitypub.spaceJ This user is from outside of this forum
                  julian@activitypub.space
                  wrote last edited by
                  #8

                  The rfc-9421 branch has been merged into develop and will be released with NodeBB v4.15.0

                  At present it will handle receipt of RFC-9421-signed activities (in addition to legacy cavage-12).

                  It will only send cavage-12 signed activities for now. That other half (with the double-knocking and caching of supported domains) will come later.

                  1 Reply Last reply
                  0
                  • ? [[global:guest]] crossposted this topic to General Discussion

                  Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                  Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                  With your input, this post could be even better 💗

                  Register Login
                  Reply
                  • Reply as topic
                  Log in to reply
                  • Oldest to Newest
                  • Newest to Oldest
                  • Most Votes


                  • Login

                  • Don't have an account? Register

                  • Login or register to search.
                  Powered by NodeBB Contributors
                  • First post
                    Last post
                  0
                  • Categories
                  • Recent
                  • Tags
                  • Popular
                  • World
                  • Users
                  • Groups