Notes on Fediverse Protcols and Implementation ---------------------------------------------- ActivityPub Spec https://www.w3.org/TR/activitypub/ ActivityStreams2.0 Spec https://www.w3.org/TR/activitystreams-core/ ActivityStreams Vocabulary https://www.w3.org/TR/activitystreams-vocabulary/ WebFinger Spec https://www.rfc-editor.org/rfc/rfc7033 HTTP Signatures https://datatracker.ietf.org/doc/html/draft-cavage-http-signatures-12 https://activitypub.rocks/ https://socialhub.activitypub.rocks/pub/guide-for-new-activitypub-implementers Exploring with curl ------------------- $ curl 'https://socialnotwork.net/.well-known/webfinger?resource=acct:swetland@socialnotwork.net' {"subject":"acct:swetland@socialnotwork.net", "aliases":[ "https://socialnotwork.net/@swetland", "https://socialnotwork.net/users/swetland"], "links":[{ "rel":"http://webfinger.net/rel/profile-page","type":"text/html", "href":"https://socialnotwork.net/@swetland"}, {"rel":"self","type":"application/activity+json", "href":"https://socialnotwork.net/users/swetland"}, {"rel":"http://ostatus.org/schema/1.0/subscribe", "template":"https://socialnotwork.net/authorize_interaction?uri={uri}"}]} $ curl 'https://socialnotwork.net/users/swetland' --header 'Accept: application/ld+json; profile="https://www.w3.org/ns/activitystreams"' {"@context":[ "https://www.w3.org/ns/activitystreams", "https://w3id.org/security/v1", {"manuallyApprovesFollowers":"as:manuallyApprovesFollowers", "toot":"http://joinmastodon.org/ns#", "featured":{"@id":"toot:featured","@type":"@id"}, "featuredTags":{"@id":"toot:featuredTags","@type":"@id"}, "alsoKnownAs":{"@id":"as:alsoKnownAs","@type":"@id"}, "movedTo":{"@id":"as:movedTo","@type":"@id"}, "schema":"http://schema.org#", "PropertyValue":"schema:PropertyValue", "value":"schema:value", "discoverable":"toot:discoverable", "Device":"toot:Device", "Ed25519Signature":"toot:Ed25519Signature", "Ed25519Key":"toot:Ed25519Key", "Curve25519Key":"toot:Curve25519Key", "EncryptedMessage":"toot:EncryptedMessage", "publicKeyBase64":"toot:publicKeyBase64", "deviceId":"toot:deviceId", "claim":{"@type":"@id","@id":"toot:claim"}, "fingerprintKey":{"@type":"@id","@id":"toot:fingerprintKey"}, "identityKey":{"@type":"@id","@id":"toot:identityKey"}, "devices":{"@type":"@id","@id":"toot:devices"}, "messageFranking":"toot:messageFranking", "messageType":"toot:messageType", "cipherText":"toot:cipherText", "suspended":"toot:suspended", "focalPoint":{"@container":"@list","@id":"toot:focalPoint"}}], "id":"https://socialnotwork.net/users/swetland", "type":"Person", "following":"https://socialnotwork.net/users/swetland/following", "followers":"https://socialnotwork.net/users/swetland/followers", "inbox":"https://socialnotwork.net/users/swetland/inbox", "outbox":"https://socialnotwork.net/users/swetland/outbox", "featured":"https://socialnotwork.net/users/swetland/collections/featured", "featuredTags":"https://socialnotwork.net/users/swetland/collections/tags", "preferredUsername":"swetland", "name":"Brian Swetland", "summary":"\u003cp\u003eExperimental Account.\u003c/p\u003e", "url":"https://socialnotwork.net/@swetland", "manuallyApprovesFollowers":false, "discoverable":false, "published":"2022-11-01T00:00:00Z", "devices":"https://socialnotwork.net/users/swetland/collections/devices", "publicKey":{ "id":"https://socialnotwork.net/users/swetland#main-key", "owner":"https://socialnotwork.net/users/swetland", "publicKeyPem":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1Pz6hABuuU3Ii0tAqDGd\nlBIeNJgJRDNd+B4gQntxQIxybT/Hx7sm3+nFA6DBbZ61W+T2YNsyIn88NQZB+gUw\n00e0UCRLFyTY+9jczZ19QR0h+29VWOGvvuG89ATy7m26S09+sXZoh+R4NgXysiqY\ng0jhw6RwneZRCoQ7FUkGq2FP4rFRr8s+5tgE/q7PquebDSBCUGO++J4AzAj4WvEy\ntqv4yjXQvsc6ULkP4BuXvgO4jiGScAN0oD++5gEFdfeplNhLJG/Uc7YC3rRl7gYS\nAo0mYAbW/9ODIOQA7Kchqtt8/itAhYJPqKEnglm+bboQMHavJpDBug+rUjikP85e\newIDAQAB\n-----END PUBLIC KEY-----\n"}, "tag":[], "attachment":[{ "type":"PropertyValue", "name":"Primary", "value":"\u003ca href=\"https://chaos.social/@swetland\" target=\"_blank\" rel=\"nofollow noopener noreferrer me\"\u003e\u003cspan class=\"invisible\"\u003ehttps://\u003c/span\u003e\u003cspan class=\"\"\u003echaos.social/@swetland\u003c/span\u003e\u003cspan class=\"invisible\"\u003e\u003c/span\u003e\u003c/a\u003e"}, {"type":"PropertyValue", "name":"Github","value":"\u003ca href=\"https://github.com/swetland\" target=\"_blank\" rel=\"nofollow noopener noreferrer me\"\u003e\u003cspan class=\"invisible\"\u003ehttps://\u003c/span\u003e\u003cspan class=\"\"\u003egithub.com/swetland\u003c/span\u003e\u003cspan class=\"invisible\"\u003e\u003c/span\u003e\u003c/a\u003e"}, {"type":"PropertyValue", "name":"Location","value":"Palo Alto, CA"}], "endpoints":{"sharedInbox":"https://socialnotwork.net/inbox"}, "icon":{ "type":"Image", "mediaType":"image/png", "url":"https://socialnotwork.net/system/accounts/avatars/109/265/879/635/290/238/original/3818c535e44c424e.png"}, "image":{ "type":"Image", "mediaType":"image/jpeg", "url":"https://socialnotwork.net/system/accounts/headers/109/265/879/635/290/238/original/1aed74cfe0bfd573.jpg"}} $ openssl rsa -pubin -in swetland.pubkey.pem -text -noout Public-Key: (2048 bit) Modulus: 00:d4:fc:fa:84:00:6e:b9:4d:c8:8b:4b:40:a8:31: 9d:94:12:1e:34:98:09:44:33:5d:f8:1e:20:42:7b: 71:40:8c:72:6d:3f:c7:c7:bb:26:df:e9:c5:03:a0: c1:6d:9e:b5:5b:e4:f6:60:db:32:22:7f:3c:35:06: 41:fa:05:30:d3:47:b4:50:24:4b:17:24:d8:fb:d8: dc:cd:9d:7d:41:1d:21:fb:6f:55:58:e1:af:be:e1: bc:f4:04:f2:ee:6d:ba:4b:4f:7e:b1:76:68:87:e4: 78:36:05:f2:b2:2a:98:83:48:e1:c3:a4:70:9d:e6: 51:0a:84:3b:15:49:06:ab:61:4f:e2:b1:51:af:cb: 3e:e6:d8:04:fe:ae:cf:aa:e7:9b:0d:20:42:50:63: be:f8:9e:00:cc:08:f8:5a:f1:32:b6:ab:f8:ca:35: d0:be:c7:3a:50:b9:0f:e0:1b:97:be:03:b8:8e:21: 92:70:03:74:a0:3f:be:e6:01:05:75:f7:a9:94:d8: 4b:24:6f:d4:73:b6:02:de:b4:65:ee:06:12:02:8d: 26:60:06:d6:ff:d3:83:20:e4:00:ec:a7:21:aa:db: 7c:fe:2b:40:85:82:4f:a8:a1:27:82:59:be:6d:ba: 10:30:76:af:26:90:c1:ba:0f:ab:52:38:a4:3f:ce: 5e:7b Exponent: 65537 (0x10001)