BadVPN – Blame information for rev 1
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 1 | /* |
2 | * pppcrypt.c - PPP/DES linkage for MS-CHAP and EAP SRP-SHA1 |
||
3 | * |
||
4 | * Extracted from chap_ms.c by James Carlson. |
||
5 | * |
||
6 | * Copyright (c) 1995 Eric Rosenquist. All rights reserved. |
||
7 | * |
||
8 | * Redistribution and use in source and binary forms, with or without |
||
9 | * modification, are permitted provided that the following conditions |
||
10 | * are met: |
||
11 | * |
||
12 | * 1. Redistributions of source code must retain the above copyright |
||
13 | * notice, this list of conditions and the following disclaimer. |
||
14 | * |
||
15 | * 2. Redistributions in binary form must reproduce the above copyright |
||
16 | * notice, this list of conditions and the following disclaimer in |
||
17 | * the documentation and/or other materials provided with the |
||
18 | * distribution. |
||
19 | * |
||
20 | * 3. The name(s) of the authors of this software must not be used to |
||
21 | * endorse or promote products derived from this software without |
||
22 | * prior written permission. |
||
23 | * |
||
24 | * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO |
||
25 | * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY |
||
26 | * AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY |
||
27 | * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
||
28 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN |
||
29 | * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING |
||
30 | * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
||
31 | */ |
||
32 | |||
33 | #include "netif/ppp/ppp_opts.h" |
||
34 | #if PPP_SUPPORT && MSCHAP_SUPPORT /* don't build if not necessary */ |
||
35 | |||
36 | #include "netif/ppp/ppp_impl.h" |
||
37 | |||
38 | #include "netif/ppp/pppcrypt.h" |
||
39 | |||
40 | |||
41 | static u_char pppcrypt_get_7bits(u_char *input, int startBit) { |
||
42 | unsigned int word; |
||
43 | |||
44 | word = (unsigned)input[startBit / 8] << 8; |
||
45 | word |= (unsigned)input[startBit / 8 + 1]; |
||
46 | |||
47 | word >>= 15 - (startBit % 8 + 7); |
||
48 | |||
49 | return word & 0xFE; |
||
50 | } |
||
51 | |||
52 | /* IN 56 bit DES key missing parity bits |
||
53 | * OUT 64 bit DES key with parity bits added |
||
54 | */ |
||
55 | void pppcrypt_56_to_64_bit_key(u_char *key, u_char * des_key) { |
||
56 | des_key[0] = pppcrypt_get_7bits(key, 0); |
||
57 | des_key[1] = pppcrypt_get_7bits(key, 7); |
||
58 | des_key[2] = pppcrypt_get_7bits(key, 14); |
||
59 | des_key[3] = pppcrypt_get_7bits(key, 21); |
||
60 | des_key[4] = pppcrypt_get_7bits(key, 28); |
||
61 | des_key[5] = pppcrypt_get_7bits(key, 35); |
||
62 | des_key[6] = pppcrypt_get_7bits(key, 42); |
||
63 | des_key[7] = pppcrypt_get_7bits(key, 49); |
||
64 | } |
||
65 | |||
66 | #endif /* PPP_SUPPORT && MSCHAP_SUPPORT */ |