public ActionResult PostInfluxTelemetry([FromBody] InfluxTelemetry telemetryPackage) { // verify in coming data if (telemetryPackage?.NodeId == null || string.IsNullOrWhiteSpace(telemetryPackage.Signature) || telemetryPackage.Payload == null || telemetryPackage.Payload.Count == 0) { Console.WriteLine("bad request"); return(BadRequest()); } // Get Node key from keystore string nodeKey; try { nodeKey = _keyStore.GetKeyForNode(telemetryPackage.NodeId); } catch (KeyNotFoundException) { Console.WriteLine($"Node Unknown: {telemetryPackage.NodeId}"); return(StatusCode(403)); } // Verify Signature string signedPayload = string.Join("", telemetryPackage.Payload); bool signatureValid = SignatureVerifier.IsSignatureValid(signedPayload, telemetryPackage.Signature, nodeKey); if (!signatureValid) { Console.WriteLine($"Bad signature from node: {telemetryPackage.NodeId}"); return(StatusCode(403)); } Console.WriteLine($"Accepted telemetry from {telemetryPackage.NodeId} [{telemetryPackage.Payload.Count} metrics]"); // Signature valid - record to db if (_influx.Enqueue(telemetryPackage.Payload, true)) { return(Accepted()); } else { return(StatusCode(400)); } }