Remove the legacy-identity fallback on 2026-10-01 (published deprecation in the v0.28.0 notes) #201
Open
opened 2026-08-13 15:55:19 +00:00 by enricobuehler
·
0 comments
No Branch/Tag Specified
main
fix-host-cer-alias-null-key
worktree-azure-trusted-signing
worktree-audio-soft-limit-gain
worktree-gamescope-exclusive-dpms
fix/playnite-launcher-resolve
worktree-macos-mic-rebuild-loop
worktree-hyprland-cursor-mode-negotiation
worktree-hd2-idle-recording-default
worktree-steam-art-root-windows
worktree-android-aaudio-shield-silence
worktree-unpair-all-button
worktree-appletv-present-depth
worktree-av1-level-sentinel
worktree-nix-plugin-runner-resolve
worktree-release-0280
worktree-console-plugin-update-all
worktree-flatpak-skia-099-pin
worktree-debian-ubuntu-support
worktree-wowlan-support
worktree-decky-shortcut-dup
worktree-vk-level-gate-clamp
worktree-edition-2024
worktree-win-sleep-blockers
worktree-rt-gpu-priority-defaults
worktree-black-stream-fixes
worktree-edid-lock-toggle
worktree-gate-double-arm-fix
chore/rust-safety-programme
worktree-console-pinned-profile-library
worktree-blackscreen-fixes
build/web-silence-rollup-directive-warnings
worktree-android-console-visual-refresh
worktree-nixos-capped-compositor-exe-denied
worktree-release-0270
worktree-dm-helper-diagnosis
worktree-gamescope-pin-bump-nobara
worktree-notes-capsysnice-correction
worktree-bazzite-docs-warning
worktree-kwin-capability-identification
worktree-gamescope-rpm-deb-builddeps
worktree-pyrowave-wire-dead-code
worktree-release-0260
worktree-cursor-composite-hardening
worktree-library-settings-origin-split
worktree-native-decode-m0
worktree-july-rpm-and-cursor
worktree-presenter-cadence-wp1
worktree-decky-brand-name
worktree-win-amd-decoder-order
worktree-stall-ride-through
fix/pad-audio-wasapi-module-path
feat/android-pad-audio
worktree-adl-emul-probe
worktree-haptics-m12-dry
worktree-haptics-m9-richfb
worktree-haptics-m11-settings
worktree-apple-store-screenshots
worktree-decky-slim-rework
worktree-appstore-copy
worktree-haptics-m10-wire
worktree-haptics-m8-proto
worktree-haptics-m7-windows
worktree-haptics-m6-presenter
worktree-wire-mtu-resilience
worktree-haptics-m5-android
worktree-haptics-m4-apple
worktree-haptics-m3-rumble-engine
worktree-android-presenter-023-triage
worktree-vdisplay-resume-recovery
worktree-kwin-vout-demirror
fix/web-console-sweep
fix/windows-web-console-lifecycle
chore/windows-rerender-semantics
fix/pf-encode-phase8
fix/pf-encode-phase7
feat/cursor-channel
feat/desktop-mouse-mode
feat/plugin-kit
fix/network-split-standing-latency
fix/windows-msix-arm64-and-manifest
fix/encode-medium-tier
fix/encode-rfi-taint-and-oob
fix/encode-init-leak-and-twin-drift
fix/encode-teardown-uaf
feat/pyrowave-windows
fix/ubuntu-2404-host-deb
fix/ios-archive-provisioning
merge/first-frame-latency
feat/shared-clipboard-v2
feat/apple-live-activities-widgets
debug/touch-finger-logging
feat/shared-clipboard
midstream-resize
v0.28.1
v0.28.0
plugin-kit-v0.4.1
v0.27.0
v0.26.0
plugin-kit-v0.4.0
sdk-v0.1.4
plugin-kit-v0.3.3
sdk-v0.1.3
plugin-kit-v0.3.2
v0.25.0
plugin-kit-v0.3.1
plugin-kit-v0.3.0
v0.24.0
v0.23.0
v0.22.3
v0.22.2
v0.22.1
v0.22.0
v0.21.0
v0.20.1
v0.20.0
plugin-kit-v0.2.0
v0.19.2
v0.19.1
v0.19.0
v0.18.0
v0.17.2
v0.17.1
v0.17.0
v0.16.0
v0.15.0
v0.14.0
v0.13.0
v0.12.0
v0.11.0
v0.10.1
v0.10.0
v0.9.2
v0.9.1
v0.9.0
v0.8.4
v0.8.3
v0.8.2
v0.8.1
v0.8.0
v0.7.4
v0.7.3
v0.7.2
v0.7.1
v0.7.0
v0.6.0
v0.5.1
v0.5.0
v0.4.2
v0.4.1
v0.4.0
v0.3.1
v0.3.0
v0.2.1
v0.2.0
v0.1.1
v0.1.0
Labels
No items
No labels
Milestone
No items
No Milestone
Projects
Clear projects
No projects
No Assignees
Notifications
Due Date
Dependencies
No dependencies set.
Reference: unom/punktfunk#201
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Why this issue exists
The v0.28.0 release notes publish a date: "From 1 October 2026 the host will stop falling back to the old identity." Nothing in the tree removes that fallback today, so without a tracked change the notes will have promised something that silently never happens — the same shape as the v0.22.3 notes describing a feature that release never contained.
This issue is that tracked change.
What to remove
crates/punktfunk-host/src/identity.rs—load_or_adopt(). The migration rule has three arms:native-cert.pem+native-key.pemexist → use them (steady state) — keepcert.pem/key.pemthose clients pinned (identity.rs ~L79–94, the arm that logs "native identity: keeping the legacy RSA cert…") — this is the arm to deleteAfter removal, arm 3 collapses into the existing degenerate path just below it (~L95–105): mint the P-256 identity and warn that those clients must re-pair.
Scope — read this before widening it
⚠ The GameStream/Moonlight plane is NOT part of this deprecation and keeps its RSA identity permanently. Moonlight mandates RSA and its pairing hashes bind the certificate's X.509 signature bytes, so that identity cannot move without breaking every Moonlight client forever. Only the native punktfunk/1 plane + management API fallback is dated.
Also unaffected:
Blast radius when the arm goes
Removing it means an un-migrated host mints a new identity, so its native clients' pinned fingerprints stop matching and they must re-pair once. Consumers that follow the identity and should be re-checked:
crates/punktfunk-tray/src/status.rs— loopback pin readsnative-cert.pemcrates/punktfunk-host/src/plugins.rs—RUNNER_SECRET_FILESincludes bothnative-cert.pemandcert.pemsdk/src/config.ts— mgmt CA resolution falls backnative-cert.pem→cert.pemThe
cert.pemfallbacks in those three are for N-1 hosts, not for this arm, so they likely stay. Confirm rather than assume.Tests that pin the current behaviour
In
identity.rs:keeps_legacy_rsa_while_native_pairings_exist()— this one inverts: after the change it should assert the P-256 identity is minted instead.adopts_p256_when_no_client_ever_pinned()— unchanged.mints_p256_when_legacy_files_vanished()— unchanged (becomes the only minting path for a paired host).Definition of done
keeps_legacy_rsa_while_native_pairings_existinverted and renamedrsastays absent from the native-only build (cargo tree -i rsa --no-default-features --features pyrowavefinds nothing)🗓 Deprecationsubsection under The identity split (v0.28.0) updated to point at the release that executed itReferences
CHANGELOG.md→ The identity split — the native planes get their own (P-256) host identity →🗓 Deprecation: the legacy-identity fallback goes away on 1 October 2026docs/releases/v0.28.0.md→ Before you update, and the## For developerssectionℹ️ Note for whoever picks this up: the identity is ECDSA P-256, not Ed25519 — deliberately, because no mainstream browser accepts an Ed25519 server certificate and operators open
/api/docsin one.