====== 1.3 Comparison with .NET 10 ======
Why WvdS.System.Security.Cryptography instead of .NET 10 PQC?
----
===== .NET 10 PQC Support =====
Microsoft has built native PQC support into .NET 10 (Preview, GA November 2025)((Microsoft .NET 10 PQC: https://learn.microsoft.com/en-us/dotnet/api/system.security.cryptography?view=net-10.0)):
* ''MLDsa'' / ''MLDsaCng'' / ''MLDsaOpenSsl'' - ML-DSA signatures
* ''MLKem'' / ''MLKemCng'' / ''MLKemOpenSsl'' - ML-KEM key encapsulation
* ''SlhDsa'' / ''SlhDsaCng'' / ''SlhDsaOpenSsl'' - SLH-DSA signatures
* ''CompositeMLDsa'' - Hybrid approach (manual)
----
===== Advantages of Our Solution =====
^ Aspect ^ Microsoft .NET 10 ^ WvdS Solution ^
| **Availability** | .NET 10+ (November 2025) | .NET 8.0+ (available now) |
| **Migration Strategy** | New API, code changes | Drop-in replacement, 2 lines |
| **Hybrid Mode** | Manual via ''CompositeMLDsa'' | Automatic with ''CryptoMode.Hybrid'' |
| **Existing Code** | Must be rewritten | Works unchanged |
| **X.509 Integration** | New classes | Extends existing ''X509Certificate2'' |
| **CMS/PKCS#7** | Not documented | Full support |
| **RSA/ECDSA Extensions** | Separate classes | Extends existing ''RSA'', ''ECDsa'' |
----
===== Migration: .NET 10 vs. WvdS =====
==== With .NET 10 (new API) ====
// .NET 10: Completely new code required
using var mlDsa = MLDsa.Create(MLDsaAlgorithm.MLDsa65);
byte[] signature = mlDsa.SignData(data);
// Hybrid implemented manually
using var composite = CompositeMLDsa.Create(
CompositeMLDsaAlgorithm.MlDsa65Ecdsa256);
byte[] hybridSig = composite.SignData(data);
// Existing RSA code NO LONGER works
// using var rsa = RSA.Create(); // -> no PQ signature
==== With WvdS Solution (Drop-in) ====
using WvdS.System.Security.Cryptography;
// Two lines - done!
CryptoConfig.DefaultMode = CryptoMode.Hybrid;
// Existing code automatically works with PQ
using var rsa = RSA.Create(4096);
byte[] signature = rsa.SignData(data,
HashAlgorithmName.SHA256,
RSASignaturePadding.Pkcs1);
// -> Automatically contains RSA + ML-DSA signature
----
===== Scenario Comparison =====
==== Scenario 1: Migrate Existing Project ====
**Problem:** Large project with hundreds of RSA/ECDSA calls.
| .NET 10 | Change every location in code, use new classes |
| WvdS | ''CryptoConfig.DefaultMode = CryptoMode.Hybrid;'' - done |
==== Scenario 2: Backward Compatibility Required ====
**Problem:** Partners don't support PQC yet.
| .NET 10 | Two code paths: classical for old, PQ for new partners |
| WvdS | Hybrid mode: Old partners ignore PQ extension, new ones validate it |
==== Scenario 3: CMS/PKCS#7 Document Signatures ====
**Problem:** Existing ''SignedCms'' integration.
| .NET 10 | Not documented, likely manual integration |
| WvdS | ''SignedCmsExtensions'' extends existing API transparently |
==== Scenario 4: X.509 Certificate Chains ====
**Problem:** ''X509Chain.Build()'' should validate PQ signatures.
| .NET 10 | New chain classes required (unclear) |
| WvdS | Existing ''X509Chain'' works, PQ validation automatic |
----
===== When to Choose .NET 10? =====
Microsoft .NET 10 PQC can make sense when:
* Greenfield project (no existing codebase)
* Only .NET 10+ will be supported
* No hybrid strategy needed
* No CMS/PKCS#7 requirements
----
===== When to Choose WvdS? =====
WvdS.System.Security.Cryptography is better when:
* Existing project needs migration
* .NET 8.0 or earlier LTS versions are used
* Backward compatibility is important (Hybrid mode)
* CMS/PKCS#7 signatures are needed
* Minimal migration effort is desired
* Immediate availability (not waiting for .NET 10 GA)
----
===== Summary =====
^ Criterion ^ Recommendation ^
| Existing project | **WvdS** |
| .NET 8.0 LTS | **WvdS** |
| Hybrid strategy | **WvdS** |
| CMS/PKCS#7 | **WvdS** |
| Greenfield + .NET 10 only | .NET 10 or WvdS |
| PQ only (no hybrid) | Either works |
**Conclusion:** For most real-world migration scenarios, WvdS.System.Security.Cryptography offers the simplest and lowest-risk path to post-quantum cryptography.
----
===== Further Reading =====
* [[en:int:pqcrypt:developer:migration|Migration]] - Phase-based transition
* [[en:int:pqcrypt:developer:erste-schritte|Getting Started]] - Quick start
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//
{{tag>concepts comparison dotnet10 migration}}