From 0128557bbb1a73d909c8aa0eae51679b29553019 Mon Sep 17 00:00:00 2001 From: Richard Schneider Date: Sat, 15 Jun 2019 15:08:39 +1200 Subject: [PATCH] feat: CID v1 default encoding is base32 #78 BREAKING CHANGE: The default was base58btc, it is now base32. go-ipfs v0.4.21 has implemented this. --- src/Cid.cs | 12 ++++++++++-- test/CidTest.cs | 12 ++++++++---- test/DagNodeTest.cs | 4 +--- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/Cid.cs b/src/Cid.cs index 9494547..77bc306 100644 --- a/src/Cid.cs +++ b/src/Cid.cs @@ -73,6 +73,10 @@ void EnsureMutable() /// algorithm name equals "sha2-256" /// /// + /// + /// + /// The default is "base32" when the + /// is not zero. /// public int Version { @@ -83,6 +87,10 @@ public int Version set { EnsureMutable(); + if (version == 0 && value > 0 && Encoding == "base58btc") + { + encoding = "base32"; + } version = value; } } @@ -91,7 +99,7 @@ public int Version /// The encoding of the CID. /// /// - /// base58btc, base64, etc. Defaults to . + /// base58btc, base32, base64, etc. Defaults to . /// /// /// Sets to 1, when setting a value that @@ -107,11 +115,11 @@ public string Encoding set { EnsureMutable(); - encoding = value; if (Version == 0 && value != "base58btc") { Version = 1; } + encoding = value; } } diff --git a/test/CidTest.cs b/test/CidTest.cs index 927c33b..94ebceb 100644 --- a/test/CidTest.cs +++ b/test/CidTest.cs @@ -41,7 +41,7 @@ public void MultiHash_is_Cid_V1() Cid cid = mh; Assert.AreEqual(1, cid.Version); Assert.AreEqual("dag-pb", cid.ContentType); - Assert.AreEqual("base58btc", cid.Encoding); + Assert.AreEqual("base32", cid.Encoding); Assert.AreSame(mh, cid.Hash); } @@ -80,7 +80,9 @@ public void Encode_V1() ContentType = "raw", Hash = "QmaozNR7DZHQK1ZcU9p7QdrshMvXqWK6gpu5rmrkPdT3L4" }; - Assert.AreEqual("zb2rhj7crUKTQYRGCRATFaQ6YFLTde2YzdqbbhAASkL9uRDXn", cid.Encode()); + Assert.AreEqual(1, cid.Version); + Assert.AreEqual("base32", cid.Encoding); + Assert.AreEqual("bafkreifzjut3te2nhyekklss27nh3k72ysco7y32koao5eei66wof36n5e", cid.Encode()); } [TestMethod] @@ -93,7 +95,8 @@ public void Encode_Upgrade_to_V1_ContentType() Hash = "QmaozNR7DZHQK1ZcU9p7QdrshMvXqWK6gpu5rmrkPdT3L4" }; Assert.AreEqual(1, cid.Version); - Assert.AreEqual("zb2rhj7crUKTQYRGCRATFaQ6YFLTde2YzdqbbhAASkL9uRDXn", cid.Encode()); + Assert.AreEqual("base32", cid.Encoding); + Assert.AreEqual("bafkreifzjut3te2nhyekklss27nh3k72ysco7y32koao5eei66wof36n5e", cid.Encode()); } [TestMethod] @@ -119,7 +122,8 @@ public void Encode_Upgrade_to_V1_Hash() Hash = mh }; Assert.AreEqual(1, cid.Version); - Assert.AreEqual("zBunRFxZVcKeu8wAbUg92z2JK6UukiL7EnPR1D6TZaQCsPpRe7KzcmioKFyi2oEZd9ffwpbKTib1pucMQrDyRnAdaqwbB", cid.Encode()); + Assert.AreEqual("base32", cid.Encoding); + Assert.AreEqual("bafybgqfnbq34ghljwmk7hka7cpem3zybbffnsfzfxinq3qyztsuxcntbxaua23xx42hrgptcchrolkndcucelv3pc4eoarjbwdxagtylboxsm", cid.Encode()); } [TestMethod] diff --git a/test/DagNodeTest.cs b/test/DagNodeTest.cs index 4367e97..f137133 100644 --- a/test/DagNodeTest.cs +++ b/test/DagNodeTest.cs @@ -118,9 +118,7 @@ public void Hashing_Algorithm() var node = new DagNode(abc, null, "sha2-512"); CollectionAssert.AreEqual(abc, node.DataBytes); Assert.AreEqual(0, node.Links.Count()); - // Had to change the test, because sha2-512 always generates a CID V1. - // Assert.AreEqual("8Vv347foTHxpLZDdguzcTp7mjBmySjWK1VF36Je7io4ZKHo28fefMFr28LSv757yTcaRzn1dRqPB6WWFpYvbd5YXca", (string)node.Id); - Assert.AreEqual("zBunREkQwjzkZwU71RKBcv2n3XwkTehtzVLkeUPTKjtBDBs2pnGRHLcxt3bGqzX38BkuNom2bQquyPj5Fh7dBZV3UdXPU", (string)node.Id); + Assert.AreEqual("bafybgqdqrys7323fuivxoixir7nnsfqmsneuuseg6mkbmcjgj4xaq7suehcmbghv5sbtxu57ccnhqjggxx7iz5p77gkcrhv2i3pj3yhv7fi56", (string)node.Id); Assert.AreEqual(5, node.Size); RoundtripTest(node);