diff --git a/config.yaml.sample b/config.yaml.sample index 246f7b61a69df770e0bf38f4adf7fd91338622b9..1ee2d92b8a78a1c7cab3001a72a679b71314c503 100644 --- a/config.yaml.sample +++ b/config.yaml.sample @@ -20,6 +20,9 @@ vereignCertFile: vereign_ca.cer vereignCertKey: vereign_ca.key caCertFile: ca.crt +# Maximum Message Size (in megabytes) +maxMessageSize: 32 + # Read Certificates From Vault Server vaultAddress: http://10.6.10.119:8200 vaultToken: 00000000-0000-0000-0000-000000000000 diff --git a/handler/generate_keypair.go b/handler/generate_keypair.go index 89fa5a0e27e15b88eb5236ee6ec4c1c861ab1b2d..1a7e20ed3133d461eaaf3be201756b3ffed96382 100644 --- a/handler/generate_keypair.go +++ b/handler/generate_keypair.go @@ -39,7 +39,7 @@ func (s *KeyStorageServerImpl) GenerateKeyPair(ctx context.Context, auth := s.CreateAuthentication(ctx) client := &client.DataStorageClientImpl{} - client.SetUpClient(auth, s.DataStorageUrl, s.CertFilePath, s.KeyFilePath, s.CaCertFilePath) + client.SetUpClient(auth, s.DataStorageUrl, s.CertFilePath, s.KeyFilePath, s.CaCertFilePath, s.MaxMessageSize) defer client.CloseClient() generateKeyPairResponse := &api.GenerateKeyPairResponse{} diff --git a/handler/handler.go b/handler/handler.go index cd29dbdf20db89c79d9b1ec65daca34eb5fdae8a..fac6e94d1b167a93fabceb2c157b913340ed6448 100644 --- a/handler/handler.go +++ b/handler/handler.go @@ -40,6 +40,7 @@ type KeyStorageServerImpl struct { CaCertFilePath string VereignCertFilePath string VereignPrivateKeyFilePath string + MaxMessageSize int } func (s *KeyStorageServerImpl) CreateAuthentication(ctx context.Context) *authentication.Authentication { @@ -62,7 +63,7 @@ func (s *KeyStorageServerImpl) GetKey(ctx context.Context, in *api.GetKeyRequest auth := s.CreateAuthentication(ctx) client := &client.DataStorageClientImpl{} - client.SetUpClient(auth, s.DataStorageUrl, s.CertFilePath, s.KeyFilePath, s.CaCertFilePath) + client.SetUpClient(auth, s.DataStorageUrl, s.CertFilePath, s.KeyFilePath, s.CaCertFilePath, s.MaxMessageSize) defer client.CloseClient() getKeyResponse := &api.GetKeyResponse{} @@ -109,7 +110,7 @@ func (s *KeyStorageServerImpl) SetKey(ctx context.Context, in *api.SetKeyRequest auth := s.CreateAuthentication(ctx) client := &client.DataStorageClientImpl{} - client.SetUpClient(auth, s.DataStorageUrl, s.CertFilePath, s.KeyFilePath, s.CaCertFilePath) + client.SetUpClient(auth, s.DataStorageUrl, s.CertFilePath, s.KeyFilePath, s.CaCertFilePath, s.MaxMessageSize) defer client.CloseClient() setKeyResponse := &api.SetKeyResponse{} @@ -157,7 +158,7 @@ func (s *KeyStorageServerImpl) ReserveKeyUUID(ctx context.Context, in *api.Reser auth := s.CreateAuthentication(ctx) client := &client.DataStorageClientImpl{} - client.SetUpClient(auth, s.DataStorageUrl, s.CertFilePath, s.KeyFilePath, s.CaCertFilePath) + client.SetUpClient(auth, s.DataStorageUrl, s.CertFilePath, s.KeyFilePath, s.CaCertFilePath, s.MaxMessageSize) defer client.CloseClient() reserveKeyUUIDResponse := &api.ReserveKeyUUIDResponse{} diff --git a/handler/revoke.go b/handler/revoke.go index 79994ea4abfb16d9b81531f3104683875bd1ed4b..4522d3585bd5ede0e9326e78941afb7c5f39238e 100644 --- a/handler/revoke.go +++ b/handler/revoke.go @@ -29,7 +29,7 @@ func (s *KeyStorageServerImpl) Revoke(ctx context.Context, in *api.RevokeRequest auth := s.CreateAuthentication(ctx) client := &client.DataStorageClientImpl{} - client.SetUpClient(auth, s.DataStorageUrl, s.CertFilePath, s.KeyFilePath, s.CaCertFilePath) + client.SetUpClient(auth, s.DataStorageUrl, s.CertFilePath, s.KeyFilePath, s.CaCertFilePath, s.MaxMessageSize) defer client.CloseClient() revokeResponse := &api.RevokeResponse{} diff --git a/main.go b/main.go index c6595c4d5b13a22486977b38778e134378a772c4..b49b48d44fc6fcdbe16ff6d77f136c7927e1beee 100644 --- a/main.go +++ b/main.go @@ -45,10 +45,12 @@ func main() { vereignCertFilePath := certDir + "/" + viper.GetString("vereignCertFile") vereignPrivateKeyFilePath := certDir + "/" + viper.GetString("vereignCertKey") + maxMessageSize := viper.GetInt("maxMessageSize") + // fire the gRPC server in a goroutine go func() { err := server.StartGRPCServer(grpcAddress, certFilePath, privateKeyFilePath, caCertFilePath, vereignCertFilePath, - vereignPrivateKeyFilePath, dataStorageAddress) + vereignPrivateKeyFilePath, dataStorageAddress, maxMessageSize) if err != nil { log.Fatalf("failed to start gRPC server: %s", err) } diff --git a/server/configs.go b/server/configs.go index 6a95ea49be11eaf734bb0785fdb2e385779c0167..d66e379e5d9d5bf3f19626119ee638ac9268b2fb 100644 --- a/server/configs.go +++ b/server/configs.go @@ -21,6 +21,8 @@ func SetConfigValues() { viper.SetDefault("vereignCertFile", "vereign_ca.cer") viper.SetDefault("vereignCertKey", "vereign_ca.key") + viper.SetDefault("maxMessageSize", "32") + // Read Config File viper.SetConfigName("config") viper.AddConfigPath(".") diff --git a/server/server.go b/server/server.go index 89fb106a28310a92bd0071f62e44f868e1d676e0..8ff5003e77c2e2349cac8a51ccec3d39ea9e0017 100644 --- a/server/server.go +++ b/server/server.go @@ -72,7 +72,7 @@ func authenticateClient(ctx context.Context, s *handler.KeyStorageServerImpl, in } sessionClient := &client.DataStorageClientImpl{} - sessionClient.SetUpClient(viamAuth, viper.GetString("dataStorageUrl"), pkgCertFile, pkgKeyFile, pkgCaCertFile) + sessionClient.SetUpClient(viamAuth, viper.GetString("dataStorageUrl"), pkgCertFile, pkgKeyFile, pkgCaCertFile, viper.GetInt("maxMessageSize")) defer sessionClient.CloseClient() if clientAuth.Uuid == viamAuth.Uuid { @@ -109,7 +109,7 @@ func unaryInterceptor(ctx context.Context, req interface{}, info *grpc.UnaryServ return handler1(ctx, req) } -func StartGRPCServer(address, certFilePath, privateKeyFilePath, caCertFilePath, vereignCertFilePath, vereignPrivateKeyFilePath, dataStorageAddress string) error { +func StartGRPCServer(address, certFilePath, privateKeyFilePath, caCertFilePath, vereignCertFilePath, vereignPrivateKeyFilePath, dataStorageAddress string, maxMessageSize int) error { pkgCertFile = certFilePath pkgKeyFile = privateKeyFilePath pkgCaCertFile = caCertFilePath @@ -128,6 +128,7 @@ func StartGRPCServer(address, certFilePath, privateKeyFilePath, caCertFilePath, CaCertFilePath: caCertFilePath, VereignCertFilePath: vereignCertFilePath, VereignPrivateKeyFilePath: vereignPrivateKeyFilePath, + MaxMessageSize: maxMessageSize, } // Create the TLS credentials @@ -137,8 +138,11 @@ func StartGRPCServer(address, certFilePath, privateKeyFilePath, caCertFilePath, } // Create an array of gRPC options with the credentials - opts := []grpc.ServerOption{grpc.Creds(creds), - grpc.UnaryInterceptor(unaryInterceptor)} + opts := []grpc.ServerOption{ + grpc.Creds(creds), + grpc.UnaryInterceptor(unaryInterceptor), + grpc.MaxRecvMsgSize(viper.GetInt("maxMessageSize")*1024*1024), + } // create a gRPC server object grpcServer := grpc.NewServer(opts...)