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 = "[email protected]"),
     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(
    "[email protected]", "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 → "[email protected]"

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: "[email protected]" "AQf3k..."
2

Query

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

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..." "[email protected]"
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

Tayra is in early access. Both editions are discounted from their list price for early adopters, through December 31, 2026.

Essentials Early bird
USD 1,500 /year

USD 1,999 list price - save USD 499 until December 31, 2026

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 Early bird
USD 2,500 /year

USD 3,299 list price - save USD 799 until December 31, 2026

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
  • Early bird pricing applies to licenses purchased on or before December 31, 2026. From January 1, 2027 the list prices apply: USD 1,999 (Essentials) and USD 3,299 (Compliance).
  • 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.
  • Decryption is perpetual and unconditional - Tayra runs no license check at all on decryption, so no licensing condition can ever make your stored data unreadable, and an authentic key always starts the app. Renewal never risks a data outage.
  • A single 12-month term is encoded in your license key. New encryption is allowed through the term plus a 60-day grace; after that, encrypting new data stops (it errors, never silently writes cleartext) until you renew.
  • Any release published on or before your term is licensed, regardless of version (minor, patch, or a new major). A newer release still decrypts your data, but needs a renewed key to encrypt with. Renewal extends the term by another 12 months.

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.