Skip to main content

fsverity-hash

Python implementation of fs-verity hash scheme.

Installation

python -mpip install fsverity-hash

Usage

FSVerityHash exposes a hashlib like interface

>>> import fsverity_hash
>>> m = fsverity_hash.FSVerityHash()
>>> m.update(b"Nobody inspects the spammish repetition")
>>> m.digest()
b'>\xd6s\xd52<\x9e\x1c`\x82\x0f td\xb0\xb8X\xa9\x0b\xa4\xff\x94\x0b\x12=\xd1kBV\x99\xce\xbe'
>>> m.hexdigest()
'3ed673d5323c9e1c60820f207464b0b858a90ba4ff940b123dd16b425699cebe'

the fsverity digest command produces the same digest

$ echo -n "Nobody inspects the spammish repetition" > file.txt
$ fsverity digest file.txt
sha256:3ed673d5323c9e1c60820f207464b0b858a90ba4ff940b123dd16b425699cebe file.txt

The module exposes the same command line interface as fsverity digest

$ echo -n "Nobody inspects the spammish repetition" > spam.txt
$ fsverity digest spam.txt
sha256:3ed673d5323c9e1c60820f207464b0b858a90ba4ff940b123dd16b425699cebe spam.txt
$ python3 -m fsverity_hash spam.txt
sha256:3ed673d5323c9e1c60820f207464b0b858a90ba4ff940b123dd16b425699cebe spam.txt
$ python3 -m fsverity_hash --help
usage: fsverity_hash.py [-h] [--hash-alg {sha256,sha512}] [--block-size BYTES]
                        [--compact]
                        [FILE ...]

Compute fs-verity hashes

positional arguments:
  FILE                  Input file(s) to process (default: stdin)

optional arguments:
  -h, --help            show this help message and exit
  --hash-alg {sha256,sha512}
                        Merkle tree block hashing algorithm (default: sha256)
  --block-size BYTES    Merkle tree block size in bytes (default: 4096)
  --compact             Omit the hash algorithm name when printing digests

Limitations

  • Upto 8 GiB can be hashed. This is an implementation limit, not a limitation of fs-verity hashes in general.
  • Salted hashes aren't implemented.
  • No automated tests.
  • No testing of custom block sizes.
  • FSVerityHash objects cannot be copied.

Other implementations

Further reading

Metadata

Release files for fsverity-hash 0.0.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fsverity-hash 0.0.5
File Size Uploaded
fsverity-hash-0.0.5.tar.gz 5.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fsverity-hash 0.0.5
File Interpreter ABI Platform
fsverity_hash-0.0.5-py3-none-any.whl Python 3 none any Details

Total release size: 11.2 kB

Release files / fsverity-hash-0.0.5.tar.gz

Download URL fsverity-hash-0.0.5.tar.gz
Size 5.7 kB
Tags Source
SHA-256 checksum
How to use checksums
a0bb679a010bd6df69fa705d97e3cb94feb2e30608237039e403298da230ae9f
BLAKE2b-256 checksum
How to use checksums
435726abf385272754a253822f8a5dd9692ce88e2e33e8d505164685101aa4a0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.1

Release files / fsverity_hash-0.0.5-py3-none-any.whl

Download URL fsverity_hash-0.0.5-py3-none-any.whl
Size 5.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6f56eba3db850b15fefaea7885f7c4fbbf1c27f1cc70e3e1ae00dc21015a5bc1
BLAKE2b-256 checksum
How to use checksums
3b09962e59cbd67dd566c82e2dcfadea212f1055a496e6da932e6cbe0f87fa91
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.1

Release history Release notifications | RSS feed

This release

0.0.5 This release

2 release files

0.0.3

2 release files

0.0.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page