0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 #ifndef _LINUX_KEYCTL_H
0014 #define _LINUX_KEYCTL_H
0015
0016 #include <linux/types.h>
0017
0018
0019 #define KEY_SPEC_THREAD_KEYRING -1
0020 #define KEY_SPEC_PROCESS_KEYRING -2
0021 #define KEY_SPEC_SESSION_KEYRING -3
0022 #define KEY_SPEC_USER_KEYRING -4
0023 #define KEY_SPEC_USER_SESSION_KEYRING -5
0024 #define KEY_SPEC_GROUP_KEYRING -6
0025 #define KEY_SPEC_REQKEY_AUTH_KEY -7
0026 #define KEY_SPEC_REQUESTOR_KEYRING -8
0027
0028
0029 #define KEY_REQKEY_DEFL_NO_CHANGE -1
0030 #define KEY_REQKEY_DEFL_DEFAULT 0
0031 #define KEY_REQKEY_DEFL_THREAD_KEYRING 1
0032 #define KEY_REQKEY_DEFL_PROCESS_KEYRING 2
0033 #define KEY_REQKEY_DEFL_SESSION_KEYRING 3
0034 #define KEY_REQKEY_DEFL_USER_KEYRING 4
0035 #define KEY_REQKEY_DEFL_USER_SESSION_KEYRING 5
0036 #define KEY_REQKEY_DEFL_GROUP_KEYRING 6
0037 #define KEY_REQKEY_DEFL_REQUESTOR_KEYRING 7
0038
0039
0040 #define KEYCTL_GET_KEYRING_ID 0
0041 #define KEYCTL_JOIN_SESSION_KEYRING 1
0042 #define KEYCTL_UPDATE 2
0043 #define KEYCTL_REVOKE 3
0044 #define KEYCTL_CHOWN 4
0045 #define KEYCTL_SETPERM 5
0046 #define KEYCTL_DESCRIBE 6
0047 #define KEYCTL_CLEAR 7
0048 #define KEYCTL_LINK 8
0049 #define KEYCTL_UNLINK 9
0050 #define KEYCTL_SEARCH 10
0051 #define KEYCTL_READ 11
0052 #define KEYCTL_INSTANTIATE 12
0053 #define KEYCTL_NEGATE 13
0054 #define KEYCTL_SET_REQKEY_KEYRING 14
0055 #define KEYCTL_SET_TIMEOUT 15
0056 #define KEYCTL_ASSUME_AUTHORITY 16
0057 #define KEYCTL_GET_SECURITY 17
0058 #define KEYCTL_SESSION_TO_PARENT 18
0059 #define KEYCTL_REJECT 19
0060 #define KEYCTL_INSTANTIATE_IOV 20
0061 #define KEYCTL_INVALIDATE 21
0062 #define KEYCTL_GET_PERSISTENT 22
0063 #define KEYCTL_DH_COMPUTE 23
0064 #define KEYCTL_PKEY_QUERY 24
0065 #define KEYCTL_PKEY_ENCRYPT 25
0066 #define KEYCTL_PKEY_DECRYPT 26
0067 #define KEYCTL_PKEY_SIGN 27
0068 #define KEYCTL_PKEY_VERIFY 28
0069 #define KEYCTL_RESTRICT_KEYRING 29
0070 #define KEYCTL_MOVE 30
0071 #define KEYCTL_CAPABILITIES 31
0072 #define KEYCTL_WATCH_KEY 32
0073
0074
0075 struct keyctl_dh_params {
0076 union {
0077 #ifndef __cplusplus
0078 __s32 private;
0079 #endif
0080 __s32 priv;
0081 };
0082 __s32 prime;
0083 __s32 base;
0084 };
0085
0086 struct keyctl_kdf_params {
0087 char __user *hashname;
0088 char __user *otherinfo;
0089 __u32 otherinfolen;
0090 __u32 __spare[8];
0091 };
0092
0093 #define KEYCTL_SUPPORTS_ENCRYPT 0x01
0094 #define KEYCTL_SUPPORTS_DECRYPT 0x02
0095 #define KEYCTL_SUPPORTS_SIGN 0x04
0096 #define KEYCTL_SUPPORTS_VERIFY 0x08
0097
0098 struct keyctl_pkey_query {
0099 __u32 supported_ops;
0100 __u32 key_size;
0101 __u16 max_data_size;
0102 __u16 max_sig_size;
0103 __u16 max_enc_size;
0104 __u16 max_dec_size;
0105 __u32 __spare[10];
0106 };
0107
0108 struct keyctl_pkey_params {
0109 __s32 key_id;
0110 __u32 in_len;
0111 union {
0112 __u32 out_len;
0113 __u32 in2_len;
0114 };
0115 __u32 __spare[7];
0116 };
0117
0118 #define KEYCTL_MOVE_EXCL 0x00000001
0119
0120
0121
0122
0123
0124 #define KEYCTL_CAPS0_CAPABILITIES 0x01
0125 #define KEYCTL_CAPS0_PERSISTENT_KEYRINGS 0x02
0126 #define KEYCTL_CAPS0_DIFFIE_HELLMAN 0x04
0127 #define KEYCTL_CAPS0_PUBLIC_KEY 0x08
0128 #define KEYCTL_CAPS0_BIG_KEY 0x10
0129 #define KEYCTL_CAPS0_INVALIDATE 0x20
0130 #define KEYCTL_CAPS0_RESTRICT_KEYRING 0x40
0131 #define KEYCTL_CAPS0_MOVE 0x80
0132 #define KEYCTL_CAPS1_NS_KEYRING_NAME 0x01
0133 #define KEYCTL_CAPS1_NS_KEY_TAG 0x02
0134 #define KEYCTL_CAPS1_NOTIFICATIONS 0x04
0135
0136 #endif