<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Rushikesh Kakadiya</title>
    <description>The latest articles on DEV Community by Rushikesh Kakadiya (@rushikeshkakadiya).</description>
    <link>https://dev.to/rushikeshkakadiya</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3907270%2Ffc5f6685-fcad-44a6-8e61-59484787ee12.jpeg</url>
      <title>DEV Community: Rushikesh Kakadiya</title>
      <link>https://dev.to/rushikeshkakadiya</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rushikeshkakadiya"/>
    <language>en</language>
    <item>
      <title>The Quantum Threat Is Real — Meet QSafe PQC, a Post-Quantum Cryptography API (And We Need Beta Testers!)</title>
      <dc:creator>Rushikesh Kakadiya</dc:creator>
      <pubDate>Fri, 01 May 2026 09:36:13 +0000</pubDate>
      <link>https://dev.to/rushikeshkakadiya/the-quantum-threat-is-real-meet-qsafe-pqc-a-post-quantum-cryptography-api-and-we-need-beta-25ff</link>
      <guid>https://dev.to/rushikeshkakadiya/the-quantum-threat-is-real-meet-qsafe-pqc-a-post-quantum-cryptography-api-and-we-need-beta-25ff</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0lu3hhsp6rpxi55kiy12.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0lu3hhsp6rpxi55kiy12.png" alt=" " width="800" height="435"&gt;&lt;/a&gt;&amp;gt; &lt;strong&gt;TL;DR:&lt;/strong&gt; I built a Post-Quantum Cryptography API platform called &lt;a href="https://qsafepqc1.vercel.app/" rel="noopener noreferrer"&gt;QSafe PQC&lt;/a&gt;. It gives developers access to NIST-standardized PQC algorithms via a simple REST API and multi-language SDKs. I'm looking for volunteer testers to stress-test it, break it, and give feedback. Read on to see how it's built and why it matters.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Post-Quantum Cryptography Matters Right Now
&lt;/h2&gt;

&lt;p&gt;In 2024, NIST finalized the first post-quantum cryptography standards — ML-KEM (formerly Kyber), ML-DSA (formerly Dilithium), and SLH-DSA (SPHINCS+). These are the cryptographic algorithms designed to resist attacks from quantum computers.&lt;/p&gt;

&lt;p&gt;Here's the uncomfortable truth: &lt;strong&gt;the systems securing your data today — RSA, ECC, even HTTPS — are broken the moment a sufficiently powerful quantum computer exists.&lt;/strong&gt; "Harvest now, decrypt later" attacks are already happening. Nation-state actors are collecting encrypted traffic today, betting they'll be able to decrypt it in 5–10 years.&lt;/p&gt;

&lt;p&gt;Most developers know this is coming. But integrating PQC into an existing app still feels like assembling a nuclear reactor from scratch. The libraries are low-level, the documentation is sparse, and the API surface is nothing like what we're used to.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;That's the gap QSafe PQC is designed to close.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is QSafe PQC?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://qsafepqc1.vercel.app/" rel="noopener noreferrer"&gt;QSafe PQC&lt;/a&gt; is a developer-first API platform that wraps NIST-standardized post-quantum algorithms behind a clean, familiar REST interface. Think of it as "Stripe for PQC" — you shouldn't need a PhD in lattice cryptography to protect your users' data from quantum attacks.&lt;/p&gt;

&lt;p&gt;Here's what you can do with it today:&lt;/p&gt;

&lt;h3&gt;
  
  
  Keypair Generation
&lt;/h3&gt;

&lt;p&gt;Generate quantum-safe keypairs using NIST-approved algorithms. No local library setup, no FFI headaches — one API call and you have a keypair ready to use.&lt;/p&gt;

&lt;h3&gt;
  
  
  Encrypt &amp;amp; Decrypt
&lt;/h3&gt;

&lt;p&gt;Encrypt messages with a recipient's public key. Decrypt with the private key. Works exactly like you'd expect, just quantum-safe.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sign &amp;amp; Verify
&lt;/h3&gt;

&lt;p&gt;Sign documents and messages. Verify signatures. Same mental model as RSA or ECDSA, but built on ML-DSA or SPHINCS+ under the hood.&lt;/p&gt;

&lt;h3&gt;
  
  
  File Operations
&lt;/h3&gt;

&lt;p&gt;Upload files to sign or verify them in bulk — perfect for verifying the integrity of binaries, release artifacts, or any document pipeline.&lt;/p&gt;

&lt;h3&gt;
  
  
  API Keys &amp;amp; Quotas
&lt;/h3&gt;

&lt;p&gt;Generate time-limited API keys (auto-expire after 1 year), monitor your daily quota usage, and manage 2FA from the dashboard.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Tech Stack (And Why I Chose Each Piece)
&lt;/h2&gt;

&lt;p&gt;I wanted to build this on a modern, developer-friendly stack that's also production-grade. Here's what's powering QSafe PQC:&lt;/p&gt;

&lt;h3&gt;
  
  
  Neon — Serverless PostgreSQL
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://neon.tech/" rel="noopener noreferrer"&gt;Neon&lt;/a&gt; is the database backbone. I chose Neon because its serverless branching model is a perfect fit for a project at this stage — I can spin up database branches for feature development without paying for multiple full Postgres instances. Cold-start performance is excellent for API workloads, and the connection pooler handles traffic spikes gracefully.&lt;/p&gt;

&lt;p&gt;User accounts, keypairs (encrypted at rest), API keys, usage logs — all stored in Neon. The schema-first approach with Postgres gives me the relational guarantees I need for cryptographic key metadata.&lt;/p&gt;

&lt;h3&gt;
  
  
  Upstash — Serverless Redis
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://upstash.com/" rel="noopener noreferrer"&gt;Upstash&lt;/a&gt; handles all things ephemeral and fast: rate limiting, API key validation caching, and session state. The per-request pricing model is ideal since traffic is bursty and unpredictable at this stage.&lt;/p&gt;

&lt;p&gt;Using Upstash for rate limiting means I can enforce per-API-key quotas at the edge without hitting Neon on every request. A sliding window rate limiter in Upstash keeps abuse in check while adding barely any latency.&lt;/p&gt;

&lt;h3&gt;
  
  
  Vercel — Frontend
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://vercel.com/" rel="noopener noreferrer"&gt;Vercel&lt;/a&gt; hosts the React frontend. The dashboard (keypair management, crypto operations, file uploads) is a Vite + React SPA deployed on Vercel's global CDN. Preview deployments on every PR mean I can review UI changes in context before merging.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hugging Face — Backend API
&lt;/h3&gt;

&lt;p&gt;The backend API is deployed on &lt;a href="https://huggingface.co/spaces" rel="noopener noreferrer"&gt;Hugging Face Spaces&lt;/a&gt;. Hugging Face gives me a reliable, always-on hosting environment for the API server without the overhead of managing infrastructure. It also makes it easy to iterate quickly — pushing a new model or algorithm implementation is as simple as a git push.&lt;/p&gt;

&lt;h3&gt;
  
  
  GitHub CLI + Git — CI/CD, Actions &amp;amp; Releases
&lt;/h3&gt;

&lt;p&gt;The entire release pipeline runs through &lt;a href="https://github.com/features/actions" rel="noopener noreferrer"&gt;GitHub Actions&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;On every PR:&lt;/strong&gt; lint, type-check, unit tests, and a Vercel preview deployment spin up automatically.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;On merge to &lt;code&gt;main&lt;/code&gt;:&lt;/strong&gt; integration tests run against a Neon branch, and if green, the production deployment kicks off.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Releases:&lt;/strong&gt; SDK packages are published to npm, PyPI, Maven Central, and pkg.go.dev via tagged releases. The &lt;a href="https://cli.github.com/" rel="noopener noreferrer"&gt;GitHub CLI (&lt;code&gt;gh&lt;/code&gt;)&lt;/a&gt; is used in CI to create GitHub Releases with generated changelogs and attach SDK artifacts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This gives me a clean, reproducible release process where every SDK version is traceable back to a specific commit.&lt;/p&gt;




&lt;h2&gt;
  
  
  Multi-Language SDKs
&lt;/h2&gt;

&lt;p&gt;PQC shouldn't be a JavaScript-only party. QSafe ships SDKs for four ecosystems:&lt;/p&gt;

&lt;h3&gt;
  
  
  JavaScript / TypeScript
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;QSafeClient&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@qsafe/sdk&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;QSafeClient&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;your-api-key&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;// Generate a keypair&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;publicKey&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;privateKey&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generateKeypair&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;algorithm&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;ML-KEM-768&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;// Encrypt a message&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ciphertext&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;encrypt&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;publicKey&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Hello, quantum-safe world!&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;// Decrypt it back&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;plaintext&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;decrypt&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;privateKey&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ciphertext&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Python
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;qsafe&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;QSafeClient&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;QSafeClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;your-api-key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Generate a keypair
&lt;/span&gt;&lt;span class="n"&gt;keypair&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate_keypair&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;algorithm&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ML-KEM-768&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Sign a document
&lt;/span&gt;&lt;span class="n"&gt;signature&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sign&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;private_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;keypair&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;private_key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sa"&gt;b&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Important document&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Verify the signature
&lt;/span&gt;&lt;span class="n"&gt;is_valid&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;verify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;public_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;keypair&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;public_key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sa"&gt;b&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Important document&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;signature&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;signature&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Go
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="s"&gt;"github.com/qsafe/qsafe-go"&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;qsafe&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;NewClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"your-api-key"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;// Generate a keypair&lt;/span&gt;
&lt;span class="n"&gt;keypair&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GenerateKeypair&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;qsafe&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AlgorithmMLKEM768&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;// Encrypt&lt;/span&gt;
&lt;span class="n"&gt;ciphertext&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Encrypt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;keypair&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;PublicKey&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="kt"&gt;byte&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"secret message"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="c"&gt;// Decrypt&lt;/span&gt;
&lt;span class="n"&gt;plaintext&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Decrypt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;keypair&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;PrivateKey&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ciphertext&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Java / Kotlin
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight kotlin"&gt;&lt;code&gt;&lt;span class="kd"&gt;val&lt;/span&gt; &lt;span class="py"&gt;client&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;QSafeClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;apiKey&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"your-api-key"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;// Generate a keypair&lt;/span&gt;
&lt;span class="kd"&gt;val&lt;/span&gt; &lt;span class="py"&gt;keypair&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generateKeypair&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;algorithm&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Algorithm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;ML_DSA_65&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;// Sign&lt;/span&gt;
&lt;span class="kd"&gt;val&lt;/span&gt; &lt;span class="py"&gt;signature&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sign&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;privateKey&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;keypair&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;privateKey&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"release-v1.0.0.tar.gz"&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toByteArray&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;

&lt;span class="c1"&gt;// Verify&lt;/span&gt;
&lt;span class="kd"&gt;val&lt;/span&gt; &lt;span class="py"&gt;isValid&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;verify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;publicKey&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;keypair&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;publicKey&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"release-v1.0.0.tar.gz"&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toByteArray&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="n"&gt;signature&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;signature&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Why I'm Looking for Beta Testers
&lt;/h2&gt;

&lt;p&gt;QSafe PQC is functional and running in production, but I'm a solo developer — my blind spots are real. Here's specifically what I need help with:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;API Correctness&lt;/strong&gt; — Do the cryptographic operations actually produce the expected outputs? Are there edge cases with key serialization, large message sizes, or binary data handling?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Performance Under Load&lt;/strong&gt; — How does the platform hold up with concurrent requests? Are there rate limiting edge cases? Quota tracking bugs?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SDK Developer Experience&lt;/strong&gt; — Is the API surface intuitive? What's confusing? What would you name differently?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dashboard UX&lt;/strong&gt; — The React dashboard covers keypair management, crypto operations, and file uploads. Is anything broken, confusing, or missing?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security Review&lt;/strong&gt; — I've done my best, but fresh eyes on the API design, key storage, and authentication flow are always welcome.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cross-Platform SDK Testing&lt;/strong&gt; — Can you confirm the SDKs work on Windows, Linux, macOS, Deno, Bun, Python 3.9+, Go 1.21+, and JVM 17+?&lt;/p&gt;




&lt;h2&gt;
  
  
  How to Sign Up as a Tester
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Create a free account&lt;/strong&gt; at &lt;a href="https://qsafepqc1.vercel.app/" rel="noopener noreferrer"&gt;qsafepqc1.vercel.app&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Take the built-in tour&lt;/strong&gt; — it walks you through keypair generation, crypto ops, file ops, and API key creation in ~5 minutes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Break things&lt;/strong&gt; — try unusual inputs, large files, rapid API calls, concurrent requests&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Report bugs or feedback&lt;/strong&gt; — drop me an email at &lt;a href="mailto:rushikesh.n.kakadiya@gmail.com"&gt;rushikesh.n.kakadiya@gmail.com&lt;/a&gt; or leave a comment below&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you're a security researcher, cryptographer, or just someone who cares about quantum-safe infrastructure, I'd especially love to hear from you.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's Coming Next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Webhook support&lt;/strong&gt; — trigger events when signatures verify or keys expire&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Team workspaces&lt;/strong&gt; — shared keypair vaults for engineering teams&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HSM-backed key storage&lt;/strong&gt; — hardware security module integration for enterprise use&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;More algorithms&lt;/strong&gt; — FALCON, HQC, and BIKE support as they progress through standardization&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenAPI spec + Postman collection&lt;/strong&gt; — to make testing even easier&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Bigger Picture
&lt;/h2&gt;

&lt;p&gt;Post-quantum cryptography is infrastructure. It's not glamorous, it doesn't have a slick marketing angle — but it's going to be as foundational as TLS in the next decade. My goal with QSafe PQC is to make the migration path approachable for every developer, not just those with deep cryptography expertise.&lt;/p&gt;

&lt;p&gt;If you've read this far, you're exactly the kind of developer I built this for. Come try it, break it, and help make it better.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://qsafepqc1.vercel.app/" rel="noopener noreferrer"&gt;Try QSafe PQC -&amp;gt; qsafepqc1.vercel.app&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built with Neon, Upstash, Vercel, Hugging Face, and GitHub Actions. Questions or feedback? Reach me at &lt;a href="mailto:rushikesh.n.kakadiya@gmail.com"&gt;rushikesh.n.kakadiya@gmail.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>cryptography</category>
      <category>api</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
