Back to index

glibc  2.9
des_soft.c
Go to the documentation of this file.
00001 #if !defined(lint) && defined(SCCSIDS)
00002 static char sccsid[] = "@(#)des_soft.c    2.2 88/08/10 4.0 RPCSRC; from 1.13 88/02/08 SMI";
00003 #endif
00004 /*
00005  * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
00006  * unrestricted use provided that this legend is included on all tape
00007  * media and as a part of the software program in whole or part.  Users
00008  * may copy or modify Sun RPC without charge, but are not authorized
00009  * to license or distribute it to anyone else except as part of a product or
00010  * program developed by the user.
00011  *
00012  * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
00013  * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
00014  * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
00015  *
00016  * Sun RPC is provided with no support and without any obligation on the
00017  * part of Sun Microsystems, Inc. to assist in its use, correction,
00018  * modification or enhancement.
00019  *
00020  * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
00021  * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
00022  * OR ANY PART THEREOF.
00023  *
00024  * In no event will Sun Microsystems, Inc. be liable for any lost revenue
00025  * or profits or other special, indirect and consequential damages, even if
00026  * Sun has been advised of the possibility of such damages.
00027  *
00028  * Sun Microsystems, Inc.
00029  * 2550 Garcia Avenue
00030  * Mountain View, California  94043
00031  */
00032 
00033 #include <rpc/des_crypt.h>
00034 /*
00035  * Table giving odd parity in the low bit for ASCII characters
00036  */
00037 static const char partab[128] =
00038 {
00039   0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x07, 0x07,
00040   0x08, 0x08, 0x0b, 0x0b, 0x0d, 0x0d, 0x0e, 0x0e,
00041   0x10, 0x10, 0x13, 0x13, 0x15, 0x15, 0x16, 0x16,
00042   0x19, 0x19, 0x1a, 0x1a, 0x1c, 0x1c, 0x1f, 0x1f,
00043   0x20, 0x20, 0x23, 0x23, 0x25, 0x25, 0x26, 0x26,
00044   0x29, 0x29, 0x2a, 0x2a, 0x2c, 0x2c, 0x2f, 0x2f,
00045   0x31, 0x31, 0x32, 0x32, 0x34, 0x34, 0x37, 0x37,
00046   0x38, 0x38, 0x3b, 0x3b, 0x3d, 0x3d, 0x3e, 0x3e,
00047   0x40, 0x40, 0x43, 0x43, 0x45, 0x45, 0x46, 0x46,
00048   0x49, 0x49, 0x4a, 0x4a, 0x4c, 0x4c, 0x4f, 0x4f,
00049   0x51, 0x51, 0x52, 0x52, 0x54, 0x54, 0x57, 0x57,
00050   0x58, 0x58, 0x5b, 0x5b, 0x5d, 0x5d, 0x5e, 0x5e,
00051   0x61, 0x61, 0x62, 0x62, 0x64, 0x64, 0x67, 0x67,
00052   0x68, 0x68, 0x6b, 0x6b, 0x6d, 0x6d, 0x6e, 0x6e,
00053   0x70, 0x70, 0x73, 0x73, 0x75, 0x75, 0x76, 0x76,
00054   0x79, 0x79, 0x7a, 0x7a, 0x7c, 0x7c, 0x7f, 0x7f,
00055 };
00056 
00057 /*
00058  * Add odd parity to low bit of 8 byte key
00059  */
00060 void
00061 des_setparity (char *p)
00062 {
00063   int i;
00064 
00065   for (i = 0; i < 8; i++)
00066     {
00067       *p = partab[*p & 0x7f];
00068       p++;
00069     }
00070 }
00071 libc_hidden_def (des_setparity)