socsvn commit: r257576 - soc2013/def/crashdump-head/sys/crypto
def at FreeBSD.org
def at FreeBSD.org
Sat Sep 21 21:57:29 UTC 2013
Author: def
Date: Sat Sep 21 21:57:29 2013
New Revision: 257576
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=257576
Log:
Provide a sequential number of 128-bits block inside a data unit for xts_block_encrypt and xts_block_decrypt. Multiply tweak by alpha^j.
Modified:
soc2013/def/crashdump-head/sys/crypto/xts.c
soc2013/def/crashdump-head/sys/crypto/xts.h
Modified: soc2013/def/crashdump-head/sys/crypto/xts.c
==============================================================================
--- soc2013/def/crashdump-head/sys/crypto/xts.c Sat Sep 21 21:14:05 2013 (r257575)
+++ soc2013/def/crashdump-head/sys/crypto/xts.c Sat Sep 21 21:57:29 2013 (r257576)
@@ -126,24 +126,30 @@
static __inline void
xts_start(const struct xts_alg *alg, const struct xts_ctx *tweak_ctx,
- uint64_t *tweak, uint64_t sector, const uint8_t *xtweak)
+ uint64_t *tweak, uint64_t sector, const uint8_t *xtweak, int j)
{
+ int i;
+
tweak[0] = htole64(sector);
tweak[1] = *((const uint64_t *)xtweak);
/* encrypt the tweak */
alg->pa_encrypt(tweak_ctx, (uint8_t *)tweak, (uint8_t *)tweak);
+
+ /* multiply by alpha^j */
+ for (i = 0 ; i < j ; i++)
+ gf_mul128(tweak, tweak);
}
void
xts_block_encrypt(const struct xts_alg *alg,
const struct xts_ctx *tweak_ctx, const struct xts_ctx *data_ctx,
- uint64_t sector, const uint8_t *xtweak, int len,
+ uint64_t sector, const uint8_t *xtweak, int j, int len,
const uint8_t *src, uint8_t *dst)
{
uint64_t tweak[XTS_BLK_BYTES / 8];
- xts_start(alg, tweak_ctx, tweak, sector, xtweak);
+ xts_start(alg, tweak_ctx, tweak, sector, xtweak, j);
while (len >= XTS_BLK_BYTES) {
xts_fullblock(alg->pa_encrypt, data_ctx, tweak, src, dst);
@@ -159,13 +165,13 @@
void
xts_block_decrypt(const struct xts_alg *alg,
const struct xts_ctx *tweak_ctx, const struct xts_ctx *data_ctx,
- uint64_t sector, const uint8_t *xtweak, int len,
+ uint64_t sector, const uint8_t *xtweak, int j, int len,
const uint8_t *src, uint8_t *dst)
{
uint64_t tweak[XTS_BLK_BYTES / 8];
uint64_t prevtweak[XTS_BLK_BYTES / 8];
- xts_start(alg, tweak_ctx, tweak, sector, xtweak);
+ xts_start(alg, tweak_ctx, tweak, sector, xtweak, j);
if ((len & XTS_BLK_MASK) != 0)
len -= XTS_BLK_BYTES;
Modified: soc2013/def/crashdump-head/sys/crypto/xts.h
==============================================================================
--- soc2013/def/crashdump-head/sys/crypto/xts.h Sat Sep 21 21:14:05 2013 (r257575)
+++ soc2013/def/crashdump-head/sys/crypto/xts.h Sat Sep 21 21:57:29 2013 (r257576)
@@ -60,12 +60,12 @@
void xts_block_encrypt(const struct xts_alg *alg,
const struct xts_ctx *tweak_ctx, const struct xts_ctx *data_ctx,
- uint64_t sector, const uint8_t *xtweak, int len,
+ uint64_t sector, const uint8_t *xtweak, int j, int len,
const uint8_t *src, uint8_t *dst);
void xts_block_decrypt(const struct xts_alg *alg,
const struct xts_ctx *tweak_ctx, const struct xts_ctx *data_ctx,
- uint64_t sector, const uint8_t *xtweak, int len,
+ uint64_t sector, const uint8_t *xtweak, int j, int len,
const uint8_t *src, uint8_t *dst);
algop_crypt_t xts_aes_encrypt;
More information about the svn-soc-all
mailing list