fit_check_sign.c 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. /*
  2. * (C) Copyright 2014
  3. * DENX Software Engineering
  4. * Heiko Schocher <hs@denx.de>
  5. *
  6. * Based on:
  7. * (C) Copyright 2008 Semihalf
  8. *
  9. * (C) Copyright 2000-2004
  10. * DENX Software Engineering
  11. * Wolfgang Denk, wd@denx.de
  12. *
  13. * Updated-by: Prafulla Wadaskar <prafulla@marvell.com>
  14. * FIT image specific code abstracted from mkimage.c
  15. * some functions added to address abstraction
  16. *
  17. * All rights reserved.
  18. *
  19. * SPDX-License-Identifier: GPL-2.0+
  20. */
  21. #include "mkimage.h"
  22. #include "fit_common.h"
  23. #include <image.h>
  24. #include <u-boot/crc.h>
  25. void usage(char *cmdname)
  26. {
  27. fprintf(stderr, "Usage: %s -f fit file -k key file\n"
  28. " -f ==> set fit file which should be checked'\n"
  29. " -k ==> set key file which contains the key'\n",
  30. cmdname);
  31. exit(EXIT_FAILURE);
  32. }
  33. int main(int argc, char **argv)
  34. {
  35. int ffd = -1;
  36. int kfd = -1;
  37. struct stat fsbuf;
  38. struct stat ksbuf;
  39. void *fit_blob;
  40. char *fdtfile = NULL;
  41. char *keyfile = NULL;
  42. char cmdname[50];
  43. int ret;
  44. void *key_blob;
  45. int c;
  46. strcpy(cmdname, *argv);
  47. while ((c = getopt(argc, argv, "f:k:")) != -1)
  48. switch (c) {
  49. case 'f':
  50. fdtfile = optarg;
  51. break;
  52. case 'k':
  53. keyfile = optarg;
  54. break;
  55. default:
  56. usage(cmdname);
  57. break;
  58. }
  59. ffd = mmap_fdt(cmdname, fdtfile, &fit_blob, &fsbuf, 0);
  60. if (ffd < 0)
  61. return EXIT_FAILURE;
  62. kfd = mmap_fdt(cmdname, keyfile, &key_blob, &ksbuf, 0);
  63. if (ffd < 0)
  64. return EXIT_FAILURE;
  65. image_set_host_blob(key_blob);
  66. ret = fit_check_sign(fit_blob, key_blob);
  67. if (ret)
  68. ret = EXIT_SUCCESS;
  69. else
  70. ret = EXIT_FAILURE;
  71. (void) munmap((void *)fit_blob, fsbuf.st_size);
  72. (void) munmap((void *)key_blob, ksbuf.st_size);
  73. close(ffd);
  74. close(kfd);
  75. exit(ret);
  76. }