1package eu.siacs.conversations.utils;
2
3import com.google.common.base.Joiner;
4import com.google.common.base.Splitter;
5import com.google.common.base.Strings;
6import com.google.common.collect.Iterables;
7import com.google.common.io.BaseEncoding;
8
9import java.util.List;
10
11public class AsciiArmor {
12
13 public static byte[] decode(final String input) {
14 final List<String> lines = Splitter.on('\n').splitToList(Strings.nullToEmpty(input).trim());
15 if (lines.size() == 1) {
16 final String line = lines.get(0);
17 final String cleaned = line.substring(0, line.lastIndexOf("="));
18 return BaseEncoding.base64().decode(cleaned);
19 }
20 final String withoutChecksum;
21 if (Iterables.getLast(lines).charAt(0) == '=') {
22 withoutChecksum = Joiner.on("").join(lines.subList(0, lines.size() - 1));
23 } else {
24 withoutChecksum = Joiner.on("").join(lines);
25 }
26 return BaseEncoding.base64().decode(withoutChecksum);
27 }
28
29}