guard hash comparisons with to avoid false match None == None
guard hash comparisons with to avoid false match None == None

In practice, usage scenarios where the calling client provides no pre-computed hash are resolved by computing only an md5 while leaving sha256 as None (unknown). But, the comparison of client-side and server-side hashes looks like this:

    r.headers.get('Content-MD5') == md5 or r.headers.get('Content-SHA256') == sha256

this leads to incorrectly assuming servers-side objects match the upload candidate. This means that use cases where a processing stage may regenerate distinct data may then discard this new result when it was intended to be uploaded as a new object version!

informatics-isi-edu/deriva-py