Skip to content

Commit db94327

Browse files
committed
Update multibase, and support identity hash.
1 parent 628392e commit db94327

File tree

4 files changed

+15
-6
lines changed

4 files changed

+15
-6
lines changed

Diff for: lib/multibase.jar

3.17 KB
Binary file not shown.

Diff for: pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
3535
<version.junit>4.12</version.junit>
3636
<version.hamcrest>1.3</version.hamcrest>
37-
<version.multibase>v1.0.0</version.multibase>
37+
<version.multibase>v1.0.1</version.multibase>
3838
</properties>
3939

4040
<repositories>

Diff for: src/main/java/io/ipfs/multihash/Multihash.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
public class Multihash {
1515
public enum Type {
16+
id(0, -1),
1617
md5(0xd5, 16),
1718
sha1(0x11, 20),
1819
sha2_256(0x12, 32),
@@ -54,8 +55,10 @@ public static Type lookup(int t) {
5455
public Multihash(final Type type, final byte[] hash) {
5556
if (hash.length > 127)
5657
throw new IllegalStateException("Unsupported hash size: "+hash.length);
57-
if (hash.length != type.length)
58+
if (hash.length != type.length && type != Type.id)
5859
throw new IllegalStateException("Incorrect hash length: " + hash.length + " != "+type.length);
60+
if (type == Type.id && hash.length > 64)
61+
throw new IllegalStateException("Unsupported size for identity hash! "+ hash.length);
5962
this.type = type;
6063
this.hash = hash;
6164
}

Diff for: src/test/java/io/ipfs/multihash/MultihashTest.java

+10-4
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ public void base58Test() {
2525
@Test
2626
public void multihashTest() {
2727
Object[][] examples = new Object[][]{
28+
{Multihash.Type.id, "ID", "13hC12xCn", "hello"},
29+
{Multihash.Type.id, "ID", "11", ""},
2830
{Multihash.Type.md5, "MD5", "9qZY4e2uauH3bG83FdaPSaPzA", "hello world"},
2931
{Multihash.Type.sha1, "SHA-1", "5drNu81uhrFLRiS4bxWgAkpydaLUPW", "hello world"},
3032
{Multihash.Type.sha2_256, "SHA-256", "QmaozNR7DZHQK1ZcU9p7QdrshMvXqWK6gpu5rmrkPdT3L4", "hello world"},
@@ -36,10 +38,14 @@ public void multihashTest() {
3638
for(Object[] ex: examples) {
3739
Multihash m = Multihash.fromBase58((String)ex[2]);
3840
try {
39-
MessageDigest md = MessageDigest.getInstance((String) ex[1]);
40-
assertNotNull(md );
41-
md.update(((String) ex[3]).getBytes("UTF-8"));
42-
byte[] digest = md.digest();
41+
byte[] digest;
42+
if (ex[0] != Multihash.Type.id) {
43+
MessageDigest md = MessageDigest.getInstance((String) ex[1]);
44+
assertNotNull(md);
45+
md.update(((String) ex[3]).getBytes("UTF-8"));
46+
digest = md.digest();
47+
} else
48+
digest = ((String) ex[3]).getBytes("UTF-8");
4349
// Test constructor
4450
Multihash m2 = new Multihash((Multihash.Type)ex[0], digest);
4551
// Test comparison

0 commit comments

Comments
 (0)