mbed TLS library
Dependents: HTTPClient-SSL WS_SERVER
blowfish.c
00001 /* 00002 * Blowfish implementation 00003 * 00004 * Copyright (C) 2012-2014, ARM Limited, All Rights Reserved 00005 * 00006 * This file is part of mbed TLS (https://tls.mbed.org) 00007 * 00008 * This program is free software; you can redistribute it and/or modify 00009 * it under the terms of the GNU General Public License as published by 00010 * the Free Software Foundation; either version 2 of the License, or 00011 * (at your option) any later version. 00012 * 00013 * This program is distributed in the hope that it will be useful, 00014 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00016 * GNU General Public License for more details. 00017 * 00018 * You should have received a copy of the GNU General Public License along 00019 * with this program; if not, write to the Free Software Foundation, Inc., 00020 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 00021 */ 00022 /* 00023 * The Blowfish block cipher was designed by Bruce Schneier in 1993. 00024 * http://www.schneier.com/blowfish.html 00025 * http://en.wikipedia.org/wiki/Blowfish_%28cipher%29 00026 * 00027 */ 00028 00029 #if !defined(POLARSSL_CONFIG_FILE) 00030 #include "polarssl/config.h" 00031 #else 00032 #include POLARSSL_CONFIG_FILE 00033 #endif 00034 00035 #if defined(POLARSSL_BLOWFISH_C) 00036 00037 #include "polarssl/blowfish.h" 00038 00039 #include <string.h> 00040 00041 #if !defined(POLARSSL_BLOWFISH_ALT) 00042 00043 /* Implementation that should never be optimized out by the compiler */ 00044 static void polarssl_zeroize( void *v, size_t n ) { 00045 volatile unsigned char *p = v; while( n-- ) *p++ = 0; 00046 } 00047 00048 /* 00049 * 32-bit integer manipulation macros (big endian) 00050 */ 00051 #ifndef GET_UINT32_BE 00052 #define GET_UINT32_BE(n,b,i) \ 00053 { \ 00054 (n) = ( (uint32_t) (b)[(i) ] << 24 ) \ 00055 | ( (uint32_t) (b)[(i) + 1] << 16 ) \ 00056 | ( (uint32_t) (b)[(i) + 2] << 8 ) \ 00057 | ( (uint32_t) (b)[(i) + 3] ); \ 00058 } 00059 #endif 00060 00061 #ifndef PUT_UINT32_BE 00062 #define PUT_UINT32_BE(n,b,i) \ 00063 { \ 00064 (b)[(i) ] = (unsigned char) ( (n) >> 24 ); \ 00065 (b)[(i) + 1] = (unsigned char) ( (n) >> 16 ); \ 00066 (b)[(i) + 2] = (unsigned char) ( (n) >> 8 ); \ 00067 (b)[(i) + 3] = (unsigned char) ( (n) ); \ 00068 } 00069 #endif 00070 00071 static const uint32_t P[BLOWFISH_ROUNDS + 2] = { 00072 0x243F6A88L, 0x85A308D3L, 0x13198A2EL, 0x03707344L, 00073 0xA4093822L, 0x299F31D0L, 0x082EFA98L, 0xEC4E6C89L, 00074 0x452821E6L, 0x38D01377L, 0xBE5466CFL, 0x34E90C6CL, 00075 0xC0AC29B7L, 0xC97C50DDL, 0x3F84D5B5L, 0xB5470917L, 00076 0x9216D5D9L, 0x8979FB1BL 00077 }; 00078 00079 /* declarations of data at the end of this file */ 00080 static const uint32_t S[4][256]; 00081 00082 static uint32_t F( blowfish_context *ctx, uint32_t x ) 00083 { 00084 unsigned short a, b, c, d; 00085 uint32_t y; 00086 00087 d = (unsigned short)(x & 0xFF); 00088 x >>= 8; 00089 c = (unsigned short)(x & 0xFF); 00090 x >>= 8; 00091 b = (unsigned short)(x & 0xFF); 00092 x >>= 8; 00093 a = (unsigned short)(x & 0xFF); 00094 y = ctx->S [0][a] + ctx->S [1][b]; 00095 y = y ^ ctx->S [2][c]; 00096 y = y + ctx->S [3][d]; 00097 00098 return( y ); 00099 } 00100 00101 static void blowfish_enc( blowfish_context *ctx, uint32_t *xl, uint32_t *xr ) 00102 { 00103 uint32_t Xl, Xr, temp; 00104 short i; 00105 00106 Xl = *xl; 00107 Xr = *xr; 00108 00109 for( i = 0; i < BLOWFISH_ROUNDS; ++i ) 00110 { 00111 Xl = Xl ^ ctx->P [i]; 00112 Xr = F( ctx, Xl ) ^ Xr; 00113 00114 temp = Xl; 00115 Xl = Xr; 00116 Xr = temp; 00117 } 00118 00119 temp = Xl; 00120 Xl = Xr; 00121 Xr = temp; 00122 00123 Xr = Xr ^ ctx->P [BLOWFISH_ROUNDS]; 00124 Xl = Xl ^ ctx->P [BLOWFISH_ROUNDS + 1]; 00125 00126 *xl = Xl; 00127 *xr = Xr; 00128 } 00129 00130 static void blowfish_dec( blowfish_context *ctx, uint32_t *xl, uint32_t *xr ) 00131 { 00132 uint32_t Xl, Xr, temp; 00133 short i; 00134 00135 Xl = *xl; 00136 Xr = *xr; 00137 00138 for( i = BLOWFISH_ROUNDS + 1; i > 1; --i ) 00139 { 00140 Xl = Xl ^ ctx->P [i]; 00141 Xr = F( ctx, Xl ) ^ Xr; 00142 00143 temp = Xl; 00144 Xl = Xr; 00145 Xr = temp; 00146 } 00147 00148 temp = Xl; 00149 Xl = Xr; 00150 Xr = temp; 00151 00152 Xr = Xr ^ ctx->P [1]; 00153 Xl = Xl ^ ctx->P [0]; 00154 00155 *xl = Xl; 00156 *xr = Xr; 00157 } 00158 00159 void blowfish_init( blowfish_context *ctx ) 00160 { 00161 memset( ctx, 0, sizeof( blowfish_context ) ); 00162 } 00163 00164 void blowfish_free( blowfish_context *ctx ) 00165 { 00166 if( ctx == NULL ) 00167 return; 00168 00169 polarssl_zeroize( ctx, sizeof( blowfish_context ) ); 00170 } 00171 00172 /* 00173 * Blowfish key schedule 00174 */ 00175 int blowfish_setkey( blowfish_context *ctx, const unsigned char *key, 00176 unsigned int keysize ) 00177 { 00178 unsigned int i, j, k; 00179 uint32_t data, datal, datar; 00180 00181 if( keysize < BLOWFISH_MIN_KEY || keysize > BLOWFISH_MAX_KEY || 00182 ( keysize % 8 ) ) 00183 { 00184 return( POLARSSL_ERR_BLOWFISH_INVALID_KEY_LENGTH ); 00185 } 00186 00187 keysize >>= 3; 00188 00189 for( i = 0; i < 4; i++ ) 00190 { 00191 for( j = 0; j < 256; j++ ) 00192 ctx->S [i][j] = S[i][j]; 00193 } 00194 00195 j = 0; 00196 for( i = 0; i < BLOWFISH_ROUNDS + 2; ++i ) 00197 { 00198 data = 0x00000000; 00199 for( k = 0; k < 4; ++k ) 00200 { 00201 data = ( data << 8 ) | key[j++]; 00202 if( j >= keysize ) 00203 j = 0; 00204 } 00205 ctx->P [i] = P[i] ^ data; 00206 } 00207 00208 datal = 0x00000000; 00209 datar = 0x00000000; 00210 00211 for( i = 0; i < BLOWFISH_ROUNDS + 2; i += 2 ) 00212 { 00213 blowfish_enc( ctx, &datal, &datar ); 00214 ctx->P [i] = datal; 00215 ctx->P [i + 1] = datar; 00216 } 00217 00218 for( i = 0; i < 4; i++ ) 00219 { 00220 for( j = 0; j < 256; j += 2 ) 00221 { 00222 blowfish_enc( ctx, &datal, &datar ); 00223 ctx->S [i][j] = datal; 00224 ctx->S [i][j + 1] = datar; 00225 } 00226 } 00227 return( 0 ); 00228 } 00229 00230 /* 00231 * Blowfish-ECB block encryption/decryption 00232 */ 00233 int blowfish_crypt_ecb( blowfish_context *ctx, 00234 int mode, 00235 const unsigned char input[BLOWFISH_BLOCKSIZE], 00236 unsigned char output[BLOWFISH_BLOCKSIZE] ) 00237 { 00238 uint32_t X0, X1; 00239 00240 GET_UINT32_BE( X0, input, 0 ); 00241 GET_UINT32_BE( X1, input, 4 ); 00242 00243 if( mode == BLOWFISH_DECRYPT ) 00244 { 00245 blowfish_dec( ctx, &X0, &X1 ); 00246 } 00247 else /* BLOWFISH_ENCRYPT */ 00248 { 00249 blowfish_enc( ctx, &X0, &X1 ); 00250 } 00251 00252 PUT_UINT32_BE( X0, output, 0 ); 00253 PUT_UINT32_BE( X1, output, 4 ); 00254 00255 return( 0 ); 00256 } 00257 00258 #if defined(POLARSSL_CIPHER_MODE_CBC) 00259 /* 00260 * Blowfish-CBC buffer encryption/decryption 00261 */ 00262 int blowfish_crypt_cbc( blowfish_context *ctx, 00263 int mode, 00264 size_t length, 00265 unsigned char iv[BLOWFISH_BLOCKSIZE], 00266 const unsigned char *input, 00267 unsigned char *output ) 00268 { 00269 int i; 00270 unsigned char temp[BLOWFISH_BLOCKSIZE]; 00271 00272 if( length % BLOWFISH_BLOCKSIZE ) 00273 return( POLARSSL_ERR_BLOWFISH_INVALID_INPUT_LENGTH ); 00274 00275 if( mode == BLOWFISH_DECRYPT ) 00276 { 00277 while( length > 0 ) 00278 { 00279 memcpy( temp, input, BLOWFISH_BLOCKSIZE ); 00280 blowfish_crypt_ecb( ctx, mode, input, output ); 00281 00282 for( i = 0; i < BLOWFISH_BLOCKSIZE;i++ ) 00283 output[i] = (unsigned char)( output[i] ^ iv[i] ); 00284 00285 memcpy( iv, temp, BLOWFISH_BLOCKSIZE ); 00286 00287 input += BLOWFISH_BLOCKSIZE; 00288 output += BLOWFISH_BLOCKSIZE; 00289 length -= BLOWFISH_BLOCKSIZE; 00290 } 00291 } 00292 else 00293 { 00294 while( length > 0 ) 00295 { 00296 for( i = 0; i < BLOWFISH_BLOCKSIZE; i++ ) 00297 output[i] = (unsigned char)( input[i] ^ iv[i] ); 00298 00299 blowfish_crypt_ecb( ctx, mode, output, output ); 00300 memcpy( iv, output, BLOWFISH_BLOCKSIZE ); 00301 00302 input += BLOWFISH_BLOCKSIZE; 00303 output += BLOWFISH_BLOCKSIZE; 00304 length -= BLOWFISH_BLOCKSIZE; 00305 } 00306 } 00307 00308 return( 0 ); 00309 } 00310 #endif /* POLARSSL_CIPHER_MODE_CBC */ 00311 00312 #if defined(POLARSSL_CIPHER_MODE_CFB) 00313 /* 00314 * Blowfish CFB buffer encryption/decryption 00315 */ 00316 int blowfish_crypt_cfb64( blowfish_context *ctx, 00317 int mode, 00318 size_t length, 00319 size_t *iv_off, 00320 unsigned char iv[BLOWFISH_BLOCKSIZE], 00321 const unsigned char *input, 00322 unsigned char *output ) 00323 { 00324 int c; 00325 size_t n = *iv_off; 00326 00327 if( mode == BLOWFISH_DECRYPT ) 00328 { 00329 while( length-- ) 00330 { 00331 if( n == 0 ) 00332 blowfish_crypt_ecb( ctx, BLOWFISH_ENCRYPT, iv, iv ); 00333 00334 c = *input++; 00335 *output++ = (unsigned char)( c ^ iv[n] ); 00336 iv[n] = (unsigned char) c; 00337 00338 n = ( n + 1 ) % BLOWFISH_BLOCKSIZE; 00339 } 00340 } 00341 else 00342 { 00343 while( length-- ) 00344 { 00345 if( n == 0 ) 00346 blowfish_crypt_ecb( ctx, BLOWFISH_ENCRYPT, iv, iv ); 00347 00348 iv[n] = *output++ = (unsigned char)( iv[n] ^ *input++ ); 00349 00350 n = ( n + 1 ) % BLOWFISH_BLOCKSIZE; 00351 } 00352 } 00353 00354 *iv_off = n; 00355 00356 return( 0 ); 00357 } 00358 #endif /*POLARSSL_CIPHER_MODE_CFB */ 00359 00360 #if defined(POLARSSL_CIPHER_MODE_CTR) 00361 /* 00362 * Blowfish CTR buffer encryption/decryption 00363 */ 00364 int blowfish_crypt_ctr( blowfish_context *ctx, 00365 size_t length, 00366 size_t *nc_off, 00367 unsigned char nonce_counter[BLOWFISH_BLOCKSIZE], 00368 unsigned char stream_block[BLOWFISH_BLOCKSIZE], 00369 const unsigned char *input, 00370 unsigned char *output ) 00371 { 00372 int c, i; 00373 size_t n = *nc_off; 00374 00375 while( length-- ) 00376 { 00377 if( n == 0 ) { 00378 blowfish_crypt_ecb( ctx, BLOWFISH_ENCRYPT, nonce_counter, 00379 stream_block ); 00380 00381 for( i = BLOWFISH_BLOCKSIZE; i > 0; i-- ) 00382 if( ++nonce_counter[i - 1] != 0 ) 00383 break; 00384 } 00385 c = *input++; 00386 *output++ = (unsigned char)( c ^ stream_block[n] ); 00387 00388 n = ( n + 1 ) % BLOWFISH_BLOCKSIZE; 00389 } 00390 00391 *nc_off = n; 00392 00393 return( 0 ); 00394 } 00395 #endif /* POLARSSL_CIPHER_MODE_CTR */ 00396 00397 static const uint32_t S[4][256] = { 00398 { 0xD1310BA6L, 0x98DFB5ACL, 0x2FFD72DBL, 0xD01ADFB7L, 00399 0xB8E1AFEDL, 0x6A267E96L, 0xBA7C9045L, 0xF12C7F99L, 00400 0x24A19947L, 0xB3916CF7L, 0x0801F2E2L, 0x858EFC16L, 00401 0x636920D8L, 0x71574E69L, 0xA458FEA3L, 0xF4933D7EL, 00402 0x0D95748FL, 0x728EB658L, 0x718BCD58L, 0x82154AEEL, 00403 0x7B54A41DL, 0xC25A59B5L, 0x9C30D539L, 0x2AF26013L, 00404 0xC5D1B023L, 0x286085F0L, 0xCA417918L, 0xB8DB38EFL, 00405 0x8E79DCB0L, 0x603A180EL, 0x6C9E0E8BL, 0xB01E8A3EL, 00406 0xD71577C1L, 0xBD314B27L, 0x78AF2FDAL, 0x55605C60L, 00407 0xE65525F3L, 0xAA55AB94L, 0x57489862L, 0x63E81440L, 00408 0x55CA396AL, 0x2AAB10B6L, 0xB4CC5C34L, 0x1141E8CEL, 00409 0xA15486AFL, 0x7C72E993L, 0xB3EE1411L, 0x636FBC2AL, 00410 0x2BA9C55DL, 0x741831F6L, 0xCE5C3E16L, 0x9B87931EL, 00411 0xAFD6BA33L, 0x6C24CF5CL, 0x7A325381L, 0x28958677L, 00412 0x3B8F4898L, 0x6B4BB9AFL, 0xC4BFE81BL, 0x66282193L, 00413 0x61D809CCL, 0xFB21A991L, 0x487CAC60L, 0x5DEC8032L, 00414 0xEF845D5DL, 0xE98575B1L, 0xDC262302L, 0xEB651B88L, 00415 0x23893E81L, 0xD396ACC5L, 0x0F6D6FF3L, 0x83F44239L, 00416 0x2E0B4482L, 0xA4842004L, 0x69C8F04AL, 0x9E1F9B5EL, 00417 0x21C66842L, 0xF6E96C9AL, 0x670C9C61L, 0xABD388F0L, 00418 0x6A51A0D2L, 0xD8542F68L, 0x960FA728L, 0xAB5133A3L, 00419 0x6EEF0B6CL, 0x137A3BE4L, 0xBA3BF050L, 0x7EFB2A98L, 00420 0xA1F1651DL, 0x39AF0176L, 0x66CA593EL, 0x82430E88L, 00421 0x8CEE8619L, 0x456F9FB4L, 0x7D84A5C3L, 0x3B8B5EBEL, 00422 0xE06F75D8L, 0x85C12073L, 0x401A449FL, 0x56C16AA6L, 00423 0x4ED3AA62L, 0x363F7706L, 0x1BFEDF72L, 0x429B023DL, 00424 0x37D0D724L, 0xD00A1248L, 0xDB0FEAD3L, 0x49F1C09BL, 00425 0x075372C9L, 0x80991B7BL, 0x25D479D8L, 0xF6E8DEF7L, 00426 0xE3FE501AL, 0xB6794C3BL, 0x976CE0BDL, 0x04C006BAL, 00427 0xC1A94FB6L, 0x409F60C4L, 0x5E5C9EC2L, 0x196A2463L, 00428 0x68FB6FAFL, 0x3E6C53B5L, 0x1339B2EBL, 0x3B52EC6FL, 00429 0x6DFC511FL, 0x9B30952CL, 0xCC814544L, 0xAF5EBD09L, 00430 0xBEE3D004L, 0xDE334AFDL, 0x660F2807L, 0x192E4BB3L, 00431 0xC0CBA857L, 0x45C8740FL, 0xD20B5F39L, 0xB9D3FBDBL, 00432 0x5579C0BDL, 0x1A60320AL, 0xD6A100C6L, 0x402C7279L, 00433 0x679F25FEL, 0xFB1FA3CCL, 0x8EA5E9F8L, 0xDB3222F8L, 00434 0x3C7516DFL, 0xFD616B15L, 0x2F501EC8L, 0xAD0552ABL, 00435 0x323DB5FAL, 0xFD238760L, 0x53317B48L, 0x3E00DF82L, 00436 0x9E5C57BBL, 0xCA6F8CA0L, 0x1A87562EL, 0xDF1769DBL, 00437 0xD542A8F6L, 0x287EFFC3L, 0xAC6732C6L, 0x8C4F5573L, 00438 0x695B27B0L, 0xBBCA58C8L, 0xE1FFA35DL, 0xB8F011A0L, 00439 0x10FA3D98L, 0xFD2183B8L, 0x4AFCB56CL, 0x2DD1D35BL, 00440 0x9A53E479L, 0xB6F84565L, 0xD28E49BCL, 0x4BFB9790L, 00441 0xE1DDF2DAL, 0xA4CB7E33L, 0x62FB1341L, 0xCEE4C6E8L, 00442 0xEF20CADAL, 0x36774C01L, 0xD07E9EFEL, 0x2BF11FB4L, 00443 0x95DBDA4DL, 0xAE909198L, 0xEAAD8E71L, 0x6B93D5A0L, 00444 0xD08ED1D0L, 0xAFC725E0L, 0x8E3C5B2FL, 0x8E7594B7L, 00445 0x8FF6E2FBL, 0xF2122B64L, 0x8888B812L, 0x900DF01CL, 00446 0x4FAD5EA0L, 0x688FC31CL, 0xD1CFF191L, 0xB3A8C1ADL, 00447 0x2F2F2218L, 0xBE0E1777L, 0xEA752DFEL, 0x8B021FA1L, 00448 0xE5A0CC0FL, 0xB56F74E8L, 0x18ACF3D6L, 0xCE89E299L, 00449 0xB4A84FE0L, 0xFD13E0B7L, 0x7CC43B81L, 0xD2ADA8D9L, 00450 0x165FA266L, 0x80957705L, 0x93CC7314L, 0x211A1477L, 00451 0xE6AD2065L, 0x77B5FA86L, 0xC75442F5L, 0xFB9D35CFL, 00452 0xEBCDAF0CL, 0x7B3E89A0L, 0xD6411BD3L, 0xAE1E7E49L, 00453 0x00250E2DL, 0x2071B35EL, 0x226800BBL, 0x57B8E0AFL, 00454 0x2464369BL, 0xF009B91EL, 0x5563911DL, 0x59DFA6AAL, 00455 0x78C14389L, 0xD95A537FL, 0x207D5BA2L, 0x02E5B9C5L, 00456 0x83260376L, 0x6295CFA9L, 0x11C81968L, 0x4E734A41L, 00457 0xB3472DCAL, 0x7B14A94AL, 0x1B510052L, 0x9A532915L, 00458 0xD60F573FL, 0xBC9BC6E4L, 0x2B60A476L, 0x81E67400L, 00459 0x08BA6FB5L, 0x571BE91FL, 0xF296EC6BL, 0x2A0DD915L, 00460 0xB6636521L, 0xE7B9F9B6L, 0xFF34052EL, 0xC5855664L, 00461 0x53B02D5DL, 0xA99F8FA1L, 0x08BA4799L, 0x6E85076AL }, 00462 { 0x4B7A70E9L, 0xB5B32944L, 0xDB75092EL, 0xC4192623L, 00463 0xAD6EA6B0L, 0x49A7DF7DL, 0x9CEE60B8L, 0x8FEDB266L, 00464 0xECAA8C71L, 0x699A17FFL, 0x5664526CL, 0xC2B19EE1L, 00465 0x193602A5L, 0x75094C29L, 0xA0591340L, 0xE4183A3EL, 00466 0x3F54989AL, 0x5B429D65L, 0x6B8FE4D6L, 0x99F73FD6L, 00467 0xA1D29C07L, 0xEFE830F5L, 0x4D2D38E6L, 0xF0255DC1L, 00468 0x4CDD2086L, 0x8470EB26L, 0x6382E9C6L, 0x021ECC5EL, 00469 0x09686B3FL, 0x3EBAEFC9L, 0x3C971814L, 0x6B6A70A1L, 00470 0x687F3584L, 0x52A0E286L, 0xB79C5305L, 0xAA500737L, 00471 0x3E07841CL, 0x7FDEAE5CL, 0x8E7D44ECL, 0x5716F2B8L, 00472 0xB03ADA37L, 0xF0500C0DL, 0xF01C1F04L, 0x0200B3FFL, 00473 0xAE0CF51AL, 0x3CB574B2L, 0x25837A58L, 0xDC0921BDL, 00474 0xD19113F9L, 0x7CA92FF6L, 0x94324773L, 0x22F54701L, 00475 0x3AE5E581L, 0x37C2DADCL, 0xC8B57634L, 0x9AF3DDA7L, 00476 0xA9446146L, 0x0FD0030EL, 0xECC8C73EL, 0xA4751E41L, 00477 0xE238CD99L, 0x3BEA0E2FL, 0x3280BBA1L, 0x183EB331L, 00478 0x4E548B38L, 0x4F6DB908L, 0x6F420D03L, 0xF60A04BFL, 00479 0x2CB81290L, 0x24977C79L, 0x5679B072L, 0xBCAF89AFL, 00480 0xDE9A771FL, 0xD9930810L, 0xB38BAE12L, 0xDCCF3F2EL, 00481 0x5512721FL, 0x2E6B7124L, 0x501ADDE6L, 0x9F84CD87L, 00482 0x7A584718L, 0x7408DA17L, 0xBC9F9ABCL, 0xE94B7D8CL, 00483 0xEC7AEC3AL, 0xDB851DFAL, 0x63094366L, 0xC464C3D2L, 00484 0xEF1C1847L, 0x3215D908L, 0xDD433B37L, 0x24C2BA16L, 00485 0x12A14D43L, 0x2A65C451L, 0x50940002L, 0x133AE4DDL, 00486 0x71DFF89EL, 0x10314E55L, 0x81AC77D6L, 0x5F11199BL, 00487 0x043556F1L, 0xD7A3C76BL, 0x3C11183BL, 0x5924A509L, 00488 0xF28FE6EDL, 0x97F1FBFAL, 0x9EBABF2CL, 0x1E153C6EL, 00489 0x86E34570L, 0xEAE96FB1L, 0x860E5E0AL, 0x5A3E2AB3L, 00490 0x771FE71CL, 0x4E3D06FAL, 0x2965DCB9L, 0x99E71D0FL, 00491 0x803E89D6L, 0x5266C825L, 0x2E4CC978L, 0x9C10B36AL, 00492 0xC6150EBAL, 0x94E2EA78L, 0xA5FC3C53L, 0x1E0A2DF4L, 00493 0xF2F74EA7L, 0x361D2B3DL, 0x1939260FL, 0x19C27960L, 00494 0x5223A708L, 0xF71312B6L, 0xEBADFE6EL, 0xEAC31F66L, 00495 0xE3BC4595L, 0xA67BC883L, 0xB17F37D1L, 0x018CFF28L, 00496 0xC332DDEFL, 0xBE6C5AA5L, 0x65582185L, 0x68AB9802L, 00497 0xEECEA50FL, 0xDB2F953BL, 0x2AEF7DADL, 0x5B6E2F84L, 00498 0x1521B628L, 0x29076170L, 0xECDD4775L, 0x619F1510L, 00499 0x13CCA830L, 0xEB61BD96L, 0x0334FE1EL, 0xAA0363CFL, 00500 0xB5735C90L, 0x4C70A239L, 0xD59E9E0BL, 0xCBAADE14L, 00501 0xEECC86BCL, 0x60622CA7L, 0x9CAB5CABL, 0xB2F3846EL, 00502 0x648B1EAFL, 0x19BDF0CAL, 0xA02369B9L, 0x655ABB50L, 00503 0x40685A32L, 0x3C2AB4B3L, 0x319EE9D5L, 0xC021B8F7L, 00504 0x9B540B19L, 0x875FA099L, 0x95F7997EL, 0x623D7DA8L, 00505 0xF837889AL, 0x97E32D77L, 0x11ED935FL, 0x16681281L, 00506 0x0E358829L, 0xC7E61FD6L, 0x96DEDFA1L, 0x7858BA99L, 00507 0x57F584A5L, 0x1B227263L, 0x9B83C3FFL, 0x1AC24696L, 00508 0xCDB30AEBL, 0x532E3054L, 0x8FD948E4L, 0x6DBC3128L, 00509 0x58EBF2EFL, 0x34C6FFEAL, 0xFE28ED61L, 0xEE7C3C73L, 00510 0x5D4A14D9L, 0xE864B7E3L, 0x42105D14L, 0x203E13E0L, 00511 0x45EEE2B6L, 0xA3AAABEAL, 0xDB6C4F15L, 0xFACB4FD0L, 00512 0xC742F442L, 0xEF6ABBB5L, 0x654F3B1DL, 0x41CD2105L, 00513 0xD81E799EL, 0x86854DC7L, 0xE44B476AL, 0x3D816250L, 00514 0xCF62A1F2L, 0x5B8D2646L, 0xFC8883A0L, 0xC1C7B6A3L, 00515 0x7F1524C3L, 0x69CB7492L, 0x47848A0BL, 0x5692B285L, 00516 0x095BBF00L, 0xAD19489DL, 0x1462B174L, 0x23820E00L, 00517 0x58428D2AL, 0x0C55F5EAL, 0x1DADF43EL, 0x233F7061L, 00518 0x3372F092L, 0x8D937E41L, 0xD65FECF1L, 0x6C223BDBL, 00519 0x7CDE3759L, 0xCBEE7460L, 0x4085F2A7L, 0xCE77326EL, 00520 0xA6078084L, 0x19F8509EL, 0xE8EFD855L, 0x61D99735L, 00521 0xA969A7AAL, 0xC50C06C2L, 0x5A04ABFCL, 0x800BCADCL, 00522 0x9E447A2EL, 0xC3453484L, 0xFDD56705L, 0x0E1E9EC9L, 00523 0xDB73DBD3L, 0x105588CDL, 0x675FDA79L, 0xE3674340L, 00524 0xC5C43465L, 0x713E38D8L, 0x3D28F89EL, 0xF16DFF20L, 00525 0x153E21E7L, 0x8FB03D4AL, 0xE6E39F2BL, 0xDB83ADF7L }, 00526 { 0xE93D5A68L, 0x948140F7L, 0xF64C261CL, 0x94692934L, 00527 0x411520F7L, 0x7602D4F7L, 0xBCF46B2EL, 0xD4A20068L, 00528 0xD4082471L, 0x3320F46AL, 0x43B7D4B7L, 0x500061AFL, 00529 0x1E39F62EL, 0x97244546L, 0x14214F74L, 0xBF8B8840L, 00530 0x4D95FC1DL, 0x96B591AFL, 0x70F4DDD3L, 0x66A02F45L, 00531 0xBFBC09ECL, 0x03BD9785L, 0x7FAC6DD0L, 0x31CB8504L, 00532 0x96EB27B3L, 0x55FD3941L, 0xDA2547E6L, 0xABCA0A9AL, 00533 0x28507825L, 0x530429F4L, 0x0A2C86DAL, 0xE9B66DFBL, 00534 0x68DC1462L, 0xD7486900L, 0x680EC0A4L, 0x27A18DEEL, 00535 0x4F3FFEA2L, 0xE887AD8CL, 0xB58CE006L, 0x7AF4D6B6L, 00536 0xAACE1E7CL, 0xD3375FECL, 0xCE78A399L, 0x406B2A42L, 00537 0x20FE9E35L, 0xD9F385B9L, 0xEE39D7ABL, 0x3B124E8BL, 00538 0x1DC9FAF7L, 0x4B6D1856L, 0x26A36631L, 0xEAE397B2L, 00539 0x3A6EFA74L, 0xDD5B4332L, 0x6841E7F7L, 0xCA7820FBL, 00540 0xFB0AF54EL, 0xD8FEB397L, 0x454056ACL, 0xBA489527L, 00541 0x55533A3AL, 0x20838D87L, 0xFE6BA9B7L, 0xD096954BL, 00542 0x55A867BCL, 0xA1159A58L, 0xCCA92963L, 0x99E1DB33L, 00543 0xA62A4A56L, 0x3F3125F9L, 0x5EF47E1CL, 0x9029317CL, 00544 0xFDF8E802L, 0x04272F70L, 0x80BB155CL, 0x05282CE3L, 00545 0x95C11548L, 0xE4C66D22L, 0x48C1133FL, 0xC70F86DCL, 00546 0x07F9C9EEL, 0x41041F0FL, 0x404779A4L, 0x5D886E17L, 00547 0x325F51EBL, 0xD59BC0D1L, 0xF2BCC18FL, 0x41113564L, 00548 0x257B7834L, 0x602A9C60L, 0xDFF8E8A3L, 0x1F636C1BL, 00549 0x0E12B4C2L, 0x02E1329EL, 0xAF664FD1L, 0xCAD18115L, 00550 0x6B2395E0L, 0x333E92E1L, 0x3B240B62L, 0xEEBEB922L, 00551 0x85B2A20EL, 0xE6BA0D99L, 0xDE720C8CL, 0x2DA2F728L, 00552 0xD0127845L, 0x95B794FDL, 0x647D0862L, 0xE7CCF5F0L, 00553 0x5449A36FL, 0x877D48FAL, 0xC39DFD27L, 0xF33E8D1EL, 00554 0x0A476341L, 0x992EFF74L, 0x3A6F6EABL, 0xF4F8FD37L, 00555 0xA812DC60L, 0xA1EBDDF8L, 0x991BE14CL, 0xDB6E6B0DL, 00556 0xC67B5510L, 0x6D672C37L, 0x2765D43BL, 0xDCD0E804L, 00557 0xF1290DC7L, 0xCC00FFA3L, 0xB5390F92L, 0x690FED0BL, 00558 0x667B9FFBL, 0xCEDB7D9CL, 0xA091CF0BL, 0xD9155EA3L, 00559 0xBB132F88L, 0x515BAD24L, 0x7B9479BFL, 0x763BD6EBL, 00560 0x37392EB3L, 0xCC115979L, 0x8026E297L, 0xF42E312DL, 00561 0x6842ADA7L, 0xC66A2B3BL, 0x12754CCCL, 0x782EF11CL, 00562 0x6A124237L, 0xB79251E7L, 0x06A1BBE6L, 0x4BFB6350L, 00563 0x1A6B1018L, 0x11CAEDFAL, 0x3D25BDD8L, 0xE2E1C3C9L, 00564 0x44421659L, 0x0A121386L, 0xD90CEC6EL, 0xD5ABEA2AL, 00565 0x64AF674EL, 0xDA86A85FL, 0xBEBFE988L, 0x64E4C3FEL, 00566 0x9DBC8057L, 0xF0F7C086L, 0x60787BF8L, 0x6003604DL, 00567 0xD1FD8346L, 0xF6381FB0L, 0x7745AE04L, 0xD736FCCCL, 00568 0x83426B33L, 0xF01EAB71L, 0xB0804187L, 0x3C005E5FL, 00569 0x77A057BEL, 0xBDE8AE24L, 0x55464299L, 0xBF582E61L, 00570 0x4E58F48FL, 0xF2DDFDA2L, 0xF474EF38L, 0x8789BDC2L, 00571 0x5366F9C3L, 0xC8B38E74L, 0xB475F255L, 0x46FCD9B9L, 00572 0x7AEB2661L, 0x8B1DDF84L, 0x846A0E79L, 0x915F95E2L, 00573 0x466E598EL, 0x20B45770L, 0x8CD55591L, 0xC902DE4CL, 00574 0xB90BACE1L, 0xBB8205D0L, 0x11A86248L, 0x7574A99EL, 00575 0xB77F19B6L, 0xE0A9DC09L, 0x662D09A1L, 0xC4324633L, 00576 0xE85A1F02L, 0x09F0BE8CL, 0x4A99A025L, 0x1D6EFE10L, 00577 0x1AB93D1DL, 0x0BA5A4DFL, 0xA186F20FL, 0x2868F169L, 00578 0xDCB7DA83L, 0x573906FEL, 0xA1E2CE9BL, 0x4FCD7F52L, 00579 0x50115E01L, 0xA70683FAL, 0xA002B5C4L, 0x0DE6D027L, 00580 0x9AF88C27L, 0x773F8641L, 0xC3604C06L, 0x61A806B5L, 00581 0xF0177A28L, 0xC0F586E0L, 0x006058AAL, 0x30DC7D62L, 00582 0x11E69ED7L, 0x2338EA63L, 0x53C2DD94L, 0xC2C21634L, 00583 0xBBCBEE56L, 0x90BCB6DEL, 0xEBFC7DA1L, 0xCE591D76L, 00584 0x6F05E409L, 0x4B7C0188L, 0x39720A3DL, 0x7C927C24L, 00585 0x86E3725FL, 0x724D9DB9L, 0x1AC15BB4L, 0xD39EB8FCL, 00586 0xED545578L, 0x08FCA5B5L, 0xD83D7CD3L, 0x4DAD0FC4L, 00587 0x1E50EF5EL, 0xB161E6F8L, 0xA28514D9L, 0x6C51133CL, 00588 0x6FD5C7E7L, 0x56E14EC4L, 0x362ABFCEL, 0xDDC6C837L, 00589 0xD79A3234L, 0x92638212L, 0x670EFA8EL, 0x406000E0L }, 00590 { 0x3A39CE37L, 0xD3FAF5CFL, 0xABC27737L, 0x5AC52D1BL, 00591 0x5CB0679EL, 0x4FA33742L, 0xD3822740L, 0x99BC9BBEL, 00592 0xD5118E9DL, 0xBF0F7315L, 0xD62D1C7EL, 0xC700C47BL, 00593 0xB78C1B6BL, 0x21A19045L, 0xB26EB1BEL, 0x6A366EB4L, 00594 0x5748AB2FL, 0xBC946E79L, 0xC6A376D2L, 0x6549C2C8L, 00595 0x530FF8EEL, 0x468DDE7DL, 0xD5730A1DL, 0x4CD04DC6L, 00596 0x2939BBDBL, 0xA9BA4650L, 0xAC9526E8L, 0xBE5EE304L, 00597 0xA1FAD5F0L, 0x6A2D519AL, 0x63EF8CE2L, 0x9A86EE22L, 00598 0xC089C2B8L, 0x43242EF6L, 0xA51E03AAL, 0x9CF2D0A4L, 00599 0x83C061BAL, 0x9BE96A4DL, 0x8FE51550L, 0xBA645BD6L, 00600 0x2826A2F9L, 0xA73A3AE1L, 0x4BA99586L, 0xEF5562E9L, 00601 0xC72FEFD3L, 0xF752F7DAL, 0x3F046F69L, 0x77FA0A59L, 00602 0x80E4A915L, 0x87B08601L, 0x9B09E6ADL, 0x3B3EE593L, 00603 0xE990FD5AL, 0x9E34D797L, 0x2CF0B7D9L, 0x022B8B51L, 00604 0x96D5AC3AL, 0x017DA67DL, 0xD1CF3ED6L, 0x7C7D2D28L, 00605 0x1F9F25CFL, 0xADF2B89BL, 0x5AD6B472L, 0x5A88F54CL, 00606 0xE029AC71L, 0xE019A5E6L, 0x47B0ACFDL, 0xED93FA9BL, 00607 0xE8D3C48DL, 0x283B57CCL, 0xF8D56629L, 0x79132E28L, 00608 0x785F0191L, 0xED756055L, 0xF7960E44L, 0xE3D35E8CL, 00609 0x15056DD4L, 0x88F46DBAL, 0x03A16125L, 0x0564F0BDL, 00610 0xC3EB9E15L, 0x3C9057A2L, 0x97271AECL, 0xA93A072AL, 00611 0x1B3F6D9BL, 0x1E6321F5L, 0xF59C66FBL, 0x26DCF319L, 00612 0x7533D928L, 0xB155FDF5L, 0x03563482L, 0x8ABA3CBBL, 00613 0x28517711L, 0xC20AD9F8L, 0xABCC5167L, 0xCCAD925FL, 00614 0x4DE81751L, 0x3830DC8EL, 0x379D5862L, 0x9320F991L, 00615 0xEA7A90C2L, 0xFB3E7BCEL, 0x5121CE64L, 0x774FBE32L, 00616 0xA8B6E37EL, 0xC3293D46L, 0x48DE5369L, 0x6413E680L, 00617 0xA2AE0810L, 0xDD6DB224L, 0x69852DFDL, 0x09072166L, 00618 0xB39A460AL, 0x6445C0DDL, 0x586CDECFL, 0x1C20C8AEL, 00619 0x5BBEF7DDL, 0x1B588D40L, 0xCCD2017FL, 0x6BB4E3BBL, 00620 0xDDA26A7EL, 0x3A59FF45L, 0x3E350A44L, 0xBCB4CDD5L, 00621 0x72EACEA8L, 0xFA6484BBL, 0x8D6612AEL, 0xBF3C6F47L, 00622 0xD29BE463L, 0x542F5D9EL, 0xAEC2771BL, 0xF64E6370L, 00623 0x740E0D8DL, 0xE75B1357L, 0xF8721671L, 0xAF537D5DL, 00624 0x4040CB08L, 0x4EB4E2CCL, 0x34D2466AL, 0x0115AF84L, 00625 0xE1B00428L, 0x95983A1DL, 0x06B89FB4L, 0xCE6EA048L, 00626 0x6F3F3B82L, 0x3520AB82L, 0x011A1D4BL, 0x277227F8L, 00627 0x611560B1L, 0xE7933FDCL, 0xBB3A792BL, 0x344525BDL, 00628 0xA08839E1L, 0x51CE794BL, 0x2F32C9B7L, 0xA01FBAC9L, 00629 0xE01CC87EL, 0xBCC7D1F6L, 0xCF0111C3L, 0xA1E8AAC7L, 00630 0x1A908749L, 0xD44FBD9AL, 0xD0DADECBL, 0xD50ADA38L, 00631 0x0339C32AL, 0xC6913667L, 0x8DF9317CL, 0xE0B12B4FL, 00632 0xF79E59B7L, 0x43F5BB3AL, 0xF2D519FFL, 0x27D9459CL, 00633 0xBF97222CL, 0x15E6FC2AL, 0x0F91FC71L, 0x9B941525L, 00634 0xFAE59361L, 0xCEB69CEBL, 0xC2A86459L, 0x12BAA8D1L, 00635 0xB6C1075EL, 0xE3056A0CL, 0x10D25065L, 0xCB03A442L, 00636 0xE0EC6E0EL, 0x1698DB3BL, 0x4C98A0BEL, 0x3278E964L, 00637 0x9F1F9532L, 0xE0D392DFL, 0xD3A0342BL, 0x8971F21EL, 00638 0x1B0A7441L, 0x4BA3348CL, 0xC5BE7120L, 0xC37632D8L, 00639 0xDF359F8DL, 0x9B992F2EL, 0xE60B6F47L, 0x0FE3F11DL, 00640 0xE54CDA54L, 0x1EDAD891L, 0xCE6279CFL, 0xCD3E7E6FL, 00641 0x1618B166L, 0xFD2C1D05L, 0x848FD2C5L, 0xF6FB2299L, 00642 0xF523F357L, 0xA6327623L, 0x93A83531L, 0x56CCCD02L, 00643 0xACF08162L, 0x5A75EBB5L, 0x6E163697L, 0x88D273CCL, 00644 0xDE966292L, 0x81B949D0L, 0x4C50901BL, 0x71C65614L, 00645 0xE6C6C7BDL, 0x327A140AL, 0x45E1D006L, 0xC3F27B9AL, 00646 0xC9AA53FDL, 0x62A80F00L, 0xBB25BFE2L, 0x35BDD2F6L, 00647 0x71126905L, 0xB2040222L, 0xB6CBCF7CL, 0xCD769C2BL, 00648 0x53113EC0L, 0x1640E3D3L, 0x38ABBD60L, 0x2547ADF0L, 00649 0xBA38209CL, 0xF746CE76L, 0x77AFA1C5L, 0x20756060L, 00650 0x85CBFE4EL, 0x8AE88DD8L, 0x7AAAF9B0L, 0x4CF9AA7EL, 00651 0x1948C25CL, 0x02FB8A8CL, 0x01C36AE4L, 0xD6EBE1F9L, 00652 0x90D4F869L, 0xA65CDEA0L, 0x3F09252DL, 0xC208E69FL, 00653 0xB74E6132L, 0xCE77E25BL, 0x578FDFE3L, 0x3AC372E6L } 00654 }; 00655 00656 #endif /* !POLARSSL_BLOWFISH_ALT */ 00657 #endif /* POLARSSL_BLOWFISH_C */ 00658
Generated on Tue Jul 12 2022 13:50:36 by 1.7.2