verification.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /* SPDX-License-Identifier: GPL-2.0-or-later */
  2. /* Signature verification
  3. *
  4. * Copyright (C) 2014 Red Hat, Inc. All Rights Reserved.
  5. * Written by David Howells (dhowells@redhat.com)
  6. */
  7. #ifndef _LINUX_VERIFICATION_H
  8. #define _LINUX_VERIFICATION_H
  9. /*
  10. * Indicate that both builtin trusted keys and secondary trusted keys
  11. * should be used.
  12. */
  13. #define VERIFY_USE_SECONDARY_KEYRING ((struct key *)1UL)
  14. #define VERIFY_USE_PLATFORM_KEYRING ((struct key *)2UL)
  15. /*
  16. * The use to which an asymmetric key is being put.
  17. */
  18. enum key_being_used_for {
  19. VERIFYING_MODULE_SIGNATURE,
  20. VERIFYING_FIRMWARE_SIGNATURE,
  21. VERIFYING_KEXEC_PE_SIGNATURE,
  22. VERIFYING_KEY_SIGNATURE,
  23. VERIFYING_KEY_SELF_SIGNATURE,
  24. VERIFYING_UNSPECIFIED_SIGNATURE,
  25. NR__KEY_BEING_USED_FOR
  26. };
  27. extern const char *const key_being_used_for[NR__KEY_BEING_USED_FOR];
  28. #ifdef CONFIG_SYSTEM_DATA_VERIFICATION
  29. struct key;
  30. struct pkcs7_message;
  31. extern int verify_pkcs7_signature(const void *data, size_t len,
  32. const void *raw_pkcs7, size_t pkcs7_len,
  33. struct key *trusted_keys,
  34. enum key_being_used_for usage,
  35. int (*view_content)(void *ctx,
  36. const void *data, size_t len,
  37. size_t asn1hdrlen),
  38. void *ctx);
  39. extern int verify_pkcs7_message_sig(const void *data, size_t len,
  40. struct pkcs7_message *pkcs7,
  41. struct key *trusted_keys,
  42. enum key_being_used_for usage,
  43. int (*view_content)(void *ctx,
  44. const void *data,
  45. size_t len,
  46. size_t asn1hdrlen),
  47. void *ctx);
  48. #ifdef CONFIG_SIGNED_PE_FILE_VERIFICATION
  49. extern int verify_pefile_signature(const void *pebuf, unsigned pelen,
  50. struct key *trusted_keys,
  51. enum key_being_used_for usage);
  52. #endif
  53. #endif /* CONFIG_SYSTEM_DATA_VERIFICATION */
  54. #endif /* _LINUX_VERIFY_PEFILE_H */