Skip to content

Commit 4ac125c

Browse files
committed
Update multiaddr to support Cid.
Fix bug in IPv4 tolerance
1 parent 913173f commit 4ac125c

File tree

6 files changed

+21
-5
lines changed

6 files changed

+21
-5
lines changed

lib/cid.jar

7.87 KB
Binary file not shown.

lib/multibase.jar

8.57 KB
Binary file not shown.

lib/multihash.jar

-1.59 KB
Binary file not shown.

pom.xml

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
<groupId>io.ipfs</groupId>
66
<artifactId>multiaddr</artifactId>
7-
<version>1.0.0</version>
7+
<version>1.1.0</version>
88
<packaging>jar</packaging>
99

1010
<name>multiaddr</name>
@@ -58,9 +58,19 @@
5858
</dependency>
5959
<dependency>
6060
<groupId>com.github.multiformats</groupId>
61-
<artifactId>java-multihash</artifactId>
61+
<artifactId>java-multibase</artifactId>
6262
<version>v1.0.0</version>
6363
</dependency>
64+
<dependency>
65+
<groupId>com.github.multiformats</groupId>
66+
<artifactId>java-multihash</artifactId>
67+
<version>v1.1.0</version>
68+
</dependency>
69+
<dependency>
70+
<groupId>com.github.ipld</groupId>
71+
<artifactId>java-cid</artifactId>
72+
<version>v1.1.0</version>
73+
</dependency>
6474
</dependencies>
6575

6676
<build>

src/main/java/io/ipfs/multiaddr/Protocol.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package io.ipfs.multiaddr;
22

33
import io.ipfs.multihash.Multihash;
4+
import io.ipfs.cid.Cid;
45
import java.io.*;
56
import java.net.*;
67
import java.util.*;
78

89
public class Protocol {
910
public static int LENGTH_PREFIXED_VAR_SIZE = -1;
11+
private static final String IPV4_REGEX = "\\A(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}\\z";
1012

1113
enum Type {
1214
IP4(4, 32, "ip4"),
@@ -71,6 +73,8 @@ public byte[] addressToBytes(String addr) {
7173
try {
7274
switch (type) {
7375
case IP4:
76+
if (! addr.matches(IPV4_REGEX))
77+
throw new IllegalStateException("Invalid IPv4 address: " + addr);
7478
return Inet4Address.getByName(addr).getAddress();
7579
case IP6:
7680
return Inet6Address.getByName(addr).getAddress();
@@ -83,7 +87,7 @@ public byte[] addressToBytes(String addr) {
8387
throw new IllegalStateException("Failed to parse "+type.name+" address "+addr + " (> 65535");
8488
return new byte[]{(byte)(x >>8), (byte)x};
8589
case IPFS:
86-
Multihash hash = Multihash.fromBase58(addr);
90+
Multihash hash = Cid.decode(addr);
8791
ByteArrayOutputStream bout = new ByteArrayOutputStream();
8892
byte[] hashBytes = hash.toBytes();
8993
byte[] varint = new byte[(32 - Integer.numberOfLeadingZeros(hashBytes.length)+6)/7];
@@ -141,7 +145,7 @@ public String readAddress(InputStream in) throws IOException {
141145
case IPFS:
142146
buf = new byte[sizeForAddress];
143147
in.read(buf);
144-
return new Multihash(buf).toBase58();
148+
return Cid.cast(buf).toString();
145149
case ONION:
146150
byte[] host = new byte[10];
147151
in.read(host);

src/test/java/org/ipfs/api/MultiAddressTest.java renamed to src/test/java/io/ipfs/api/MultiAddressTest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
package io.ipfs.multiaddr;
1+
package io.ipfs.api;
22

3+
import io.ipfs.multiaddr.*;
34
import org.junit.*;
45

56
import java.io.*;
@@ -66,6 +67,7 @@ public void succeeds() {
6667
"/udp/65535",
6768
"/tcp/65535",
6869
"/ipfs/QmcgpsyWgH8Y8ajJz1Cu72KnS5uo2Aa2LpzU7kinSupNKC",
70+
"/ipfs/zdpuAnNyxJR8tigBDe5FM2PfMq1u7fKSCsTmb4m3iJZcCq8yB",
6971
"/udp/1234/sctp/1234",
7072
"/udp/1234/udt",
7173
"/udp/1234/utp",

0 commit comments

Comments
 (0)