Skip to content

Commit 6d3a2b1

Browse files
committed
Add Base16Upper, Base32Pad, Base32PadUpper, Base32HexPad, Base32HexPadUpper, Base36Upper, Base64Url, Base64UrlPad
Update junit
1 parent 8d2851f commit 6d3a2b1

File tree

8 files changed

+52
-10
lines changed

8 files changed

+52
-10
lines changed

build.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@
4949
<junit printsummary="yes" fork="true" haltonfailure="yes">
5050
<jvmarg value="-Xmx1g"/>
5151
<classpath>
52-
<pathelement location="lib/junit-4.11.jar" />
53-
<pathelement location="lib/hamcrest-core-1.3.jar" />
52+
<pathelement location="lib/junit-4.13.2.jar" />
53+
<pathelement location="lib/hamcrest-2.2.jar" />
5454
<pathelement location="dist/multibase.jar" />
5555
</classpath>
5656
<test name="io.ipfs.multibase.MultibaseTest" haltonfailure="yes">

lib/hamcrest-2.2.jar

120 KB
Binary file not shown.

lib/hamcrest-core-1.3.jar

-44 KB
Binary file not shown.

lib/junit-4.12.jar

-308 KB
Binary file not shown.

lib/junit-4.13.2.jar

376 KB
Binary file not shown.

pom.xml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@
3232
<properties>
3333
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
3434
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
35-
<version.junit>4.13.1</version.junit>
36-
<version.hamcrest>1.3</version.hamcrest>
35+
<version.junit>4.13.2</version.junit>
36+
<version.hamcrest>2.2</version.hamcrest>
3737
</properties>
3838

3939
<dependencies>
@@ -45,7 +45,7 @@
4545
</dependency>
4646
<dependency>
4747
<groupId>org.hamcrest</groupId>
48-
<artifactId>hamcrest-core</artifactId>
48+
<artifactId>hamcrest</artifactId>
4949
<version>${version.hamcrest}</version>
5050
<scope>test</scope>
5151
</dependency>
@@ -58,8 +58,8 @@
5858
<artifactId>maven-compiler-plugin</artifactId>
5959
<version>3.1</version>
6060
<configuration>
61-
<source>1.8</source>
62-
<target>1.8</target>
61+
<source>11</source>
62+
<target>11</target>
6363
</configuration>
6464
</plugin>
6565
<plugin>

src/main/java/io/ipfs/multibase/Multibase.java

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,23 @@ public enum Base {
1313
Base8('7'),
1414
Base10('9'),
1515
Base16('f'),
16+
Base16Upper('F'),
1617
Base32('b'),
1718
Base32Upper('B'),
19+
Base32Pad('c'),
20+
Base32PadUpper('C'),
1821
Base32Hex('v'),
1922
Base32HexUpper('V'),
23+
Base32HexPad('t'),
24+
Base32HexPadUpper('T'),
2025
Base36('k'),
21-
Base58Flickr('Z'),
26+
Base36Upper('K'),
2227
Base58BTC('z'),
28+
Base58Flickr('Z'),
2329
Base64('m'),
24-
Base64Pad('M');
30+
Base64Url('u'),
31+
Base64Pad('M'),
32+
Base64UrlPad('U');
2533

2634
public char prefix;
2735

@@ -48,20 +56,36 @@ public static String encode(Base b, byte[] data) {
4856
return b.prefix + Base58.encode(data);
4957
case Base16:
5058
return b.prefix + Base16.encode(data);
59+
case Base16Upper:
60+
return b.prefix + Base16.encode(data).toUpperCase();
5161
case Base32:
5262
return b.prefix + new String(new Base32().encode(data)).toLowerCase().replaceAll("=", "");
63+
case Base32Pad:
64+
return b.prefix + new String(new Base32().encode(data)).toLowerCase();
65+
case Base32PadUpper:
66+
return b.prefix + new String(new Base32().encode(data));
5367
case Base32Upper:
5468
return b.prefix + new String(new Base32().encode(data)).replaceAll("=", "");
5569
case Base32Hex:
5670
return b.prefix + new String(new Base32(true).encode(data)).toLowerCase().replaceAll("=", "");
71+
case Base32HexPad:
72+
return b.prefix + new String(new Base32(true).encode(data)).toLowerCase();
73+
case Base32HexPadUpper:
74+
return b.prefix + new String(new Base32(true).encode(data));
5775
case Base32HexUpper:
5876
return b.prefix + new String(new Base32(true).encode(data)).replaceAll("=", "");
5977
case Base36:
6078
return b.prefix + Base36.encode(data);
79+
case Base36Upper:
80+
return b.prefix + Base36.encode(data).toUpperCase();
6181
case Base64:
6282
return b.prefix + Base64.encodeBase64String(data).replaceAll("=", "");
83+
case Base64Url:
84+
return b.prefix + Base64.encodeBase64URLSafeString(data).replaceAll("=", "");
6385
case Base64Pad:
6486
return b.prefix + Base64.encodeBase64String(data);
87+
case Base64UrlPad:
88+
return b.prefix + Base64.encodeBase64String(data).replaceAll("\\+", "-").replaceAll("/", "_");
6589
default:
6690
throw new IllegalStateException("Unsupported base encoding: " + b.name());
6791
}
@@ -79,18 +103,28 @@ public static byte[] decode(String data) {
79103
return Base58.decode(rest);
80104
case Base16:
81105
return Base16.decode(rest);
106+
case Base16Upper:
107+
return Base16.decode(rest.toLowerCase());
82108
case Base32:
109+
case Base32Pad:
83110
return new Base32().decode(rest);
111+
case Base32PadUpper:
84112
case Base32Upper:
85113
return new Base32().decode(rest.toLowerCase());
86114
case Base32Hex:
115+
case Base32HexPad:
87116
return new Base32(true).decode(rest);
117+
case Base32HexPadUpper:
88118
case Base32HexUpper:
89119
return new Base32(true).decode(rest.toLowerCase());
90120
case Base36:
91121
return Base36.decode(rest);
92-
case Base64Pad:
122+
case Base36Upper:
123+
return Base36.decode(rest.toLowerCase());
93124
case Base64:
125+
case Base64Url:
126+
case Base64Pad:
127+
case Base64UrlPad:
94128
return Base64.decodeBase64(rest);
95129
default:
96130
throw new IllegalStateException("Unsupported base encoding: " + b.name());

src/test/java/io/ipfs/multibase/MultibaseTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,19 +40,27 @@ public static Collection<Object[]> data() {
4040
{Multibase.Base.Base16, hexToBytes(""), "f"},
4141
{Multibase.Base.Base16, hexToBytes("01"), "f01"},
4242
{Multibase.Base.Base16, hexToBytes("0123456789ABCDEF"), "f0123456789abcdef"},
43+
{Multibase.Base.Base16Upper, hexToBytes("446563656e7472616c697a652065766572797468696e67212121"), "F446563656E7472616C697A652065766572797468696E67212121"},
4344
{Multibase.Base.Base32, hexToBytes("4D756C74696261736520697320617765736F6D6521205C6F2F"), "bjv2wy5djmjqxgzjanfzsaylxmvzw63lfeeqfy3zp"},
4445
{Multibase.Base.Base32, hexToBytes("446563656e7472616c697a652065766572797468696e67212121"), "birswgzloorzgc3djpjssazlwmvzhs5dinfxgoijbee"},
4546
{Multibase.Base.Base32, hexToBytes("01711220bb6ef01d25459cc803d0864cde4227cd2b779965eb1df34abeaec22c20fa42ea"), "bafyreif3n3yb2jkftteahuegjtpeej6nfn3zszpldxzuvpvoyiwcb6sc5i"},
4647
{Multibase.Base.Base32, hexToBytes("0000000000"), "baaaaaaaa"},
4748
{Multibase.Base.Base32, hexToBytes("446563656e7472616c697a652065766572797468696e67212121"), "birswgzloorzgc3djpjssazlwmvzhs5dinfxgoijbee"},
49+
{Multibase.Base.Base32Pad, hexToBytes("446563656e7472616c697a652065766572797468696e67212121"), "cirswgzloorzgc3djpjssazlwmvzhs5dinfxgoijbee======"},
50+
{Multibase.Base.Base32PadUpper, hexToBytes("446563656e7472616c697a652065766572797468696e67212121"), "CIRSWGZLOORZGC3DJPJSSAZLWMVZHS5DINFXGOIJBEE======"},
4851
{Multibase.Base.Base32Upper, hexToBytes("446563656e7472616c697a652065766572797468696e67212121"), "BIRSWGZLOORZGC3DJPJSSAZLWMVZHS5DINFXGOIJBEE"},
4952
{Multibase.Base.Base32Hex, hexToBytes("446563656e7472616c697a652065766572797468696e67212121"), "v8him6pbeehp62r39f9ii0pbmclp7it38d5n6e89144"},
53+
{Multibase.Base.Base32HexPad, hexToBytes("446563656e7472616c697a652065766572797468696e67212121"), "t8him6pbeehp62r39f9ii0pbmclp7it38d5n6e89144======"},
54+
{Multibase.Base.Base32HexPadUpper, hexToBytes("446563656e7472616c697a652065766572797468696e67212121"), "T8HIM6PBEEHP62R39F9II0PBMCLP7IT38D5N6E89144======"},
5055
{Multibase.Base.Base32HexUpper, hexToBytes("446563656e7472616c697a652065766572797468696e67212121"), "V8HIM6PBEEHP62R39F9II0PBMCLP7IT38D5N6E89144"},
5156
{Multibase.Base.Base36, hexToBytes("446563656e7472616c697a652065766572797468696e67212121"), "km552ng4dabi4neu1oo8l4i5mndwmpc3mkukwtxy9"},
5257
{Multibase.Base.Base36, hexToBytes("00446563656e7472616c697a652065766572797468696e67212121"), "k0m552ng4dabi4neu1oo8l4i5mndwmpc3mkukwtxy9"},
58+
{Multibase.Base.Base36Upper, hexToBytes("446563656e7472616c697a652065766572797468696e67212121"), "KM552NG4DABI4NEU1OO8L4I5MNDWMPC3MKUKWTXY9"},
5359
{Multibase.Base.Base58BTC, hexToBytes("446563656e7472616c697a652065766572797468696e67212121"), "z36UQrhJq9fNDS7DiAHM9YXqDHMPfr4EMArvt"},
5460
{Multibase.Base.Base64, hexToBytes("446563656e7472616c697a652065766572797468696e67212121"), "mRGVjZW50cmFsaXplIGV2ZXJ5dGhpbmchISE"},
61+
{Multibase.Base.Base64Url, hexToBytes("446563656e7472616c697a652065766572797468696e67212121"), "uRGVjZW50cmFsaXplIGV2ZXJ5dGhpbmchISE"},
5562
{Multibase.Base.Base64Pad, hexToBytes("446563656e7472616c697a652065766572797468696e67212121"), "MRGVjZW50cmFsaXplIGV2ZXJ5dGhpbmchISE="},
63+
{Multibase.Base.Base64UrlPad, hexToBytes("446563656e7472616c697a652065766572797468696e67212121"), "URGVjZW50cmFsaXplIGV2ZXJ5dGhpbmchISE="},
5664
});
5765
}
5866

0 commit comments

Comments
 (0)