@Test
    void maximal_output_size() {
        var ikm  = unhex("bdd9c30b5fab7f22d859db774779b41cc124daf3ce872f6e80951c0edd8f8214");
        var salt = unhex("90983ed74912c6173d0f7cf8164b525361b89bda04d085341a057bde9083b5af");
        var info = unhex("e6483e923d37e4ba");

        var hkdf = HKDF.extractedFrom(salt, ikm);
        assertEquals(8160, HKDF.MAX_OUTPUT_SIZE);
        var okm = hkdf.expand(HKDF.MAX_OUTPUT_SIZE, info);
        // To avoid shoving an 8K sized hex string into the source code, check against the pre-hashed
        // value of the expected OKM output. It's hashes all the way down!
        var expectedOkmSha256Digest = "c17ce0403e133570191dd1d2ca46f6b62623d62e4f0def8de23a51d65d40a009";
        var okmDigest = sha256DigestOf(okm);
        assertEquals(expectedOkmSha256Digest, hex(okmDigest));
    }
HKDF tests that ensure that the output of our own implementation matches the test
vectors given in <a href="https://tools.ietf.org/html/rfc5869">RFC-5869</a>.

We don't expose the internal PRK (pseudo-random key) value of the HKDF itself,
so we don't test it explicitly. The actual OKM (output keying material) inherently
depends on it, so its correctness is verified transitively.

@author vekterli
security-utils/src/test/java/com/yahoo/security/HKDFTest.java