common_primitives/
cid.rs

1use cid::Cid;
2use sp_io::hashing::sha2_256;
3use sp_runtime::Vec;
4
5/// Multihash type for wrapping digests (support up to 64-byte digests)
6pub type Multihash = cid::multihash::Multihash<64>;
7
8/// SHA2-256 multihash code
9const SHA2_256: u64 = 0x12;
10
11/// Raw codec for CIDv1 (0x55)
12const RAW: u64 = 0x55;
13
14/// Computes a CIDv1 (RAW + SHA2-256 multihash)
15pub fn compute_cid_v1(bytes: &[u8]) -> Option<Vec<u8>> {
16	let digest = sha2_256(bytes);
17	let mh = Multihash::wrap(SHA2_256, &digest).ok()?;
18	let cid = Cid::new_v1(RAW, mh);
19	Some(cid.to_bytes())
20}