RxRPC: Allow key payloads to be passed in XDR form
[safe/jmp/linux-2.6] / include / keys / rxrpc-type.h
1 /* RxRPC key type
2  *
3  * Copyright (C) 2007 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 _KEYS_RXRPC_TYPE_H
13 #define _KEYS_RXRPC_TYPE_H
14
15 #include <linux/key.h>
16
17 /*
18  * key type for AF_RXRPC keys
19  */
20 extern struct key_type key_type_rxrpc;
21
22 extern struct key *rxrpc_get_null_key(const char *);
23
24 /*
25  * RxRPC key for Kerberos IV (type-2 security)
26  */
27 struct rxkad_key {
28         u32     vice_id;
29         u32     start;                  /* time at which ticket starts */
30         u32     expiry;                 /* time at which ticket expires */
31         u32     kvno;                   /* key version number */
32         u8      primary_flag;           /* T if key for primary cell for this user */
33         u16     ticket_len;             /* length of ticket[] */
34         u8      session_key[8];         /* DES session key */
35         u8      ticket[0];              /* the encrypted ticket */
36 };
37
38 /*
39  * list of tokens attached to an rxrpc key
40  */
41 struct rxrpc_key_token {
42         u16     security_index;         /* RxRPC header security index */
43         struct rxrpc_key_token *next;   /* the next token in the list */
44         union {
45                 struct rxkad_key *kad;
46         };
47 };
48
49 /*
50  * structure of raw payloads passed to add_key() or instantiate key
51  */
52 struct rxrpc_key_data_v1 {
53         u32             kif_version;            /* 1 */
54         u16             security_index;
55         u16             ticket_length;
56         u32             expiry;                 /* time_t */
57         u32             kvno;
58         u8              session_key[8];
59         u8              ticket[0];
60 };
61
62 /*
63  * AF_RXRPC key payload derived from XDR format
64  * - based on openafs-1.4.10/src/auth/afs_token.xg
65  */
66 #define AFSTOKEN_LENGTH_MAX             16384   /* max payload size */
67 #define AFSTOKEN_CELL_MAX               64      /* max cellname length */
68 #define AFSTOKEN_MAX                    8       /* max tokens per payload */
69 #define AFSTOKEN_RK_TIX_MAX             12000   /* max RxKAD ticket size */
70 #define AFSTOKEN_GK_KEY_MAX             64      /* max GSSAPI key size */
71 #define AFSTOKEN_GK_TOKEN_MAX           16384   /* max GSSAPI token size */
72 #define AFSTOKEN_K5_COMPONENTS_MAX      16      /* max K5 components */
73 #define AFSTOKEN_K5_NAME_MAX            128     /* max K5 name length */
74 #define AFSTOKEN_K5_REALM_MAX           64      /* max K5 realm name length */
75 #define AFSTOKEN_K5_TIX_MAX             16384   /* max K5 ticket size */
76 #define AFSTOKEN_K5_ADDRESSES_MAX       16      /* max K5 addresses */
77 #define AFSTOKEN_K5_AUTHDATA_MAX        16      /* max K5 pieces of auth data */
78
79 #endif /* _KEYS_RXRPC_TYPE_H */