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