Ignore:
Timestamp:
Nov 24, 2016, 1:14:11 PM (9 years ago)
Author:
Silvan Scherrer
Message:

Samba Server: update vendor to version 4.4.3

File:
1 edited

Legend:

Unmodified
Added
Removed
  • vendor/current/lib/crypto/aes.h

    r740 r988  
    3737#define LIB_CRYPTO_AES_H 1
    3838
     39#define SAMBA_RIJNDAEL 1
     40#define SAMBA_AES_CBC_ENCRYPT 1
     41#define SAMBA_AES_CFB8_ENCRYPT 1
     42#define SAMBA_AES_BLOCK_XOR 1
     43
    3944/* symbol renaming */
    4045#define AES_set_encrypt_key samba_AES_set_encrypt_key
     
    4348#define AES_decrypt samba_AES_decrypt
    4449#define AES_cbc_encrypt samba_AES_cbc_encrypt
     50#define AES_cfb8_encrypt samba_AES_cfb8_encrypt
    4551
    4652/*
     
    7379                     unsigned char *, int);
    7480
    75 void aes_cfb8_encrypt(const uint8_t *in, uint8_t *out,
    76                       size_t length, const AES_KEY *key,
    77                       uint8_t *iv, int forward);
     81void AES_cfb8_encrypt(const unsigned char *in, unsigned char *out,
     82                      unsigned long size, const AES_KEY *key,
     83                      unsigned char *iv, int forward_encrypt);
     84
     85#define aes_cfb8_encrypt(in, out, size, key, iv, forward_encrypt) \
     86        AES_cfb8_encrypt(in, out, size, key, iv, forward_encrypt)
    7887
    7988#ifdef  __cplusplus
     
    8190#endif
    8291
     92#ifdef SAMBA_AES_BLOCK_XOR
     93static inline void aes_block_xor(const uint8_t in1[AES_BLOCK_SIZE],
     94                                 const uint8_t in2[AES_BLOCK_SIZE],
     95                                 uint8_t out[AES_BLOCK_SIZE])
     96{
     97#define __IS_ALIGN8(p) ((((uintptr_t)(p)) & 0x7) == 0)
     98#define __IS_ALIGNED(a,b,c) __IS_ALIGN8(\
     99                ((uintptr_t)(a)) | \
     100                ((uintptr_t)(b)) | \
     101                ((uintptr_t)(c)))
     102        /* If everything is aligned we can optimize */
     103        if (likely(__IS_ALIGNED(in1, in2, out))) {
     104#define __RO64(p) ((const uint64_t *)(p))
     105#define __RW64(p) ((uint64_t *)(p))
     106                __RW64(out)[0] = __RO64(in1)[0] ^ __RO64(in2)[0];
     107                __RW64(out)[1] = __RO64(in1)[1] ^ __RO64(in2)[1];
     108        } else {
     109                uint64_t i1[2];
     110                uint64_t i2[2];
     111                uint64_t o[2];
     112
     113                memcpy(i1, in1, AES_BLOCK_SIZE);
     114                memcpy(i2, in2, AES_BLOCK_SIZE);
     115                o[0] = i1[0] ^ i2[0];
     116                o[1] = i1[1] ^ i2[1];
     117                memcpy(out, o, AES_BLOCK_SIZE);
     118        }
     119}
     120#endif /* SAMBA_AES_BLOCK_XOR */
     121
     122static inline void aes_block_lshift(const uint8_t in[AES_BLOCK_SIZE],
     123                                    uint8_t out[AES_BLOCK_SIZE])
     124{
     125        static const struct aes_block_lshift_entry {
     126                uint8_t lshift;
     127                uint8_t overflow;
     128        } aes_block_lshift_table[UINT8_MAX+1] = {
     129                [0x00] = { .lshift = 0x00, .overflow = 0x00 },
     130                [0x01] = { .lshift = 0x02, .overflow = 0x00 },
     131                [0x02] = { .lshift = 0x04, .overflow = 0x00 },
     132                [0x03] = { .lshift = 0x06, .overflow = 0x00 },
     133                [0x04] = { .lshift = 0x08, .overflow = 0x00 },
     134                [0x05] = { .lshift = 0x0a, .overflow = 0x00 },
     135                [0x06] = { .lshift = 0x0c, .overflow = 0x00 },
     136                [0x07] = { .lshift = 0x0e, .overflow = 0x00 },
     137                [0x08] = { .lshift = 0x10, .overflow = 0x00 },
     138                [0x09] = { .lshift = 0x12, .overflow = 0x00 },
     139                [0x0a] = { .lshift = 0x14, .overflow = 0x00 },
     140                [0x0b] = { .lshift = 0x16, .overflow = 0x00 },
     141                [0x0c] = { .lshift = 0x18, .overflow = 0x00 },
     142                [0x0d] = { .lshift = 0x1a, .overflow = 0x00 },
     143                [0x0e] = { .lshift = 0x1c, .overflow = 0x00 },
     144                [0x0f] = { .lshift = 0x1e, .overflow = 0x00 },
     145                [0x10] = { .lshift = 0x20, .overflow = 0x00 },
     146                [0x11] = { .lshift = 0x22, .overflow = 0x00 },
     147                [0x12] = { .lshift = 0x24, .overflow = 0x00 },
     148                [0x13] = { .lshift = 0x26, .overflow = 0x00 },
     149                [0x14] = { .lshift = 0x28, .overflow = 0x00 },
     150                [0x15] = { .lshift = 0x2a, .overflow = 0x00 },
     151                [0x16] = { .lshift = 0x2c, .overflow = 0x00 },
     152                [0x17] = { .lshift = 0x2e, .overflow = 0x00 },
     153                [0x18] = { .lshift = 0x30, .overflow = 0x00 },
     154                [0x19] = { .lshift = 0x32, .overflow = 0x00 },
     155                [0x1a] = { .lshift = 0x34, .overflow = 0x00 },
     156                [0x1b] = { .lshift = 0x36, .overflow = 0x00 },
     157                [0x1c] = { .lshift = 0x38, .overflow = 0x00 },
     158                [0x1d] = { .lshift = 0x3a, .overflow = 0x00 },
     159                [0x1e] = { .lshift = 0x3c, .overflow = 0x00 },
     160                [0x1f] = { .lshift = 0x3e, .overflow = 0x00 },
     161                [0x20] = { .lshift = 0x40, .overflow = 0x00 },
     162                [0x21] = { .lshift = 0x42, .overflow = 0x00 },
     163                [0x22] = { .lshift = 0x44, .overflow = 0x00 },
     164                [0x23] = { .lshift = 0x46, .overflow = 0x00 },
     165                [0x24] = { .lshift = 0x48, .overflow = 0x00 },
     166                [0x25] = { .lshift = 0x4a, .overflow = 0x00 },
     167                [0x26] = { .lshift = 0x4c, .overflow = 0x00 },
     168                [0x27] = { .lshift = 0x4e, .overflow = 0x00 },
     169                [0x28] = { .lshift = 0x50, .overflow = 0x00 },
     170                [0x29] = { .lshift = 0x52, .overflow = 0x00 },
     171                [0x2a] = { .lshift = 0x54, .overflow = 0x00 },
     172                [0x2b] = { .lshift = 0x56, .overflow = 0x00 },
     173                [0x2c] = { .lshift = 0x58, .overflow = 0x00 },
     174                [0x2d] = { .lshift = 0x5a, .overflow = 0x00 },
     175                [0x2e] = { .lshift = 0x5c, .overflow = 0x00 },
     176                [0x2f] = { .lshift = 0x5e, .overflow = 0x00 },
     177                [0x30] = { .lshift = 0x60, .overflow = 0x00 },
     178                [0x31] = { .lshift = 0x62, .overflow = 0x00 },
     179                [0x32] = { .lshift = 0x64, .overflow = 0x00 },
     180                [0x33] = { .lshift = 0x66, .overflow = 0x00 },
     181                [0x34] = { .lshift = 0x68, .overflow = 0x00 },
     182                [0x35] = { .lshift = 0x6a, .overflow = 0x00 },
     183                [0x36] = { .lshift = 0x6c, .overflow = 0x00 },
     184                [0x37] = { .lshift = 0x6e, .overflow = 0x00 },
     185                [0x38] = { .lshift = 0x70, .overflow = 0x00 },
     186                [0x39] = { .lshift = 0x72, .overflow = 0x00 },
     187                [0x3a] = { .lshift = 0x74, .overflow = 0x00 },
     188                [0x3b] = { .lshift = 0x76, .overflow = 0x00 },
     189                [0x3c] = { .lshift = 0x78, .overflow = 0x00 },
     190                [0x3d] = { .lshift = 0x7a, .overflow = 0x00 },
     191                [0x3e] = { .lshift = 0x7c, .overflow = 0x00 },
     192                [0x3f] = { .lshift = 0x7e, .overflow = 0x00 },
     193                [0x40] = { .lshift = 0x80, .overflow = 0x00 },
     194                [0x41] = { .lshift = 0x82, .overflow = 0x00 },
     195                [0x42] = { .lshift = 0x84, .overflow = 0x00 },
     196                [0x43] = { .lshift = 0x86, .overflow = 0x00 },
     197                [0x44] = { .lshift = 0x88, .overflow = 0x00 },
     198                [0x45] = { .lshift = 0x8a, .overflow = 0x00 },
     199                [0x46] = { .lshift = 0x8c, .overflow = 0x00 },
     200                [0x47] = { .lshift = 0x8e, .overflow = 0x00 },
     201                [0x48] = { .lshift = 0x90, .overflow = 0x00 },
     202                [0x49] = { .lshift = 0x92, .overflow = 0x00 },
     203                [0x4a] = { .lshift = 0x94, .overflow = 0x00 },
     204                [0x4b] = { .lshift = 0x96, .overflow = 0x00 },
     205                [0x4c] = { .lshift = 0x98, .overflow = 0x00 },
     206                [0x4d] = { .lshift = 0x9a, .overflow = 0x00 },
     207                [0x4e] = { .lshift = 0x9c, .overflow = 0x00 },
     208                [0x4f] = { .lshift = 0x9e, .overflow = 0x00 },
     209                [0x50] = { .lshift = 0xa0, .overflow = 0x00 },
     210                [0x51] = { .lshift = 0xa2, .overflow = 0x00 },
     211                [0x52] = { .lshift = 0xa4, .overflow = 0x00 },
     212                [0x53] = { .lshift = 0xa6, .overflow = 0x00 },
     213                [0x54] = { .lshift = 0xa8, .overflow = 0x00 },
     214                [0x55] = { .lshift = 0xaa, .overflow = 0x00 },
     215                [0x56] = { .lshift = 0xac, .overflow = 0x00 },
     216                [0x57] = { .lshift = 0xae, .overflow = 0x00 },
     217                [0x58] = { .lshift = 0xb0, .overflow = 0x00 },
     218                [0x59] = { .lshift = 0xb2, .overflow = 0x00 },
     219                [0x5a] = { .lshift = 0xb4, .overflow = 0x00 },
     220                [0x5b] = { .lshift = 0xb6, .overflow = 0x00 },
     221                [0x5c] = { .lshift = 0xb8, .overflow = 0x00 },
     222                [0x5d] = { .lshift = 0xba, .overflow = 0x00 },
     223                [0x5e] = { .lshift = 0xbc, .overflow = 0x00 },
     224                [0x5f] = { .lshift = 0xbe, .overflow = 0x00 },
     225                [0x60] = { .lshift = 0xc0, .overflow = 0x00 },
     226                [0x61] = { .lshift = 0xc2, .overflow = 0x00 },
     227                [0x62] = { .lshift = 0xc4, .overflow = 0x00 },
     228                [0x63] = { .lshift = 0xc6, .overflow = 0x00 },
     229                [0x64] = { .lshift = 0xc8, .overflow = 0x00 },
     230                [0x65] = { .lshift = 0xca, .overflow = 0x00 },
     231                [0x66] = { .lshift = 0xcc, .overflow = 0x00 },
     232                [0x67] = { .lshift = 0xce, .overflow = 0x00 },
     233                [0x68] = { .lshift = 0xd0, .overflow = 0x00 },
     234                [0x69] = { .lshift = 0xd2, .overflow = 0x00 },
     235                [0x6a] = { .lshift = 0xd4, .overflow = 0x00 },
     236                [0x6b] = { .lshift = 0xd6, .overflow = 0x00 },
     237                [0x6c] = { .lshift = 0xd8, .overflow = 0x00 },
     238                [0x6d] = { .lshift = 0xda, .overflow = 0x00 },
     239                [0x6e] = { .lshift = 0xdc, .overflow = 0x00 },
     240                [0x6f] = { .lshift = 0xde, .overflow = 0x00 },
     241                [0x70] = { .lshift = 0xe0, .overflow = 0x00 },
     242                [0x71] = { .lshift = 0xe2, .overflow = 0x00 },
     243                [0x72] = { .lshift = 0xe4, .overflow = 0x00 },
     244                [0x73] = { .lshift = 0xe6, .overflow = 0x00 },
     245                [0x74] = { .lshift = 0xe8, .overflow = 0x00 },
     246                [0x75] = { .lshift = 0xea, .overflow = 0x00 },
     247                [0x76] = { .lshift = 0xec, .overflow = 0x00 },
     248                [0x77] = { .lshift = 0xee, .overflow = 0x00 },
     249                [0x78] = { .lshift = 0xf0, .overflow = 0x00 },
     250                [0x79] = { .lshift = 0xf2, .overflow = 0x00 },
     251                [0x7a] = { .lshift = 0xf4, .overflow = 0x00 },
     252                [0x7b] = { .lshift = 0xf6, .overflow = 0x00 },
     253                [0x7c] = { .lshift = 0xf8, .overflow = 0x00 },
     254                [0x7d] = { .lshift = 0xfa, .overflow = 0x00 },
     255                [0x7e] = { .lshift = 0xfc, .overflow = 0x00 },
     256                [0x7f] = { .lshift = 0xfe, .overflow = 0x00 },
     257                [0x80] = { .lshift = 0x00, .overflow = 0x01 },
     258                [0x81] = { .lshift = 0x02, .overflow = 0x01 },
     259                [0x82] = { .lshift = 0x04, .overflow = 0x01 },
     260                [0x83] = { .lshift = 0x06, .overflow = 0x01 },
     261                [0x84] = { .lshift = 0x08, .overflow = 0x01 },
     262                [0x85] = { .lshift = 0x0a, .overflow = 0x01 },
     263                [0x86] = { .lshift = 0x0c, .overflow = 0x01 },
     264                [0x87] = { .lshift = 0x0e, .overflow = 0x01 },
     265                [0x88] = { .lshift = 0x10, .overflow = 0x01 },
     266                [0x89] = { .lshift = 0x12, .overflow = 0x01 },
     267                [0x8a] = { .lshift = 0x14, .overflow = 0x01 },
     268                [0x8b] = { .lshift = 0x16, .overflow = 0x01 },
     269                [0x8c] = { .lshift = 0x18, .overflow = 0x01 },
     270                [0x8d] = { .lshift = 0x1a, .overflow = 0x01 },
     271                [0x8e] = { .lshift = 0x1c, .overflow = 0x01 },
     272                [0x8f] = { .lshift = 0x1e, .overflow = 0x01 },
     273                [0x90] = { .lshift = 0x20, .overflow = 0x01 },
     274                [0x91] = { .lshift = 0x22, .overflow = 0x01 },
     275                [0x92] = { .lshift = 0x24, .overflow = 0x01 },
     276                [0x93] = { .lshift = 0x26, .overflow = 0x01 },
     277                [0x94] = { .lshift = 0x28, .overflow = 0x01 },
     278                [0x95] = { .lshift = 0x2a, .overflow = 0x01 },
     279                [0x96] = { .lshift = 0x2c, .overflow = 0x01 },
     280                [0x97] = { .lshift = 0x2e, .overflow = 0x01 },
     281                [0x98] = { .lshift = 0x30, .overflow = 0x01 },
     282                [0x99] = { .lshift = 0x32, .overflow = 0x01 },
     283                [0x9a] = { .lshift = 0x34, .overflow = 0x01 },
     284                [0x9b] = { .lshift = 0x36, .overflow = 0x01 },
     285                [0x9c] = { .lshift = 0x38, .overflow = 0x01 },
     286                [0x9d] = { .lshift = 0x3a, .overflow = 0x01 },
     287                [0x9e] = { .lshift = 0x3c, .overflow = 0x01 },
     288                [0x9f] = { .lshift = 0x3e, .overflow = 0x01 },
     289                [0xa0] = { .lshift = 0x40, .overflow = 0x01 },
     290                [0xa1] = { .lshift = 0x42, .overflow = 0x01 },
     291                [0xa2] = { .lshift = 0x44, .overflow = 0x01 },
     292                [0xa3] = { .lshift = 0x46, .overflow = 0x01 },
     293                [0xa4] = { .lshift = 0x48, .overflow = 0x01 },
     294                [0xa5] = { .lshift = 0x4a, .overflow = 0x01 },
     295                [0xa6] = { .lshift = 0x4c, .overflow = 0x01 },
     296                [0xa7] = { .lshift = 0x4e, .overflow = 0x01 },
     297                [0xa8] = { .lshift = 0x50, .overflow = 0x01 },
     298                [0xa9] = { .lshift = 0x52, .overflow = 0x01 },
     299                [0xaa] = { .lshift = 0x54, .overflow = 0x01 },
     300                [0xab] = { .lshift = 0x56, .overflow = 0x01 },
     301                [0xac] = { .lshift = 0x58, .overflow = 0x01 },
     302                [0xad] = { .lshift = 0x5a, .overflow = 0x01 },
     303                [0xae] = { .lshift = 0x5c, .overflow = 0x01 },
     304                [0xaf] = { .lshift = 0x5e, .overflow = 0x01 },
     305                [0xb0] = { .lshift = 0x60, .overflow = 0x01 },
     306                [0xb1] = { .lshift = 0x62, .overflow = 0x01 },
     307                [0xb2] = { .lshift = 0x64, .overflow = 0x01 },
     308                [0xb3] = { .lshift = 0x66, .overflow = 0x01 },
     309                [0xb4] = { .lshift = 0x68, .overflow = 0x01 },
     310                [0xb5] = { .lshift = 0x6a, .overflow = 0x01 },
     311                [0xb6] = { .lshift = 0x6c, .overflow = 0x01 },
     312                [0xb7] = { .lshift = 0x6e, .overflow = 0x01 },
     313                [0xb8] = { .lshift = 0x70, .overflow = 0x01 },
     314                [0xb9] = { .lshift = 0x72, .overflow = 0x01 },
     315                [0xba] = { .lshift = 0x74, .overflow = 0x01 },
     316                [0xbb] = { .lshift = 0x76, .overflow = 0x01 },
     317                [0xbc] = { .lshift = 0x78, .overflow = 0x01 },
     318                [0xbd] = { .lshift = 0x7a, .overflow = 0x01 },
     319                [0xbe] = { .lshift = 0x7c, .overflow = 0x01 },
     320                [0xbf] = { .lshift = 0x7e, .overflow = 0x01 },
     321                [0xc0] = { .lshift = 0x80, .overflow = 0x01 },
     322                [0xc1] = { .lshift = 0x82, .overflow = 0x01 },
     323                [0xc2] = { .lshift = 0x84, .overflow = 0x01 },
     324                [0xc3] = { .lshift = 0x86, .overflow = 0x01 },
     325                [0xc4] = { .lshift = 0x88, .overflow = 0x01 },
     326                [0xc5] = { .lshift = 0x8a, .overflow = 0x01 },
     327                [0xc6] = { .lshift = 0x8c, .overflow = 0x01 },
     328                [0xc7] = { .lshift = 0x8e, .overflow = 0x01 },
     329                [0xc8] = { .lshift = 0x90, .overflow = 0x01 },
     330                [0xc9] = { .lshift = 0x92, .overflow = 0x01 },
     331                [0xca] = { .lshift = 0x94, .overflow = 0x01 },
     332                [0xcb] = { .lshift = 0x96, .overflow = 0x01 },
     333                [0xcc] = { .lshift = 0x98, .overflow = 0x01 },
     334                [0xcd] = { .lshift = 0x9a, .overflow = 0x01 },
     335                [0xce] = { .lshift = 0x9c, .overflow = 0x01 },
     336                [0xcf] = { .lshift = 0x9e, .overflow = 0x01 },
     337                [0xd0] = { .lshift = 0xa0, .overflow = 0x01 },
     338                [0xd1] = { .lshift = 0xa2, .overflow = 0x01 },
     339                [0xd2] = { .lshift = 0xa4, .overflow = 0x01 },
     340                [0xd3] = { .lshift = 0xa6, .overflow = 0x01 },
     341                [0xd4] = { .lshift = 0xa8, .overflow = 0x01 },
     342                [0xd5] = { .lshift = 0xaa, .overflow = 0x01 },
     343                [0xd6] = { .lshift = 0xac, .overflow = 0x01 },
     344                [0xd7] = { .lshift = 0xae, .overflow = 0x01 },
     345                [0xd8] = { .lshift = 0xb0, .overflow = 0x01 },
     346                [0xd9] = { .lshift = 0xb2, .overflow = 0x01 },
     347                [0xda] = { .lshift = 0xb4, .overflow = 0x01 },
     348                [0xdb] = { .lshift = 0xb6, .overflow = 0x01 },
     349                [0xdc] = { .lshift = 0xb8, .overflow = 0x01 },
     350                [0xdd] = { .lshift = 0xba, .overflow = 0x01 },
     351                [0xde] = { .lshift = 0xbc, .overflow = 0x01 },
     352                [0xdf] = { .lshift = 0xbe, .overflow = 0x01 },
     353                [0xe0] = { .lshift = 0xc0, .overflow = 0x01 },
     354                [0xe1] = { .lshift = 0xc2, .overflow = 0x01 },
     355                [0xe2] = { .lshift = 0xc4, .overflow = 0x01 },
     356                [0xe3] = { .lshift = 0xc6, .overflow = 0x01 },
     357                [0xe4] = { .lshift = 0xc8, .overflow = 0x01 },
     358                [0xe5] = { .lshift = 0xca, .overflow = 0x01 },
     359                [0xe6] = { .lshift = 0xcc, .overflow = 0x01 },
     360                [0xe7] = { .lshift = 0xce, .overflow = 0x01 },
     361                [0xe8] = { .lshift = 0xd0, .overflow = 0x01 },
     362                [0xe9] = { .lshift = 0xd2, .overflow = 0x01 },
     363                [0xea] = { .lshift = 0xd4, .overflow = 0x01 },
     364                [0xeb] = { .lshift = 0xd6, .overflow = 0x01 },
     365                [0xec] = { .lshift = 0xd8, .overflow = 0x01 },
     366                [0xed] = { .lshift = 0xda, .overflow = 0x01 },
     367                [0xee] = { .lshift = 0xdc, .overflow = 0x01 },
     368                [0xef] = { .lshift = 0xde, .overflow = 0x01 },
     369                [0xf0] = { .lshift = 0xe0, .overflow = 0x01 },
     370                [0xf1] = { .lshift = 0xe2, .overflow = 0x01 },
     371                [0xf2] = { .lshift = 0xe4, .overflow = 0x01 },
     372                [0xf3] = { .lshift = 0xe6, .overflow = 0x01 },
     373                [0xf4] = { .lshift = 0xe8, .overflow = 0x01 },
     374                [0xf5] = { .lshift = 0xea, .overflow = 0x01 },
     375                [0xf6] = { .lshift = 0xec, .overflow = 0x01 },
     376                [0xf7] = { .lshift = 0xee, .overflow = 0x01 },
     377                [0xf8] = { .lshift = 0xf0, .overflow = 0x01 },
     378                [0xf9] = { .lshift = 0xf2, .overflow = 0x01 },
     379                [0xfa] = { .lshift = 0xf4, .overflow = 0x01 },
     380                [0xfb] = { .lshift = 0xf6, .overflow = 0x01 },
     381                [0xfc] = { .lshift = 0xf8, .overflow = 0x01 },
     382                [0xfd] = { .lshift = 0xfa, .overflow = 0x01 },
     383                [0xfe] = { .lshift = 0xfc, .overflow = 0x01 },
     384                [0xff] = { .lshift = 0xfe, .overflow = 0x01 },
     385        };
     386        int8_t i;
     387        uint8_t overflow = 0;
     388
     389        for (i = AES_BLOCK_SIZE - 1; i >= 0; i--) {
     390                const struct aes_block_lshift_entry *e = &aes_block_lshift_table[in[i]];
     391                out[i] = e->lshift | overflow;
     392                overflow = e->overflow;
     393        }
     394}
     395
     396static inline void aes_block_rshift(const uint8_t in[AES_BLOCK_SIZE],
     397                                    uint8_t out[AES_BLOCK_SIZE])
     398{
     399        static const struct aes_block_rshift_entry {
     400                uint8_t rshift;
     401                uint8_t overflow;
     402        } aes_block_rshift_table[UINT8_MAX+1] = {
     403                [0x00] = { .rshift = 0x00, .overflow = 0x00 },
     404                [0x01] = { .rshift = 0x00, .overflow = 0x80 },
     405                [0x02] = { .rshift = 0x01, .overflow = 0x00 },
     406                [0x03] = { .rshift = 0x01, .overflow = 0x80 },
     407                [0x04] = { .rshift = 0x02, .overflow = 0x00 },
     408                [0x05] = { .rshift = 0x02, .overflow = 0x80 },
     409                [0x06] = { .rshift = 0x03, .overflow = 0x00 },
     410                [0x07] = { .rshift = 0x03, .overflow = 0x80 },
     411                [0x08] = { .rshift = 0x04, .overflow = 0x00 },
     412                [0x09] = { .rshift = 0x04, .overflow = 0x80 },
     413                [0x0a] = { .rshift = 0x05, .overflow = 0x00 },
     414                [0x0b] = { .rshift = 0x05, .overflow = 0x80 },
     415                [0x0c] = { .rshift = 0x06, .overflow = 0x00 },
     416                [0x0d] = { .rshift = 0x06, .overflow = 0x80 },
     417                [0x0e] = { .rshift = 0x07, .overflow = 0x00 },
     418                [0x0f] = { .rshift = 0x07, .overflow = 0x80 },
     419                [0x10] = { .rshift = 0x08, .overflow = 0x00 },
     420                [0x11] = { .rshift = 0x08, .overflow = 0x80 },
     421                [0x12] = { .rshift = 0x09, .overflow = 0x00 },
     422                [0x13] = { .rshift = 0x09, .overflow = 0x80 },
     423                [0x14] = { .rshift = 0x0a, .overflow = 0x00 },
     424                [0x15] = { .rshift = 0x0a, .overflow = 0x80 },
     425                [0x16] = { .rshift = 0x0b, .overflow = 0x00 },
     426                [0x17] = { .rshift = 0x0b, .overflow = 0x80 },
     427                [0x18] = { .rshift = 0x0c, .overflow = 0x00 },
     428                [0x19] = { .rshift = 0x0c, .overflow = 0x80 },
     429                [0x1a] = { .rshift = 0x0d, .overflow = 0x00 },
     430                [0x1b] = { .rshift = 0x0d, .overflow = 0x80 },
     431                [0x1c] = { .rshift = 0x0e, .overflow = 0x00 },
     432                [0x1d] = { .rshift = 0x0e, .overflow = 0x80 },
     433                [0x1e] = { .rshift = 0x0f, .overflow = 0x00 },
     434                [0x1f] = { .rshift = 0x0f, .overflow = 0x80 },
     435                [0x20] = { .rshift = 0x10, .overflow = 0x00 },
     436                [0x21] = { .rshift = 0x10, .overflow = 0x80 },
     437                [0x22] = { .rshift = 0x11, .overflow = 0x00 },
     438                [0x23] = { .rshift = 0x11, .overflow = 0x80 },
     439                [0x24] = { .rshift = 0x12, .overflow = 0x00 },
     440                [0x25] = { .rshift = 0x12, .overflow = 0x80 },
     441                [0x26] = { .rshift = 0x13, .overflow = 0x00 },
     442                [0x27] = { .rshift = 0x13, .overflow = 0x80 },
     443                [0x28] = { .rshift = 0x14, .overflow = 0x00 },
     444                [0x29] = { .rshift = 0x14, .overflow = 0x80 },
     445                [0x2a] = { .rshift = 0x15, .overflow = 0x00 },
     446                [0x2b] = { .rshift = 0x15, .overflow = 0x80 },
     447                [0x2c] = { .rshift = 0x16, .overflow = 0x00 },
     448                [0x2d] = { .rshift = 0x16, .overflow = 0x80 },
     449                [0x2e] = { .rshift = 0x17, .overflow = 0x00 },
     450                [0x2f] = { .rshift = 0x17, .overflow = 0x80 },
     451                [0x30] = { .rshift = 0x18, .overflow = 0x00 },
     452                [0x31] = { .rshift = 0x18, .overflow = 0x80 },
     453                [0x32] = { .rshift = 0x19, .overflow = 0x00 },
     454                [0x33] = { .rshift = 0x19, .overflow = 0x80 },
     455                [0x34] = { .rshift = 0x1a, .overflow = 0x00 },
     456                [0x35] = { .rshift = 0x1a, .overflow = 0x80 },
     457                [0x36] = { .rshift = 0x1b, .overflow = 0x00 },
     458                [0x37] = { .rshift = 0x1b, .overflow = 0x80 },
     459                [0x38] = { .rshift = 0x1c, .overflow = 0x00 },
     460                [0x39] = { .rshift = 0x1c, .overflow = 0x80 },
     461                [0x3a] = { .rshift = 0x1d, .overflow = 0x00 },
     462                [0x3b] = { .rshift = 0x1d, .overflow = 0x80 },
     463                [0x3c] = { .rshift = 0x1e, .overflow = 0x00 },
     464                [0x3d] = { .rshift = 0x1e, .overflow = 0x80 },
     465                [0x3e] = { .rshift = 0x1f, .overflow = 0x00 },
     466                [0x3f] = { .rshift = 0x1f, .overflow = 0x80 },
     467                [0x40] = { .rshift = 0x20, .overflow = 0x00 },
     468                [0x41] = { .rshift = 0x20, .overflow = 0x80 },
     469                [0x42] = { .rshift = 0x21, .overflow = 0x00 },
     470                [0x43] = { .rshift = 0x21, .overflow = 0x80 },
     471                [0x44] = { .rshift = 0x22, .overflow = 0x00 },
     472                [0x45] = { .rshift = 0x22, .overflow = 0x80 },
     473                [0x46] = { .rshift = 0x23, .overflow = 0x00 },
     474                [0x47] = { .rshift = 0x23, .overflow = 0x80 },
     475                [0x48] = { .rshift = 0x24, .overflow = 0x00 },
     476                [0x49] = { .rshift = 0x24, .overflow = 0x80 },
     477                [0x4a] = { .rshift = 0x25, .overflow = 0x00 },
     478                [0x4b] = { .rshift = 0x25, .overflow = 0x80 },
     479                [0x4c] = { .rshift = 0x26, .overflow = 0x00 },
     480                [0x4d] = { .rshift = 0x26, .overflow = 0x80 },
     481                [0x4e] = { .rshift = 0x27, .overflow = 0x00 },
     482                [0x4f] = { .rshift = 0x27, .overflow = 0x80 },
     483                [0x50] = { .rshift = 0x28, .overflow = 0x00 },
     484                [0x51] = { .rshift = 0x28, .overflow = 0x80 },
     485                [0x52] = { .rshift = 0x29, .overflow = 0x00 },
     486                [0x53] = { .rshift = 0x29, .overflow = 0x80 },
     487                [0x54] = { .rshift = 0x2a, .overflow = 0x00 },
     488                [0x55] = { .rshift = 0x2a, .overflow = 0x80 },
     489                [0x56] = { .rshift = 0x2b, .overflow = 0x00 },
     490                [0x57] = { .rshift = 0x2b, .overflow = 0x80 },
     491                [0x58] = { .rshift = 0x2c, .overflow = 0x00 },
     492                [0x59] = { .rshift = 0x2c, .overflow = 0x80 },
     493                [0x5a] = { .rshift = 0x2d, .overflow = 0x00 },
     494                [0x5b] = { .rshift = 0x2d, .overflow = 0x80 },
     495                [0x5c] = { .rshift = 0x2e, .overflow = 0x00 },
     496                [0x5d] = { .rshift = 0x2e, .overflow = 0x80 },
     497                [0x5e] = { .rshift = 0x2f, .overflow = 0x00 },
     498                [0x5f] = { .rshift = 0x2f, .overflow = 0x80 },
     499                [0x60] = { .rshift = 0x30, .overflow = 0x00 },
     500                [0x61] = { .rshift = 0x30, .overflow = 0x80 },
     501                [0x62] = { .rshift = 0x31, .overflow = 0x00 },
     502                [0x63] = { .rshift = 0x31, .overflow = 0x80 },
     503                [0x64] = { .rshift = 0x32, .overflow = 0x00 },
     504                [0x65] = { .rshift = 0x32, .overflow = 0x80 },
     505                [0x66] = { .rshift = 0x33, .overflow = 0x00 },
     506                [0x67] = { .rshift = 0x33, .overflow = 0x80 },
     507                [0x68] = { .rshift = 0x34, .overflow = 0x00 },
     508                [0x69] = { .rshift = 0x34, .overflow = 0x80 },
     509                [0x6a] = { .rshift = 0x35, .overflow = 0x00 },
     510                [0x6b] = { .rshift = 0x35, .overflow = 0x80 },
     511                [0x6c] = { .rshift = 0x36, .overflow = 0x00 },
     512                [0x6d] = { .rshift = 0x36, .overflow = 0x80 },
     513                [0x6e] = { .rshift = 0x37, .overflow = 0x00 },
     514                [0x6f] = { .rshift = 0x37, .overflow = 0x80 },
     515                [0x70] = { .rshift = 0x38, .overflow = 0x00 },
     516                [0x71] = { .rshift = 0x38, .overflow = 0x80 },
     517                [0x72] = { .rshift = 0x39, .overflow = 0x00 },
     518                [0x73] = { .rshift = 0x39, .overflow = 0x80 },
     519                [0x74] = { .rshift = 0x3a, .overflow = 0x00 },
     520                [0x75] = { .rshift = 0x3a, .overflow = 0x80 },
     521                [0x76] = { .rshift = 0x3b, .overflow = 0x00 },
     522                [0x77] = { .rshift = 0x3b, .overflow = 0x80 },
     523                [0x78] = { .rshift = 0x3c, .overflow = 0x00 },
     524                [0x79] = { .rshift = 0x3c, .overflow = 0x80 },
     525                [0x7a] = { .rshift = 0x3d, .overflow = 0x00 },
     526                [0x7b] = { .rshift = 0x3d, .overflow = 0x80 },
     527                [0x7c] = { .rshift = 0x3e, .overflow = 0x00 },
     528                [0x7d] = { .rshift = 0x3e, .overflow = 0x80 },
     529                [0x7e] = { .rshift = 0x3f, .overflow = 0x00 },
     530                [0x7f] = { .rshift = 0x3f, .overflow = 0x80 },
     531                [0x80] = { .rshift = 0x40, .overflow = 0x00 },
     532                [0x81] = { .rshift = 0x40, .overflow = 0x80 },
     533                [0x82] = { .rshift = 0x41, .overflow = 0x00 },
     534                [0x83] = { .rshift = 0x41, .overflow = 0x80 },
     535                [0x84] = { .rshift = 0x42, .overflow = 0x00 },
     536                [0x85] = { .rshift = 0x42, .overflow = 0x80 },
     537                [0x86] = { .rshift = 0x43, .overflow = 0x00 },
     538                [0x87] = { .rshift = 0x43, .overflow = 0x80 },
     539                [0x88] = { .rshift = 0x44, .overflow = 0x00 },
     540                [0x89] = { .rshift = 0x44, .overflow = 0x80 },
     541                [0x8a] = { .rshift = 0x45, .overflow = 0x00 },
     542                [0x8b] = { .rshift = 0x45, .overflow = 0x80 },
     543                [0x8c] = { .rshift = 0x46, .overflow = 0x00 },
     544                [0x8d] = { .rshift = 0x46, .overflow = 0x80 },
     545                [0x8e] = { .rshift = 0x47, .overflow = 0x00 },
     546                [0x8f] = { .rshift = 0x47, .overflow = 0x80 },
     547                [0x90] = { .rshift = 0x48, .overflow = 0x00 },
     548                [0x91] = { .rshift = 0x48, .overflow = 0x80 },
     549                [0x92] = { .rshift = 0x49, .overflow = 0x00 },
     550                [0x93] = { .rshift = 0x49, .overflow = 0x80 },
     551                [0x94] = { .rshift = 0x4a, .overflow = 0x00 },
     552                [0x95] = { .rshift = 0x4a, .overflow = 0x80 },
     553                [0x96] = { .rshift = 0x4b, .overflow = 0x00 },
     554                [0x97] = { .rshift = 0x4b, .overflow = 0x80 },
     555                [0x98] = { .rshift = 0x4c, .overflow = 0x00 },
     556                [0x99] = { .rshift = 0x4c, .overflow = 0x80 },
     557                [0x9a] = { .rshift = 0x4d, .overflow = 0x00 },
     558                [0x9b] = { .rshift = 0x4d, .overflow = 0x80 },
     559                [0x9c] = { .rshift = 0x4e, .overflow = 0x00 },
     560                [0x9d] = { .rshift = 0x4e, .overflow = 0x80 },
     561                [0x9e] = { .rshift = 0x4f, .overflow = 0x00 },
     562                [0x9f] = { .rshift = 0x4f, .overflow = 0x80 },
     563                [0xa0] = { .rshift = 0x50, .overflow = 0x00 },
     564                [0xa1] = { .rshift = 0x50, .overflow = 0x80 },
     565                [0xa2] = { .rshift = 0x51, .overflow = 0x00 },
     566                [0xa3] = { .rshift = 0x51, .overflow = 0x80 },
     567                [0xa4] = { .rshift = 0x52, .overflow = 0x00 },
     568                [0xa5] = { .rshift = 0x52, .overflow = 0x80 },
     569                [0xa6] = { .rshift = 0x53, .overflow = 0x00 },
     570                [0xa7] = { .rshift = 0x53, .overflow = 0x80 },
     571                [0xa8] = { .rshift = 0x54, .overflow = 0x00 },
     572                [0xa9] = { .rshift = 0x54, .overflow = 0x80 },
     573                [0xaa] = { .rshift = 0x55, .overflow = 0x00 },
     574                [0xab] = { .rshift = 0x55, .overflow = 0x80 },
     575                [0xac] = { .rshift = 0x56, .overflow = 0x00 },
     576                [0xad] = { .rshift = 0x56, .overflow = 0x80 },
     577                [0xae] = { .rshift = 0x57, .overflow = 0x00 },
     578                [0xaf] = { .rshift = 0x57, .overflow = 0x80 },
     579                [0xb0] = { .rshift = 0x58, .overflow = 0x00 },
     580                [0xb1] = { .rshift = 0x58, .overflow = 0x80 },
     581                [0xb2] = { .rshift = 0x59, .overflow = 0x00 },
     582                [0xb3] = { .rshift = 0x59, .overflow = 0x80 },
     583                [0xb4] = { .rshift = 0x5a, .overflow = 0x00 },
     584                [0xb5] = { .rshift = 0x5a, .overflow = 0x80 },
     585                [0xb6] = { .rshift = 0x5b, .overflow = 0x00 },
     586                [0xb7] = { .rshift = 0x5b, .overflow = 0x80 },
     587                [0xb8] = { .rshift = 0x5c, .overflow = 0x00 },
     588                [0xb9] = { .rshift = 0x5c, .overflow = 0x80 },
     589                [0xba] = { .rshift = 0x5d, .overflow = 0x00 },
     590                [0xbb] = { .rshift = 0x5d, .overflow = 0x80 },
     591                [0xbc] = { .rshift = 0x5e, .overflow = 0x00 },
     592                [0xbd] = { .rshift = 0x5e, .overflow = 0x80 },
     593                [0xbe] = { .rshift = 0x5f, .overflow = 0x00 },
     594                [0xbf] = { .rshift = 0x5f, .overflow = 0x80 },
     595                [0xc0] = { .rshift = 0x60, .overflow = 0x00 },
     596                [0xc1] = { .rshift = 0x60, .overflow = 0x80 },
     597                [0xc2] = { .rshift = 0x61, .overflow = 0x00 },
     598                [0xc3] = { .rshift = 0x61, .overflow = 0x80 },
     599                [0xc4] = { .rshift = 0x62, .overflow = 0x00 },
     600                [0xc5] = { .rshift = 0x62, .overflow = 0x80 },
     601                [0xc6] = { .rshift = 0x63, .overflow = 0x00 },
     602                [0xc7] = { .rshift = 0x63, .overflow = 0x80 },
     603                [0xc8] = { .rshift = 0x64, .overflow = 0x00 },
     604                [0xc9] = { .rshift = 0x64, .overflow = 0x80 },
     605                [0xca] = { .rshift = 0x65, .overflow = 0x00 },
     606                [0xcb] = { .rshift = 0x65, .overflow = 0x80 },
     607                [0xcc] = { .rshift = 0x66, .overflow = 0x00 },
     608                [0xcd] = { .rshift = 0x66, .overflow = 0x80 },
     609                [0xce] = { .rshift = 0x67, .overflow = 0x00 },
     610                [0xcf] = { .rshift = 0x67, .overflow = 0x80 },
     611                [0xd0] = { .rshift = 0x68, .overflow = 0x00 },
     612                [0xd1] = { .rshift = 0x68, .overflow = 0x80 },
     613                [0xd2] = { .rshift = 0x69, .overflow = 0x00 },
     614                [0xd3] = { .rshift = 0x69, .overflow = 0x80 },
     615                [0xd4] = { .rshift = 0x6a, .overflow = 0x00 },
     616                [0xd5] = { .rshift = 0x6a, .overflow = 0x80 },
     617                [0xd6] = { .rshift = 0x6b, .overflow = 0x00 },
     618                [0xd7] = { .rshift = 0x6b, .overflow = 0x80 },
     619                [0xd8] = { .rshift = 0x6c, .overflow = 0x00 },
     620                [0xd9] = { .rshift = 0x6c, .overflow = 0x80 },
     621                [0xda] = { .rshift = 0x6d, .overflow = 0x00 },
     622                [0xdb] = { .rshift = 0x6d, .overflow = 0x80 },
     623                [0xdc] = { .rshift = 0x6e, .overflow = 0x00 },
     624                [0xdd] = { .rshift = 0x6e, .overflow = 0x80 },
     625                [0xde] = { .rshift = 0x6f, .overflow = 0x00 },
     626                [0xdf] = { .rshift = 0x6f, .overflow = 0x80 },
     627                [0xe0] = { .rshift = 0x70, .overflow = 0x00 },
     628                [0xe1] = { .rshift = 0x70, .overflow = 0x80 },
     629                [0xe2] = { .rshift = 0x71, .overflow = 0x00 },
     630                [0xe3] = { .rshift = 0x71, .overflow = 0x80 },
     631                [0xe4] = { .rshift = 0x72, .overflow = 0x00 },
     632                [0xe5] = { .rshift = 0x72, .overflow = 0x80 },
     633                [0xe6] = { .rshift = 0x73, .overflow = 0x00 },
     634                [0xe7] = { .rshift = 0x73, .overflow = 0x80 },
     635                [0xe8] = { .rshift = 0x74, .overflow = 0x00 },
     636                [0xe9] = { .rshift = 0x74, .overflow = 0x80 },
     637                [0xea] = { .rshift = 0x75, .overflow = 0x00 },
     638                [0xeb] = { .rshift = 0x75, .overflow = 0x80 },
     639                [0xec] = { .rshift = 0x76, .overflow = 0x00 },
     640                [0xed] = { .rshift = 0x76, .overflow = 0x80 },
     641                [0xee] = { .rshift = 0x77, .overflow = 0x00 },
     642                [0xef] = { .rshift = 0x77, .overflow = 0x80 },
     643                [0xf0] = { .rshift = 0x78, .overflow = 0x00 },
     644                [0xf1] = { .rshift = 0x78, .overflow = 0x80 },
     645                [0xf2] = { .rshift = 0x79, .overflow = 0x00 },
     646                [0xf3] = { .rshift = 0x79, .overflow = 0x80 },
     647                [0xf4] = { .rshift = 0x7a, .overflow = 0x00 },
     648                [0xf5] = { .rshift = 0x7a, .overflow = 0x80 },
     649                [0xf6] = { .rshift = 0x7b, .overflow = 0x00 },
     650                [0xf7] = { .rshift = 0x7b, .overflow = 0x80 },
     651                [0xf8] = { .rshift = 0x7c, .overflow = 0x00 },
     652                [0xf9] = { .rshift = 0x7c, .overflow = 0x80 },
     653                [0xfa] = { .rshift = 0x7d, .overflow = 0x00 },
     654                [0xfb] = { .rshift = 0x7d, .overflow = 0x80 },
     655                [0xfc] = { .rshift = 0x7e, .overflow = 0x00 },
     656                [0xfd] = { .rshift = 0x7e, .overflow = 0x80 },
     657                [0xfe] = { .rshift = 0x7f, .overflow = 0x00 },
     658                [0xff] = { .rshift = 0x7f, .overflow = 0x80 },
     659        };
     660        uint8_t i;
     661        uint8_t overflow = 0;
     662
     663        for (i = 0; i < AES_BLOCK_SIZE; i++) {
     664                const struct aes_block_rshift_entry *e = &aes_block_rshift_table[in[i]];
     665                out[i] = e->rshift | overflow;
     666                overflow = e->overflow;
     667        }
     668}
    83669#endif /* LIB_CRYPTO_AES_H */
Note: See TracChangeset for help on using the changeset viewer.