<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://www.wvds.it/wiki/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="https://www.wvds.it/wiki/feed.php">
        <title>WvdS Doku - en:int:pqcrypt:szenarien:kurzreferenz</title>
        <description></description>
        <link>https://www.wvds.it/wiki/</link>
        <image rdf:resource="https://www.wvds.it/wiki/lib/exe/fetch.php?media=wiki:dokuwiki.svg" />
       <dc:date>2026-05-22T17:19:45+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://www.wvds.it/wiki/doku.php?id=en:int:pqcrypt:szenarien:kurzreferenz:csr&amp;rev=1769729904&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.wvds.it/wiki/doku.php?id=en:int:pqcrypt:szenarien:kurzreferenz:import-export&amp;rev=1769729964&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.wvds.it/wiki/doku.php?id=en:int:pqcrypt:szenarien:kurzreferenz:pki-aufbau&amp;rev=1769729892&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.wvds.it/wiki/doku.php?id=en:int:pqcrypt:szenarien:kurzreferenz:schluessel&amp;rev=1769729954&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.wvds.it/wiki/doku.php?id=en:int:pqcrypt:szenarien:kurzreferenz:signaturen&amp;rev=1769729926&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.wvds.it/wiki/doku.php?id=en:int:pqcrypt:szenarien:kurzreferenz:start&amp;rev=1769729880&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.wvds.it/wiki/doku.php?id=en:int:pqcrypt:szenarien:kurzreferenz:validierung&amp;rev=1769729916&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.wvds.it/wiki/doku.php?id=en:int:pqcrypt:szenarien:kurzreferenz:verschluesselung&amp;rev=1769729940&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.wvds.it/wiki/doku.php?id=en:int:pqcrypt:szenarien:kurzreferenz:zertifikat-verwaltung&amp;rev=1769729978&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://www.wvds.it/wiki/lib/exe/fetch.php?media=wiki:dokuwiki.svg">
        <title>WvdS Doku</title>
        <link>https://www.wvds.it/wiki/</link>
        <url>https://www.wvds.it/wiki/lib/exe/fetch.php?media=wiki:dokuwiki.svg</url>
    </image>
    <item rdf:about="https://www.wvds.it/wiki/doku.php?id=en:int:pqcrypt:szenarien:kurzreferenz:csr&amp;rev=1769729904&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-29T23:38:24+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Create CSR</title>
        <link>https://www.wvds.it/wiki/doku.php?id=en:int:pqcrypt:szenarien:kurzreferenz:csr&amp;rev=1769729904&amp;do=diff</link>
        <description>Create CSR

Compact examples for Certificate Signing Requests. -&gt; Details: CSR Scenarios

----------

Server CSR (TLS)


using var ecdsa = ECDsa.Create(ECCurve.NamedCurves.nistP384);

var dn = new X500DistinguishedNameBuilder();
dn.AddCommonName(&quot;api.example.com&quot;);
dn.AddOrganizationName(&quot;Example Corp&quot;);

var csr = new CertificateRequest(dn.Build(), ecdsa, HashAlgorithmName.SHA384);

// SANs
var sanBuilder = new SubjectAlternativeNameBuilder();
sanBuilder.AddDnsName(&quot;api.example.com&quot;);
sanBuilde…</description>
    </item>
    <item rdf:about="https://www.wvds.it/wiki/doku.php?id=en:int:pqcrypt:szenarien:kurzreferenz:import-export&amp;rev=1769729964&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-29T23:39:24+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Import/Export</title>
        <link>https://www.wvds.it/wiki/doku.php?id=en:int:pqcrypt:szenarien:kurzreferenz:import-export&amp;rev=1769729964&amp;do=diff</link>
        <description>Import/Export

Compact examples for import/export. -&gt; Details: Import/Export Scenarios

----------

PEM Export


var cert = new X509Certificate2(&quot;certificate.pfx&quot;, &quot;password&quot;);

// Certificate as PEM
string certPem = cert.ExportCertificatePem();
File.WriteAllText(&quot;certificate.pem&quot;, certPem);

// Private key as PEM (encrypted)
using var key = cert.GetECDsaPrivateKey();
string keyPem = key.ExportEncryptedPkcs8PrivateKeyPem(
    &quot;password&quot;u8, new PbeParameters(
        PbeEncryptionAlgorithm.Aes256…</description>
    </item>
    <item rdf:about="https://www.wvds.it/wiki/doku.php?id=en:int:pqcrypt:szenarien:kurzreferenz:pki-aufbau&amp;rev=1769729892&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-29T23:38:12+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Building PKI Infrastructure</title>
        <link>https://www.wvds.it/wiki/doku.php?id=en:int:pqcrypt:szenarien:kurzreferenz:pki-aufbau&amp;rev=1769729892&amp;do=diff</link>
        <description>Building PKI Infrastructure

Compact guide for building a PQ-capable PKI. -&gt; Details: PKI Scenarios

----------

Hierarchy


Root CA (Offline, ML-DSA-87)
    +-- Intermediate CA (Online, ML-DSA-65)
            +-- Server Certificates (Hybrid: ECDSA + ML-DSA)
            +-- Client Certificates (ML-DSA-65)
            +-- User Certificates (ML-DSA-65)</description>
    </item>
    <item rdf:about="https://www.wvds.it/wiki/doku.php?id=en:int:pqcrypt:szenarien:kurzreferenz:schluessel&amp;rev=1769729954&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-29T23:39:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Key Management</title>
        <link>https://www.wvds.it/wiki/doku.php?id=en:int:pqcrypt:szenarien:kurzreferenz:schluessel&amp;rev=1769729954&amp;do=diff</link>
        <description>Key Management

Compact examples for key management. -&gt; Details: Key Scenarios

----------

Generate Keys


// ML-DSA (Signatures)
using var mlDsa65 = MlDsaSigner.Create(MlDsaParameterSet.MlDsa65);
using var mlDsa87 = MlDsaSigner.Create(MlDsaParameterSet.MlDsa87);

// ML-KEM (Key Exchange)
using var mlKem768 = MlKem.Create(MlKemParameterSet.MlKem768);
using var mlKem1024 = MlKem.Create(MlKemParameterSet.MlKem1024);

// Classical (Hybrid)
using var ecdsa = ECDsa.Create(ECCurve.NamedCurves.nistP38…</description>
    </item>
    <item rdf:about="https://www.wvds.it/wiki/doku.php?id=en:int:pqcrypt:szenarien:kurzreferenz:signaturen&amp;rev=1769729926&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-29T23:38:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Digital Signatures</title>
        <link>https://www.wvds.it/wiki/doku.php?id=en:int:pqcrypt:szenarien:kurzreferenz:signaturen&amp;rev=1769729926&amp;do=diff</link>
        <description>Digital Signatures

Compact examples for signatures. -&gt; Details: Signature Scenarios

----------

RSA Hybrid Signature


using var rsa = RSA.Create(4096);
byte[] data = Encoding.UTF8.GetBytes(&quot;Data to sign&quot;);

// Hybrid signature (RSA + ML-DSA)
byte[] signature = rsa.SignData(data,
    HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1,
    CryptoMode.Hybrid);

// Verify
bool valid = rsa.VerifyData(data, signature,
    HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1,
    CryptoMode.Hybrid);</description>
    </item>
    <item rdf:about="https://www.wvds.it/wiki/doku.php?id=en:int:pqcrypt:szenarien:kurzreferenz:start&amp;rev=1769729880&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-29T23:38:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Quick Reference</title>
        <link>https://www.wvds.it/wiki/doku.php?id=en:int:pqcrypt:szenarien:kurzreferenz:start&amp;rev=1769729880&amp;do=diff</link>
        <description>Quick Reference

Compact code examples for quick start. For detailed explanations, see the linked scenarios.

----------

PKI &amp; Certificates
  Example    Description    Details   PKI Infrastructure  Root CA, Intermediate CA, hierarchy  -&gt; PKI Scenarios  Create CSR  Server, client, code signing</description>
    </item>
    <item rdf:about="https://www.wvds.it/wiki/doku.php?id=en:int:pqcrypt:szenarien:kurzreferenz:validierung&amp;rev=1769729916&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-29T23:38:36+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Validation</title>
        <link>https://www.wvds.it/wiki/doku.php?id=en:int:pqcrypt:szenarien:kurzreferenz:validierung&amp;rev=1769729916&amp;do=diff</link>
        <description>Validation

Compact examples for certificate validation. -&gt; Details: Validation Scenarios

----------

Single Certificate


var cert = new X509Certificate2(&quot;certificate.crt&quot;);

// Time validity
bool timeValid = DateTime.UtcNow &gt;= cert.NotBefore &amp;&amp;
                 DateTime.UtcNow &lt;= cert.NotAfter;

// Check PQ signature
bool hasPq = cert.HasPqSignature();
if (hasPq)
{
    bool pqValid = cert.VerifyPqSignature();
}</description>
    </item>
    <item rdf:about="https://www.wvds.it/wiki/doku.php?id=en:int:pqcrypt:szenarien:kurzreferenz:verschluesselung&amp;rev=1769729940&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-29T23:39:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Encryption</title>
        <link>https://www.wvds.it/wiki/doku.php?id=en:int:pqcrypt:szenarien:kurzreferenz:verschluesselung&amp;rev=1769729940&amp;do=diff</link>
        <description>Encryption

Compact examples for encryption. -&gt; Details: Encryption Scenarios

----------

ML-KEM Key Encapsulation


// Receiver: Generate key pair
using var mlKem = MlKem.Create(MlKemParameterSet.MlKem768);
byte[] publicKey = mlKem.ExportPublicKey();

// Sender: Encapsulate shared secret
var encap = MlKem.Encapsulate(publicKey);
byte[] ciphertext = encap.Ciphertext;
byte[] senderSecret = encap.SharedSecret;

// Receiver: Decapsulate shared secret
byte[] receiverSecret = mlKem.Decapsulate(ciphe…</description>
    </item>
    <item rdf:about="https://www.wvds.it/wiki/doku.php?id=en:int:pqcrypt:szenarien:kurzreferenz:zertifikat-verwaltung&amp;rev=1769729978&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-29T23:39:38+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Certificate Management</title>
        <link>https://www.wvds.it/wiki/doku.php?id=en:int:pqcrypt:szenarien:kurzreferenz:zertifikat-verwaltung&amp;rev=1769729978&amp;do=diff</link>
        <description>Certificate Management

Compact examples for certificate management. -&gt; Details: Management Scenarios

----------

Renew Certificate (Same Key)


var caCert = new X509Certificate2(&quot;intermediate-ca.pfx&quot;, &quot;password&quot;);
var oldCert = new X509Certificate2(&quot;server.pfx&quot;, &quot;password&quot;);

var privateKey = oldCert.GetECDsaPrivateKey();

var request = new CertificateRequest(
    oldCert.SubjectName, (ECDsa)privateKey, HashAlgorithmName.SHA384);

// Copy extensions (except SKI)
foreach (var ext in oldCert.Ext…</description>
    </item>
</rdf:RDF>
