Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Enumerations | Functions | Variables
gss_krb5.h File Reference
#include <linux/crypto.h>
#include <linux/sunrpc/auth_gss.h>
#include <linux/sunrpc/gss_err.h>
#include <linux/sunrpc/gss_asn1.h>

Go to the source code of this file.

Data Structures

struct  gss_krb5_enctype
 
struct  krb5_ctx
 

Macros

#define GSS_KRB5_K5CLENGTH   (5)
 
#define GSS_KRB5_MAX_KEYLEN   (32)
 
#define GSS_KRB5_MAX_CKSUM_LEN   (20)
 
#define GSS_KRB5_MAX_BLOCKSIZE   (16)
 
#define KRB5_CTX_FLAG_INITIATOR   0x00000001
 
#define KRB5_CTX_FLAG_CFX   0x00000002
 
#define KRB5_CTX_FLAG_ACCEPTOR_SUBKEY   0x00000004
 
#define GSS_KRB5_TOK_HDR_LEN   (16)
 
#define KG_TOK_MIC_MSG   0x0101
 
#define KG_TOK_WRAP_MSG   0x0201
 
#define KG2_TOK_INITIAL   0x0101
 
#define KG2_TOK_RESPONSE   0x0202
 
#define KG2_TOK_MIC   0x0404
 
#define KG2_TOK_WRAP   0x0504
 
#define KG2_TOKEN_FLAG_SENTBYACCEPTOR   0x01
 
#define KG2_TOKEN_FLAG_SEALED   0x02
 
#define KG2_TOKEN_FLAG_ACCEPTORSUBKEY   0x04
 
#define KG2_RESP_FLAG_ERROR   0x0001
 
#define KG2_RESP_FLAG_DELEG_OK   0x0002
 
#define CKSUMTYPE_CRC32   0x0001
 
#define CKSUMTYPE_RSA_MD4   0x0002
 
#define CKSUMTYPE_RSA_MD4_DES   0x0003
 
#define CKSUMTYPE_DESCBC   0x0004
 
#define CKSUMTYPE_RSA_MD5   0x0007
 
#define CKSUMTYPE_RSA_MD5_DES   0x0008
 
#define CKSUMTYPE_NIST_SHA   0x0009
 
#define CKSUMTYPE_HMAC_SHA1_DES3   0x000c
 
#define CKSUMTYPE_HMAC_SHA1_96_AES128   0x000f
 
#define CKSUMTYPE_HMAC_SHA1_96_AES256   0x0010
 
#define CKSUMTYPE_HMAC_MD5_ARCFOUR   -138 /* Microsoft md5 hmac cksumtype */
 
#define KG_CCACHE_NOMATCH   (39756032L)
 
#define KG_KEYTAB_NOMATCH   (39756033L)
 
#define KG_TGT_MISSING   (39756034L)
 
#define KG_NO_SUBKEY   (39756035L)
 
#define KG_CONTEXT_ESTABLISHED   (39756036L)
 
#define KG_BAD_SIGN_TYPE   (39756037L)
 
#define KG_BAD_LENGTH   (39756038L)
 
#define KG_CTX_INCOMPLETE   (39756039L)
 
#define KG_CONTEXT   (39756040L)
 
#define KG_CRED   (39756041L)
 
#define KG_ENC_DESC   (39756042L)
 
#define KG_BAD_SEQ   (39756043L)
 
#define KG_EMPTY_CCACHE   (39756044L)
 
#define KG_NO_CTYPES   (39756045L)
 
#define ENCTYPE_NULL   0x0000
 
#define ENCTYPE_DES_CBC_CRC   0x0001 /* DES cbc mode with CRC-32 */
 
#define ENCTYPE_DES_CBC_MD4   0x0002 /* DES cbc mode with RSA-MD4 */
 
#define ENCTYPE_DES_CBC_MD5   0x0003 /* DES cbc mode with RSA-MD5 */
 
#define ENCTYPE_DES_CBC_RAW   0x0004 /* DES cbc mode raw */
 
#define ENCTYPE_DES3_CBC_SHA   0x0005 /* DES-3 cbc mode with NIST-SHA */
 
#define ENCTYPE_DES3_CBC_RAW   0x0006 /* DES-3 cbc mode raw */
 
#define ENCTYPE_DES_HMAC_SHA1   0x0008
 
#define ENCTYPE_DES3_CBC_SHA1   0x0010
 
#define ENCTYPE_AES128_CTS_HMAC_SHA1_96   0x0011
 
#define ENCTYPE_AES256_CTS_HMAC_SHA1_96   0x0012
 
#define ENCTYPE_ARCFOUR_HMAC   0x0017
 
#define ENCTYPE_ARCFOUR_HMAC_EXP   0x0018
 
#define ENCTYPE_UNKNOWN   0x01ff
 
#define KG_USAGE_SEAL   (22)
 
#define KG_USAGE_SIGN   (23)
 
#define KG_USAGE_SEQ   (24)
 
#define KEY_USAGE_SEED_CHECKSUM   (0x99)
 
#define KEY_USAGE_SEED_ENCRYPTION   (0xAA)
 
#define KEY_USAGE_SEED_INTEGRITY   (0x55)
 
#define KG_USAGE_ACCEPTOR_SEAL   (22)
 
#define KG_USAGE_ACCEPTOR_SIGN   (23)
 
#define KG_USAGE_INITIATOR_SEAL   (24)
 
#define KG_USAGE_INITIATOR_SIGN   (25)
 
#define GSS_KRB5_MAX_SLACK_NEEDED
 

Enumerations

enum  sgn_alg {
  SGN_ALG_DES_MAC_MD5 = 0x0000, SGN_ALG_MD2_5 = 0x0001, SGN_ALG_DES_MAC = 0x0002, SGN_ALG_3 = 0x0003,
  SGN_ALG_HMAC_MD5 = 0x0011, SGN_ALG_HMAC_SHA1_DES3_KD = 0x0004
}
 
enum  seal_alg {
  SEAL_ALG_NONE = 0xffff, SEAL_ALG_DES = 0x0000, SEAL_ALG_1 = 0x0001, SEAL_ALG_MICROSOFT_RC4 = 0x0010,
  SEAL_ALG_DES3KD = 0x0002
}
 

Functions

u32 make_checksum (struct krb5_ctx *kctx, char *header, int hdrlen, struct xdr_buf *body, int body_offset, u8 *cksumkey, unsigned int usage, struct xdr_netobj *cksumout)
 
u32 make_checksum_v2 (struct krb5_ctx *, char *header, int hdrlen, struct xdr_buf *body, int body_offset, u8 *key, unsigned int usage, struct xdr_netobj *cksum)
 
u32 gss_get_mic_kerberos (struct gss_ctx *, struct xdr_buf *, struct xdr_netobj *)
 
u32 gss_verify_mic_kerberos (struct gss_ctx *, struct xdr_buf *, struct xdr_netobj *)
 
u32 gss_wrap_kerberos (struct gss_ctx *ctx_id, int offset, struct xdr_buf *outbuf, struct page **pages)
 
u32 gss_unwrap_kerberos (struct gss_ctx *ctx_id, int offset, struct xdr_buf *buf)
 
u32 krb5_encrypt (struct crypto_blkcipher *key, void *iv, void *in, void *out, int length)
 
u32 krb5_decrypt (struct crypto_blkcipher *key, void *iv, void *in, void *out, int length)
 
int gss_encrypt_xdr_buf (struct crypto_blkcipher *tfm, struct xdr_buf *outbuf, int offset, struct page **pages)
 
int gss_decrypt_xdr_buf (struct crypto_blkcipher *tfm, struct xdr_buf *inbuf, int offset)
 
s32 krb5_make_seq_num (struct krb5_ctx *kctx, struct crypto_blkcipher *key, int direction, u32 seqnum, unsigned char *cksum, unsigned char *buf)
 
s32 krb5_get_seq_num (struct krb5_ctx *kctx, unsigned char *cksum, unsigned char *buf, int *direction, u32 *seqnum)
 
int xdr_extend_head (struct xdr_buf *buf, unsigned int base, unsigned int shiftlen)
 
u32 krb5_derive_key (const struct gss_krb5_enctype *gk5e, const struct xdr_netobj *inkey, struct xdr_netobj *outkey, const struct xdr_netobj *in_constant, gfp_t gfp_mask)
 
u32 gss_krb5_des3_make_key (const struct gss_krb5_enctype *gk5e, struct xdr_netobj *randombits, struct xdr_netobj *key)
 
u32 gss_krb5_aes_make_key (const struct gss_krb5_enctype *gk5e, struct xdr_netobj *randombits, struct xdr_netobj *key)
 
u32 gss_krb5_aes_encrypt (struct krb5_ctx *kctx, u32 offset, struct xdr_buf *buf, int ec, struct page **pages)
 
u32 gss_krb5_aes_decrypt (struct krb5_ctx *kctx, u32 offset, struct xdr_buf *buf, u32 *plainoffset, u32 *plainlen)
 
int krb5_rc4_setup_seq_key (struct krb5_ctx *kctx, struct crypto_blkcipher *cipher, unsigned char *cksum)
 
int krb5_rc4_setup_enc_key (struct krb5_ctx *kctx, struct crypto_blkcipher *cipher, s32 seqnum)
 
void gss_krb5_make_confounder (char *p, u32 conflen)
 

Variables

spinlock_t krb5_seq_lock
 

Macro Definition Documentation

#define CKSUMTYPE_CRC32   0x0001

Definition at line 157 of file gss_krb5.h.

#define CKSUMTYPE_DESCBC   0x0004

Definition at line 160 of file gss_krb5.h.

#define CKSUMTYPE_HMAC_MD5_ARCFOUR   -138 /* Microsoft md5 hmac cksumtype */

Definition at line 167 of file gss_krb5.h.

#define CKSUMTYPE_HMAC_SHA1_96_AES128   0x000f

Definition at line 165 of file gss_krb5.h.

#define CKSUMTYPE_HMAC_SHA1_96_AES256   0x0010

Definition at line 166 of file gss_krb5.h.

#define CKSUMTYPE_HMAC_SHA1_DES3   0x000c

Definition at line 164 of file gss_krb5.h.

#define CKSUMTYPE_NIST_SHA   0x0009

Definition at line 163 of file gss_krb5.h.

#define CKSUMTYPE_RSA_MD4   0x0002

Definition at line 158 of file gss_krb5.h.

#define CKSUMTYPE_RSA_MD4_DES   0x0003

Definition at line 159 of file gss_krb5.h.

#define CKSUMTYPE_RSA_MD5   0x0007

Definition at line 161 of file gss_krb5.h.

#define CKSUMTYPE_RSA_MD5_DES   0x0008

Definition at line 162 of file gss_krb5.h.

#define ENCTYPE_AES128_CTS_HMAC_SHA1_96   0x0011

Definition at line 198 of file gss_krb5.h.

#define ENCTYPE_AES256_CTS_HMAC_SHA1_96   0x0012

Definition at line 199 of file gss_krb5.h.

#define ENCTYPE_ARCFOUR_HMAC   0x0017

Definition at line 200 of file gss_krb5.h.

#define ENCTYPE_ARCFOUR_HMAC_EXP   0x0018

Definition at line 201 of file gss_krb5.h.

#define ENCTYPE_DES3_CBC_RAW   0x0006 /* DES-3 cbc mode raw */

Definition at line 195 of file gss_krb5.h.

#define ENCTYPE_DES3_CBC_SHA   0x0005 /* DES-3 cbc mode with NIST-SHA */

Definition at line 194 of file gss_krb5.h.

#define ENCTYPE_DES3_CBC_SHA1   0x0010

Definition at line 197 of file gss_krb5.h.

#define ENCTYPE_DES_CBC_CRC   0x0001 /* DES cbc mode with CRC-32 */

Definition at line 189 of file gss_krb5.h.

#define ENCTYPE_DES_CBC_MD4   0x0002 /* DES cbc mode with RSA-MD4 */

Definition at line 190 of file gss_krb5.h.

#define ENCTYPE_DES_CBC_MD5   0x0003 /* DES cbc mode with RSA-MD5 */

Definition at line 191 of file gss_krb5.h.

#define ENCTYPE_DES_CBC_RAW   0x0004 /* DES cbc mode raw */

Definition at line 192 of file gss_krb5.h.

#define ENCTYPE_DES_HMAC_SHA1   0x0008

Definition at line 196 of file gss_krb5.h.

#define ENCTYPE_NULL   0x0000

Definition at line 188 of file gss_krb5.h.

#define ENCTYPE_UNKNOWN   0x01ff

Definition at line 202 of file gss_krb5.h.

#define GSS_KRB5_K5CLENGTH   (5)

Definition at line 45 of file gss_krb5.h.

#define GSS_KRB5_MAX_BLOCKSIZE   (16)

Definition at line 54 of file gss_krb5.h.

#define GSS_KRB5_MAX_CKSUM_LEN   (20)

Definition at line 51 of file gss_krb5.h.

#define GSS_KRB5_MAX_KEYLEN   (32)

Definition at line 48 of file gss_krb5.h.

#define GSS_KRB5_MAX_SLACK_NEEDED
Value:
(GSS_KRB5_TOK_HDR_LEN /* gss token header */ \
+ GSS_KRB5_MAX_CKSUM_LEN /* gss token checksum */ \
+ GSS_KRB5_MAX_BLOCKSIZE /* confounder */ \
+ GSS_KRB5_MAX_BLOCKSIZE /* possible padding */ \
+ GSS_KRB5_TOK_HDR_LEN /* encrypted hdr in v2 token */\
+ GSS_KRB5_MAX_CKSUM_LEN /* encryption hmac */ \
+ 4 + 4 /* RPC verifier */ \

Definition at line 228 of file gss_krb5.h.

#define GSS_KRB5_TOK_HDR_LEN   (16)

Definition at line 124 of file gss_krb5.h.

#define KEY_USAGE_SEED_CHECKSUM   (0x99)

Definition at line 213 of file gss_krb5.h.

#define KEY_USAGE_SEED_ENCRYPTION   (0xAA)

Definition at line 214 of file gss_krb5.h.

#define KEY_USAGE_SEED_INTEGRITY   (0x55)

Definition at line 215 of file gss_krb5.h.

#define KG2_RESP_FLAG_DELEG_OK   0x0002

Definition at line 139 of file gss_krb5.h.

#define KG2_RESP_FLAG_ERROR   0x0001

Definition at line 138 of file gss_krb5.h.

#define KG2_TOK_INITIAL   0x0101

Definition at line 129 of file gss_krb5.h.

#define KG2_TOK_MIC   0x0404

Definition at line 131 of file gss_krb5.h.

#define KG2_TOK_RESPONSE   0x0202

Definition at line 130 of file gss_krb5.h.

#define KG2_TOK_WRAP   0x0504

Definition at line 132 of file gss_krb5.h.

#define KG2_TOKEN_FLAG_ACCEPTORSUBKEY   0x04

Definition at line 136 of file gss_krb5.h.

#define KG2_TOKEN_FLAG_SEALED   0x02

Definition at line 135 of file gss_krb5.h.

#define KG2_TOKEN_FLAG_SENTBYACCEPTOR   0x01

Definition at line 134 of file gss_krb5.h.

#define KG_BAD_LENGTH   (39756038L)

Definition at line 176 of file gss_krb5.h.

#define KG_BAD_SEQ   (39756043L)

Definition at line 181 of file gss_krb5.h.

#define KG_BAD_SIGN_TYPE   (39756037L)

Definition at line 175 of file gss_krb5.h.

#define KG_CCACHE_NOMATCH   (39756032L)

Definition at line 170 of file gss_krb5.h.

#define KG_CONTEXT   (39756040L)

Definition at line 178 of file gss_krb5.h.

#define KG_CONTEXT_ESTABLISHED   (39756036L)

Definition at line 174 of file gss_krb5.h.

#define KG_CRED   (39756041L)

Definition at line 179 of file gss_krb5.h.

#define KG_CTX_INCOMPLETE   (39756039L)

Definition at line 177 of file gss_krb5.h.

#define KG_EMPTY_CCACHE   (39756044L)

Definition at line 182 of file gss_krb5.h.

#define KG_ENC_DESC   (39756042L)

Definition at line 180 of file gss_krb5.h.

#define KG_KEYTAB_NOMATCH   (39756033L)

Definition at line 171 of file gss_krb5.h.

#define KG_NO_CTYPES   (39756045L)

Definition at line 183 of file gss_krb5.h.

#define KG_NO_SUBKEY   (39756035L)

Definition at line 173 of file gss_krb5.h.

#define KG_TGT_MISSING   (39756034L)

Definition at line 172 of file gss_krb5.h.

#define KG_TOK_MIC_MSG   0x0101

Definition at line 126 of file gss_krb5.h.

#define KG_TOK_WRAP_MSG   0x0201

Definition at line 127 of file gss_krb5.h.

#define KG_USAGE_ACCEPTOR_SEAL   (22)

Definition at line 218 of file gss_krb5.h.

#define KG_USAGE_ACCEPTOR_SIGN   (23)

Definition at line 219 of file gss_krb5.h.

#define KG_USAGE_INITIATOR_SEAL   (24)

Definition at line 220 of file gss_krb5.h.

#define KG_USAGE_INITIATOR_SIGN   (25)

Definition at line 221 of file gss_krb5.h.

#define KG_USAGE_SEAL   (22)

Definition at line 208 of file gss_krb5.h.

#define KG_USAGE_SEQ   (24)

Definition at line 210 of file gss_krb5.h.

#define KG_USAGE_SIGN   (23)

Definition at line 209 of file gss_krb5.h.

#define KRB5_CTX_FLAG_ACCEPTOR_SUBKEY   0x00000004

Definition at line 94 of file gss_krb5.h.

#define KRB5_CTX_FLAG_CFX   0x00000002

Definition at line 93 of file gss_krb5.h.

#define KRB5_CTX_FLAG_INITIATOR   0x00000001

Definition at line 92 of file gss_krb5.h.

Enumeration Type Documentation

enum seal_alg
Enumerator:
SEAL_ALG_NONE 
SEAL_ALG_DES 
SEAL_ALG_1 
SEAL_ALG_MICROSOFT_RC4 
SEAL_ALG_DES3KD 

Definition at line 149 of file gss_krb5.h.

enum sgn_alg
Enumerator:
SGN_ALG_DES_MAC_MD5 
SGN_ALG_MD2_5 
SGN_ALG_DES_MAC 
SGN_ALG_3 
SGN_ALG_HMAC_MD5 
SGN_ALG_HMAC_SHA1_DES3_KD 

Definition at line 141 of file gss_krb5.h.

Function Documentation

int gss_decrypt_xdr_buf ( struct crypto_blkcipher tfm,
struct xdr_buf *  inbuf,
int  offset 
)

Definition at line 538 of file gss_krb5_crypto.c.

int gss_encrypt_xdr_buf ( struct crypto_blkcipher tfm,
struct xdr_buf *  outbuf,
int  offset,
struct page **  pages 
)

Definition at line 462 of file gss_krb5_crypto.c.

u32 gss_get_mic_kerberos ( struct gss_ctx *  ,
struct xdr_buf *  ,
struct xdr_netobj *   
)

Definition at line 206 of file gss_krb5_seal.c.

u32 gss_krb5_aes_decrypt ( struct krb5_ctx kctx,
u32  offset,
struct xdr_buf *  buf,
u32 plainoffset,
u32 plainlen 
)

Definition at line 765 of file gss_krb5_crypto.c.

u32 gss_krb5_aes_encrypt ( struct krb5_ctx kctx,
u32  offset,
struct xdr_buf *  buf,
int  ec,
struct page **  pages 
)

Definition at line 643 of file gss_krb5_crypto.c.

u32 gss_krb5_aes_make_key ( const struct gss_krb5_enctype gk5e,
struct xdr_netobj *  randombits,
struct xdr_netobj *  key 
)

Definition at line 311 of file gss_krb5_keys.c.

u32 gss_krb5_des3_make_key ( const struct gss_krb5_enctype gk5e,
struct xdr_netobj *  randombits,
struct xdr_netobj *  key 
)

Definition at line 271 of file gss_krb5_keys.c.

void gss_krb5_make_confounder ( char p,
u32  conflen 
)

Definition at line 117 of file gss_krb5_wrap.c.

u32 gss_unwrap_kerberos ( struct gss_ctx *  ctx_id,
int  offset,
struct xdr_buf *  buf 
)

Definition at line 600 of file gss_krb5_wrap.c.

u32 gss_verify_mic_kerberos ( struct gss_ctx *  ,
struct xdr_buf *  ,
struct xdr_netobj *   
)

Definition at line 208 of file gss_krb5_unseal.c.

u32 gss_wrap_kerberos ( struct gss_ctx *  ctx_id,
int  offset,
struct xdr_buf *  outbuf,
struct page **  pages 
)

Definition at line 581 of file gss_krb5_wrap.c.

u32 krb5_decrypt ( struct crypto_blkcipher key,
void iv,
void in,
void out,
int  length 
)

Definition at line 87 of file gss_krb5_crypto.c.

u32 krb5_derive_key ( const struct gss_krb5_enctype gk5e,
const struct xdr_netobj *  inkey,
struct xdr_netobj *  outkey,
const struct xdr_netobj *  in_constant,
gfp_t  gfp_mask 
)

Definition at line 150 of file gss_krb5_keys.c.

u32 krb5_encrypt ( struct crypto_blkcipher key,
void iv,
void in,
void out,
int  length 
)

Definition at line 53 of file gss_krb5_crypto.c.

s32 krb5_get_seq_num ( struct krb5_ctx kctx,
unsigned char cksum,
unsigned char buf,
int direction,
u32 seqnum 
)

Definition at line 138 of file gss_krb5_seqnum.c.

s32 krb5_make_seq_num ( struct krb5_ctx kctx,
struct crypto_blkcipher key,
int  direction,
u32  seqnum,
unsigned char cksum,
unsigned char buf 
)

Definition at line 75 of file gss_krb5_seqnum.c.

int krb5_rc4_setup_enc_key ( struct krb5_ctx kctx,
struct crypto_blkcipher cipher,
s32  seqnum 
)

Definition at line 924 of file gss_krb5_crypto.c.

int krb5_rc4_setup_seq_key ( struct krb5_ctx kctx,
struct crypto_blkcipher cipher,
unsigned char cksum 
)

Definition at line 858 of file gss_krb5_crypto.c.

u32 make_checksum ( struct krb5_ctx kctx,
char header,
int  hdrlen,
struct xdr_buf *  body,
int  body_offset,
u8 cksumkey,
unsigned int  usage,
struct xdr_netobj *  cksumout 
)

Definition at line 241 of file gss_krb5_crypto.c.

u32 make_checksum_v2 ( struct krb5_ctx ,
char header,
int  hdrlen,
struct xdr_buf *  body,
int  body_offset,
u8 key,
unsigned int  usage,
struct xdr_netobj *  cksum 
)

Definition at line 322 of file gss_krb5_crypto.c.

int xdr_extend_head ( struct xdr_buf *  buf,
unsigned int  base,
unsigned int  shiftlen 
)

Definition at line 576 of file gss_krb5_crypto.c.

Variable Documentation

spinlock_t krb5_seq_lock