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

Location:
vendor/current/lib/crypto
Files:
14 added
16 edited

Legend:

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

    r740 r988  
    3333
    3434#include "replace.h"
     35#include "aes.h"
    3536
     37#ifdef SAMBA_RIJNDAEL
    3638#include "rijndael-alg-fst.h"
    37 #include "aes.h"
    3839
    3940int
     
    6667    rijndaelDecrypt(key->key, key->rounds, in, out);
    6768}
     69#endif /* SAMBA_RIJNDAEL */
    6870
     71#ifdef SAMBA_AES_CBC_ENCRYPT
    6972void
    7073AES_cbc_encrypt(const unsigned char *in, unsigned char *out,
     
    113116    }
    114117}
     118#endif /* SAMBA_AES_CBC_ENCRYPT */
    115119
    116 void aes_cfb8_encrypt(const uint8_t *in, uint8_t *out,
    117                       size_t length, const AES_KEY *key,
    118                       uint8_t *iv, int forward)
     120#ifdef SAMBA_AES_CFB8_ENCRYPT
     121void
     122AES_cfb8_encrypt(const unsigned char *in, unsigned char *out,
     123                 unsigned long size, const AES_KEY *key,
     124                 unsigned char *iv, int forward_encrypt)
    119125{
    120         size_t i;
     126    int i;
    121127
    122         for (i=0; i < length; i++) {
    123                 uint8_t tiv[AES_BLOCK_SIZE*2];
     128    for (i = 0; i < size; i++) {
     129        unsigned char tmp[AES_BLOCK_SIZE + 1];
    124130
    125                 memcpy(tiv, iv, AES_BLOCK_SIZE);
    126                 AES_encrypt(iv, iv, key);
    127                 if (!forward) {
    128                         tiv[AES_BLOCK_SIZE] = in[i];
    129                 }
    130                 out[i] = in[i] ^ iv[0];
    131                 if (forward) {
    132                         tiv[AES_BLOCK_SIZE] = out[i];
    133                 }
    134                 memcpy(iv, tiv+1, AES_BLOCK_SIZE);
    135         }
     131        memcpy(tmp, iv, AES_BLOCK_SIZE);
     132        AES_encrypt(iv, iv, key);
     133        if (!forward_encrypt) {
     134            tmp[AES_BLOCK_SIZE] = in[i];
     135        }
     136        out[i] = in[i] ^ iv[0];
     137        if (forward_encrypt) {
     138            tmp[AES_BLOCK_SIZE] = out[i];
     139        }
     140        memcpy(iv, &tmp[1], AES_BLOCK_SIZE);
     141    }
    136142}
     143#endif /* SAMBA_AES_CFB8_ENCRYPT */
  • 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 */
  • vendor/current/lib/crypto/arcfour.c

    r740 r988  
    8282_PUBLIC_ void arcfour_crypt(uint8_t *data, const uint8_t keystr[16], int len)
    8383{
    84         DATA_BLOB key = data_blob(keystr, 16);
    85        
     84        uint8_t keycopy[16];
     85        DATA_BLOB key = { .data = keycopy, .length = sizeof(keycopy) };
     86
     87        memcpy(keycopy, keystr, sizeof(keycopy));
     88
    8689        arcfour_crypt_blob(data, len, &key);
    87 
    88         data_blob_free(&key);
    8990}
    9091
  • vendor/current/lib/crypto/crypto.h

    r414 r988  
    1818*/
    1919
     20#ifndef _SAMBA_CRYPTO_H_
     21#define _SAMBA_CRYPTO_H_
     22
    2023#include "../lib/crypto/crc32.h"
    2124#include "../lib/crypto/md4.h"
     
    2629#include "../lib/crypto/arcfour.h"
    2730#include "../lib/crypto/aes.h"
     31#include "../lib/crypto/aes_cmac_128.h"
     32#include "../lib/crypto/aes_ccm_128.h"
     33#include "../lib/crypto/aes_gcm_128.h"
    2834
     35#endif /* _SAMBA_CRYPTO_H_ */
  • vendor/current/lib/crypto/hmacmd5.c

    r746 r988  
    3737        if (key_len > 64)
    3838        {
    39                 MD5_CTX tctx;
     39                MD5_CTX tctx;
    4040
    4141                MD5Init(&tctx);
     
    9292_PUBLIC_ void hmac_md5_final(uint8_t *digest, HMACMD5Context *ctx)
    9393{
    94         MD5_CTX ctx_o;
     94        MD5_CTX ctx_o;
    9595
    9696        MD5Final(digest, &ctx->ctx);         
  • vendor/current/lib/crypto/hmacmd5.h

    r746 r988  
    2626typedef struct
    2727{
    28         MD5_CTX ctx;
     28        MD5_CTX ctx;
    2929        uint8_t k_ipad[65];   
    3030        uint8_t k_opad[65];
  • vendor/current/lib/crypto/hmacmd5test.c

    r740 r988  
    1818*/
    1919#include "replace.h"
    20 #include "../lib/util/util.h"
     20#include "../lib/util/samba_util.h"
    2121#include "../lib/crypto/crypto.h"
    2222
    2323struct torture_context;
     24bool torture_local_crypto_hmacmd5(struct torture_context *torture);
    2425
    2526static DATA_BLOB data_blob_repeat_byte(uint8_t byte, size_t length)
  • vendor/current/lib/crypto/hmacsha256.c

    r740 r988  
    4343                SHA256_CTX tctx;
    4444
    45                 SHA256_Init(&tctx);
    46                 SHA256_Update(&tctx, key, key_len);
    47                 SHA256_Final(tk, &tctx);
     45                samba_SHA256_Init(&tctx);
     46                samba_SHA256_Update(&tctx, key, key_len);
     47                samba_SHA256_Final(tk, &tctx);
    4848
    4949                key = tk;
     
    6464        }
    6565
    66         SHA256_Init(&ctx->ctx);
    67         SHA256_Update(&ctx->ctx, ctx->k_ipad, 64); 
     66        samba_SHA256_Init(&ctx->ctx);
     67        samba_SHA256_Update(&ctx->ctx, ctx->k_ipad, 64);
    6868}
    6969
     
    7373_PUBLIC_ void hmac_sha256_update(const uint8_t *data, size_t data_len, struct HMACSHA256Context *ctx)
    7474{
    75         SHA256_Update(&ctx->ctx, data, data_len); /* then text of datagram */
     75        samba_SHA256_Update(&ctx->ctx, data, data_len); /* then text of datagram */
    7676}
    7777
     
    8383        SHA256_CTX ctx_o;
    8484
    85         SHA256_Final(digest, &ctx->ctx);
     85        samba_SHA256_Final(digest, &ctx->ctx);
    8686
    87         SHA256_Init(&ctx_o);
    88         SHA256_Update(&ctx_o, ctx->k_opad, 64);
    89         SHA256_Update(&ctx_o, digest, SHA256_DIGEST_LENGTH);
    90         SHA256_Final(digest, &ctx_o);
     87        samba_SHA256_Init(&ctx_o);
     88        samba_SHA256_Update(&ctx_o, ctx->k_opad, 64);
     89        samba_SHA256_Update(&ctx_o, digest, SHA256_DIGEST_LENGTH);
     90        samba_SHA256_Final(digest, &ctx_o);
    9191}
  • vendor/current/lib/crypto/hmacsha256.h

    r414 r988  
    3434void hmac_sha256_init(const uint8_t *key, size_t key_len, struct HMACSHA256Context *ctx);
    3535void hmac_sha256_update(const uint8_t *data, size_t data_len, struct HMACSHA256Context *ctx);
    36 void hmac_sha256_final(uint8_t digest[20], struct HMACSHA256Context *ctx);
     36void hmac_sha256_final(uint8_t digest[SHA256_DIGEST_LENGTH], struct HMACSHA256Context *ctx);
    3737
    3838#endif /* _HMAC_SHA256_H */
  • vendor/current/lib/crypto/md4test.c

    r740 r988  
    1919
    2020#include "replace.h"
    21 #include "../lib/util/util.h"
     21#include "../lib/util/samba_util.h"
    2222#include "../lib/crypto/crypto.h"
    2323
    2424struct torture_context;
     25bool torture_local_crypto_md4(struct torture_context *torture);
    2526
    2627/*
  • vendor/current/lib/crypto/md5.c

    r740 r988  
    4444 * initialization constants.
    4545 */
    46 _PUBLIC_ void MD5Init(struct MD5Context *ctx)
     46_PUBLIC_ void MD5Init(MD5_CTX *ctx)
    4747{
    4848    ctx->buf[0] = 0x67452301;
     
    5959 * of bytes.
    6060 */
    61 _PUBLIC_ void MD5Update(struct MD5Context *ctx, const uint8_t *buf, size_t len)
     61_PUBLIC_ void MD5Update(MD5_CTX *ctx, const uint8_t *buf, size_t len)
    6262{
    6363    register uint32_t t;
     
    107107 * 1 0* (64-bit count of bits processed, MSB-first)
    108108 */
    109 _PUBLIC_ void MD5Final(uint8_t digest[16], struct MD5Context *ctx)
     109_PUBLIC_ void MD5Final(uint8_t digest[16], MD5_CTX *ctx)
    110110{
    111111    unsigned int count;
     
    138138    byteReverse(ctx->in, 14);
    139139
    140     /* Append length in bits and transform */
    141     ((uint32_t *) ctx->in)[14] = ctx->bits[0];
    142     ((uint32_t *) ctx->in)[15] = ctx->bits[1];
     140    /* Append length in bits and transform.
     141     * Use memcpy to avoid strict-aliasing problems.
     142     * This way it can be optimized.
     143     */
     144    memcpy(&ctx->in[14 * sizeof(uint32_t)], &ctx->bits[0], sizeof(uint32_t));
     145    memcpy(&ctx->in[15 * sizeof(uint32_t)], &ctx->bits[1], sizeof(uint32_t));
    143146
    144147    MD5Transform(ctx->buf, (uint32_t *) ctx->in);
  • vendor/current/lib/crypto/md5.h

    r746 r988  
    11#ifndef MD5_H
    22#define MD5_H
     3
    34#ifndef HEADER_MD5_H
    45/* Try to avoid clashes with OpenSSL */
     
    67#endif
    78
    8 #ifdef HAVE_MD5_H
    9 /*
    10  * Try to avoid clashes with Solaris MD5 implementation.
    11  * ...where almost all implementations follows:
    12  * "Schneier's Cryptography Classics Library"
    13  */
    14 #include <md5.h>
     9#if defined(HAVE_BSD_MD5_H)
     10/* Try to avoid clashes with BSD MD5 implementation (on linux) */
     11#include <bsd/md5.h>
     12
     13#elif defined(HAVE_SYS_MD5_H)
     14/* Try to avoid clashes with BSD MD5 implementation (on BSD) */
     15#include <sys/md5.h>
     16
     17/* Try to use CommonCrypto on Mac as otherwise we can get MD5Final twice */
     18#elif defined(HAVE_COMMONCRYPTO_COMMONDIGEST_H)
     19#include <CommonCrypto/CommonDigest.h>
     20
     21#define MD5_CTX                                 CC_MD5_CTX
     22#define MD5Init(c)                                      CC_MD5_Init(c)
     23#define MD5Update(c,d,l)                        CC_MD5_Update(c,d,l)
     24#define MD5Final(m, c)                          CC_MD5_Final((unsigned char *)m,c)
     25#define MD5Context CC_MD5state_st
     26
    1527#else
    16 
    17 struct MD5Context {
     28typedef struct MD5Context {
    1829        uint32_t buf[4];
    1930        uint32_t bits[2];
    2031        uint8_t in[64];
    21 };
    22 typedef struct MD5Context MD5_CTX;
     32} MD5_CTX;
    2333
    24 void MD5Init(struct MD5Context *context);
    25 void MD5Update(struct MD5Context *context, const uint8_t *buf,
     34#define MD5_DIGEST_LENGTH 16
     35
     36void MD5Init(MD5_CTX *context);
     37void MD5Update(MD5_CTX *context, const uint8_t *buf,
    2638               size_t len);
    27 void MD5Final(uint8_t digest[16], struct MD5Context *context);
    28 
    29 #endif /* !HAVE_MD5_H */
     39void MD5Final(uint8_t digest[MD5_DIGEST_LENGTH], MD5_CTX *context);
     40#endif /* HAVE_*MD5_H */
    3041
    3142#endif /* !MD5_H */
  • vendor/current/lib/crypto/md5test.c

    r746 r988  
    1919
    2020#include "replace.h"
    21 #include "../lib/util/util.h"
     21#include "../lib/util/samba_util.h"
    2222#include "../lib/crypto/crypto.h"
    2323
    2424struct torture_context;
     25
     26bool torture_local_crypto_md5(struct torture_context *torture);
    2527
    2628/*
  • vendor/current/lib/crypto/sha256.c

    r740 r988  
    8181
    8282void
    83 SHA256_Init (SHA256_CTX *m)
     83samba_SHA256_Init (SHA256_CTX *m)
    8484{
    8585    m->sz[0] = 0;
     
    188188
    189189void
    190 SHA256_Update (SHA256_CTX *m, const void *v, size_t len)
     190samba_SHA256_Update (SHA256_CTX *m, const void *v, size_t len)
    191191{
    192192    const unsigned char *p = (const unsigned char *)v;
     
    223223
    224224void
    225 SHA256_Final (void *res, SHA256_CTX *m)
     225samba_SHA256_Final (void *res, SHA256_CTX *m)
    226226{
    227227    unsigned char zeros[72];
     
    239239    zeros[dstart+1] = (m->sz[1] >> 16) & 0xff;
    240240    zeros[dstart+0] = (m->sz[1] >> 24) & 0xff;
    241     SHA256_Update (m, zeros, dstart + 8);
     241    samba_SHA256_Update (m, zeros, dstart + 8);
    242242    {
    243243        int i;
  • vendor/current/lib/crypto/sha256.h

    r414 r988  
    4343#define HEIM_SHA_H 1
    4444
    45 #if 0
     45#if SHA1_RENAME_NEEDED
    4646/* symbol renaming */
    4747#define SHA1_Init hc_SHA1_Init
    4848#define SHA1_Update hc_SHA1_Update
    4949#define SHA1_Final hc_SHA1_Final
     50#endif
     51#if SHA256_RENAME_NEEDED
     52/* symbol renaming */
    5053#define SHA256_Init hc_SHA256_Init
    5154#define SHA256_Update hc_SHA256_Update
     
    8588typedef struct hc_sha256state SHA256_CTX;
    8689
    87 void SHA256_Init (SHA256_CTX *);
    88 void SHA256_Update (SHA256_CTX *, const void *, size_t);
    89 void SHA256_Final (void *, SHA256_CTX *);
     90void samba_SHA256_Init (SHA256_CTX *);
     91void samba_SHA256_Update (SHA256_CTX *, const void *, size_t);
     92void samba_SHA256_Final (void *, SHA256_CTX *);
    9093
    9194#endif /* HEIM_SHA_H */
  • vendor/current/lib/crypto/wscript_build

    r740 r988  
    11#!/usr/bin/env python
    22
     3extra_source = ''
     4extra_deps = ''
     5if bld.CONFIG_SET('HAVE_BSD_MD5_H'):
     6        extra_deps += ' bsd'
     7elif bld.CONFIG_SET('HAVE_SYS_MD5_H') and bld.CONFIG_SET('HAVE_LIBMD5'):
     8        extra_deps += ' md5'
     9elif bld.CONFIG_SET('HAVE_SYS_MD5_H') and bld.CONFIG_SET('HAVE_LIBMD'):
     10        extra_deps += ' md'
     11elif not bld.CONFIG_SET('HAVE_SYS_MD5_H') and not bld.CONFIG_SET('HAVE_COMMONCRYPTO_COMMONDIGEST_H'):
     12        extra_source += ' md5.c'
     13
    314bld.SAMBA_SUBSYSTEM('LIBCRYPTO',
    4         source='crc32.c md5.c hmacmd5.c md4.c arcfour.c sha256.c hmacsha256.c aes.c rijndael-alg-fst.c',
    5         deps='talloc'
    6         )
    7 
     15        source='''crc32.c hmacmd5.c md4.c arcfour.c sha256.c sha512.c hmacsha256.c
     16        aes.c rijndael-alg-fst.c aes_cmac_128.c aes_ccm_128.c aes_gcm_128.c
     17        ''' + extra_source,
     18        deps='talloc' + extra_deps
     19        )
    820
    921bld.SAMBA_SUBSYSTEM('TORTURE_LIBCRYPTO',
    10         source='md4test.c md5test.c hmacmd5test.c',
    11         autoproto='test_proto.h',
    12         deps='LIBCRYPTO'
    13         )
    14 
     22        source='''md4test.c md5test.c hmacmd5test.c
     23            aes_cmac_128_test.c aes_ccm_128_test.c aes_gcm_128_test.c
     24        ''',
     25        autoproto='test_proto.h',
     26        deps='LIBCRYPTO'
     27        )
Note: See TracChangeset for help on using the changeset viewer.