|
|
1.1 ! root 1: /* ! 2: * $Source: /mit/kerberos/src/lib/des/RCS/weak_key.c,v $ ! 3: * $Author: jtkohl $ ! 4: * ! 5: * Copyright 1989 by the Massachusetts Institute of Technology. ! 6: * ! 7: * For copying and distribution information, please see the file ! 8: * <mit-copyright.h>. ! 9: * ! 10: * Under U.S. law, this software may not be exported outside the US ! 11: * without license from the U.S. Commerce department. ! 12: * ! 13: * These routines form the library interface to the DES facilities. ! 14: * ! 15: * Originally written 8/85 by Steve Miller, MIT Project Athena. ! 16: */ ! 17: ! 18: #ifndef lint ! 19: static char rcsid_weak_key_c[] = ! 20: "$Header: weak_key.c,v 4.3 89/01/22 12:16:41 jtkohl Exp $"; ! 21: #endif lint ! 22: ! 23: #include <des.h> ! 24: #include "des_internal.h" ! 25: ! 26: /* ! 27: * The following are the weak DES keys: ! 28: */ ! 29: static des_cblock weak[16] = { ! 30: /* weak keys */ ! 31: {0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01}, ! 32: {0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe}, ! 33: {0x1f,0x1f,0x1f,0x1f,0x0e,0x0e,0x0e,0x0e}, ! 34: {0xe0,0xe0,0xe0,0xe0,0xf1,0xf1,0xf1,0xf1}, ! 35: ! 36: /* semi-weak */ ! 37: {0x01,0xfe,0x01,0xfe,0x01,0xfe,0x01,0xfe}, ! 38: {0xfe,0x01,0xfe,0x01,0xfe,0x01,0xfe,0x01}, ! 39: ! 40: {0x1f,0xe0,0x1f,0xe0,0x0e,0xf1,0x0e,0xf1}, ! 41: {0xe0,0x1f,0xe0,0x1f,0xf1,0x0e,0xf1,0x0e}, ! 42: ! 43: {0x01,0xe0,0x01,0xe0,0x01,0xf1,0x01,0xf1}, ! 44: {0xe0,0x01,0xe0,0x01,0xf1,0x01,0xf1,0x01}, ! 45: ! 46: {0x1f,0xfe,0x1f,0xfe,0x0e,0xfe,0x0e,0xfe}, ! 47: {0xfe,0x1f,0xfe,0x1f,0xfe,0x0e,0xfe,0x0e}, ! 48: ! 49: {0x01,0x1f,0x01,0x1f,0x01,0x0e,0x01,0x0e}, ! 50: {0x1f,0x01,0x1f,0x01,0x0e,0x01,0x0e,0x01}, ! 51: ! 52: {0xe0,0xfe,0xe0,0xfe,0xf1,0xfe,0xf1,0xfe}, ! 53: {0xfe,0xe0,0xfe,0xe0,0xfe,0xf1,0xfe,0xf1} ! 54: }; ! 55: ! 56: /* ! 57: * des_is_weak_key: returns true iff key is a [semi-]weak des key. ! 58: * ! 59: * Requires: key has correct odd parity. ! 60: */ ! 61: int ! 62: des_is_weak_key(key) ! 63: des_cblock key; ! 64: { ! 65: int i; ! 66: des_cblock *weak_p = weak; ! 67: ! 68: for (i = 0; i < (sizeof(weak)/sizeof(des_cblock)); i++) { ! 69: if (!bcmp((char *)weak_p++,(char *)key,sizeof(des_cblock))) ! 70: return 1; ! 71: } ! 72: ! 73: return 0; ! 74: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.