Novolis.Messaging.SecureText
2026.1.1.47
dotnet add package Novolis.Messaging.SecureText --version 2026.1.1.47
NuGet\Install-Package Novolis.Messaging.SecureText -Version 2026.1.1.47
<PackageReference Include="Novolis.Messaging.SecureText" Version="2026.1.1.47" />
<PackageVersion Include="Novolis.Messaging.SecureText" Version="2026.1.1.47" />
<PackageReference Include="Novolis.Messaging.SecureText" />
paket add Novolis.Messaging.SecureText --version 2026.1.1.47
#r "nuget: Novolis.Messaging.SecureText, 2026.1.1.47"
#:package Novolis.Messaging.SecureText@2026.1.1.47
#addin nuget:?package=Novolis.Messaging.SecureText&version=2026.1.1.47
#tool nuget:?package=Novolis.Messaging.SecureText&version=2026.1.1.47
Novolis.Messaging.SecureText
Transport-neutral message envelopes and endpoint sessions for secure-text v1.
Install
dotnet add package Novolis.Messaging.SecureText
What this package provides
- Canonical binary
SecureTextEnvelopeserialization. - Header authenticated data that binds routing, timestamp, key epoch, and counter.
- A bounded replay window and persistable counter state.
SecureTextSessionto protect and open UTF-8 text at endpoints.SecureTextGroupIdand deterministic group-scoped pair conversation derivation for ciphertext-per-recipient group delivery.
The relay transports serialized envelopes as opaque bytes. It may validate size and routing fields, but it does not decrypt content.
Usage
using Novolis.Messaging.SecureText;
using Novolis.Security.SecureText;
var localIdentity = SecureTextDeviceIdentity.Create();
var localBundle = SecureTextPublicBundle.Create(localIdentity);
var trustedPeer = new SecureTextTrustedPeer(peerBundle);
using var session = new SecureTextSession(
localIdentity,
localBundle,
peerBundle,
trustedPeer,
SecureTextConversationId.New());
var envelope = session.Protect("authenticated text");
byte[] wireBytes = SecureTextEnvelopeCodec.Serialize(envelope);
Persist session.State.Snapshot() before sending and after each successful receive. A reset
counter weakens replay protection. Store private identities with a protected implementation of
ISecureTextKeyStore; never place them in an ordinary file or configuration.
Approved group profile
SecureTextConversationId.DeriveForGroupMember(groupId, localDevice, peerDevice) derives a
separate conversation and key scope for one sender/recipient copy inside a group membership epoch.
The application sends one independently authenticated ciphertext to every approved recipient; it
does not share a symmetric group key. The group id is therefore bound through the derived
conversation id and authenticated envelope header.
Membership approval, roster delivery, and rekeying are transport/application responsibilities. Treat every membership change as a new group id and obtain explicit approval from every device before sending to that roster.
Limits
Secure-text v1 provides pairwise cryptographic sessions. Its approved group profile is pairwise fan-out, not sender keys or an MLS implementation. It is not an audited ratchet protocol and makes no forward-secrecy or post-compromise-security claim.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Novolis.Security.SecureText (>= 2026.1.1.48)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Novolis.Messaging.SecureText:
| Package | Downloads |
|---|---|
|
Novolis.Chat.Hosting.AspNetCore
ASP.NET Core SignalR orchestration for encrypted chat conversations. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2026.1.1.47 | 32 | 10/4/2026 |
| 2026.1.1.46 | 50 | 10/1/2026 |
| 2026.1.1.45 | 53 | 9/30/2026 |