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            if (line.length() > 1) {
18                final int end = line.lastIndexOf('=');
19                if (end >= 1) {
20                    final String cleaned = line.substring(0, end);
21                    return BaseEncoding.base64().decode(cleaned);
22                }
23            }
24        }
25        final String withoutChecksum;
26        if (Iterables.getLast(lines).charAt(0) == '=') {
27            withoutChecksum = Joiner.on("").join(lines.subList(0, lines.size() - 1));
28        } else {
29            withoutChecksum = Joiner.on("").join(lines);
30        }
31        return BaseEncoding.base64().decode(withoutChecksum);
32    }
33
34}