diff options
author | markm <markm@FreeBSD.org> | 1995-09-07 21:39:00 +0000 |
---|---|---|
committer | markm <markm@FreeBSD.org> | 1995-09-07 21:39:00 +0000 |
commit | 2539acf77b018acd7416a9857a14c466e55cd7e8 (patch) | |
tree | 96ff3578d62372822240f11a1567e45b880f3910 /eBones/include | |
parent | eed9438eb23b62f78af7685dc226228e2bf5c524 (diff) | |
download | FreeBSD-src-2539acf77b018acd7416a9857a14c466e55cd7e8.zip FreeBSD-src-2539acf77b018acd7416a9857a14c466e55cd7e8.tar.gz |
Major cleanup of eBones code:
- Get all functions prototyped or at least defined before use.
- Make code compile (Mostly) clean with -Wall set
- Start to reduce the degree to which DES aka libdes is built in.
- get all functions to the same uniform standard of definition:
int
foo(a, b)
int a;
int *b;
{
:
}
- fix numerous bugs exposed by above processes.
Note - this replaces the previous work which used an unpopular function
definition style.
Diffstat (limited to 'eBones/include')
-rw-r--r-- | eBones/include/des.h | 176 | ||||
-rw-r--r-- | eBones/include/kparse.h | 8 | ||||
-rw-r--r-- | eBones/include/krb.h | 173 | ||||
-rw-r--r-- | eBones/include/krb_db.h | 2 |
4 files changed, 278 insertions, 81 deletions
diff --git a/eBones/include/des.h b/eBones/include/des.h index af20141..e55b4ae 100644 --- a/eBones/include/des.h +++ b/eBones/include/des.h @@ -1,27 +1,38 @@ -/* - * Copyright 1987, 1988 by the Massachusetts Institute of Technology. - * For copying and distribution information, please see the file - * <Copyright.MIT>. - * - * Include file for the Data Encryption Standard library. - * - * from: des.h,v 4.11 89/01/17 16:24:57 rfrench Exp $ - * $Id: des.h,v 1.3 1995/07/18 16:36:25 mark Exp $ +/* des.h */ +/* Copyright (C) 1995 Eric Young (eay@mincom.oz.au). + * All rights reserved. + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * See the COPYRIGHT file in the libdes distribution for more details. */ -/* only do the whole thing once */ -#ifndef DES_DEFS -#define DES_DEFS +#ifndef HEADER_DES_H +#define HEADER_DES_H -typedef unsigned char des_cblock[8]; /* crypto-block size */ -/* Key schedule */ -typedef struct des_ks_struct { des_cblock _; } des_key_schedule[16]; +#include <stdio.h> + +typedef unsigned char des_cblock[8]; +typedef struct des_ks_struct + { + union { + des_cblock _; + /* make sure things are correct size on machines with + * 8 byte longs */ + unsigned long pad[2]; + } ks; +#undef _ +#define _ ks._ + } des_key_schedule[16]; #define DES_KEY_SZ (sizeof(des_cblock)) +#define DES_SCHEDULE_SZ (sizeof(des_key_schedule)) + #define DES_ENCRYPT 1 #define DES_DECRYPT 0 -#ifndef NCOMPAT +#define DES_CBC_MODE 0 +#define DES_PCBC_MODE 1 + #define C_Block des_cblock #define Key_schedule des_key_schedule #define ENCRYPT DES_ENCRYPT @@ -31,14 +42,139 @@ typedef struct des_ks_struct { des_cblock _; } des_key_schedule[16]; #define read_pw_string des_read_pw_string #define random_key des_random_key #define pcbc_encrypt des_pcbc_encrypt +#define set_key des_set_key #define key_sched des_key_sched +#define ecb_encrypt des_ecb_encrypt #define cbc_encrypt des_cbc_encrypt +#define ncbc_encrypt des_ncbc_encrypt #define cbc_cksum des_cbc_cksum -#define C_Block_print des_cblock_print #define quad_cksum des_quad_cksum -typedef struct des_ks_struct bit_64; + +/* For compatibility with the MIT lib - eay 20/05/92 */ +typedef des_key_schedule bit_64; + +extern int des_check_key; /* defaults to false */ +extern int des_rw_mode; /* defaults to DES_PCBC_MODE */ + +/* The next line is used to disable full ANSI prototypes, if your + * compiler has problems with the prototypes, make sure this line always + * evaluates to true :-) */ +#if defined(MSDOS) && defined(__STDC__) +#undef PROTO +#define PROTO #endif -#define des_cblock_print(x) des_cblock_print_file(x, stdout) +/* markm - dirty hack */ +#define PROTO -#endif DES_DEFS +#ifdef PROTO +int des_2ecb_encrypt(des_cblock *input,des_cblock *output, + des_key_schedule ks1,des_key_schedule ks2,int enc); +int des_3ecb_encrypt(des_cblock *input,des_cblock *output, + des_key_schedule ks1,des_key_schedule ks2, + des_key_schedule ks3, int enc); +unsigned long des_cbc_cksum(des_cblock *input,des_cblock *output, + long length,des_key_schedule schedule,des_cblock *ivec); +int des_cbc_encrypt(des_cblock *input,des_cblock *output,long length, + des_key_schedule schedule,des_cblock *ivec,int enc); +int des_ncbc_encrypt(des_cblock *input,des_cblock *output,long length, + des_key_schedule schedule,des_cblock *ivec,int enc); +int des_3cbc_encrypt(des_cblock *input,des_cblock *output,long length, + des_key_schedule sk1,des_key_schedule sk2, + des_cblock *ivec1,des_cblock *ivec2,int enc); +int des_cfb_encrypt(unsigned char *in,unsigned char *out,int numbits, + long length,des_key_schedule schedule,des_cblock *ivec,int enc); +int des_ecb_encrypt(des_cblock *input,des_cblock *output, + des_key_schedule ks,int enc); +int des_encrypt(unsigned long *input,unsigned long *output, + des_key_schedule ks, int enc); +int des_encrypt2(unsigned long *input,unsigned long *output, + des_key_schedule ks, int enc); +int des_ede3_cbc_encrypt(des_cblock *input, des_cblock *output, + long length, des_key_schedule ks1, des_key_schedule ks2, + des_key_schedule ks3, des_cblock *ivec, int enc); +int des_ede2_cbc_encrypt(des_cblock *input, des_cblock *output, + long length, des_key_schedule ks1, des_key_schedule ks2, + des_cblock *ivec, int enc); +int des_enc_read(int fd,char *buf,int len,des_key_schedule sched, + des_cblock *iv); +int des_enc_write(int fd,char *buf,int len,des_key_schedule sched, + des_cblock *iv); +#if 0 +#ifdef PERL5 +char *des_crypt(const char *buf,const char *salt); +#else +/* some stupid compilers complain because I have declared char instead + * of const char */ +#ifdef HEADER_DES_LOCL_H +char *crypt(const char *buf,const char *salt); +#else +char *crypt(); +#endif /* HEADER_DES_LOCL_H */ +#endif /* PERL5 */ +#endif /* 0 */ + +int des_ofb_encrypt(unsigned char *in,unsigned char *out, + int numbits,long length,des_key_schedule schedule,des_cblock *ivec); +int des_pcbc_encrypt(des_cblock *input,des_cblock *output,long length, + des_key_schedule schedule,des_cblock *ivec,int enc); +unsigned long des_quad_cksum(des_cblock *input,des_cblock *output, + long length,int out_count,des_cblock *seed); +void des_random_seed(des_cblock key); +int des_random_key(des_cblock ret); +int des_read_password(des_cblock *key,char *prompt,int verify); +int des_read_2passwords(des_cblock *key1,des_cblock *key2, + char *prompt,int verify); +int des_read_pw_string(char *buf,int length,char *prompt,int verify); +void des_set_odd_parity(des_cblock *key); +int des_is_weak_key(des_cblock *key); +int des_set_key(des_cblock *key,des_key_schedule schedule); +int des_key_sched(des_cblock *key,des_key_schedule schedule); +int des_string_to_key(char *str,des_cblock *key); +int des_string_to_2keys(char *str,des_cblock *key1,des_cblock *key2); +int des_cfb64_encrypt(unsigned char *in, unsigned char *out, long length, + des_key_schedule schedule, des_cblock *ivec, int *num, int enc); +int des_ofb64_encrypt(unsigned char *in, unsigned char *out, long length, + des_key_schedule schedule, des_cblock *ivec, int *num); +void des_cblock_print_file(des_cblock *cb, FILE *fp); + +#else + +int des_2ecb_encrypt(); +int des_3ecb_encrypt(); +unsigned long des_cbc_cksum(); +int des_cbc_encrypt(); +int des_ncbc_encrypt(); +int des_3cbc_encrypt(); +int des_cfb_encrypt(); +int des_ecb_encrypt(); +int des_encrypt(); +int des_encrypt2(); +int des_ede3_cbc_encrypt(); +int des_ede2_cbc_encrypt(); +int des_enc_read(); +int des_enc_write(); +#ifdef PERL5 +char *des_crypt(); +#else +char *crypt(); +#endif +int des_ofb_encrypt(); +int des_pcbc_encrypt(); +unsigned long des_quad_cksum(); +void des_random_seed(); +int des_random_key(); +int des_read_password(); +int des_read_2passwords(); +int des_read_pw_string(); +void des_set_odd_parity(); +int des_is_weak_key(); +int des_set_key(); +int des_key_sched(); +int des_string_to_key(); +int des_string_to_2keys(); +int des_cfb64_encrypt(); +int des_ofb64_encrypt(); +void des_cblock_print_file(); +#endif +#endif diff --git a/eBones/include/kparse.h b/eBones/include/kparse.h index 26bc523..58d45a7 100644 --- a/eBones/include/kparse.h +++ b/eBones/include/kparse.h @@ -81,7 +81,11 @@ extern char ErrorMsg[]; /* * fGetParameterSet */ -extern char *strsave(); /* defined in this module */ -extern char *strutol(); /* defined in this module */ +extern char *strsave(char *p); /* defined in this module */ +extern char *strutol(char *p); /* defined in this module */ + +int fGetParameterSet(FILE *fp, parmtable parm[], int parmcount); +int fGetKeywordValue(FILE *fp, char *keyword, int klen, char *value, int vlen); +int fGetToken(FILE *fp, char *dest, int maxlen); #endif /* KPARSE_DEFS */ diff --git a/eBones/include/krb.h b/eBones/include/krb.h index 134e0e9..70c2a80 100644 --- a/eBones/include/krb.h +++ b/eBones/include/krb.h @@ -6,7 +6,7 @@ * Include file for the Kerberos library. * * from: krb.h,v 4.26 89/08/08 17:55:25 jtkohl Exp $ - * $Id: krb.h,v 1.3 1995/08/25 22:50:15 markm Exp $ + * $Id: krb.h,v 1.6 1995/08/25 21:25:10 mark Exp $ */ /* Only one time, please */ @@ -375,71 +375,128 @@ char *tkt_string(); #define KOPT_DO_OLDSTYLE 0x00000008 /* use the old-style protocol */ #endif ATHENA_COMPAT -void acl_canonicalize_principal(char *principal, char *buf); -int acl_check(char *acl, char *principal); -int acl_exact_match(char *acl, char *principal); -int acl_add(char *acl, char *principal); -int acl_delete(char *acl, char *principal); -int acl_initialize(char *acl_file, int mode); +/* libacl */ +void acl_canonicalize_principal __P((char *principal, char *buf)); +int acl_check __P((char *acl, char *principal)); +int acl_exact_match __P((char *acl, char *principal)); +int acl_add __P((char *acl, char *principal)); +int acl_delete __P((char *acl, char *principal)); +int acl_initialize __P((char *acl_file, int mode)); -int krb_mk_req(KTEXT authent, char *service, char *instance, char *realm, +/* libkrb - krb.3 */ +int krb_mk_req __P((KTEXT authent, char *service, char *instance, char *realm, long checksum); -int krb_rd_req (KTEXT authent, char *service, char *instance, long from_addr, - AUTH_DAT *ad, char *fn); -int krb_kntoln(AUTH_DAT *ad, char *lname); -int krb_set_key(char *key, int cvt); -int krb_get_cred(char *service, char *instance, char *realm, CREDENTIALS *c); -long krb_mk_priv(u_char *in, u_char *out, u_long in_length, +int krb_rd_req __P((KTEXT authent, char *service, char *instance, + long from_addr, AUTH_DAT *ad, char *fn)); +int krb_kntoln __P((AUTH_DAT *ad, char *lname)); +int krb_set_key __P((char *key, int cvt)); +int krb_get_cred __P((char *service, char *instance, char *realm, + CREDENTIALS *c)); +long krb_mk_priv __P((u_char *in, u_char *out, u_long in_length, des_key_schedule schedule, des_cblock key, struct sockaddr_in *sender, - struct sockaddr_in *receiver); -long krb_rd_priv(u_char *in, u_long in_length, Key_schedule schedule, + struct sockaddr_in *receiver)); +long krb_rd_priv __P((u_char *in, u_long in_length, Key_schedule schedule, des_cblock key, struct sockaddr_in *sender, struct sockaddr_in *receiver, - MSG_DAT *msg_data); -long krb_mk_safe(u_char *in, u_char *out, u_long in_length, des_cblock key, - struct sockaddr_in *sender, struct sockaddr_in *receiver); -long krb_rd_safe(u_char *in, u_long length, des_cblock key, + MSG_DAT *msg_data)); +long krb_mk_safe __P((u_char *in, u_char *out, u_long in_length, + des_cblock *key, struct sockaddr_in *sender, struct sockaddr_in *receiver)); +long krb_rd_safe __P((u_char *in, u_long length, des_cblock *key, struct sockaddr_in *sender, struct sockaddr_in *receiver, - MSG_DAT *msg_data); -long krb_mk_err(u_char *out, long code, char *string); -int krb_rd_err(u_char *in, u_long in_length, long *code, MSG_DAT *m_data); - -int krb_get_lrealm(char *r, int n); -char *krb_get_phost(char *alias); -int krb_get_krbhst(char *h, char *r, int n); -int krb_get_admhst(char *h, char *r, int n); -int krb_net_write(int fd, char *buf, int len); -int krb_net_read(int fd, char *buf, int len); -int krb_get_tf_realm(char *ticket_file, char *realm); -int krb_get_in_tkt(char *user, char *instance, char *realm, char *service, + MSG_DAT *msg_data)); +long krb_mk_err __P((u_char *out, long code, char *string)); +int krb_rd_err __P((u_char *in, u_long in_length, long *code, MSG_DAT *m_data)); + +/* libkrb - krb_sendauth.3 */ +int krb_sendauth __P((long options, int fd, KTEXT ticket, char *service, + char *inst, char *realm, u_long checksum, MSG_DAT *msg_data, + CREDENTIALS *cred, Key_schedule schedule, struct sockaddr_in *laddr, + struct sockaddr_in *faddr, char *version)); +int krb_recvauth __P((long options, int fd, KTEXT ticket, char *service, + char *instance, struct sockaddr_in *faddr, struct sockaddr_in *laddr, + AUTH_DAT *kdata, char *filename, Key_schedule schedule, char *version)); +int krb_net_write __P((int fd, char *buf, int len)); +int krb_net_read __P((int fd, char *buf, int len)); + +/* libkrb - krb_realmofhost.3 */ +char *krb_realmofhost __P((char *host)); +char *krb_get_phost __P((char *alias)); +int krb_get_krbhst __P((char *h, char *r, int n)); +int krb_get_admhst __P((char *h, char *r, int n)); +int krb_get_lrealm __P((char *r, int n)); + +/* libkrb - krb_set_tkt_string.3 */ +void krb_set_tkt_string(char *val); + +/* libkrb - kuserok.3 */ +int kuserok __P((AUTH_DAT *authdata, char *localuser)); + +/* libkrb - tf_util.3 */ +int tf_init __P((char *tf_name, int rw)); +int tf_get_pname __P((char *p)); +int tf_get_pinst __P((char *inst)); +int tf_get_cred __P((CREDENTIALS *c)); +void tf_close __P((void)); + +/* Internal routines */ +int des_read __P((int fd, char *buf, int len)); +int des_write __P((int fd, char *buf, int len)); +int krb_get_tf_realm __P((char *ticket_file, char *realm)); +int krb_get_in_tkt __P((char *user, char *instance, char *realm, char *service, char *sinstance, int life, int (*key_proc)(), int (*decrypt_proc)(), - char *arg); -int krb_get_pw_in_tkt(char *user, char *instance, char *realm, char *service, - char *sinstance, int life, char *password); -int krb_get_tf_fullname(char *ticket_file, char *name, char *instance, - char *realm); -int save_credentials(char *service, char *instance, char *realm, - des_cblock session, int lifetime, int kvno, KTEXT ticket, long issue_date); -int read_service_key(char *service, char *instance, char *realm, int kvno, - char *file, char *key); -int get_ad_tkt(char *service, char *sinstance, char *realm, int lifetime); -int send_to_kdc(KTEXT pkt, KTEXT rpkt, char *realm); -int decomp_ticket(KTEXT tkt, unsigned char *flags, char *pname, + char *arg)); +int krb_get_pw_in_tkt __P((char *user, char *instance, char *realm, + char *service, char *sinstance, int life, char *password)); +int krb_get_svc_in_tkt __P((char *user, char *instance, char *realm, + char *service, char *sinstance, int life, char *srvtab)); +int krb_get_tf_fullname __P((char *ticket_file, char *name, char *instance, + char *realm)); +int save_credentials __P((char *service, char *instance, char *realm, + des_cblock session, int lifetime, int kvno, KTEXT ticket, long issue_date)); +int read_service_key __P((char *service, char *instance, char *realm, int kvno, + char *file, char *key)); +int get_ad_tkt __P((char *service, char *sinstance, char *realm, int lifetime)); +int send_to_kdc __P((KTEXT pkt, KTEXT rpkt, char *realm)); +int krb_create_ticket __P((KTEXT tkt, unsigned char flags, char *pname, + char *pinstance, char *prealm, long paddress, char *session, short life, + long time_sec, char *sname, char *sinstance, C_Block key)); +int decomp_ticket __P((KTEXT tkt, unsigned char *flags, char *pname, char *pinstance, char *prealm, unsigned long *paddress, des_cblock session, int *life, unsigned long *time_sec, char *sname, char *sinstance, - des_cblock key, des_key_schedule key_s); -int kname_parse(char *np, char *ip, char *rp, char *fullname); -int tf_init(char *tf_name, int rw); -int tf_save_cred(char *service, char *instance, char *realm, - des_cblock session, int lifetime, int kvno, KTEXT ticket, long issue_date); -int tf_get_pname(char *p); -int tf_get_pinst(char *inst); -int tf_get_cred(CREDENTIALS *c); -void tf_close(void); -int getst(int fd, char *s, int n); -int pkt_clen(KTEXT pkt); -int in_tkt(char *pname, char *pinst); -char *month_sname(int n); -void log(); /* Actually VARARGS - markm */ + des_cblock key, des_key_schedule key_s)); +int create_ciph __P((KTEXT c, C_Block session, char *service, char *instance, + char *realm, unsigned long life, int kvno, KTEXT tkt, + unsigned long kdc_time, C_Block key)); +int kname_parse __P((char *np, char *ip, char *rp, char *fullname)); +int tf_save_cred __P((char *service, char *instance, char *realm, + des_cblock session, int lifetime, int kvno, KTEXT ticket, long issue_date)); +int getst(int fd, char *s, int n)); +int pkt_clen __P((KTEXT pkt)); +int in_tkt __P((char *pname, char *pinst)); +int dest_tkt __P((void)); +char *month_sname __P((int n)); +void log __P(()); /* Actually VARARGS - markm */ +void kset_logfile __P((char *filename)); +void set_logfile __P((char *filename)); +int k_isinst __P((char *s)); +int k_isrealm __P((char *s)); +int k_isname __P((char *s)); +int k_gethostname __P((char *name, int namelen)); +int kerb_init __P((void)); +void kerb_fini __P((void)); +int kerb_db_set_name __P((char *name)); +int kerb_db_set_lockmode __P((int mode)); +int kerb_db_create __P((char *db_name)); +int kerb_db_iterate __P((int (*func)(), char *arg)); +int kerb_db_rename __P((char *from, char *to)); +long kerb_get_db_age __P((void)); +char * stime __P((long *t)); + +long kdb_get_master_key __P((int prompt, C_Block master_key, + Key_schedule master_key_sched)); +long kdb_verify_master_key __P((C_Block master_key, + Key_schedule master_key_sched, FILE *out)); +void kdb_encrypt_key __P((C_Block in, C_Block out, C_Block master_key, + Key_schedule master_key_sched, int e_d_flag)); extern int krb_ap_req_debug; extern int krb_debug; diff --git a/eBones/include/krb_db.h b/eBones/include/krb_db.h index f7e6d57..d6d125a 100644 --- a/eBones/include/krb_db.h +++ b/eBones/include/krb_db.h @@ -11,7 +11,7 @@ * They MUST correspond to those defined in *.rel * * from: krb_db.h,v 4.9 89/01/24 17:55:39 jon Exp $ - * $Id: krb_db.h,v 1.3 1995/07/18 16:36:38 mark Exp $ + * $Id: krb_db.h,v 1.4 1995/08/25 21:25:12 mark Exp $ */ #ifndef KRB_DB_DEFS |