aes_sample.c 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /*
  2. * Copyright (c) 2006-2019, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2019-03-22 MurphyZhao the first version
  9. */
  10. #include <rtthread.h>
  11. #include <tiny_aes.h>
  12. #define TEST_TINY_AES_IV "0123456789ABCDEF"
  13. #define TEST_TINY_AES_KEY "0123456789ABCDEF0123456789ABCDEF"
  14. static rt_err_t test_tiny_aes(void)
  15. {
  16. tiny_aes_context ctx;
  17. uint8_t iv[16 + 1];
  18. uint8_t private_key[32 + 1];
  19. unsigned char data[] = "1234567890123456";
  20. unsigned char data_encrypt[32];
  21. unsigned char data_decrypt[32];
  22. /* encrypt */
  23. rt_memcpy(iv, TEST_TINY_AES_IV, rt_strlen(TEST_TINY_AES_IV));
  24. iv[sizeof(iv) - 1] = '\0';
  25. rt_memcpy(private_key, TEST_TINY_AES_KEY, rt_strlen(TEST_TINY_AES_KEY));
  26. private_key[sizeof(private_key) - 1] = '\0';
  27. rt_memset(data_encrypt, 0x0, sizeof(data_encrypt));
  28. tiny_aes_setkey_enc(&ctx, (uint8_t *) private_key, 256);
  29. tiny_aes_crypt_cbc(&ctx, AES_ENCRYPT, rt_strlen(data), iv, data, data_encrypt);
  30. /* decrypt */
  31. rt_memcpy(iv, TEST_TINY_AES_IV, rt_strlen(TEST_TINY_AES_IV));
  32. iv[sizeof(iv) - 1] = '\0';
  33. rt_memcpy(private_key, TEST_TINY_AES_KEY, rt_strlen(TEST_TINY_AES_KEY));
  34. private_key[sizeof(private_key) - 1] = '\0';
  35. rt_memset(data_decrypt, 0x0, sizeof(data_decrypt));
  36. tiny_aes_setkey_dec(&ctx, (uint8_t *) private_key, 256);
  37. tiny_aes_crypt_cbc(&ctx, AES_DECRYPT, rt_strlen(data), iv, data_encrypt, data_decrypt);
  38. if(rt_memcmp(data, data_decrypt, rt_strlen(data)) == 0)
  39. {
  40. rt_kprintf("AES CBC mode passed!\n");
  41. return RT_EOK;
  42. }
  43. else
  44. {
  45. rt_kprintf("AES CBC mode failed!");
  46. return -RT_ERROR;
  47. }
  48. }
  49. #ifdef FINSH_USING_MSH
  50. MSH_CMD_EXPORT_ALIAS(test_tiny_aes, tiny_aes_sample, type tiny_aes_sample cmd to run);
  51. #endif /* FINSH_USING_MSH */