Print this page
5007142 Add ntohll and htonll to sys/byteorder.h
6717509 Need to use bswap/bswapq for byte swap of 64-bit integer on x32/x64
PSARC 2008/474
*** 21,32 ****
/*
* Copyright 2008 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
- #pragma ident "%Z%%M% %I% %E% SMI"
-
#include <sys/types.h>
#include <sys/systm.h>
#include <sys/ddi.h>
#include <sys/sysmacros.h>
#include <sys/strsun.h>
--- 21,30 ----
*** 1488,1501 ****
bcopy(cipherKey, keyarr.ka32, keysize);
}
#else /* byte swap */
for (i = 0, j = 0; j < keysize; i++, j += 4) {
! keyarr.ka32[i] = (((uint32_t)cipherKey[j] << 24) |
! ((uint32_t)cipherKey[j + 1] << 16) |
! ((uint32_t)cipherKey[j + 2] << 8) |
! (uint32_t)cipherKey[j + 3]);
}
#endif
aes_setupkeys(newbie, keyarr.ka32, keyBits);
/* EXPORT DELETE END */
--- 1486,1496 ----
bcopy(cipherKey, keyarr.ka32, keysize);
}
#else /* byte swap */
for (i = 0, j = 0; j < keysize; i++, j += 4) {
! keyarr.ka32[i] = htonl(*(uint32_t *)&cipherKey[j]);
}
#endif
aes_setupkeys(newbie, keyarr.ka32, keyBits);
/* EXPORT DELETE END */
*** 1528,1546 ****
/* Copy input block into buffer */
#ifndef AES_BYTE_SWAP
bcopy(pt, &buffer, AES_BLOCK_LEN);
#else /* byte swap */
! buffer[0] = (((uint32_t)pt[0] << 24) | ((uint32_t)pt[1] << 16) |
! ((uint32_t)pt[2] << 8) | (uint32_t)pt[3]);
! buffer[1] = (((uint32_t)pt[4] << 24) | ((uint32_t)pt[5] << 16) |
! ((uint32_t)pt[6] << 8) | (uint32_t)pt[7]);
! buffer[2] = (((uint32_t)pt[8] << 24) | ((uint32_t)pt[9] << 16) |
! ((uint32_t)pt[10] << 8) | (uint32_t)pt[11]);
! buffer[3] = (((uint32_t)pt[12] << 24) |
! ((uint32_t)pt[13] << 16) | ((uint32_t)pt[14] << 8) |
! (uint32_t)pt[15]);
#endif
AES_ENCRYPT_IMPL(&ksch->encr_ks.ks32[0], ksch->nr,
buffer, buffer);
--- 1523,1536 ----
/* Copy input block into buffer */
#ifndef AES_BYTE_SWAP
bcopy(pt, &buffer, AES_BLOCK_LEN);
#else /* byte swap */
! buffer[0] = htonl(*(uint32_t *)&pt[0]);
! buffer[1] = htonl(*(uint32_t *)&pt[4]);
! buffer[2] = htonl(*(uint32_t *)&pt[8]);
! buffer[3] = htonl(*(uint32_t *)&pt[12]);
#endif
AES_ENCRYPT_IMPL(&ksch->encr_ks.ks32[0], ksch->nr,
buffer, buffer);
*** 1548,1573 ****
#ifndef AES_BYTE_SWAP
bcopy(&buffer, ct, AES_BLOCK_LEN);
}
#else /* byte swap */
! ct[0] = buffer[0] >> 24;
! ct[1] = buffer[0] >> 16;
! ct[2] = buffer[0] >> 8;
! ct[3] = (uint8_t)buffer[0];
! ct[4] = buffer[1] >> 24;
! ct[5] = buffer[1] >> 16;
! ct[6] = buffer[1] >> 8;
! ct[7] = (uint8_t)buffer[1];
! ct[8] = buffer[2] >> 24;
! ct[9] = buffer[2] >> 16;
! ct[10] = buffer[2] >> 8;
! ct[11] = (uint8_t)buffer[2];
! ct[12] = buffer[3] >> 24;
! ct[13] = buffer[3] >> 16;
! ct[14] = buffer[3] >> 8;
! ct[15] = (uint8_t)buffer[3];
#endif
/* EXPORT DELETE END */
return (CRYPTO_SUCCESS);
}
--- 1538,1551 ----
#ifndef AES_BYTE_SWAP
bcopy(&buffer, ct, AES_BLOCK_LEN);
}
#else /* byte swap */
! *(uint32_t *)&ct[0] = htonl(buffer[0]);
! *(uint32_t *)&ct[4] = htonl(buffer[1]);
! *(uint32_t *)&ct[8] = htonl(buffer[2]);
! *(uint32_t *)&ct[12] = htonl(buffer[3]);
#endif
/* EXPORT DELETE END */
return (CRYPTO_SUCCESS);
}
*** 1598,1619 ****
/* Copy input block into buffer */
#ifndef AES_BYTE_SWAP
bcopy(ct, &buffer, AES_BLOCK_LEN);
#else /* byte swap */
! buffer[0] = (((uint32_t)ct[0] << 24) | ((uint32_t)ct[1] << 16) |
! ((uint32_t)ct[2] << 8) | (uint32_t)ct[3]);
!
! buffer[1] = (((uint32_t)ct[4] << 24) | ((uint32_t)ct[5] << 16) |
! ((uint32_t)ct[6] << 8) | (uint32_t)ct[7]);
!
! buffer[2] = (((uint32_t)ct[8] << 24) | ((uint32_t)ct[9] << 16) |
! ((uint32_t)ct[10] << 8) | (uint32_t)ct[11]);
!
! buffer[3] = (((uint32_t)ct[12] << 24) |
! ((uint32_t)ct[13] << 16) | ((uint32_t)ct[14] << 8) |
! (uint32_t)ct[15]);
#endif
AES_DECRYPT_IMPL(&ksch->decr_ks.ks32[0], ksch->nr,
buffer, buffer);
--- 1576,1589 ----
/* Copy input block into buffer */
#ifndef AES_BYTE_SWAP
bcopy(ct, &buffer, AES_BLOCK_LEN);
#else /* byte swap */
! buffer[0] = htonl(*(uint32_t *)&ct[0]);
! buffer[1] = htonl(*(uint32_t *)&ct[4]);
! buffer[2] = htonl(*(uint32_t *)&ct[8]);
! buffer[3] = htonl(*(uint32_t *)&ct[12]);
#endif
AES_DECRYPT_IMPL(&ksch->decr_ks.ks32[0], ksch->nr,
buffer, buffer);
*** 1621,1646 ****
#ifndef AES_BYTE_SWAP
bcopy(&buffer, pt, AES_BLOCK_LEN);
}
#else /* byte swap */
! pt[0] = buffer[0] >> 24;
! pt[1] = buffer[0] >> 16;
! pt[2] = buffer[0] >> 8;
! pt[3] = (uint8_t)buffer[0];
! pt[4] = buffer[1] >> 24;
! pt[5] = buffer[1] >> 16;
! pt[6] = buffer[1] >> 8;
! pt[7] = (uint8_t)buffer[1];
! pt[8] = buffer[2] >> 24;
! pt[9] = buffer[2] >> 16;
! pt[10] = buffer[2] >> 8;
! pt[11] = (uint8_t)buffer[2];
! pt[12] = buffer[3] >> 24;
! pt[13] = buffer[3] >> 16;
! pt[14] = buffer[3] >> 8;
! pt[15] = (uint8_t)buffer[3];
#endif
/* EXPORT DELETE END */
return (CRYPTO_SUCCESS);
}
--- 1591,1604 ----
#ifndef AES_BYTE_SWAP
bcopy(&buffer, pt, AES_BLOCK_LEN);
}
#else /* byte swap */
! *(uint32_t *)&pt[0] = htonl(buffer[0]);
! *(uint32_t *)&pt[4] = htonl(buffer[1]);
! *(uint32_t *)&pt[8] = htonl(buffer[2]);
! *(uint32_t *)&pt[12] = htonl(buffer[3]);
#endif
/* EXPORT DELETE END */
return (CRYPTO_SUCCESS);
}