Skip to main content

co_primitives/types/
raw_cid.rs

1// SPDX-License-Identifier: AGPL-3.0-only
2// Copyright (C) 2026 1io BRANDGUARDIAN GmbH
3
4use cid::Cid;
5use std::io::Cursor;
6
7pub const CID_MAX_SIZE: usize = 128;
8pub type RawCid = [u8; CID_MAX_SIZE];
9
10pub fn cid_to_raw(cid: &Cid) -> RawCid {
11	let bytes = cid.to_bytes();
12	assert!(bytes.len() <= CID_MAX_SIZE, "CID exceeds maximum size of {CID_MAX_SIZE} bytes");
13	let mut raw = [0u8; CID_MAX_SIZE];
14	raw[..bytes.len()].copy_from_slice(&bytes);
15	raw
16}
17
18pub fn raw_to_cid(raw: &RawCid) -> Option<Cid> {
19	Cid::read_bytes(Cursor::new(raw)).ok()
20}