diff options
author | Steve Dickson <steved@redhat.com> | 2007-04-20 14:56:09 -0400 |
---|---|---|
committer | Steve Dickson <steved@redhat.com> | 2007-04-20 14:56:09 -0400 |
commit | ee5471e0e4bcfab5b4da3faf46c96e5dbb49da47 (patch) | |
tree | 704fe6cab3d309429a2b39b1d35684ac953d943a /tirpc/rpcsvc | |
download | ti-rpc-ee5471e0e4bcfab5b4da3faf46c96e5dbb49da47.tar.gz |
Initial commit of libtirpc 0.1.7
Signed-off-by: Steve Dickson <steved@redhat.com>
Diffstat (limited to 'tirpc/rpcsvc')
-rw-r--r-- | tirpc/rpcsvc/Makefile | 28 | ||||
-rw-r--r-- | tirpc/rpcsvc/crypt.h | 109 | ||||
-rw-r--r-- | tirpc/rpcsvc/crypt.x | 87 |
3 files changed, 224 insertions, 0 deletions
diff --git a/tirpc/rpcsvc/Makefile b/tirpc/rpcsvc/Makefile new file mode 100644 index 0000000..0870615 --- /dev/null +++ b/tirpc/rpcsvc/Makefile @@ -0,0 +1,28 @@ +# from: @(#)Makefile 2.3 88/08/11 4.0 RPCSRC +# $FreeBSD: src/include/rpc/Makefile,v 1.2 2002/05/12 16:00:48 ru Exp $ + +#.SUFFIXES: .x + +#RPCCOM = rpcgen -C + +all:: crypt.h + @: + +RPCHDRS= crypt.h + +XFILES= crypt.x + +#CLEANFILES+= ${HDRS} + +#INCS= ${HFILES} ${XFILES} ${HDRS} +#INCSDIR=${INCLUDEDIR}/tirpc + +#.x.h: +# ${RPCCOM} -h -DWANT_NFS3 ${.IMPSRC} -o ${.TARGET} + +include $(TOP)rules.mk + +$(RPCHDRS): crypt.x + $(RM) $(RPCHDRS) + $(RPCGEN) -h -o crypt.h $< + diff --git a/tirpc/rpcsvc/crypt.h b/tirpc/rpcsvc/crypt.h new file mode 100644 index 0000000..da1f9cc --- /dev/null +++ b/tirpc/rpcsvc/crypt.h @@ -0,0 +1,109 @@ +/* + * Please do not edit this file. + * It was generated using rpcgen. + */ + +#ifndef _CRYPT_H_RPCGEN +#define _CRYPT_H_RPCGEN + +#include <rpc/rpc.h> + +#ifndef IXDR_GET_INT32 +#define IXDR_GET_INT32(buf) IXDR_GET_LONG((buf)) +#endif +#ifndef IXDR_PUT_INT32 +#define IXDR_PUT_INT32(buf, v) IXDR_PUT_LONG((buf), (v)) +#endif +#ifndef IXDR_GET_U_INT32 +#define IXDR_GET_U_INT32(buf) IXDR_GET_U_LONG((buf)) +#endif +#ifndef IXDR_PUT_U_INT32 +#define IXDR_PUT_U_INT32(buf, v) IXDR_PUT_U_LONG((buf), (v)) +#endif + +enum des_dir { + ENCRYPT_DES = 0, + DECRYPT_DES = 1, +}; +typedef enum des_dir des_dir; +#ifdef __cplusplus +extern "C" bool_t xdr_des_dir(XDR *, des_dir*); +#elif __STDC__ +extern bool_t xdr_des_dir(XDR *, des_dir*); +#else /* Old Style C */ +bool_t xdr_des_dir(); +#endif /* Old Style C */ + + +enum des_mode { + CBC_DES = 0, + ECB_DES = 1, +}; +typedef enum des_mode des_mode; +#ifdef __cplusplus +extern "C" bool_t xdr_des_mode(XDR *, des_mode*); +#elif __STDC__ +extern bool_t xdr_des_mode(XDR *, des_mode*); +#else /* Old Style C */ +bool_t xdr_des_mode(); +#endif /* Old Style C */ + + +struct desargs { + u_char des_key[8]; + des_dir des_dir; + des_mode des_mode; + u_char des_ivec[8]; + struct { + u_int desbuf_len; + char *desbuf_val; + } desbuf; +}; +typedef struct desargs desargs; +#ifdef __cplusplus +extern "C" bool_t xdr_desargs(XDR *, desargs*); +#elif __STDC__ +extern bool_t xdr_desargs(XDR *, desargs*); +#else /* Old Style C */ +bool_t xdr_desargs(); +#endif /* Old Style C */ + + +struct desresp { + struct { + u_int desbuf_len; + char *desbuf_val; + } desbuf; + u_char des_ivec[8]; + int stat; +}; +typedef struct desresp desresp; +#ifdef __cplusplus +extern "C" bool_t xdr_desresp(XDR *, desresp*); +#elif __STDC__ +extern bool_t xdr_desresp(XDR *, desresp*); +#else /* Old Style C */ +bool_t xdr_desresp(); +#endif /* Old Style C */ + + +#define CRYPT_PROG ((u_int32_t)600100029) +#define CRYPT_VERS ((u_int32_t)1) + +#ifdef __cplusplus +#define DES_CRYPT ((u_int32_t)1) +extern "C" desresp * des_crypt_1(desargs *, CLIENT *); +extern "C" desresp * des_crypt_1_svc(desargs *, struct svc_req *); + +#elif __STDC__ +#define DES_CRYPT ((u_int32_t)1) +extern desresp * des_crypt_1(desargs *, CLIENT *); +extern desresp * des_crypt_1_svc(desargs *, struct svc_req *); + +#else /* Old Style C */ +#define DES_CRYPT ((u_int32_t)1) +extern desresp * des_crypt_1(); +extern desresp * des_crypt_1_svc(); +#endif /* Old Style C */ + +#endif /* !_CRYPT_H_RPCGEN */ diff --git a/tirpc/rpcsvc/crypt.x b/tirpc/rpcsvc/crypt.x new file mode 100644 index 0000000..b50cf8d --- /dev/null +++ b/tirpc/rpcsvc/crypt.x @@ -0,0 +1,87 @@ +/* + * Copyright (c) 1996 + * Bill Paul <wpaul@ctr.columbia.edu>. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by Bill Paul. + * 4. Neither the name of the author nor the names of any co-contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL Bill Paul OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef RPC_HDR +%#include <sys/cdefs.h> +%__FBSDID("$FreeBSD: src/include/rpcsvc/crypt.x,v 1.5 2003/05/04 02:51:42 obrien Exp $"); +#endif + +/* + * This protocol definition exists because of the U.S. government and + * its stupid export laws. We can't export DES code from the United + * States to other countries (even though the code already exists + * outside the U.S. -- go figure that one out) but we need to make + * Secure RPC work. The normal way around this is to break the DES + * code out into a shared library; we can then provide a dummy lib + * in the base OS and provide the real lib in the secure dist, which + * the user can install later. But we need Secure RPC for NIS+, and + * there are several system programs that use NIS+ which are statically + * linked. We would have to provide replacements for these programs + * in the secure dist, but there are a lot, and this is a pain. The + * shared lib trick won't work for these programs, and we can't change + * them once they're compiled. + * + * One solution for this problem is to do the DES encryption as a system + * call; no programs need to be changed and we can even supply the DES + * support as an LKM. But this bloats the kernel. Maybe if we have + * Secure NFS one day this will be worth it, but for now we should keep + * this mess in user space. + * + * So we have this second solution: we provide a server that does the + * DES encryption for us. In this case, the server is keyserv (we need + * it to make Secure RPC work anyway) and we use this protocol to ship + * the data back and forth between keyserv and the application. + */ + +enum des_dir { ENCRYPT_DES, DECRYPT_DES }; +enum des_mode { CBC_DES, ECB_DES }; + +struct desargs { + u_char des_key[8]; /* key (with low bit parity) */ + des_dir des_dir; /* direction */ + des_mode des_mode; /* mode */ + u_char des_ivec[8]; /* input vector */ + opaque desbuf<>; +}; + +struct desresp { + opaque desbuf<>; + u_char des_ivec[8]; + int stat; +}; + +program CRYPT_PROG { + version CRYPT_VERS { + desresp + DES_CRYPT(desargs) = 1; + } = 1; +} = 600100029; |