@Test
    void salt_shorter_than_the_block_size_is_padded_with_zeros() {
        var ikm  = unhex("5943c65bc33bf05a205b04be8ae0ab2e");
        var info = unhex("be082f301a03f87787a80fbea88941214d50c42b");
        var expectedOkm = "43e371354001617abb70454751059625ef1a64e0f818469c2f886b27140a0166";
        var salts = List.of("e69dcaad55fb0536",
                            "e69dcaad55fb05360000000000000000",
                            "e69dcaad55fb053600000000000000000000000000000000",
                            "e69dcaad55fb0536000000000000000000000000000000000000000000000000",
                            "e69dcaad55fb05360000000000000000000000000000000000000000000000000000000000000000",
                            "e69dcaad55fb053600000000000000000000000000000000000000000000000000000000000000000000000000000000",
                            "e69dcaad55fb0536000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000");
        for (var salt : salts) {
            var hkdf = HKDF.extractedFrom(unhex(salt), ikm);
            var okm = hkdf.expand(32, info);
            assertEquals(expectedOkm, hex(okm), "Failed for salt %s".formatted(salt));
        }
    }
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