// GSAP Attestor — SPIRE WorkloadAttestor plugin. // // Runs in SPIRE Agent. Reads governance environment variables from // the process tree and maps them to GSAP SPIRE selectors for // registration matching. package main import ( "context" "log" "github.com/hashicorp/go-plugin" "google.golang.org/grpc" ) var handshakeConfig = plugin.HandshakeConfig{ ProtocolVersion: 1, MagicCookieKey: "ServerAgent", MagicCookieValue: "GuildhouseSpire", } type GsapAttestorPlugin struct { plugin.Plugin Impl *GsapAttestor } func (p *GsapAttestorPlugin) GRPCServer(broker *plugin.GRPCBroker, s *grpc.Server) error { log.Println("gsap-attestor: gRPC server registered") return nil } func (p *GsapAttestorPlugin) GRPCClient(ctx context.Context, broker *plugin.GRPCBroker, c *grpc.ClientConn) (interface{}, error) { return nil, nil } func main() { attestor := &GsapAttestor{} plugin.Serve(&plugin.ServeConfig{ HandshakeConfig: handshakeConfig, Plugins: map[string]plugin.Plugin{ "workload_attestor": &GsapAttestorPlugin{Impl: attestor}, }, GRPCServer: plugin.DefaultGRPCServer, }) }