NetCid 1.3.0
See the version list below for details.
dotnet add package NetCid --version 1.3.0
NuGet\Install-Package NetCid -Version 1.3.0
<PackageReference Include="NetCid" Version="1.3.0" />
<PackageVersion Include="NetCid" Version="1.3.0" />
<PackageReference Include="NetCid" />
paket add NetCid --version 1.3.0
#r "nuget: NetCid, 1.3.0"
#:package NetCid@1.3.0
#addin nuget:?package=NetCid&version=1.3.0
#tool nuget:?package=NetCid&version=1.3.0
NetCid
NetCid is a C# (net10.0) implementation of the multiformats CID specification.
Features
- CIDv0 and CIDv1 parsing, encoding, and round-tripping
- CID conversion (
ToV0,ToV1) - Binary CID decode/encode
- Unsigned varint codec (multiformats-compatible, max 9-byte encoding)
- Multihash model + SHA-256 / SHA-512 hash helpers
Multihash.Encode/Decodefor spec-compliant multihash wire format (varint(code) || varint(digestLength) || digest)- Multibase support for:
base58btc(z)base32lower/upper (b/B)base36lower/upper (k/K)base64url(u)
- Multicodec constants for common CID codecs (
raw,dag-pb,dag-cbor, etc.) - Multicodec key-type constants (
ed25519-pub,p256-pub,secp256k1-pub, etc.) - Multicodec prefix/decode API for varint-tagged byte buffers
Install
dotnet add package NetCid
Quick Start
using NetCid;
using System.Text;
// Parse existing CIDs
var v0 = Cid.Parse("QmdfTbBqBPQ7VNxZEYEj14VmRuZBkqFbiwReogJgS1zR1n");
var v1 = Cid.Parse("bafkreidon73zkcrwdb5iafqtijxildoonbwnpv7dyd6ef3qdgads2jc4su");
// Convert versions
var v0AsV1 = v0.ToV1();
var v1AsV0 = v0AsV1.ToV0();
// Build from content bytes
var content = Encoding.UTF8.GetBytes("hello world");
var cid = Cid.FromContent(content, codec: Multicodec.Raw, hashCode: MultihashCode.Sha2_256);
// Serialize
string text = cid.ToString(); // CIDv1 defaults to base32 lower
byte[] bytes = cid.ToByteArray();
Specification Notes
Implementation follows the CID spec behavior, including:
- CIDv0 is always
dag-pb+sha2-256(32) - CIDv1 binary layout:
<cidv1-varint><codec-varint><multihash> - CIDv0 string form has no multibase prefix
- CID versions
2and3are treated as reserved/invalid
Input Limits
Parsing APIs enforce default size limits to reduce memory-pressure risk from untrusted input:
Cid.DefaultMaxInputStringLengthCid.DefaultMaxInputByteLengthMultibase.DefaultMaxInputLength
Overloads on parse/decode methods let callers provide custom limits when needed.
References:
- https://github.com/multiformats/cid
- https://multiformats.readthedocs.io/en/latest/api/multiformats.cid.html
Development
dotnet restore NetCid.sln
dotnet build NetCid.sln -c Release
dotnet test NetCid.Tests/NetCid.Tests.csproj -c Release
dotnet test NetCid.IntegrationTests/NetCid.IntegrationTests.csproj -c Release
Examples
Reference examples are available under examples/ and mirror the js-multiformats example set:
examples/cid-interfaceexamples/multicodec-interfaceexamples/multihash-interfaceexamples/block-interfaceexamples/multibase-interfaceexamples/did-key-interface
See examples/README.md for run commands.
Contributing
See contributors.md for contributor workflow, quality checklist, and PR expectations.
CI / Release
- CI workflow:
.github/workflows/ci.yml - Security workflows:
.github/workflows/security.yml,.github/workflows/codeql.yml - NuGet publish workflow:
.github/workflows/release.yml
release.yml pushes packages when a tag like v1.2.3 is pushed (or manual dispatch) and requires NUGET_API_KEY repository secret.
Security
- Responsible disclosure: see
SECURITY.md - Security review and findings: see
SECURITY_AUDIT.md
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- SimpleBase (>= 5.6.0)
NuGet packages (6)
Showing the top 5 NuGet packages that depend on NetCid:
| Package | Downloads |
|---|---|
|
NetCrypto
Unified cryptographic primitives for the NetCid/NetDid library stack: EdDSA, ECDSA (NIST + secp256k1, incl. recoverable), BLS12-381, BBS selective-disclosure signatures, X25519/ECDH, KDFs, AEADs, hashing (incl. Keccak-256), key model, signing and key-store abstractions, and JWK conversion. |
|
|
NetDid.Core
Core abstractions, DID document model, and DID-method logic for the NetDid multi-method DID library. Cryptographic primitives are provided by NetCrypto. |
|
|
DataProofsDotnet.Core
Embedded-proof core for W3C VC Data Integrity 1.0: proof model, add/verify proof pipeline, cryptosuite registry, JCS cryptosuites (eddsa-jcs-2022, ecdsa-jcs-2019), and the verification-method resolver abstraction. All cryptography via NetCrypto; multiformats and JCS via NetCid. |
|
|
NetDid.Method.Peer
did:peer method implementation for the NetDid multi-method DID library. |
|
|
DataProofsDotnet.Legacy
Legacy Linked-Data-Signature cryptosuites for W3C Data Integrity: Ed25519Signature2020 and EcdsaSecp256r1Signature2019, JCS (default) and RDFC-1.0 variants, byte-compatible with zcap-dotnet's 2020-era JCS-nested wire convention. All cryptography via NetCrypto; multiformats/JCS via NetCid; RDFC via DataProofsDotnet.Rdfc. |
GitHub repositories
This package is not used by any popular GitHub repositories.