package org.apereo.cas;
/**
* Responsible to define operation that deal with encryption, signing
* and verification of a value.
*
* @author Misagh Moayyed
* @param <T> the type parameter
* @param <R> the type parameter
* @since 4.1
*/
public interface CipherExecutor<T, R> {
/**
* Encrypt the value. Implementations may
* choose to also sign the final value.
*
* @param value the value
* @return the encrypted value or null
*/
R encode(T value);
/**
* Decode the value. Signatures may also be verified.
*
* @param value encrypted value
* @return the decoded value.
*/
R decode(T value);
/**
* Supports encryption of values.
*
* @return true/false
*/
boolean isEnabled();
/**
* The (component) name of this cipher.
*
* @return the name.
*/
String getName();
}