How could I verify that a contract was actually sent to me from the client as soon as the contract is received?

If I want to store electronic contracts for clients over a long period of time. I need to make sure that those files are not readable by anyone other than the client until the client retrieves them at a later time. But, I do need to be able to verify that a contract was actually sent to me from the client as soon as the contract is received. How could this be done? what would the client do, and what algorithms would they use? What would I do, and what algorithms would I use?