// 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"` } 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 }