Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
4b4b109
Add actor cryptographic public keys
sij411 Jul 17, 2026
e4e559a
Add feature-gated, Fedify-compatible 4096-bit RSA actor keys to Fede…
sij411 Jul 17, 2026
6d251e3
Persist actor RSA key pairs in SQLite
sij411 Jul 19, 2026
5a6544a
Move runtime tests to integration tests
sij411 Jul 19, 2026
f5d6978
Persist actor key pairs during startup
sij411 Jul 19, 2026
aa359d2
Publish actor RSA public keys
sij411 Jul 19, 2026
a905e26
Execute outgoing activity deliveries
sij411 Jul 19, 2026
9835dc9
Sign outgoing ActivityPub requests
sij411 Jul 19, 2026
1f11b41
Include query strings in signed request targets
sij411 Jul 19, 2026
9436471
Harden outgoing ActivityPub delivery
sij411 Jul 19, 2026
e0a72d9
Rename outbound_network.rs to url.rs
sij411 Jul 19, 2026
1b7cbc0
Fetch ID-only Follow actors before core handling, persist their disco…
sij411 Jul 19, 2026
d4654b4
Verify incoming HTTP signatures
sij411 Jul 19, 2026
d5fe01c
Resolve signing keys independently from actors
sij411 Jul 19, 2026
4192b14
Accept public keys without an explicit type
sij411 Jul 19, 2026
4691fe4
Handle Undo Follow activities
sij411 Jul 20, 2026
160e70f
Add followers collection vocabulary
sij411 Jul 20, 2026
86a3101
Serve the followers collection
sij411 Jul 20, 2026
ac35ae5
Negotiate ActivityPub actor and follower responses
sij411 Jul 20, 2026
284774f
Mark negotiated 406 responses with Vary Accept
sij411 Jul 20, 2026
9776630
Compare supported representations during content negotiation
sij411 Jul 21, 2026
ad8d6fe
Expand Note addressing and representation fields
sij411 Jul 21, 2026
1cd7c28
Persist ActivityPub objects in the runtime store
sij411 Jul 21, 2026
db9b196
Serve persisted Notes through ActivityPub object routes
sij411 Jul 21, 2026
998e6f9
Coordinate local Note persistence and delivery in the runtime
sij411 Jul 21, 2026
e5a3ed0
Resolve Note recipients from persisted followers
sij411 Jul 21, 2026
ad07e50
Address Note delivery recipients
sij411 Jul 21, 2026
2f37216
Add Follow type and signed sender
sij411 Jul 22, 2026
d34c1f8
Add Follow test
sij411 Jul 22, 2026
d05b504
Add sending activities when actor is given
sij411 Jul 27, 2026
7c021a6
Send activities to to and cc
sij411 Jul 27, 2026
ef1cb71
Add to and cc delivery test
sij411 Jul 27, 2026
4415661
Add public only guard when getting object
sij411 Jul 27, 2026
0dffa37
Add visibility tests
sij411 Jul 27, 2026
0cbc265
Clear stale shared inbox on actor refresh
sij411 Jul 27, 2026
5866ea4
Protect SQLite signing keys on Unix
sij411 Jul 28, 2026
fe967fe
Continue delivery after actor resolution failures
sij411 Jul 28, 2026
b13d924
Deduplicate inboxes across outbound recipients
sij411 Jul 28, 2026
61449c0
Avoid duplicate delivery to direct followers
sij411 Jul 28, 2026
5180800
Parse inbox Content-Type as a media type
sij411 Jul 28, 2026
cea6b89
Bind inbox signatures to the configured host
sij411 Jul 29, 2026
43340ee
Return 202 Accepted before Follow-specific deserialization
sij411 Jul 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,315 changes: 1,304 additions & 11 deletions Cargo.lock

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,18 @@ repository = "https://github.com/fedify-dev/feder"
[workspace.dependencies]
# Keep workspace crate versions in sync with [workspace.package].version.
# Use `mise run bump-execute <version>` instead of editing these by hand.
base64 = { version = "0.22.1", default-features = false, features = ["alloc"] }
feder-core = { version = "0.1.0", path = "crates/feder-core" }
feder-runtime-server = { version = "0.1.0", path = "crates/feder-runtime-server" }
feder-vocab = { version = "0.1.0", path = "crates/feder-vocab" }
iri-string = { version = "0.7.12", default-features = false, features = ["alloc", "serde"] }
rand_chacha = { version = "0.3.1", default-features = false }
rand_core = { version = "0.6.4", features = ["getrandom"] }
rsa = { version = "0.9.10", default-features = false, features = ["pem", "sha2", "u64_digit"] }
serde = { version = "1.0.219", default-features = false, features = ["alloc", "derive"] }
serde_json = "1.0.140"
tower = { version = "0.5", features = ["util"]}
zeroize = { version = "1.9.0", default-features = false, features = ["alloc"] }

[workspace.lints.rust]
warnings = "deny"
Expand Down
9 changes: 9 additions & 0 deletions crates/feder-core/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,17 @@ license.workspace = true
homepage.workspace = true
repository.workspace = true

[features]
http-signatures = ["dep:base64", "dep:rsa", "dep:zeroize"]

[dependencies]
base64 = { workspace = true, optional = true }
feder-vocab.workspace = true
rsa = { workspace = true, optional = true }
zeroize = { workspace = true, optional = true }

[dev-dependencies]
rand_chacha.workspace = true

[lints]
workspace = true
Loading