2007-04-27 02:48:28 +04:00
/* RxRPC key type
*
* Copyright ( C ) 2007 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 License
* as published by the Free Software Foundation ; either version
* 2 of the License , or ( at your option ) any later version .
*/
# ifndef _KEYS_RXRPC_TYPE_H
# define _KEYS_RXRPC_TYPE_H
# include <linux/key.h>
/*
* key type for AF_RXRPC keys
*/
extern struct key_type key_type_rxrpc ;
2007-10-17 10:29:46 +04:00
extern struct key * rxrpc_get_null_key ( const char * ) ;
2009-09-14 05:17:35 +04:00
/*
* RxRPC key for Kerberos IV ( type - 2 security )
*/
struct rxkad_key {
u32 vice_id ;
u32 start ; /* time at which ticket starts */
u32 expiry ; /* time at which ticket expires */
u32 kvno ; /* key version number */
u8 primary_flag ; /* T if key for primary cell for this user */
u16 ticket_len ; /* length of ticket[] */
u8 session_key [ 8 ] ; /* DES session key */
u8 ticket [ 0 ] ; /* the encrypted ticket */
} ;
2009-09-14 05:17:46 +04:00
/*
* Kerberos 5 principal
* name / name / name @ realm
*/
struct krb5_principal {
u8 n_name_parts ; /* N of parts of the name part of the principal */
char * * name_parts ; /* parts of the name part of the principal */
char * realm ; /* parts of the realm part of the principal */
} ;
/*
* Kerberos 5 tagged data
*/
struct krb5_tagged_data {
/* for tag value, see /usr/include/krb5/krb5.h
* - KRB5_AUTHDATA_ * for auth data
* -
*/
2009-09-16 11:01:13 +04:00
s32 tag ;
u32 data_len ;
2009-09-14 05:17:46 +04:00
u8 * data ;
} ;
/*
* RxRPC key for Kerberos V ( type - 5 security )
*/
struct rxk5_key {
2009-09-16 11:01:13 +04:00
u64 authtime ; /* time at which auth token generated */
u64 starttime ; /* time at which auth token starts */
u64 endtime ; /* time at which auth token expired */
u64 renew_till ; /* time to which auth token can be renewed */
s32 is_skey ; /* T if ticket is encrypted in another ticket's
2009-09-14 05:17:46 +04:00
* skey */
2009-09-16 11:01:13 +04:00
s32 flags ; /* mask of TKT_FLG_* bits (krb5/krb5.h) */
2009-09-14 05:17:46 +04:00
struct krb5_principal client ; /* client principal name */
struct krb5_principal server ; /* server principal name */
2009-09-16 11:01:13 +04:00
u16 ticket_len ; /* length of ticket */
u16 ticket2_len ; /* length of second ticket */
2009-09-14 05:17:46 +04:00
u8 n_authdata ; /* number of authorisation data elements */
u8 n_addresses ; /* number of addresses */
struct krb5_tagged_data session ; /* session data; tag is enctype */
struct krb5_tagged_data * addresses ; /* addresses */
u8 * ticket ; /* krb5 ticket */
u8 * ticket2 ; /* second krb5 ticket, if related to ticket (via
* DUPLICATE - SKEY or ENC - TKT - IN - SKEY ) */
struct krb5_tagged_data * authdata ; /* authorisation data */
} ;
2009-09-14 05:17:35 +04:00
/*
* list of tokens attached to an rxrpc key
*/
struct rxrpc_key_token {
u16 security_index ; /* RxRPC header security index */
struct rxrpc_key_token * next ; /* the next token in the list */
union {
struct rxkad_key * kad ;
2009-09-14 05:17:46 +04:00
struct rxk5_key * k5 ;
2009-09-14 05:17:35 +04:00
} ;
} ;
/*
* structure of raw payloads passed to add_key ( ) or instantiate key
*/
struct rxrpc_key_data_v1 {
u16 security_index ;
u16 ticket_length ;
u32 expiry ; /* time_t */
u32 kvno ;
u8 session_key [ 8 ] ;
u8 ticket [ 0 ] ;
} ;
/*
* AF_RXRPC key payload derived from XDR format
* - based on openafs - 1.4 .10 / src / auth / afs_token . xg
*/
# define AFSTOKEN_LENGTH_MAX 16384 /* max payload size */
2009-09-14 05:17:46 +04:00
# define AFSTOKEN_STRING_MAX 256 /* max small string length */
# define AFSTOKEN_DATA_MAX 64 /* max small data length */
2009-09-14 05:17:35 +04:00
# define AFSTOKEN_CELL_MAX 64 /* max cellname length */
# define AFSTOKEN_MAX 8 /* max tokens per payload */
2009-09-14 05:17:46 +04:00
# define AFSTOKEN_BDATALN_MAX 16384 /* max big data length */
2009-09-14 05:17:35 +04:00
# define AFSTOKEN_RK_TIX_MAX 12000 /* max RxKAD ticket size */
# define AFSTOKEN_GK_KEY_MAX 64 /* max GSSAPI key size */
# define AFSTOKEN_GK_TOKEN_MAX 16384 /* max GSSAPI token size */
# define AFSTOKEN_K5_COMPONENTS_MAX 16 /* max K5 components */
# define AFSTOKEN_K5_NAME_MAX 128 /* max K5 name length */
# define AFSTOKEN_K5_REALM_MAX 64 /* max K5 realm name length */
# define AFSTOKEN_K5_TIX_MAX 16384 /* max K5 ticket size */
# define AFSTOKEN_K5_ADDRESSES_MAX 16 /* max K5 addresses */
# define AFSTOKEN_K5_AUTHDATA_MAX 16 /* max K5 pieces of auth data */
2008-04-22 02:43:55 +04:00
# endif /* _KEYS_RXRPC_TYPE_H */