Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(245)

Side by Side Diff: openssl/crypto/seed/seed.c

Issue 9254031: Upgrade chrome's OpenSSL to same version Android ships with. (Closed) Base URL: http://src.chromium.org/svn/trunk/deps/third_party/openssl/
Patch Set: '' Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « openssl/crypto/seed/seed.h ('k') | openssl/crypto/seed/seed_cbc.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2007 KISA(Korea Information Security Agency). All rights reserv ed. 2 * Copyright (c) 2007 KISA(Korea Information Security Agency). All rights reserv ed.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Neither the name of author nor the names of its contributors may 9 * 2. Neither the name of author nor the names of its contributors may
10 * be used to endorse or promote products derived from this software 10 * be used to endorse or promote products derived from this software
(...skipping 17 matching lines...) Expand all
28 #include <stdio.h> 28 #include <stdio.h>
29 #include <stdlib.h> 29 #include <stdlib.h>
30 #include <string.h> 30 #include <string.h>
31 #ifdef WIN32 31 #ifdef WIN32
32 #include <memory.h> 32 #include <memory.h>
33 #endif 33 #endif
34 34
35 #include <openssl/seed.h> 35 #include <openssl/seed.h>
36 #include "seed_locl.h" 36 #include "seed_locl.h"
37 37
38 static seed_word SS[4][256] = {»{ 38 static const seed_word SS[4][256] = {» {
39 0x2989a1a8, 0x05858184, 0x16c6d2d4, 0x13c3d3d0, 0x14445054, 0x1d0d111c, 0x2c8ca0ac, 0x25052124, 39 0x2989a1a8, 0x05858184, 0x16c6d2d4, 0x13c3d3d0, 0x14445054, 0x1d0d111c, 0x2c8ca0ac, 0x25052124,
40 0x1d4d515c, 0x03434340, 0x18081018, 0x1e0e121c, 0x11415150, 0x3cccf0fc, 0x0acac2c8, 0x23436360, 40 0x1d4d515c, 0x03434340, 0x18081018, 0x1e0e121c, 0x11415150, 0x3cccf0fc, 0x0acac2c8, 0x23436360,
41 0x28082028, 0x04444044, 0x20002020, 0x1d8d919c, 0x20c0e0e0, 0x22c2e2e0, 0x08c8c0c8, 0x17071314, 41 0x28082028, 0x04444044, 0x20002020, 0x1d8d919c, 0x20c0e0e0, 0x22c2e2e0, 0x08c8c0c8, 0x17071314,
42 0x2585a1a4, 0x0f8f838c, 0x03030300, 0x3b4b7378, 0x3b8bb3b8, 0x13031310, 0x12c2d2d0, 0x2ecee2ec, 42 0x2585a1a4, 0x0f8f838c, 0x03030300, 0x3b4b7378, 0x3b8bb3b8, 0x13031310, 0x12c2d2d0, 0x2ecee2ec,
43 0x30407070, 0x0c8c808c, 0x3f0f333c, 0x2888a0a8, 0x32023230, 0x1dcdd1dc, 0x36c6f2f4, 0x34447074, 43 0x30407070, 0x0c8c808c, 0x3f0f333c, 0x2888a0a8, 0x32023230, 0x1dcdd1dc, 0x36c6f2f4, 0x34447074,
44 0x2ccce0ec, 0x15859194, 0x0b0b0308, 0x17475354, 0x1c4c505c, 0x1b4b5358, 0x3d8db1bc, 0x01010100, 44 0x2ccce0ec, 0x15859194, 0x0b0b0308, 0x17475354, 0x1c4c505c, 0x1b4b5358, 0x3d8db1bc, 0x01010100,
45 0x24042024, 0x1c0c101c, 0x33437370, 0x18889098, 0x10001010, 0x0cccc0cc, 0x32c2f2f0, 0x19c9d1d8, 45 0x24042024, 0x1c0c101c, 0x33437370, 0x18889098, 0x10001010, 0x0cccc0cc, 0x32c2f2f0, 0x19c9d1d8,
46 0x2c0c202c, 0x27c7e3e4, 0x32427270, 0x03838380, 0x1b8b9398, 0x11c1d1d0, 0x06868284, 0x09c9c1c8, 46 0x2c0c202c, 0x27c7e3e4, 0x32427270, 0x03838380, 0x1b8b9398, 0x11c1d1d0, 0x06868284, 0x09c9c1c8,
47 0x20406060, 0x10405050, 0x2383a3a0, 0x2bcbe3e8, 0x0d0d010c, 0x3686b2b4, 0x1e8e929c, 0x0f4f434c, 47 0x20406060, 0x10405050, 0x2383a3a0, 0x2bcbe3e8, 0x0d0d010c, 0x3686b2b4, 0x1e8e929c, 0x0f4f434c,
48 0x3787b3b4, 0x1a4a5258, 0x06c6c2c4, 0x38487078, 0x2686a2a4, 0x12021210, 0x2f8fa3ac, 0x15c5d1d4, 48 0x3787b3b4, 0x1a4a5258, 0x06c6c2c4, 0x38487078, 0x2686a2a4, 0x12021210, 0x2f8fa3ac, 0x15c5d1d4,
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 #define KC7 0x1bbcdccf 180 #define KC7 0x1bbcdccf
181 #define KC8 0x3779b99e 181 #define KC8 0x3779b99e
182 #define KC9 0x6ef3733c 182 #define KC9 0x6ef3733c
183 #define KC10 0xdde6e678 183 #define KC10 0xdde6e678
184 #define KC11 0xbbcdccf1 184 #define KC11 0xbbcdccf1
185 #define KC12 0x779b99e3 185 #define KC12 0x779b99e3
186 #define KC13 0xef3733c6 186 #define KC13 0xef3733c6
187 #define KC14 0xde6e678d 187 #define KC14 0xde6e678d
188 #define KC15 0xbcdccf1b 188 #define KC15 0xbcdccf1b
189 189
190 #if defined(OPENSSL_SMALL_FOOTPRINT)
191 static const seed_word KC[] = {
192 KC0, KC1, KC2, KC3, KC4, KC5, KC6, KC7,
193 KC8, KC9, KC10, KC11, KC12, KC13, KC14, KC15 };
194 #endif
190 195
191 void SEED_set_key(const unsigned char rawkey[SEED_KEY_LENGTH], SEED_KEY_SCHEDULE *ks) 196 void SEED_set_key(const unsigned char rawkey[SEED_KEY_LENGTH], SEED_KEY_SCHEDULE *ks)
192 { 197 {
193 seed_word x1, x2, x3, x4; 198 seed_word x1, x2, x3, x4;
194 seed_word t0, t1; 199 seed_word t0, t1;
195 200
196 char2word(rawkey , x1); 201 char2word(rawkey , x1);
197 char2word(rawkey+4 , x2); 202 char2word(rawkey+4 , x2);
198 char2word(rawkey+8 , x3); 203 char2word(rawkey+8 , x3);
199 char2word(rawkey+12, x4); 204 char2word(rawkey+12, x4);
200 205
201 t0 = (x1 + x3 - KC0) & 0xffffffff; 206 t0 = (x1 + x3 - KC0) & 0xffffffff;
202 t1 = (x2 - x4 + KC0) & 0xffffffff; KEYUPDATE_TEMP(t0 , t1, &ks->data[0]); 207 t1 = (x2 - x4 + KC0) & 0xffffffff; KEYUPDATE_TEMP(t0 , t1, &ks->data[0]);
203 KEYSCHEDULE_UPDATE1(t0, t1, x1, x2, x3, x4, KC1); KEYUPDATE_TEMP(t0 , t1, &ks->data[2]); 208 KEYSCHEDULE_UPDATE1(t0, t1, x1, x2, x3, x4, KC1); KEYUPDATE_TEMP(t0 , t1, &ks->data[2]);
209
210 #if !defined(OPENSSL_SMALL_FOOTPRINT)
204 KEYSCHEDULE_UPDATE0(t0, t1, x1, x2, x3, x4, KC2); KEYUPDATE_TEMP(t0 , t1, &ks->data[4]); 211 KEYSCHEDULE_UPDATE0(t0, t1, x1, x2, x3, x4, KC2); KEYUPDATE_TEMP(t0 , t1, &ks->data[4]);
205 KEYSCHEDULE_UPDATE1(t0, t1, x1, x2, x3, x4, KC3); KEYUPDATE_TEMP(t0 , t1, &ks->data[6]); 212 KEYSCHEDULE_UPDATE1(t0, t1, x1, x2, x3, x4, KC3); KEYUPDATE_TEMP(t0 , t1, &ks->data[6]);
206 KEYSCHEDULE_UPDATE0(t0, t1, x1, x2, x3, x4, KC4); KEYUPDATE_TEMP(t0 , t1, &ks->data[8]); 213 KEYSCHEDULE_UPDATE0(t0, t1, x1, x2, x3, x4, KC4); KEYUPDATE_TEMP(t0 , t1, &ks->data[8]);
207 KEYSCHEDULE_UPDATE1(t0, t1, x1, x2, x3, x4, KC5); KEYUPDATE_TEMP(t0 , t1, &ks->data[10]); 214 KEYSCHEDULE_UPDATE1(t0, t1, x1, x2, x3, x4, KC5); KEYUPDATE_TEMP(t0 , t1, &ks->data[10]);
208 KEYSCHEDULE_UPDATE0(t0, t1, x1, x2, x3, x4, KC6); KEYUPDATE_TEMP(t0 , t1, &ks->data[12]); 215 KEYSCHEDULE_UPDATE0(t0, t1, x1, x2, x3, x4, KC6); KEYUPDATE_TEMP(t0 , t1, &ks->data[12]);
209 KEYSCHEDULE_UPDATE1(t0, t1, x1, x2, x3, x4, KC7); KEYUPDATE_TEMP(t0 , t1, &ks->data[14]); 216 KEYSCHEDULE_UPDATE1(t0, t1, x1, x2, x3, x4, KC7); KEYUPDATE_TEMP(t0 , t1, &ks->data[14]);
210 KEYSCHEDULE_UPDATE0(t0, t1, x1, x2, x3, x4, KC8); KEYUPDATE_TEMP(t0 , t1, &ks->data[16]); 217 KEYSCHEDULE_UPDATE0(t0, t1, x1, x2, x3, x4, KC8); KEYUPDATE_TEMP(t0 , t1, &ks->data[16]);
211 KEYSCHEDULE_UPDATE1(t0, t1, x1, x2, x3, x4, KC9); KEYUPDATE_TEMP(t0 , t1, &ks->data[18]); 218 KEYSCHEDULE_UPDATE1(t0, t1, x1, x2, x3, x4, KC9); KEYUPDATE_TEMP(t0 , t1, &ks->data[18]);
212 KEYSCHEDULE_UPDATE0(t0, t1, x1, x2, x3, x4, KC10); KEYUPDATE_TEMP(t0 , t1, &ks->data[20]); 219 KEYSCHEDULE_UPDATE0(t0, t1, x1, x2, x3, x4, KC10); KEYUPDATE_TEMP(t0 , t1, &ks->data[20]);
213 KEYSCHEDULE_UPDATE1(t0, t1, x1, x2, x3, x4, KC11); KEYUPDATE_TEMP(t0 , t1, &ks->data[22]); 220 KEYSCHEDULE_UPDATE1(t0, t1, x1, x2, x3, x4, KC11); KEYUPDATE_TEMP(t0 , t1, &ks->data[22]);
214 KEYSCHEDULE_UPDATE0(t0, t1, x1, x2, x3, x4, KC12); KEYUPDATE_TEMP(t0 , t1, &ks->data[24]); 221 KEYSCHEDULE_UPDATE0(t0, t1, x1, x2, x3, x4, KC12); KEYUPDATE_TEMP(t0 , t1, &ks->data[24]);
215 KEYSCHEDULE_UPDATE1(t0, t1, x1, x2, x3, x4, KC13); KEYUPDATE_TEMP(t0 , t1, &ks->data[26]); 222 KEYSCHEDULE_UPDATE1(t0, t1, x1, x2, x3, x4, KC13); KEYUPDATE_TEMP(t0 , t1, &ks->data[26]);
216 KEYSCHEDULE_UPDATE0(t0, t1, x1, x2, x3, x4, KC14); KEYUPDATE_TEMP(t0 , t1, &ks->data[28]); 223 KEYSCHEDULE_UPDATE0(t0, t1, x1, x2, x3, x4, KC14); KEYUPDATE_TEMP(t0 , t1, &ks->data[28]);
217 KEYSCHEDULE_UPDATE1(t0, t1, x1, x2, x3, x4, KC15); KEYUPDATE_TEMP(t0 , t1, &ks->data[30]); 224 KEYSCHEDULE_UPDATE1(t0, t1, x1, x2, x3, x4, KC15); KEYUPDATE_TEMP(t0 , t1, &ks->data[30]);
225 #else
226 {
227 int i;
228 for (i=2; i<16; i+=2) {
229 KEYSCHEDULE_UPDATE0(t0, t1, x1, x2, x3, x4, KC[i]);
230 KEYUPDATE_TEMP(t0, t1, &ks->data[i*2]);
231 KEYSCHEDULE_UPDATE1(t0, t1, x1, x2, x3, x4, KC[i+1]);
232 KEYUPDATE_TEMP(t0, t1, &ks->data[i*2+2]);
233 }
234 }
235 #endif
218 } 236 }
219 237
220 void SEED_encrypt(const unsigned char s[SEED_BLOCK_SIZE], unsigned char d[SEED_B LOCK_SIZE], const SEED_KEY_SCHEDULE *ks) 238 void SEED_encrypt(const unsigned char s[SEED_BLOCK_SIZE], unsigned char d[SEED_B LOCK_SIZE], const SEED_KEY_SCHEDULE *ks)
221 { 239 {
222 seed_word x1, x2, x3, x4; 240 seed_word x1, x2, x3, x4;
223 seed_word t0, t1; 241 seed_word t0, t1;
224 242
225 char2word(s, x1); 243 char2word(s, x1);
226 char2word(s+4, x2); 244 char2word(s+4, x2);
227 char2word(s+8, x3); 245 char2word(s+8, x3);
228 char2word(s+12, x4); 246 char2word(s+12, x4);
229 » 247
248 #if !defined(OPENSSL_SMALL_FOOTPRINT)»
230 E_SEED(t0, t1, x1, x2, x3, x4, 0); 249 E_SEED(t0, t1, x1, x2, x3, x4, 0);
231 E_SEED(t0, t1, x3, x4, x1, x2, 2); 250 E_SEED(t0, t1, x3, x4, x1, x2, 2);
232 E_SEED(t0, t1, x1, x2, x3, x4, 4); 251 E_SEED(t0, t1, x1, x2, x3, x4, 4);
233 E_SEED(t0, t1, x3, x4, x1, x2, 6); 252 E_SEED(t0, t1, x3, x4, x1, x2, 6);
234 E_SEED(t0, t1, x1, x2, x3, x4, 8); 253 E_SEED(t0, t1, x1, x2, x3, x4, 8);
235 E_SEED(t0, t1, x3, x4, x1, x2, 10); 254 E_SEED(t0, t1, x3, x4, x1, x2, 10);
236 E_SEED(t0, t1, x1, x2, x3, x4, 12); 255 E_SEED(t0, t1, x1, x2, x3, x4, 12);
237 E_SEED(t0, t1, x3, x4, x1, x2, 14); 256 E_SEED(t0, t1, x3, x4, x1, x2, 14);
238 E_SEED(t0, t1, x1, x2, x3, x4, 16); 257 E_SEED(t0, t1, x1, x2, x3, x4, 16);
239 E_SEED(t0, t1, x3, x4, x1, x2, 18); 258 E_SEED(t0, t1, x3, x4, x1, x2, 18);
240 E_SEED(t0, t1, x1, x2, x3, x4, 20); 259 E_SEED(t0, t1, x1, x2, x3, x4, 20);
241 E_SEED(t0, t1, x3, x4, x1, x2, 22); 260 E_SEED(t0, t1, x3, x4, x1, x2, 22);
242 E_SEED(t0, t1, x1, x2, x3, x4, 24); 261 E_SEED(t0, t1, x1, x2, x3, x4, 24);
243 E_SEED(t0, t1, x3, x4, x1, x2, 26); 262 E_SEED(t0, t1, x3, x4, x1, x2, 26);
244 E_SEED(t0, t1, x1, x2, x3, x4, 28); 263 E_SEED(t0, t1, x1, x2, x3, x4, 28);
245 E_SEED(t0, t1, x3, x4, x1, x2, 30); 264 E_SEED(t0, t1, x3, x4, x1, x2, 30);
265 #else
266 {
267 int i;
268 for (i=0;i<30;i+=4) {
269 E_SEED(t0,t1,x1,x2,x3,x4,i);
270 E_SEED(t0,t1,x3,x4,x1,x2,i+2);
271 }
272 }
273 #endif
246 274
247 word2char(x3, d); 275 word2char(x3, d);
248 word2char(x4, d+4); 276 word2char(x4, d+4);
249 word2char(x1, d+8); 277 word2char(x1, d+8);
250 word2char(x2, d+12); 278 word2char(x2, d+12);
251 } 279 }
252 280
253 void SEED_decrypt(const unsigned char s[SEED_BLOCK_SIZE], unsigned char d[SEED_B LOCK_SIZE], const SEED_KEY_SCHEDULE *ks) 281 void SEED_decrypt(const unsigned char s[SEED_BLOCK_SIZE], unsigned char d[SEED_B LOCK_SIZE], const SEED_KEY_SCHEDULE *ks)
254 { 282 {
255 seed_word x1, x2, x3, x4; 283 seed_word x1, x2, x3, x4;
256 seed_word t0, t1; 284 seed_word t0, t1;
257 285
258 char2word(s, x1); 286 char2word(s, x1);
259 char2word(s+4, x2); 287 char2word(s+4, x2);
260 char2word(s+8, x3); 288 char2word(s+8, x3);
261 char2word(s+12, x4); 289 char2word(s+12, x4);
262 » 290
291 #if !defined(OPENSSL_SMALL_FOOTPRINT)
263 E_SEED(t0, t1, x1, x2, x3, x4, 30); 292 E_SEED(t0, t1, x1, x2, x3, x4, 30);
264 E_SEED(t0, t1, x3, x4, x1, x2, 28); 293 E_SEED(t0, t1, x3, x4, x1, x2, 28);
265 E_SEED(t0, t1, x1, x2, x3, x4, 26); 294 E_SEED(t0, t1, x1, x2, x3, x4, 26);
266 E_SEED(t0, t1, x3, x4, x1, x2, 24); 295 E_SEED(t0, t1, x3, x4, x1, x2, 24);
267 E_SEED(t0, t1, x1, x2, x3, x4, 22); 296 E_SEED(t0, t1, x1, x2, x3, x4, 22);
268 E_SEED(t0, t1, x3, x4, x1, x2, 20); 297 E_SEED(t0, t1, x3, x4, x1, x2, 20);
269 E_SEED(t0, t1, x1, x2, x3, x4, 18); 298 E_SEED(t0, t1, x1, x2, x3, x4, 18);
270 E_SEED(t0, t1, x3, x4, x1, x2, 16); 299 E_SEED(t0, t1, x3, x4, x1, x2, 16);
271 E_SEED(t0, t1, x1, x2, x3, x4, 14); 300 E_SEED(t0, t1, x1, x2, x3, x4, 14);
272 E_SEED(t0, t1, x3, x4, x1, x2, 12); 301 E_SEED(t0, t1, x3, x4, x1, x2, 12);
273 E_SEED(t0, t1, x1, x2, x3, x4, 10); 302 E_SEED(t0, t1, x1, x2, x3, x4, 10);
274 E_SEED(t0, t1, x3, x4, x1, x2, 8); 303 E_SEED(t0, t1, x3, x4, x1, x2, 8);
275 E_SEED(t0, t1, x1, x2, x3, x4, 6); 304 E_SEED(t0, t1, x1, x2, x3, x4, 6);
276 E_SEED(t0, t1, x3, x4, x1, x2, 4); 305 E_SEED(t0, t1, x3, x4, x1, x2, 4);
277 E_SEED(t0, t1, x1, x2, x3, x4, 2); 306 E_SEED(t0, t1, x1, x2, x3, x4, 2);
278 E_SEED(t0, t1, x3, x4, x1, x2, 0); 307 E_SEED(t0, t1, x3, x4, x1, x2, 0);
308 #else
309 {
310 int i;
311 for (i=30; i>0; i-=4) {
312 E_SEED(t0, t1, x1, x2, x3, x4, i);
313 E_SEED(t0, t1, x3, x4, x1, x2, i-2);
314
315 }
316 }
317 #endif
279 318
280 word2char(x3, d); 319 word2char(x3, d);
281 word2char(x4, d+4); 320 word2char(x4, d+4);
282 word2char(x1, d+8); 321 word2char(x1, d+8);
283 word2char(x2, d+12); 322 word2char(x2, d+12);
284 } 323 }
285 324
286 #endif /* OPENSSL_NO_SEED */ 325 #endif /* OPENSSL_NO_SEED */
OLDNEW
« no previous file with comments | « openssl/crypto/seed/seed.h ('k') | openssl/crypto/seed/seed_cbc.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698