Remove unneeded Rijndael_Subkey_POWER8 (GH #588)
This is due to the removal of a path in Rijndael_UncheckedSetKey_POWER8pull/589/head
parent
5b09d46665
commit
2b2303bc75
|
|
@ -539,19 +539,6 @@ size_t Rijndael_Dec_AdvancedProcessBlocks_AESNI(const word32 *subKeys, size_t ro
|
||||||
|
|
||||||
ANONYMOUS_NAMESPACE_BEGIN
|
ANONYMOUS_NAMESPACE_BEGIN
|
||||||
|
|
||||||
/* Round constants */
|
|
||||||
static const uint32_t s_rcon[3][4] = {
|
|
||||||
#if defined(CRYPTOPP_LITTLE_ENDIAN)
|
|
||||||
{0x01,0x01,0x01,0x01}, /* 1 */
|
|
||||||
{0x1b,0x1b,0x1b,0x1b}, /* 9 */
|
|
||||||
{0x36,0x36,0x36,0x36} /* 10 */
|
|
||||||
#else
|
|
||||||
{0x01000000,0x01000000,0x01000000,0x01000000}, /* 1 */
|
|
||||||
{0x1b000000,0x1b000000,0x1b000000,0x1b000000}, /* 9 */
|
|
||||||
{0x36000000,0x36000000,0x36000000,0x36000000} /* 10 */
|
|
||||||
#endif
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Permute mask */
|
/* Permute mask */
|
||||||
static const uint32_t s_mask[4] = {
|
static const uint32_t s_mask[4] = {
|
||||||
#if defined(CRYPTOPP_LITTLE_ENDIAN)
|
#if defined(CRYPTOPP_LITTLE_ENDIAN)
|
||||||
|
|
@ -561,40 +548,6 @@ static const uint32_t s_mask[4] = {
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline uint8x16_p
|
|
||||||
Rijndael_Subkey_POWER8(uint8x16_p r1, const uint8x16_p r4, const uint8x16_p r5)
|
|
||||||
{
|
|
||||||
// Big endian: vec_sld(a, b, c)
|
|
||||||
// Little endian: vec_sld(b, a, 16-c)
|
|
||||||
|
|
||||||
const uint8x16_p r0 = {0};
|
|
||||||
uint8x16_p r3, r6;
|
|
||||||
|
|
||||||
r3 = VectorPermute(r1, r1, r5); /* line 1 */
|
|
||||||
r6 = VectorShiftLeft<12>(r0, r1); /* line 2 */
|
|
||||||
r3 = VectorEncryptLast(r3, r4); /* line 3 */
|
|
||||||
|
|
||||||
r1 = VectorXor(r1, r6); /* line 4 */
|
|
||||||
r6 = VectorShiftLeft<12>(r0, r1); /* line 5 */
|
|
||||||
r1 = VectorXor(r1, r6); /* line 6 */
|
|
||||||
r6 = VectorShiftLeft<12>(r0, r1); /* line 7 */
|
|
||||||
r1 = VectorXor(r1, r6); /* line 8 */
|
|
||||||
|
|
||||||
// Caller handles r4 (rcon) addition
|
|
||||||
// r4 = VectorAdd(r4, r4); /* line 9 */
|
|
||||||
|
|
||||||
// r1 is ready for next round
|
|
||||||
r1 = VectorXor(r1, r3); /* line 10 */
|
|
||||||
return r1;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline uint8_t*
|
|
||||||
IncrementPointerAndStore(const uint8x16_p& r, uint8_t* p)
|
|
||||||
{
|
|
||||||
VectorStore(r, (p += 16));
|
|
||||||
return p;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void POWER8_Enc_Block(uint32x4_p &block, const word32 *subkeys, unsigned int rounds)
|
static inline void POWER8_Enc_Block(uint32x4_p &block, const word32 *subkeys, unsigned int rounds)
|
||||||
{
|
{
|
||||||
CRYPTOPP_ASSERT(IsAlignedOn(subkeys, 16));
|
CRYPTOPP_ASSERT(IsAlignedOn(subkeys, 16));
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue