pub trait ORECipher: Sized {
type LeftBlockType: CipherTextBlock;
type RightBlockType: CipherTextBlock;
fn init(k1: &[u8; 16], k2: &[u8; 16]) -> Result<Self, OREError>;
fn encrypt_left<const N: usize>(
&self,
input: &PlainText<N>
) -> Result<Left<Self, N>, OREError>;
fn encrypt<const N: usize>(
&self,
input: &PlainText<N>
) -> Result<CipherText<Self, N>, OREError>;
fn compare_raw_slices(a: &[u8], b: &[u8]) -> Option<Ordering>;
}