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