34 lines
1.1 KiB
Go
34 lines
1.1 KiB
Go
|
package plugin
|
||
|
|
||
|
import (
|
||
|
"github.com/hashicorp/consul/agent/connect/ca"
|
||
|
"github.com/hashicorp/go-plugin"
|
||
|
)
|
||
|
|
||
|
// Name is the name of the plugin that users of the package should use
|
||
|
// with *plugin.Client.Dispense to get the proper plugin instance.
|
||
|
const Name = "consul-connect-ca"
|
||
|
|
||
|
// handshakeConfig is the HandshakeConfig used to configure clients and servers.
|
||
|
var handshakeConfig = plugin.HandshakeConfig{
|
||
|
// The ProtocolVersion is the version that must match between Consul
|
||
|
// and CA plugins. This should be bumped whenever a change happens in
|
||
|
// one or the other that makes it so that they can't safely communicate.
|
||
|
ProtocolVersion: 1,
|
||
|
|
||
|
// The magic cookie values should NEVER be changed.
|
||
|
MagicCookieKey: "CONSUL_PLUGIN_MAGIC_COOKIE",
|
||
|
MagicCookieValue: "f31f63b28fa82a3cdb30a6284cb1e50e3a13b7e60ba105a2c91219da319d216c",
|
||
|
}
|
||
|
|
||
|
// Serve serves a CA plugin. This function never returns and should be the
|
||
|
// final function called in the main function of the plugin.
|
||
|
func Serve(p ca.Provider) {
|
||
|
plugin.Serve(&plugin.ServeConfig{
|
||
|
HandshakeConfig: handshakeConfig,
|
||
|
Plugins: map[string]plugin.Plugin{
|
||
|
Name: &ProviderPlugin{Impl: p},
|
||
|
},
|
||
|
})
|
||
|
}
|