Initial commit

This commit is contained in:
2024-04-07 19:41:57 -04:00
parent 2b3212cb44
commit 8f0d1c64bd
95 changed files with 6787 additions and 45 deletions

View File

@@ -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);
}
}
}