Initial commit
This commit is contained in:
@@ -0,0 +1,256 @@
|
||||
package com.mattrixwv.cipherstream.utils;
|
||||
|
||||
|
||||
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||
import com.mattrixwv.cipherstream.exception.InvalidCipherParameterException;
|
||||
|
||||
import lombok.experimental.UtilityClass;
|
||||
|
||||
|
||||
@UtilityClass
|
||||
public class CipherParameterUtil{
|
||||
//Error messages
|
||||
public static final String PRESENT_MESSAGE = " must be present";
|
||||
public static final String INTEGER_MESSAGE = " must be an integer";
|
||||
public static final String TEXT_MESSAGE = " must be text";
|
||||
public static final String BOOLEAN_MESSAGE = " must be a boolean";
|
||||
public static final String INTEGER_ARRAY_MESSAGE = " must be an integer array";
|
||||
public static final String CHARACTER_MESSAGE = " must be a single character";
|
||||
//General
|
||||
public static final String PRESERVE_CAPITALS = "preserveCapitals";
|
||||
public static final String PRESERVE_WHITESPACE = "preserveWhitespace";
|
||||
public static final String PRESERVE_SYMBOLS = "preserveSymbols";
|
||||
public static final String INPUT_STRING = "inputString";
|
||||
public static final String OUTPUT_STRING = "outputString";
|
||||
public static final String KEYWORD = "keyword";
|
||||
|
||||
|
||||
//Caesar
|
||||
public static final String CAESAR_SHIFT_AMOUNT = "shiftAmount";
|
||||
|
||||
//Affine
|
||||
public static final String AFFINE_KEY_1 = "key1";
|
||||
public static final String AFFINE_KEY_2 = "key2";
|
||||
|
||||
//BaseX
|
||||
public static final String BASE_X_BASE = "base";
|
||||
|
||||
//ADFGX
|
||||
public static final String SQUARE_KEYWORD = "squareKeyword";
|
||||
|
||||
//Hill
|
||||
public static final String HILL_KEY = "key";
|
||||
|
||||
//Rail Fence
|
||||
public static final String RAIL_FENCE_RAILS = "rails";
|
||||
|
||||
//Trifid
|
||||
public static final String TRIFID_FILL = "fill";
|
||||
public static final String TRIFID_GROUP_LENGTH = "groupLength";
|
||||
|
||||
|
||||
public static void verifyUniversalParams(ObjectNode params){
|
||||
if(!params.has(PRESERVE_CAPITALS)){
|
||||
throw new InvalidCipherParameterException(PRESERVE_CAPITALS + PRESENT_MESSAGE);
|
||||
}
|
||||
if(!params.get(PRESERVE_CAPITALS).isBoolean()){
|
||||
throw new InvalidCipherParameterException(PRESERVE_CAPITALS + BOOLEAN_MESSAGE);
|
||||
}
|
||||
|
||||
if(!params.has(PRESERVE_WHITESPACE)){
|
||||
throw new InvalidCipherParameterException(PRESERVE_WHITESPACE + PRESENT_MESSAGE);
|
||||
}
|
||||
if(!params.get(PRESERVE_WHITESPACE).isBoolean()){
|
||||
throw new InvalidCipherParameterException(PRESERVE_WHITESPACE + BOOLEAN_MESSAGE);
|
||||
}
|
||||
|
||||
if(!params.has(PRESERVE_SYMBOLS)){
|
||||
throw new InvalidCipherParameterException(PRESERVE_SYMBOLS + PRESENT_MESSAGE);
|
||||
}
|
||||
if(!params.get(PRESERVE_SYMBOLS).isBoolean()){
|
||||
throw new InvalidCipherParameterException(PRESERVE_SYMBOLS + BOOLEAN_MESSAGE);
|
||||
}
|
||||
|
||||
if(!params.has(INPUT_STRING)){
|
||||
throw new InvalidCipherParameterException(INPUT_STRING + PRESENT_MESSAGE);
|
||||
}
|
||||
if(!params.get(INPUT_STRING).isTextual()){
|
||||
throw new InvalidCipherParameterException(INPUT_STRING + TEXT_MESSAGE);
|
||||
}
|
||||
}
|
||||
|
||||
public static void verifyParamsWithKeyword(ObjectNode params){
|
||||
verifyUniversalParams(params);
|
||||
|
||||
if(!params.has(KEYWORD)){
|
||||
throw new InvalidCipherParameterException(KEYWORD + PRESENT_MESSAGE);
|
||||
}
|
||||
if(!params.get(KEYWORD).isTextual()){
|
||||
throw new InvalidCipherParameterException(KEYWORD + TEXT_MESSAGE);
|
||||
}
|
||||
}
|
||||
|
||||
public static void verifyCaesarParams(ObjectNode params){
|
||||
verifyUniversalParams(params);
|
||||
|
||||
if(!params.has(CAESAR_SHIFT_AMOUNT)){
|
||||
throw new InvalidCipherParameterException(CAESAR_SHIFT_AMOUNT + PRESENT_MESSAGE);
|
||||
}
|
||||
if(!params.get(CAESAR_SHIFT_AMOUNT).isInt()){
|
||||
throw new InvalidCipherParameterException(CAESAR_SHIFT_AMOUNT + INTEGER_MESSAGE);
|
||||
}
|
||||
}
|
||||
|
||||
public static void verifyAffineParams(ObjectNode params){
|
||||
verifyUniversalParams(params);
|
||||
|
||||
if(!params.has(AFFINE_KEY_1)){
|
||||
throw new InvalidCipherParameterException(AFFINE_KEY_1 + PRESENT_MESSAGE);
|
||||
}
|
||||
if(!params.get(AFFINE_KEY_1).isInt()){
|
||||
throw new InvalidCipherParameterException(AFFINE_KEY_1 + INTEGER_MESSAGE);
|
||||
}
|
||||
|
||||
if(!params.has(AFFINE_KEY_2)){
|
||||
throw new InvalidCipherParameterException(AFFINE_KEY_2 + PRESENT_MESSAGE);
|
||||
}
|
||||
if(!params.get(AFFINE_KEY_2).isInt()){
|
||||
throw new InvalidCipherParameterException(AFFINE_KEY_2 + INTEGER_MESSAGE);
|
||||
}
|
||||
}
|
||||
|
||||
public static void verifyAtbashParams(ObjectNode params){
|
||||
verifyUniversalParams(params);
|
||||
}
|
||||
|
||||
public static void verifyBaconianParams(ObjectNode params){
|
||||
if(!params.has(PRESERVE_CAPITALS)){
|
||||
throw new InvalidCipherParameterException(PRESERVE_CAPITALS + PRESENT_MESSAGE);
|
||||
}
|
||||
if(!params.get(PRESERVE_CAPITALS).isBoolean()){
|
||||
throw new InvalidCipherParameterException(PRESERVE_CAPITALS + BOOLEAN_MESSAGE);
|
||||
}
|
||||
|
||||
if(!params.has(INPUT_STRING)){
|
||||
throw new InvalidCipherParameterException(INPUT_STRING + PRESENT_MESSAGE);
|
||||
}
|
||||
if(!params.get(INPUT_STRING).isTextual()){
|
||||
throw new InvalidCipherParameterException(INPUT_STRING + TEXT_MESSAGE);
|
||||
}
|
||||
}
|
||||
|
||||
public static void verifyBaseXParams(ObjectNode params){
|
||||
if(!params.has(INPUT_STRING)){
|
||||
throw new InvalidCipherParameterException(INPUT_STRING + PRESENT_MESSAGE);
|
||||
}
|
||||
if(!params.get(INPUT_STRING).isTextual()){
|
||||
throw new InvalidCipherParameterException(INPUT_STRING + TEXT_MESSAGE);
|
||||
}
|
||||
|
||||
if(!params.has(BASE_X_BASE)){
|
||||
throw new InvalidCipherParameterException(BASE_X_BASE + PRESENT_MESSAGE);
|
||||
}
|
||||
if(!params.get(BASE_X_BASE).isInt()){
|
||||
throw new InvalidCipherParameterException(BASE_X_BASE + INTEGER_MESSAGE);
|
||||
}
|
||||
}
|
||||
|
||||
public static void verifySquareKeyword(ObjectNode params){
|
||||
verifyUniversalParams(params);
|
||||
|
||||
if(!params.has(SQUARE_KEYWORD)){
|
||||
throw new InvalidCipherParameterException(SQUARE_KEYWORD + PRESENT_MESSAGE);
|
||||
}
|
||||
if(!params.get(SQUARE_KEYWORD).isTextual()){
|
||||
throw new InvalidCipherParameterException(SQUARE_KEYWORD + TEXT_MESSAGE);
|
||||
}
|
||||
}
|
||||
|
||||
public static void verifyHillParams(ObjectNode params){
|
||||
verifyUniversalParams(params);
|
||||
|
||||
if(!params.has(HILL_KEY)){
|
||||
throw new InvalidCipherParameterException(HILL_KEY + PRESENT_MESSAGE);
|
||||
}
|
||||
if(!params.get(HILL_KEY).isArray()){
|
||||
throw new InvalidCipherParameterException(HILL_KEY + INTEGER_ARRAY_MESSAGE);
|
||||
}
|
||||
if(!params.get(HILL_KEY).get(0).isArray()){
|
||||
throw new InvalidCipherParameterException(HILL_KEY + INTEGER_ARRAY_MESSAGE);
|
||||
}
|
||||
if(!params.get(HILL_KEY).get(0).get(0).isInt()){
|
||||
throw new InvalidCipherParameterException(HILL_KEY + INTEGER_ARRAY_MESSAGE);
|
||||
}
|
||||
}
|
||||
|
||||
public static void verifyMorseParams(ObjectNode params){
|
||||
if(!params.has(INPUT_STRING)){
|
||||
throw new InvalidCipherParameterException(INPUT_STRING + PRESENT_MESSAGE);
|
||||
}
|
||||
if(!params.get(INPUT_STRING).isTextual()){
|
||||
throw new InvalidCipherParameterException(INPUT_STRING + TEXT_MESSAGE);
|
||||
}
|
||||
}
|
||||
|
||||
public static void verifyPolybiusParams(ObjectNode params){
|
||||
if(!params.has(PRESERVE_WHITESPACE)){
|
||||
throw new InvalidCipherParameterException(PRESERVE_WHITESPACE + PRESENT_MESSAGE);
|
||||
}
|
||||
if(!params.get(PRESERVE_WHITESPACE).isBoolean()){
|
||||
throw new InvalidCipherParameterException(PRESERVE_WHITESPACE + BOOLEAN_MESSAGE);
|
||||
}
|
||||
|
||||
if(!params.has(PRESERVE_SYMBOLS)){
|
||||
throw new InvalidCipherParameterException(PRESERVE_SYMBOLS + PRESENT_MESSAGE);
|
||||
}
|
||||
if(!params.get(PRESERVE_SYMBOLS).isBoolean()){
|
||||
throw new InvalidCipherParameterException(PRESERVE_SYMBOLS + BOOLEAN_MESSAGE);
|
||||
}
|
||||
|
||||
if(!params.has(INPUT_STRING)){
|
||||
throw new InvalidCipherParameterException(INPUT_STRING + PRESENT_MESSAGE);
|
||||
}
|
||||
if(!params.get(INPUT_STRING).isTextual()){
|
||||
throw new InvalidCipherParameterException(INPUT_STRING + TEXT_MESSAGE);
|
||||
}
|
||||
|
||||
if(!params.has(KEYWORD)){
|
||||
throw new InvalidCipherParameterException(KEYWORD + PRESENT_MESSAGE);
|
||||
}
|
||||
if(!params.get(KEYWORD).isTextual()){
|
||||
throw new InvalidCipherParameterException(KEYWORD + TEXT_MESSAGE);
|
||||
}
|
||||
}
|
||||
|
||||
public static void verifyRailFenceParams(ObjectNode params){
|
||||
verifyUniversalParams(params);
|
||||
|
||||
if(!params.has(RAIL_FENCE_RAILS)){
|
||||
throw new InvalidCipherParameterException(RAIL_FENCE_RAILS + PRESENT_MESSAGE);
|
||||
}
|
||||
if(!params.get(RAIL_FENCE_RAILS).isInt()){
|
||||
throw new InvalidCipherParameterException(RAIL_FENCE_RAILS + INTEGER_MESSAGE);
|
||||
}
|
||||
}
|
||||
|
||||
public static void verifyTrifidParams(ObjectNode params){
|
||||
verifyParamsWithKeyword(params);
|
||||
|
||||
if(!params.has(TRIFID_FILL)){
|
||||
throw new InvalidCipherParameterException(TRIFID_FILL + PRESENT_MESSAGE);
|
||||
}
|
||||
if(!params.get(TRIFID_FILL).isTextual()){
|
||||
throw new InvalidCipherParameterException(TRIFID_FILL + TEXT_MESSAGE);
|
||||
}
|
||||
if(params.get(TRIFID_FILL).asText().length() > 1){
|
||||
throw new InvalidCipherParameterException(TRIFID_FILL + CHARACTER_MESSAGE);
|
||||
}
|
||||
|
||||
if(!params.has(TRIFID_GROUP_LENGTH)){
|
||||
throw new InvalidCipherParameterException(TRIFID_GROUP_LENGTH);
|
||||
}
|
||||
if(!params.get(TRIFID_GROUP_LENGTH).isInt()){
|
||||
throw new InvalidCipherParameterException(TRIFID_GROUP_LENGTH + INTEGER_MESSAGE);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user