Skip to content

Commit d07880d

Browse files
committed
Add optional offset to AesCtOrtho
1 parent d1e638b commit d07880d

File tree

1 file changed

+17
-15
lines changed

1 file changed

+17
-15
lines changed

Classes/FCryptoAES.uc

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -318,25 +318,28 @@ static final function AesCtBitSliceSBox(out array<int> Q)
318318
Q[0] = S7;
319319
}
320320

321-
static final function AesCtOrtho(out array<int> Q)
321+
static final function AesCtOrtho(
322+
out array<int> Q,
323+
optional int Offset = 0
324+
)
322325
{
323326
local int A;
324327
local int B;
325328

326-
`SWAP2(Q[0], Q[1]);
327-
`SWAP2(Q[2], Q[3]);
328-
`SWAP2(Q[4], Q[5]);
329-
`SWAP2(Q[6], Q[7]);
329+
`SWAP2(Q[Offset + 0], Q[Offset + 1]);
330+
`SWAP2(Q[Offset + 2], Q[Offset + 3]);
331+
`SWAP2(Q[Offset + 4], Q[Offset + 5]);
332+
`SWAP2(Q[Offset + 6], Q[Offset + 7]);
330333

331-
`SWAP4(Q[0], Q[2]);
332-
`SWAP4(Q[1], Q[3]);
333-
`SWAP4(Q[4], Q[6]);
334-
`SWAP4(Q[5], Q[7]);
334+
`SWAP4(Q[Offset + 0], Q[Offset + 2]);
335+
`SWAP4(Q[Offset + 1], Q[Offset + 3]);
336+
`SWAP4(Q[Offset + 4], Q[Offset + 6]);
337+
`SWAP4(Q[Offset + 5], Q[Offset + 7]);
335338

336-
`SWAP8(Q[0], Q[4]);
337-
`SWAP8(Q[1], Q[5]);
338-
`SWAP8(Q[2], Q[6]);
339-
`SWAP8(Q[3], Q[7]);
339+
`SWAP8(Q[Offset + 0], Q[Offset + 4]);
340+
`SWAP8(Q[Offset + 1], Q[Offset + 5]);
341+
`SWAP8(Q[Offset + 2], Q[Offset + 6]);
342+
`SWAP8(Q[Offset + 3], Q[Offset + 7]);
340343
}
341344

342345
static final function int SubWord(int X)
@@ -431,8 +434,7 @@ static final function int AesCtKeySched(
431434
}
432435
for (I = 0; I < Nkf; I += 4)
433436
{
434-
// TODO: take in offset.
435-
// AesCtOrtho(SKey + (I << 1));
437+
AesCtOrtho(SKey, I << 1);
436438
}
437439
J = 0;
438440
for (I = 0; I < Nkf; ++I)

0 commit comments

Comments
 (0)