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