182 lines
5.3 KiB
Go
182 lines
5.3 KiB
Go
// Hand-written gRPC bindings for keymanager.proto (agent side, JSON codec).
|
|
|
|
package pb
|
|
|
|
import (
|
|
"context"
|
|
|
|
"google.golang.org/grpc"
|
|
"google.golang.org/grpc/codes"
|
|
"google.golang.org/grpc/status"
|
|
)
|
|
|
|
type RegisterRequest struct {
|
|
ServerId string `json:"server_id"`
|
|
PreRegToken string `json:"pre_reg_token"`
|
|
Hostname string `json:"hostname"`
|
|
IpAddress string `json:"ip_address"`
|
|
OsInfo string `json:"os_info"`
|
|
}
|
|
|
|
type RegisterResponse struct {
|
|
AgentToken string `json:"agent_token"`
|
|
}
|
|
|
|
type SyncRequest struct {
|
|
ServerId string `json:"server_id"`
|
|
AgentToken string `json:"agent_token"`
|
|
}
|
|
|
|
type SyncResponse struct {
|
|
PublicKeys []string `json:"public_keys"`
|
|
}
|
|
|
|
type UploadKeyRequest struct {
|
|
ServerId string `json:"server_id"`
|
|
AgentToken string `json:"agent_token"`
|
|
PublicKey string `json:"public_key"`
|
|
Label string `json:"label"`
|
|
}
|
|
|
|
type UploadKeyResponse struct {
|
|
KeyId string `json:"key_id"`
|
|
}
|
|
|
|
// CommandStream message types
|
|
|
|
type ServerCommand struct {
|
|
CommandId string `json:"command_id"`
|
|
GenerateKey *GenerateKeyCmd `json:"generate_key,omitempty"`
|
|
}
|
|
|
|
type GenerateKeyCmd struct {
|
|
Label string `json:"label"`
|
|
KeyType string `json:"key_type,omitempty"`
|
|
KeySize int `json:"key_size,omitempty"`
|
|
Passphrase string `json:"passphrase,omitempty"`
|
|
Comment string `json:"comment,omitempty"`
|
|
}
|
|
|
|
type AgentMessage struct {
|
|
ServerId string `json:"server_id"`
|
|
AgentToken string `json:"agent_token"`
|
|
Ready *AgentReady `json:"ready,omitempty"`
|
|
Result *CommandResult `json:"result,omitempty"`
|
|
}
|
|
|
|
type AgentReady struct{}
|
|
|
|
type CommandResult struct {
|
|
CommandId string `json:"command_id"`
|
|
Success bool `json:"success"`
|
|
Message string `json:"message"`
|
|
}
|
|
|
|
// CommandStream client-side interface
|
|
|
|
type KeyManager_CommandStreamClient interface {
|
|
Send(*AgentMessage) error
|
|
Recv() (*ServerCommand, error)
|
|
grpc.ClientStream
|
|
}
|
|
|
|
type keyManagerCommandStreamClient struct {
|
|
grpc.ClientStream
|
|
}
|
|
|
|
func (c *keyManagerCommandStreamClient) Send(m *AgentMessage) error {
|
|
return c.ClientStream.SendMsg(m)
|
|
}
|
|
|
|
func (c *keyManagerCommandStreamClient) Recv() (*ServerCommand, error) {
|
|
m := new(ServerCommand)
|
|
if err := c.ClientStream.RecvMsg(m); err != nil {
|
|
return nil, err
|
|
}
|
|
return m, nil
|
|
}
|
|
|
|
// CommandStream server-side interface (included for completeness)
|
|
|
|
type KeyManager_CommandStreamServer interface {
|
|
Send(*ServerCommand) error
|
|
Recv() (*AgentMessage, error)
|
|
grpc.ServerStream
|
|
}
|
|
|
|
type keyManagerCommandStreamServer struct {
|
|
grpc.ServerStream
|
|
}
|
|
|
|
func (s *keyManagerCommandStreamServer) Send(m *ServerCommand) error {
|
|
return s.ServerStream.SendMsg(m)
|
|
}
|
|
|
|
func (s *keyManagerCommandStreamServer) Recv() (*AgentMessage, error) {
|
|
m := new(AgentMessage)
|
|
if err := s.ServerStream.RecvMsg(m); err != nil {
|
|
return nil, err
|
|
}
|
|
return m, nil
|
|
}
|
|
|
|
type KeyManagerClient interface {
|
|
Register(ctx context.Context, in *RegisterRequest, opts ...grpc.CallOption) (*RegisterResponse, error)
|
|
SyncKeys(ctx context.Context, in *SyncRequest, opts ...grpc.CallOption) (*SyncResponse, error)
|
|
UploadGeneratedKey(ctx context.Context, in *UploadKeyRequest, opts ...grpc.CallOption) (*UploadKeyResponse, error)
|
|
CommandStream(ctx context.Context, opts ...grpc.CallOption) (KeyManager_CommandStreamClient, error)
|
|
}
|
|
|
|
type UnimplementedKeyManagerServer struct{}
|
|
|
|
func (UnimplementedKeyManagerServer) Register(context.Context, *RegisterRequest) (*RegisterResponse, error) {
|
|
return nil, status.Errorf(codes.Unimplemented, "not implemented")
|
|
}
|
|
func (UnimplementedKeyManagerServer) SyncKeys(context.Context, *SyncRequest) (*SyncResponse, error) {
|
|
return nil, status.Errorf(codes.Unimplemented, "not implemented")
|
|
}
|
|
func (UnimplementedKeyManagerServer) UploadGeneratedKey(context.Context, *UploadKeyRequest) (*UploadKeyResponse, error) {
|
|
return nil, status.Errorf(codes.Unimplemented, "not implemented")
|
|
}
|
|
|
|
type keyManagerClient struct {
|
|
cc grpc.ClientConnInterface
|
|
}
|
|
|
|
func NewKeyManagerClient(cc grpc.ClientConnInterface) KeyManagerClient {
|
|
return &keyManagerClient{cc}
|
|
}
|
|
|
|
func (c *keyManagerClient) Register(ctx context.Context, in *RegisterRequest, opts ...grpc.CallOption) (*RegisterResponse, error) {
|
|
out := new(RegisterResponse)
|
|
if err := c.cc.Invoke(ctx, "/keymanager.v1.KeyManager/Register", in, out, opts...); err != nil {
|
|
return nil, err
|
|
}
|
|
return out, nil
|
|
}
|
|
|
|
func (c *keyManagerClient) SyncKeys(ctx context.Context, in *SyncRequest, opts ...grpc.CallOption) (*SyncResponse, error) {
|
|
out := new(SyncResponse)
|
|
if err := c.cc.Invoke(ctx, "/keymanager.v1.KeyManager/SyncKeys", in, out, opts...); err != nil {
|
|
return nil, err
|
|
}
|
|
return out, nil
|
|
}
|
|
|
|
func (c *keyManagerClient) UploadGeneratedKey(ctx context.Context, in *UploadKeyRequest, opts ...grpc.CallOption) (*UploadKeyResponse, error) {
|
|
out := new(UploadKeyResponse)
|
|
if err := c.cc.Invoke(ctx, "/keymanager.v1.KeyManager/UploadGeneratedKey", in, out, opts...); err != nil {
|
|
return nil, err
|
|
}
|
|
return out, nil
|
|
}
|
|
|
|
func (c *keyManagerClient) CommandStream(ctx context.Context, opts ...grpc.CallOption) (KeyManager_CommandStreamClient, error) {
|
|
desc := &grpc.StreamDesc{StreamName: "CommandStream", ServerStreams: true, ClientStreams: true}
|
|
stream, err := c.cc.NewStream(ctx, desc, "/keymanager.v1.KeyManager/CommandStream", opts...)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &keyManagerCommandStreamClient{stream}, nil
|
|
}
|