b24 |= ((int) _input[_inputPtr++]) & 0xFF; b24 = (b24 << 8) | (((int) _input[_inputPtr++]) & 0xFF); outPtr = _variant.encodeBase64Chunk(b24, buffer, outPtr); _chunksBeforeLf = _variant.getMaxLineLength() >> 2; b24 |= (((int) _input[_inputPtr++]) & 0xFF) << 8; outPtr = _variant.encodeBase64Partial(b24, inputLeft, buffer, outPtr);
if (_variant.usesPadding()) { return -1;
int bits = _variant.decodeBase64Char(ch); if (bits < 0) { throw reportInvalidChar(ch, 0); int bits = _variant.decodeBase64Char(ch); if (bits < 0) { throw reportInvalidChar(ch, 1); int bits = _variant.decodeBase64Char(ch); if (bits < 0) { if (bits != Base64Variant.BASE64_VALUE_PADDING) { int bits = _variant.decodeBase64Char(ch); if (bits < 0) { if (bits != Base64Variant.BASE64_VALUE_PADDING) { if (!_variant.usesPaddingChar(ch)) { throw reportInvalidChar(ch, 3, "expected padding character '"+_variant.getPaddingChar()+"'");
/** * @param bindex Relative index within base64 character unit; between 0 * and 3 (as unit has exactly 4 characters) */ protected IllegalArgumentException reportInvalidChar(char ch, int bindex, String msg) throws IllegalArgumentException { String base; if (ch <= INT_SPACE) { base = "Illegal white space character (code 0x"+Integer.toHexString(ch)+") as character #"+(bindex+1)+" of 4-char base64 unit: can only used between units"; } else if (_variant.usesPaddingChar(ch)) { base = "Unexpected padding character ('"+_variant.getPaddingChar()+"') as character #"+(bindex+1)+" of 4-char base64 unit: padding only legal as 3rd or 4th character"; } else if (!Character.isDefined(ch) || Character.isISOControl(ch)) { // Not sure if we can really get here... ? (most illegal xml chars are caught at lower level) base = "Illegal character (code 0x"+Integer.toHexString(ch)+") in base64 content"; } else { base = "Illegal character '"+((char)ch)+"' (code 0x"+Integer.toHexString(ch)+") in base64 content"; } if (msg != null) { base = base + ": " + msg; } return new IllegalArgumentException(base); } }
int bits = _variant.decodeBase64Char(ch); if (bits < 0) { throw reportInvalidChar(ch, 0); int bits = _variant.decodeBase64Char(ch); if (bits < 0) { throw reportInvalidChar(ch, 1); int bits = _variant.decodeBase64Char(ch); if (bits < 0) { if (bits != Base64Variant.BASE64_VALUE_PADDING) { int bits = _variant.decodeBase64Char(ch); if (bits < 0) { if (bits != Base64Variant.BASE64_VALUE_PADDING) { if (!_variant.usesPaddingChar(ch)) { throw reportInvalidChar(ch, 3, "expected padding character '='");
protected Base64Encoder(Base64Variant v, byte[] values, int from, int end) { _variant = v; _input = values; _inputPtr = from; _inputEnd = end; _chunksBeforeLf = _variant.getMaxLineLength() >> 2; }
b24 |= ((int) _input[_inputPtr++]) & 0xFF; b24 = (b24 << 8) | (((int) _input[_inputPtr++]) & 0xFF); outPtr = _variant.encodeBase64Chunk(b24, buffer, outPtr); _chunksBeforeLf = _variant.getMaxLineLength() >> 2; b24 |= (((int) _input[_inputPtr++]) & 0xFF) << 8; outPtr = _variant.encodeBase64Partial(b24, inputLeft, buffer, outPtr);