Print this page
first pass
*** 40,51 ****
#if defined(__i386) || defined(__amd64)
#include <sys/byteorder.h>
#define UNALIGNED_POINTERS_PERMITTED
#endif
- /* EXPORT DELETE START */
-
typedef struct keysched_s {
uint64_t ksch_encrypt[16];
uint64_t ksch_decrypt[16];
} keysched_t;
--- 40,49 ----
*** 499,515 ****
return (des_fp(l, r));
}
#endif /* !sun4u */
- /* EXPORT DELETE END */
-
int
des3_crunch_block(const void *cookie, const uint8_t block[DES_BLOCK_LEN],
uint8_t out_block[DES_BLOCK_LEN], boolean_t decrypt)
{
- /* EXPORT DELETE START */
keysched3_t *ksch = (keysched3_t *)cookie;
/*
* The code below, that is always executed on LITTLE_ENDIAN machines,
* reverses bytes in the block. On BIG_ENDIAN, the same code
--- 497,510 ----
*** 558,576 ****
out_block[5] = tmp >> 16;
out_block[6] = tmp >> 8;
out_block[7] = (uint8_t)tmp;
#endif /* UNALIGNED_POINTERS_PERMITTED */
}
- /* EXPORT DELETE END */
return (CRYPTO_SUCCESS);
}
int
des_crunch_block(const void *cookie, const uint8_t block[DES_BLOCK_LEN],
uint8_t out_block[DES_BLOCK_LEN], boolean_t decrypt)
{
- /* EXPORT DELETE START */
keysched_t *ksch = (keysched_t *)cookie;
/*
* The code below, that is always executed on LITTLE_ENDIAN machines,
* reverses bytes in the block. On BIG_ENDIAN, the same code
--- 553,569 ----
*** 621,638 ****
out_block[5] = tmp >> 16;
out_block[6] = tmp >> 8;
out_block[7] = (uint8_t)tmp;
#endif /* UNALIGNED_POINTERS_PERMITTED */
}
- /* EXPORT DELETE END */
return (CRYPTO_SUCCESS);
}
static boolean_t
keycheck(uint8_t *key, uint8_t *corrected_key)
{
- /* EXPORT DELETE START */
uint64_t key_so_far;
uint_t i;
/*
* Table of weak and semi-weak keys. Fortunately, weak keys are
* endian-independent, and some semi-weak keys can be paired up in
--- 614,629 ----
*** 714,731 ****
corrected_key[5] = key_so_far >> 16;
corrected_key[6] = key_so_far >> 8;
corrected_key[7] = (uint8_t)key_so_far;
#endif /* UNALIGNED_POINTERS_PERMITTED */
}
- /* EXPORT DELETE END */
return (B_TRUE);
}
static boolean_t
des23_keycheck(uint8_t *key, uint8_t *corrected_key, boolean_t des3)
{
- /* EXPORT DELETE START */
uint64_t aligned_key[DES3_KEYSIZE / sizeof (uint64_t)];
uint64_t key_so_far, scratch, *currentkey;
uint_t j, num_weakkeys = 0;
uint8_t keysize = DES3_KEYSIZE;
uint8_t checks = 3;
--- 705,720 ----
*** 779,789 ****
if (corrected_key != NULL) {
bcopy(currentkey, corrected_key, keysize);
}
- /* EXPORT DELETE END */
return (B_TRUE);
}
boolean_t
des_keycheck(uint8_t *key, des_strength_t strength, uint8_t *corrected_key)
--- 768,777 ----
*** 800,810 ****
}
void
des_parity_fix(uint8_t *key, des_strength_t strength, uint8_t *corrected_key)
{
- /* EXPORT DELETE START */
uint64_t aligned_key[DES3_KEYSIZE / sizeof (uint64_t)];
uint8_t *paritied_key;
uint64_t key_so_far;
int i = 0, offset = 0;
--- 788,797 ----
*** 846,866 ****
i++;
}
bcopy(paritied_key, corrected_key, DES_KEYSIZE * strength);
- /* EXPORT DELETE END */
}
/*
* Initialize key schedule for DES, DES2, and DES3
*/
void
des_init_keysched(uint8_t *cipherKey, des_strength_t strength, void *ks)
{
- /* EXPORT DELETE START */
uint64_t *encryption_ks;
uint64_t *decryption_ks;
uint64_t keysched[48];
uint64_t key_uint64[3];
uint64_t tmp;
--- 833,851 ----
*** 945,955 ****
keysched[2 * keysize -1 -i] = tmp;
}
/* save the decryption keyschedule */
bcopy(keysched, decryption_ks, keysize * 16);
- /* EXPORT DELETE END */
}
/*
* Allocate key schedule.
*/
--- 930,939 ----
*** 957,968 ****
void *
des_alloc_keysched(size_t *keysched_size, des_strength_t strength, int kmflag)
{
void *keysched;
- /* EXPORT DELETE START */
-
size_t size;
switch (strength) {
case DES:
size = sizeof (keysched_t);
--- 941,950 ----
*** 982,993 ****
return (NULL);
if (keysched_size != NULL)
*keysched_size = size;
- /* EXPORT DELETE END */
-
return (keysched);
}
/*
* Replace the LSB of each byte by the xor of the other
--- 964,973 ----
*** 995,1012 ****
* are nullified by including them twice in the xor computation.
*/
static void
fix_des_parity(uint64_t *keyp)
{
- /* EXPORT DELETE START */
uint64_t k = *keyp;
k ^= k >> 1;
k ^= k >> 2;
k ^= k >> 4;
*keyp ^= (k & 0x0101010101010101ULL);
*keyp ^= 0x0101010101010101ULL;
- /* EXPORT DELETE END */
}
void
des_copy_block(uint8_t *in, uint8_t *out)
{
--- 975,990 ----