keyserv: Use C89 function definitions.
Also use more accurate function pointer types, and trim some duplicate (but incomplete) function prototypes. Reviewed by: zlei Differential Revision: https://reviews.freebsd.org/D39533
This commit is contained in:
parent
69b5038738
commit
35a624c549
@ -143,10 +143,7 @@ static void swap_byte(unsigned char *a, unsigned char *b)
|
||||
}
|
||||
|
||||
/* Dummy _des_crypt function that uses ARCFOUR with a 40 bit key */
|
||||
int _arcfour_crypt(buf, len, desp)
|
||||
char *buf;
|
||||
int len;
|
||||
struct desparams *desp;
|
||||
int _arcfour_crypt(char *buf, int len, struct desparams *desp)
|
||||
{
|
||||
struct arcfour_key arcfourk;
|
||||
|
||||
@ -174,9 +171,7 @@ static void *dlhandle;
|
||||
#define LIBCRYPTO "libcrypto.so.2"
|
||||
#endif
|
||||
|
||||
void load_des(warn, libpath)
|
||||
int warn;
|
||||
char *libpath;
|
||||
void load_des(int warn, char *libpath)
|
||||
{
|
||||
char dlpath[MAXPATHLEN];
|
||||
|
||||
|
@ -83,9 +83,8 @@ static int debugging = 1;
|
||||
static int debugging = 0;
|
||||
#endif
|
||||
|
||||
static void keyprogram();
|
||||
static void keyprogram(struct svc_req *rqstp, SVCXPRT *transp);
|
||||
static des_block masterkey;
|
||||
char *getenv();
|
||||
static char ROOTKEY[] = "/etc/.rootkey";
|
||||
|
||||
/*
|
||||
@ -107,9 +106,7 @@ cryptkeyres *key_decrypt_pk_2_svc_prog( uid_t, cryptkeyarg2 * );
|
||||
des_block *key_gen_1_svc_prog( void *, struct svc_req * );
|
||||
|
||||
int
|
||||
main(argc, argv)
|
||||
int argc;
|
||||
char *argv[];
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
int nflag = 0;
|
||||
int c;
|
||||
@ -221,8 +218,7 @@ main(argc, argv)
|
||||
* randomize the master key the best we can
|
||||
*/
|
||||
static void
|
||||
randomize(master)
|
||||
des_block *master;
|
||||
randomize(des_block *master)
|
||||
{
|
||||
master->key.low = arc4random();
|
||||
master->key.high = arc4random();
|
||||
@ -234,9 +230,7 @@ randomize(master)
|
||||
* Returns 1 on success.
|
||||
*/
|
||||
static int
|
||||
getrootkey(master, prompt)
|
||||
des_block *master;
|
||||
int prompt;
|
||||
getrootkey(des_block *master, int prompt)
|
||||
{
|
||||
char *passwd;
|
||||
char name[MAXNETNAMELEN + 1];
|
||||
@ -306,8 +300,7 @@ getrootkey(master, prompt)
|
||||
* Procedures to implement RPC service
|
||||
*/
|
||||
char *
|
||||
strstatus(status)
|
||||
keystatus status;
|
||||
strstatus(keystatus status)
|
||||
{
|
||||
switch (status) {
|
||||
case KEY_SUCCESS:
|
||||
@ -324,9 +317,7 @@ strstatus(status)
|
||||
}
|
||||
|
||||
keystatus *
|
||||
key_set_1_svc_prog(uid, key)
|
||||
uid_t uid;
|
||||
keybuf key;
|
||||
key_set_1_svc_prog(uid_t uid, keybuf key)
|
||||
{
|
||||
static keystatus status;
|
||||
|
||||
@ -343,9 +334,7 @@ key_set_1_svc_prog(uid, key)
|
||||
}
|
||||
|
||||
cryptkeyres *
|
||||
key_encrypt_pk_2_svc_prog(uid, arg)
|
||||
uid_t uid;
|
||||
cryptkeyarg2 *arg;
|
||||
key_encrypt_pk_2_svc_prog(uid_t uid, cryptkeyarg2 *arg)
|
||||
{
|
||||
static cryptkeyres res;
|
||||
|
||||
@ -371,9 +360,7 @@ key_encrypt_pk_2_svc_prog(uid, arg)
|
||||
}
|
||||
|
||||
cryptkeyres *
|
||||
key_decrypt_pk_2_svc_prog(uid, arg)
|
||||
uid_t uid;
|
||||
cryptkeyarg2 *arg;
|
||||
key_decrypt_pk_2_svc_prog(uid_t uid, cryptkeyarg2 *arg)
|
||||
{
|
||||
static cryptkeyres res;
|
||||
|
||||
@ -399,9 +386,7 @@ key_decrypt_pk_2_svc_prog(uid, arg)
|
||||
}
|
||||
|
||||
keystatus *
|
||||
key_net_put_2_svc_prog(uid, arg)
|
||||
uid_t uid;
|
||||
key_netstarg *arg;
|
||||
key_net_put_2_svc_prog(uid_t uid, key_netstarg *arg)
|
||||
{
|
||||
static keystatus status;
|
||||
|
||||
@ -423,9 +408,7 @@ key_net_put_2_svc_prog(uid, arg)
|
||||
}
|
||||
|
||||
key_netstres *
|
||||
key_net_get_2_svc_prog(uid, arg)
|
||||
uid_t uid;
|
||||
void *arg;
|
||||
key_net_get_2_svc_prog(uid_t uid, void *arg)
|
||||
{
|
||||
static key_netstres keynetname;
|
||||
|
||||
@ -452,9 +435,7 @@ key_net_get_2_svc_prog(uid, arg)
|
||||
}
|
||||
|
||||
cryptkeyres *
|
||||
key_get_conv_2_svc_prog(uid, arg)
|
||||
uid_t uid;
|
||||
keybuf arg;
|
||||
key_get_conv_2_svc_prog(uid_t uid, keybuf arg)
|
||||
{
|
||||
static cryptkeyres res;
|
||||
|
||||
@ -480,9 +461,7 @@ key_get_conv_2_svc_prog(uid, arg)
|
||||
|
||||
|
||||
cryptkeyres *
|
||||
key_encrypt_1_svc_prog(uid, arg)
|
||||
uid_t uid;
|
||||
cryptkeyarg *arg;
|
||||
key_encrypt_1_svc_prog(uid_t uid, cryptkeyarg *arg)
|
||||
{
|
||||
static cryptkeyres res;
|
||||
|
||||
@ -508,9 +487,7 @@ key_encrypt_1_svc_prog(uid, arg)
|
||||
}
|
||||
|
||||
cryptkeyres *
|
||||
key_decrypt_1_svc_prog(uid, arg)
|
||||
uid_t uid;
|
||||
cryptkeyarg *arg;
|
||||
key_decrypt_1_svc_prog(uid_t uid, cryptkeyarg *arg)
|
||||
{
|
||||
static cryptkeyres res;
|
||||
|
||||
@ -537,9 +514,7 @@ key_decrypt_1_svc_prog(uid, arg)
|
||||
|
||||
/* ARGSUSED */
|
||||
des_block *
|
||||
key_gen_1_svc_prog(v, s)
|
||||
void *v;
|
||||
struct svc_req *s;
|
||||
key_gen_1_svc_prog(void *v, struct svc_req *s)
|
||||
{
|
||||
struct timeval time;
|
||||
static des_block keygen;
|
||||
@ -561,9 +536,7 @@ key_gen_1_svc_prog(v, s)
|
||||
}
|
||||
|
||||
getcredres *
|
||||
key_getcred_1_svc_prog(uid, name)
|
||||
uid_t uid;
|
||||
netnamestr *name;
|
||||
key_getcred_1_svc_prog(uid_t uid, netnamestr *name)
|
||||
{
|
||||
static getcredres res;
|
||||
static u_int gids[NGROUPS];
|
||||
@ -594,9 +567,7 @@ key_getcred_1_svc_prog(uid, name)
|
||||
* RPC boilerplate
|
||||
*/
|
||||
static void
|
||||
keyprogram(rqstp, transp)
|
||||
struct svc_req *rqstp;
|
||||
SVCXPRT *transp;
|
||||
keyprogram(struct svc_req *rqstp, SVCXPRT *transp)
|
||||
{
|
||||
union {
|
||||
keybuf key_set_1_arg;
|
||||
@ -613,7 +584,8 @@ keyprogram(rqstp, transp)
|
||||
} argument;
|
||||
char *result;
|
||||
xdrproc_t xdr_argument, xdr_result;
|
||||
char *(*local) ();
|
||||
typedef void *(svc_cb)(uid_t uid, void *arg);
|
||||
svc_cb *local;
|
||||
uid_t uid = -1;
|
||||
int check_auth;
|
||||
|
||||
@ -625,49 +597,49 @@ keyprogram(rqstp, transp)
|
||||
case KEY_SET:
|
||||
xdr_argument = (xdrproc_t)xdr_keybuf;
|
||||
xdr_result = (xdrproc_t)xdr_int;
|
||||
local = (char *(*)()) key_set_1_svc_prog;
|
||||
local = (svc_cb *)key_set_1_svc_prog;
|
||||
check_auth = 1;
|
||||
break;
|
||||
|
||||
case KEY_ENCRYPT:
|
||||
xdr_argument = (xdrproc_t)xdr_cryptkeyarg;
|
||||
xdr_result = (xdrproc_t)xdr_cryptkeyres;
|
||||
local = (char *(*)()) key_encrypt_1_svc_prog;
|
||||
local = (svc_cb *)key_encrypt_1_svc_prog;
|
||||
check_auth = 1;
|
||||
break;
|
||||
|
||||
case KEY_DECRYPT:
|
||||
xdr_argument = (xdrproc_t)xdr_cryptkeyarg;
|
||||
xdr_result = (xdrproc_t)xdr_cryptkeyres;
|
||||
local = (char *(*)()) key_decrypt_1_svc_prog;
|
||||
local = (svc_cb *)key_decrypt_1_svc_prog;
|
||||
check_auth = 1;
|
||||
break;
|
||||
|
||||
case KEY_GEN:
|
||||
xdr_argument = (xdrproc_t)xdr_void;
|
||||
xdr_result = (xdrproc_t)xdr_des_block;
|
||||
local = (char *(*)()) key_gen_1_svc_prog;
|
||||
local = (svc_cb *)key_gen_1_svc_prog;
|
||||
check_auth = 0;
|
||||
break;
|
||||
|
||||
case KEY_GETCRED:
|
||||
xdr_argument = (xdrproc_t)xdr_netnamestr;
|
||||
xdr_result = (xdrproc_t)xdr_getcredres;
|
||||
local = (char *(*)()) key_getcred_1_svc_prog;
|
||||
local = (svc_cb *)key_getcred_1_svc_prog;
|
||||
check_auth = 0;
|
||||
break;
|
||||
|
||||
case KEY_ENCRYPT_PK:
|
||||
xdr_argument = (xdrproc_t)xdr_cryptkeyarg2;
|
||||
xdr_result = (xdrproc_t)xdr_cryptkeyres;
|
||||
local = (char *(*)()) key_encrypt_pk_2_svc_prog;
|
||||
local = (svc_cb *)key_encrypt_pk_2_svc_prog;
|
||||
check_auth = 1;
|
||||
break;
|
||||
|
||||
case KEY_DECRYPT_PK:
|
||||
xdr_argument = (xdrproc_t)xdr_cryptkeyarg2;
|
||||
xdr_result = (xdrproc_t)xdr_cryptkeyres;
|
||||
local = (char *(*)()) key_decrypt_pk_2_svc_prog;
|
||||
local = (svc_cb *)key_decrypt_pk_2_svc_prog;
|
||||
check_auth = 1;
|
||||
break;
|
||||
|
||||
@ -675,21 +647,21 @@ keyprogram(rqstp, transp)
|
||||
case KEY_NET_PUT:
|
||||
xdr_argument = (xdrproc_t)xdr_key_netstarg;
|
||||
xdr_result = (xdrproc_t)xdr_keystatus;
|
||||
local = (char *(*)()) key_net_put_2_svc_prog;
|
||||
local = (svc_cb *)key_net_put_2_svc_prog;
|
||||
check_auth = 1;
|
||||
break;
|
||||
|
||||
case KEY_NET_GET:
|
||||
xdr_argument = (xdrproc_t) xdr_void;
|
||||
xdr_result = (xdrproc_t)xdr_key_netstres;
|
||||
local = (char *(*)()) key_net_get_2_svc_prog;
|
||||
local = (svc_cb *)key_net_get_2_svc_prog;
|
||||
check_auth = 1;
|
||||
break;
|
||||
|
||||
case KEY_GET_CONV:
|
||||
xdr_argument = (xdrproc_t) xdr_keybuf;
|
||||
xdr_result = (xdrproc_t)xdr_cryptkeyres;
|
||||
local = (char *(*)()) key_get_conv_2_svc_prog;
|
||||
local = (svc_cb *)key_get_conv_2_svc_prog;
|
||||
check_auth = 1;
|
||||
break;
|
||||
|
||||
@ -738,9 +710,7 @@ keyprogram(rqstp, transp)
|
||||
}
|
||||
|
||||
static int
|
||||
root_auth(trans, rqstp)
|
||||
SVCXPRT *trans;
|
||||
struct svc_req *rqstp;
|
||||
root_auth(SVCXPRT *trans, struct svc_req *rqstp)
|
||||
{
|
||||
uid_t uid;
|
||||
struct sockaddr *remote;
|
||||
@ -782,7 +752,7 @@ root_auth(trans, rqstp)
|
||||
}
|
||||
|
||||
static void
|
||||
usage()
|
||||
usage(void)
|
||||
{
|
||||
(void) fprintf(stderr,
|
||||
"usage: keyserv [-n] [-D] [-d] [-v] [-p path]\n");
|
||||
|
@ -72,7 +72,7 @@ static int nodefaultkeys = 0;
|
||||
* prohibit the nobody key on this machine k (the -d flag)
|
||||
*/
|
||||
void
|
||||
pk_nodefaultkeys()
|
||||
pk_nodefaultkeys(void)
|
||||
{
|
||||
nodefaultkeys = 1;
|
||||
}
|
||||
@ -81,8 +81,7 @@ pk_nodefaultkeys()
|
||||
* Set the modulus for all our Diffie-Hellman operations
|
||||
*/
|
||||
void
|
||||
setmodulus(modx)
|
||||
char *modx;
|
||||
setmodulus(char *modx)
|
||||
{
|
||||
MODULUS = mp_xtom(modx);
|
||||
}
|
||||
@ -91,9 +90,7 @@ setmodulus(modx)
|
||||
* Set the secretkey key for this uid
|
||||
*/
|
||||
keystatus
|
||||
pk_setkey(uid, skey)
|
||||
uid_t uid;
|
||||
keybuf skey;
|
||||
pk_setkey(uid_t uid, keybuf skey)
|
||||
{
|
||||
if (!storesecretkey(uid, skey)) {
|
||||
return (KEY_SYSTEMERR);
|
||||
@ -106,11 +103,7 @@ pk_setkey(uid, skey)
|
||||
* secret key associated with uid.
|
||||
*/
|
||||
keystatus
|
||||
pk_encrypt(uid, remote_name, remote_key, key)
|
||||
uid_t uid;
|
||||
char *remote_name;
|
||||
netobj *remote_key;
|
||||
des_block *key;
|
||||
pk_encrypt(uid_t uid, char *remote_name, netobj *remote_key, des_block *key)
|
||||
{
|
||||
return (pk_crypt(uid, remote_name, remote_key, key, DES_ENCRYPT));
|
||||
}
|
||||
@ -120,11 +113,7 @@ pk_encrypt(uid, remote_name, remote_key, key)
|
||||
* secret key associated with uid.
|
||||
*/
|
||||
keystatus
|
||||
pk_decrypt(uid, remote_name, remote_key, key)
|
||||
uid_t uid;
|
||||
char *remote_name;
|
||||
netobj *remote_key;
|
||||
des_block *key;
|
||||
pk_decrypt(uid_t uid, char *remote_name, netobj *remote_key, des_block *key)
|
||||
{
|
||||
return (pk_crypt(uid, remote_name, remote_key, key, DES_DECRYPT));
|
||||
}
|
||||
@ -133,9 +122,7 @@ static int store_netname( uid_t, key_netstarg * );
|
||||
static int fetch_netname( uid_t, key_netstarg * );
|
||||
|
||||
keystatus
|
||||
pk_netput(uid, netstore)
|
||||
uid_t uid;
|
||||
key_netstarg *netstore;
|
||||
pk_netput(uid_t uid, key_netstarg *netstore)
|
||||
{
|
||||
if (!store_netname(uid, netstore)) {
|
||||
return (KEY_SYSTEMERR);
|
||||
@ -144,9 +131,7 @@ pk_netput(uid, netstore)
|
||||
}
|
||||
|
||||
keystatus
|
||||
pk_netget(uid, netstore)
|
||||
uid_t uid;
|
||||
key_netstarg *netstore;
|
||||
pk_netget(uid_t uid, key_netstarg *netstore)
|
||||
{
|
||||
if (!fetch_netname(uid, netstore)) {
|
||||
return (KEY_SYSTEMERR);
|
||||
@ -159,12 +144,8 @@ pk_netget(uid, netstore)
|
||||
* Do the work of pk_encrypt && pk_decrypt
|
||||
*/
|
||||
static keystatus
|
||||
pk_crypt(uid, remote_name, remote_key, key, mode)
|
||||
uid_t uid;
|
||||
char *remote_name;
|
||||
netobj *remote_key;
|
||||
des_block *key;
|
||||
int mode;
|
||||
pk_crypt(uid_t uid, char *remote_name, netobj *remote_key, des_block *key,
|
||||
int mode)
|
||||
{
|
||||
char *xsecret;
|
||||
char xpublic[1024];
|
||||
@ -221,10 +202,7 @@ pk_crypt(uid, remote_name, remote_key, key, mode)
|
||||
}
|
||||
|
||||
keystatus
|
||||
pk_get_conv_key(uid, xpublic, result)
|
||||
uid_t uid;
|
||||
keybuf xpublic;
|
||||
cryptkeyres *result;
|
||||
pk_get_conv_key(uid_t uid, keybuf xpublic, cryptkeyres *result)
|
||||
{
|
||||
char *xsecret;
|
||||
char xsecret_hold[1024];
|
||||
@ -271,9 +249,7 @@ pk_get_conv_key(uid, xpublic, result)
|
||||
* overwriting the lower order bits by setting parity.
|
||||
*/
|
||||
static void
|
||||
extractdeskey(ck, deskey)
|
||||
MINT *ck;
|
||||
des_block *deskey;
|
||||
extractdeskey(MINT *ck, des_block *deskey)
|
||||
{
|
||||
MINT *a;
|
||||
short r;
|
||||
@ -320,9 +296,7 @@ static struct secretkey_netname_list *g_secretkey_netname;
|
||||
* Store the keys and netname for this uid
|
||||
*/
|
||||
static int
|
||||
store_netname(uid, netstore)
|
||||
uid_t uid;
|
||||
key_netstarg *netstore;
|
||||
store_netname(uid_t uid, key_netstarg *netstore)
|
||||
{
|
||||
struct secretkey_netname_list *new;
|
||||
struct secretkey_netname_list **l;
|
||||
@ -361,9 +335,7 @@ store_netname(uid, netstore)
|
||||
*/
|
||||
|
||||
static int
|
||||
fetch_netname(uid, key_netst)
|
||||
uid_t uid;
|
||||
struct key_netstarg *key_netst;
|
||||
fetch_netname(uid_t uid, struct key_netstarg *key_netst)
|
||||
{
|
||||
struct secretkey_netname_list *l;
|
||||
|
||||
@ -389,8 +361,7 @@ fetch_netname(uid, key_netst)
|
||||
}
|
||||
|
||||
static char *
|
||||
fetchsecretkey(uid)
|
||||
uid_t uid;
|
||||
fetchsecretkey(uid_t uid)
|
||||
{
|
||||
struct secretkey_netname_list *l;
|
||||
|
||||
@ -406,9 +377,7 @@ fetchsecretkey(uid)
|
||||
* Store the secretkey for this uid
|
||||
*/
|
||||
static int
|
||||
storesecretkey(uid, key)
|
||||
uid_t uid;
|
||||
keybuf key;
|
||||
storesecretkey(uid_t uid, keybuf key)
|
||||
{
|
||||
struct secretkey_netname_list *new;
|
||||
struct secretkey_netname_list **l;
|
||||
@ -437,17 +406,13 @@ storesecretkey(uid, key)
|
||||
}
|
||||
|
||||
static int
|
||||
hexdigit(val)
|
||||
int val;
|
||||
hexdigit(int val)
|
||||
{
|
||||
return ("0123456789abcdef"[val]);
|
||||
}
|
||||
|
||||
void
|
||||
bin2hex(bin, hex, size)
|
||||
unsigned char *bin;
|
||||
unsigned char *hex;
|
||||
int size;
|
||||
bin2hex(unsigned char *bin, unsigned char *hex, int size)
|
||||
{
|
||||
int i;
|
||||
|
||||
@ -458,8 +423,7 @@ bin2hex(bin, hex, size)
|
||||
}
|
||||
|
||||
static int
|
||||
hexval(dig)
|
||||
char dig;
|
||||
hexval(char dig)
|
||||
{
|
||||
if ('0' <= dig && dig <= '9') {
|
||||
return (dig - '0');
|
||||
@ -473,10 +437,7 @@ hexval(dig)
|
||||
}
|
||||
|
||||
void
|
||||
hex2bin(hex, bin, size)
|
||||
unsigned char *hex;
|
||||
unsigned char *bin;
|
||||
int size;
|
||||
hex2bin(unsigned char *hex, unsigned char *bin, int size)
|
||||
{
|
||||
int i;
|
||||
|
||||
@ -501,10 +462,7 @@ static struct cachekey_list *g_cachedkeys;
|
||||
* cache result of expensive multiple precision exponential operation
|
||||
*/
|
||||
static void
|
||||
writecache(pub, sec, deskey)
|
||||
char *pub;
|
||||
char *sec;
|
||||
des_block *deskey;
|
||||
writecache(char *pub, char *sec, des_block *deskey)
|
||||
{
|
||||
struct cachekey_list *new;
|
||||
|
||||
@ -523,10 +481,7 @@ writecache(pub, sec, deskey)
|
||||
* Try to find the common key in the cache
|
||||
*/
|
||||
static int
|
||||
readcache(pub, sec, deskey)
|
||||
char *pub;
|
||||
char *sec;
|
||||
des_block *deskey;
|
||||
readcache(char *pub, char *sec, des_block *deskey)
|
||||
{
|
||||
struct cachekey_list *found;
|
||||
register struct cachekey_list **l;
|
||||
|
Loading…
Reference in New Issue
Block a user