Post-quantum secure gRPC library with ML-KEM and Diffie-Hellman
$ dotnet add package SecureGrpc✅ SECURITY UPDATE: This library has been migrated from the vulnerable Grpc.Core to the secure Grpc.Net.Client 2.65.0. All known vulnerabilities (CVE-2023-32731, CVE-2023-33953) have been fixed!
Post-quantum secure gRPC communication made ridiculously easy!
SecureGrpc provides transparent end-to-end encryption for gRPC using state-of-the-art cryptography:
dotnet add package SecureGrpc
using SecureGrpc;
// One line to create a secure server!
using var server = Secure.Server(5001)
.OnMessage(data => {
Console.WriteLine($"Received: {Encoding.UTF8.GetString(data)}");
return Encoding.UTF8.GetBytes("Hello from server!");
})
.Start();
using SecureGrpc;
// One line to create a secure client!
using var client = Secure.Client("localhost", 5001);
// Send messages - automatically encrypted!
var response = await client.SendAsync("Hello server!");
Console.WriteLine($"Server said: {response}");
// Server-side (using ASP.NET Core)
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddGrpc()
.AddSecureGrpc(); // Add this line!
builder.Services.AddSingleton<YourServiceImpl>();
var app = builder.Build();
app.MapGrpcService<YourServiceImpl>();
app.Run();
// Client-side
var channel = GrpcChannel.ForAddress("https://localhost:5001")
.WithEncryption(); // Add this line!
var client = new YourService.YourServiceClient(channel);
var channel = "localhost".CreateSecureChannel(5001)
.WithHttpClient()
.Build();✅ No Security Vulnerabilities - Using secure Grpc.Net.Client 2.65.0
✅ Zero Configuration - Works out of the box
✅ Post-Quantum Secure - Resistant to quantum computer attacks
✅ Perfect Forward Secrecy - Past sessions remain secure
✅ Automatic Key Management - No manual key handling
✅ Session Management - Automatic session creation and reuse
✅ Cross-Language Compatible - Implement the protocol in any language
SecureGrpc protects against:
var server = Secure.Server(5001)
.OnMessage(async data => {
// Async processing
await ProcessDataAsync(data);
return responseData;
})
.Start();var client1 = Secure.Client("server1", 5001);
var client2 = Secure.Client("server2", 5002);
// Each client maintains its own secure session
await Task.WhenAll(
client1.SendAsync("Hello server 1"),
client2.SendAsync("Hello server 2")
);# Run all tests
dotnet test
# Run with coverage
dotnet test --collect:"XPlat Code Coverage"We welcome contributions! Please see CONTRIBUTING.md for details.
MIT License - see LICENSE for details.
Made with ❤️ for developers who care about security