{
  "schemaVersion": 1,
  "generatedAt": "2026-04-28T21:19:40.573Z",
  "gitSha": "4427c0857f8fdb383ffbfebd3fe379f41a1b6693",
  "liboqsVersion": "0.15.0",
  "environment": {
    "platform": "darwin",
    "arch": "arm64",
    "cpuModel": "Apple M4 Max",
    "cpuCount": 14,
    "nodeVersion": "v24.15.0",
    "totalMemoryGiB": 36
  },
  "reproducibility": {
    "command": "pnpm --filter @qnsp/web-portal run bench:pqc",
    "repository": "https://github.com/cuilabs/qnsp",
    "note": "Run on identical hardware to compare; absolute numbers vary, ratios across algorithms remain stable."
  },
  "kems": [
    {
      "algorithm": "ML-KEM-512",
      "fipsStandard": "FIPS 203",
      "securityCategory": 1,
      "publicKeyBytes": 800,
      "secretKeyBytes": 1632,
      "ciphertextBytes": 768,
      "sharedSecretBytes": 32,
      "iterations": 500,
      "operations": [
        {
          "operation": "keygen",
          "p50Ms": 0.006,
          "p95Ms": 0.009,
          "p99Ms": 0.016,
          "meanMs": 0.007,
          "opsPerSecond": 137176
        },
        {
          "operation": "encaps",
          "p50Ms": 0.007,
          "p95Ms": 0.008,
          "p99Ms": 0.012,
          "meanMs": 0.007,
          "opsPerSecond": 142392
        },
        {
          "operation": "decaps",
          "p50Ms": 0.007,
          "p95Ms": 0.008,
          "p99Ms": 0.011,
          "meanMs": 0.007,
          "opsPerSecond": 137532
        }
      ]
    },
    {
      "algorithm": "ML-KEM-768",
      "fipsStandard": "FIPS 203",
      "securityCategory": 3,
      "publicKeyBytes": 1184,
      "secretKeyBytes": 2400,
      "ciphertextBytes": 1088,
      "sharedSecretBytes": 32,
      "iterations": 500,
      "operations": [
        {
          "operation": "keygen",
          "p50Ms": 0.01,
          "p95Ms": 0.011,
          "p99Ms": 0.015,
          "meanMs": 0.01,
          "opsPerSecond": 99755
        },
        {
          "operation": "encaps",
          "p50Ms": 0.01,
          "p95Ms": 0.012,
          "p99Ms": 0.019,
          "meanMs": 0.011,
          "opsPerSecond": 91290
        },
        {
          "operation": "decaps",
          "p50Ms": 0.011,
          "p95Ms": 0.017,
          "p99Ms": 0.017,
          "meanMs": 0.012,
          "opsPerSecond": 84087
        }
      ]
    },
    {
      "algorithm": "ML-KEM-1024",
      "fipsStandard": "FIPS 203",
      "securityCategory": 5,
      "publicKeyBytes": 1568,
      "secretKeyBytes": 3168,
      "ciphertextBytes": 1568,
      "sharedSecretBytes": 32,
      "iterations": 500,
      "operations": [
        {
          "operation": "keygen",
          "p50Ms": 0.014,
          "p95Ms": 0.017,
          "p99Ms": 0.031,
          "meanMs": 0.015,
          "opsPerSecond": 68416
        },
        {
          "operation": "encaps",
          "p50Ms": 0.014,
          "p95Ms": 0.015,
          "p99Ms": 0.02,
          "meanMs": 0.014,
          "opsPerSecond": 69227
        },
        {
          "operation": "decaps",
          "p50Ms": 0.016,
          "p95Ms": 0.019,
          "p99Ms": 0.021,
          "meanMs": 0.016,
          "opsPerSecond": 60626
        }
      ]
    }
  ],
  "signatures": [
    {
      "algorithm": "ML-DSA-44",
      "fipsStandard": "FIPS 204",
      "securityCategory": 2,
      "publicKeyBytes": 1312,
      "secretKeyBytes": 2560,
      "signatureBytes": 2420,
      "messageBytes": 179,
      "iterations": 200,
      "operations": [
        {
          "operation": "keygen",
          "p50Ms": 0.035,
          "p95Ms": 0.04,
          "p99Ms": 0.091,
          "meanMs": 0.036,
          "opsPerSecond": 27817
        },
        {
          "operation": "sign",
          "p50Ms": 0.139,
          "p95Ms": 0.419,
          "p99Ms": 0.481,
          "meanMs": 0.165,
          "opsPerSecond": 6046
        },
        {
          "operation": "verify",
          "p50Ms": 0.037,
          "p95Ms": 0.045,
          "p99Ms": 0.053,
          "meanMs": 0.038,
          "opsPerSecond": 26101
        }
      ]
    },
    {
      "algorithm": "ML-DSA-65",
      "fipsStandard": "FIPS 204",
      "securityCategory": 3,
      "publicKeyBytes": 1952,
      "secretKeyBytes": 4032,
      "signatureBytes": 3309,
      "messageBytes": 179,
      "iterations": 200,
      "operations": [
        {
          "operation": "keygen",
          "p50Ms": 0.068,
          "p95Ms": 0.072,
          "p99Ms": 0.09,
          "meanMs": 0.068,
          "opsPerSecond": 14661
        },
        {
          "operation": "sign",
          "p50Ms": 0.207,
          "p95Ms": 0.538,
          "p99Ms": 0.823,
          "meanMs": 0.251,
          "opsPerSecond": 3977
        },
        {
          "operation": "verify",
          "p50Ms": 0.06,
          "p95Ms": 0.065,
          "p99Ms": 0.069,
          "meanMs": 0.06,
          "opsPerSecond": 16586
        }
      ]
    },
    {
      "algorithm": "ML-DSA-87",
      "fipsStandard": "FIPS 204",
      "securityCategory": 5,
      "publicKeyBytes": 2592,
      "secretKeyBytes": 4896,
      "signatureBytes": 4627,
      "messageBytes": 179,
      "iterations": 100,
      "operations": [
        {
          "operation": "keygen",
          "p50Ms": 0.097,
          "p95Ms": 0.108,
          "p99Ms": 0.112,
          "meanMs": 0.099,
          "opsPerSecond": 10143
        },
        {
          "operation": "sign",
          "p50Ms": 0.246,
          "p95Ms": 0.686,
          "p99Ms": 1.407,
          "meanMs": 0.305,
          "opsPerSecond": 3278
        },
        {
          "operation": "verify",
          "p50Ms": 0.095,
          "p95Ms": 0.105,
          "p99Ms": 0.126,
          "meanMs": 0.097,
          "opsPerSecond": 10329
        }
      ]
    },
    {
      "algorithm": "Falcon-512",
      "fipsStandard": "FN-DSA (NIST round 3)",
      "securityCategory": 1,
      "publicKeyBytes": 897,
      "secretKeyBytes": 1281,
      "signatureBytes": 654,
      "messageBytes": 179,
      "iterations": 50,
      "operations": [
        {
          "operation": "keygen",
          "p50Ms": 2.953,
          "p95Ms": 5.245,
          "p99Ms": 7.323,
          "meanMs": 3.354,
          "opsPerSecond": 298
        },
        {
          "operation": "sign",
          "p50Ms": 0.11,
          "p95Ms": 0.125,
          "p99Ms": 0.143,
          "meanMs": 0.111,
          "opsPerSecond": 8970
        },
        {
          "operation": "verify",
          "p50Ms": 0.017,
          "p95Ms": 0.022,
          "p99Ms": 0.038,
          "meanMs": 0.017,
          "opsPerSecond": 57151
        }
      ]
    },
    {
      "algorithm": "SLH-DSA-SHA2-128f",
      "fipsStandard": "FIPS 205",
      "securityCategory": 1,
      "publicKeyBytes": 32,
      "secretKeyBytes": 64,
      "signatureBytes": 17088,
      "messageBytes": 179,
      "iterations": 25,
      "operations": [
        {
          "operation": "keygen",
          "p50Ms": 0.503,
          "p95Ms": 0.576,
          "p99Ms": 0.611,
          "meanMs": 0.51,
          "opsPerSecond": 1962
        },
        {
          "operation": "sign",
          "p50Ms": 11.691,
          "p95Ms": 11.94,
          "p99Ms": 12.214,
          "meanMs": 11.717,
          "opsPerSecond": 85
        },
        {
          "operation": "verify",
          "p50Ms": 0.722,
          "p95Ms": 0.761,
          "p99Ms": 0.775,
          "meanMs": 0.726,
          "opsPerSecond": 1377
        }
      ]
    },
    {
      "algorithm": "SLH-DSA-SHA2-256f",
      "fipsStandard": "FIPS 205",
      "securityCategory": 5,
      "publicKeyBytes": 64,
      "secretKeyBytes": 128,
      "signatureBytes": 49856,
      "messageBytes": 179,
      "iterations": 10,
      "operations": [
        {
          "operation": "keygen",
          "p50Ms": 2.081,
          "p95Ms": 2.269,
          "p99Ms": 2.269,
          "meanMs": 2.107,
          "opsPerSecond": 475
        },
        {
          "operation": "sign",
          "p50Ms": 39.562,
          "p95Ms": 39.908,
          "p99Ms": 39.908,
          "meanMs": 39.417,
          "opsPerSecond": 25
        },
        {
          "operation": "verify",
          "p50Ms": 1.074,
          "p95Ms": 1.102,
          "p99Ms": 1.102,
          "meanMs": 1.058,
          "opsPerSecond": 945
        }
      ]
    }
  ]
}
