Skip to content

Piero Bosio Social Web Site Personale Logo Fediverso

Social Forum federato con il resto del mondo. Non contano le istanze, contano le persone

## Anatomy of an E2EE ActivityPub Note in Enigmatick

General Discussion
2 2 0
  • Anatomy of an E2EE ActivityPub Note in Enigmatick

    Over the break I spent some time revamping my structs and enums for handling #E2EE #ActivityPub exchanges. This is what I have at the moment for the initial Create from the client (this is subject to change).

    {
      "@context": [
        "https://www.w3.org/ns/activitystreams",
        "https://purl.archive.org/socialweb/mls"
      ],
      "type": "Create",
      "actor": "https://enigmatick.social/user/jdt",
      "to": [
        "https://enigmatick.social/user/mls-tester"
      ],
      "cc": [],
      "object": {
        "mediaType": "message/mls",
        "encoding": "base64",
        "published": "2025-12-29T21:11:17Z",
        "type": "Note",
        "to": [
          "https://enigmatick.social/user/mls-tester"
        ],
        "cc": [],
        "attributedTo": "https://enigmatick.social/user/jdt",
        "content": "AAEAAhDIkTdahK5U3s1SQBbA2fIvAAAAAAAAAAEBABzHJj3+WZDE3Hw6H5W9YNhE3bhDSyExL4tnn0E5QOvPUeOgYdo/2n+rGUI1M8wupeK2bt919jAs8yTj2awvBAsprxAInHm8qWgq2FER2xjcpAx9f42ncAL8Xehfy3v6vonGuAPkYteAzdFCC8mGWxg3slpI+VoPrSWThSKqjMNxttZSfvbnhEFYw0jUFmJwxOecDS8n3UVjuLDt14V0Fw9YMv+XXUgKj9bWaCPi0qhuatcgxCqXwXzpevJBhY0trbPZgjB8LlhC/zcx5NNLI9WJtCF9zq3RPkG6ByPdH6IWTH5drOJyvefILElybP4eGMSoGWZATmGUQm/k3iKG6tRyzMM/fHxpIz34",
        "tag": [
          {
            "type": "Mention",
            "name": "[at]mls-tester@enigmatick.social",
            "href": "https://enigmatick.social/user/mls-tester"
          }
        ],
        "attachment": []
      },
      "published": "2025-12-29T21:11:17Z",
      "instrument": [
        {
          "type": "VaultItem",
          "content": "oAjN0c2+q5gCtrFlauGU1kbKGizm5a5pH+iY5cObdihVBjjsSiSbkeu6XQ7/RR4lcn0OIqS9O+MVJ0QyympRxt7JI9qzCGlkCFcAyp4oe8nhh/YG7WHoLWL272vPqlq8A/Yf0YFprhIBlU48sJF6A1iRlU4fEBaRwnwV4gniSCQr55jpDe++M/HD3bSFJNcvpmf5BH9G4Z3VBaB8HMnDECGzFrB8zFycAR0w1SNYbGJuXFsopfMb4EfPkZoHT28="
        },
        {
          "type": "Welcome",
          "mediaType": "message/mls",
          "encoding": "base64",
          "content": "AAFAmCDd32lw8FF8QC6uFjAHr3mgvxBPjuGV1Pssxx+h5CNhcCAv4/tP+dWUbCq6L4A+aMr+L1uP3Xkusb4ea2H80EgFOUBUqHDCdGzjAhZdLCrjE0kM/aou36ZSZc0ahftKmE07chTiMUo8FgIj12deS4A0l3sXAR8x724HeigtyObI1GK7fxMGXU5oWemHGhS1unxK6XVyiuqvQriKP+VJPZa6JzN3Yb4r4l9B5jUfNUc5gX3XvzkzcO57Exj8SgpTTygo2zBTOPQ+6steYycUA70ed3LPKEfSCllIWeWAV+J+EFh7ywm90XFYzaPrXVudIx3orRzVMFnIldLax3oHUW5uXIrGQ06JWfgdOQ6DByb2iy/Dw4zJlbZP1oJptBTgO19IqUQaz58wrWDBSiYIT3h1jOXE3GvJgeeQIiW78noO5MF3xI3WRXB4C0cttyKm7Od2CBOk1USo+TDLCevnmExhlKlVTobTMMI4xZ1vVCdYpnb0k9rO7coVKPueBqVg2mE20GS/IoRG0v8+h0xUKIgsbYua41krjXoB5hctX4kH3lRO+qERkoXEcLVxRJuyeZEGsk4XrJ18AigU1a8gB6cZZ5LyvcV756yelu6F6MRQKba6zawDLOn4Takm3Lr3urfWo5Br7DBZcigMVjzGn8MhLSIEMhv6Ehmqajj9Vl6sTnpi90tVYWUtKO1buPrk3AiXrsbnEoNubqCs1sVmA93/Z0CcE8GQa1dO7NywofSV4/ax/tmBCZEoU6/uL7ygZHt8ZvSyd6wniPCR6sfd4ys4O8C7qW1KKFtEBbb1lMre494ZeXI5v0sG7MwbwFtI3d2uRHtWZ8v9khGr1ds4AFz3QnvoMSUtsR2kvq+C6H45kUs2ae957+txpKt5MDrcmK+CTTcX/FhlAtib4mlbs+Aj4WJFLOkXuB+MlHOMBlMz3ndJ5I3GDbo+VQvdJC2mCUOBWraihOV92mQQHi2gLXAA1NSsZIjXgnyVSYsrUvNJgTvw+AOVmJ7q5tXENPlZoOKUjSB3fEmKlywf90EQLUjDpphnYtvdFz8Oh8Vbgze+QAQp2VVYImI+1voBErK1EMKqEDFz1DC1CWUzqhl3k2pMgx00JhP3ZZpbX7YtjRmLjJM="
        }
      ]
    }
    

    The mention of mls-tester has an [at] to avoid triggering my automatic webfinger resolution.

    I've adopted the mediaType and encoding attributes from the draft ActivityPub specification. And I've standardized the Welcome message to incorporate those.

    The Create includes the Welcome and a VaultItem as instruments rather than being sent as separate activities. The Welcome can include any number of recipients, so one within the activity should be sufficient.

    The VaultItem is specific to the #Enigmatick client and isn't intended to be federated. That's how I'm handling ongoing access to the decrypted data; the VaultItem is a symmetrically encrypted representation of the original content that can be safely stored on the server for repeated use by the client. I'll need to eventually update the @context with that extension.

  • Anatomy of an E2EE ActivityPub Note in Enigmatick

    Over the break I spent some time revamping my structs and enums for handling #E2EE #ActivityPub exchanges. This is what I have at the moment for the initial Create from the client (this is subject to change).

    {
      "@context": [
        "https://www.w3.org/ns/activitystreams",
        "https://purl.archive.org/socialweb/mls"
      ],
      "type": "Create",
      "actor": "https://enigmatick.social/user/jdt",
      "to": [
        "https://enigmatick.social/user/mls-tester"
      ],
      "cc": [],
      "object": {
        "mediaType": "message/mls",
        "encoding": "base64",
        "published": "2025-12-29T21:11:17Z",
        "type": "Note",
        "to": [
          "https://enigmatick.social/user/mls-tester"
        ],
        "cc": [],
        "attributedTo": "https://enigmatick.social/user/jdt",
        "content": "AAEAAhDIkTdahK5U3s1SQBbA2fIvAAAAAAAAAAEBABzHJj3+WZDE3Hw6H5W9YNhE3bhDSyExL4tnn0E5QOvPUeOgYdo/2n+rGUI1M8wupeK2bt919jAs8yTj2awvBAsprxAInHm8qWgq2FER2xjcpAx9f42ncAL8Xehfy3v6vonGuAPkYteAzdFCC8mGWxg3slpI+VoPrSWThSKqjMNxttZSfvbnhEFYw0jUFmJwxOecDS8n3UVjuLDt14V0Fw9YMv+XXUgKj9bWaCPi0qhuatcgxCqXwXzpevJBhY0trbPZgjB8LlhC/zcx5NNLI9WJtCF9zq3RPkG6ByPdH6IWTH5drOJyvefILElybP4eGMSoGWZATmGUQm/k3iKG6tRyzMM/fHxpIz34",
        "tag": [
          {
            "type": "Mention",
            "name": "[at]mls-tester@enigmatick.social",
            "href": "https://enigmatick.social/user/mls-tester"
          }
        ],
        "attachment": []
      },
      "published": "2025-12-29T21:11:17Z",
      "instrument": [
        {
          "type": "VaultItem",
          "content": "oAjN0c2+q5gCtrFlauGU1kbKGizm5a5pH+iY5cObdihVBjjsSiSbkeu6XQ7/RR4lcn0OIqS9O+MVJ0QyympRxt7JI9qzCGlkCFcAyp4oe8nhh/YG7WHoLWL272vPqlq8A/Yf0YFprhIBlU48sJF6A1iRlU4fEBaRwnwV4gniSCQr55jpDe++M/HD3bSFJNcvpmf5BH9G4Z3VBaB8HMnDECGzFrB8zFycAR0w1SNYbGJuXFsopfMb4EfPkZoHT28="
        },
        {
          "type": "Welcome",
          "mediaType": "message/mls",
          "encoding": "base64",
          "content": "AAFAmCDd32lw8FF8QC6uFjAHr3mgvxBPjuGV1Pssxx+h5CNhcCAv4/tP+dWUbCq6L4A+aMr+L1uP3Xkusb4ea2H80EgFOUBUqHDCdGzjAhZdLCrjE0kM/aou36ZSZc0ahftKmE07chTiMUo8FgIj12deS4A0l3sXAR8x724HeigtyObI1GK7fxMGXU5oWemHGhS1unxK6XVyiuqvQriKP+VJPZa6JzN3Yb4r4l9B5jUfNUc5gX3XvzkzcO57Exj8SgpTTygo2zBTOPQ+6steYycUA70ed3LPKEfSCllIWeWAV+J+EFh7ywm90XFYzaPrXVudIx3orRzVMFnIldLax3oHUW5uXIrGQ06JWfgdOQ6DByb2iy/Dw4zJlbZP1oJptBTgO19IqUQaz58wrWDBSiYIT3h1jOXE3GvJgeeQIiW78noO5MF3xI3WRXB4C0cttyKm7Od2CBOk1USo+TDLCevnmExhlKlVTobTMMI4xZ1vVCdYpnb0k9rO7coVKPueBqVg2mE20GS/IoRG0v8+h0xUKIgsbYua41krjXoB5hctX4kH3lRO+qERkoXEcLVxRJuyeZEGsk4XrJ18AigU1a8gB6cZZ5LyvcV756yelu6F6MRQKba6zawDLOn4Takm3Lr3urfWo5Br7DBZcigMVjzGn8MhLSIEMhv6Ehmqajj9Vl6sTnpi90tVYWUtKO1buPrk3AiXrsbnEoNubqCs1sVmA93/Z0CcE8GQa1dO7NywofSV4/ax/tmBCZEoU6/uL7ygZHt8ZvSyd6wniPCR6sfd4ys4O8C7qW1KKFtEBbb1lMre494ZeXI5v0sG7MwbwFtI3d2uRHtWZ8v9khGr1ds4AFz3QnvoMSUtsR2kvq+C6H45kUs2ae957+txpKt5MDrcmK+CTTcX/FhlAtib4mlbs+Aj4WJFLOkXuB+MlHOMBlMz3ndJ5I3GDbo+VQvdJC2mCUOBWraihOV92mQQHi2gLXAA1NSsZIjXgnyVSYsrUvNJgTvw+AOVmJ7q5tXENPlZoOKUjSB3fEmKlywf90EQLUjDpphnYtvdFz8Oh8Vbgze+QAQp2VVYImI+1voBErK1EMKqEDFz1DC1CWUzqhl3k2pMgx00JhP3ZZpbX7YtjRmLjJM="
        }
      ]
    }
    

    The mention of mls-tester has an [at] to avoid triggering my automatic webfinger resolution.

    I've adopted the mediaType and encoding attributes from the draft ActivityPub specification. And I've standardized the Welcome message to incorporate those.

    The Create includes the Welcome and a VaultItem as instruments rather than being sent as separate activities. The Welcome can include any number of recipients, so one within the activity should be sufficient.

    The VaultItem is specific to the #Enigmatick client and isn't intended to be federated. That's how I'm handling ongoing access to the decrypted data; the VaultItem is a symmetrically encrypted representation of the original content that can be safely stored on the server for repeated use by the client. I'll need to eventually update the @context with that extension.

    @jdt I think @hpk would be interested in seeing this


Gli ultimi otto messaggi ricevuti dalla Federazione
  • @jdt I think @hpk would be interested in seeing this

    read more

  • Anatomy of an E2EE ActivityPub Note in Enigmatick

    Over the break I spent some time revamping my structs and enums for handling #E2EE #ActivityPub exchanges. This is what I have at the moment for the initial Create from the client (this is subject to change).

    { "@context": [ "https://www.w3.org/ns/activitystreams", "https://purl.archive.org/socialweb/mls" ], "type": "Create", "actor": "https://enigmatick.social/user/jdt", "to": [ "https://enigmatick.social/user/mls-tester" ], "cc": [], "object": { "mediaType": "message/mls", "encoding": "base64", "published": "2025-12-29T21:11:17Z", "type": "Note", "to": [ "https://enigmatick.social/user/mls-tester" ], "cc": [], "attributedTo": "https://enigmatick.social/user/jdt", "content": "AAEAAhDIkTdahK5U3s1SQBbA2fIvAAAAAAAAAAEBABzHJj3+WZDE3Hw6H5W9YNhE3bhDSyExL4tnn0E5QOvPUeOgYdo/2n+rGUI1M8wupeK2bt919jAs8yTj2awvBAsprxAInHm8qWgq2FER2xjcpAx9f42ncAL8Xehfy3v6vonGuAPkYteAzdFCC8mGWxg3slpI+VoPrSWThSKqjMNxttZSfvbnhEFYw0jUFmJwxOecDS8n3UVjuLDt14V0Fw9YMv+XXUgKj9bWaCPi0qhuatcgxCqXwXzpevJBhY0trbPZgjB8LlhC/zcx5NNLI9WJtCF9zq3RPkG6ByPdH6IWTH5drOJyvefILElybP4eGMSoGWZATmGUQm/k3iKG6tRyzMM/fHxpIz34", "tag": [ { "type": "Mention", "name": "[at]mls-tester@enigmatick.social", "href": "https://enigmatick.social/user/mls-tester" } ], "attachment": [] }, "published": "2025-12-29T21:11:17Z", "instrument": [ { "type": "VaultItem", "content": "oAjN0c2+q5gCtrFlauGU1kbKGizm5a5pH+iY5cObdihVBjjsSiSbkeu6XQ7/RR4lcn0OIqS9O+MVJ0QyympRxt7JI9qzCGlkCFcAyp4oe8nhh/YG7WHoLWL272vPqlq8A/Yf0YFprhIBlU48sJF6A1iRlU4fEBaRwnwV4gniSCQr55jpDe++M/HD3bSFJNcvpmf5BH9G4Z3VBaB8HMnDECGzFrB8zFycAR0w1SNYbGJuXFsopfMb4EfPkZoHT28=" }, { "type": "Welcome", "mediaType": "message/mls", "encoding": "base64", "content": "AAFAmCDd32lw8FF8QC6uFjAHr3mgvxBPjuGV1Pssxx+h5CNhcCAv4/tP+dWUbCq6L4A+aMr+L1uP3Xkusb4ea2H80EgFOUBUqHDCdGzjAhZdLCrjE0kM/aou36ZSZc0ahftKmE07chTiMUo8FgIj12deS4A0l3sXAR8x724HeigtyObI1GK7fxMGXU5oWemHGhS1unxK6XVyiuqvQriKP+VJPZa6JzN3Yb4r4l9B5jUfNUc5gX3XvzkzcO57Exj8SgpTTygo2zBTOPQ+6steYycUA70ed3LPKEfSCllIWeWAV+J+EFh7ywm90XFYzaPrXVudIx3orRzVMFnIldLax3oHUW5uXIrGQ06JWfgdOQ6DByb2iy/Dw4zJlbZP1oJptBTgO19IqUQaz58wrWDBSiYIT3h1jOXE3GvJgeeQIiW78noO5MF3xI3WRXB4C0cttyKm7Od2CBOk1USo+TDLCevnmExhlKlVTobTMMI4xZ1vVCdYpnb0k9rO7coVKPueBqVg2mE20GS/IoRG0v8+h0xUKIgsbYua41krjXoB5hctX4kH3lRO+qERkoXEcLVxRJuyeZEGsk4XrJ18AigU1a8gB6cZZ5LyvcV756yelu6F6MRQKba6zawDLOn4Takm3Lr3urfWo5Br7DBZcigMVjzGn8MhLSIEMhv6Ehmqajj9Vl6sTnpi90tVYWUtKO1buPrk3AiXrsbnEoNubqCs1sVmA93/Z0CcE8GQa1dO7NywofSV4/ax/tmBCZEoU6/uL7ygZHt8ZvSyd6wniPCR6sfd4ys4O8C7qW1KKFtEBbb1lMre494ZeXI5v0sG7MwbwFtI3d2uRHtWZ8v9khGr1ds4AFz3QnvoMSUtsR2kvq+C6H45kUs2ae957+txpKt5MDrcmK+CTTcX/FhlAtib4mlbs+Aj4WJFLOkXuB+MlHOMBlMz3ndJ5I3GDbo+VQvdJC2mCUOBWraihOV92mQQHi2gLXAA1NSsZIjXgnyVSYsrUvNJgTvw+AOVmJ7q5tXENPlZoOKUjSB3fEmKlywf90EQLUjDpphnYtvdFz8Oh8Vbgze+QAQp2VVYImI+1voBErK1EMKqEDFz1DC1CWUzqhl3k2pMgx00JhP3ZZpbX7YtjRmLjJM=" } ] }

    The mention of mls-tester has an [at] to avoid triggering my automatic webfinger resolution.

    I've adopted the mediaType and encoding attributes from the draft ActivityPub specification. And I've standardized the Welcome message to incorporate those.

    The Create includes the Welcome and a VaultItem as instruments rather than being sent as separate activities. The Welcome can include any number of recipients, so one within the activity should be sufficient.

    The VaultItem is specific to the #Enigmatick client and isn't intended to be federated. That's how I'm handling ongoing access to the decrypted data; the VaultItem is a symmetrically encrypted representation of the original content that can be safely stored on the server for repeated use by the client. I'll need to eventually update the @context with that extension.

    read more

  • We're expanding beta testing for on Android before the public release.

    Quick reminder: Holos runs a full ActivityPub server on your phone, your data stays with you.

    Learn more: https://holos.social/how-it-works

    Dedicated account: @HolosSocial

    Interested? Let us know! iOS coming next.

    read more

  • @silverpill @julian Fair point.

    I suppose I was thinking of the ability to assign it to a shortened name in the @'context - but this is probably relatively unimportant once it's been gzipped.

    read more

  • Here's the first recorded collision in the history of Fediverse: https://github.com/bookwyrm-social/bookwyrm/issues/3731

    read more

  • @FenTiger @julian

    >The ability to make up brand new, guaranteed-unique identifiers on the fly is probably the thing I like most about JSON-LD.

    But it is not a JSON-LD thing, right?

    A JSON document can have property names that are URIs, or reverse-DNS strings, or UUIDs, or longNamesThatIncludeSoftwareNameAndVersion. All of those can be globally unique.

    read more

  • @fentiger@mastodon.social the purportedly world-ending effects of property collisions are overblown, imho.

    read more

  • @julian The ability to make up brand new, guaranteed-unique identifiers on the fly is probably the thing I like most about JSON-LD.

    As you imply, though, it's not really a problem in practice, because devs are used to JSON, and know what happens when you add extensions to standards.

    read more
Post suggeriti
  • 0 Votes
    2 Posts
    11 Views
    mobileatom@flipboard.com You've touched on a very interesting point. By the way, I've never figured out whether your Flipboard account will ever be able to see my reply, and to be honest, I'd be very curious to know what a Flipboard user sees when they receive a reply from the free Fediverse... Returning to your observation, I see the Fediverse as an integrated ecosystem, but integration doesn't always have to be symmetrical. [image: 1764879043010-31741512-04f3-4c0f-99f0-8314a4498402-image.png] To put it simply, Bookwyrm users and Peertube users aren't interested in viewing content from other social networks! In the Fediverse, there are programs that focus on one of the three areas in the image above, and programs that occupy two or more reference areas. For example, I find the fact that Mobilizon users can't see Friendica events much more problematic than the shortcoming you noted on Pixelfed... Pixelfed certainly "looks" like a social network, but it's primarily a place where users share their "personal art galleries." While I'm not a fan of dansup@mastodon.social, I recognize that he's making great strides to increase the interoperability of his creation, and Pixelfed has grown better than any other software in the Fediverse on three key levels: improving interoperability creating a beautiful and ergonomic app brand identity I'm sure he'll find a way to make text content visible in the future, but honestly, right now, it doesn't seem like a priority for Pixelfed's development and success. That said, your observations are a very interesting starting point for the development of software and interfaces in the Fediverse.
  • 0 Votes
    1 Posts
    6 Views
    ActivityPub doesn't need task forces to build onboarding resources.It just takes one person and a bit of courage.For both developers and the public.https://fediverse.info - for the publicactivitypub.social - for devs (coming soon)#activityPub
  • 0 Votes
    1 Posts
    20 Views
    How to Install #Pixelfed on #Ubuntu VPS (8 Step Quick-Start Guide) This article provides a guide for how to install Pixelfed on Ubuntu VPS.What is Pixelfed?PixelFed is a decentralized, open-source photo-sharing platform similar to Instagram but built on the #Fediverse (federated social networks using the #ActivityPub protocol). It allows users to host their own instances and interact with users across ...Continued 👉 https://blog.radwebhosting.com/how-to-install-pixelfed-on-ubuntu-vps/?utm_source=mastodon&utm_medium=social&utm_campaign=mastodon.social #selfhosting #selfhosted #vpsguide #installguide
  • 0 Votes
    1 Posts
    10 Views
    Speed demo by fauno, @f@sutty.nl, and Mauve, @mauve@mastodon.mauve.moe, at FediForum March 2024 https://fediforum.org/2024-03/