Integrity protected container, analogue to ASN.1-based CMS DigestedData.
=> CMS

Stored in a file, it should begin with "cm/hash/v0" [encoding/MAGIC].

    magic {{field . {magic} =cm/hash/v0}}
    
    hash {{field . {map} {of type bin} >0}}
    -- schemas/hash-algos.tcl --
    hash-algos {
        {field . {choice}}
    
        {field blake2b {bin} len=64}
        {field blake2b-merkle {bin} len=64}
        {field blake2b256 {bin} len=32}
    
        {field blake3 {bin} len=32}
    
        {field shake128 {bin} len=32}
        {field shake128-merkle {bin} len=32}
        {field shake256 {bin} len=64}
        {field shake256-merkle {bin} len=64}
    
        {field skein512 {bin} len=64}
    
        {field streebog256 {bin} len=32}
        {field streebog256-merkle {bin} len=32}
        {field streebog512 {bin} len=64}
        {field streebog512-merkle {bin} len=64}
    
        {field xxh3-128 {bin} len=16}
    }

It is just a single map of algorithm identifiers with hashes.

Hashed data is provided any way you wish. Consider using "prehash"
structure similarly as [cm/sign/] does:

    prehash {
        {field . {choice}}
        {field prehash {set} >0} {# set of hash algorithm identifiers}
    }

    prehash || BLOB(data) || cm/hash

Backlinks: 0
[cm/] 0 1 [cm/hash/blake2b] 2026-05-18 15:50:39 4 2 [cm/hash/blake2b-merkle] 2026-05-18 15:50:39 8 3 [cm/hash/blake3] 2026-05-18 15:50:39 3 4 [cm/hash/shake] 2026-05-18 15:50:39 4 5 [cm/hash/shake-merkle] 2026-05-18 15:50:39 4 6 [cm/hash/skein512] 2026-05-18 15:50:39 3 7 [cm/hash/streebog] 2026-05-18 15:50:39 4 8 [cm/hash/streebog-merkle] 2026-05-18 15:50:39 2 9 [cm/hash/xxh3-128] 2026-05-18 15:50:39 4