gem5  v21.2.0.0
Public Member Functions | Private Types | Private Member Functions | Static Private Attributes | List of all members
gem5::ArmISA::Crypto Class Reference

#include <crypto.hh>

Public Member Functions

void aesMixColumns (uint8_t *output, uint8_t *input)
 
void aesInvMixColumns (uint8_t *output, uint8_t *input)
 
void aesEncrypt (uint8_t *output, uint8_t *input, uint8_t *key)
 
void aesDecrypt (uint8_t *output, uint8_t *input, uint8_t *key)
 
void sha256H (uint8_t *output, uint8_t *input, uint8_t *input2)
 
void sha256H2 (uint8_t *output, uint8_t *input, uint8_t *input2)
 
void sha256Su0 (uint8_t *output, uint8_t *input)
 
void sha256Su1 (uint8_t *output, uint8_t *input, uint8_t *input2)
 
void sha1C (uint8_t *output, uint8_t *input, uint8_t *input2)
 
void sha1P (uint8_t *output, uint8_t *input, uint8_t *input2)
 
void sha1M (uint8_t *output, uint8_t *input, uint8_t *input2)
 
void sha1H (uint8_t *output, uint8_t *input)
 
void sha1Su0 (uint8_t *output, uint8_t *input, uint8_t *input2)
 
void sha1Su1 (uint8_t *output, uint8_t *input)
 

Private Types

enum  SHAOp : uint8_t { CHOOSE = 0, PARITY, MAJORITY }
 

Private Member Functions

uint8_t aesFFMul (uint8_t a, uint8_t b)
 Finite field multiplication of two elements in the field G(256) More...
 
uint8_t aesFFMul2 (uint8_t a)
 
void aesSubBytes (uint8_t *output, uint8_t *input)
 
void aesInvSubBytes (uint8_t *output, uint8_t *input)
 
void aesShiftRows (uint8_t *output, uint8_t *input)
 
void aesInvShiftRows (uint8_t *output, uint8_t *input)
 
void aesAddRoundKey (uint8_t *output, uint8_t *input, uint8_t *key)
 
uint32_t ror (uint32_t x, uint8_t shift)
 
uint32_t choose (uint32_t X, uint32_t Y, uint32_t Z)
 
uint32_t parity (uint32_t X, uint32_t Y, uint32_t Z)
 
uint32_t majority (uint32_t X, uint32_t Y, uint32_t Z)
 
uint32_t sigma0 (uint32_t X)
 
uint32_t sigma1 (uint32_t X)
 
void sha256Op (uint32_t *X, uint32_t *Y, uint32_t *Z)
 
void sha1Op (uint8_t *output, uint8_t *input, uint8_t *input2, SHAOp op)
 
void _sha1Op (uint32_t *X, uint32_t *Y, uint32_t *Z, SHAOp op)
 
void load2Reg (uint32_t *X, uint32_t *Y, uint8_t *output, uint8_t *input)
 
void load3Reg (uint32_t *X, uint32_t *Y, uint32_t *Z, uint8_t *output, uint8_t *input, uint8_t *input2)
 
void store1Reg (uint8_t *output, uint32_t *X)
 

Static Private Attributes

static const uint8_t aesSBOX [256]
 Look up table for subByttes transformation. More...
 
static const uint8_t aesInvSBOX [256]
 Look up table for inverse subBytes transformation. More...
 
static const uint8_t aesSHIFT [16]
 
static const uint8_t aesINVSHIFT [16]
 
static const uint8_t aesFFLOG [256]
 Look up table for Finite Field logarithm where the base is the element {03} in the field G(256) More...
 
static const uint8_t aesFFEXP [256]
 Look up table for {03}^X where {03} and X are elements in the filed G(256) More...
 

Detailed Description

Definition at line 46 of file crypto.hh.

Member Enumeration Documentation

◆ SHAOp

enum gem5::ArmISA::Crypto::SHAOp : uint8_t
private
Enumerator
CHOOSE 
PARITY 
MAJORITY 

Definition at line 48 of file crypto.hh.

Member Function Documentation

◆ _sha1Op()

void gem5::ArmISA::Crypto::_sha1Op ( uint32_t *  X,
uint32_t *  Y,
uint32_t *  Z,
SHAOp  op 
)
private

Definition at line 298 of file crypto.cc.

References CHOOSE, choose(), gem5::ArmISA::i, MAJORITY, majority(), gem5::X86ISA::op, PARITY, parity(), ror(), and gem5::X86ISA::X.

Referenced by sha1Op().

◆ aesAddRoundKey()

void gem5::ArmISA::Crypto::aesAddRoundKey ( uint8_t *  output,
uint8_t *  input,
uint8_t *  key 
)
private

Definition at line 213 of file crypto.cc.

References gem5::ArmISA::i, and gem5::output().

Referenced by aesDecrypt(), and aesEncrypt().

◆ aesDecrypt()

void gem5::ArmISA::Crypto::aesDecrypt ( uint8_t *  output,
uint8_t *  input,
uint8_t *  key 
)

Definition at line 267 of file crypto.cc.

References aesAddRoundKey(), aesInvShiftRows(), aesInvSubBytes(), and gem5::output().

◆ aesEncrypt()

void gem5::ArmISA::Crypto::aesEncrypt ( uint8_t *  output,
uint8_t *  input,
uint8_t *  key 
)

Definition at line 256 of file crypto.cc.

References aesAddRoundKey(), aesShiftRows(), aesSubBytes(), and gem5::output().

◆ aesFFMul()

uint8_t gem5::ArmISA::Crypto::aesFFMul ( uint8_t  a,
uint8_t  b 
)
private

Finite field multiplication of two elements in the field G(256)

Definition at line 166 of file crypto.cc.

References gem5::ArmISA::a, aesFFEXP, aesFFLOG, and gem5::ArmISA::b.

Referenced by aesInvMixColumns().

◆ aesFFMul2()

uint8_t gem5::ArmISA::Crypto::aesFFMul2 ( uint8_t  a)
inlineprivate

Definition at line 79 of file crypto.hh.

References gem5::ArmISA::a.

Referenced by aesMixColumns().

◆ aesInvMixColumns()

void gem5::ArmISA::Crypto::aesInvMixColumns ( uint8_t *  output,
uint8_t *  input 
)

Definition at line 240 of file crypto.cc.

References aesFFMul(), gem5::ArmISA::i, gem5::ArmISA::j, and gem5::output().

◆ aesInvShiftRows()

void gem5::ArmISA::Crypto::aesInvShiftRows ( uint8_t *  output,
uint8_t *  input 
)
private

Definition at line 205 of file crypto.cc.

References aesINVSHIFT, gem5::ArmISA::i, and gem5::output().

Referenced by aesDecrypt().

◆ aesInvSubBytes()

void gem5::ArmISA::Crypto::aesInvSubBytes ( uint8_t *  output,
uint8_t *  input 
)
private

Definition at line 189 of file crypto.cc.

References aesInvSBOX, gem5::ArmISA::i, and gem5::output().

Referenced by aesDecrypt().

◆ aesMixColumns()

void gem5::ArmISA::Crypto::aesMixColumns ( uint8_t *  output,
uint8_t *  input 
)

Definition at line 222 of file crypto.cc.

References aesFFMul2(), gem5::ArmISA::j, gem5::output(), and gem5::ArmISA::t1.

◆ aesShiftRows()

void gem5::ArmISA::Crypto::aesShiftRows ( uint8_t *  output,
uint8_t *  input 
)
private

Definition at line 197 of file crypto.cc.

References aesSHIFT, gem5::ArmISA::i, and gem5::output().

Referenced by aesEncrypt().

◆ aesSubBytes()

void gem5::ArmISA::Crypto::aesSubBytes ( uint8_t *  output,
uint8_t *  input 
)
private

Definition at line 181 of file crypto.cc.

References aesSBOX, gem5::ArmISA::i, and gem5::output().

Referenced by aesEncrypt().

◆ choose()

uint32_t gem5::ArmISA::Crypto::choose ( uint32_t  X,
uint32_t  Y,
uint32_t  Z 
)
inlineprivate

Definition at line 95 of file crypto.hh.

References gem5::X86ISA::X.

Referenced by _sha1Op(), and sha256Op().

◆ load2Reg()

void gem5::ArmISA::Crypto::load2Reg ( uint32_t *  X,
uint32_t *  Y,
uint8_t *  output,
uint8_t *  input 
)
private

Definition at line 479 of file crypto.cc.

References gem5::ArmISA::i, gem5::output(), and gem5::X86ISA::X.

Referenced by sha1H(), sha1Su1(), and sha256Su0().

◆ load3Reg()

void gem5::ArmISA::Crypto::load3Reg ( uint32_t *  X,
uint32_t *  Y,
uint32_t *  Z,
uint8_t *  output,
uint8_t *  input,
uint8_t *  input2 
)
private

Definition at line 492 of file crypto.cc.

References gem5::ArmISA::i, gem5::output(), and gem5::X86ISA::X.

Referenced by sha1Op(), sha1Su0(), sha256H(), sha256H2(), and sha256Su1().

◆ majority()

uint32_t gem5::ArmISA::Crypto::majority ( uint32_t  X,
uint32_t  Y,
uint32_t  Z 
)
inlineprivate

Definition at line 105 of file crypto.hh.

References gem5::X86ISA::X.

Referenced by _sha1Op(), and sha256Op().

◆ parity()

uint32_t gem5::ArmISA::Crypto::parity ( uint32_t  X,
uint32_t  Y,
uint32_t  Z 
)
inlineprivate

Definition at line 100 of file crypto.hh.

References gem5::X86ISA::X.

Referenced by _sha1Op().

◆ ror()

uint32_t gem5::ArmISA::Crypto::ror ( uint32_t  x,
uint8_t  shift 
)
inlineprivate

Definition at line 90 of file crypto.hh.

References gem5::ArmISA::shift, and gem5::RiscvISA::x.

Referenced by _sha1Op(), sha1H(), sha1Su1(), sha256Su0(), sha256Su1(), sigma0(), and sigma1().

◆ sha1C()

void gem5::ArmISA::Crypto::sha1C ( uint8_t *  output,
uint8_t *  input,
uint8_t *  input2 
)

Definition at line 409 of file crypto.cc.

References CHOOSE, gem5::output(), and sha1Op().

◆ sha1H()

void gem5::ArmISA::Crypto::sha1H ( uint8_t *  output,
uint8_t *  input 
)

Definition at line 436 of file crypto.cc.

References load2Reg(), gem5::output(), ror(), store1Reg(), and gem5::X86ISA::X.

◆ sha1M()

void gem5::ArmISA::Crypto::sha1M ( uint8_t *  output,
uint8_t *  input,
uint8_t *  input2 
)

Definition at line 427 of file crypto.cc.

References MAJORITY, gem5::output(), and sha1Op().

◆ sha1Op()

void gem5::ArmISA::Crypto::sha1Op ( uint8_t *  output,
uint8_t *  input,
uint8_t *  input2,
SHAOp  op 
)
private

Definition at line 396 of file crypto.cc.

References _sha1Op(), load3Reg(), gem5::X86ISA::op, gem5::output(), store1Reg(), and gem5::X86ISA::X.

Referenced by sha1C(), sha1M(), and sha1P().

◆ sha1P()

void gem5::ArmISA::Crypto::sha1P ( uint8_t *  output,
uint8_t *  input,
uint8_t *  input2 
)

Definition at line 418 of file crypto.cc.

References gem5::output(), PARITY, and sha1Op().

◆ sha1Su0()

void gem5::ArmISA::Crypto::sha1Su0 ( uint8_t *  output,
uint8_t *  input,
uint8_t *  input2 
)

Definition at line 445 of file crypto.cc.

References load3Reg(), gem5::output(), store1Reg(), and gem5::X86ISA::X.

◆ sha1Su1()

void gem5::ArmISA::Crypto::sha1Su1 ( uint8_t *  output,
uint8_t *  input 
)

Definition at line 463 of file crypto.cc.

References load2Reg(), gem5::output(), ror(), store1Reg(), and gem5::X86ISA::X.

◆ sha256H()

void gem5::ArmISA::Crypto::sha256H ( uint8_t *  output,
uint8_t *  input,
uint8_t *  input2 
)

Definition at line 322 of file crypto.cc.

References load3Reg(), gem5::output(), sha256Op(), store1Reg(), and gem5::X86ISA::X.

◆ sha256H2()

void gem5::ArmISA::Crypto::sha256H2 ( uint8_t *  output,
uint8_t *  input,
uint8_t *  input2 
)

Definition at line 334 of file crypto.cc.

References load3Reg(), gem5::output(), sha256Op(), store1Reg(), and gem5::X86ISA::X.

◆ sha256Op()

void gem5::ArmISA::Crypto::sha256Op ( uint32_t *  X,
uint32_t *  Y,
uint32_t *  Z 
)
private

Definition at line 278 of file crypto.cc.

References choose(), gem5::ArmISA::i, majority(), sigma0(), sigma1(), and gem5::X86ISA::X.

Referenced by sha256H(), and sha256H2().

◆ sha256Su0()

void gem5::ArmISA::Crypto::sha256Su0 ( uint8_t *  output,
uint8_t *  input 
)

Definition at line 346 of file crypto.cc.

References load2Reg(), gem5::output(), ror(), store1Reg(), and gem5::X86ISA::X.

◆ sha256Su1()

void gem5::ArmISA::Crypto::sha256Su1 ( uint8_t *  output,
uint8_t *  input,
uint8_t *  input2 
)

Definition at line 369 of file crypto.cc.

References load3Reg(), gem5::output(), ror(), store1Reg(), and gem5::X86ISA::X.

◆ sigma0()

uint32_t gem5::ArmISA::Crypto::sigma0 ( uint32_t  X)
inlineprivate

Definition at line 110 of file crypto.hh.

References ror(), and gem5::X86ISA::X.

Referenced by sha256Op().

◆ sigma1()

uint32_t gem5::ArmISA::Crypto::sigma1 ( uint32_t  X)
inlineprivate

Definition at line 115 of file crypto.hh.

References ror(), and gem5::X86ISA::X.

Referenced by sha256Op().

◆ store1Reg()

void gem5::ArmISA::Crypto::store1Reg ( uint8_t *  output,
uint32_t *  X 
)
private

Member Data Documentation

◆ aesFFEXP

const uint8_t gem5::ArmISA::Crypto::aesFFEXP
staticprivate
Initial value:
= {
0x01, 0x03, 0x05, 0x0f, 0x11, 0x33, 0x55, 0xff, 0x1a, 0x2e, 0x72, 0x96,
0xa1, 0xf8, 0x13, 0x35, 0x5f, 0xe1, 0x38, 0x48, 0xd8, 0x73, 0x95, 0xa4,
0xf7, 0x02, 0x06, 0x0a, 0x1e, 0x22, 0x66, 0xaa, 0xe5, 0x34, 0x5c, 0xe4,
0x37, 0x59, 0xeb, 0x26, 0x6a, 0xbe, 0xd9, 0x70, 0x90, 0xab, 0xe6, 0x31,
0x53, 0xf5, 0x04, 0x0c, 0x14, 0x3c, 0x44, 0xcc, 0x4f, 0xd1, 0x68, 0xb8,
0xd3, 0x6e, 0xb2, 0xcd, 0x4c, 0xd4, 0x67, 0xa9, 0xe0, 0x3b, 0x4d, 0xd7,
0x62, 0xa6, 0xf1, 0x08, 0x18, 0x28, 0x78, 0x88, 0x83, 0x9e, 0xb9, 0xd0,
0x6b, 0xbd, 0xdc, 0x7f, 0x81, 0x98, 0xb3, 0xce, 0x49, 0xdb, 0x76, 0x9a,
0xb5, 0xc4, 0x57, 0xf9, 0x10, 0x30, 0x50, 0xf0, 0x0b, 0x1d, 0x27, 0x69,
0xbb, 0xd6, 0x61, 0xa3, 0xfe, 0x19, 0x2b, 0x7d, 0x87, 0x92, 0xad, 0xec,
0x2f, 0x71, 0x93, 0xae, 0xe9, 0x20, 0x60, 0xa0, 0xfb, 0x16, 0x3a, 0x4e,
0xd2, 0x6d, 0xb7, 0xc2, 0x5d, 0xe7, 0x32, 0x56, 0xfa, 0x15, 0x3f, 0x41,
0xc3, 0x5e, 0xe2, 0x3d, 0x47, 0xc9, 0x40, 0xc0, 0x5b, 0xed, 0x2c, 0x74,
0x9c, 0xbf, 0xda, 0x75, 0x9f, 0xba, 0xd5, 0x64, 0xac, 0xef, 0x2a, 0x7e,
0x82, 0x9d, 0xbc, 0xdf, 0x7a, 0x8e, 0x89, 0x80, 0x9b, 0xb6, 0xc1, 0x58,
0xe8, 0x23, 0x65, 0xaf, 0xea, 0x25, 0x6f, 0xb1, 0xc8, 0x43, 0xc5, 0x54,
0xfc, 0x1f, 0x21, 0x63, 0xa5, 0xf4, 0x07, 0x09, 0x1b, 0x2d, 0x77, 0x99,
0xb0, 0xcb, 0x46, 0xca, 0x45, 0xcf, 0x4a, 0xde, 0x79, 0x8b, 0x86, 0x91,
0xa8, 0xe3, 0x3e, 0x42, 0xc6, 0x51, 0xf3, 0x0e, 0x12, 0x36, 0x5a, 0xee,
0x29, 0x7b, 0x8d, 0x8c, 0x8f, 0x8a, 0x85, 0x94, 0xa7, 0xf2, 0x0d, 0x17,
0x39, 0x4b, 0xdd, 0x7c, 0x84, 0x97, 0xa2, 0xfd, 0x1c, 0x24, 0x6c, 0xb4,
0xc7, 0x52, 0xf6, 0x01
}

Look up table for {03}^X where {03} and X are elements in the filed G(256)

Definition at line 74 of file crypto.hh.

Referenced by aesFFMul().

◆ aesFFLOG

const uint8_t gem5::ArmISA::Crypto::aesFFLOG
staticprivate
Initial value:
= {
0x00, 0x00, 0x19, 0x01, 0x32, 0x02, 0x1a, 0xc6, 0x4b, 0xc7, 0x1b, 0x68,
0x33, 0xee, 0xdf, 0x03, 0x64, 0x04, 0xe0, 0x0e, 0x34, 0x8d, 0x81, 0xef,
0x4c, 0x71, 0x08, 0xc8, 0xf8, 0x69, 0x1c, 0xc1, 0x7d, 0xc2, 0x1d, 0xb5,
0xf9, 0xb9, 0x27, 0x6a, 0x4d, 0xe4, 0xa6, 0x72, 0x9a, 0xc9, 0x09, 0x78,
0x65, 0x2f, 0x8a, 0x05, 0x21, 0x0f, 0xe1, 0x24, 0x12, 0xf0, 0x82, 0x45,
0x35, 0x93, 0xda, 0x8e, 0x96, 0x8f, 0xdb, 0xbd, 0x36, 0xd0, 0xce, 0x94,
0x13, 0x5c, 0xd2, 0xf1, 0x40, 0x46, 0x83, 0x38, 0x66, 0xdd, 0xfd, 0x30,
0xbf, 0x06, 0x8b, 0x62, 0xb3, 0x25, 0xe2, 0x98, 0x22, 0x88, 0x91, 0x10,
0x7e, 0x6e, 0x48, 0xc3, 0xa3, 0xb6, 0x1e, 0x42, 0x3a, 0x6b, 0x28, 0x54,
0xfa, 0x85, 0x3d, 0xba, 0x2b, 0x79, 0x0a, 0x15, 0x9b, 0x9f, 0x5e, 0xca,
0x4e, 0xd4, 0xac, 0xe5, 0xf3, 0x73, 0xa7, 0x57, 0xaf, 0x58, 0xa8, 0x50,
0xf4, 0xea, 0xd6, 0x74, 0x4f, 0xae, 0xe9, 0xd5, 0xe7, 0xe6, 0xad, 0xe8,
0x2c, 0xd7, 0x75, 0x7a, 0xeb, 0x16, 0x0b, 0xf5, 0x59, 0xcb, 0x5f, 0xb0,
0x9c, 0xa9, 0x51, 0xa0, 0x7f, 0x0c, 0xf6, 0x6f, 0x17, 0xc4, 0x49, 0xec,
0xd8, 0x43, 0x1f, 0x2d, 0xa4, 0x76, 0x7b, 0xb7, 0xcc, 0xbb, 0x3e, 0x5a,
0xfb, 0x60, 0xb1, 0x86, 0x3b, 0x52, 0xa1, 0x6c, 0xaa, 0x55, 0x29, 0x9d,
0x97, 0xb2, 0x87, 0x90, 0x61, 0xbe, 0xdc, 0xfc, 0xbc, 0x95, 0xcf, 0xcd,
0x37, 0x3f, 0x5b, 0xd1, 0x53, 0x39, 0x84, 0x3c, 0x41, 0xa2, 0x6d, 0x47,
0x14, 0x2a, 0x9e, 0x5d, 0x56, 0xf2, 0xd3, 0xab, 0x44, 0x11, 0x92, 0xd9,
0x23, 0x20, 0x2e, 0x89, 0xb4, 0x7c, 0xb8, 0x26, 0x77, 0x99, 0xe3, 0xa5,
0x67, 0x4a, 0xed, 0xde, 0xc5, 0x31, 0xfe, 0x18, 0x0d, 0x63, 0x8c, 0x80,
0xc0, 0xf7, 0x70, 0x07
}

Look up table for Finite Field logarithm where the base is the element {03} in the field G(256)

Definition at line 68 of file crypto.hh.

Referenced by aesFFMul().

◆ aesInvSBOX

const uint8_t gem5::ArmISA::Crypto::aesInvSBOX
staticprivate
Initial value:
= {
0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e,
0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87,
0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32,
0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e,
0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49,
0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16,
0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50,
0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84,
0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05,
0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02,
0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41,
0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73,
0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8,
0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89,
0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b,
0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4,
0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59,
0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d,
0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d,
0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61,
0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63,
0x55, 0x21, 0x0c, 0x7d
}

Look up table for inverse subBytes transformation.

Definition at line 59 of file crypto.hh.

Referenced by aesInvSubBytes().

◆ aesINVSHIFT

const uint8_t gem5::ArmISA::Crypto::aesINVSHIFT
staticprivate
Initial value:
= {
0, 13, 10, 7, 4, 1, 14, 11,
8, 5, 2, 15, 12, 9, 6, 3
}

Definition at line 62 of file crypto.hh.

Referenced by aesInvShiftRows().

◆ aesSBOX

const uint8_t gem5::ArmISA::Crypto::aesSBOX
staticprivate
Initial value:
= {
0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b,
0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0,
0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26,
0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15,
0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2,
0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0,
0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed,
0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf,
0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f,
0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5,
0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec,
0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73,
0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14,
0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c,
0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d,
0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08,
0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f,
0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e,
0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11,
0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf,
0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f,
0xb0, 0x54, 0xbb, 0x16
}

Look up table for subByttes transformation.

Definition at line 56 of file crypto.hh.

Referenced by aesSubBytes().

◆ aesSHIFT

const uint8_t gem5::ArmISA::Crypto::aesSHIFT
staticprivate
Initial value:
= {
0, 5, 10, 15, 4, 9, 14, 3,
8, 13, 2, 7, 12, 1, 6, 11
}

Definition at line 61 of file crypto.hh.

Referenced by aesShiftRows().


The documentation for this class was generated from the following files:

Generated on Tue Dec 21 2021 11:35:18 for gem5 by doxygen 1.8.17