UltraGrid
UltraGrid Low-Latency High-Resolution Transmission System
Loading...
Searching...
No Matches
test_des.c File Reference
#include "config.h"
#include "config_unix.h"
#include "config_win32.h"
#include "debug.h"
#include "crypto/crypt_des.h"
#include "test_des.h"
Include dependency graph for test_des.c:

Go to the source code of this file.

Macros

#define NUM_TESTS   36
 

Functions

int test_des (void)
 

Variables

static unsigned char cbc_data [32] = "7654321 Now is the time for "
 
static unsigned char cbc_iv [8]
 
static unsigned char cbc_key [8]
 
static unsigned char cbc_ok [32]
 
static unsigned char crypt_data [NUM_TESTS][8]
 
static unsigned char key_data [NUM_TESTS][8]
 
static unsigned char plain_data [NUM_TESTS][8]
 

Macro Definition Documentation

◆ NUM_TESTS

#define NUM_TESTS   36

Definition at line 48 of file test_des.c.

Referenced by test_des().

Function Documentation

◆ test_des()

int test_des ( void )

Definition at line 180 of file test_des.c.

181{
182 int i, j;
183 unsigned char key[8], plain[8], crypt[8], buffer[8];
184 unsigned char cbc_buffer[32], cbc_iv_buf[8];
185
186 printf
187 ("Testing DES in ECB mode .................................................. ");
188 fflush(stdout);
189 for (i = 0; i < NUM_TESTS; i++) {
190 for (j = 0; j < 8; j++) {
191 key[j] = key_data[i][j];
192 plain[j] = plain_data[i][j];
193 crypt[j] = crypt_data[i][j];
194 }
195 memcpy(buffer, crypt, 8);
196 qfDES_ECB_d(key, buffer, 8);
197 if (memcmp(buffer, plain, 8) != 0) {
198 printf("FAIL\n");
199 goto abort_ecb;
200 }
201 memcpy(buffer, plain, 8);
202 qfDES_ECB_e(key, buffer, 8);
203 if (memcmp(buffer, crypt, 8) != 0) {
204 printf("FAIL\n");
205 goto abort_ecb;
206 }
207 qfDES_ECB_d(key, buffer, 8);
208 if (memcmp(buffer, plain, 8) != 0) {
209 printf("FAIL\n");
210 goto abort_ecb;
211 }
212 }
213 printf("Ok\n");
214 abort_ecb:
215
216 printf
217 ("Testing DES in CBC mode .................................................. ");
218 fflush(stdout);
219 memcpy(cbc_buffer, cbc_data, 32);
220 memcpy(cbc_iv_buf, cbc_iv, 8);
221 qfDES_CBC_e(cbc_key, cbc_buffer, 32, cbc_iv_buf);
222 if (memcmp(cbc_buffer, cbc_ok, 32) != 0) {
223 printf("FAIL\n");
224 return -1;
225 }
226 memcpy(cbc_iv_buf, cbc_iv, 8);
227 qfDES_CBC_d(cbc_key, cbc_buffer, 32, cbc_iv_buf);
228 if (memcmp(cbc_buffer, cbc_data, 32) != 0) {
229 printf("FAIL\n");
230 return -1;
231 }
232 printf("Ok\n");
233 return 0;
234}
#define qfDES_ECB_e(_key, _data, _size)
Definition crypt_des.h:34
#define qfDES_ECB_d(_key, _data, _size)
Definition crypt_des.h:35
#define qfDES_CBC_e(_key, _data, _size, _initVec)
Definition crypt_des.h:37
#define qfDES_CBC_d(_key, _data, _size, _initVec)
Definition crypt_des.h:38
#define NUM_TESTS
Definition test_des.c:48
static unsigned char cbc_ok[32]
Definition test_des.c:173
static unsigned char cbc_iv[8]
Definition test_des.c:169
static unsigned char cbc_key[8]
Definition test_des.c:167
static unsigned char crypt_data[NUM_TESTS][8]
Definition test_des.c:128
static unsigned char key_data[NUM_TESTS][8]
Definition test_des.c:50
static unsigned char cbc_data[32]
Definition test_des.c:171
static unsigned char plain_data[NUM_TESTS][8]
Definition test_des.c:89
const char * key
Definition cineform.cpp:125

References cbc_data, cbc_iv, cbc_key, cbc_ok, crypt_data, key, key_data, NUM_TESTS, plain_data, qfDES_CBC_d, qfDES_CBC_e, qfDES_ECB_d, and qfDES_ECB_e.

Variable Documentation

◆ cbc_data

unsigned char cbc_data[32] = "7654321 Now is the time for "
static

Definition at line 171 of file test_des.c.

Referenced by test_des().

◆ cbc_iv

unsigned char cbc_iv[8]
static
Initial value:
=
{ 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }

Definition at line 169 of file test_des.c.

170 { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 };

Referenced by test_des().

◆ cbc_key

unsigned char cbc_key[8]
static
Initial value:
=
{ 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }

Definition at line 167 of file test_des.c.

168 { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef };

Referenced by test_des().

◆ cbc_ok

unsigned char cbc_ok[32]
static
Initial value:
= {
0xcc, 0xd1, 0x73, 0xff, 0xab, 0x20, 0x39, 0xf4,
0xac, 0xd8, 0xae, 0xfd, 0xdf, 0xd8, 0xa1, 0xeb,
0x46, 0x8e, 0x91, 0x15, 0x78, 0x88, 0xba, 0x68,
0x1d, 0x26, 0x93, 0x97, 0xf7, 0xfe, 0x62, 0xb4
}

Definition at line 173 of file test_des.c.

173 {
174 0xcc, 0xd1, 0x73, 0xff, 0xab, 0x20, 0x39, 0xf4,
175 0xac, 0xd8, 0xae, 0xfd, 0xdf, 0xd8, 0xa1, 0xeb,
176 0x46, 0x8e, 0x91, 0x15, 0x78, 0x88, 0xba, 0x68,
177 0x1d, 0x26, 0x93, 0x97, 0xf7, 0xfe, 0x62, 0xb4
178};

Referenced by test_des().

◆ crypt_data

unsigned char crypt_data[NUM_TESTS][8]
static

Definition at line 128 of file test_des.c.

128 {
129 {0x85, 0xe8, 0x13, 0x54, 0x0f, 0x0a, 0xb4, 0x05},
130 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
131 {0x8C, 0xA6, 0x4D, 0xE9, 0xC1, 0xB1, 0x23, 0xA7},
132 {0x73, 0x59, 0xB2, 0x16, 0x3E, 0x4E, 0xDC, 0x58},
133 {0x95, 0x8E, 0x6E, 0x62, 0x7A, 0x05, 0x55, 0x7B},
134 {0xF4, 0x03, 0x79, 0xAB, 0x9E, 0x0E, 0xC5, 0x33},
135 {0x17, 0x66, 0x8D, 0xFC, 0x72, 0x92, 0x53, 0x2D},
136 {0x8A, 0x5A, 0xE1, 0xF8, 0x1A, 0xB8, 0xF2, 0xDD},
137 {0x8C, 0xA6, 0x4D, 0xE9, 0xC1, 0xB1, 0x23, 0xA7},
138 {0xED, 0x39, 0xD9, 0x50, 0xFA, 0x74, 0xBC, 0xC4},
139 {0x69, 0x0F, 0x5B, 0x0D, 0x9A, 0x26, 0x93, 0x9B},
140 {0x7A, 0x38, 0x9D, 0x10, 0x35, 0x4B, 0xD2, 0x71},
141 {0x86, 0x8E, 0xBB, 0x51, 0xCA, 0xB4, 0x59, 0x9A},
142 {0x71, 0x78, 0x87, 0x6E, 0x01, 0xF1, 0x9B, 0x2A},
143 {0xAF, 0x37, 0xFB, 0x42, 0x1F, 0x8C, 0x40, 0x95},
144 {0x86, 0xA5, 0x60, 0xF1, 0x0E, 0xC6, 0xD8, 0x5B},
145 {0x0C, 0xD3, 0xDA, 0x02, 0x00, 0x21, 0xDC, 0x09},
146 {0xEA, 0x67, 0x6B, 0x2C, 0xB7, 0xDB, 0x2B, 0x7A},
147 {0xDF, 0xD6, 0x4A, 0x81, 0x5C, 0xAF, 0x1A, 0x0F},
148 {0x5C, 0x51, 0x3C, 0x9C, 0x48, 0x86, 0xC0, 0x88},
149 {0x0A, 0x2A, 0xEE, 0xAE, 0x3F, 0xF4, 0xAB, 0x77},
150 {0xEF, 0x1B, 0xF0, 0x3E, 0x5D, 0xFA, 0x57, 0x5A},
151 {0x88, 0xBF, 0x0D, 0xB6, 0xD7, 0x0D, 0xEE, 0x56},
152 {0xA1, 0xF9, 0x91, 0x55, 0x41, 0x02, 0x0B, 0x56},
153 {0x6F, 0xBF, 0x1C, 0xAF, 0xCF, 0xFD, 0x05, 0x56},
154 {0x2F, 0x22, 0xE4, 0x9B, 0xAB, 0x7C, 0xA1, 0xAC},
155 {0x5A, 0x6B, 0x61, 0x2C, 0xC2, 0x6C, 0xCE, 0x4A},
156 {0x5F, 0x4C, 0x03, 0x8E, 0xD1, 0x2B, 0x2E, 0x41},
157 {0x63, 0xFA, 0xC0, 0xD0, 0x34, 0xD9, 0xF7, 0x93},
158 {0x61, 0x7B, 0x3A, 0x0C, 0xE8, 0xF0, 0x71, 0x00},
159 {0xDB, 0x95, 0x86, 0x05, 0xF8, 0xC8, 0xC6, 0x06},
160 {0xED, 0xBF, 0xD1, 0xC6, 0x6C, 0x29, 0xCC, 0xC7},
161 {0x35, 0x55, 0x50, 0xB2, 0x15, 0x0E, 0x24, 0x51},
162 {0xCA, 0xAA, 0xAF, 0x4D, 0xEA, 0xF1, 0xDB, 0xAE},
163 {0xD5, 0xD4, 0x4F, 0xF7, 0x20, 0x68, 0x3D, 0x0D},
164 {0x2A, 0x2B, 0xB0, 0x08, 0xDF, 0x97, 0xC2, 0xF2}
165};

Referenced by test_des().

◆ key_data

unsigned char key_data[NUM_TESTS][8]
static

Definition at line 50 of file test_des.c.

50 {
51 {0x12, 0x34, 0x57, 0x79, 0x9b, 0xbc, 0xdf, 0xf1},
52 {0x0e, 0x32, 0x92, 0x32, 0xea, 0x6d, 0x0d, 0x72},
53 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
54 {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
55 {0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
56 {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11},
57 {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF},
58 {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11},
59 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
60 {0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10},
61 {0x7C, 0xA1, 0x10, 0x45, 0x4A, 0x1A, 0x6E, 0x57},
62 {0x01, 0x31, 0xD9, 0x61, 0x9D, 0xC1, 0x37, 0x6E},
63 {0x07, 0xA1, 0x13, 0x3E, 0x4A, 0x0B, 0x26, 0x86},
64 {0x38, 0x49, 0x67, 0x4C, 0x26, 0x02, 0x31, 0x9E},
65 {0x04, 0xB9, 0x15, 0xBA, 0x43, 0xFE, 0xB5, 0xB6},
66 {0x01, 0x13, 0xB9, 0x70, 0xFD, 0x34, 0xF2, 0xCE},
67 {0x01, 0x70, 0xF1, 0x75, 0x46, 0x8F, 0xB5, 0xE6},
68 {0x43, 0x29, 0x7F, 0xAD, 0x38, 0xE3, 0x73, 0xFE},
69 {0x07, 0xA7, 0x13, 0x70, 0x45, 0xDA, 0x2A, 0x16},
70 {0x04, 0x68, 0x91, 0x04, 0xC2, 0xFD, 0x3B, 0x2F},
71 {0x37, 0xD0, 0x6B, 0xB5, 0x16, 0xCB, 0x75, 0x46},
72 {0x1F, 0x08, 0x26, 0x0D, 0x1A, 0xC2, 0x46, 0x5E},
73 {0x58, 0x40, 0x23, 0x64, 0x1A, 0xBA, 0x61, 0x76},
74 {0x02, 0x58, 0x16, 0x16, 0x46, 0x29, 0xB0, 0x07},
75 {0x49, 0x79, 0x3E, 0xBC, 0x79, 0xB3, 0x25, 0x8F},
76 {0x4F, 0xB0, 0x5E, 0x15, 0x15, 0xAB, 0x73, 0xA7},
77 {0x49, 0xE9, 0x5D, 0x6D, 0x4C, 0xA2, 0x29, 0xBF},
78 {0x01, 0x83, 0x10, 0xDC, 0x40, 0x9B, 0x26, 0xD6},
79 {0x1C, 0x58, 0x7F, 0x1C, 0x13, 0x92, 0x4F, 0xEF},
80 {0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01},
81 {0x1F, 0x1F, 0x1F, 0x1F, 0x0E, 0x0E, 0x0E, 0x0E},
82 {0xE0, 0xFE, 0xE0, 0xFE, 0xF1, 0xFE, 0xF1, 0xFE},
83 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
84 {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
85 {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF},
86 {0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10}
87};

Referenced by test_des().

◆ plain_data

unsigned char plain_data[NUM_TESTS][8]
static

Definition at line 89 of file test_des.c.

89 {
90 {0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef},
91 {0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87},
92 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
93 {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
94 {0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01},
95 {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11},
96 {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11},
97 {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF},
98 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
99 {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF},
100 {0x01, 0xA1, 0xD6, 0xD0, 0x39, 0x77, 0x67, 0x42},
101 {0x5C, 0xD5, 0x4C, 0xA8, 0x3D, 0xEF, 0x57, 0xDA},
102 {0x02, 0x48, 0xD4, 0x38, 0x06, 0xF6, 0x71, 0x72},
103 {0x51, 0x45, 0x4B, 0x58, 0x2D, 0xDF, 0x44, 0x0A},
104 {0x42, 0xFD, 0x44, 0x30, 0x59, 0x57, 0x7F, 0xA2},
105 {0x05, 0x9B, 0x5E, 0x08, 0x51, 0xCF, 0x14, 0x3A},
106 {0x07, 0x56, 0xD8, 0xE0, 0x77, 0x47, 0x61, 0xD2},
107 {0x76, 0x25, 0x14, 0xB8, 0x29, 0xBF, 0x48, 0x6A},
108 {0x3B, 0xDD, 0x11, 0x90, 0x49, 0x37, 0x28, 0x02},
109 {0x26, 0x95, 0x5F, 0x68, 0x35, 0xAF, 0x60, 0x9A},
110 {0x16, 0x4D, 0x5E, 0x40, 0x4F, 0x27, 0x52, 0x32},
111 {0x6B, 0x05, 0x6E, 0x18, 0x75, 0x9F, 0x5C, 0xCA},
112 {0x00, 0x4B, 0xD6, 0xEF, 0x09, 0x17, 0x60, 0x62},
113 {0x48, 0x0D, 0x39, 0x00, 0x6E, 0xE7, 0x62, 0xF2},
114 {0x43, 0x75, 0x40, 0xC8, 0x69, 0x8F, 0x3C, 0xFA},
115 {0x07, 0x2D, 0x43, 0xA0, 0x77, 0x07, 0x52, 0x92},
116 {0x02, 0xFE, 0x55, 0x77, 0x81, 0x17, 0xF1, 0x2A},
117 {0x1D, 0x9D, 0x5C, 0x50, 0x18, 0xF7, 0x28, 0xC2},
118 {0x30, 0x55, 0x32, 0x28, 0x6D, 0x6F, 0x29, 0x5A},
119 {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF},
120 {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF},
121 {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF},
122 {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
123 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
124 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
125 {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}
126};

Referenced by test_des().