3.8.1.2.2 Workflow

  1. Configure ECB mode encryption and run test.
    
        state = false;
    
        /* Configure the AES. */
        g_aes_cfg.encrypt_mode = AES_ENCRYPTION;
        g_aes_cfg.key_size = AES_KEY_SIZE_128;
        g_aes_cfg.start_mode = AES_AUTO_START;
        g_aes_cfg.opmode = AES_ECB_MODE;
        g_aes_cfg.cfb_size = AES_CFB_SIZE_128;
        g_aes_cfg.lod = false;
        aes_set_config(&aes_instance,AES, &g_aes_cfg);
    
        /* Set the cryptographic key. */
        aes_write_key(&aes_instance, key128);
    
        /* The initialization vector is not used by the ECB cipher mode. */
    
        aes_set_new_message(&aes_instance);
        /* Write the data to be ciphered to the input data registers. */
        aes_write_input_data(&aes_instance, ref_plain_text);
        aes_clear_new_message(&aes_instance);
        /* Wait for the end of the encryption process. */
        while (!(aes_get_status(&aes_instance) & AES_ENCRYPTION_COMPLETE)) {
        }
        aes_read_output_data(&aes_instance,output_data);
    
        if ((ref_cipher_text_ecb[0] != output_data[0]) ||
                (ref_cipher_text_ecb[1] != output_data[1]) ||
                (ref_cipher_text_ecb[2] != output_data[2]) ||
                (ref_cipher_text_ecb[3] != output_data[3])) {
            printf("\r\nKO!!!\r\n");
        } else {
            printf("\r\nOK!!!\r\n");
        }
    
  2. Configure ECB mode decryption and run test.
    
        state = false;
    
        /* Configure the AES. */
        g_aes_cfg.encrypt_mode = AES_DECRYPTION;
        g_aes_cfg.key_size = AES_KEY_SIZE_128;
        g_aes_cfg.start_mode = AES_AUTO_START;
        g_aes_cfg.opmode = AES_ECB_MODE;
        g_aes_cfg.cfb_size = AES_CFB_SIZE_128;
        g_aes_cfg.lod = false;
        aes_set_config(&aes_instance,AES, &g_aes_cfg);
    
        /* Set the cryptographic key. */
        aes_write_key(&aes_instance, key128);
    
        /* The initialization vector is not used by the ECB cipher mode. */
    
        /* Write the data to be deciphered to the input data registers. */
        aes_write_input_data(&aes_instance, ref_cipher_text_ecb);
    
        /* Wait for the end of the decryption process. */
        while (!(aes_get_status(&aes_instance) & AES_ENCRYPTION_COMPLETE)) {
        }
        aes_read_output_data(&aes_instance,output_data);
    
        /* check the result. */
        if ((ref_plain_text[0] != output_data[0]) ||
                (ref_plain_text[1] != output_data[1]) ||
                (ref_plain_text[2] != output_data[2]) ||
                (ref_plain_text[3] != output_data[3])) {
            printf("\r\nKO!!!\r\n");
        } else {
            printf("\r\nOK!!!\r\n");
        }