Skip to content

Commit 5d9539e

Browse files
committed
Add base64 and base64pad implementation
1 parent ad627a0 commit 5d9539e

2 files changed

Lines changed: 13 additions & 1 deletion

File tree

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

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.ipfs.multibase;
22

33
import io.ipfs.multibase.binary.*;
4+
import io.ipfs.multibase.binary.Base64;
45

56
import java.util.*;
67

@@ -17,7 +18,9 @@ public enum Base {
1718
Base32Hex('v'),
1819
Base32HexUpper('V'),
1920
Base58Flickr('Z'),
20-
Base58BTC('z');
21+
Base58BTC('z'),
22+
Base64('m'),
23+
Base64Pad('M');
2124

2225
public char prefix;
2326

@@ -52,6 +55,10 @@ public static String encode(Base b, byte[] data) {
5255
return b.prefix + new String(new Base32(true).encode(data)).toLowerCase().replaceAll("=", "");
5356
case Base32HexUpper:
5457
return b.prefix + new String(new Base32(true).encode(data)).replaceAll("=", "");
58+
case Base64:
59+
return b.prefix + Base64.encodeBase64String(data).replaceAll("=", "");
60+
case Base64Pad:
61+
return b.prefix + Base64.encodeBase64String(data);
5562
default:
5663
throw new IllegalStateException("Unsupported base encoding: " + b.name());
5764
}
@@ -77,6 +84,9 @@ public static byte[] decode(String data) {
7784
return new Base32(true).decode(rest);
7885
case Base32HexUpper:
7986
return new Base32(true).decode(rest.toLowerCase());
87+
case Base64Pad:
88+
case Base64:
89+
return Base64.decodeBase64(rest);
8090
default:
8191
throw new IllegalStateException("Unsupported base encoding: " + b.name());
8292
}

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ public static Collection<Object[]> data() {
4949
{Multibase.Base.Base32Hex, hexToBytes("446563656e7472616c697a652065766572797468696e67212121"), "v8him6pbeehp62r39f9ii0pbmclp7it38d5n6e89144"},
5050
{Multibase.Base.Base32HexUpper, hexToBytes("446563656e7472616c697a652065766572797468696e67212121"), "V8HIM6PBEEHP62R39F9II0PBMCLP7IT38D5N6E89144"},
5151
{Multibase.Base.Base58BTC, hexToBytes("446563656e7472616c697a652065766572797468696e67212121"), "z36UQrhJq9fNDS7DiAHM9YXqDHMPfr4EMArvt"},
52+
{Multibase.Base.Base64, hexToBytes("446563656e7472616c697a652065766572797468696e67212121"), "mRGVjZW50cmFsaXplIGV2ZXJ5dGhpbmchISE"},
53+
{Multibase.Base.Base64Pad, hexToBytes("446563656e7472616c697a652065766572797468696e67212121"), "MRGVjZW50cmFsaXplIGV2ZXJ5dGhpbmchISE="},
5254
});
5355
}
5456

0 commit comments

Comments
 (0)