des_soft.c revision 136581
126219Swpaul/*
226219Swpaul * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
326219Swpaul * unrestricted use provided that this legend is included on all tape
426219Swpaul * media and as a part of the software program in whole or part.  Users
526219Swpaul * may copy or modify Sun RPC without charge, but are not authorized
626219Swpaul * to license or distribute it to anyone else except as part of a product or
726219Swpaul * program developed by the user.
826219Swpaul *
926219Swpaul * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
1026219Swpaul * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
1126219Swpaul * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
1226219Swpaul *
1326219Swpaul * Sun RPC is provided with no support and without any obligation on the
1426219Swpaul * part of Sun Microsystems, Inc. to assist in its use, correction,
1526219Swpaul * modification or enhancement.
1626219Swpaul *
1726219Swpaul * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
1826219Swpaul * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
1926219Swpaul * OR ANY PART THEREOF.
2026219Swpaul *
2126219Swpaul * In no event will Sun Microsystems, Inc. be liable for any lost revenue
2226219Swpaul * or profits or other special, indirect and consequential damages, even if
2326219Swpaul * Sun has been advised of the possibility of such damages.
2426219Swpaul *
2526219Swpaul * Sun Microsystems, Inc.
2626219Swpaul * 2550 Garcia Avenue
2726219Swpaul * Mountain View, California  94043
2826219Swpaul */
29136581Sobrien
30136581Sobrien#if defined(LIBC_SCCS) && !defined(lint)
31136581Sobrienstatic char sccsid[] = "@(#)des_soft.c	2.2 88/08/10 4.0 RPCSRC; from 1.13 88/02/08 SMI";
32136581Sobrien#endif
33136581Sobrien#include <sys/cdefs.h>
34136581Sobrien__FBSDID("$FreeBSD: head/lib/libc/rpc/des_soft.c 136581 2004-10-16 06:11:35Z obrien $");
35136581Sobrien
3626219Swpaul/*
3726219Swpaul * Table giving odd parity in the low bit for ASCII characters
3826219Swpaul */
3926219Swpaulstatic char partab[128] = {
4026219Swpaul	0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x07, 0x07,
4126219Swpaul	0x08, 0x08, 0x0b, 0x0b, 0x0d, 0x0d, 0x0e, 0x0e,
4226219Swpaul	0x10, 0x10, 0x13, 0x13, 0x15, 0x15, 0x16, 0x16,
4326219Swpaul	0x19, 0x19, 0x1a, 0x1a, 0x1c, 0x1c, 0x1f, 0x1f,
4426219Swpaul	0x20, 0x20, 0x23, 0x23, 0x25, 0x25, 0x26, 0x26,
4526219Swpaul	0x29, 0x29, 0x2a, 0x2a, 0x2c, 0x2c, 0x2f, 0x2f,
4626219Swpaul	0x31, 0x31, 0x32, 0x32, 0x34, 0x34, 0x37, 0x37,
4726219Swpaul	0x38, 0x38, 0x3b, 0x3b, 0x3d, 0x3d, 0x3e, 0x3e,
4826219Swpaul	0x40, 0x40, 0x43, 0x43, 0x45, 0x45, 0x46, 0x46,
4926219Swpaul	0x49, 0x49, 0x4a, 0x4a, 0x4c, 0x4c, 0x4f, 0x4f,
5026219Swpaul	0x51, 0x51, 0x52, 0x52, 0x54, 0x54, 0x57, 0x57,
5126219Swpaul	0x58, 0x58, 0x5b, 0x5b, 0x5d, 0x5d, 0x5e, 0x5e,
5226219Swpaul	0x61, 0x61, 0x62, 0x62, 0x64, 0x64, 0x67, 0x67,
5326219Swpaul	0x68, 0x68, 0x6b, 0x6b, 0x6d, 0x6d, 0x6e, 0x6e,
5426219Swpaul	0x70, 0x70, 0x73, 0x73, 0x75, 0x75, 0x76, 0x76,
5526219Swpaul	0x79, 0x79, 0x7a, 0x7a, 0x7c, 0x7c, 0x7f, 0x7f,
5626219Swpaul};
5726219Swpaul
5826219Swpaul/*
5926219Swpaul * Add odd parity to low bit of 8 byte key
6026219Swpaul */
6126219Swpaulvoid
6226219Swpauldes_setparity(p)
6326219Swpaul	char *p;
6426219Swpaul{
6526219Swpaul	int i;
6626219Swpaul
6726219Swpaul	for (i = 0; i < 8; i++) {
6826219Swpaul		*p = partab[*p & 0x7f];
6926219Swpaul		p++;
7026219Swpaul	}
7126219Swpaul}
72