fsl_blob.c 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /*
  2. * Copyright 2014 Freescale Semiconductor, Inc.
  3. *
  4. * SPDX-License-Identifier: GPL-2.0+
  5. *
  6. */
  7. #include <common.h>
  8. #include <malloc.h>
  9. #include "jobdesc.h"
  10. #include "desc.h"
  11. #include "jr.h"
  12. int blob_decrypt(u8 *key_mod, u8 *src, u8 *dst, u8 len)
  13. {
  14. int ret, i = 0;
  15. u32 *desc;
  16. printf("\nDecapsulating data to form blob\n");
  17. desc = malloc(sizeof(int) * MAX_CAAM_DESCSIZE);
  18. if (!desc) {
  19. debug("Not enough memory for descriptor allocation\n");
  20. return -1;
  21. }
  22. inline_cnstr_jobdesc_blob_decap(desc, key_mod, src, dst, len);
  23. for (i = 0; i < 14; i++)
  24. printf("%x\n", *(desc + i));
  25. ret = run_descriptor_jr(desc);
  26. if (ret)
  27. printf("Error in Decapsulation %d\n", ret);
  28. free(desc);
  29. return ret;
  30. }
  31. int blob_encrypt(u8 *key_mod, u8 *src, u8 *dst, u8 len)
  32. {
  33. int ret, i = 0;
  34. u32 *desc;
  35. printf("\nEncapsulating data to form blob\n");
  36. desc = malloc(sizeof(int) * MAX_CAAM_DESCSIZE);
  37. if (!desc) {
  38. debug("Not enough memory for descriptor allocation\n");
  39. return -1;
  40. }
  41. inline_cnstr_jobdesc_blob_encap(desc, key_mod, src, dst, len);
  42. for (i = 0; i < 14; i++)
  43. printf("%x\n", *(desc + i));
  44. ret = run_descriptor_jr(desc);
  45. if (ret)
  46. printf("Error in Encapsulation %d\n", ret);
  47. free(desc);
  48. return ret;
  49. }