org.cryptacular.util.CodecUtil Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of com.liferay.saml.opensaml.integration Show documentation
Show all versions of com.liferay.saml.opensaml.integration Show documentation
Liferay SAML OpenSAML Integration
/* See LICENSE for licensing and NOTICE for copyright. */
package org.cryptacular.util;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import org.cryptacular.EncodingException;
import org.cryptacular.codec.Base32Decoder;
import org.cryptacular.codec.Base32Encoder;
import org.cryptacular.codec.Base64Decoder;
import org.cryptacular.codec.Base64Encoder;
import org.cryptacular.codec.Decoder;
import org.cryptacular.codec.Encoder;
import org.cryptacular.codec.HexDecoder;
import org.cryptacular.codec.HexEncoder;
/**
* Utility class for common encoding conversions.
*
* @author Middleware Services
*/
public final class CodecUtil
{
/** Private constructor of utility class. */
private CodecUtil() {}
/**
* Encodes raw bytes to the equivalent hexadecimal encoded string.
*
* @param raw Raw bytes to encode.
*
* @return Hexadecimal encoded string.
*
* @throws EncodingException on encoding errors.
*/
public static String hex(final byte[] raw) throws EncodingException
{
return encode(new HexEncoder(), raw);
}
/**
* Encodes raw bytes to the equivalent hexadecimal encoded string with optional delimiting of output.
*
* @param raw Raw bytes to encode.
* @param delimit True to delimit every two characters (i.e. every byte) of output with ':' character, false
* otherwise.
*
* @return Hexadecimal encoded string.
*
* @throws EncodingException on encoding errors.
*/
public static String hex(final byte[] raw, final boolean delimit) throws EncodingException
{
return encode(new HexEncoder(delimit), raw);
}
/**
* Decodes a hexadecimal encoded string to raw bytes.
*
* @param encoded Hex encoded character data.
*
* @return Raw bytes of hex string.
*
* @throws EncodingException on decoding errors.
*/
public static byte[] hex(final CharSequence encoded) throws EncodingException
{
return decode(new HexDecoder(), encoded);
}
/**
* Encodes bytes into base 64-encoded string.
*
* @param raw Raw bytes to encode.
*
* @return Base64-encoded string.
*
* @throws EncodingException on encoding errors.
*/
public static String b64(final byte[] raw) throws EncodingException
{
return encode(new Base64Encoder(), raw);
}
/**
* Decodes a base64-encoded string into raw bytes.
*
* @param encoded Base64-encoded character data.
*
* @return Base64-decoded bytes.
*
* @throws EncodingException on decoding errors.
*/
public static byte[] b64(final CharSequence encoded) throws EncodingException
{
return decode(new Base64Decoder(), encoded);
}
/**
* Encodes bytes into base64-encoded string.
*
* @param raw Raw bytes to encode.
* @param lineLength Length of each base64-encoded line in output.
*
* @return Base64-encoded string.
*
* @throws EncodingException on encoding errors.
*/
public static String b64(final byte[] raw, final int lineLength) throws EncodingException
{
return encode(new Base64Encoder(lineLength), raw);
}
/**
* Encodes bytes into base 32-encoded string.
*
* @param raw Raw bytes to encode.
*
* @return Base32-encoded string.
*
* @throws EncodingException on encoding errors.
*/
public static String b32(final byte[] raw) throws EncodingException
{
return encode(new Base32Encoder(), raw);
}
/**
* Decodes a base32-encoded string into raw bytes.
*
* @param encoded Base32-encoded character data.
*
* @return Base64-decoded bytes.
*
* @throws EncodingException on decoding errors.
*/
public static byte[] b32(final CharSequence encoded) throws EncodingException
{
return decode(new Base32Decoder(), encoded);
}
/**
* Encodes bytes into base32-encoded string.
*
* @param raw Raw bytes to encode.
* @param lineLength Length of each base32-encoded line in output.
*
* @return Base32-encoded string.
*
* @throws EncodingException on encoding errors.
*/
public static String b32(final byte[] raw, final int lineLength) throws EncodingException
{
return encode(new Base32Encoder(lineLength), raw);
}
/**
* Encodes raw bytes using the given encoder.
*
* @param encoder Encoder to perform byte-to-char conversion.
* @param raw Raw bytes to encode.
*
* @return Encoded data as a string.
*
* @throws EncodingException on encoding errors.
*/
public static String encode(final Encoder encoder, final byte[] raw) throws EncodingException
{
final CharBuffer output = CharBuffer.allocate(encoder.outputSize(raw.length));
encoder.encode(ByteBuffer.wrap(raw), output);
encoder.finalize(output);
return output.flip().toString();
}
/**
* Decodes the given encoded data using the given char-to-byte decoder.
*
* @param decoder Decoder to perform char-to-byte conversion.
* @param encoded Encoded character data.
*
* @return Decoded data as raw bytes.
*
* @throws EncodingException on decoding errors.
*/
public static byte[] decode(final Decoder decoder, final CharSequence encoded) throws EncodingException
{
final ByteBuffer output = ByteBuffer.allocate(decoder.outputSize(encoded.length()));
decoder.decode(CharBuffer.wrap(encoded), output);
decoder.finalize(output);
output.flip();
return ByteUtil.toArray(output);
}
}