Join codes need no passkey touch and carry only public values (genesis fingerprint, owner credentials, installer hashes). Nodes pin the genesis and owners at enrollment and only follow passkey-signed operator set versions. The panel's server key is listed in the set; pinned nodes require its signature and run the control link under AES-256-GCM. Password sessions carry no capabilities. The updater adopts a next_key from a signed manifest. Bump version to 0.2.0. [CI SKIP]
30 lines
994 B
C#
30 lines
994 B
C#
using System.Text.Json.Serialization;
|
|
|
|
namespace Fleet.Core;
|
|
|
|
/// <summary>passkey 对一段语句签出的断言(字段都是 base64url)。信任根的格式和验证在 Fleet.Identity 的 <c>OperatorTrust</c>。</summary>
|
|
public sealed class SignedStatementDto
|
|
{
|
|
[JsonPropertyName("statement")]
|
|
public string Statement { get; set; } = "";
|
|
|
|
[JsonPropertyName("credential_id")]
|
|
public string CredentialId { get; set; } = "";
|
|
|
|
[JsonPropertyName("authenticator_data")]
|
|
public string AuthenticatorData { get; set; } = "";
|
|
|
|
[JsonPropertyName("client_data_json")]
|
|
public string ClientDataJson { get; set; } = "";
|
|
|
|
[JsonPropertyName("signature")]
|
|
public string Signature { get; set; } = "";
|
|
}
|
|
|
|
/// <summary>操作员集合的链(创世在前):节点注册时取来,从固定的创世指纹验过才采用。</summary>
|
|
public sealed class TrustBundle
|
|
{
|
|
[JsonPropertyName("chain")]
|
|
public List<SignedStatementDto> Chain { get; set; } = [];
|
|
}
|