public byte[] extract(byte[] salt, byte[] ikm)
        throws InvalidKeyException, NoSuchAlgorithmException {
        Objects.requireNonNull(salt);
        Objects.requireNonNull(ikm);
        Preconditions.checkArgument(ikm.length > 0, "Empty keying material");
        if (salt.length == 0) {
            salt = new byte[getMacLength()];
        }
        return getMac(salt).doFinal(ikm);
    }
Performs an HKDF extract operation as specified in RFC 5869.

@param salt the salt to use
@param ikm initial keying material
@return a pseudorandom key suitable for use in expand operations
@throws InvalidKeyException if the salt is not suitable for use as an HMAC key
@throws NoSuchAlgorithmException if the Mac algorithm is no longer available
common/src/main/java/org/conscrypt/Hkdf.java