From 2a5e6e8462acc81a9a7a567763526fbc0f6b678d Mon Sep 17 00:00:00 2001 From: senseix21 Date: Mon, 18 May 2026 16:09:11 +0600 Subject: [PATCH 1/9] =?UTF-8?q?wallpaper:=20signed=20nonos=5Fid=5Fcert=20f?= =?UTF-8?q?or=20kernel=20mirror=20embed=20=E2=80=94=20nonos-data/trust/cap?= =?UTF-8?q?sules/wallpaper.nonos=5Fid=5Fcert.bin=20[1.2]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../trust/capsules/wallpaper.nonos_id_cert.bin | Bin 0 -> 5532 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 nonos-data/trust/capsules/wallpaper.nonos_id_cert.bin diff --git a/nonos-data/trust/capsules/wallpaper.nonos_id_cert.bin b/nonos-data/trust/capsules/wallpaper.nonos_id_cert.bin new file mode 100644 index 0000000000000000000000000000000000000000..995ac2f820a8dc0a5aad2b48366da8654c949922 GIT binary patch literal 5532 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 Date: Mon, 18 May 2026 16:09:11 +0600 Subject: [PATCH 2/9] =?UTF-8?q?wallpaper:=20signed=20manifest=20for=20kern?= =?UTF-8?q?el=20mirror=20embed=20=E2=80=94=20nonos-data/trust/capsules/wal?= =?UTF-8?q?lpaper.manifest.bin=20[1.2]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nonos-data/trust/capsules/wallpaper.manifest.bin | Bin 0 -> 3594 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 nonos-data/trust/capsules/wallpaper.manifest.bin diff --git a/nonos-data/trust/capsules/wallpaper.manifest.bin b/nonos-data/trust/capsules/wallpaper.manifest.bin new file mode 100644 index 0000000000000000000000000000000000000000..31cb54973c59dc2d1321634323e96b0a41ac0514 GIT binary patch literal 3594 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 Q00000000052@D${B}r7>)&Kwi literal 0 HcmV?d00001 From faa84468b28e49b71ac5e9f20024664e77c0920a Mon Sep 17 00:00:00 2001 From: senseix21 Date: Mon, 18 May 2026 16:09:11 +0600 Subject: [PATCH 3/9] =?UTF-8?q?wallpaper:=20publisher=20ed25519=20trust=20?= =?UTF-8?q?key=20=E2=80=94=20nonos-data/trust/keys/wallpaper=5Fpublisher?= =?UTF-8?q?=5Fed25519.pub=20[1.2]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../trust/keys/wallpaper_publisher_ed25519.pub | Bin 0 -> 43 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 nonos-data/trust/keys/wallpaper_publisher_ed25519.pub diff --git a/nonos-data/trust/keys/wallpaper_publisher_ed25519.pub b/nonos-data/trust/keys/wallpaper_publisher_ed25519.pub new file mode 100644 index 0000000000000000000000000000000000000000..b17fa17e3f9a78c62cd947e5252fa60c65a393c6 GIT binary patch literal 43 zcmV+`0M!3ZPfkx$P)jiZ03dayJdbP)Hl9OG@Vj})yP-PpxVWg79-x_h&#S)`2N7)I B5|{u0 literal 0 HcmV?d00001 From 654130fd7749ba30a4cf33a061fdb7c71030b6ad Mon Sep 17 00:00:00 2001 From: senseix21 Date: Mon, 18 May 2026 16:09:11 +0600 Subject: [PATCH 4/9] =?UTF-8?q?wallpaper:=20publisher=20mldsa65=20trust=20?= =?UTF-8?q?key=20=E2=80=94=20nonos-data/trust/keys/wallpaper=5Fpublisher?= =?UTF-8?q?=5Fmldsa65.pub=20[1.2]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../trust/keys/wallpaper_publisher_mldsa65.pub | Bin 0 -> 1963 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 nonos-data/trust/keys/wallpaper_publisher_mldsa65.pub diff --git a/nonos-data/trust/keys/wallpaper_publisher_mldsa65.pub b/nonos-data/trust/keys/wallpaper_publisher_mldsa65.pub new file mode 100644 index 0000000000000000000000000000000000000000..8163e83685c68d658192ae5243d6d053e0a04afb GIT binary patch literal 1963 zcmV;c2UPe@Pfkx$P)jib2cWK-*t(nTN~)?yM+^)h1WzA42n+DEbB85dU(AFY@to8P z%OCsO5d2&?d0`42LyR-TSA0ky1XXov2hrLWiww0tas^Uzl^%1^0&9HBhAV%T9LMgq zBKLi6tQ3!UR5w8n;UP4!h{Y1; zCQz~|;Oqf3Xfk7+?lH&~R|jbO9h|WEM!V`M$t4DrGdv`s%gMXHJ-lJ5# z6S2t$?s|-S2fmN!&CnY03$_d`VvLlX*CMMj4bzk!i80D#+{^GBQaLLNr*S&oi)?GC zM32tR*;1x7G3n&SSRPuG?C|z)+!)^^d=w$K#>#D)Q|F~jB_yyYGeE>av}WbfW~fXg zTf7Vv>q{hZh<)FUoFEM2^#v5DDrl)=sCUHitey<;z9ty`-ohx!f1 zfb~3RYw_KS+jCJv`9(c%l8#}K2{UsD;r9{r7G z&Wq0BJE5kAFgn|9#y1pg$KfCin+0Bqq@(duFTY-l%O(T&E4;9opverH(@zufU(t=& zIXLt7Ipa<7D#Nrc`ke1i)Kqet#N$j#NMdEiv|-5_<%8Us{zOAwJkyP+4r$#97ARZ} z8K>#NURS-rJ$5g^5afR{ckI&C1PtywACupWLq2FKfvooaKVy19CWdWmPH=98MlXQY z&u<8awodKYv!-&;VuKlHpcuXq!m?{{Dc#z@FX&`X19~z%>!7!ufSt!=`88Ccq$mo8 zuu|<}+cHVPo)!1zd-xttB7^`ueibihBL`+?;!CQp=x;!U$aicdYbPxmQ5++Ywho8Q zDMhpluDUe|+?keuQfXK%`_0QaCGlnbPaGAd(xr{s$g&)MxXE?a>0jsF_H5e}TCMen z1wnBqFC%Sc-2KmfKE0+B(Zp*C>GIS1(Upg6g>QdpQ?JhDHuFn#m#S(5EMNZo5MHc{ z@03T{0!`eL3Ox^TTks&0wum7?SYDbJM^BVqP8fN`ZXJeKFBxpX+mA*uVp1lKwvtK@ zi5%!^E7M6;T^Ut3Wd4O{(+KCZ978bnJZvb5TP=&Hz<9{u zky<6u#v`w?BNUx4HGqSUs z9u#Hfo@z9 Date: Mon, 18 May 2026 16:09:11 +0600 Subject: [PATCH 5/9] =?UTF-8?q?wallpaper:=20embed=20signed=20cert+manifest?= =?UTF-8?q?=20(mirror=20desktop=5Fshell)=20=E2=80=94=20src/userspace/capsu?= =?UTF-8?q?le=5Fwallpaper/embed.rs=20[1.2]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/userspace/capsule_wallpaper/embed.rs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/userspace/capsule_wallpaper/embed.rs b/src/userspace/capsule_wallpaper/embed.rs index 672a01c4a..d1cf9f510 100644 --- a/src/userspace/capsule_wallpaper/embed.rs +++ b/src/userspace/capsule_wallpaper/embed.rs @@ -14,16 +14,26 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . -// Compile-time embed of the userland wallpaper binary. The -// userland crate must be built first (`make nonos-mk-wallpaper`) -// or the kernel build with `nonos-capsule-wallpaper` will fail -// at this `include_bytes!` with a clear file-not-found. #[cfg(feature = "nonos-capsule-wallpaper")] pub(crate) const WALLPAPER_ELF: &[u8] = include_bytes!( "../../../userland/capsule_wallpaper/target/x86_64-nonos-user/release/wallpaper" ); +#[cfg(feature = "nonos-capsule-wallpaper")] +pub(crate) const WALLPAPER_NONOS_ID_CERT_BYTES: &[u8] = + include_bytes!("../../../nonos-data/trust/capsules/wallpaper.nonos_id_cert.bin"); + +#[cfg(feature = "nonos-capsule-wallpaper")] +pub(crate) const WALLPAPER_MANIFEST_BYTES: &[u8] = + include_bytes!("../../../nonos-data/trust/capsules/wallpaper.manifest.bin"); + #[cfg(not(feature = "nonos-capsule-wallpaper"))] pub(crate) const WALLPAPER_ELF: &[u8] = &[]; +#[cfg(not(feature = "nonos-capsule-wallpaper"))] +pub(crate) const WALLPAPER_NONOS_ID_CERT_BYTES: &[u8] = &[]; + +#[cfg(not(feature = "nonos-capsule-wallpaper"))] +pub(crate) const WALLPAPER_MANIFEST_BYTES: &[u8] = &[]; + pub(crate) const WALLPAPER_PATH: &str = "/capsules/wallpaper"; From 254740954a2ac58f38310fe407db0adc8cc750cc Mon Sep 17 00:00:00 2001 From: senseix21 Date: Mon, 18 May 2026 16:09:36 +0600 Subject: [PATCH 6/9] =?UTF-8?q?wallpaper:=20CapsuleState=20shared=5Fstate?= =?UTF-8?q?=20(mirror=20desktop=5Fshell)=20=E2=80=94=20src/userspace/capsu?= =?UTF-8?q?le=5Fwallpaper/state.rs=20[1.2]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/userspace/capsule_wallpaper/state.rs | 27 ++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/userspace/capsule_wallpaper/state.rs diff --git a/src/userspace/capsule_wallpaper/state.rs b/src/userspace/capsule_wallpaper/state.rs new file mode 100644 index 000000000..f18bb639b --- /dev/null +++ b/src/userspace/capsule_wallpaper/state.rs @@ -0,0 +1,27 @@ +// NONOS Operating System +// Copyright (C) 2026 NONOS Contributors +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +use crate::services::lifecycle::CapsuleState; + +static STATE: CapsuleState = CapsuleState::new(); + +pub(super) fn set_alive(pid: u32) { + STATE.set_alive(pid); +} + +pub fn shared_state() -> &'static CapsuleState { + &STATE +} From 5e1159682dd916dc0b6a9f3cd5ad7fad749fb8c0 Mon Sep 17 00:00:00 2001 From: senseix21 Date: Mon, 18 May 2026 16:09:36 +0600 Subject: [PATCH 7/9] =?UTF-8?q?wallpaper:=20signed=20CapsuleSpecVerified?= =?UTF-8?q?=20+=20spawn=5Fverified,=20drop=20unsigned=20spawn=20path=20?= =?UTF-8?q?=E2=80=94=20src/userspace/capsule=5Fwallpaper/spawn.rs=20[1.2]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/userspace/capsule_wallpaper/spawn.rs | 65 ++++++++++-------------- 1 file changed, 27 insertions(+), 38 deletions(-) diff --git a/src/userspace/capsule_wallpaper/spawn.rs b/src/userspace/capsule_wallpaper/spawn.rs index 5f4072b91..a1c38a2ab 100644 --- a/src/userspace/capsule_wallpaper/spawn.rs +++ b/src/userspace/capsule_wallpaper/spawn.rs @@ -14,55 +14,44 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . -use crate::kernel_core::process_spawn::capsule_spawn::SpawnError; - -#[cfg(not(feature = "nonos-production"))] -use super::embed::WALLPAPER_ELF; -#[cfg(not(feature = "nonos-production"))] +use super::embed::{WALLPAPER_ELF, WALLPAPER_MANIFEST_BYTES, WALLPAPER_NONOS_ID_CERT_BYTES}; +use super::state; use crate::capabilities::Capability; -#[cfg(not(feature = "nonos-production"))] -use crate::kernel_core::process_spawn::capsule_spawn::{self, CapsuleSpec}; +use crate::kernel_core::process_spawn::capsule_spawn::{self, CapsuleSpecVerified}; +use crate::security::nonos_id_cert::IdCertVerifyError; +use crate::security::nonos_trust_anchor::{ + decode as decode_trust_anchor, BAKED_TRUST_ANCHOR_POLICY, +}; -#[cfg(not(feature = "nonos-production"))] -const SERVICE_NAME: &str = "display"; -#[cfg(not(feature = "nonos-production"))] -const SERVICE_PORT: u32 = 4300; -#[cfg(not(feature = "nonos-production"))] -const REPLY_INBOX: &str = "endpoint.display.reply"; -#[cfg(not(feature = "nonos-production"))] -const REPLY_PORT: u32 = 4301; +pub use crate::kernel_core::process_spawn::capsule_spawn::SpawnError; -#[cfg(feature = "nonos-production")] -pub fn spawn_wallpaper_capsule() -> Result<(), SpawnError> { - Err(SpawnError::FeatureDisabled) -} +const SERVICE_NAME: &str = "wallpaper"; +const SERVICE_PORT: u32 = 4340; +const REPLY_INBOX: &str = "endpoint.wallpaper.reply"; +const REPLY_PORT: u32 = 4341; +const TARGET_TRIPLE: &str = "x86_64-nonos-user"; -#[cfg(not(feature = "nonos-production"))] pub fn spawn_wallpaper_capsule() -> Result<(), SpawnError> { - if WALLPAPER_ELF.is_empty() { - return Err(SpawnError::FeatureDisabled); - } - let mut caps_bits = 0u64; - for cap in [ - Capability::CoreExec, - Capability::Memory, - Capability::Debug, - Capability::GraphicsDisplayQuery, - Capability::GraphicsSurfaceCreate, - Capability::GraphicsSurfaceMap, - Capability::GraphicsPresent, - ] { - caps_bits |= cap.bit(); - } - let spec = CapsuleSpec { + let trust_anchor = decode_trust_anchor(BAKED_TRUST_ANCHOR_POLICY) + .map_err(|_| SpawnError::NonosIdCertRejected(IdCertVerifyError::TrustAnchorPolicy))?; + let spec = CapsuleSpecVerified { name: SERVICE_NAME, service_port: SERVICE_PORT, reply_inbox: REPLY_INBOX, reply_port: REPLY_PORT, elf: WALLPAPER_ELF, - caps_bits, + nonos_id_cert_bytes: WALLPAPER_NONOS_ID_CERT_BYTES, + manifest_bytes: WALLPAPER_MANIFEST_BYTES, + target_triple: TARGET_TRIPLE, + requested_caps: Capability::CoreExec.bit() + | Capability::IPC.bit() + | Capability::Memory.bit() + | Capability::Debug.bit() + | Capability::GraphicsDisplayQuery.bit() + | Capability::GraphicsSurfaceCreate.bit(), debug_tag: b"[WALLPAPER-DEBUG] load_elf_executable error:", }; - let _ = capsule_spawn::spawn(&spec)?; + let pid = capsule_spawn::spawn_verified(&spec, &trust_anchor, None)?; + state::set_alive(pid); Ok(()) } From 41f7e42a7660956a090fe440619fa057d9a57631 Mon Sep 17 00:00:00 2001 From: senseix21 Date: Mon, 18 May 2026 16:09:36 +0600 Subject: [PATCH 8/9] =?UTF-8?q?wallpaper:=20export=20shared=5Fstate=20?= =?UTF-8?q?=E2=80=94=20src/userspace/capsule=5Fwallpaper/mod.rs=20[1.2]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/userspace/capsule_wallpaper/mod.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/userspace/capsule_wallpaper/mod.rs b/src/userspace/capsule_wallpaper/mod.rs index 0cbb58f32..3e9e583de 100644 --- a/src/userspace/capsule_wallpaper/mod.rs +++ b/src/userspace/capsule_wallpaper/mod.rs @@ -28,7 +28,9 @@ mod embed; mod launch; mod seed; mod spawn; +mod state; pub use launch::launch; pub use seed::seed; pub use spawn::spawn_wallpaper_capsule; +pub use state::shared_state; From aec10b5eb0653e7249a77dda1980fff18f5c598e Mon Sep 17 00:00:00 2001 From: senseix21 Date: Mon, 18 May 2026 16:09:36 +0600 Subject: [PATCH 9/9] =?UTF-8?q?wallpaper:=20boot()=20signed-resident=20wir?= =?UTF-8?q?ing=20(shared=5Fstate,=20fixes=20Option=20mismatch)=20?= =?UTF-8?q?=E2=80=94=20src/userspace/init/entry.rs=20[1.2]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/userspace/init/entry.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/userspace/init/entry.rs b/src/userspace/init/entry.rs index 813ce7f37..b94b5a1e9 100644 --- a/src/userspace/init/entry.rs +++ b/src/userspace/init/entry.rs @@ -407,10 +407,10 @@ fn spawn_process_manager_capsule() { fn spawn_wallpaper_capsule() { use crate::userspace::capsule_wallpaper; super::capsule_boot::boot( - "DISPLAY", - "display", + "WALLPAPER", + "wallpaper", capsule_wallpaper::spawn_wallpaper_capsule, - || Some("display"), + capsule_wallpaper::shared_state, ); }