public abstract class BaseNCodec extends Object implements BinaryEncoder, BinaryDecoder
This class is thread-safe.
Modifier and Type | Field and Description |
---|---|
protected int |
lineLength
Chunksize for encoding.
|
protected static int |
MASK_8BITS
Mask used to extract 8 bits, used in decoding bytes
|
static int |
MIME_CHUNK_SIZE
MIME chunk size per RFC 2045 section 6.8.
|
protected byte |
pad |
protected static byte |
PAD_DEFAULT
Byte used to pad output.
|
static int |
PEM_CHUNK_SIZE
PEM chunk size per RFC 1421 section 4.3.2.4.
|
protected static StringManager |
sm |
Modifier | Constructor and Description |
---|---|
protected |
BaseNCodec(int unencodedBlockSize,
int encodedBlockSize,
int lineLength,
int chunkSeparatorLength)
Note
lineLength is rounded down to the nearest multiple of the encoded block size. |
protected |
BaseNCodec(int unencodedBlockSize,
int encodedBlockSize,
int lineLength,
int chunkSeparatorLength,
byte pad)
Note
lineLength is rounded down to the nearest multiple of the encoded block size. |
Modifier and Type | Method and Description |
---|---|
protected boolean |
containsAlphabetOrPad(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) |
Object |
decode(Object obj)
Deprecated.
This unused method will be removed in Tomcat 9
|
byte[] |
decode(String pArray)
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.
|
Object |
encode(Object obj)
Deprecated.
This unused method will be removed in Tomcat 9
|
String |
encodeAsString(byte[] pArray)
Encodes a byte[] containing binary data, into a String containing characters in the appropriate alphabet.
|
String |
encodeToString(byte[] pArray)
Encodes a byte[] containing binary data, into a String containing characters in the Base-N alphabet.
|
protected byte[] |
ensureBufferSize(int size,
org.apache.tomcat.util.codec.binary.BaseNCodec.Context context)
Ensure that the buffer has room for
size bytes |
static byte[] |
getChunkSeparator()
Gets a copy of the chunk separator per RFC 2045 section 2.1.
|
protected int |
getDefaultBufferSize()
Get the default buffer size.
|
long |
getEncodedLength(byte[] pArray)
Calculates the amount of space needed to encode the supplied array.
|
protected abstract boolean |
isInAlphabet(byte value)
Returns whether or not the
octet is in the current alphabet. |
boolean |
isInAlphabet(byte[] arrayOctet,
boolean allowWSPad)
Tests a given byte array to see if it contains only valid characters within the alphabet.
|
boolean |
isInAlphabet(String basen)
Tests a given String to see if it contains only valid characters within the alphabet.
|
protected static boolean |
isWhiteSpace(byte byteToCheck)
Checks if a byte value is whitespace or not.
|
protected static final StringManager sm
public static final int MIME_CHUNK_SIZE
The 76 character limit does not count the trailing CRLF, but counts all other characters, including any equal signs.
public static final int PEM_CHUNK_SIZE
The 64 character limit does not count the trailing CRLF, but counts all other characters, including any equal signs.
protected static final int MASK_8BITS
protected static final byte PAD_DEFAULT
protected final byte pad
protected final int lineLength
protected BaseNCodec(int unencodedBlockSize, int encodedBlockSize, int lineLength, int chunkSeparatorLength)
lineLength
is rounded down to the nearest multiple of the encoded block size.
If chunkSeparatorLength
is zero, then chunking is disabled.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 relevantprotected BaseNCodec(int unencodedBlockSize, int encodedBlockSize, int lineLength, int chunkSeparatorLength, byte pad)
lineLength
is rounded down to the nearest multiple of the encoded block size.
If chunkSeparatorLength
is zero, then chunking is disabled.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 relevantpad
- byte used as padding byte.public static byte[] getChunkSeparator()
protected static boolean isWhiteSpace(byte byteToCheck)
byteToCheck
- the byte to checkprotected boolean containsAlphabetOrPad(byte[] arrayOctet)
arrayOctet
- byte array to testtrue
if any byte is a valid character in the alphabet or PAD; false
otherwisepublic byte[] decode(byte[] pArray)
decode
in interface BinaryDecoder
pArray
- A byte array containing Base-N character datapublic byte[] decode(byte[] pArray, int off, int len)
public byte[] decode(String pArray)
pArray
- A String containing Base-N character data@Deprecated public Object decode(Object obj) throws DecoderException
decode
in interface Decoder
obj
- Object to decodeDecoderException
- if the parameter supplied is not of type byte[]public byte[] encode(byte[] pArray)
encode
in interface BinaryEncoder
pArray
- a byte array containing binary datapublic byte[] encode(byte[] pArray, int offset, int length)
pArray
- a byte array containing binary dataoffset
- initial offset of the subarray.length
- length of the subarray.public String encodeAsString(byte[] pArray)
pArray
- a byte array containing binary dataencodeToString(byte[])
; it was merged during refactoring.@Deprecated public Object encode(Object obj) throws EncoderException
encode
in interface Encoder
obj
- Object to encodeEncoderException
- if the parameter supplied is not of type byte[]public String encodeToString(byte[] pArray)
pArray
- a byte array containing binary dataprotected byte[] ensureBufferSize(int size, org.apache.tomcat.util.codec.binary.BaseNCodec.Context context)
size
bytessize
- minimum spare space requiredcontext
- the context to be usedprotected int getDefaultBufferSize()
public long getEncodedLength(byte[] pArray)
pArray
- byte[] array which will later be encodedprotected abstract boolean isInAlphabet(byte value)
octet
is in the current alphabet.
Does not allow whitespace or pad.value
- The value to testtrue
if the value is defined in the current alphabet, false
otherwise.public boolean isInAlphabet(byte[] arrayOctet, boolean allowWSPad)
arrayOctet
- byte array to testallowWSPad
- if true
, then whitespace and PAD are also allowedtrue
if all bytes are valid characters in the alphabet or if the byte array is empty;
false
, otherwisepublic boolean isInAlphabet(String basen)
basen
- String to testtrue
if all characters in the String are valid characters in the alphabet or if
the String is empty; false
, otherwiseisInAlphabet(byte[], boolean)
Copyright © 2000-2021 Apache Software Foundation. All Rights Reserved.