This question already has an answer here:
We have to build a product that will have a network. Users will be able to connect to this network by downloading a client. However, before allowing them to access the network we want to check if their hardware, for instance, supports certain characteristics.
I had thought that by sending to our server the result of a test, which looks for these hardware characteristics, and its hash, both of them encrypted, it could be enough. However, I fear that this result could be "injected", and thus we would be fooled into thinking that he/she has the correct hardware.
On the same wavelength, I might want to check that the client has not been manipulated, using, for example, a hashing algorithm. I think that we face a similar problem that in the hardware check scenario.