<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Eryph.GuestServices.Core</name>
    </assembly>
    <members>
        <member name="F:Eryph.GuestServices.Core.Constants.ServiceId">
            <summary>
            The Hyper-V integration service ID for the eryph guest services.
            </summary>
            <remarks>
            <para>
            This ID must be registered on the VM host before the eryph guest services can be used.
            </para>
            <para>
            This ID corresponds to the port 5002 for Linux VSock sockets.
            </para>
            </remarks>
        </member>
        <member name="F:Eryph.GuestServices.Core.Constants.FeaturesKey">
            <summary>
            The KVP key (Guest pool) where the service advertises supported optional
            features as a space-separated list. Hosts/tools should check this before
            using a feature that may be missing on older services.
            </summary>
        </member>
        <member name="F:Eryph.GuestServices.Core.Constants.ShellOverrideFeature">
            <summary>
            Feature flag advertised by services that honor the shell override KVP
            keys (<see cref="F:Eryph.GuestServices.Core.Constants.ShellKey"/>, <see cref="F:Eryph.GuestServices.Core.Constants.ShellArgsKey"/>).
            </summary>
        </member>
        <member name="F:Eryph.GuestServices.Core.Constants.ClientAuthKeyPrefix">
            <summary>
            Prefix for additional authorized-key slots in the External KVP pool.
            The guest service treats every value whose key matches
            <c>"eryph:guest-services:client-public-key:&lt;id&gt;"</c> as another
            entry in the authorized set, in addition to the legacy single slot at
            <see cref="F:Eryph.GuestServices.Core.Constants.ClientAuthKey"/>. The slot id is arbitrary (host name,
            machine id, etc.) — only the prefix is meaningful. This sidesteps the
            2 KiB Hyper-V data exchange per-value limit when more than a handful
            of keys are authorized.
            </summary>
        </member>
        <member name="F:Eryph.GuestServices.Core.Constants.ShellKey">
            <summary>
            The KVP key (External pool) that overrides the shell command spawned
            for an SSH session — both interactive shells and non-interactive
            <c>exec</c> (remote command) requests, which run the command through this
            shell. When unset, the service falls back to the SSH-sent <c>SHELL</c>
            environment variable (interactive only), then to the platform default
            (<c>powershell.exe</c> on Windows, <c>$SHELL</c> or <c>/bin/bash</c> on
            Linux).
            </summary>
        </member>
        <member name="F:Eryph.GuestServices.Core.Constants.ShellArgsKey">
            <summary>
            The KVP key (External pool) that overrides the arguments passed to the
            shell command. Only consulted when <see cref="F:Eryph.GuestServices.Core.Constants.ShellKey"/> is also set.
            </summary>
        </member>
        <member name="F:Eryph.GuestServices.Core.Constants.ShellEnvName">
            <summary>
            The SSH-sent environment variable name that overrides the shell command
            for one session. Lower priority than <see cref="F:Eryph.GuestServices.Core.Constants.ShellKey"/>.
            </summary>
        </member>
        <member name="F:Eryph.GuestServices.Core.Constants.ShellArgsEnvName">
            <summary>
            The SSH-sent environment variable name that overrides the shell
            arguments for one session. Lower priority than <see cref="F:Eryph.GuestServices.Core.Constants.ShellArgsKey"/>.
            </summary>
        </member>
        <member name="T:Eryph.GuestServices.Core.IServiceControlFlags">
            <summary>
            Operator on/off switches for the top-level guest-services capabilities.
            All flags are <b>opt-out</b>: a capability is ON unless an operator has
            explicitly turned it off. This is an injectable seam so the gated services
            (provisioning agent, remote-access transport, KVP-auth honoring) can be
            unit-tested without touching the real config sources.
            </summary>
        </member>
        <member name="M:Eryph.GuestServices.Core.IServiceControlFlags.IsProvisioningEnabled">
            <summary>
            Gates the cloud-init-style first-boot provisioning agent. <c>true</c>
            unless an operator turned it off.
            </summary>
        </member>
        <member name="M:Eryph.GuestServices.Core.IServiceControlFlags.IsRemoteAccessEnabled">
            <summary>
            Gates eryph's remote-access transport (the Hyper-V-vsock SSH server that
            <c>egs-tool</c> connects to for shell / exec / file-transfer / pty).
            <c>true</c> unless an operator turned it off.
            </summary>
        </member>
        <member name="M:Eryph.GuestServices.Core.IServiceControlFlags.IsKvpAuthEnabled">
            <summary>
            Gates whether authorized client keys delivered via Hyper-V data exchange
            (KVP) are honored. When <c>false</c>, only the locally provisioned
            (on-disk) key authorizes — a hardening option for environments that
            want eryph-zero / geneset to be the sole authority over guest access
            and where keys pushed at runtime via <c>egs-tool add-ssh-config</c>
            should be rejected. <c>true</c> unless an operator turned it off.
            </summary>
        </member>
        <member name="T:Eryph.GuestServices.Core.PlatformServiceControlFlags">
            <summary>
            Default <see cref="T:Eryph.GuestServices.Core.IServiceControlFlags"/> implementation. Reads opt-out
            flags from the platform-native config source:
            <list type="bullet">
            <item><description>Windows: <c>HKLM\SOFTWARE\eryph\guest-services</c>
            REG_DWORD values (<c>0</c> = off, anything else = on).</description></item>
            <item><description>Linux: <c>/etc/opt/eryph/guest-services/service-control.conf</c>
            in <c>KEY=VALUE</c> format (<c>0</c> / <c>false</c> = off, anything
            else = on). Blank lines and <c>#</c> comments are ignored.</description></item>
            </list>
            </summary>
            <remarks>
            These are <b>fail-open</b> flags: a missing key/value, missing file, or any
            I/O / permission error yields <c>true</c>. We never disable a capability
            because of a read error — only an explicit <c>0</c> (or <c>false</c> on
            Linux) turns a capability off. The value→bool interpretation lives in two
            pure helpers — <see cref="M:Eryph.GuestServices.Core.PlatformServiceControlFlags.InterpretWindowsRegistryValue(System.Object)"/> for the
            REG_DWORD path and <see cref="M:Eryph.GuestServices.Core.PlatformServiceControlFlags.InterpretLinuxConfigValue(System.String)"/> for the
            KEY=VALUE path — kept separate so a mistyped REG_SZ on Windows cannot
            accidentally exercise the Linux string-parsing rules. Platform-gated reads
            are split behind <c>[SupportedOSPlatform]</c> attributes plus an
            <see cref="T:System.OperatingSystem"/> gate so CA1416 stays clean.
            </remarks>
        </member>
        <member name="M:Eryph.GuestServices.Core.PlatformServiceControlFlags.InterpretWindowsRegistryValue(System.Object)">
            <summary>
            Pure value→bool interpretation for a Windows REG_DWORD opt-out flag.
            Off iff the registry value is the integer <c>0</c>. Anything else —
            <see langword="null"/>, a REG_SZ string (even <c>"0"</c>), an
            unrecognised kind — yields <c>true</c> (default ON / fail-open).
            The documented Windows control surface is REG_DWORD only; honouring
            strings would silently change long-standing behaviour.
            </summary>
        </member>
        <member name="M:Eryph.GuestServices.Core.PlatformServiceControlFlags.InterpretLinuxConfigValue(System.String)">
            <summary>
            Pure value→bool interpretation for a Linux config-file opt-out flag.
            Off iff the value is the literal string <c>"0"</c> or <c>"false"</c>
            (case-insensitive, whitespace tolerated). Anything else — including
            <see langword="null"/>, empty, or unparseable strings — yields
            <c>true</c> (default ON / fail-open).
            </summary>
        </member>
        <member name="M:Eryph.GuestServices.Core.PlatformServiceControlFlags.ParseConfigLine(System.String)">
            <summary>
            Pure parser for a single line of the Linux service-control.conf file.
            Returns <see langword="null"/> for blank lines and <c>#</c> comments,
            or a <c>(key, value)</c> tuple for a well-formed <c>KEY=VALUE</c>
            line. Whitespace around the key and value is trimmed.
            </summary>
        </member>
    </members>
</doc>
