XTS_Mode::XTS_Mode(BlockCipher* cipher) : m_cipher(cipher) { if(poly_double_supported_size(m_cipher->block_size()) == false) { throw Invalid_Argument("Cannot use " + cipher->name() + " with XTS"); } m_tweak_cipher.reset(m_cipher->clone()); }
/* * CMAC Constructor */ CMAC::CMAC(BlockCipher* cipher) : m_cipher(cipher), m_block_size(m_cipher->block_size()) { if(poly_double_supported_size(m_block_size) == false) { throw Invalid_Argument("CMAC cannot use the " + std::to_string(m_block_size * 8) + " bit cipher " + m_cipher->name()); } m_state.resize(output_length()); m_buffer.resize(output_length()); m_B.resize(output_length()); m_P.resize(output_length()); m_position = 0; }