fs-verity digest implementation for Python
Project description
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
- https://git.kernel.org/pub/scm/fs/fsverity/fsverity-utils.git
reference libfsverity implementation and
fsverity
command - https://github.com/rvolgers/fs-verity-rs Rust crate
Further reading
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
fsverity-hash-0.0.5.tar.gz
(5.7 kB
view details)
Built Distribution
File details
Details for the file fsverity-hash-0.0.5.tar.gz
.
File metadata
- Download URL: fsverity-hash-0.0.5.tar.gz
- Upload date:
- Size: 5.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a0bb679a010bd6df69fa705d97e3cb94feb2e30608237039e403298da230ae9f |
|
MD5 | 492e0dfef06ed0e83f0182d16070eef1 |
|
BLAKE2b-256 | 435726abf385272754a253822f8a5dd9692ce88e2e33e8d505164685101aa4a0 |
File details
Details for the file fsverity_hash-0.0.5-py3-none-any.whl
.
File metadata
- Download URL: fsverity_hash-0.0.5-py3-none-any.whl
- Upload date:
- Size: 5.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6f56eba3db850b15fefaea7885f7c4fbbf1c27f1cc70e3e1ae00dc21015a5bc1 |
|
MD5 | 1b9be384fafe23b9ee77ca507061759d |
|
BLAKE2b-256 | 3b09962e59cbd67dd566c82e2dcfadea212f1055a496e6da932e6cbe0f87fa91 |