krb5.h
来自「一个支持FTP,SFTP的客户端程序」· C头文件 代码 · 共 1,815 行 · 第 1/5 页
H
1,815 行
#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 */
/* XXX deprecated? */
#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_UNKNOWN 0x01ff
/* local crud */
/* marc's DES-3 with 32-bit length */
#define ENCTYPE_LOCAL_DES3_HMAC_SHA1 0x7007
#define CKSUMTYPE_CRC32 0x0001
#define CKSUMTYPE_RSA_MD4 0x0002
#define CKSUMTYPE_RSA_MD4_DES 0x0003
#define CKSUMTYPE_DESCBC 0x0004
/* des-mac-k */
/* rsa-md4-des-k */
#define CKSUMTYPE_RSA_MD5 0x0007
#define CKSUMTYPE_RSA_MD5_DES 0x0008
#define CKSUMTYPE_NIST_SHA 0x0009
#define CKSUMTYPE_HMAC_SHA1_DES3 0x000c
#ifndef krb5_roundup
/* round x up to nearest multiple of y */
#define krb5_roundup(x, y) ((((x) + (y) - 1)/(y))*(y))
#endif /* roundup */
/* macro function definitions to help clean up code */
#if 1
#define krb5_x(ptr,args) ((ptr)?((*(ptr)) args):(abort(),1))
#define krb5_xc(ptr,args) ((ptr)?((*(ptr)) args):(abort(),(char*)0))
#else
#define krb5_x(ptr,args) ((*(ptr)) args)
#define krb5_xc(ptr,args) ((*(ptr)) args)
#endif
KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
krb5_c_encrypt
KRB5_PROTOTYPE((krb5_context context, krb5_const krb5_keyblock *key,
krb5_keyusage usage, krb5_const krb5_data *ivec,
krb5_const krb5_data *input, krb5_enc_data *output));
KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
krb5_c_decrypt
KRB5_PROTOTYPE((krb5_context context, krb5_const krb5_keyblock *key,
krb5_keyusage usage, krb5_const krb5_data *ivec,
krb5_const krb5_enc_data *input, krb5_data *output));
KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
krb5_c_encrypt_length
KRB5_PROTOTYPE((krb5_context context, krb5_enctype enctype,
size_t inputlen, size_t *length));
KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
krb5_c_block_size
KRB5_PROTOTYPE((krb5_context context, krb5_enctype enctype,
size_t *blocksize));
KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
krb5_c_make_random_key
KRB5_PROTOTYPE((krb5_context context, krb5_enctype enctype,
krb5_keyblock *random_key));
KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
krb5_c_random_make_octets
KRB5_PROTOTYPE((krb5_context context, krb5_data *data));
KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
krb5_c_random_seed
KRB5_PROTOTYPE((krb5_context context, krb5_data *data));
KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
krb5_c_string_to_key
KRB5_PROTOTYPE((krb5_context context, krb5_enctype enctype,
krb5_const krb5_data *string, krb5_const krb5_data *salt,
krb5_keyblock *key));
KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
krb5_c_enctype_compare
KRB5_PROTOTYPE((krb5_context context, krb5_enctype e1, krb5_enctype e2,
krb5_boolean *similar));
KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
krb5_c_make_checksum
KRB5_PROTOTYPE((krb5_context context, krb5_cksumtype cksumtype,
krb5_const krb5_keyblock *key, krb5_keyusage usage,
krb5_const krb5_data *input, krb5_checksum *cksum));
KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
krb5_c_verify_checksum
KRB5_PROTOTYPE((krb5_context context,
krb5_const krb5_keyblock *key, krb5_keyusage usage,
krb5_const krb5_data *data,
krb5_const krb5_checksum *cksum,
krb5_boolean *valid));
KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
krb5_c_checksum_length
KRB5_PROTOTYPE((krb5_context context, krb5_cksumtype cksumtype,
size_t *length));
KRB5_DLLIMP krb5_error_code KRB5_CALLCONV
krb5_c_keyed_checksum_types
KRB5_PROTOTYPE((krb5_context context, krb5_enctype enctype,
unsigned int *count, krb5_cksumtype **cksumtypes));
#define KRB5_KEYUSAGE_AS_REQ_PA_ENC_TS 1
#define KRB5_KEYUSAGE_KDC_REP_TICKET 2
#define KRB5_KEYUSAGE_AS_REP_ENCPART 3
#define KRB5_KEYUSAGE_TGS_REQ_AD_SESSKEY 4
#define KRB5_KEYUSAGE_TGS_REQ_AD_SUBKEY 5
#define KRB5_KEYUSAGE_TGS_REQ_AUTH_CKSUM 6
#define KRB5_KEYUSAGE_TGS_REQ_AUTH 7
#define KRB5_KEYUSAGE_TGS_REP_ENCPART_SESSKEY 8
#define KRB5_KEYUSAGE_TGS_REP_ENCPART_SUBKEY 9
#define KRB5_KEYUSAGE_AP_REQ_AUTH_CKSUM 10
#define KRB5_KEYUSAGE_AP_REQ_AUTH 11
#define KRB5_KEYUSAGE_AP_REP_ENCPART 12
#define KRB5_KEYUSAGE_KRB_PRIV_ENCPART 13
#define KRB5_KEYUSAGE_KRB_CRED_ENCPART 14
#define KRB5_KEYUSAGE_KRB_SAFE_CKSUM 15
#define KRB5_KEYUSAGE_APP_DATA_ENCRYPT 16
#define KRB5_KEYUSAGE_APP_DATA_CKSUM 17
#define KRB5_KEYUSAGE_KRB_ERROR_CKSUM 18
#define KRB5_KEYUSAGE_AD_KDCISSUED_CKSUM 19
#define KRB5_KEYUSAGE_AD_MTE 20
#define KRB5_KEYUSAGE_AD_ITE 21
/* XXX need to register these */
#define KRB5_KEYUSAGE_GSS_TOK_MIC 22
#define KRB5_KEYUSAGE_GSS_TOK_WRAP_INTEG 23
#define KRB5_KEYUSAGE_GSS_TOK_WRAP_PRIV 24
KRB5_DLLIMP krb5_boolean KRB5_CALLCONV valid_enctype
KRB5_PROTOTYPE((krb5_const krb5_enctype ktype));
KRB5_DLLIMP krb5_boolean KRB5_CALLCONV valid_cksumtype
KRB5_PROTOTYPE((krb5_const krb5_cksumtype ctype));
KRB5_DLLIMP krb5_boolean KRB5_CALLCONV is_coll_proof_cksum
KRB5_PROTOTYPE((krb5_const krb5_cksumtype ctype));
KRB5_DLLIMP krb5_boolean KRB5_CALLCONV is_keyed_cksum
KRB5_PROTOTYPE((krb5_const krb5_cksumtype ctype));
#ifdef KRB5_OLD_CRYPTO
/*
* old cryptosystem routine prototypes. These are now layered
* on top of the functions above.
*/
KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_encrypt
KRB5_PROTOTYPE((krb5_context context,
krb5_const krb5_pointer inptr,
krb5_pointer outptr,
krb5_const size_t size,
krb5_encrypt_block FAR * eblock,
krb5_pointer ivec));
KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_decrypt
KRB5_PROTOTYPE((krb5_context context,
krb5_const krb5_pointer inptr,
krb5_pointer outptr,
krb5_const size_t size,
krb5_encrypt_block FAR * eblock,
krb5_pointer ivec));
KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_process_key
KRB5_PROTOTYPE((krb5_context context,
krb5_encrypt_block FAR * eblock,
krb5_const krb5_keyblock FAR * key));
KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_finish_key
KRB5_PROTOTYPE((krb5_context context,
krb5_encrypt_block FAR * eblock));
KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_string_to_key
KRB5_PROTOTYPE((krb5_context context,
krb5_const krb5_encrypt_block FAR * eblock,
krb5_keyblock FAR * keyblock,
krb5_const krb5_data FAR * data,
krb5_const krb5_data FAR * salt));
KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_init_random_key
KRB5_PROTOTYPE((krb5_context context,
krb5_const krb5_encrypt_block FAR * eblock,
krb5_const krb5_keyblock FAR * keyblock,
krb5_pointer FAR * ptr));
KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_finish_random_key
KRB5_PROTOTYPE((krb5_context context,
krb5_const krb5_encrypt_block FAR * eblock,
krb5_pointer FAR * ptr));
KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_random_key
KRB5_PROTOTYPE((krb5_context context,
krb5_const krb5_encrypt_block FAR * eblock,
krb5_pointer ptr,
krb5_keyblock FAR * FAR * keyblock));
KRB5_DLLIMP krb5_enctype KRB5_CALLCONV krb5_eblock_enctype
KRB5_PROTOTYPE((krb5_context context,
krb5_const krb5_encrypt_block FAR * eblock));
KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_use_enctype
KRB5_PROTOTYPE((krb5_context context,
krb5_encrypt_block FAR * eblock,
krb5_const krb5_enctype enctype));
KRB5_DLLIMP size_t KRB5_CALLCONV krb5_encrypt_size
KRB5_PROTOTYPE((krb5_const size_t length,
krb5_enctype crypto));
KRB5_DLLIMP size_t KRB5_CALLCONV krb5_checksum_size
KRB5_PROTOTYPE((krb5_context context,
krb5_const krb5_cksumtype ctype));
KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_calculate_checksum
KRB5_PROTOTYPE((krb5_context context,
krb5_const krb5_cksumtype ctype,
krb5_const krb5_pointer in, krb5_const size_t in_length,
krb5_const krb5_pointer seed, krb5_const size_t seed_length,
krb5_checksum FAR * outcksum));
KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_verify_checksum
KRB5_PROTOTYPE((krb5_context context,
krb5_const krb5_cksumtype ctype,
krb5_const krb5_checksum FAR * cksum,
krb5_const krb5_pointer in, krb5_const size_t in_length,
krb5_const krb5_pointer seed, krb5_const size_t seed_length));
KRB5_DLLIMP krb5_error_code KRB5_CALLCONV krb5_random_confounder
KRB5_PROTOTYPE((size_t, krb5_pointer));
krb5_error_code krb5_encrypt_data
KRB5_PROTOTYPE((krb5_context context, krb5_keyblock *key,
krb5_pointer ivec, krb5_data *data,
krb5_enc_data *enc_data));
krb5_error_code krb5_decrypt_data
KRB5_PROTOTYPE((krb5_context context, krb5_keyblock *key,
krb5_pointer ivec, krb5_enc_data *data,
krb5_data *enc_data));
#endif /* KRB5_OLD_CRYPTO */
/*
* end "encryption.h"
*/
/*
* begin "fieldbits.h"
*/
/* kdc_options for kdc_request */
/* options is 32 bits; each host is responsible to put the 4 bytes
representing these bits into net order before transmission */
/* #define KDC_OPT_RESERVED 0x80000000 */
#define KDC_OPT_FORWARDABLE 0x40000000
#define KDC_OPT_FORWARDED 0x20000000
#define KDC_OPT_PROXIABLE 0x10000000
#define KDC_OPT_PROXY 0x08000000
#define KDC_OPT_ALLOW_POSTDATE 0x04000000
#define KDC_OPT_POSTDATED 0x02000000
/* #define KDC_OPT_UNUSED 0x01000000 */
#define KDC_OPT_RENEWABLE 0x00800000
/* #define KDC_OPT_UNUSED 0x00400000 */
/* #define KDC_OPT_RESERVED 0x00200000 */
/* #define KDC_OPT_RESERVED 0x00100000 */
/* #define KDC_OPT_RESERVED 0x00080000 */
/* #define KDC_OPT_RESERVED 0x00040000 */
/* #define KDC_OPT_RESERVED 0x00020000 */
/* #define KDC_OPT_RESERVED 0x00010000 */
/* #define KDC_OPT_RESERVED 0x00008000 */
/* #define KDC_OPT_RESERVED 0x00004000 */
/* #define KDC_OPT_RESERVED 0x00002000 */
/* #define KDC_OPT_RESERVED 0x00001000 */
/* #define KDC_OPT_RESERVED 0x00000800 */
/* #define KDC_OPT_RESERVED 0x00000400 */
/* #define KDC_OPT_RESERVED 0x00000200 */
/* #define KDC_OPT_RESERVED 0x00000100 */
/* #define KDC_OPT_RESERVED 0x00000080 */
/* #define KDC_OPT_RESERVED 0x00000040 */
/* #define KDC_OPT_RESERVED 0x00000020 */
#define KDC_OPT_RENEWABLE_OK 0x00000010
#define KDC_OPT_ENC_TKT_IN_SKEY 0x00000008
/* #define KDC_OPT_UNUSED 0x00000004 */
#define KDC_OPT_RENEW 0x00000002
#define KDC_OPT_VALIDATE 0x00000001
/*
* Mask of ticket flags in the TGT which should be converted into KDC
* options when using the TGT to get derivitive tickets.
*
* New mask = KDC_OPT_FORWARDABLE | KDC_OPT_PROXIABLE |
* KDC_OPT_ALLOW_POSTDATE | KDC_OPT_RENEWABLE
*/
#define KDC_TKT_COMMON_MASK 0x54800000
/* definitions for ap_options fields */
/* ap_options are 32 bits; each host is responsible to put the 4 bytes
representing these bits into net order before transmission */
#define AP_OPTS_RESERVED 0x80000000
#define AP_OPTS_USE_SESSION_KEY 0x40000000
#define AP_OPTS_MUTUAL_REQUIRED 0x20000000
/* #define AP_OPTS_RESERVED 0x10000000 */
/* #define AP_OPTS_RESERVED 0x08000000 */
/* #define AP_OPTS_RESERVED 0x04000000 */
/* #define AP_OPTS_RESERVED 0x02000000 */
/* #define AP_OPTS_RESERVED 0x01000000 */
/* #define AP_OPTS_RESERVED 0x00800000 */
/* #define AP_OPTS_RESERVED 0x00400000 */
/* #define AP_OPTS_RESERVED 0x00200000 */
/* #define AP_OPTS_RESERVED 0x00100000 */
/* #define AP_OPTS_RESERVED 0x00080000 */
/* #define AP_OPTS_RESERVED 0x00040000 */
/* #define AP_OPTS_RESERVED 0x00020000 */
/* #define AP_OPTS_RESERVED 0x00010000 */
/* #define AP_OPTS_RESERVED 0x00008000 */
/* #define AP_OPTS_RESERVED 0x00004000 */
/* #define AP_OPTS_RESERVED 0x00002000 */
/* #define AP_OPTS_RESERVED 0x00001000 */
/* #define AP_OPTS_RESERVED 0x00000800 */
/* #define AP_OPTS_RESERVED 0x00000400 */
/* #define AP_OPTS_RESERVED 0x00000200 */
/* #define AP_OPTS_RESERVED 0x00000100 */
/* #define AP_OPTS_RESERVED 0x00000080 */
/* #define AP_OPTS_RESERVED 0x00000040 */
/* #define AP_OPTS_RESERVED 0x00000020 */
/* #define AP_OPTS_RESERVED 0x00000010 */
/* #define AP_OPTS_RESERVED 0x00000008 */
/* #define AP_OPTS_RESERVED 0x00000004 */
/* #define AP_OPTS_RESERVED 0x00000002 */
#define AP_OPTS_USE_SUBKEY 0x00000001
#define AP_OPTS_WIRE_MASK 0xfffffff0
/* definitions for ad_type fields. */
#define AD_TYPE_RESERVED 0x8000
#define AD_TYPE_EXTERNAL 0x4000
#define AD_TYPE_REGISTERED 0x2000
#define AD_TYPE_FIELD_TYPE_MASK 0x1fff
/* Ticket flags */
/* flags are 32 bits; each host is responsible to put the 4 bytes
representing these bits into net order before transmission */
/* #define TKT_FLG_RESERVED 0x80000000 */
#define TKT_FLG_FORWARDABLE 0x40000000
#define TKT_FLG_FORWARDED 0x20000000
#define TKT_FLG_PROXIABLE 0x10000000
#define TKT_FLG_PROXY 0x08000000
#define TKT_FLG_MAY_POSTDATE 0x04000000
#define TKT_FLG_POSTDATED 0x02000000
#define TKT_FLG_INVALID 0x01000000
#define TKT_FLG_RENEWABLE 0x00800000
#define TKT_FLG_INITIAL 0x00400000
#define TKT_FLG_PRE_AUTH 0x00200000
#define TKT_FLG_HW_AUTH 0x00100000
/* #define TKT_FLG_RESERVED 0x00080000 */
/* #define TKT_FLG_RESERVED 0x00040000 */
/* #define TKT_FLG_RESERVED 0x00020000 */
/* #define TKT_FLG_RESERVED 0x00010000 */
/* #define TKT_FLG_RESERVED 0x00008000 */
/* #define TKT_FLG_RESERVED 0x00004000 */
/* #define TKT_FLG_RESERVED 0x00002000 */
/* #define TKT_FLG_RESERVED 0x00001000 */
/* #define TKT_FLG_RESERVED 0x00000800 */
/* #define TKT_FLG_RESERVED 0x00000400 */
/* #define TKT_FLG_RESERVED 0x00000200 */
/* #define TKT_FLG_RESERVED 0x00000100 */
/* #define TKT_FLG_RESERVED 0x00000080 */
/* #define TKT_FLG_RESERVED 0x00000040 */
/* #define TKT_FLG_RESERVED 0x00000020 */
/* #define TKT_FLG_RESERVED 0x00000010 */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?