social.smallbury.actor.trust
Contacts this actor trusts, content-key epochs for E2EE, and optional in-flight pairwise-secret delivery during trust establishment. Trusted DIDs are cleartext for AppView indexing. Mutual trust is derived: A trusts B and B trusts A (each side's trusted array). Feed visibility requires mutual trust on both records. Per-epoch content keys use opaque slots (see #contentKeyWrap).
Details · record, key literal:self
| Kind | record |
|---|---|
| Record key | literal:self |
| Authority | actor.smallbury.social |
| Indexed |
Record
record · key literal:selfProperties
createdAt
string · datetimeOrdered content-key epochs. Only the latest epoch (no endedAt) is used for new posts and comments. Earlier epochs remain for decrypting historical content.
Temporary delivery of a pairwise trust secret to a peer during establishment (encrypted to the peer's profile encryptionPublicKey). Removed after the peer has retrieved and acknowledged. Used when the acceptor generates the secret (new-user path) or when the initiator pre-delivers it (existing-user path).
DIDs this actor trusts. Cleartext for AppView; does not by itself reveal per-post subset audiences. Listing a DID here may occur before they reciprocate (pre-emptive trust).
updatedAt
string · datetime#contentKeyWrap
objectProperties
Opaque lookup key. Recipients compute slot = Base64URL(HMAC-SHA256(pairwiseTrustSecret, keyEpochId)). pairwiseTrustSecret is agreed at trust establishment and stored only on the two clients—not published on the PDS.
minLength: 1maxLength: 128
This epoch's symmetric content encryption key, encrypted to the recipient's encryptionPublicKey from social.smallbury.actor.profile.
maxLength: 512
#keyEpoch
objectProperties
One wrapped copy of this epoch's symmetric content key per intended recipient. Opaque slots so wraps are not labeled with recipient DIDs. May include dummy wraps.
endedAt
string · datetimeSet when a newer epoch is created. Omitted on the current epoch.
Stable identifier for this epoch (e.g. sequential "0", "1", …). Referenced by encrypted posts and comments.
minLength: 1maxLength: 64
#pendingPairwiseSecret
objectProperties
inviteId
stringOptional link to social.smallbury.graph.invite on the initiator's repo.
minLength: 1maxLength: 128
The contact who should decrypt wrappedSecret.
32-byte pairwiseTrustSecret for this pair, encrypted to peerDid's encryptionPublicKey from social.smallbury.actor.profile.
maxLength: 512
#trustedEntry
objectSimilar lexicons
semantic matchLexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.
-
Encrypted snapshot of the actor's local pairwise trust secrets for multi-device sync. Ciphertext is encrypted to encryptionPublicKey on social.smallbury.actor.profile; only the identity private key on a authorized device can decrypt it.
-
Supplemental Smallbury profile data stored alongside app.bsky.actor.profile. Presentation fields (display name, avatar, description, etc.) live on the Bluesky profile record only.