Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
410 commits
Select commit Hold shift + click to select a range
064fefd
test(agent-identity-httpsig): mark where each expected value comes from
CBenoit Oct 21, 2026
841dcf6
test(agent-identity-httpsig): check a failed channel opening never re…
CBenoit Oct 21, 2026
b852384
test(agent-identity-httpsig): cite the vector pass rule and the expir…
CBenoit Oct 21, 2026
0434f37
test(agent-identity-httpsig): open the channel path for URLs with sev…
CBenoit Oct 21, 2026
d50abfa
test(agent-identity-httpsig): cite the channel URL slash rule
CBenoit Oct 21, 2026
27f26e3
docs(agent-identity): audit each rotation completion exactly once
CBenoit Oct 21, 2026
cc08b9b
docs(agent-identity): treat an undecodable first message as no Hello
CBenoit Oct 21, 2026
8e9b1f9
docs(agent-identity): give every contract section a stable anchor
CBenoit Oct 21, 2026
79f73a8
docs(agent-identity): close a stream on an undecodable message
CBenoit Oct 21, 2026
9625b49
test(agent-identity-mock): treat an undecodable first channel message…
CBenoit Oct 21, 2026
a10f220
fix(agent-identity-mock): close a stream on an undecodable message wi…
CBenoit Oct 21, 2026
12599a7
chore(deps): point the lock file at webpki-roots 1.0.10
CBenoit Oct 21, 2026
589b738
docs(agent-identity): bound channel envelopes at 64 KiB
CBenoit Oct 21, 2026
3665c2b
docs(agent-identity): keep every config within one channel envelope
CBenoit Oct 21, 2026
d8fc9dc
docs(agent-identity): drop the redundant prefix from contract anchors
CBenoit Oct 21, 2026
98ed6ec
docs(agent-identity-conformance): state the per-authority harness rules
CBenoit Oct 21, 2026
87f8f9c
docs(agent-identity): say the renewal anchor's load time is not persi…
CBenoit Oct 21, 2026
e3f0ae1
docs(agent-identity): keep DVLS configs within the channel limit
CBenoit Oct 21, 2026
613feec
refactor(agent-identity): name the trust stop after stored identities
CBenoit Oct 21, 2026
3d93ea1
fix(agent): stop identity while an identity.json is untrusted
CBenoit Oct 21, 2026
5ef2394
refactor(agent-identity): drop the untrusted identity file fallbacks
CBenoit Oct 21, 2026
88177ba
perf(agent): check identity.json without opening it for its data
CBenoit Oct 21, 2026
9535739
test(agent-identity): mark the oracles of the authority directory tests
CBenoit Oct 21, 2026
cc5b70d
feat(agent-identity-mock): bound channel envelopes and configs at 64 KiB
CBenoit Oct 21, 2026
b16d110
docs(agent-identity): refuse oversize settings and retry blocked enro…
CBenoit Oct 21, 2026
996bbfe
test(agent-identity-conformance): run checks on fitting authorities
CBenoit Oct 21, 2026
390ce41
test(agent-identity-conformance): decide expiry by the certificates
CBenoit Oct 21, 2026
31788ad
test(agent-identity-conformance): tie expiry checks to the observed leaf
CBenoit Oct 21, 2026
19f48cc
test(agent-identity-conformance): skip continuity checks on short leaves
CBenoit Oct 21, 2026
0e1ad24
docs(agent-identity-conformance): keep authority secrets out of descr…
CBenoit Oct 21, 2026
9fafef2
test(device-key): drop checks that only checked themselves
CBenoit Oct 21, 2026
b34d86e
test(device-key): assert what the governing documents decide
CBenoit Oct 21, 2026
115b4dd
test(device-key): drop the no-trace check from the invalid-name test
CBenoit Oct 21, 2026
c131c01
test(device-key): cover operations the intent decides but no test rea…
CBenoit Oct 21, 2026
f9b954a
test(device-key): mark where each test's expected values come from
CBenoit Oct 21, 2026
954dece
test(device-key): restore leftover recognition for the longest key name
CBenoit Oct 21, 2026
a93add6
test(device-key): check the key descriptor's meaning rather than its …
CBenoit Oct 21, 2026
a5f28ed
test(device-key): drop the minimum-wait checks from the key-directory…
CBenoit Oct 21, 2026
866df8b
test(device-key): mark the remaining tests and assertions
CBenoit Oct 21, 2026
10ebb3c
docs(device-key): state the file backend's directory rules and cleanu…
CBenoit Oct 21, 2026
b513266
test(agent-identity-conformance): check undecodable and oversized cha…
CBenoit Oct 21, 2026
934c41b
docs(device-key): scope cleanup to the crate's naming scheme
CBenoit Oct 21, 2026
54711d8
test(device-key): ground directory and cleanup tests in the intent
CBenoit Oct 21, 2026
3647d35
test(device-key): keep the uppercase temporary name distinct
CBenoit Oct 21, 2026
b4cd351
test(device-key): check that files outside the naming scheme survive
CBenoit Oct 21, 2026
eec947e
docs(device-key): never block or read without bound on unexpected ent…
CBenoit Oct 21, 2026
d0c18f6
test(agent-channel-client): drop checks that guard nothing
CBenoit Oct 21, 2026
c1b7a26
test(agent-channel-client): pin closing, handshake and timing rules
CBenoit Oct 21, 2026
be4583e
test(agent-channel-client): cover rules no test exercised
CBenoit Oct 21, 2026
6481cb4
test(agent-channel-client): mark where each expected value comes from
CBenoit Oct 21, 2026
fd05d37
test(agent-channel-client): accept an envelope of the contract's size
CBenoit Oct 21, 2026
46a78fb
test(agent-channel-client): give the opening timeout test room
CBenoit Oct 21, 2026
18592a5
test(agent-channel-client): mark the unsupported proxy scheme test
CBenoit Oct 21, 2026
b60f5e0
docs(agent-identity): never bypass a configured proxy
CBenoit Oct 21, 2026
a1b2971
docs(agent-channel-client): close on a server message it cannot trust
CBenoit Oct 21, 2026
dcebf27
fix(agent-channel-client): close on a server message it can't trust
CBenoit Oct 21, 2026
ca83e91
docs(agent-channel-client): ignore only well-identified messages befo…
CBenoit Oct 21, 2026
1552a86
docs(agent-identity): say what clears the DVLS config-size warning
CBenoit Oct 21, 2026
9c58ba5
fix(device-key): keep unexpected key-store entries from blocking or v…
CBenoit Oct 21, 2026
7ed8621
docs(device-key): bound the size of a key file the file backend reads
CBenoit Oct 21, 2026
270def2
docs(agent-identity): state temporary cleanup and Windows replace ret…
CBenoit Oct 21, 2026
54102dd
docs(agent-identity): let revocation win over expiry before Hello
CBenoit Oct 21, 2026
a336eb3
docs(agent-identity-mock): state scoped app keys and what reset keeps
CBenoit Oct 21, 2026
6bb3854
docs(agent-identity): connect directly under Windows proxy auto-confi…
CBenoit Oct 22, 2026
e486c7d
docs(agent-installer): state when the MSI enrolls and how failures be…
CBenoit Oct 22, 2026
cfd73c2
docs(agent): state the key-backend-unavailable system event
CBenoit Oct 22, 2026
03f7654
docs(agent-identity-conformance): fault-injection tests are N/A on DVLS
CBenoit Oct 22, 2026
569316e
docs(device-key): list and delete keys that break the access rule
CBenoit Oct 22, 2026
64158ac
ci: restore fail-fast for the tests matrix
CBenoit Oct 22, 2026
b2900d9
docs(agent): say when an agent notices the channel back on
CBenoit Oct 22, 2026
8ad0b72
test(agent-identity): cite contract anchors in channel and signer mar…
CBenoit Oct 22, 2026
950eb7c
test(agent-installer): mark the oracles of the Agent Identity tests
CBenoit Oct 22, 2026
63e93fd
test(agent-identity): mark the source of each test's expected value
CBenoit Oct 21, 2026
2ed5858
test(agent-identity): compare the token hash and CSR algorithm with o…
CBenoit Oct 21, 2026
ceffe55
test(agent-identity): cover the gaps mutation testing found in identi…
CBenoit Oct 21, 2026
8949251
test(agent-identity): name the change type of the stored-format test
CBenoit Oct 21, 2026
ab6cf81
test(agent-identity): mark the temporary-file and replace-retry tests
CBenoit Oct 22, 2026
180673e
test(agent-identity): check an overflowing Retry-After against the 1 …
CBenoit Oct 22, 2026
747f2d8
test(agent): mark the oracle sources of Agent Identity tests
CBenoit Oct 22, 2026
06867d5
test(device-key): refuse a key file another account owns, as root
CBenoit Oct 22, 2026
8627d4d
ci: run the root-only device-key tests as root
CBenoit Oct 22, 2026
f99755d
test(agent-identity-conformance): mark test oracles
CBenoit Oct 22, 2026
6212b6c
test(agent-identity-mock): mark where each expected value comes from
CBenoit Oct 21, 2026
804490d
test(agent-identity-mock): require 500 for an enrollment whose config…
CBenoit Oct 21, 2026
0b7456c
test(agent-identity-mock): cover rules no test exercised
CBenoit Oct 21, 2026
965c422
test(agent-identity-mock): refuse a channel opening that repeats a si…
CBenoit Oct 21, 2026
d554e04
test(agent-identity-mock): mark the tests the mock intent and contrac…
CBenoit Oct 22, 2026
1981159
test(agent-identity-mock): cover the channel handshake rules no test …
CBenoit Oct 22, 2026
d66b60d
test(agent-identity-mock): assert only the config revision rules the …
CBenoit Oct 22, 2026
a6e9d16
docs(agent-identity): link the contract's short anchors
CBenoit Oct 22, 2026
881f7cc
test(http-client-proxy): mark test oracles
CBenoit Oct 22, 2026
010ca6d
test(agent-identity-conformance): drop a session retry test no DVLS r…
CBenoit Oct 22, 2026
e9d6334
docs(agent-identity): reserve key_storage in enroll and renew responses
CBenoit Oct 22, 2026
14556e5
fix(agent): fail identity requests on a Manual proxy they can't use
CBenoit Oct 22, 2026
56c8e60
test(agent-identity-conformance): mark the conformance tests with the…
CBenoit Oct 22, 2026
7d5d530
test(agent-identity-conformance): mark the agent conformance tests wi…
CBenoit Oct 22, 2026
e093657
test(agent): assert only the key-name prefix form at config load
CBenoit Oct 22, 2026
7abe8ed
test(agent): cite the identity intent for the key-backend event
CBenoit Oct 22, 2026
1b91740
test(agent-installer): cite the MSI intent for the enroll and cleanup…
CBenoit Oct 22, 2026
a0dc2a0
fix(agent): warn once per run about Windows proxy auto-configuration
CBenoit Oct 22, 2026
ba125d3
fix(agent): skip the auto-configuration warning when a proxy is in use
CBenoit Oct 22, 2026
3a4cc73
test(device-key): pin machine-key refusals and the key file size bound
CBenoit Oct 22, 2026
2671464
test(device-key): say which checks refuse a key of another algorithm
CBenoit Oct 22, 2026
b28cdaf
docs(agent-identity): state how unusable and auto-configured proxies …
CBenoit Oct 22, 2026
898360d
docs(agent-identity-conformance): name the tests for every coverage item
CBenoit Oct 22, 2026
58dace1
test(agent-identity-conformance): assert outcomes instead of message …
CBenoit Oct 22, 2026
9524edb
test(agent-identity-conformance): skip renewal checks on short leaves
CBenoit Oct 22, 2026
629674a
test(device-key): list and delete a key file that breaks the access rule
CBenoit Oct 22, 2026
60305da
fix(agent): read a system proxy without a scheme as an HTTP proxy
CBenoit Oct 22, 2026
845f269
fix(agent-identity-mock): advertise the address the mock listens on
CBenoit Oct 22, 2026
6e206ab
fix(agent): read a proxy without a scheme as an HTTP proxy for every …
CBenoit Oct 22, 2026
691502d
docs(agent-identity): state what revocation actually guarantees
CBenoit Oct 22, 2026
865f402
docs(agent-identity): cite DVLS's intent in the RDM repository
CBenoit Oct 22, 2026
017a53d
docs(agent-channel-client): spread reconnects after a long-lived stream
CBenoit Oct 22, 2026
909e0a9
docs(agent-identity): let an authority implement the signature profil…
CBenoit Oct 22, 2026
feaea39
ci: verify the Agent Identity test vectors independently
CBenoit Oct 22, 2026
1703489
fix(agent): refuse to store an identity past its 2 MiB size limit
CBenoit Oct 22, 2026
0b05644
fix(agent-channel-client): back off a non-gRPC 5xx response as an outage
CBenoit Oct 22, 2026
0c16404
fix(agent-channel-client): restart the backoff only after a long-live…
CBenoit Oct 22, 2026
cb42e66
test(agent-channel-client): leave the stable-time test room for a sch…
CBenoit Oct 22, 2026
ae50719
fix(agent): never connect directly around a system proxy that can't b…
CBenoit Oct 22, 2026
bfec9f7
fix(agent): fail identity requests on a system proxy they can't use
CBenoit Oct 22, 2026
fbdffb8
fix(agent-channel-client): refuse server messages larger than an enve…
CBenoit Oct 22, 2026
8bcdb89
fix(agent): bound the agent channel notices an identity queues
CBenoit Oct 22, 2026
1940ae3
docs(agent): state how channel notices are coalesced
CBenoit Oct 22, 2026
34c468a
docs(agent-identity): hash secret bytes, refuse URL credentials
CBenoit Oct 23, 2026
798a5bf
docs(agent-identity): bound token reach and state least privilege
CBenoit Oct 23, 2026
5ac316f
docs(agent-identity): refuse a known authority from another URL
CBenoit Oct 23, 2026
a18a1d9
docs(agent-installer): accept the enrollment token from a file
CBenoit Oct 23, 2026
0b04b12
Merge remote-tracking branch 'origin/master' into cbenoit-agent-ident…
CBenoit Oct 23, 2026
fb5e086
docs(agent-identity): revoke tokens and drop their config
CBenoit Oct 23, 2026
3aca60c
docs(agent-identity): assign settings after enrollment
CBenoit Oct 23, 2026
d0decfc
docs(agent-identity-mock): mirror only what the tester uses
CBenoit Oct 23, 2026
6917c6d
docs(agent-identity-conformance): speak of revoked tokens
CBenoit Oct 23, 2026
f54d0c3
docs(agent-installer): say when the token file is read and refused
CBenoit Oct 23, 2026
bb151dc
docs(agent-identity-mock): state how token revocation answers
CBenoit Oct 23, 2026
17cfc50
docs(agent-identity): read token and channel URLs as text
CBenoit Oct 23, 2026
da8d4e1
refactor(agent-identity): write key-slot changes through Store::update
CBenoit Oct 22, 2026
8ffe21e
refactor(agent-identity): delete unused store and token code
CBenoit Oct 22, 2026
11f23e9
test(agent): cite the channel intent for coalesced notices
CBenoit Oct 22, 2026
b085e31
refactor(agent-identity-mock): fold PushKind into a cloneable StreamPush
CBenoit Oct 22, 2026
21db848
refactor(agent-identity-mock): end channel streams through one termin…
CBenoit Oct 22, 2026
e7cf461
test(agent): check the notice flood only against the intent's bound
CBenoit Oct 23, 2026
1729547
refactor(agent-installer): load installer strings in one place
CBenoit Oct 23, 2026
add5714
feat(agent-installer): read enrollment token from a file
CBenoit Oct 23, 2026
e9ed8a3
docs(agent): note plaintext pending files on Linux and macOS
CBenoit Oct 23, 2026
be01753
docs(agent-installer): say an upgrade reads the token file again
CBenoit Oct 23, 2026
cd48f92
test(agent): compare the coalesced config with a literal
CBenoit Oct 23, 2026
e6d1c3f
test(agent-identity-conformance): check refused channel openings with…
CBenoit Oct 23, 2026
d06024e
test(agent-identity-conformance): audit the SYSTEM agent's files with…
CBenoit Oct 23, 2026
92904ce
test(agent-identity-conformance): share the agent case scaffolding
CBenoit Oct 23, 2026
e290a11
refactor(agent-identity): store an enrolled identity under one lock
CBenoit Oct 23, 2026
23f6968
fix(agent): refuse a known authority from another URL
CBenoit Oct 23, 2026
6d3d1ab
refactor(agent-identity): keep the unchecked identity writes to tests
CBenoit Oct 23, 2026
9695cce
fix(agent): refuse a token whose base URL holds credentials
CBenoit Oct 23, 2026
698bbdc
fix(agent-identity-mock): refuse a token for a base URL with credentials
CBenoit Oct 23, 2026
d1e16b8
test(agent-identity-mock): pin the hash a token is looked up by
CBenoit Oct 23, 2026
bf83dbe
refactor(agent): read Windows security descriptors in one place
CBenoit Oct 23, 2026
6e38b60
refactor(agent): share the private Unix file helpers
CBenoit Oct 23, 2026
2ec47a0
docs(agent): mark the untested properties of the shared file helpers
CBenoit Oct 23, 2026
c1e2f79
test(agent): check that only a protected, non-null DACL is read
CBenoit Oct 23, 2026
dc50f3c
test(agent): refuse a DACL holding a deny entry
CBenoit Oct 23, 2026
df320bd
docs(agent): mark the macOS ownership and ACL checks as untested
CBenoit Oct 23, 2026
78935e9
test(agent-identity): check credential base URLs with other malformed…
CBenoit Oct 23, 2026
d9e997d
fix(agent): read any `@` in a token's authority as a user name
CBenoit Oct 23, 2026
9acc80a
fix(agent): ignore a channel URL that holds credentials
CBenoit Oct 23, 2026
8b37141
fix(agent-identity-mock): drop the enrollment token config
CBenoit Oct 23, 2026
b41c7b0
fix(agent-identity-mock): revoke enrollment tokens
CBenoit Oct 23, 2026
9d851ec
test(agent-identity-mock): cite only what decides the 422 test
CBenoit Oct 23, 2026
8c40516
docs(agent-identity): revoke tokens to keep a device out
CBenoit Oct 23, 2026
393373c
fix(agent-identity-mock): report a revoked token as Revoked
CBenoit Oct 23, 2026
cb1b581
test(agent-identity-mock): cite what decides the envelope-limit enroll
CBenoit Oct 23, 2026
9440ca6
fix(agent-identity-mock): read a token's base URL as text
CBenoit Oct 23, 2026
5b16311
test(agent-identity-mock): cite what decides the token state and dele…
CBenoit Oct 23, 2026
47dd5d5
fix(agent): read token and channel URLs as text
CBenoit Oct 23, 2026
5373704
docs(agent-identity): link the channel URL rule to its contract anchor
CBenoit Oct 23, 2026
8f02214
test(agent-identity): refuse a stored base URL with an upper-case scheme
CBenoit Oct 23, 2026
7d741b1
test(agent-identity-conformance): drop the token config check
CBenoit Oct 23, 2026
2edb5e5
test(agent-identity-conformance): revoke tokens instead of deleting
CBenoit Oct 23, 2026
0795f40
docs(agent-identity-conformance): quote the canonical secret rule
CBenoit Oct 23, 2026
858c030
test(agent-identity-conformance): reject a token URL with a user name
CBenoit Oct 23, 2026
65bfabd
test(agent-identity-conformance): check the revoked enrollment's marker
CBenoit Oct 23, 2026
de2755b
test(agent-identity-conformance): read a token's URL as text
CBenoit Oct 23, 2026
9541027
test(agent-identity-conformance): check what revocation keeps
CBenoit Oct 23, 2026
117626c
docs(agent-identity-conformance): name the text-read URL forms
CBenoit Oct 23, 2026
4215cfe
test(agent-identity-conformance): name a missing rejection marker
CBenoit Oct 23, 2026
ccc174e
test(agent-identity-conformance): trim the base URL before a path @
CBenoit Oct 23, 2026
a487845
test(agent-identity-conformance): cite DVLS's intent on token revocation
CBenoit Oct 23, 2026
7c9578d
test(agent-identity-conformance): compare the whole revoked token
CBenoit Oct 23, 2026
b932e04
test(agent-identity): check three more RFC 5280 rules on a claimed chain
CBenoit Oct 23, 2026
7a81460
test(agent): skip the SDDL descriptor tests under Miri
CBenoit Oct 24, 2026
2712d77
docs(agent-identity): pin chain signatures to P-256
CBenoit Oct 24, 2026
2798649
docs(agent-identity): say how a moved authority's chain is checked
CBenoit Oct 24, 2026
f0ead2e
docs(agent-identity): bind certificates to the enrollment URL
CBenoit Oct 24, 2026
4154a3e
docs(agent-identity): refuse relayed enrollments by URL
CBenoit Oct 24, 2026
a68bb8c
docs(agent-identity): refuse a wrong enrollment URL permanently
CBenoit Oct 24, 2026
607eeb1
docs(agent-identity-mock): say what a set fault changes
CBenoit Oct 24, 2026
9e9fc16
docs(agent-identity): compare the enrollment URL as text
CBenoit Oct 24, 2026
1a6c504
docs(agent-identity): give the enrollment URL extension a usable OID
CBenoit Oct 25, 2026
4f43eec
docs(agent-identity-mock): call the token's field its status
CBenoit Oct 25, 2026
fea9317
docs(agent-identity): list CSRs among the shared vectors
CBenoit Oct 25, 2026
bc59d97
docs(agent-identity): say when a CSR names no enrollment URL
CBenoit Oct 25, 2026
c48cea8
docs(agent-identity): word the enrollment order like the CSR rule
CBenoit Oct 25, 2026
58b7cf2
feat(agent): verify P-384 CA signatures on a moved authority
CBenoit Oct 24, 2026
18ebee5
fix(agent): require a chain signature's algorithm in its signed part
CBenoit Oct 24, 2026
40a2e45
test(agent-identity): say the digest helper also signs unpaired digests
CBenoit Oct 24, 2026
b8d98de
feat(agent): request the enrollment URL in identity CSRs
CBenoit Oct 24, 2026
338da22
feat(agent): record enrollments refused for their URL
CBenoit Oct 24, 2026
a2ef6b0
feat(agent): refuse enrollment certificates naming another URL
CBenoit Oct 24, 2026
e07c6e4
fix(agent-identity-mock): name the enrollment URL in issued leaves
CBenoit Oct 24, 2026
14e50ed
fix(agent-identity-mock): refuse an enrollment CSR naming another URL
CBenoit Oct 24, 2026
c365fdd
feat(agent): refuse enrollment tokens with a non-ASCII URL
CBenoit Oct 24, 2026
5ab0a76
docs(agent): explain enrollments refused for their URL
CBenoit Oct 24, 2026
862678b
test(agent-identity-mock): pin the CSR reader's stop and one URL exte…
CBenoit Oct 24, 2026
473cbf0
refactor(agent-identity-mock): look up the renewed identity with get
CBenoit Oct 24, 2026
3686bff
test(agent-identity-mock): name the reader case whose length runs int…
CBenoit Oct 24, 2026
3609c3a
feat(agent-identity-mock): add a fault shaping the enrolled leaf's URL
CBenoit Oct 24, 2026
c090aef
test(agent-identity-conformance): check the enrollment URL binding
CBenoit Oct 24, 2026
134da37
test(agent-identity-conformance): allow one in-flight check-in after …
CBenoit Oct 24, 2026
d3bdd0d
test(agent-identity-conformance): reject a non-ASCII token URL
CBenoit Oct 24, 2026
1e11615
test(agent-identity-conformance): name the token's URL in enrollment …
CBenoit Oct 24, 2026
15973fd
test(agent-identity-conformance): pin the chain check's algorithm ref…
CBenoit Oct 24, 2026
9b8b8d5
test(agent-identity-conformance): check CSR signatures and leaf URL r…
CBenoit Oct 24, 2026
5e56356
fix(agent-identity-mock): refuse a wrong enrollment URL with token_ur…
CBenoit Oct 24, 2026
a527e90
feat(agent): treat token_url_mismatch as a permanent refusal
CBenoit Oct 24, 2026
135e940
test(agent-identity-conformance): take a new key for each rewritable CSR
CBenoit Oct 24, 2026
b3f002f
test(agent-identity-conformance): widen the enrollment URL cases
CBenoit Oct 24, 2026
9ad2e11
test(agent-identity-conformance): expect token_url_mismatch for a wro…
CBenoit Oct 24, 2026
edbf223
test(agent-identity-conformance): ground the URL text cases in the co…
CBenoit Oct 24, 2026
37532a0
refactor(agent-identity-mock): name a token's status as DVLS does
CBenoit Oct 24, 2026
d917184
test(agent-identity-conformance): read a token's status as DVLS names it
CBenoit Oct 24, 2026
92de67b
test(agent-identity): drop the duplicate credential base URL test
CBenoit Oct 25, 2026
b59fef1
docs(agent-identity-conformance): cite the contract for the enrollmen…
CBenoit Oct 25, 2026
456f3e7
docs(agent-identity-conformance): say why the refusal vectors isolate…
CBenoit Oct 25, 2026
b26f804
test(agent): check the CSR's URL extension against the contract OID
CBenoit Oct 25, 2026
cb27a7c
test(agent-identity): request the enrollment URL in the CSR vectors
CBenoit Oct 25, 2026
26c660c
test(agent-identity): keep a CSR vector's expected as its check result
CBenoit Oct 25, 2026
973fd24
test(agent-identity-conformance): refuse CSRs that name no enrollment…
CBenoit Oct 25, 2026
c64f874
fix(agent-identity-mock): read no URL from a CSR repeating the extension
CBenoit Oct 25, 2026
67837d3
fix(agent-identity-mock): refuse a token for a non-ASCII base URL
CBenoit Oct 25, 2026
8357ea4
test(agent-identity-mock): mark the CSR reader's stop as the mock's c…
CBenoit Oct 25, 2026
c0ceaf2
fix(agent-identity-mock): name no URL when the CSR reader loses framing
CBenoit Oct 25, 2026
8ec7216
test(agent-identity-mock): quote the CSR naming no URL and vary renew…
CBenoit Oct 25, 2026
0bbf72c
fix(agent-identity-mock): refuse high-tag-number tags in the CSR reader
CBenoit Oct 25, 2026
ada7c5d
test(agent-identity-mock): renew with two URLs other than the mock's
CBenoit Oct 25, 2026
15fc491
docs(agent-identity-mock): say exactly which framing the CSR reader a…
CBenoit Oct 25, 2026
4ccc006
Merge remote-tracking branch 'origin/master' into cbenoit-agent-ident…
CBenoit Oct 25, 2026
500569a
test(agent-identity): find a runner's session members by session ID
CBenoit Oct 25, 2026
7a09e16
test(agent-identity): skip PID 0 when ending a runner's session
CBenoit Oct 25, 2026
a18c3f6
docs(agent-identity): let a token carry recognized assignments
CBenoit Oct 25, 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
32 changes: 31 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -337,6 +337,14 @@ jobs:
env:
AWS_LC_SYS_NO_ASM: true

- name: Root-only tests
if: ${{ matrix.os == 'linux' }}
# Cargo builds as the runner user and runs only the test binary as root, so no build output is owned by root.
# UNTESTED: the test binary runs as root.
# A root-only test run without root skips and passes, so after changing this step, check that its log has no SKIP line.
run: |
cargo test --locked --target ${{ matrix.target }} --config "target.${{ matrix.target }}.runner='sudo'" -p device-key --lib root_only_

- name: Show sccache stats
if: ${{ needs.preflight.outputs.sccache == 'true' && !cancelled() }}
shell: pwsh
Expand Down Expand Up @@ -1341,6 +1349,28 @@ jobs:
run: dotnet test utils/dotnet/GatewayUtils.sln
shell: pwsh

- name: Build agent channel package

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nothing runs docs/agent-identity/verify_vectors.py.
docs/agent-identity/INTENT.agent-identity.md (Conformance) says the script recomputes every vector with an independent library "so that an error in the vectors cannot pass unnoticed into every implementation that agrees with them". No workflow calls it, so an incorrectly edited vector would pass the Rust tests (which agree with the vectors) and only a manual run would catch it.

Suggestion: add a step (anywhere convenient, e.g. near here) that installs cryptography and runs python3 -I docs/agent-identity/verify_vectors.py, and optionally its --self-test mode.

Note

Human-tuned, LLM-assisted content.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in feaea39: a CI job runs verify_vectors.py and its self-test with a pinned cryptography and fails the build on any mismatch.

Note

Human-tuned, LLM-assisted content.

run: ./crates/agent-channel-proto/dotnet/build.ps1
shell: pwsh

agent-identity-vectors:
name: Agent Identity test vectors
runs-on: ubuntu-latest
needs: [preflight]

steps:
- name: Checkout ${{ github.repository }}
uses: actions/checkout@v6
with:
ref: ${{ needs.preflight.outputs.ref }}

# The vectors are recomputed with an independent library, so that an error in them can't pass into every implementation that agrees with them.
- name: Verify the vectors
run: |
python3 -m venv "$RUNNER_TEMP/vectors"
"$RUNNER_TEMP/vectors/bin/pip" install --quiet --disable-pip-version-check cryptography==50.0.2
"$RUNNER_TEMP/vectors/bin/python" -I docs/agent-identity/verify_vectors.py
"$RUNNER_TEMP/vectors/bin/python" -I docs/agent-identity/verify_vectors.py --self-test
agent-installer-event-log-tests:
name: Agent installer Event Log lifecycle tests
runs-on: windows-2022
Expand Down Expand Up @@ -1617,7 +1647,7 @@ jobs:
success:
name: Success
if: ${{ always() }}
needs: [tests, agent-tunnel-e2e, agent-policy-e2e, lints, oracle-markers, oracle-markers-tests, skill-links, check-dependencies, jetsocat-lipo, devolutions-gateway-powershell, gateway-service-account-tests, devolutions-gateway, devolutions-gateway-merge, devolutions-pedm-desktop, devolutions-agent, devolutions-agent-merge, devolutions-pedm-client, dotnet-utils-tests, agent-installer-event-log-tests, winapi-sanitizer-tests, winapi-miri, pedm-simulator, secure-memory-verifier]
needs: [tests, agent-tunnel-e2e, agent-policy-e2e, lints, oracle-markers, oracle-markers-tests, skill-links, check-dependencies, jetsocat-lipo, devolutions-gateway-powershell, gateway-service-account-tests, devolutions-gateway, devolutions-gateway-merge, devolutions-pedm-desktop, devolutions-agent, devolutions-agent-merge, devolutions-pedm-client, dotnet-utils-tests, agent-identity-vectors, agent-installer-event-log-tests, winapi-sanitizer-tests, winapi-miri, pedm-simulator, secure-memory-verifier]
runs-on: ubuntu-latest

steps:
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/publish-libraries.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ jobs:
strategy:
fail-fast: false
matrix:
library: [ dotnet-client, dotnet-subscriber, utils, pedm-dotnet-client ]
library: [ dotnet-client, dotnet-subscriber, utils, pedm-dotnet-client, agent-channel ]
include:
- library: dotnet-client
libpath: ./devolutions-gateway/openapi/dotnet-client
Expand All @@ -50,6 +50,8 @@ jobs:
libpath: ./utils/dotnet
- library: pedm-dotnet-client
libpath: ./crates/devolutions-pedm/openapi/dotnet-client
- library: agent-channel
libpath: ./crates/agent-channel-proto/dotnet

steps:
- name: Check out ${{ github.repository }}
Expand Down
Loading
Loading