package railo.runtime.coder;
import railo.commons.io.CharsetUtil;
public final class Base64Util {
private static byte base64Alphabet[];
private static byte lookUpBase64Alphabet[];
/**
* @param arrayOctect byte array to check
* @return true if base64
*/
public static boolean isBase64(byte arrayOctect[]) {
int length = arrayOctect.length;
if(length == 0)
return true;
for(int i = 0; i < length; i++) {
if(!isBase64(arrayOctect[i]))
return false;
}
return true;
}
/**
* @param octect byte to check
* @return true if base64
*/
public static boolean isBase64(byte octect) {
return octect == 61 || base64Alphabet[octect] != -1;
}
/**
* @param isValidString string to check
* @return true if base64
*/
public static boolean isBase64(String isValidString) {
return isBase64(isValidString.getBytes(CharsetUtil.UTF8));
}
/** Initializations */
static {
base64Alphabet = new byte[255];
lookUpBase64Alphabet = new byte[64];
for(int i = 0; i < 255; i++)
base64Alphabet[i] = -1;
for(int i = 90; i >= 65; i--)
base64Alphabet[i] = (byte)(i - 65);
for(int i = 122; i >= 97; i--)
base64Alphabet[i] = (byte)((i - 97) + 26);
for(int i = 57; i >= 48; i--)
base64Alphabet[i] = (byte)((i - 48) + 52);
base64Alphabet[43] = 62;
base64Alphabet[47] = 63;
for(int i = 0; i <= 25; i++)
lookUpBase64Alphabet[i] = (byte)(65 + i);
int i = 26;
for(int j = 0; i <= 51; j++) {
lookUpBase64Alphabet[i] = (byte)(97 + j);
i++;
}
i = 52;
for(int j = 0; i <= 61; j++) {
lookUpBase64Alphabet[i] = (byte)(48 + j);
i++;
}
lookUpBase64Alphabet[62] = 43;
lookUpBase64Alphabet[63] = 47;
}
}