in src/main/java/org/apache/commons/codec/binary/Base32.java [391:415]
private Base32(final int lineLength, final byte[] lineSeparator, final byte[] encodeTable, final byte padding, final CodecPolicy decodingPolicy) {
super(BYTES_PER_UNENCODED_BLOCK, BYTES_PER_ENCODED_BLOCK, lineLength, toLength(lineSeparator), padding, decodingPolicy);
Objects.requireNonNull(encodeTable, "encodeTable");
this.encodeTable = encodeTable;
this.decodeTable = encodeTable == HEX_ENCODE_TABLE ? HEX_DECODE_TABLE : DECODE_TABLE;
if (lineLength > 0) {
if (lineSeparator == null) {
throw new IllegalArgumentException("lineLength " + lineLength + " > 0, but lineSeparator is null");
}
final byte[] lineSeparatorCopy = lineSeparator.clone();
// Must be done after initializing the tables
if (containsAlphabetOrPad(lineSeparatorCopy)) {
final String sep = StringUtils.newStringUtf8(lineSeparatorCopy);
throw new IllegalArgumentException("lineSeparator must not contain Base32 characters: [" + sep + "]");
}
this.encodeSize = BYTES_PER_ENCODED_BLOCK + lineSeparatorCopy.length;
this.lineSeparator = lineSeparatorCopy;
} else {
this.encodeSize = BYTES_PER_ENCODED_BLOCK;
this.lineSeparator = null;
}
if (isInAlphabet(padding) || Character.isWhitespace(padding)) {
throw new IllegalArgumentException("pad must not be in alphabet or whitespace");
}
}