diff --git a/Packages/InspectCore/Sources/Core/KnownCTLogs.swift b/Packages/InspectCore/Sources/Core/KnownCTLogs.swift index 3f38ba9..98ee5fd 100644 --- a/Packages/InspectCore/Sources/Core/KnownCTLogs.swift +++ b/Packages/InspectCore/Sources/Core/KnownCTLogs.swift @@ -13,7 +13,7 @@ enum KnownCTLogs { } // Log ID (SHA-256 of log's public key) → human-readable name - // Last updated: 2026-03-20 + // Last updated: 2026-03-31 static let knownLogs: [String: String] = [ // Google "0E5794BCF3AEA93E331B2C9907B3F790DF9BC23D713225DD21A925AC61C54E21": "Google 'Argon2026h1'", @@ -54,16 +54,37 @@ enum KnownCTLogs { // Let's Encrypt "1986D4C728AA6FFEBA036F782A4D0191AACE2D72310FAECE5D70412D254CC7D4": "Let's Encrypt 'Oak2026h1'", "ACAB30706CEBEC8431F413D2F4915F111E422443B1F2A68C4F3C2B3BA71E02C3": "Let's Encrypt 'Oak2026h2'", + "A5C978925D57461782870DD889660B5C55648B7D0040F2EC076851D1886919F7": "Let's Encrypt 'Sycamore2026h1'", + "6CFE501943A85EA916BC52D133E4DCC91EF1411C7D258420D173809E1818EB3A": "Let's Encrypt 'Sycamore2026h2'", + "8ECA470BACDE6AF3A206B0A47A84B746FE1FC6BF953E25E69B4EE40248F3C6E8": "Let's Encrypt 'Sycamore2027h1'", + "E5E36247D92EF4ADA38583B53591DB729FC2F00AE4B6745174D3DDFC6AA25388": "Let's Encrypt 'Sycamore2027h2'", + "E3238DF28DA288E0AAE0ACF0FA90C985F0B6BFF5D2A527B001FC1C4458C4B6E8": "Let's Encrypt 'Willow2026h1'", + "A826CBE30AC6351246533FE065F14F19D96E190813C41DD96D7900B3123C5527": "Let's Encrypt 'Willow2026h2'", + "A2810018734E176E1D47E09540F381BA546697CD63A84350716EB8094EDAF10D": "Let's Encrypt 'Willow2027h1'", + "A695A2AD926D6F996E8EFC49014257D8BBF046A7D62589B88DC2D7876C78E52F": "Let's Encrypt 'Willow2027h2'", // TrustAsia "74DB9D58F7D47E9DFD787A162A991C18CF698DA7C729918C9A18B0450DBA44BC": "TrustAsia 'log2026a'", "25B7EFDEA1130193ED93079770AA322A26620DE35AC8AA7C75197DE0B1A9E065": "TrustAsia 'log2026b'", "EDDAEB815C63213449B47BE5077905ABD0D93147C27AC5146B3BC58E43E9B6C7": "TrustAsia 'HETU2027'", + "573448CC6E1D2C0DC94B69F287D1EFE483C7A25C50C5320BBB3ADEA76F6EB041": "TrustAsia Luoshu2027", // Geomys "2ED6A44DEB8F0C864667769C4EDD041F84236755FA3AACA634D0935DFCD59A70": "Bogus placeholder log to unbreak misbehaving CT libraries", + "717E95F3C2388A6DB1E384493D31E15AA96208762D4200E0050CD067B5A661E2": "Geomys 'Tuscolo2026h1'", + "46AF863D3B3EE59FA577DEA8245D36B0D9ED22A223F4617741229452EE95505F": "Geomys 'Tuscolo2026h2'", + "596E6C338694B25972A256C8A0E8DD904A76E8083DDA873B01083828143CEE59": "Geomys 'Tuscolo2027h1'", + "D5DE55EEBA08B60C9FFC18C513BE6A60BA004606BC595B96BB44F62CC57D39FA": "Geomys 'Tuscolo2027h2'", // IPng Networks "D2FC652FA5F9B738B83755FA5EB15F0B45253F4E8FA3B9B64FD4DE5662D18708": "Bogus RFC6962 log to avoid breaking misbehaving CT libraries", + "7F3D37E7F8923D8E7165BEB0D3EABEE72A22BE46C0CB84C416D4E4B98264CBC2": "IPng Networks 'Halloumi2026h1'", + "26E3646E58692123BC343F4724359B3792CD245A88D815D39333FD9918AB4723": "IPng Networks 'Halloumi2026h2a'", + "44E822FC2BAB0E92EED0E9FAD69664602776D01760E0890509C923A1B03FC37F": "IPng Networks 'Halloumi2027h1'", + "09157F632D46C7F76D95265493BC0F00B395AC5DB3A2B26BFB043DBA4AC63893": "IPng Networks 'Halloumi2027h2'", + "1A8B9D694A5798C899A0CA88BDF48FC0B45660CCC3600D1F71F469FFC7D1ACA3": "IPng Networks 'Gouda2026h1'", + "1A8B9D6B0FFEBF81B47939C6D2310A86D6D102D4F046E2182C9DE35F5E2625EF": "IPng Networks 'Gouda2026h2'", + "1A8B9D6B8DD791D1CD0549EDB60355D606B64FAD30DB71FE788F0FC7C8FBC4B1": "IPng Networks 'Gouda2027h1'", + "1A8B9D695362D86492A7B9E223606E34ECE9E310BA34FB9305785D29CE5757EB": "IPng Networks 'Gouda2027h2'", ] } diff --git a/scripts/update_ct_logs.py b/scripts/update_ct_logs.py index 41bd75f..ac96c54 100755 --- a/scripts/update_ct_logs.py +++ b/scripts/update_ct_logs.py @@ -20,7 +20,8 @@ def build_entries(data): entries = [] for op in data.get("operators", []): op_name = op["name"] - for log in op.get("logs", []): + all_logs = op.get("logs", []) + op.get("tiled_logs", []) + for log in all_logs: log_id_b64 = log["log_id"] log_id_hex = base64.b64decode(log_id_b64).hex().upper() description = log.get("description", "")