home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / linux / key-ui.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  2.1 KB  |  67 lines

  1. /* key-ui.h: key userspace interface stuff
  2.  *
  3.  * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
  4.  * Written by David Howells (dhowells@redhat.com)
  5.  *
  6.  * This program is free software; you can redistribute it and/or
  7.  * modify it under the terms of the GNU General Public License
  8.  * as published by the Free Software Foundation; either version
  9.  * 2 of the License, or (at your option) any later version.
  10.  */
  11.  
  12. #ifndef _LINUX_KEY_UI_H
  13. #define _LINUX_KEY_UI_H
  14.  
  15. #include <linux/key.h>
  16.  
  17. /* the key tree */
  18. extern struct rb_root key_serial_tree;
  19. extern spinlock_t key_serial_lock;
  20.  
  21. /* required permissions */
  22. #define    KEY_VIEW    0x01    /* require permission to view attributes */
  23. #define    KEY_READ    0x02    /* require permission to read content */
  24. #define    KEY_WRITE    0x04    /* require permission to update / modify */
  25. #define    KEY_SEARCH    0x08    /* require permission to search (keyring) or find (key) */
  26. #define    KEY_LINK    0x10    /* require permission to link */
  27. #define    KEY_SETATTR    0x20    /* require permission to change attributes */
  28. #define    KEY_ALL        0x3f    /* all the above permissions */
  29.  
  30. /*
  31.  * the keyring payload contains a list of the keys to which the keyring is
  32.  * subscribed
  33.  */
  34. struct keyring_list {
  35.     struct rcu_head    rcu;        /* RCU deletion hook */
  36.     unsigned short    maxkeys;    /* max keys this list can hold */
  37.     unsigned short    nkeys;        /* number of keys currently held */
  38.     unsigned short    delkey;        /* key to be unlinked by RCU */
  39.     struct key    *keys[0];
  40. };
  41.  
  42. /*
  43.  * check to see whether permission is granted to use a key in the desired way
  44.  */
  45. extern int key_task_permission(const key_ref_t key_ref,
  46.                    struct task_struct *context,
  47.                    key_perm_t perm);
  48.  
  49. static inline int key_permission(const key_ref_t key_ref, key_perm_t perm)
  50. {
  51.     return key_task_permission(key_ref, current, perm);
  52. }
  53.  
  54. extern key_ref_t lookup_user_key(struct task_struct *context,
  55.                  key_serial_t id, int create, int partial,
  56.                  key_perm_t perm);
  57.  
  58. extern long join_session_keyring(const char *name);
  59.  
  60. extern struct key_type *key_type_lookup(const char *type);
  61. extern void key_type_put(struct key_type *ktype);
  62.  
  63. #define key_negative_timeout    60    /* default timeout on a negative key's existence */
  64.  
  65.  
  66. #endif /* _LINUX_KEY_UI_H */
  67.