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); }