Coming Soon – .NET 8, 9 & 10

PII Data Protection GDPR Compliance
for .NET

Field-level encryption, HMAC blind indexes, and GDPR-compliant crypto-shredding. Declare which fields are personal data. Tayra handles the rest.

Why Field-Level Encryption?

Full-disk encryption protects data at rest. TLS protects data in transit. But neither protects individual PII fields inside your database, event store, or message bus.

🛡

GDPR Article 17

The right to erasure requires you to delete personal data on request. In event-sourced systems, you can't delete events, but you can shred the encryption key.

🔒

Defense in Depth

A database breach exposes everything. Field-level encryption means PII stays encrypted even if your database is compromised.

Event Sourcing Ready

Events are immutable. You can't modify or delete them. Crypto-shredding lets you comply with GDPR while preserving your event history.

Declare. Encrypt. Query.

Annotate your model. Tayra encrypts, indexes, and shreds automatically.

Program.cs
services.AddTayra(opts =>
{
    opts.LicenseKey = "...";
    opts.Entity<Customer>(e =>
    {
        e.BlindIndex(c => c.Email)
            .WithLowercase()
            .WithTrim();
    });
}).UsePostgreSqlKeyStore(connectionString);
Customer.cs
public class Customer
{
    [DataSubjectId]
    public Guid Id { get; set; }

    [PersonalData]
    public string Name { get; set; }

    [PersonalData(Replacement = "redacted@example.com"),
     BlindIndex(Transforms = ["lowercase", "trim"])]
    public string Email { get; set; }

    // HMAC hash - auto-populated
    public string? EmailIndex { get; set; }
}
Usage
// Encrypt + compute blind indexes in one call
await fieldEncrypter.EncryptAsync(customer);

// Query encrypted data by blind index
var hash = await blindIndexer.ComputeHashAsync(
    "alice@example.com", "EmailIndex",
    typeof(Customer));
var match = await db.Customers
    .Where(c => c.EmailIndex == hash).FirstAsync();

// GDPR erasure - delete the key, data is gone forever
await cryptoEngine.DeleteKeyAsync($"cust-{customer.Id}");
// Name → "", Email → "redacted@example.com"

How It Works

Four operations. One key per data subject. Full GDPR compliance.

1

Encrypt

Tayra scans your model for [PersonalData] attributes, generates a key per data subject, and encrypts each field with AES-256-GCM.

Name: "Alice" "AQz8x..."
Email: "a@b.com" "AQf3k..."
2

Query

Search encrypted fields using HMAC blind indexes. Same transforms applied to the search value produce the same hash.

Search: "alice@example.com"
HMAC: "a3f8c1..."
WHERE EmailIndex = "a3f8c1..."
3

Decrypt

Fetch the key, decrypt every field, and return the original values. Transparent to your application code.

Name: "AQz8x..." "Alice"
Email: "AQf3k..." "a@b.com"
4

Shred

GDPR erasure request? Delete the key. The data becomes permanently unreadable. Replacement values are returned instead.

Name: "AQz8x..." ""
Email: "AQf3k..." "redacted"

Everything You Need for PII Protection

Field-level encryption, searchable blind indexes, GDPR compliance, key management, and framework integrations. All in one library.

AES-256-GCM

Encryption Engine

Authenticated encryption with integrity guarantees and a versioned wire format.

  • AES-256-GCM with unique nonce per field
  • Automatic integrity verification on every decrypt
  • One encryption key per data subject
  • In-memory key caching for high throughput
  • Hardware-accelerated on modern CPUs
GDPR

GDPR Compliance

Built-in support for the GDPR articles that matter most for data protection.

  • Crypto-shredding (Art. 17) erase by deleting keys
  • PII Data Map & Art. 30 processing records
  • Signed reports ECDSA-P256 detached signatures
  • Scheduled archive durable, pluggable backend
  • Tamper-evident audit hash-chained trail (Compliance)
  • Breach notification Art. 33/34 assessment
[PersonalData]

Declarative Attributes

Annotate your models. Tayra discovers and encrypts PII fields automatically.

  • [PersonalData] mark fields for encryption
  • [DataSubjectId] identify data owners
  • [DeepPersonalData] encrypt nested objects
  • [SerializedPersonalData] non-string types
IKeyStore

Key Store Providers

Store encryption keys where your security policy requires. Bring your own with a simple interface.

  • PostgreSQL auto-migration, retry logic
  • HashiCorp Vault KV v2 with token auth
  • Azure Key Vault DefaultAzureCredential
  • AWS Parameter Store SecureString
  • AWS Secrets Manager rotation & replication
  • SQLite & In-Memory for local development
[BlindIndex]

Blind Indexes

HMAC-based blind indexes let you query encrypted fields without exposing plaintext.

  • HMAC-SHA256 one-way hashes for queries
  • Transforms: lowercase, trim, digits, last4
  • Compound indexes across multiple fields
  • Separate HMAC keys from encryption keys
  • Configurable bit-length truncation
7 Integrations

Framework Integrations

Deep integrations across the .NET stack - all on permissively-licensed (MIT/Apache-2.0) dependencies. Annotate once, protect everywhere.

  • EF Core · Marten · MongoDB data stores
  • Wolverine message bus encryption
  • Serilog · System.Text.Json · ASP.NET Core
dotnet tayra

CLI & Compliance Tooling

Operational commands and compliance artifacts that make Tayra a platform, not just a library.

  • PII Data Map Art. 30 processing records
  • Compliance Reports Art. 15, 30, 33/34 HTML
  • CLI Tool inventory, verify, rotate, shred
  • CI/CD gate dotnet tayra verify
OpenTelemetry + Roslyn

Observability & Quality

Production monitoring, compile-time validation, and audit trail across the full lifecycle.

  • 13 OTel metrics encrypt, decrypt, key ops
  • Grafana dashboards 20 panels + 9 Prometheus alerts
  • 6 Roslyn analyzers catch errors at compile time
  • Audit trail every encrypt, decrypt, shred logged
  • IHealthCheck key store connectivity

Layered Architecture

Use Tayra.Core standalone or with deep framework integrations.

Your Application
Framework Integrations
Tayra.EFCore
Interceptors
Tayra.Marten
Documents & Events
Tayra.MongoDB
Collection Wrapper
Tayra.Wolverine
Message Pipeline
Tayra.Serilog
Log Scrubbing
Tayra.Json
Serialization
Tayra.AspNetCore
Response Scrubbing
Compliance & Tooling
PII Data Map
Art. 30 Inventory
Compliance Reports
Art. 15, 30, 33/34
dotnet tayra CLI
Ops & CI/CD
Grafana Dashboards
Monitoring & Alerts
Tayra.Core
Attributes – AES-256-GCM – HMAC Blind Indexes – Fluent API – Roslyn Analyzers
Zero Dependencies net8.0 + net9.0 + net10.0 Standalone
Key Stores
PostgreSQL
HashiCorp Vault
Azure Key Vault
AWS Parameter Store
AWS Secrets Manager
Local development
SQLite
InMemory

Read the Docs

A 5-minute quick start, full reference for every framework integration, GDPR Article 15/30/33/34 report generators, and production patterns for key stores, observability, and multi-tenancy - all at docs.tayra.dev.

Open Documentation

Pricing

Essentials
USD 1,500 /year

Protect your data - encryption, shredding, and all integrations. Covers every product, service, and deployment operated by your legal entity, with unlimited developers and servers.

  • AES-256-GCM field-level encryption
  • Crypto-shredding (GDPR erasure)
  • Blind indexes for encrypted search
  • All key stores & integrations
  • Key rotation & multi-tenancy
  • OpenTelemetry & health checks
  • Unlimited developers, servers & products
  • 12 months of updates via your license key - every release, any version
  • Email support
Compliance
USD 2,500 /year

Prove you're protecting your data - audit, inventory, and regulatory reporting. Same per-legal-entity scope as Essentials.

  • Everything in Essentials
  • PII inventory & Art. 30 data map
  • Data subject access & portability (Art. 15/20)
  • Breach notification (Art. 33/34)
  • ECDSA-signed reports
  • Scheduled report runs & archive
  • Persistent hash-chained audit trail
  • Curated Grafana dashboard
  • Priority email support
  • Per legal entity - one license covers every product, service, and deployment operated by the licensed entity. Subsidiaries and affiliates each require their own license.
  • Free trial license - fully functional, no feature restrictions.
  • A valid license key (trial or production) is required in all environments.
  • Maintenance is a single 12-month window encoded in your license key - the key activates any release published on or before its maintenance date, regardless of version (minor, patch, or a new major version). Activation is decided by the release's publication date, not the current date.
  • Renewal extends your maintenance window by another 12 months.
  • Perpetual fallback - every release your key activated keeps working forever, even if you don't renew. Releases published after your maintenance window require a renewed key.

Built by the People Behind the Stack

Babu Annamalai

Founder, Radarleaf Technologies

JasperFx Critter Stack Co-Maintainer ReverseMarkdown Maintainer

Tayra is built and maintained by a maintainer of the JasperFx Critter Stack. Deep knowledge of Marten, Wolverine, Weasel, and the .NET ecosystem ensures first-class integration and long-term support.

What's in the Name?

The tayra is a tropical mustelid - agile, sharp, and fiercely protective. It fits right into the JasperFx Critter Stack family alongside Marten, Wolverine, and Weasel.

Just as the tayra guards its territory, this library guards your users' personal data.

Get Early Access

Be the first to know when Tayra launches. Early access members get priority onboarding.