idea 0.0.1

IDEA block cipher
Documentation
#![no_std]
extern crate block_cipher_trait;
extern crate idea;

use block_cipher_trait::generic_array::GenericArray;
use idea::{BlockCipher, Idea};

mod data;

macro_rules! idea_test {
    ($func:ident, $test_vector:expr) => {
        #[test]
        fn $func() {
            let user_key = GenericArray::from_slice(&$test_vector.key);
            let cipher = Idea::new(&user_key);

            let mut block = GenericArray::clone_from_slice(&$test_vector.plain_text);
            cipher.encrypt_block(&mut block);
            assert_eq!(&block[..], &$test_vector.cipher_text[..]);

            cipher.decrypt_block(&mut block);
            assert_eq!(&block[..], &$test_vector.plain_text[..]);
        }
    }
}

idea_test!(idea_test_1, &data::TEST_VECTOR_1);
idea_test!(idea_test_2, &data::TEST_VECTOR_2);
idea_test!(idea_test_3, &data::TEST_VECTOR_3);
idea_test!(idea_test_4, &data::TEST_VECTOR_4);
idea_test!(idea_test_5, &data::TEST_VECTOR_5);
idea_test!(idea_test_6, &data::TEST_VECTOR_6);
idea_test!(idea_test_7, &data::TEST_VECTOR_7);
idea_test!(idea_test_8, &data::TEST_VECTOR_8);