Class BaseNCodec
java.lang.Object
org.apache.tomcat.util.codec.binary.BaseNCodec
- Direct Known Subclasses:
- Base64
Abstract superclass for Base-N encoders and decoders.
 
This class is thread-safe.
- 
Field SummaryFieldsModifier and TypeFieldDescriptionprotected final intChunksize for encoding.protected static final intMask used to extract 8 bits, used in decoding bytesstatic final intMIME chunk size per RFC 2045 section 6.8.protected final bytePad byte.protected static final byteByte used to pad output.protected static final StringManager
- 
Constructor SummaryConstructorsModifierConstructorDescriptionprotectedBaseNCodec(int unencodedBlockSize, int encodedBlockSize, int lineLength, int chunkSeparatorLength) NotelineLengthis rounded down to the nearest multiple of the encoded block size.protectedBaseNCodec(int unencodedBlockSize, int encodedBlockSize, int lineLength, int chunkSeparatorLength, byte pad) NotelineLengthis rounded down to the nearest multiple of the encoded block size.
- 
Method SummaryModifier and TypeMethodDescriptionprotected booleancontainsAlphabetOrPad(byte[] arrayOctet) Tests a given byte array to see if it contains any characters within the alphabet or PAD.byte[]decode(byte[] pArray) Decodes a byte[] containing characters in the Base-N alphabet.byte[]decode(byte[] pArray, int off, int len) byte[]Decodes a String containing characters in the Base-N alphabet.byte[]encode(byte[] pArray) Encodes a byte[] containing binary data, into a byte[] containing characters in the alphabet.byte[]encode(byte[] pArray, int offset, int length) Encodes a byte[] containing binary data, into a byte[] containing characters in the alphabet.encodeAsString(byte[] pArray) Encodes a byte[] containing binary data, into a String containing characters in the appropriate alphabet.protected byte[]ensureBufferSize(int size, org.apache.tomcat.util.codec.binary.BaseNCodec.Context context) Ensure that the buffer has room forsizebytesprotected intGet the default buffer size.longgetEncodedLength(byte[] pArray) Calculates the amount of space needed to encode the supplied array.protected abstract booleanisInAlphabet(byte value) Returns whether or not theoctetis in the current alphabet.
- 
Field Details- 
sm
- 
MIME_CHUNK_SIZEpublic static final int MIME_CHUNK_SIZEMIME chunk size per RFC 2045 section 6.8.The 76 character limit does not count the trailing CRLF, but counts all other characters, including any equal signs. - See Also:
 
- 
MASK_8BITSprotected static final int MASK_8BITSMask used to extract 8 bits, used in decoding bytes- See Also:
 
- 
PAD_DEFAULTprotected static final byte PAD_DEFAULTByte used to pad output.- See Also:
 
- 
padprotected final byte padPad byte. Instance variable just in case it needs to vary later.
- 
lineLengthprotected final int lineLengthChunksize for encoding. Not used when decoding. A value of zero or less implies no chunking of the encoded data. Rounded down to the nearest multiple of encodedBlockSize.
 
- 
- 
Constructor Details- 
BaseNCodecprotected BaseNCodec(int unencodedBlockSize, int encodedBlockSize, int lineLength, int chunkSeparatorLength) NotelineLengthis rounded down to the nearest multiple of the encoded block size. IfchunkSeparatorLengthis zero, then chunking is disabled.- Parameters:
- unencodedBlockSize- the size of an unencoded block (e.g. Base64 = 3)
- encodedBlockSize- the size of an encoded block (e.g. Base64 = 4)
- lineLength- if > 0, use chunking with a length- lineLength
- chunkSeparatorLength- the chunk separator length, if relevant
 
- 
BaseNCodecprotected BaseNCodec(int unencodedBlockSize, int encodedBlockSize, int lineLength, int chunkSeparatorLength, byte pad) NotelineLengthis rounded down to the nearest multiple of the encoded block size. IfchunkSeparatorLengthis zero, then chunking is disabled.- Parameters:
- unencodedBlockSize- the size of an unencoded block (e.g. Base64 = 3)
- encodedBlockSize- the size of an encoded block (e.g. Base64 = 4)
- lineLength- if > 0, use chunking with a length- lineLength
- chunkSeparatorLength- the chunk separator length, if relevant
- pad- byte used as padding byte.
 
 
- 
- 
Method Details- 
containsAlphabetOrPadprotected boolean containsAlphabetOrPad(byte[] arrayOctet) Tests a given byte array to see if it contains any characters within the alphabet or PAD. Intended for use in checking line-ending arrays- Parameters:
- arrayOctet- byte array to test
- Returns:
- trueif any byte is a valid character in the alphabet or PAD;- falseotherwise
 
- 
decodepublic byte[] decode(byte[] pArray) Decodes a byte[] containing characters in the Base-N alphabet.- Parameters:
- pArray- A byte array containing Base-N character data
- Returns:
- a byte array containing binary data
 
- 
decodepublic byte[] decode(byte[] pArray, int off, int len) 
- 
decodeDecodes a String containing characters in the Base-N alphabet.- Parameters:
- pArray- A String containing Base-N character data
- Returns:
- a byte array containing binary data
 
- 
encodepublic byte[] encode(byte[] pArray) Encodes a byte[] containing binary data, into a byte[] containing characters in the alphabet.- Parameters:
- pArray- a byte array containing binary data
- Returns:
- A byte array containing only the base N alphabetic character data
 
- 
encodepublic byte[] encode(byte[] pArray, int offset, int length) Encodes a byte[] containing binary data, into a byte[] containing characters in the alphabet.- Parameters:
- pArray- a byte array containing binary data
- offset- initial offset of the subarray.
- length- length of the subarray.
- Returns:
- A byte array containing only the base N alphabetic character data
- Since:
- 1.11
 
- 
encodeAsStringEncodes a byte[] containing binary data, into a String containing characters in the appropriate alphabet. Uses UTF8 encoding.- Parameters:
- pArray- a byte array containing binary data
- Returns:
- String containing only character data in the appropriate alphabet.
- Since:
- 1.5
 
- 
ensureBufferSizeprotected byte[] ensureBufferSize(int size, org.apache.tomcat.util.codec.binary.BaseNCodec.Context context) Ensure that the buffer has room forsizebytes- Parameters:
- size- minimum spare space required
- context- the context to be used
- Returns:
- the buffer
 
- 
getDefaultBufferSizeprotected int getDefaultBufferSize()Get the default buffer size. Can be overridden.- Returns:
- the default buffer size.
 
- 
getEncodedLengthpublic long getEncodedLength(byte[] pArray) Calculates the amount of space needed to encode the supplied array.- Parameters:
- pArray- byte[] array which will later be encoded
- Returns:
- amount of space needed to encode the supplied array. Returns a long since a max-len array will require > Integer.MAX_VALUE
 
- 
isInAlphabetprotected abstract boolean isInAlphabet(byte value) Returns whether or not theoctetis in the current alphabet. Does not allow whitespace or pad.- Parameters:
- value- The value to test
- Returns:
- trueif the value is defined in the current alphabet,- falseotherwise.
 
 
-