| # Verity |
| |
| Verity is the userspace tool for creating integrity hashes for a device image. |
| |
| This tool is a frontend for dm-bht, a device-mapper friendly block hash |
| table structure. `verity` produces dm-bht-based images for use with |
| dm-verity. The dm-verity module provides a transparent, integrity-checking |
| layer over a given block device. This expects a backing device and a secondary |
| device which provides cryptographic digests of the blocks on the primary |
| device |
| |
| Note, the secondary device image can be appended to the primary device or |
| used as a standalone device. |
| |
| This tool creates an image of the format: |
| |
| * [hash of hash of blocks n ... n+n-1] |
| * [hash of hash of blocks 0 ... n-1] |
| * [...] |
| * [hash of block 1] |
| * [hash of block 0] |
| |
| Upon completion, the hash of the root hash will be printed to standard |
| out. The root hash, tree depth, number of hashed blocks, and cryptographic |
| hash algorithm used must be supplied to the dm-verity when configuring a |
| device. |
| |
| ## Example Usage |
| |
| To use: |
| ```sh |
| verity --<arg>=<value>... |
| ``` |
| |
| where supported options are |
| ``` |
| mode Only 'create' |
| alg Hash algorithm to use. Only sha256 for now |
| payload Path to the image to hash |
| payload_blocks Size of the image, in blocks (4096 bytes) |
| hashtree Path to a hash tree to create or read from |
| root_hexdigest Digest of the root node (in hex) for verification |
| salt Salt (in hex) |
| ``` |
| |
| For example: |
| ```sh |
| dd if=/dev/zero of=/tmp/image bs=4k count=512 |
| verity --mode=create --alg=sha256 --payload=/tmp/image --hashtree=/tmp/hash | tee table |
| # ... |
| cat table |
| ls -la /tmp/hash |
| ``` |
| |
| ## Licensing |
| |
| All the source code is licensed GPLv2 to be completely kernel compatible. |
| The Makefiles are from the parent project and are licensed under a BSD-style |
| license. |