From b43f805dadb885e720a527933bc2eccf5822daeb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goire=20D=C3=A9trez?= Date: Tue, 9 Dec 2025 15:47:42 +0100 Subject: [PATCH] Add built-in policies --- src/policy/builtin.rs | 31 ++++++++++++++++ src/policy/mod.rs | 1 + .../sigsum-generic-2025-1.builtin-policy | 22 ++++++++++++ src/policy/sigsum-test-2025-3.builtin-policy | 36 +++++++++++++++++++ src/policy/sigsum-test1-2025.builtin-policy | 12 +++++++ src/policy/sigsum-test2-2025.builtin-policy | 32 +++++++++++++++++ 6 files changed, 134 insertions(+) create mode 100644 src/policy/builtin.rs create mode 100644 src/policy/sigsum-generic-2025-1.builtin-policy create mode 100644 src/policy/sigsum-test-2025-3.builtin-policy create mode 100644 src/policy/sigsum-test1-2025.builtin-policy create mode 100644 src/policy/sigsum-test2-2025.builtin-policy diff --git a/src/policy/builtin.rs b/src/policy/builtin.rs new file mode 100644 index 0000000..ef22c59 --- /dev/null +++ b/src/policy/builtin.rs @@ -0,0 +1,31 @@ +use super::Policy; + +const SIGSUM_TEST1_2025: &str = include_str!("sigsum-test1-2025.builtin-policy"); +const SIGSUM_TEST2_2025: &str = include_str!("sigsum-test2-2025.builtin-policy"); +const SIGSUM_TEST_2025_3: &str = include_str!("sigsum-test-2025-3.builtin-policy"); +const SIGSUM_GENERIC_2025_1: &str = include_str!("sigsum-generic-2025-1.builtin-policy"); + +impl Policy { + pub fn builtin(name: &str) -> Option { + match name { + "sigsum-test1-2025" => Some(Policy::parse(SIGSUM_TEST1_2025).unwrap()), + "sigsum-test2-2025" => Some(Policy::parse(SIGSUM_TEST2_2025).unwrap()), + "sigsum-test-2025-3" => Some(Policy::parse(SIGSUM_TEST_2025_3).unwrap()), + "sigsum-generic-2025-1" => Some(Policy::parse(SIGSUM_GENERIC_2025_1).unwrap()), + _ => None, + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn parse_builtin_policies() { + assert!(Policy::builtin("sigsum-test1-2025").is_some()); + assert!(Policy::builtin("sigsum-test2-2025").is_some()); + assert!(Policy::builtin("sigsum-test-2025-3").is_some()); + assert!(Policy::builtin("sigsum-generic-2025-1").is_some()); + } +} diff --git a/src/policy/mod.rs b/src/policy/mod.rs index e27c63b..633e309 100644 --- a/src/policy/mod.rs +++ b/src/policy/mod.rs @@ -2,6 +2,7 @@ use std::collections::HashMap; use crate::crypto::{Hash, PublicKey}; +mod builtin; mod parsing; pub use parsing::ParsePolicyError; diff --git a/src/policy/sigsum-generic-2025-1.builtin-policy b/src/policy/sigsum-generic-2025-1.builtin-policy new file mode 100644 index 0000000..1ec7d21 --- /dev/null +++ b/src/policy/sigsum-generic-2025-1.builtin-policy @@ -0,0 +1,22 @@ +# This is a Sigsum trust policy that has been vetted by the Sigsum project +# See https://git.glasklar.is/sigsum/project/documentation/-/blob/main/policy-maintenance.md + +# https://git.glasklar.is/glasklar/services/sigsum-logs/-/blob/main/instances/seasalp.md (accessed 2025-12-04) +log 0ec7e16843119b120377a73913ac6acbc2d03d82432e2c36b841b09a95841f25 https://seasalp.glasklar.is + +# https://ginkgo.tlog.mullvad.net/about (accessed 2025-12-04) +log f00c159663d09bbda6131ee1816863b6adcacfe80b0b288000b11aba8fe38314 https://ginkgo.tlog.mullvad.net + +# https://git.glasklar.is/glasklar/services/witnessing/-/blob/main/witness.glasklar.is/about.md (accessed 2025-12-04) +witness witness.glasklar.is b2106db9065ec97f25e09c18839216751a6e26d8ed8b41e485a563d3d1498536 + +# https://witness.mullvad.net/about (accessed 2025-12-04) +witness witness.mullvad.net 15d6d0141543247b74bab3c1076372d9c894f619c376d64b29aa312cc00f61ad + +# https://github.com/tillitis/tillitis.se-tillitis-witness-1/blob/main/about.md (accessed 2025-12-04) +witness tillitis.se/tillitis-witness-1 076be8c9ee7ea60916f0df3608c945d7730082ecb37749dad2c9ed339fea770c + +# Requiring 2 of 3 is intended to give reasonable balance between security and availability. +group quorum-rule 2 witness.glasklar.is witness.mullvad.net tillitis.se/tillitis-witness-1 + +quorum quorum-rule diff --git a/src/policy/sigsum-test-2025-3.builtin-policy b/src/policy/sigsum-test-2025-3.builtin-policy new file mode 100644 index 0000000..3f3ccaa --- /dev/null +++ b/src/policy/sigsum-test-2025-3.builtin-policy @@ -0,0 +1,36 @@ +# Policy using two sigsum test logs at test.sigsum.org/barreleye and serviceberry.tlog.stagemole.eu + +log 4644af2abd40f4895a003bca350f9d5912ab301a49c77f13e5b6d905c20a5fe6 https://test.sigsum.org/barreleye +log 47e481606d8acba747a6b053d6c2d191605fb122175d410a1202a91430abce39 https://serviceberry.tlog.stagemole.eu + +# Test witness operated by Niels Möller running on a Glasklar Teknik server +witness poc.sigsum.org/nisse 1c25f8a44c635457e2e391d1efbca7d4c2951a0aef06225a881e46b98962ac6c + +# Test witness operated by Rasmus Dahlberg - https://www.rgdd.se/poc-witness/about +witness rgdd.se/poc-witness 28c92a5a3a054d317c86fc2eeb6a7ab2054d6217100d0be67ded5b74323c5806 + +# Test witness operated by Elias Rudberg - https://witness1.smartit.nu/witness1/about.txt +witness witness1.smartit.nu/witness1 f4855a0f46e8a3e23bb40faf260ee57ab8a18249fa402f2ca2d28a60e1a3130e + +# Staging witness operated by Filippo Valsorda - https://navigli.sunlight.geomys.org/ +witness witness.navigli.sunlight.geomys.org dcbf728e02d479f5a7e20dc09adf525833ed6e797526517aeb07fc6854849fc6 + +# Test witness operated by Florian Larysch - https://remora.n621.de/ +witness remora.n621.de ebcdeb78e7fdb2ef9227b2c1ef11e94600b55b4d6d9a57877e31ee89e59adc36 + +# Test witness operated by Mullvad VPN AB - https://witness.stagemole.eu/about +witness witness.stagemole.eu 4a921b7caef58ae670cdc11ef4184f1c058f7b9259a9107a969f69fa54aa496f + +# Test witness operated by Tillitis AB - new key since October 2025 +witness tillitis.se/test-witness-1 636582aec12f32c18a21733db9e3f718058ee7aaec6dbe4eb81781e0f4300c6e + +# Test witness operated by Google TrustFabric team - https://transparency.dev/witnesses/ +witness transparency.dev/DEV:witness-little-garden 2b6eb0ec483503544cde4e8fc1ce6d1921db21dffccc186865f808f7625443cc + +# Group of 3 witnesses that are all run by Glasklar employees +group glasklar-test-witnesses 2 poc.sigsum.org/nisse rgdd.se/poc-witness witness1.smartit.nu/witness1 + +# Requiring 4 of 6 is intended to give reasonable reliability. +group quorum-rule 4 glasklar-test-witnesses witness.navigli.sunlight.geomys.org remora.n621.de witness.stagemole.eu tillitis.se/test-witness-1 transparency.dev/DEV:witness-little-garden + +quorum quorum-rule diff --git a/src/policy/sigsum-test1-2025.builtin-policy b/src/policy/sigsum-test1-2025.builtin-policy new file mode 100644 index 0000000..42b8226 --- /dev/null +++ b/src/policy/sigsum-test1-2025.builtin-policy @@ -0,0 +1,12 @@ +# Policy using the sigsum test log at test.sigsum.org/barreleye + +log 4644af2abd40f4895a003bca350f9d5912ab301a49c77f13e5b6d905c20a5fe6 https://test.sigsum.org/barreleye + +witness poc.sigsum.org/nisse 1c25f8a44c635457e2e391d1efbca7d4c2951a0aef06225a881e46b98962ac6c +witness rgdd.se/poc-witness 28c92a5a3a054d317c86fc2eeb6a7ab2054d6217100d0be67ded5b74323c5806 +witness witness1.smartit.nu/witness1 f4855a0f46e8a3e23bb40faf260ee57ab8a18249fa402f2ca2d28a60e1a3130e + +# Requiring 2 of 3 is intended to give reasonable reliability. +group quorum-rule 2 poc.sigsum.org/nisse rgdd.se/poc-witness witness1.smartit.nu/witness1 + +quorum quorum-rule diff --git a/src/policy/sigsum-test2-2025.builtin-policy b/src/policy/sigsum-test2-2025.builtin-policy new file mode 100644 index 0000000..2c0e0ee --- /dev/null +++ b/src/policy/sigsum-test2-2025.builtin-policy @@ -0,0 +1,32 @@ +# Policy using the sigsum test log at test.sigsum.org/barreleye + +log 4644af2abd40f4895a003bca350f9d5912ab301a49c77f13e5b6d905c20a5fe6 https://test.sigsum.org/barreleye + +# Test witness operated by Niels Möller running on a Glasklar Teknik server +witness poc.sigsum.org/nisse 1c25f8a44c635457e2e391d1efbca7d4c2951a0aef06225a881e46b98962ac6c + +# Test witness operated by Rasmus Dahlberg +witness rgdd.se/poc-witness 28c92a5a3a054d317c86fc2eeb6a7ab2054d6217100d0be67ded5b74323c5806 + +# Test witness operated by Elias Rudberg +witness witness1.smartit.nu/witness1 f4855a0f46e8a3e23bb40faf260ee57ab8a18249fa402f2ca2d28a60e1a3130e + +# Test witness operated by Filippo Valsorda +witness navigli.sunlight.geomys.org/dev b20196b937a30d19f0cb7dfa2d5388bc8ddde9cc3df4c24fcf63db27a573d3f2 + +# See about page: https://remora.n621.de/ +witness remora.n621.de ebcdeb78e7fdb2ef9227b2c1ef11e94600b55b4d6d9a57877e31ee89e59adc36 + +# Test witness operated by Grégoire Détrez +witness witness.stagemole.eu 4a921b7caef58ae670cdc11ef4184f1c058f7b9259a9107a969f69fa54aa496f + +# Test witness operated by Tillitis AB +witness tillitis.se/test-witness-1 5c35281928e9da396beede5f22a2251a589e6ac6de52a4de85de8634ffccaf6d + +# Group of 3 witnesses that are all run by Glasklar employees +group glasklar-test-witnesses 2 poc.sigsum.org/nisse rgdd.se/poc-witness witness1.smartit.nu/witness1 + +# Requiring 4 of 5 is intended to give reasonable reliability. +group quorum-rule 4 glasklar-test-witnesses navigli.sunlight.geomys.org/dev remora.n621.de witness.stagemole.eu tillitis.se/test-witness-1 + +quorum quorum-rule