org.cryptacular.spec.CodecSpec Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of cryptacular Show documentation
Show all versions of cryptacular Show documentation
The spectacular complement to the Bouncy Castle crypto API for Java.
/* See LICENSE for licensing and NOTICE for copyright. */
package org.cryptacular.spec;
import org.cryptacular.codec.Base64Codec;
import org.cryptacular.codec.Codec;
import org.cryptacular.codec.HexCodec;
/**
* Describes a string-to-byte encoding provides a means to create a new instance of the coed via the {@link
* #newInstance()} method.
*
* @author Middleware Services
*/
public class CodecSpec implements Spec
{
/** Hexadecimal encoding specification. */
public static final CodecSpec HEX = new CodecSpec("Hex");
/** Base64 encoding specification. */
public static final CodecSpec BASE64 = new CodecSpec("Base64");
/** Name of encoding, e.g. "Hex, "Base64". */
private String encoding;
/**
* Creates a new instance of the given encoding.
*
* @param encoding Name of encoding.
*/
public CodecSpec(final String encoding)
{
if (encoding == null) {
throw new IllegalArgumentException("Encoding cannot be null.");
}
this.encoding = encoding;
}
/** @return The name of the encoding, e.g. "Hex", "Base64". */
@Override
public String getAlgorithm()
{
return encoding;
}
@Override
public Codec newInstance()
{
final Codec codec;
if ("Hex".equalsIgnoreCase(encoding)) {
codec = new HexCodec();
} else if ("Base64".equalsIgnoreCase(encoding) || "Base-64".equalsIgnoreCase(encoding)) {
codec = new Base64Codec();
} else {
throw new IllegalArgumentException("Invalid encoding.");
}
return codec;
}
@Override
public String toString()
{
return encoding;
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy