Blame view

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