Documentation
¶
Overview ¶
Package pluginloader verifies native plugin artifacts before loading them.
Index ¶
- Variables
- func DefaultPluginSigningKeyID(publicKey ed25519.PublicKey) ([]byte, error)
- func FormatMinisignSignature(artifactPath string, privateKey ed25519.PrivateKey, keyID []byte, ...) ([]byte, error)
- func FormatPluginPublicKey(publicKey ed25519.PublicKey, keyID []byte, comment string) ([]byte, error)
- func ParsePluginSigningPrivateKey(raw []byte) (ed25519.PrivateKey, error)
- func SetDefaultState(state *State)
- func ValidateOrderedPluginBackends(cfg config.File, state *State) error
- func ValidatePluginDebugSelectors(cfg config.File, state *State) error
- func WriteMinisignSignatureFile(artifactPath string, signaturePath string, privateKey ed25519.PrivateKey, ...) error
- type DiscoveryCompatibility
- type DiscoveryCompatibilityMetric
- type DiscoveryComponent
- type DiscoveryDebugModule
- type DiscoveryDocument
- type DiscoveryHookDescriptor
- type DiscoveryMetadata
- type DiscoveryModule
- type DiscoverySourceDescriptor
- type Loader
- type ModuleError
- type ModuleInstance
- type ModuleStatus
- type Opener
- type Option
- type PluginHandle
- type State
- type VerifiedModule
- type Verifier
- type VerifierOption
Constants ¶
This section is empty.
Variables ¶
var ( ErrArtifactUnavailable = errors.New("plugin artifact unavailable after verification") // ErrPluginOpenFailed is returned when plugin.Open fails. ErrPluginOpenFailed = errors.New("plugin open failed") // ErrFactorySymbolMissing is returned when the plugin factory symbol cannot be resolved. ErrFactorySymbolMissing = errors.New("plugin factory symbol missing") // ErrFactorySymbolInvalid is returned when the factory has the wrong Go type. ErrFactorySymbolInvalid = errors.New("plugin factory symbol has invalid type") // ErrFactoryFailed is returned when the factory returns an error. ErrFactoryFailed = errors.New("plugin factory failed") // ErrNilPlugin is returned when the factory returns a nil plugin. ErrNilPlugin = errors.New("plugin factory returned nil plugin") // ErrPluginPanic is returned when a host-invoked plugin method panics. ErrPluginPanic = errors.New("plugin panicked") // ErrRequiredModuleFailed is returned when a required module cannot be registered. ErrRequiredModuleFailed = errors.New("required plugin module failed") )
var ( // ErrArtifactOutsideAllowedDirs is returned when a resolved artifact escapes the configured allowlist. ErrArtifactOutsideAllowedDirs = errors.New("plugin artifact outside allowed directories") // ErrChecksumMismatch is returned when the artifact digest differs from the configured checksum. ErrChecksumMismatch = errors.New("plugin checksum mismatch") // ErrSignatureVerificationFailed is returned when a detached artifact signature cannot be verified. ErrSignatureVerificationFailed = errors.New("plugin signature verification failed") )
var ( // ErrOrderedPluginBackendMissing reports an auth.backends.order plugin selector // that did not resolve to a registered backend component. ErrOrderedPluginBackendMissing = errors.New("ordered plugin backend is not registered") )
var ( // ErrPluginDebugSelectorMissing reports an exact debug selector without a registered module. ErrPluginDebugSelectorMissing = errors.New("plugin debug selector is not registered") )
Functions ¶
func DefaultPluginSigningKeyID ¶
DefaultPluginSigningKeyID derives the minisign-compatible key id used for Nauthilus plugin signatures.
func FormatMinisignSignature ¶
func FormatMinisignSignature(artifactPath string, privateKey ed25519.PrivateKey, keyID []byte, trustedComment string) ([]byte, error)
FormatMinisignSignature builds a minisign-style detached signature for an artifact.
func FormatPluginPublicKey ¶
func FormatPluginPublicKey(publicKey ed25519.PublicKey, keyID []byte, comment string) ([]byte, error)
FormatPluginPublicKey formats an Ed25519 public key in minisign/signify-compatible text form.
func ParsePluginSigningPrivateKey ¶
func ParsePluginSigningPrivateKey(raw []byte) (ed25519.PrivateKey, error)
ParsePluginSigningPrivateKey decodes a base64 Ed25519 seed or private key for build-time signing.
func SetDefaultState ¶
func SetDefaultState(state *State)
SetDefaultState publishes the most recent plugin loader state for later runtime wiring.
func ValidateOrderedPluginBackends ¶
ValidateOrderedPluginBackends verifies that auth.backends.order plugin entries refer to registered backend components after native plugin registration.
func ValidatePluginDebugSelectors ¶
ValidatePluginDebugSelectors verifies exact plugin debug selectors after module registration.
func WriteMinisignSignatureFile ¶
func WriteMinisignSignatureFile(artifactPath string, signaturePath string, privateKey ed25519.PrivateKey, keyID []byte, trustedComment string) error
WriteMinisignSignatureFile writes a minisign-style detached signature for an artifact.
Types ¶
type DiscoveryCompatibility ¶
type DiscoveryCompatibility struct {
Metrics []DiscoveryCompatibilityMetric `json:"metrics,omitempty"`
TraceScopes []string `json:"trace_scopes,omitempty"`
}
DiscoveryCompatibility exposes restart-only exact observability allowlists without secrets.
type DiscoveryCompatibilityMetric ¶
type DiscoveryCompatibilityMetric struct {
Buckets []float64 `json:"buckets,omitempty"`
Labels []string `json:"labels,omitempty"`
Type pluginapi.MetricType `json:"type"`
Name string `json:"name"`
Help string `json:"help"`
}
DiscoveryCompatibilityMetric exposes one exact collector contract.
type DiscoveryComponent ¶
type DiscoveryComponent struct {
Source *DiscoverySourceDescriptor `json:"source,omitempty"`
Hook *DiscoveryHookDescriptor `json:"hook,omitempty"`
QualifiedName string `json:"qualified_name"`
ModuleName string `json:"module_name"`
Name string `json:"name"`
Kind pluginregistry.ComponentKind `json:"kind"`
Origin pluginregistry.ComponentOrigin `json:"origin"`
}
DiscoveryComponent describes one registered component descriptor.
type DiscoveryDebugModule ¶
type DiscoveryDebugModule struct {
Selector string `json:"selector"`
ModuleName string `json:"module_name"`
Name string `json:"name,omitempty"`
Description string `json:"description,omitempty"`
Origin pluginregistry.ComponentOrigin `json:"origin"`
}
DiscoveryDebugModule describes one registered plugin debug selector.
type DiscoveryDocument ¶
type DiscoveryDocument struct {
Modules []DiscoveryModule `json:"modules"`
}
DiscoveryDocument is a machine-readable snapshot of registered native plugins.
type DiscoveryHookDescriptor ¶
type DiscoveryHookDescriptor struct {
RequiredScopes []string `json:"required_scopes,omitempty"`
Name string `json:"name"`
Method string `json:"method"`
Path string `json:"path"`
Alias string `json:"alias,omitempty"`
Scope pluginapi.HookScope `json:"scope"`
Auth pluginapi.HookAuth `json:"auth"`
Timeout time.Duration `json:"timeout"`
MaxBodyBytes int64 `json:"max_body_bytes"`
}
DiscoveryHookDescriptor describes HTTP hook routing metadata.
type DiscoveryMetadata ¶
type DiscoveryMetadata struct {
Build pluginapi.BuildInfo `json:"build"`
Name string `json:"name,omitempty"`
Version string `json:"version,omitempty"`
APIVersion string `json:"api_version,omitempty"`
Description string `json:"description,omitempty"`
DocsURL string `json:"docs_url,omitempty"`
Features []pluginapi.Feature `json:"features,omitempty"`
Capabilities []pluginapi.Capability `json:"capabilities,omitempty"`
}
DiscoveryMetadata exposes plugin product metadata and build diagnostics.
type DiscoveryModule ¶
type DiscoveryModule struct {
Metadata DiscoveryMetadata `json:"metadata"`
Components []DiscoveryComponent `json:"components,omitempty"`
DebugModules []DiscoveryDebugModule `json:"debug_modules,omitempty"`
Compatibility DiscoveryCompatibility `json:"compatibility,omitempty"`
RequiredCapabilities []pluginapi.Capability `json:"required_capabilities,omitempty"`
Name string `json:"name"`
Type string `json:"type,omitempty"`
Status ModuleStatus `json:"status"`
ArtifactPath string `json:"artifact_path,omitempty"`
Signer string `json:"signer,omitempty"`
VerifiedSigner string `json:"verified_signer,omitempty"`
FailureStep string `json:"failure_step,omitempty"`
Optional bool `json:"optional"`
ChecksumConfigured bool `json:"checksum_configured"`
SignatureConfigured bool `json:"signature_configured"`
SignatureVerified bool `json:"signature_verified"`
}
DiscoveryModule describes one configured plugin module without plugin-owned config.
type DiscoverySourceDescriptor ¶
type DiscoverySourceDescriptor struct {
Requires []string `json:"requires,omitempty"`
After []string `json:"after,omitempty"`
Name string `json:"name"`
Timeout time.Duration `json:"timeout"`
Priority int `json:"priority"`
AbortPolicy pluginapi.AbortPolicy `json:"abort_policy"`
}
DiscoverySourceDescriptor describes dependency-scheduled source metadata.
type Loader ¶
type Loader struct {
// contains filtered or unexported fields
}
Loader opens verified artifacts and records registered module instances.
type ModuleError ¶
ModuleError annotates a module load error with an operator-readable step.
func (*ModuleError) Error ¶
func (e *ModuleError) Error() string
Error describes the failed module step without exposing plugin-owned config.
func (*ModuleError) Unwrap ¶
func (e *ModuleError) Unwrap() error
Unwrap returns the underlying module error.
type ModuleInstance ¶
type ModuleInstance struct {
Plugin pluginapi.Plugin
RegistrationError error
Metadata pluginapi.Metadata
Module config.PluginModule
Descriptors []pluginregistry.Component
DebugModules []pluginregistry.DebugModule
Capabilities []pluginapi.Capability
ArtifactPath string
SignaturePath string
VerifiedSigner string
ModuleName string
Status ModuleStatus
Optional bool
}
ModuleInstance stores the host-visible state for one configured plugin module.
func (ModuleInstance) IsRegistered ¶
func (m ModuleInstance) IsRegistered() bool
IsRegistered reports whether the instance can participate in the plugin runtime.
type ModuleStatus ¶
type ModuleStatus string
ModuleStatus describes the registration state for one configured module.
const ( // ModuleStatusRegistered marks a module whose factory, metadata, and Register call succeeded. ModuleStatusRegistered ModuleStatus = "registered" // ModuleStatusFailed marks a module whose startup-time registration path failed. ModuleStatusFailed ModuleStatus = "failed" )
type Opener ¶
type Opener interface {
Open(path string) (PluginHandle, error)
}
Opener opens an already verified plugin artifact path.
type Option ¶
type Option func(*Loader)
Option configures a Loader.
func WithLogger ¶
WithLogger configures operator-visible optional module logging.
func WithOpener ¶
WithOpener injects an opener, primarily for fake-backed loader tests.
type PluginHandle ¶
PluginHandle resolves symbols from one opened plugin artifact.
type State ¶
type State struct {
// contains filtered or unexported fields
}
State contains all module instances registered during one loader run.
func DefaultState ¶
DefaultState returns the most recent plugin loader state, if any.
func (*State) Discovery ¶
func (s *State) Discovery() DiscoveryDocument
Discovery returns registered native plugin metadata and component descriptors.
func (*State) Instances ¶
func (s *State) Instances() []ModuleInstance
Instances returns module instance state in configured order.
func (*State) Registry ¶
func (s *State) Registry() *pluginregistry.Registry
Registry returns the component registry created by the loader run.
type VerifiedModule ¶
type VerifiedModule struct {
Module config.PluginModule
Signer *config.PluginTrustSigner
ArtifactPath string
SignaturePath string
}
VerifiedModule describes a module whose loader-owned artifact checks completed.
type Verifier ¶
type Verifier struct {
// contains filtered or unexported fields
}
Verifier validates configured plugin artifacts before plugin.Open is allowed.
func NewVerifier ¶
func NewVerifier(options ...VerifierOption) Verifier
NewVerifier returns the default plugin artifact verifier.
func (Verifier) Verify ¶
func (v Verifier) Verify(plugins *config.PluginsSection) ([]VerifiedModule, error)
Verify validates all configured plugin artifacts and returns canonical paths.
type VerifierOption ¶
type VerifierOption func(*Verifier)
VerifierOption customizes artifact verification.
func WithVerificationLogger ¶
func WithVerificationLogger(logger *slog.Logger) VerifierOption
WithVerificationLogger configures structured artifact verification logging.
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
cmd
|
|
|
nauthilus-plugin-sign
command
Command nauthilus-plugin-sign creates and signs native plugin distribution keys.
|
Command nauthilus-plugin-sign creates and signs native plugin distribution keys. |