Can HMAC confirm data existence? I have two hosts, A and B. Host A gives host B a large piece of data and deletes it. Host A then needs to periodically confirm host B is holding the piece of data.

Before deleting the data Host A precomputes multiple HMACs with a CSPRNG generated random number (a salt). When Host A needs B to confirm the data still exists, it sends a salt to B, B then computes the HMAC returns it to A.

Is this cryptographically sound?

When computing HMAC(number, data) can you use an intermediate values instead of the actual data? Keccak is used if this affects the answer.

EDIT: Cross Referencing question on security stackexchange
An attack in this context would be being able to compute valid responses to salt challenges while in possession of information lesser than the piece of data (message).

Lets assume the salt is either the same size as that of the hash function's block or is padded to that size. In essence, the first iteration of the hash function is solely computed with the salt.

Each time you challenge with a salt you are challenging with new state values of the hash function. Basically a new hash function (different default values).

To be able to attack this you would need to break the one-way property of the hash function. You would need to create associativity rules for the hash function - compute iterations of the hash function on the message in such a way that the result can be applied to an arbitrary initial state.