{
  "description": "HKDF-SHA256 (RFC 5869) extract-then-expand. AVP uses HKDF-SHA256 to derive the 32-byte key-encryption key in the default wrap scheme (SPEC §4). 'ikm', 'salt', 'info' and the outputs 'prk' (the PRK from the extract step) and 'okm' (the L-byte output from expand) are lowercase hex. An empty/absent salt is replaced by HASH_LEN (32) zero bytes per RFC 5869 §2.2; case 'rfc5869-tc3' exercises that rule. Cases tc1/tc3 are the published RFC 5869 test vectors; the runner reproduces them byte-for-byte.",
  "cases": [
    {
      "name": "rfc5869-tc1",
      "source": "RFC 5869 Appendix A.1 (Test Case 1)",
      "hash": "SHA-256",
      "ikmHex": "0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b",
      "saltHex": "000102030405060708090a0b0c",
      "infoHex": "f0f1f2f3f4f5f6f7f8f9",
      "length": 42,
      "prkHex": "077709362c2e32df0ddc3f0dc47bba6390b6c73bb50f9c3122ec844ad7c2b3e5",
      "okmHex": "3cb25f25faacd57a90434f64d0362f2a2d2d0a90cf1a5a4c5db02d56ecc4c5bf34007208d5b887185865"
    },
    {
      "name": "rfc5869-tc3",
      "source": "RFC 5869 Appendix A.3 (Test Case 3), zero-length salt and info; exercises the empty-salt -> 32 zero bytes rule",
      "hash": "SHA-256",
      "ikmHex": "0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b",
      "saltHex": "",
      "infoHex": "",
      "length": 42,
      "prkHex": "19ef24a32c717b167f33a91d6f648bdf96596776afdb6377ac434c1c293ccb04",
      "okmHex": "8da4e775a563c18f715f802a063c5a31b8a11f5c5ee1879ec3454e5f3c738d2d9d201395faa4b61a96c8"
    }
  ]
}
