No landlord pays us. We never send your details to a landlord, never ask for your SSN or bank login, and cite the statute behind every rule. How we make money

Photos stay on your phone

The report lives in this browser’s storage. Location and other EXIF data are removed from every photo on your device before it is stored. Saving to your vault is optional and encrypted.

A hash and a server receipt

Each stored photo gets a SHA-256 fingerprint. When you’re online, housr’s server signs that fingerprint with the time it saw it. Only the fingerprint is sent, never the photo.

What a receipt proves, exactly

That this exact file existed by the time housr’s server recorded its hash. It doesn’t prove when the photo was taken. The strongest evidence is still a copy your landlord received, so send one.

Evidence receipts

How to verify a housr receipt yourself

A receipt is four values: the photo’s sha256, the server_time, the key_id and an Ed25519 signature. The signature covers this exact text, with a newline between each line and none at the end:

housr-receipt-v1
<sha256>
<server_time>
<key_id>
  1. Recompute the photo’s fingerprint from the JPEG in your report: shasum -a 256 photo.jpg (macOS) or sha256sum photo.jpg (Linux). It must equal the receipt’s sha256.
  2. Save the public key below as housr-receipts.pem, and check that its key_id matches the receipt.
  3. Rebuild the signed text and the signature:
    printf 'housr-receipt-v1\n%s\n%s\n%s' "$SHA256" "$SERVER_TIME" "$KEY_ID" > msg.txt
    echo "$SIGNATURE" | base64 -d > sig.bin
  4. Verify with OpenSSL 3:
    openssl pkeyutl -verify -pubin -inkey housr-receipts.pem -rawin -in msg.txt -sigfile sig.bin
    It prints Signature Verified Successfully for a genuine receipt and fails if any value was changed.
  5. Some receipts also carry an RFC 3161 timestamp token from FreeTSA, an independent timestamp authority, over the same hash. Decode token_b64 to token.der, download FreeTSA’s cacert.pem and tsa.crt from freetsa.org, then run openssl ts -verify -token_in -in token.der -digest $SHA256 -CAfile cacert.pem -untrusted tsa.crt.

What this shows: housr’s server recorded that hash at that time. What it doesn’t show: when, where or by whom the photo was taken, or that the room looked that way on any other day. We don’t describe receipts as anything more than that.

housr’s receipt key

Loading the key…