asymmetric-subtype.h 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /* Asymmetric public-key cryptography key subtype
  2. *
  3. * See Documentation/security/asymmetric-keys.txt
  4. *
  5. * Copyright (C) 2012 Red Hat, Inc. All Rights Reserved.
  6. * Written by David Howells (dhowells@redhat.com)
  7. *
  8. * This program is free software; you can redistribute it and/or
  9. * modify it under the terms of the GNU General Public Licence
  10. * as published by the Free Software Foundation; either version
  11. * 2 of the Licence, or (at your option) any later version.
  12. */
  13. #ifndef _KEYS_ASYMMETRIC_SUBTYPE_H
  14. #define _KEYS_ASYMMETRIC_SUBTYPE_H
  15. #include <linux/seq_file.h>
  16. #include <keys/asymmetric-type.h>
  17. struct public_key_signature;
  18. /*
  19. * Keys of this type declare a subtype that indicates the handlers and
  20. * capabilities.
  21. */
  22. struct asymmetric_key_subtype {
  23. struct module *owner;
  24. const char *name;
  25. unsigned short name_len; /* length of name */
  26. /* Describe a key of this subtype for /proc/keys */
  27. void (*describe)(const struct key *key, struct seq_file *m);
  28. /* Destroy a key of this subtype */
  29. void (*destroy)(void *payload);
  30. /* Verify the signature on a key of this subtype (optional) */
  31. int (*verify_signature)(const struct key *key,
  32. const struct public_key_signature *sig);
  33. };
  34. /**
  35. * asymmetric_key_subtype - Get the subtype from an asymmetric key
  36. * @key: The key of interest.
  37. *
  38. * Retrieves and returns the subtype pointer of the asymmetric key from the
  39. * type-specific data attached to the key.
  40. */
  41. static inline
  42. struct asymmetric_key_subtype *asymmetric_key_subtype(const struct key *key)
  43. {
  44. return key->payload.data[asym_subtype];
  45. }
  46. #endif /* _KEYS_ASYMMETRIC_SUBTYPE_H */