Mercurial > gnulib
annotate lib/des.c @ 8473:dba8f47ea9b8
2007-03-19 Simon Josefsson <simon@josefsson.org>
* des.c: Remove weak_keys_chksum. Reported by Bruno Haible
<bruno@clisp.org>.
author | Simon Josefsson <simon@josefsson.org> |
---|---|
date | Mon, 19 Mar 2007 10:07:27 +0000 |
parents | b396ac3f1039 |
children | e8d2c6fc33ad |
rev | line source |
---|---|
6404
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
1 /* des.c --- DES and Triple-DES encryption/decryption Algorithm |
8433
51634bc628de
* lib/quotearg.c: Include <wctype.h> early, before the definition of
Paul Eggert <eggert@cs.ucla.edu>
parents:
7584
diff
changeset
|
2 * Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007 |
6404
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
3 * Free Software Foundation, Inc. |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
4 * |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
5 * This file is free software; you can redistribute it and/or modify |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
6 * it under the terms of the GNU General Public License as published |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
7 * by the Free Software Foundation; either version 2, or (at your |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
8 * option) any later version. |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
9 * |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
10 * This file is distributed in the hope that it will be useful, but |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
11 * WITHOUT ANY WARRANTY; without even the implied warranty of |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
13 * General Public License for more details. |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
14 * |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
15 * You should have received a copy of the GNU General Public License |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
16 * along with this file; if not, write to the Free Software |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
18 * 02110-1301, USA. |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
19 * |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
20 */ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
21 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
22 /* Adapted for gnulib by Simon Josefsson, based on Libgcrypt. */ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
23 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
24 /* |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
25 * For a description of triple encryption, see: |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
26 * Bruce Schneier: Applied Cryptography. Second Edition. |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
27 * John Wiley & Sons, 1996. ISBN 0-471-12845-7. Pages 358 ff. |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
28 * This implementation is according to the definition of DES in FIPS |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
29 * PUB 46-2 from December 1993. |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
30 * |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
31 * Written by Michael Roth <mroth@nessie.de>, September 1998 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
32 */ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
33 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
34 /* |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
35 * U S A G E |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
36 * =========== |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
37 * |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
38 * For DES or Triple-DES encryption/decryption you must initialize a proper |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
39 * encryption context with a key. |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
40 * |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
41 * A DES key is 64bit wide but only 56bits of the key are used. The remaining |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
42 * bits are parity bits and they will _not_ checked in this implementation, but |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
43 * simply ignored. |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
44 * |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
45 * For Triple-DES you could use either two 64bit keys or three 64bit keys. |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
46 * The parity bits will _not_ checked, too. |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
47 * |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
48 * After initializing a context with a key you could use this context to |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
49 * encrypt or decrypt data in 64bit blocks in Electronic Codebook Mode. |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
50 * |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
51 * DES Example |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
52 * ----------- |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
53 * unsigned char key[8]; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
54 * unsigned char plaintext[8]; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
55 * unsigned char ciphertext[8]; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
56 * unsigned char recoverd[8]; |
8433
51634bc628de
* lib/quotearg.c: Include <wctype.h> early, before the definition of
Paul Eggert <eggert@cs.ucla.edu>
parents:
7584
diff
changeset
|
57 * gl_des_ctx context; |
6404
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
58 * |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
59 * // Fill 'key' and 'plaintext' with some data |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
60 * .... |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
61 * |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
62 * // Set up the DES encryption context |
8441 | 63 * gl_des_setkey(&context, key); |
6404
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
64 * |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
65 * // Encrypt the plaintext |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
66 * des_ecb_encrypt(&context, plaintext, ciphertext); |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
67 * |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
68 * // To recover the orginal plaintext from ciphertext use: |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
69 * des_ecb_decrypt(&context, ciphertext, recoverd); |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
70 * |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
71 * |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
72 * Triple-DES Example |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
73 * ------------------ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
74 * unsigned char key1[8]; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
75 * unsigned char key2[8]; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
76 * unsigned char key3[8]; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
77 * unsigned char plaintext[8]; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
78 * unsigned char ciphertext[8]; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
79 * unsigned char recoverd[8]; |
8433
51634bc628de
* lib/quotearg.c: Include <wctype.h> early, before the definition of
Paul Eggert <eggert@cs.ucla.edu>
parents:
7584
diff
changeset
|
80 * gl_3des_ctx context; |
6404
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
81 * |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
82 * // If you would like to use two 64bit keys, fill 'key1' and'key2' |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
83 * // then setup the encryption context: |
8433
51634bc628de
* lib/quotearg.c: Include <wctype.h> early, before the definition of
Paul Eggert <eggert@cs.ucla.edu>
parents:
7584
diff
changeset
|
84 * gl_3des_set2keys(&context, key1, key2); |
6404
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
85 * |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
86 * // To use three 64bit keys with Triple-DES use: |
8433
51634bc628de
* lib/quotearg.c: Include <wctype.h> early, before the definition of
Paul Eggert <eggert@cs.ucla.edu>
parents:
7584
diff
changeset
|
87 * gl_3des_set3keys(&context, key1, key2, key3); |
6404
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
88 * |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
89 * // Encrypting plaintext with Triple-DES |
8433
51634bc628de
* lib/quotearg.c: Include <wctype.h> early, before the definition of
Paul Eggert <eggert@cs.ucla.edu>
parents:
7584
diff
changeset
|
90 * gl_3des_ecb_encrypt(&context, plaintext, ciphertext); |
6404
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
91 * |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
92 * // Decrypting ciphertext to recover the plaintext with Triple-DES |
8433
51634bc628de
* lib/quotearg.c: Include <wctype.h> early, before the definition of
Paul Eggert <eggert@cs.ucla.edu>
parents:
7584
diff
changeset
|
93 * gl_3des_ecb_decrypt(&context, ciphertext, recoverd); |
6404
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
94 */ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
95 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
96 |
7584
a88f85e4728f
* lib/arcfour.c: Assume config.h.
Eric Blake <ebb9@byu.net>
parents:
6782
diff
changeset
|
97 #include <config.h> |
6404
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
98 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
99 #include "des.h" |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
100 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
101 #include <stdio.h> |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
102 #include <string.h> /* memcpy, memcmp */ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
103 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
104 /* |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
105 * The s-box values are permuted according to the 'primitive function P' |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
106 * and are rotated one bit to the left. |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
107 */ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
108 static const uint32_t sbox1[64] = { |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
109 0x01010400, 0x00000000, 0x00010000, 0x01010404, 0x01010004, 0x00010404, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
110 0x00000004, 0x00010000, 0x00000400, 0x01010400, 0x01010404, 0x00000400, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
111 0x01000404, 0x01010004, 0x01000000, 0x00000004, 0x00000404, 0x01000400, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
112 0x01000400, 0x00010400, 0x00010400, 0x01010000, 0x01010000, 0x01000404, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
113 0x00010004, 0x01000004, 0x01000004, 0x00010004, 0x00000000, 0x00000404, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
114 0x00010404, 0x01000000, 0x00010000, 0x01010404, 0x00000004, 0x01010000, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
115 0x01010400, 0x01000000, 0x01000000, 0x00000400, 0x01010004, 0x00010000, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
116 0x00010400, 0x01000004, 0x00000400, 0x00000004, 0x01000404, 0x00010404, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
117 0x01010404, 0x00010004, 0x01010000, 0x01000404, 0x01000004, 0x00000404, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
118 0x00010404, 0x01010400, 0x00000404, 0x01000400, 0x01000400, 0x00000000, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
119 0x00010004, 0x00010400, 0x00000000, 0x01010004 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
120 }; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
121 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
122 static const uint32_t sbox2[64] = { |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
123 0x80108020, 0x80008000, 0x00008000, 0x00108020, 0x00100000, 0x00000020, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
124 0x80100020, 0x80008020, 0x80000020, 0x80108020, 0x80108000, 0x80000000, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
125 0x80008000, 0x00100000, 0x00000020, 0x80100020, 0x00108000, 0x00100020, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
126 0x80008020, 0x00000000, 0x80000000, 0x00008000, 0x00108020, 0x80100000, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
127 0x00100020, 0x80000020, 0x00000000, 0x00108000, 0x00008020, 0x80108000, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
128 0x80100000, 0x00008020, 0x00000000, 0x00108020, 0x80100020, 0x00100000, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
129 0x80008020, 0x80100000, 0x80108000, 0x00008000, 0x80100000, 0x80008000, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
130 0x00000020, 0x80108020, 0x00108020, 0x00000020, 0x00008000, 0x80000000, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
131 0x00008020, 0x80108000, 0x00100000, 0x80000020, 0x00100020, 0x80008020, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
132 0x80000020, 0x00100020, 0x00108000, 0x00000000, 0x80008000, 0x00008020, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
133 0x80000000, 0x80100020, 0x80108020, 0x00108000 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
134 }; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
135 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
136 static const uint32_t sbox3[64] = { |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
137 0x00000208, 0x08020200, 0x00000000, 0x08020008, 0x08000200, 0x00000000, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
138 0x00020208, 0x08000200, 0x00020008, 0x08000008, 0x08000008, 0x00020000, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
139 0x08020208, 0x00020008, 0x08020000, 0x00000208, 0x08000000, 0x00000008, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
140 0x08020200, 0x00000200, 0x00020200, 0x08020000, 0x08020008, 0x00020208, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
141 0x08000208, 0x00020200, 0x00020000, 0x08000208, 0x00000008, 0x08020208, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
142 0x00000200, 0x08000000, 0x08020200, 0x08000000, 0x00020008, 0x00000208, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
143 0x00020000, 0x08020200, 0x08000200, 0x00000000, 0x00000200, 0x00020008, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
144 0x08020208, 0x08000200, 0x08000008, 0x00000200, 0x00000000, 0x08020008, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
145 0x08000208, 0x00020000, 0x08000000, 0x08020208, 0x00000008, 0x00020208, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
146 0x00020200, 0x08000008, 0x08020000, 0x08000208, 0x00000208, 0x08020000, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
147 0x00020208, 0x00000008, 0x08020008, 0x00020200 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
148 }; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
149 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
150 static const uint32_t sbox4[64] = { |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
151 0x00802001, 0x00002081, 0x00002081, 0x00000080, 0x00802080, 0x00800081, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
152 0x00800001, 0x00002001, 0x00000000, 0x00802000, 0x00802000, 0x00802081, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
153 0x00000081, 0x00000000, 0x00800080, 0x00800001, 0x00000001, 0x00002000, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
154 0x00800000, 0x00802001, 0x00000080, 0x00800000, 0x00002001, 0x00002080, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
155 0x00800081, 0x00000001, 0x00002080, 0x00800080, 0x00002000, 0x00802080, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
156 0x00802081, 0x00000081, 0x00800080, 0x00800001, 0x00802000, 0x00802081, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
157 0x00000081, 0x00000000, 0x00000000, 0x00802000, 0x00002080, 0x00800080, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
158 0x00800081, 0x00000001, 0x00802001, 0x00002081, 0x00002081, 0x00000080, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
159 0x00802081, 0x00000081, 0x00000001, 0x00002000, 0x00800001, 0x00002001, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
160 0x00802080, 0x00800081, 0x00002001, 0x00002080, 0x00800000, 0x00802001, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
161 0x00000080, 0x00800000, 0x00002000, 0x00802080 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
162 }; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
163 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
164 static const uint32_t sbox5[64] = { |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
165 0x00000100, 0x02080100, 0x02080000, 0x42000100, 0x00080000, 0x00000100, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
166 0x40000000, 0x02080000, 0x40080100, 0x00080000, 0x02000100, 0x40080100, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
167 0x42000100, 0x42080000, 0x00080100, 0x40000000, 0x02000000, 0x40080000, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
168 0x40080000, 0x00000000, 0x40000100, 0x42080100, 0x42080100, 0x02000100, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
169 0x42080000, 0x40000100, 0x00000000, 0x42000000, 0x02080100, 0x02000000, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
170 0x42000000, 0x00080100, 0x00080000, 0x42000100, 0x00000100, 0x02000000, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
171 0x40000000, 0x02080000, 0x42000100, 0x40080100, 0x02000100, 0x40000000, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
172 0x42080000, 0x02080100, 0x40080100, 0x00000100, 0x02000000, 0x42080000, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
173 0x42080100, 0x00080100, 0x42000000, 0x42080100, 0x02080000, 0x00000000, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
174 0x40080000, 0x42000000, 0x00080100, 0x02000100, 0x40000100, 0x00080000, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
175 0x00000000, 0x40080000, 0x02080100, 0x40000100 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
176 }; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
177 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
178 static const uint32_t sbox6[64] = { |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
179 0x20000010, 0x20400000, 0x00004000, 0x20404010, 0x20400000, 0x00000010, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
180 0x20404010, 0x00400000, 0x20004000, 0x00404010, 0x00400000, 0x20000010, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
181 0x00400010, 0x20004000, 0x20000000, 0x00004010, 0x00000000, 0x00400010, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
182 0x20004010, 0x00004000, 0x00404000, 0x20004010, 0x00000010, 0x20400010, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
183 0x20400010, 0x00000000, 0x00404010, 0x20404000, 0x00004010, 0x00404000, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
184 0x20404000, 0x20000000, 0x20004000, 0x00000010, 0x20400010, 0x00404000, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
185 0x20404010, 0x00400000, 0x00004010, 0x20000010, 0x00400000, 0x20004000, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
186 0x20000000, 0x00004010, 0x20000010, 0x20404010, 0x00404000, 0x20400000, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
187 0x00404010, 0x20404000, 0x00000000, 0x20400010, 0x00000010, 0x00004000, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
188 0x20400000, 0x00404010, 0x00004000, 0x00400010, 0x20004010, 0x00000000, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
189 0x20404000, 0x20000000, 0x00400010, 0x20004010 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
190 }; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
191 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
192 static const uint32_t sbox7[64] = { |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
193 0x00200000, 0x04200002, 0x04000802, 0x00000000, 0x00000800, 0x04000802, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
194 0x00200802, 0x04200800, 0x04200802, 0x00200000, 0x00000000, 0x04000002, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
195 0x00000002, 0x04000000, 0x04200002, 0x00000802, 0x04000800, 0x00200802, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
196 0x00200002, 0x04000800, 0x04000002, 0x04200000, 0x04200800, 0x00200002, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
197 0x04200000, 0x00000800, 0x00000802, 0x04200802, 0x00200800, 0x00000002, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
198 0x04000000, 0x00200800, 0x04000000, 0x00200800, 0x00200000, 0x04000802, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
199 0x04000802, 0x04200002, 0x04200002, 0x00000002, 0x00200002, 0x04000000, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
200 0x04000800, 0x00200000, 0x04200800, 0x00000802, 0x00200802, 0x04200800, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
201 0x00000802, 0x04000002, 0x04200802, 0x04200000, 0x00200800, 0x00000000, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
202 0x00000002, 0x04200802, 0x00000000, 0x00200802, 0x04200000, 0x00000800, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
203 0x04000002, 0x04000800, 0x00000800, 0x00200002 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
204 }; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
205 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
206 static const uint32_t sbox8[64] = { |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
207 0x10001040, 0x00001000, 0x00040000, 0x10041040, 0x10000000, 0x10001040, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
208 0x00000040, 0x10000000, 0x00040040, 0x10040000, 0x10041040, 0x00041000, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
209 0x10041000, 0x00041040, 0x00001000, 0x00000040, 0x10040000, 0x10000040, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
210 0x10001000, 0x00001040, 0x00041000, 0x00040040, 0x10040040, 0x10041000, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
211 0x00001040, 0x00000000, 0x00000000, 0x10040040, 0x10000040, 0x10001000, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
212 0x00041040, 0x00040000, 0x00041040, 0x00040000, 0x10041000, 0x00001000, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
213 0x00000040, 0x10040040, 0x00001000, 0x00041040, 0x10001000, 0x00000040, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
214 0x10000040, 0x10040000, 0x10040040, 0x10000000, 0x00040000, 0x10001040, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
215 0x00000000, 0x10041040, 0x00040040, 0x10000040, 0x10040000, 0x10001000, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
216 0x10001040, 0x00000000, 0x10041040, 0x00041000, 0x00041000, 0x00001040, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
217 0x00001040, 0x00040040, 0x10000000, 0x10041000 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
218 }; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
219 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
220 /* |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
221 * These two tables are part of the 'permuted choice 1' function. |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
222 * In this implementation several speed improvements are done. |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
223 */ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
224 static const uint32_t leftkey_swap[16] = { |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
225 0x00000000, 0x00000001, 0x00000100, 0x00000101, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
226 0x00010000, 0x00010001, 0x00010100, 0x00010101, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
227 0x01000000, 0x01000001, 0x01000100, 0x01000101, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
228 0x01010000, 0x01010001, 0x01010100, 0x01010101 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
229 }; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
230 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
231 static const uint32_t rightkey_swap[16] = { |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
232 0x00000000, 0x01000000, 0x00010000, 0x01010000, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
233 0x00000100, 0x01000100, 0x00010100, 0x01010100, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
234 0x00000001, 0x01000001, 0x00010001, 0x01010001, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
235 0x00000101, 0x01000101, 0x00010101, 0x01010101, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
236 }; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
237 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
238 /* |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
239 * Numbers of left shifts per round for encryption subkeys. To |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
240 * calculate the decryption subkeys we just reverse the ordering of |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
241 * the calculated encryption subkeys, so there is no need for a |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
242 * decryption rotate tab. |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
243 */ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
244 static const unsigned char encrypt_rotate_tab[16] = { |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
245 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
246 }; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
247 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
248 /* |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
249 * Table with weak DES keys sorted in ascending order. In DES there |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
250 * are 64 known keys which are weak. They are weak because they |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
251 * produce only one, two or four different subkeys in the subkey |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
252 * scheduling process. The keys in this table have all their parity |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
253 * bits cleared. |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
254 */ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
255 static const unsigned char weak_keys[64][8] = { |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
256 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*w */ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
257 {0x00, 0x00, 0x1e, 0x1e, 0x00, 0x00, 0x0e, 0x0e}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
258 {0x00, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0xf0, 0xf0}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
259 {0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0xfe, 0xfe}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
260 {0x00, 0x1e, 0x00, 0x1e, 0x00, 0x0e, 0x00, 0x0e}, /*sw */ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
261 {0x00, 0x1e, 0x1e, 0x00, 0x00, 0x0e, 0x0e, 0x00}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
262 {0x00, 0x1e, 0xe0, 0xfe, 0x00, 0x0e, 0xf0, 0xfe}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
263 {0x00, 0x1e, 0xfe, 0xe0, 0x00, 0x0e, 0xfe, 0xf0}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
264 {0x00, 0xe0, 0x00, 0xe0, 0x00, 0xf0, 0x00, 0xf0}, /*sw */ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
265 {0x00, 0xe0, 0x1e, 0xfe, 0x00, 0xf0, 0x0e, 0xfe}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
266 {0x00, 0xe0, 0xe0, 0x00, 0x00, 0xf0, 0xf0, 0x00}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
267 {0x00, 0xe0, 0xfe, 0x1e, 0x00, 0xf0, 0xfe, 0x0e}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
268 {0x00, 0xfe, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0xfe}, /*sw */ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
269 {0x00, 0xfe, 0x1e, 0xe0, 0x00, 0xfe, 0x0e, 0xf0}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
270 {0x00, 0xfe, 0xe0, 0x1e, 0x00, 0xfe, 0xf0, 0x0e}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
271 {0x00, 0xfe, 0xfe, 0x00, 0x00, 0xfe, 0xfe, 0x00}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
272 {0x1e, 0x00, 0x00, 0x1e, 0x0e, 0x00, 0x00, 0x0e}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
273 {0x1e, 0x00, 0x1e, 0x00, 0x0e, 0x00, 0x0e, 0x00}, /*sw */ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
274 {0x1e, 0x00, 0xe0, 0xfe, 0x0e, 0x00, 0xf0, 0xfe}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
275 {0x1e, 0x00, 0xfe, 0xe0, 0x0e, 0x00, 0xfe, 0xf0}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
276 {0x1e, 0x1e, 0x00, 0x00, 0x0e, 0x0e, 0x00, 0x00}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
277 {0x1e, 0x1e, 0x1e, 0x1e, 0x0e, 0x0e, 0x0e, 0x0e}, /*w */ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
278 {0x1e, 0x1e, 0xe0, 0xe0, 0x0e, 0x0e, 0xf0, 0xf0}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
279 {0x1e, 0x1e, 0xfe, 0xfe, 0x0e, 0x0e, 0xfe, 0xfe}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
280 {0x1e, 0xe0, 0x00, 0xfe, 0x0e, 0xf0, 0x00, 0xfe}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
281 {0x1e, 0xe0, 0x1e, 0xe0, 0x0e, 0xf0, 0x0e, 0xf0}, /*sw */ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
282 {0x1e, 0xe0, 0xe0, 0x1e, 0x0e, 0xf0, 0xf0, 0x0e}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
283 {0x1e, 0xe0, 0xfe, 0x00, 0x0e, 0xf0, 0xfe, 0x00}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
284 {0x1e, 0xfe, 0x00, 0xe0, 0x0e, 0xfe, 0x00, 0xf0}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
285 {0x1e, 0xfe, 0x1e, 0xfe, 0x0e, 0xfe, 0x0e, 0xfe}, /*sw */ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
286 {0x1e, 0xfe, 0xe0, 0x00, 0x0e, 0xfe, 0xf0, 0x00}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
287 {0x1e, 0xfe, 0xfe, 0x1e, 0x0e, 0xfe, 0xfe, 0x0e}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
288 {0xe0, 0x00, 0x00, 0xe0, 0xf0, 0x00, 0x00, 0xf0}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
289 {0xe0, 0x00, 0x1e, 0xfe, 0xf0, 0x00, 0x0e, 0xfe}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
290 {0xe0, 0x00, 0xe0, 0x00, 0xf0, 0x00, 0xf0, 0x00}, /*sw */ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
291 {0xe0, 0x00, 0xfe, 0x1e, 0xf0, 0x00, 0xfe, 0x0e}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
292 {0xe0, 0x1e, 0x00, 0xfe, 0xf0, 0x0e, 0x00, 0xfe}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
293 {0xe0, 0x1e, 0x1e, 0xe0, 0xf0, 0x0e, 0x0e, 0xf0}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
294 {0xe0, 0x1e, 0xe0, 0x1e, 0xf0, 0x0e, 0xf0, 0x0e}, /*sw */ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
295 {0xe0, 0x1e, 0xfe, 0x00, 0xf0, 0x0e, 0xfe, 0x00}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
296 {0xe0, 0xe0, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
297 {0xe0, 0xe0, 0x1e, 0x1e, 0xf0, 0xf0, 0x0e, 0x0e}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
298 {0xe0, 0xe0, 0xe0, 0xe0, 0xf0, 0xf0, 0xf0, 0xf0}, /*w */ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
299 {0xe0, 0xe0, 0xfe, 0xfe, 0xf0, 0xf0, 0xfe, 0xfe}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
300 {0xe0, 0xfe, 0x00, 0x1e, 0xf0, 0xfe, 0x00, 0x0e}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
301 {0xe0, 0xfe, 0x1e, 0x00, 0xf0, 0xfe, 0x0e, 0x00}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
302 {0xe0, 0xfe, 0xe0, 0xfe, 0xf0, 0xfe, 0xf0, 0xfe}, /*sw */ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
303 {0xe0, 0xfe, 0xfe, 0xe0, 0xf0, 0xfe, 0xfe, 0xf0}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
304 {0xfe, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0xfe}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
305 {0xfe, 0x00, 0x1e, 0xe0, 0xfe, 0x00, 0x0e, 0xf0}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
306 {0xfe, 0x00, 0xe0, 0x1e, 0xfe, 0x00, 0xf0, 0x0e}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
307 {0xfe, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0xfe, 0x00}, /*sw */ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
308 {0xfe, 0x1e, 0x00, 0xe0, 0xfe, 0x0e, 0x00, 0xf0}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
309 {0xfe, 0x1e, 0x1e, 0xfe, 0xfe, 0x0e, 0x0e, 0xfe}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
310 {0xfe, 0x1e, 0xe0, 0x00, 0xfe, 0x0e, 0xf0, 0x00}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
311 {0xfe, 0x1e, 0xfe, 0x1e, 0xfe, 0x0e, 0xfe, 0x0e}, /*sw */ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
312 {0xfe, 0xe0, 0x00, 0x1e, 0xfe, 0xf0, 0x00, 0x0e}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
313 {0xfe, 0xe0, 0x1e, 0x00, 0xfe, 0xf0, 0x0e, 0x00}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
314 {0xfe, 0xe0, 0xe0, 0xfe, 0xfe, 0xf0, 0xf0, 0xfe}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
315 {0xfe, 0xe0, 0xfe, 0xe0, 0xfe, 0xf0, 0xfe, 0xf0}, /*sw */ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
316 {0xfe, 0xfe, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
317 {0xfe, 0xfe, 0x1e, 0x1e, 0xfe, 0xfe, 0x0e, 0x0e}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
318 {0xfe, 0xfe, 0xe0, 0xe0, 0xfe, 0xfe, 0xf0, 0xf0}, |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
319 {0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe} /*w */ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
320 }; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
321 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
322 bool |
8433
51634bc628de
* lib/quotearg.c: Include <wctype.h> early, before the definition of
Paul Eggert <eggert@cs.ucla.edu>
parents:
7584
diff
changeset
|
323 gl_des_is_weak_key (const char * key) |
6404
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
324 { |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
325 char work[8]; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
326 int i, left, right, middle, cmp_result; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
327 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
328 /* clear parity bits */ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
329 for (i = 0; i < 8; ++i) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
330 work[i] = ((unsigned char)key[i]) & 0xfe; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
331 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
332 /* binary search in the weak key table */ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
333 left = 0; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
334 right = 63; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
335 while (left <= right) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
336 { |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
337 middle = (left + right) / 2; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
338 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
339 if (!(cmp_result = memcmp (work, weak_keys[middle], 8))) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
340 return -1; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
341 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
342 if (cmp_result > 0) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
343 left = middle + 1; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
344 else |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
345 right = middle - 1; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
346 } |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
347 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
348 return 0; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
349 } |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
350 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
351 /* |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
352 * Macro to swap bits across two words. |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
353 */ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
354 #define DO_PERMUTATION(a, temp, b, offset, mask) \ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
355 temp = ((a>>offset) ^ b) & mask; \ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
356 b ^= temp; \ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
357 a ^= temp<<offset; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
358 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
359 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
360 /* |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
361 * This performs the 'initial permutation' of the data to be encrypted |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
362 * or decrypted. Additionally the resulting two words are rotated one bit |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
363 * to the left. |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
364 */ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
365 #define INITIAL_PERMUTATION(left, temp, right) \ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
366 DO_PERMUTATION(left, temp, right, 4, 0x0f0f0f0f) \ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
367 DO_PERMUTATION(left, temp, right, 16, 0x0000ffff) \ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
368 DO_PERMUTATION(right, temp, left, 2, 0x33333333) \ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
369 DO_PERMUTATION(right, temp, left, 8, 0x00ff00ff) \ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
370 right = (right << 1) | (right >> 31); \ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
371 temp = (left ^ right) & 0xaaaaaaaa; \ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
372 right ^= temp; \ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
373 left ^= temp; \ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
374 left = (left << 1) | (left >> 31); |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
375 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
376 /* |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
377 * The 'inverse initial permutation'. |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
378 */ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
379 #define FINAL_PERMUTATION(left, temp, right) \ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
380 left = (left << 31) | (left >> 1); \ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
381 temp = (left ^ right) & 0xaaaaaaaa; \ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
382 left ^= temp; \ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
383 right ^= temp; \ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
384 right = (right << 31) | (right >> 1); \ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
385 DO_PERMUTATION(right, temp, left, 8, 0x00ff00ff) \ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
386 DO_PERMUTATION(right, temp, left, 2, 0x33333333) \ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
387 DO_PERMUTATION(left, temp, right, 16, 0x0000ffff) \ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
388 DO_PERMUTATION(left, temp, right, 4, 0x0f0f0f0f) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
389 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
390 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
391 /* |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
392 * A full DES round including 'expansion function', 'sbox substitution' |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
393 * and 'primitive function P' but without swapping the left and right word. |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
394 * Please note: The data in 'from' and 'to' is already rotated one bit to |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
395 * the left, done in the initial permutation. |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
396 */ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
397 #define DES_ROUND(from, to, work, subkey) \ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
398 work = from ^ *subkey++; \ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
399 to ^= sbox8[ work & 0x3f ]; \ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
400 to ^= sbox6[ (work>>8) & 0x3f ]; \ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
401 to ^= sbox4[ (work>>16) & 0x3f ]; \ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
402 to ^= sbox2[ (work>>24) & 0x3f ]; \ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
403 work = ((from << 28) | (from >> 4)) ^ *subkey++; \ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
404 to ^= sbox7[ work & 0x3f ]; \ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
405 to ^= sbox5[ (work>>8) & 0x3f ]; \ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
406 to ^= sbox3[ (work>>16) & 0x3f ]; \ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
407 to ^= sbox1[ (work>>24) & 0x3f ]; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
408 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
409 /* |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
410 * Macros to convert 8 bytes from/to 32bit words. |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
411 */ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
412 #define READ_64BIT_DATA(data, left, right) \ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
413 left = (data[0] << 24) | (data[1] << 16) | (data[2] << 8) | data[3]; \ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
414 right = (data[4] << 24) | (data[5] << 16) | (data[6] << 8) | data[7]; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
415 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
416 #define WRITE_64BIT_DATA(data, left, right) \ |
7584
a88f85e4728f
* lib/arcfour.c: Assume config.h.
Eric Blake <ebb9@byu.net>
parents:
6782
diff
changeset
|
417 data[0] = (left >> 24) &0xff; data[1] = (left >> 16) &0xff; \ |
6404
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
418 data[2] = (left >> 8) &0xff; data[3] = left &0xff; \ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
419 data[4] = (right >> 24) &0xff; data[5] = (right >> 16) &0xff; \ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
420 data[6] = (right >> 8) &0xff; data[7] = right &0xff; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
421 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
422 /* |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
423 * des_key_schedule(): Calculate 16 subkeys pairs (even/odd) for |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
424 * 16 encryption rounds. |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
425 * To calculate subkeys for decryption the caller |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
426 * have to reorder the generated subkeys. |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
427 * |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
428 * rawkey: 8 Bytes of key data |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
429 * subkey: Array of at least 32 uint32_ts. Will be filled |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
430 * with calculated subkeys. |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
431 * |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
432 */ |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
433 static void |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
434 des_key_schedule (const char * _rawkey, uint32_t * subkey) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
435 { |
6782
6c08fff6ef83
2006-05-10 Bruno Haible <bruno@clisp.org>
Simon Josefsson <simon@josefsson.org>
parents:
6404
diff
changeset
|
436 const unsigned char *rawkey = (const unsigned char *) _rawkey; |
6404
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
437 uint32_t left, right, work; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
438 int round; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
439 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
440 READ_64BIT_DATA (rawkey, left, right) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
441 DO_PERMUTATION (right, work, left, 4, 0x0f0f0f0f) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
442 DO_PERMUTATION (right, work, left, 0, 0x10101010) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
443 left = ((leftkey_swap[(left >> 0) & 0xf] << 3) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
444 | (leftkey_swap[(left >> 8) & 0xf] << 2) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
445 | (leftkey_swap[(left >> 16) & 0xf] << 1) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
446 | (leftkey_swap[(left >> 24) & 0xf]) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
447 | (leftkey_swap[(left >> 5) & 0xf] << 7) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
448 | (leftkey_swap[(left >> 13) & 0xf] << 6) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
449 | (leftkey_swap[(left >> 21) & 0xf] << 5) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
450 | (leftkey_swap[(left >> 29) & 0xf] << 4)); |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
451 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
452 left &= 0x0fffffff; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
453 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
454 right = ((rightkey_swap[(right >> 1) & 0xf] << 3) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
455 | (rightkey_swap[(right >> 9) & 0xf] << 2) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
456 | (rightkey_swap[(right >> 17) & 0xf] << 1) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
457 | (rightkey_swap[(right >> 25) & 0xf]) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
458 | (rightkey_swap[(right >> 4) & 0xf] << 7) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
459 | (rightkey_swap[(right >> 12) & 0xf] << 6) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
460 | (rightkey_swap[(right >> 20) & 0xf] << 5) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
461 | (rightkey_swap[(right >> 28) & 0xf] << 4)); |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
462 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
463 right &= 0x0fffffff; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
464 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
465 for (round = 0; round < 16; ++round) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
466 { |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
467 left = ((left << encrypt_rotate_tab[round]) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
468 | (left >> (28 - encrypt_rotate_tab[round]))) & 0x0fffffff; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
469 right = ((right << encrypt_rotate_tab[round]) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
470 | (right >> (28 - encrypt_rotate_tab[round]))) & 0x0fffffff; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
471 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
472 *subkey++ = (((left << 4) & 0x24000000) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
473 | ((left << 28) & 0x10000000) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
474 | ((left << 14) & 0x08000000) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
475 | ((left << 18) & 0x02080000) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
476 | ((left << 6) & 0x01000000) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
477 | ((left << 9) & 0x00200000) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
478 | ((left >> 1) & 0x00100000) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
479 | ((left << 10) & 0x00040000) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
480 | ((left << 2) & 0x00020000) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
481 | ((left >> 10) & 0x00010000) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
482 | ((right >> 13) & 0x00002000) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
483 | ((right >> 4) & 0x00001000) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
484 | ((right << 6) & 0x00000800) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
485 | ((right >> 1) & 0x00000400) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
486 | ((right >> 14) & 0x00000200) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
487 | (right & 0x00000100) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
488 | ((right >> 5) & 0x00000020) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
489 | ((right >> 10) & 0x00000010) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
490 | ((right >> 3) & 0x00000008) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
491 | ((right >> 18) & 0x00000004) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
492 | ((right >> 26) & 0x00000002) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
493 | ((right >> 24) & 0x00000001)); |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
494 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
495 *subkey++ = (((left << 15) & 0x20000000) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
496 | ((left << 17) & 0x10000000) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
497 | ((left << 10) & 0x08000000) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
498 | ((left << 22) & 0x04000000) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
499 | ((left >> 2) & 0x02000000) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
500 | ((left << 1) & 0x01000000) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
501 | ((left << 16) & 0x00200000) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
502 | ((left << 11) & 0x00100000) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
503 | ((left << 3) & 0x00080000) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
504 | ((left >> 6) & 0x00040000) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
505 | ((left << 15) & 0x00020000) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
506 | ((left >> 4) & 0x00010000) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
507 | ((right >> 2) & 0x00002000) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
508 | ((right << 8) & 0x00001000) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
509 | ((right >> 14) & 0x00000808) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
510 | ((right >> 9) & 0x00000400) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
511 | ((right) & 0x00000200) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
512 | ((right << 7) & 0x00000100) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
513 | ((right >> 7) & 0x00000020) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
514 | ((right >> 3) & 0x00000011) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
515 | ((right << 2) & 0x00000004) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
516 | ((right >> 21) & 0x00000002)); |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
517 } |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
518 } |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
519 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
520 void |
8433
51634bc628de
* lib/quotearg.c: Include <wctype.h> early, before the definition of
Paul Eggert <eggert@cs.ucla.edu>
parents:
7584
diff
changeset
|
521 gl_des_setkey (gl_des_ctx *ctx, const char * key) |
6404
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
522 { |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
523 int i; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
524 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
525 des_key_schedule (key, ctx->encrypt_subkeys); |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
526 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
527 for (i = 0; i < 32; i += 2) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
528 { |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
529 ctx->decrypt_subkeys[i] = ctx->encrypt_subkeys[30 - i]; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
530 ctx->decrypt_subkeys[i + 1] = ctx->encrypt_subkeys[31 - i]; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
531 } |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
532 } |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
533 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
534 bool |
8433
51634bc628de
* lib/quotearg.c: Include <wctype.h> early, before the definition of
Paul Eggert <eggert@cs.ucla.edu>
parents:
7584
diff
changeset
|
535 gl_des_makekey (gl_des_ctx *ctx, const char * key, size_t keylen) |
6404
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
536 { |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
537 if (keylen != 8) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
538 return false; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
539 |
8441 | 540 gl_des_setkey (ctx, key); |
6404
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
541 |
8441 | 542 return !gl_des_is_weak_key (key); |
6404
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
543 } |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
544 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
545 void |
8433
51634bc628de
* lib/quotearg.c: Include <wctype.h> early, before the definition of
Paul Eggert <eggert@cs.ucla.edu>
parents:
7584
diff
changeset
|
546 gl_des_ecb_crypt (gl_des_ctx *ctx, const char * _from, char * _to, int mode) |
6404
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
547 { |
6782
6c08fff6ef83
2006-05-10 Bruno Haible <bruno@clisp.org>
Simon Josefsson <simon@josefsson.org>
parents:
6404
diff
changeset
|
548 const unsigned char *from = (const unsigned char *) _from; |
6c08fff6ef83
2006-05-10 Bruno Haible <bruno@clisp.org>
Simon Josefsson <simon@josefsson.org>
parents:
6404
diff
changeset
|
549 unsigned char *to = (unsigned char *) _to; |
6404
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
550 uint32_t left, right, work; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
551 uint32_t *keys; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
552 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
553 keys = mode ? ctx->decrypt_subkeys : ctx->encrypt_subkeys; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
554 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
555 READ_64BIT_DATA (from, left, right) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
556 INITIAL_PERMUTATION (left, work, right) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
557 DES_ROUND (right, left, work, keys) DES_ROUND (left, right, work, keys) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
558 DES_ROUND (right, left, work, keys) DES_ROUND (left, right, work, keys) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
559 DES_ROUND (right, left, work, keys) DES_ROUND (left, right, work, keys) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
560 DES_ROUND (right, left, work, keys) DES_ROUND (left, right, work, keys) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
561 DES_ROUND (right, left, work, keys) DES_ROUND (left, right, work, keys) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
562 DES_ROUND (right, left, work, keys) DES_ROUND (left, right, work, keys) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
563 DES_ROUND (right, left, work, keys) DES_ROUND (left, right, work, keys) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
564 DES_ROUND (right, left, work, keys) DES_ROUND (left, right, work, keys) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
565 FINAL_PERMUTATION (right, work, left) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
566 WRITE_64BIT_DATA (to, right, left) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
567 } |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
568 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
569 void |
8433
51634bc628de
* lib/quotearg.c: Include <wctype.h> early, before the definition of
Paul Eggert <eggert@cs.ucla.edu>
parents:
7584
diff
changeset
|
570 gl_3des_set2keys (gl_3des_ctx *ctx, const char * key1, const char * key2) |
6404
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
571 { |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
572 int i; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
573 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
574 des_key_schedule (key1, ctx->encrypt_subkeys); |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
575 des_key_schedule (key2, &(ctx->decrypt_subkeys[32])); |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
576 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
577 for (i = 0; i < 32; i += 2) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
578 { |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
579 ctx->decrypt_subkeys[i] = ctx->encrypt_subkeys[30 - i]; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
580 ctx->decrypt_subkeys[i + 1] = ctx->encrypt_subkeys[31 - i]; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
581 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
582 ctx->encrypt_subkeys[i + 32] = ctx->decrypt_subkeys[62 - i]; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
583 ctx->encrypt_subkeys[i + 33] = ctx->decrypt_subkeys[63 - i]; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
584 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
585 ctx->encrypt_subkeys[i + 64] = ctx->encrypt_subkeys[i]; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
586 ctx->encrypt_subkeys[i + 65] = ctx->encrypt_subkeys[i + 1]; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
587 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
588 ctx->decrypt_subkeys[i + 64] = ctx->decrypt_subkeys[i]; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
589 ctx->decrypt_subkeys[i + 65] = ctx->decrypt_subkeys[i + 1]; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
590 } |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
591 } |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
592 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
593 void |
8433
51634bc628de
* lib/quotearg.c: Include <wctype.h> early, before the definition of
Paul Eggert <eggert@cs.ucla.edu>
parents:
7584
diff
changeset
|
594 gl_3des_set3keys (gl_3des_ctx *ctx, const char * key1, |
6404
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
595 const char * key2, const char * key3) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
596 { |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
597 int i; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
598 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
599 des_key_schedule (key1, ctx->encrypt_subkeys); |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
600 des_key_schedule (key2, &(ctx->decrypt_subkeys[32])); |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
601 des_key_schedule (key3, &(ctx->encrypt_subkeys[64])); |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
602 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
603 for (i = 0; i < 32; i += 2) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
604 { |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
605 ctx->decrypt_subkeys[i] = ctx->encrypt_subkeys[94 - i]; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
606 ctx->decrypt_subkeys[i + 1] = ctx->encrypt_subkeys[95 - i]; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
607 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
608 ctx->encrypt_subkeys[i + 32] = ctx->decrypt_subkeys[62 - i]; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
609 ctx->encrypt_subkeys[i + 33] = ctx->decrypt_subkeys[63 - i]; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
610 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
611 ctx->decrypt_subkeys[i + 64] = ctx->encrypt_subkeys[30 - i]; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
612 ctx->decrypt_subkeys[i + 65] = ctx->encrypt_subkeys[31 - i]; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
613 } |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
614 } |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
615 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
616 void |
8433
51634bc628de
* lib/quotearg.c: Include <wctype.h> early, before the definition of
Paul Eggert <eggert@cs.ucla.edu>
parents:
7584
diff
changeset
|
617 gl_3des_ecb_crypt (gl_3des_ctx *ctx, |
51634bc628de
* lib/quotearg.c: Include <wctype.h> early, before the definition of
Paul Eggert <eggert@cs.ucla.edu>
parents:
7584
diff
changeset
|
618 const char * _from, |
51634bc628de
* lib/quotearg.c: Include <wctype.h> early, before the definition of
Paul Eggert <eggert@cs.ucla.edu>
parents:
7584
diff
changeset
|
619 char * _to, int mode) |
6404
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
620 { |
6782
6c08fff6ef83
2006-05-10 Bruno Haible <bruno@clisp.org>
Simon Josefsson <simon@josefsson.org>
parents:
6404
diff
changeset
|
621 const unsigned char *from = (const unsigned char *) _from; |
6c08fff6ef83
2006-05-10 Bruno Haible <bruno@clisp.org>
Simon Josefsson <simon@josefsson.org>
parents:
6404
diff
changeset
|
622 unsigned char *to = (unsigned char *) _to; |
6404
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
623 uint32_t left, right, work; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
624 uint32_t *keys; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
625 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
626 keys = mode ? ctx->decrypt_subkeys : ctx->encrypt_subkeys; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
627 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
628 READ_64BIT_DATA (from, left, right) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
629 INITIAL_PERMUTATION (left, work, right) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
630 DES_ROUND (right, left, work, keys) DES_ROUND (left, right, work, keys) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
631 DES_ROUND (right, left, work, keys) DES_ROUND (left, right, work, keys) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
632 DES_ROUND (right, left, work, keys) DES_ROUND (left, right, work, keys) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
633 DES_ROUND (right, left, work, keys) DES_ROUND (left, right, work, keys) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
634 DES_ROUND (right, left, work, keys) DES_ROUND (left, right, work, keys) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
635 DES_ROUND (right, left, work, keys) DES_ROUND (left, right, work, keys) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
636 DES_ROUND (right, left, work, keys) DES_ROUND (left, right, work, keys) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
637 DES_ROUND (right, left, work, keys) DES_ROUND (left, right, work, keys) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
638 DES_ROUND (left, right, work, keys) DES_ROUND (right, left, work, keys) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
639 DES_ROUND (left, right, work, keys) DES_ROUND (right, left, work, keys) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
640 DES_ROUND (left, right, work, keys) DES_ROUND (right, left, work, keys) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
641 DES_ROUND (left, right, work, keys) DES_ROUND (right, left, work, keys) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
642 DES_ROUND (left, right, work, keys) DES_ROUND (right, left, work, keys) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
643 DES_ROUND (left, right, work, keys) DES_ROUND (right, left, work, keys) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
644 DES_ROUND (left, right, work, keys) DES_ROUND (right, left, work, keys) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
645 DES_ROUND (left, right, work, keys) DES_ROUND (right, left, work, keys) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
646 DES_ROUND (right, left, work, keys) DES_ROUND (left, right, work, keys) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
647 DES_ROUND (right, left, work, keys) DES_ROUND (left, right, work, keys) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
648 DES_ROUND (right, left, work, keys) DES_ROUND (left, right, work, keys) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
649 DES_ROUND (right, left, work, keys) DES_ROUND (left, right, work, keys) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
650 DES_ROUND (right, left, work, keys) DES_ROUND (left, right, work, keys) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
651 DES_ROUND (right, left, work, keys) DES_ROUND (left, right, work, keys) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
652 DES_ROUND (right, left, work, keys) DES_ROUND (left, right, work, keys) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
653 DES_ROUND (right, left, work, keys) DES_ROUND (left, right, work, keys) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
654 FINAL_PERMUTATION (right, work, left) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
655 WRITE_64BIT_DATA (to, right, left) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
656 } |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
657 |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
658 bool |
8433
51634bc628de
* lib/quotearg.c: Include <wctype.h> early, before the definition of
Paul Eggert <eggert@cs.ucla.edu>
parents:
7584
diff
changeset
|
659 gl_3des_makekey (gl_3des_ctx *ctx, const char * key, size_t keylen) |
6404
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
660 { |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
661 if (keylen != 24) |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
662 return false; |
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
663 |
8433
51634bc628de
* lib/quotearg.c: Include <wctype.h> early, before the definition of
Paul Eggert <eggert@cs.ucla.edu>
parents:
7584
diff
changeset
|
664 gl_3des_set3keys (ctx, key, key + 8, key + 16); |
6404
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
665 |
8441 | 666 return !(gl_des_is_weak_key (key) |
667 || gl_des_is_weak_key (key + 8) | |
668 || gl_des_is_weak_key (key + 16)); | |
6404
d38a727f8479
Add des, des-tests, gc-des, gc-des-tests modules.
Simon Josefsson <simon@josefsson.org>
parents:
diff
changeset
|
669 } |