diff --git a/src/AESCrypto.cpp b/src/AESCrypto.cpp index 3a9c4a90..b6bf4459 100644 --- a/src/AESCrypto.cpp +++ b/src/AESCrypto.cpp @@ -48,41 +48,41 @@ using namespace crypto; // --------------------------------------------------------------------------- const uint8_t SBOX[16][16] = { - { 0x63U, 0x7cU, 0x77U, 0x7bU, 0xf2U, 0x6bU, 0x6fU, 0xc5U, 0x30U, 0x01U, 0x67U, 0x2bU, 0xfeU, 0xd7U, 0xabU, 0x76U }, - { 0xcaU, 0x82U, 0xc9U, 0x7dU, 0xfaU, 0x59U, 0x47U, 0xf0U, 0xadU, 0xd4U, 0xa2U, 0xafU, 0x9cU, 0xa4U, 0x72U, 0xc0U }, - { 0xb7U, 0xfdU, 0x93U, 0x26U, 0x36U, 0x3fU, 0xf7U, 0xccU, 0x34U, 0xa5U, 0xe5U, 0xf1U, 0x71U, 0xd8U, 0x31U, 0x15U }, - { 0x04U, 0xc7U, 0x23U, 0xc3U, 0x18U, 0x96U, 0x05U, 0x9aU, 0x07U, 0x12U, 0x80U, 0xe2U, 0xebU, 0x27U, 0xb2U, 0x75U }, - { 0x09U, 0x83U, 0x2cU, 0x1aU, 0x1bU, 0x6eU, 0x5aU, 0xa0U, 0x52U, 0x3bU, 0xd6U, 0xb3U, 0x29U, 0xe3U, 0x2fU, 0x84U }, - { 0x53U, 0xd1U, 0x00U, 0xedU, 0x20U, 0xfcU, 0xb1U, 0x5bU, 0x6aU, 0xcbU, 0xbeU, 0x39U, 0x4aU, 0x4cU, 0x58U, 0xcfU }, - { 0xd0U, 0xefU, 0xaaU, 0xfbU, 0x43U, 0x4dU, 0x33U, 0x85U, 0x45U, 0xf9U, 0x02U, 0x7fU, 0x50U, 0x3cU, 0x9fU, 0xa8U }, - { 0x51U, 0xa3U, 0x40U, 0x8fU, 0x92U, 0x9dU, 0x38U, 0xf5U, 0xbcU, 0xb6U, 0xdaU, 0x21U, 0x10U, 0xffU, 0xf3U, 0xd2U }, - { 0xcdU, 0x0cU, 0x13U, 0xecU, 0x5fU, 0x97U, 0x44U, 0x17U, 0xc4U, 0xa7U, 0x7eU, 0x3dU, 0x64U, 0x5dU, 0x19U, 0x73U }, - { 0x60U, 0x81U, 0x4fU, 0xdcU, 0x22U, 0x2aU, 0x90U, 0x88U, 0x46U, 0xeeU, 0xb8U, 0x14U, 0xdeU, 0x5eU, 0x0bU, 0xdbU }, - { 0xe0U, 0x32U, 0x3aU, 0x0aU, 0x49U, 0x06U, 0x24U, 0x5cU, 0xc2U, 0xd3U, 0xacU, 0x62U, 0x91U, 0x95U, 0xe4U, 0x79U }, - { 0xe7U, 0xc8U, 0x37U, 0x6dU, 0x8dU, 0xd5U, 0x4eU, 0xa9U, 0x6cU, 0x56U, 0xf4U, 0xeaU, 0x65U, 0x7aU, 0xaeU, 0x08U }, - { 0xbaU, 0x78U, 0x25U, 0x2eU, 0x1cU, 0xa6U, 0xb4U, 0xc6U, 0xe8U, 0xddU, 0x74U, 0x1fU, 0x4bU, 0xbdU, 0x8bU, 0x8aU }, - { 0x70U, 0x3eU, 0xb5U, 0x66U, 0x48U, 0x03U, 0xf6U, 0x0eU, 0x61U, 0x35U, 0x57U, 0xb9U, 0x86U, 0xc1U, 0x1dU, 0x9eU }, - { 0xe1U, 0xf8U, 0x98U, 0x11U, 0x69U, 0xd9U, 0x8eU, 0x94U, 0x9bU, 0x1eU, 0x87U, 0xe9U, 0xceU, 0x55U, 0x28U, 0xdfU }, - { 0x8cU, 0xa1U, 0x89U, 0x0dU, 0xbfU, 0xe6U, 0x42U, 0x68U, 0x41U, 0x99U, 0x2dU, 0x0fU, 0xb0U, 0x54U, 0xbbU, 0x16U } + { 0x63U, 0x7CU, 0x77U, 0x7BU, 0xF2U, 0x6BU, 0x6FU, 0xC5U, 0x30U, 0x01U, 0x67U, 0x2BU, 0xFEU, 0xD7U, 0xABU, 0x76U }, + { 0xCAU, 0x82U, 0xC9U, 0x7DU, 0xFAU, 0x59U, 0x47U, 0xF0U, 0xADU, 0xD4U, 0xA2U, 0xAFU, 0x9CU, 0xA4U, 0x72U, 0xC0U }, + { 0xB7U, 0xFDU, 0x93U, 0x26U, 0x36U, 0x3FU, 0xF7U, 0xCCU, 0x34U, 0xA5U, 0xE5U, 0xF1U, 0x71U, 0xD8U, 0x31U, 0x15U }, + { 0x04U, 0xC7U, 0x23U, 0xC3U, 0x18U, 0x96U, 0x05U, 0x9AU, 0x07U, 0x12U, 0x80U, 0xE2U, 0xEBU, 0x27U, 0xB2U, 0x75U }, + { 0x09U, 0x83U, 0x2CU, 0x1AU, 0x1BU, 0x6EU, 0x5AU, 0xA0U, 0x52U, 0x3BU, 0xD6U, 0xB3U, 0x29U, 0xE3U, 0x2FU, 0x84U }, + { 0x53U, 0xD1U, 0x00U, 0xEDU, 0x20U, 0xFCU, 0xB1U, 0x5BU, 0x6AU, 0xCBU, 0xBEU, 0x39U, 0x4AU, 0x4CU, 0x58U, 0xCFU }, + { 0xD0U, 0xEFU, 0xAAU, 0xFBU, 0x43U, 0x4DU, 0x33U, 0x85U, 0x45U, 0xF9U, 0x02U, 0x7FU, 0x50U, 0x3CU, 0x9FU, 0xA8U }, + { 0x51U, 0xA3U, 0x40U, 0x8FU, 0x92U, 0x9DU, 0x38U, 0xF5U, 0xBCU, 0xB6U, 0xDAU, 0x21U, 0x10U, 0xFFU, 0xF3U, 0xD2U }, + { 0xCDU, 0x0CU, 0x13U, 0xECU, 0x5FU, 0x97U, 0x44U, 0x17U, 0xC4U, 0xA7U, 0x7EU, 0x3DU, 0x64U, 0x5DU, 0x19U, 0x73U }, + { 0x60U, 0x81U, 0x4FU, 0xDCU, 0x22U, 0x2AU, 0x90U, 0x88U, 0x46U, 0xEEU, 0xB8U, 0x14U, 0xDEU, 0x5EU, 0x0BU, 0xDBU }, + { 0xE0U, 0x32U, 0x3AU, 0x0AU, 0x49U, 0x06U, 0x24U, 0x5CU, 0xC2U, 0xD3U, 0xACU, 0x62U, 0x91U, 0x95U, 0xE4U, 0x79U }, + { 0xE7U, 0xC8U, 0x37U, 0x6DU, 0x8DU, 0xD5U, 0x4EU, 0xA9U, 0x6CU, 0x56U, 0xF4U, 0xEAU, 0x65U, 0x7AU, 0xAEU, 0x08U }, + { 0xBAU, 0x78U, 0x25U, 0x2EU, 0x1CU, 0xA6U, 0xB4U, 0xC6U, 0xE8U, 0xDDU, 0x74U, 0x1FU, 0x4BU, 0xBDU, 0x8BU, 0x8AU }, + { 0x70U, 0x3EU, 0xB5U, 0x66U, 0x48U, 0x03U, 0xF6U, 0x0EU, 0x61U, 0x35U, 0x57U, 0xB9U, 0x86U, 0xC1U, 0x1DU, 0x9EU }, + { 0xE1U, 0xF8U, 0x98U, 0x11U, 0x69U, 0xD9U, 0x8EU, 0x94U, 0x9BU, 0x1EU, 0x87U, 0xE9U, 0xCEU, 0x55U, 0x28U, 0xDFU }, + { 0x8CU, 0xA1U, 0x89U, 0x0DU, 0xBFU, 0xE6U, 0x42U, 0x68U, 0x41U, 0x99U, 0x2DU, 0x0FU, 0xB0U, 0x54U, 0xBBU, 0x16U } }; const uint8_t INV_SBOX[16][16] = { - { 0x52U, 0x09U, 0x6aU, 0xd5U, 0x30U, 0x36U, 0xa5U, 0x38U, 0xbfU, 0x40U, 0xa3U, 0x9eU, 0x81U, 0xf3U, 0xd7U, 0xfbU }, - { 0x7cU, 0xe3U, 0x39U, 0x82U, 0x9bU, 0x2fU, 0xffU, 0x87U, 0x34U, 0x8eU, 0x43U, 0x44U, 0xc4U, 0xdeU, 0xe9U, 0xcbU }, - { 0x54U, 0x7bU, 0x94U, 0x32U, 0xa6U, 0xc2U, 0x23U, 0x3dU, 0xeeU, 0x4cU, 0x95U, 0x0bU, 0x42U, 0xfaU, 0xc3U, 0x4eU }, - { 0x08U, 0x2eU, 0xa1U, 0x66U, 0x28U, 0xd9U, 0x24U, 0xb2U, 0x76U, 0x5bU, 0xa2U, 0x49U, 0x6dU, 0x8bU, 0xd1U, 0x25U }, - { 0x72U, 0xf8U, 0xf6U, 0x64U, 0x86U, 0x68U, 0x98U, 0x16U, 0xd4U, 0xa4U, 0x5cU, 0xccU, 0x5dU, 0x65U, 0xb6U, 0x92U }, - { 0x6cU, 0x70U, 0x48U, 0x50U, 0xfdU, 0xedU, 0xb9U, 0xdaU, 0x5eU, 0x15U, 0x46U, 0x57U, 0xa7U, 0x8dU, 0x9dU, 0x84U }, - { 0x90U, 0xd8U, 0xabU, 0x00U, 0x8cU, 0xbcU, 0xd3U, 0x0aU, 0xf7U, 0xe4U, 0x58U, 0x05U, 0xb8U, 0xb3U, 0x45U, 0x06U }, - { 0xd0U, 0x2cU, 0x1eU, 0x8fU, 0xcaU, 0x3fU, 0x0fU, 0x02U, 0xc1U, 0xafU, 0xbdU, 0x03U, 0x01U, 0x13U, 0x8aU, 0x6bU }, - { 0x3aU, 0x91U, 0x11U, 0x41U, 0x4fU, 0x67U, 0xdcU, 0xeaU, 0x97U, 0xf2U, 0xcfU, 0xceU, 0xf0U, 0xb4U, 0xe6U, 0x73U }, - { 0x96U, 0xacU, 0x74U, 0x22U, 0xe7U, 0xadU, 0x35U, 0x85U, 0xe2U, 0xf9U, 0x37U, 0xe8U, 0x1cU, 0x75U, 0xdfU, 0x6eU }, - { 0x47U, 0xf1U, 0x1aU, 0x71U, 0x1dU, 0x29U, 0xc5U, 0x89U, 0x6fU, 0xb7U, 0x62U, 0x0eU, 0xaaU, 0x18U, 0xbeU, 0x1bU }, - { 0xfcU, 0x56U, 0x3eU, 0x4bU, 0xc6U, 0xd2U, 0x79U, 0x20U, 0x9aU, 0xdbU, 0xc0U, 0xfeU, 0x78U, 0xcdU, 0x5aU, 0xf4U }, - { 0x1fU, 0xddU, 0xa8U, 0x33U, 0x88U, 0x07U, 0xc7U, 0x31U, 0xb1U, 0x12U, 0x10U, 0x59U, 0x27U, 0x80U, 0xecU, 0x5fU }, - { 0x60U, 0x51U, 0x7fU, 0xa9U, 0x19U, 0xb5U, 0x4aU, 0x0dU, 0x2dU, 0xe5U, 0x7aU, 0x9fU, 0x93U, 0xc9U, 0x9cU, 0xefU }, - { 0xa0U, 0xe0U, 0x3bU, 0x4dU, 0xaeU, 0x2aU, 0xf5U, 0xb0U, 0xc8U, 0xebU, 0xbbU, 0x3cU, 0x83U, 0x53U, 0x99U, 0x61U }, - { 0x17U, 0x2bU, 0x04U, 0x7eU, 0xbaU, 0x77U, 0xd6U, 0x26U, 0xe1U, 0x69U, 0x14U, 0x63U, 0x55U, 0x21U, 0x0cU, 0x7dU } + { 0x52U, 0x09U, 0x6AU, 0xD5U, 0x30U, 0x36U, 0xA5U, 0x38U, 0xBFU, 0x40U, 0xA3U, 0x9EU, 0x81U, 0xF3U, 0xD7U, 0xFBU }, + { 0x7CU, 0xE3U, 0x39U, 0x82U, 0x9BU, 0x2FU, 0xFFU, 0x87U, 0x34U, 0x8EU, 0x43U, 0x44U, 0xC4U, 0xDEU, 0xE9U, 0xCBU }, + { 0x54U, 0x7BU, 0x94U, 0x32U, 0xA6U, 0xC2U, 0x23U, 0x3DU, 0xEEU, 0x4CU, 0x95U, 0x0BU, 0x42U, 0xFAU, 0xC3U, 0x4EU }, + { 0x08U, 0x2EU, 0xA1U, 0x66U, 0x28U, 0xD9U, 0x24U, 0xB2U, 0x76U, 0x5BU, 0xA2U, 0x49U, 0x6DU, 0x8BU, 0xD1U, 0x25U }, + { 0x72U, 0xF8U, 0xF6U, 0x64U, 0x86U, 0x68U, 0x98U, 0x16U, 0xD4U, 0xA4U, 0x5CU, 0xCCU, 0x5DU, 0x65U, 0xB6U, 0x92U }, + { 0x6CU, 0x70U, 0x48U, 0x50U, 0xFDU, 0xEDU, 0xB9U, 0xDAU, 0x5EU, 0x15U, 0x46U, 0x57U, 0xA7U, 0x8DU, 0x9DU, 0x84U }, + { 0x90U, 0xD8U, 0xABU, 0x00U, 0x8CU, 0xBCU, 0xD3U, 0x0AU, 0xF7U, 0xE4U, 0x58U, 0x05U, 0xB8U, 0xB3U, 0x45U, 0x06U }, + { 0xD0U, 0x2CU, 0x1EU, 0x8FU, 0xCAU, 0x3FU, 0x0FU, 0x02U, 0xC1U, 0xAFU, 0xBDU, 0x03U, 0x01U, 0x13U, 0x8AU, 0x6BU }, + { 0x3AU, 0x91U, 0x11U, 0x41U, 0x4FU, 0x67U, 0xDCU, 0xEAU, 0x97U, 0xF2U, 0xCFU, 0xCEU, 0xF0U, 0xB4U, 0xE6U, 0x73U }, + { 0x96U, 0xACU, 0x74U, 0x22U, 0xE7U, 0xADU, 0x35U, 0x85U, 0xE2U, 0xF9U, 0x37U, 0xE8U, 0x1CU, 0x75U, 0xDFU, 0x6EU }, + { 0x47U, 0xF1U, 0x1AU, 0x71U, 0x1DU, 0x29U, 0xC5U, 0x89U, 0x6FU, 0xB7U, 0x62U, 0x0EU, 0xAAU, 0x18U, 0xBEU, 0x1BU }, + { 0xFCU, 0x56U, 0x3EU, 0x4BU, 0xC6U, 0xD2U, 0x79U, 0x20U, 0x9AU, 0xDBU, 0xC0U, 0xFEU, 0x78U, 0xCDU, 0x5AU, 0xF4U }, + { 0x1FU, 0xDDU, 0xA8U, 0x33U, 0x88U, 0x07U, 0xC7U, 0x31U, 0xB1U, 0x12U, 0x10U, 0x59U, 0x27U, 0x80U, 0xECU, 0x5FU }, + { 0x60U, 0x51U, 0x7FU, 0xA9U, 0x19U, 0xB5U, 0x4AU, 0x0DU, 0x2DU, 0xE5U, 0x7AU, 0x9FU, 0x93U, 0xC9U, 0x9CU, 0xEFU }, + { 0xA0U, 0xE0U, 0x3BU, 0x4DU, 0xAEU, 0x2AU, 0xF5U, 0xB0U, 0xC8U, 0xEBU, 0xBBU, 0x3CU, 0x83U, 0x53U, 0x99U, 0x61U }, + { 0x17U, 0x2BU, 0x04U, 0x7EU, 0xBAU, 0x77U, 0xD6U, 0x26U, 0xE1U, 0x69U, 0x14U, 0x63U, 0x55U, 0x21U, 0x0CU, 0x7DU } }; // Galois Multiplication lookup tables @@ -92,54 +92,54 @@ static const uint8_t GF_MUL_TABLE[15][256] = { // mul 2 { - 0x00U, 0x02U, 0x04U, 0x06U, 0x08U, 0x0aU, 0x0cU, 0x0eU, 0x10U, 0x12U, 0x14U, 0x16U, - 0x18U, 0x1aU, 0x1cU, 0x1eU, 0x20U, 0x22U, 0x24U, 0x26U, 0x28U, 0x2aU, 0x2cU, 0x2eU, - 0x30U, 0x32U, 0x34U, 0x36U, 0x38U, 0x3aU, 0x3cU, 0x3eU, 0x40U, 0x42U, 0x44U, 0x46U, - 0x48U, 0x4aU, 0x4cU, 0x4eU, 0x50U, 0x52U, 0x54U, 0x56U, 0x58U, 0x5aU, 0x5cU, 0x5eU, - 0x60U, 0x62U, 0x64U, 0x66U, 0x68U, 0x6aU, 0x6cU, 0x6eU, 0x70U, 0x72U, 0x74U, 0x76U, - 0x78U, 0x7aU, 0x7cU, 0x7eU, 0x80U, 0x82U, 0x84U, 0x86U, 0x88U, 0x8aU, 0x8cU, 0x8eU, - 0x90U, 0x92U, 0x94U, 0x96U, 0x98U, 0x9aU, 0x9cU, 0x9eU, 0xa0U, 0xa2U, 0xa4U, 0xa6U, - 0xa8U, 0xaaU, 0xacU, 0xaeU, 0xb0U, 0xb2U, 0xb4U, 0xb6U, 0xb8U, 0xbaU, 0xbcU, 0xbeU, - 0xc0U, 0xc2U, 0xc4U, 0xc6U, 0xc8U, 0xcaU, 0xccU, 0xceU, 0xd0U, 0xd2U, 0xd4U, 0xd6U, - 0xd8U, 0xdaU, 0xdcU, 0xdeU, 0xe0U, 0xe2U, 0xe4U, 0xe6U, 0xe8U, 0xeaU, 0xecU, 0xeeU, - 0xf0U, 0xf2U, 0xf4U, 0xf6U, 0xf8U, 0xfaU, 0xfcU, 0xfeU, 0x1bU, 0x19U, 0x1fU, 0x1dU, - 0x13U, 0x11U, 0x17U, 0x15U, 0x0bU, 0x09U, 0x0fU, 0x0dU, 0x03U, 0x01U, 0x07U, 0x05U, - 0x3bU, 0x39U, 0x3fU, 0x3dU, 0x33U, 0x31U, 0x37U, 0x35U, 0x2bU, 0x29U, 0x2fU, 0x2dU, - 0x23U, 0x21U, 0x27U, 0x25U, 0x5bU, 0x59U, 0x5fU, 0x5dU, 0x53U, 0x51U, 0x57U, 0x55U, - 0x4bU, 0x49U, 0x4fU, 0x4dU, 0x43U, 0x41U, 0x47U, 0x45U, 0x7bU, 0x79U, 0x7fU, 0x7dU, - 0x73U, 0x71U, 0x77U, 0x75U, 0x6bU, 0x69U, 0x6fU, 0x6dU, 0x63U, 0x61U, 0x67U, 0x65U, - 0x9bU, 0x99U, 0x9fU, 0x9dU, 0x93U, 0x91U, 0x97U, 0x95U, 0x8bU, 0x89U, 0x8fU, 0x8dU, - 0x83U, 0x81U, 0x87U, 0x85U, 0xbbU, 0xb9U, 0xbfU, 0xbdU, 0xb3U, 0xb1U, 0xb7U, 0xb5U, - 0xabU, 0xa9U, 0xafU, 0xadU, 0xa3U, 0xa1U, 0xa7U, 0xa5U, 0xdbU, 0xd9U, 0xdfU, 0xddU, - 0xd3U, 0xd1U, 0xd7U, 0xd5U, 0xcbU, 0xc9U, 0xcfU, 0xcdU, 0xc3U, 0xc1U, 0xc7U, 0xc5U, - 0xfbU, 0xf9U, 0xffU, 0xfdU, 0xf3U, 0xf1U, 0xf7U, 0xf5U, 0xebU, 0xe9U, 0xefU, 0xedU, - 0xe3U, 0xe1U, 0xe7U, 0xe5U + 0x00U, 0x02U, 0x04U, 0x06U, 0x08U, 0x0AU, 0x0CU, 0x0EU, 0x10U, 0x12U, 0x14U, 0x16U, + 0x18U, 0x1AU, 0x1CU, 0x1EU, 0x20U, 0x22U, 0x24U, 0x26U, 0x28U, 0x2AU, 0x2CU, 0x2EU, + 0x30U, 0x32U, 0x34U, 0x36U, 0x38U, 0x3AU, 0x3CU, 0x3EU, 0x40U, 0x42U, 0x44U, 0x46U, + 0x48U, 0x4AU, 0x4CU, 0x4EU, 0x50U, 0x52U, 0x54U, 0x56U, 0x58U, 0x5AU, 0x5CU, 0x5EU, + 0x60U, 0x62U, 0x64U, 0x66U, 0x68U, 0x6AU, 0x6CU, 0x6EU, 0x70U, 0x72U, 0x74U, 0x76U, + 0x78U, 0x7AU, 0x7CU, 0x7EU, 0x80U, 0x82U, 0x84U, 0x86U, 0x88U, 0x8AU, 0x8CU, 0x8EU, + 0x90U, 0x92U, 0x94U, 0x96U, 0x98U, 0x9AU, 0x9CU, 0x9EU, 0xA0U, 0xA2U, 0xA4U, 0xA6U, + 0xA8U, 0xAAU, 0xACU, 0xAEU, 0xB0U, 0xB2U, 0xB4U, 0xB6U, 0xB8U, 0xBAU, 0xBCU, 0xBEU, + 0xC0U, 0xC2U, 0xC4U, 0xC6U, 0xC8U, 0xCAU, 0xCCU, 0xCEU, 0xD0U, 0xD2U, 0xD4U, 0xD6U, + 0xD8U, 0xDAU, 0xDCU, 0xDEU, 0xE0U, 0xE2U, 0xE4U, 0xE6U, 0xE8U, 0xEAU, 0xECU, 0xEEU, + 0xF0U, 0xF2U, 0xF4U, 0xF6U, 0xF8U, 0xFAU, 0xFCU, 0xFEU, 0x1BU, 0x19U, 0x1FU, 0x1DU, + 0x13U, 0x11U, 0x17U, 0x15U, 0x0BU, 0x09U, 0x0FU, 0x0DU, 0x03U, 0x01U, 0x07U, 0x05U, + 0x3BU, 0x39U, 0x3FU, 0x3DU, 0x33U, 0x31U, 0x37U, 0x35U, 0x2BU, 0x29U, 0x2FU, 0x2DU, + 0x23U, 0x21U, 0x27U, 0x25U, 0x5BU, 0x59U, 0x5FU, 0x5DU, 0x53U, 0x51U, 0x57U, 0x55U, + 0x4BU, 0x49U, 0x4FU, 0x4DU, 0x43U, 0x41U, 0x47U, 0x45U, 0x7BU, 0x79U, 0x7FU, 0x7DU, + 0x73U, 0x71U, 0x77U, 0x75U, 0x6BU, 0x69U, 0x6FU, 0x6DU, 0x63U, 0x61U, 0x67U, 0x65U, + 0x9BU, 0x99U, 0x9FU, 0x9DU, 0x93U, 0x91U, 0x97U, 0x95U, 0x8BU, 0x89U, 0x8FU, 0x8DU, + 0x83U, 0x81U, 0x87U, 0x85U, 0xBBU, 0xB9U, 0xBFU, 0xBDU, 0xB3U, 0xB1U, 0xB7U, 0xB5U, + 0xABU, 0xA9U, 0xAFU, 0xADU, 0xA3U, 0xA1U, 0xA7U, 0xA5U, 0xDBU, 0xD9U, 0xDFU, 0xDDU, + 0xD3U, 0xD1U, 0xD7U, 0xD5U, 0xCBU, 0xC9U, 0xCFU, 0xCDU, 0xC3U, 0xC1U, 0xC7U, 0xC5U, + 0xFBU, 0xF9U, 0xFFU, 0xFDU, 0xF3U, 0xF1U, 0xF7U, 0xF5U, 0xEBU, 0xE9U, 0xEFU, 0xEDU, + 0xE3U, 0xE1U, 0xE7U, 0xE5U }, // mul 3 { - 0x00U, 0x03U, 0x06U, 0x05U, 0x0cU, 0x0fU, 0x0aU, 0x09U, 0x18U, 0x1bU, 0x1eU, 0x1dU, - 0x14U, 0x17U, 0x12U, 0x11U, 0x30U, 0x33U, 0x36U, 0x35U, 0x3cU, 0x3fU, 0x3aU, 0x39U, - 0x28U, 0x2bU, 0x2eU, 0x2dU, 0x24U, 0x27U, 0x22U, 0x21U, 0x60U, 0x63U, 0x66U, 0x65U, - 0x6cU, 0x6fU, 0x6aU, 0x69U, 0x78U, 0x7bU, 0x7eU, 0x7dU, 0x74U, 0x77U, 0x72U, 0x71U, - 0x50U, 0x53U, 0x56U, 0x55U, 0x5cU, 0x5fU, 0x5aU, 0x59U, 0x48U, 0x4bU, 0x4eU, 0x4dU, - 0x44U, 0x47U, 0x42U, 0x41U, 0xc0U, 0xc3U, 0xc6U, 0xc5U, 0xccU, 0xcfU, 0xcaU, 0xc9U, - 0xd8U, 0xdbU, 0xdeU, 0xddU, 0xd4U, 0xd7U, 0xd2U, 0xd1U, 0xf0U, 0xf3U, 0xf6U, 0xf5U, - 0xfcU, 0xffU, 0xfaU, 0xf9U, 0xe8U, 0xebU, 0xeeU, 0xedU, 0xe4U, 0xe7U, 0xe2U, 0xe1U, - 0xa0U, 0xa3U, 0xa6U, 0xa5U, 0xacU, 0xafU, 0xaaU, 0xa9U, 0xb8U, 0xbbU, 0xbeU, 0xbdU, - 0xb4U, 0xb7U, 0xb2U, 0xb1U, 0x90U, 0x93U, 0x96U, 0x95U, 0x9cU, 0x9fU, 0x9aU, 0x99U, - 0x88U, 0x8bU, 0x8eU, 0x8dU, 0x84U, 0x87U, 0x82U, 0x81U, 0x9bU, 0x98U, 0x9dU, 0x9eU, - 0x97U, 0x94U, 0x91U, 0x92U, 0x83U, 0x80U, 0x85U, 0x86U, 0x8fU, 0x8cU, 0x89U, 0x8aU, - 0xabU, 0xa8U, 0xadU, 0xaeU, 0xa7U, 0xa4U, 0xa1U, 0xa2U, 0xb3U, 0xb0U, 0xb5U, 0xb6U, - 0xbfU, 0xbcU, 0xb9U, 0xbaU, 0xfbU, 0xf8U, 0xfdU, 0xfeU, 0xf7U, 0xf4U, 0xf1U, 0xf2U, - 0xe3U, 0xe0U, 0xe5U, 0xe6U, 0xefU, 0xecU, 0xe9U, 0xeaU, 0xcbU, 0xc8U, 0xcdU, 0xceU, - 0xc7U, 0xc4U, 0xc1U, 0xc2U, 0xd3U, 0xd0U, 0xd5U, 0xd6U, 0xdfU, 0xdcU, 0xd9U, 0xdaU, - 0x5bU, 0x58U, 0x5dU, 0x5eU, 0x57U, 0x54U, 0x51U, 0x52U, 0x43U, 0x40U, 0x45U, 0x46U, - 0x4fU, 0x4cU, 0x49U, 0x4aU, 0x6bU, 0x68U, 0x6dU, 0x6eU, 0x67U, 0x64U, 0x61U, 0x62U, - 0x73U, 0x70U, 0x75U, 0x76U, 0x7fU, 0x7cU, 0x79U, 0x7aU, 0x3bU, 0x38U, 0x3dU, 0x3eU, - 0x37U, 0x34U, 0x31U, 0x32U, 0x23U, 0x20U, 0x25U, 0x26U, 0x2fU, 0x2cU, 0x29U, 0x2aU, - 0x0bU, 0x08U, 0x0dU, 0x0eU, 0x07U, 0x04U, 0x01U, 0x02U, 0x13U, 0x10U, 0x15U, 0x16U, - 0x1fU, 0x1cU, 0x19U, 0x1aU + 0x00U, 0x03U, 0x06U, 0x05U, 0x0CU, 0x0FU, 0x0AU, 0x09U, 0x18U, 0x1BU, 0x1EU, 0x1DU, + 0x14U, 0x17U, 0x12U, 0x11U, 0x30U, 0x33U, 0x36U, 0x35U, 0x3CU, 0x3FU, 0x3AU, 0x39U, + 0x28U, 0x2BU, 0x2EU, 0x2DU, 0x24U, 0x27U, 0x22U, 0x21U, 0x60U, 0x63U, 0x66U, 0x65U, + 0x6CU, 0x6FU, 0x6AU, 0x69U, 0x78U, 0x7BU, 0x7EU, 0x7DU, 0x74U, 0x77U, 0x72U, 0x71U, + 0x50U, 0x53U, 0x56U, 0x55U, 0x5CU, 0x5FU, 0x5AU, 0x59U, 0x48U, 0x4BU, 0x4EU, 0x4DU, + 0x44U, 0x47U, 0x42U, 0x41U, 0xC0U, 0xC3U, 0xC6U, 0xC5U, 0xCCU, 0xCFU, 0xCAU, 0xC9U, + 0xD8U, 0xDBU, 0xDEU, 0xDDU, 0xD4U, 0xD7U, 0xD2U, 0xD1U, 0xF0U, 0xF3U, 0xF6U, 0xF5U, + 0xFCU, 0xFFU, 0xFAU, 0xF9U, 0xE8U, 0xEBU, 0xEEU, 0xEDU, 0xE4U, 0xE7U, 0xE2U, 0xE1U, + 0xA0U, 0xA3U, 0xA6U, 0xA5U, 0xACU, 0xAFU, 0xAAU, 0xA9U, 0xB8U, 0xBBU, 0xBEU, 0xBDU, + 0xB4U, 0xB7U, 0xB2U, 0xB1U, 0x90U, 0x93U, 0x96U, 0x95U, 0x9CU, 0x9FU, 0x9AU, 0x99U, + 0x88U, 0x8BU, 0x8EU, 0x8DU, 0x84U, 0x87U, 0x82U, 0x81U, 0x9BU, 0x98U, 0x9DU, 0x9EU, + 0x97U, 0x94U, 0x91U, 0x92U, 0x83U, 0x80U, 0x85U, 0x86U, 0x8FU, 0x8CU, 0x89U, 0x8AU, + 0xABU, 0xA8U, 0xADU, 0xAEU, 0xA7U, 0xA4U, 0xA1U, 0xA2U, 0xB3U, 0xB0U, 0xB5U, 0xB6U, + 0xBFU, 0xBCU, 0xB9U, 0xBAU, 0xFBU, 0xF8U, 0xFDU, 0xFEU, 0xF7U, 0xF4U, 0xF1U, 0xF2U, + 0xE3U, 0xE0U, 0xE5U, 0xE6U, 0xEFU, 0xECU, 0xE9U, 0xEAU, 0xCBU, 0xC8U, 0xCDU, 0xCEU, + 0xC7U, 0xC4U, 0xC1U, 0xC2U, 0xD3U, 0xD0U, 0xD5U, 0xD6U, 0xDFU, 0xDCU, 0xD9U, 0xDAU, + 0x5BU, 0x58U, 0x5DU, 0x5EU, 0x57U, 0x54U, 0x51U, 0x52U, 0x43U, 0x40U, 0x45U, 0x46U, + 0x4FU, 0x4CU, 0x49U, 0x4AU, 0x6BU, 0x68U, 0x6DU, 0x6EU, 0x67U, 0x64U, 0x61U, 0x62U, + 0x73U, 0x70U, 0x75U, 0x76U, 0x7FU, 0x7CU, 0x79U, 0x7AU, 0x3BU, 0x38U, 0x3DU, 0x3EU, + 0x37U, 0x34U, 0x31U, 0x32U, 0x23U, 0x20U, 0x25U, 0x26U, 0x2FU, 0x2CU, 0x29U, 0x2AU, + 0x0BU, 0x08U, 0x0DU, 0x0EU, 0x07U, 0x04U, 0x01U, 0x02U, 0x13U, 0x10U, 0x15U, 0x16U, + 0x1FU, 0x1CU, 0x19U, 0x1AU }, {}, @@ -150,110 +150,110 @@ static const uint8_t GF_MUL_TABLE[15][256] = { // mul 9 { - 0x00U, 0x09U, 0x12U, 0x1bU, 0x24U, 0x2dU, 0x36U, 0x3fU, 0x48U, 0x41U, 0x5aU, 0x53U, - 0x6cU, 0x65U, 0x7eU, 0x77U, 0x90U, 0x99U, 0x82U, 0x8bU, 0xb4U, 0xbdU, 0xa6U, 0xafU, - 0xd8U, 0xd1U, 0xcaU, 0xc3U, 0xfcU, 0xf5U, 0xeeU, 0xe7U, 0x3bU, 0x32U, 0x29U, 0x20U, - 0x1fU, 0x16U, 0x0dU, 0x04U, 0x73U, 0x7aU, 0x61U, 0x68U, 0x57U, 0x5eU, 0x45U, 0x4cU, - 0xabU, 0xa2U, 0xb9U, 0xb0U, 0x8fU, 0x86U, 0x9dU, 0x94U, 0xe3U, 0xeaU, 0xf1U, 0xf8U, - 0xc7U, 0xceU, 0xd5U, 0xdcU, 0x76U, 0x7fU, 0x64U, 0x6dU, 0x52U, 0x5bU, 0x40U, 0x49U, - 0x3eU, 0x37U, 0x2cU, 0x25U, 0x1aU, 0x13U, 0x08U, 0x01U, 0xe6U, 0xefU, 0xf4U, 0xfdU, - 0xc2U, 0xcbU, 0xd0U, 0xd9U, 0xaeU, 0xa7U, 0xbcU, 0xb5U, 0x8aU, 0x83U, 0x98U, 0x91U, - 0x4dU, 0x44U, 0x5fU, 0x56U, 0x69U, 0x60U, 0x7bU, 0x72U, 0x05U, 0x0cU, 0x17U, 0x1eU, - 0x21U, 0x28U, 0x33U, 0x3aU, 0xddU, 0xd4U, 0xcfU, 0xc6U, 0xf9U, 0xf0U, 0xebU, 0xe2U, - 0x95U, 0x9cU, 0x87U, 0x8eU, 0xb1U, 0xb8U, 0xa3U, 0xaaU, 0xecU, 0xe5U, 0xfeU, 0xf7U, - 0xc8U, 0xc1U, 0xdaU, 0xd3U, 0xa4U, 0xadU, 0xb6U, 0xbfU, 0x80U, 0x89U, 0x92U, 0x9bU, - 0x7cU, 0x75U, 0x6eU, 0x67U, 0x58U, 0x51U, 0x4aU, 0x43U, 0x34U, 0x3dU, 0x26U, 0x2fU, - 0x10U, 0x19U, 0x02U, 0x0bU, 0xd7U, 0xdeU, 0xc5U, 0xccU, 0xf3U, 0xfaU, 0xe1U, 0xe8U, - 0x9fU, 0x96U, 0x8dU, 0x84U, 0xbbU, 0xb2U, 0xa9U, 0xa0U, 0x47U, 0x4eU, 0x55U, 0x5cU, - 0x63U, 0x6aU, 0x71U, 0x78U, 0x0fU, 0x06U, 0x1dU, 0x14U, 0x2bU, 0x22U, 0x39U, 0x30U, - 0x9aU, 0x93U, 0x88U, 0x81U, 0xbeU, 0xb7U, 0xacU, 0xa5U, 0xd2U, 0xdbU, 0xc0U, 0xc9U, - 0xf6U, 0xffU, 0xe4U, 0xedU, 0x0aU, 0x03U, 0x18U, 0x11U, 0x2eU, 0x27U, 0x3cU, 0x35U, - 0x42U, 0x4bU, 0x50U, 0x59U, 0x66U, 0x6fU, 0x74U, 0x7dU, 0xa1U, 0xa8U, 0xb3U, 0xbaU, - 0x85U, 0x8cU, 0x97U, 0x9eU, 0xe9U, 0xe0U, 0xfbU, 0xf2U, 0xcdU, 0xc4U, 0xdfU, 0xd6U, - 0x31U, 0x38U, 0x23U, 0x2aU, 0x15U, 0x1cU, 0x07U, 0x0eU, 0x79U, 0x70U, 0x6bU, 0x62U, - 0x5dU, 0x54U, 0x4fU, 0x46U + 0x00U, 0x09U, 0x12U, 0x1BU, 0x24U, 0x2DU, 0x36U, 0x3FU, 0x48U, 0x41U, 0x5AU, 0x53U, + 0x6CU, 0x65U, 0x7EU, 0x77U, 0x90U, 0x99U, 0x82U, 0x8BU, 0xB4U, 0xBDU, 0xA6U, 0xAFU, + 0xD8U, 0xD1U, 0xCAU, 0xC3U, 0xFCU, 0xF5U, 0xEEU, 0xE7U, 0x3BU, 0x32U, 0x29U, 0x20U, + 0x1FU, 0x16U, 0x0DU, 0x04U, 0x73U, 0x7AU, 0x61U, 0x68U, 0x57U, 0x5EU, 0x45U, 0x4CU, + 0xABU, 0xA2U, 0xB9U, 0xB0U, 0x8FU, 0x86U, 0x9DU, 0x94U, 0xE3U, 0xEAU, 0xF1U, 0xF8U, + 0xC7U, 0xCEU, 0xD5U, 0xDCU, 0x76U, 0x7FU, 0x64U, 0x6DU, 0x52U, 0x5BU, 0x40U, 0x49U, + 0x3EU, 0x37U, 0x2CU, 0x25U, 0x1AU, 0x13U, 0x08U, 0x01U, 0xE6U, 0xEFU, 0xF4U, 0xFDU, + 0xC2U, 0xCBU, 0xD0U, 0xD9U, 0xAEU, 0xA7U, 0xBCU, 0xB5U, 0x8AU, 0x83U, 0x98U, 0x91U, + 0x4DU, 0x44U, 0x5FU, 0x56U, 0x69U, 0x60U, 0x7BU, 0x72U, 0x05U, 0x0CU, 0x17U, 0x1EU, + 0x21U, 0x28U, 0x33U, 0x3AU, 0xDDU, 0xD4U, 0xCFU, 0xC6U, 0xF9U, 0xF0U, 0xEBU, 0xE2U, + 0x95U, 0x9CU, 0x87U, 0x8EU, 0xB1U, 0xB8U, 0xA3U, 0xAAU, 0xECU, 0xE5U, 0xFEU, 0xF7U, + 0xC8U, 0xC1U, 0xDAU, 0xD3U, 0xA4U, 0xADU, 0xB6U, 0xBFU, 0x80U, 0x89U, 0x92U, 0x9BU, + 0x7CU, 0x75U, 0x6EU, 0x67U, 0x58U, 0x51U, 0x4AU, 0x43U, 0x34U, 0x3DU, 0x26U, 0x2FU, + 0x10U, 0x19U, 0x02U, 0x0BU, 0xD7U, 0xDEU, 0xC5U, 0xCCU, 0xF3U, 0xFAU, 0xE1U, 0xE8U, + 0x9FU, 0x96U, 0x8DU, 0x84U, 0xBBU, 0xB2U, 0xA9U, 0xA0U, 0x47U, 0x4EU, 0x55U, 0x5CU, + 0x63U, 0x6AU, 0x71U, 0x78U, 0x0FU, 0x06U, 0x1DU, 0x14U, 0x2BU, 0x22U, 0x39U, 0x30U, + 0x9AU, 0x93U, 0x88U, 0x81U, 0xBEU, 0xB7U, 0xACU, 0xA5U, 0xD2U, 0xDBU, 0xC0U, 0xC9U, + 0xF6U, 0xFFU, 0xE4U, 0xEDU, 0x0AU, 0x03U, 0x18U, 0x11U, 0x2EU, 0x27U, 0x3CU, 0x35U, + 0x42U, 0x4BU, 0x50U, 0x59U, 0x66U, 0x6FU, 0x74U, 0x7DU, 0xA1U, 0xA8U, 0xB3U, 0xBAU, + 0x85U, 0x8CU, 0x97U, 0x9EU, 0xE9U, 0xE0U, 0xFBU, 0xF2U, 0xCDU, 0xC4U, 0xDFU, 0xD6U, + 0x31U, 0x38U, 0x23U, 0x2AU, 0x15U, 0x1CU, 0x07U, 0x0EU, 0x79U, 0x70U, 0x6BU, 0x62U, + 0x5DU, 0x54U, 0x4FU, 0x46U }, {}, // mul 11 { - 0x00U, 0x0bU, 0x16U, 0x1dU, 0x2cU, 0x27U, 0x3aU, 0x31U, 0x58U, 0x53U, 0x4eU, 0x45U, - 0x74U, 0x7fU, 0x62U, 0x69U, 0xb0U, 0xbbU, 0xa6U, 0xadU, 0x9cU, 0x97U, 0x8aU, 0x81U, - 0xe8U, 0xe3U, 0xfeU, 0xf5U, 0xc4U, 0xcfU, 0xd2U, 0xd9U, 0x7bU, 0x70U, 0x6dU, 0x66U, - 0x57U, 0x5cU, 0x41U, 0x4aU, 0x23U, 0x28U, 0x35U, 0x3eU, 0x0fU, 0x04U, 0x19U, 0x12U, - 0xcbU, 0xc0U, 0xddU, 0xd6U, 0xe7U, 0xecU, 0xf1U, 0xfaU, 0x93U, 0x98U, 0x85U, 0x8eU, - 0xbfU, 0xb4U, 0xa9U, 0xa2U, 0xf6U, 0xfdU, 0xe0U, 0xebU, 0xdaU, 0xd1U, 0xccU, 0xc7U, - 0xaeU, 0xa5U, 0xb8U, 0xb3U, 0x82U, 0x89U, 0x94U, 0x9fU, 0x46U, 0x4dU, 0x50U, 0x5bU, - 0x6aU, 0x61U, 0x7cU, 0x77U, 0x1eU, 0x15U, 0x08U, 0x03U, 0x32U, 0x39U, 0x24U, 0x2fU, - 0x8dU, 0x86U, 0x9bU, 0x90U, 0xa1U, 0xaaU, 0xb7U, 0xbcU, 0xd5U, 0xdeU, 0xc3U, 0xc8U, - 0xf9U, 0xf2U, 0xefU, 0xe4U, 0x3dU, 0x36U, 0x2bU, 0x20U, 0x11U, 0x1aU, 0x07U, 0x0cU, - 0x65U, 0x6eU, 0x73U, 0x78U, 0x49U, 0x42U, 0x5fU, 0x54U, 0xf7U, 0xfcU, 0xe1U, 0xeaU, - 0xdbU, 0xd0U, 0xcdU, 0xc6U, 0xafU, 0xa4U, 0xb9U, 0xb2U, 0x83U, 0x88U, 0x95U, 0x9eU, - 0x47U, 0x4cU, 0x51U, 0x5aU, 0x6bU, 0x60U, 0x7dU, 0x76U, 0x1fU, 0x14U, 0x09U, 0x02U, - 0x33U, 0x38U, 0x25U, 0x2eU, 0x8cU, 0x87U, 0x9aU, 0x91U, 0xa0U, 0xabU, 0xb6U, 0xbdU, - 0xd4U, 0xdfU, 0xc2U, 0xc9U, 0xf8U, 0xf3U, 0xeeU, 0xe5U, 0x3cU, 0x37U, 0x2aU, 0x21U, - 0x10U, 0x1bU, 0x06U, 0x0dU, 0x64U, 0x6fU, 0x72U, 0x79U, 0x48U, 0x43U, 0x5eU, 0x55U, - 0x01U, 0x0aU, 0x17U, 0x1cU, 0x2dU, 0x26U, 0x3bU, 0x30U, 0x59U, 0x52U, 0x4fU, 0x44U, - 0x75U, 0x7eU, 0x63U, 0x68U, 0xb1U, 0xbaU, 0xa7U, 0xacU, 0x9dU, 0x96U, 0x8bU, 0x80U, - 0xe9U, 0xe2U, 0xffU, 0xf4U, 0xc5U, 0xceU, 0xd3U, 0xd8U, 0x7aU, 0x71U, 0x6cU, 0x67U, - 0x56U, 0x5dU, 0x40U, 0x4bU, 0x22U, 0x29U, 0x34U, 0x3fU, 0x0eU, 0x05U, 0x18U, 0x13U, - 0xcaU, 0xc1U, 0xdcU, 0xd7U, 0xe6U, 0xedU, 0xf0U, 0xfbU, 0x92U, 0x99U, 0x84U, 0x8fU, - 0xbeU, 0xb5U, 0xa8U, 0xa3U + 0x00U, 0x0BU, 0x16U, 0x1DU, 0x2CU, 0x27U, 0x3AU, 0x31U, 0x58U, 0x53U, 0x4EU, 0x45U, + 0x74U, 0x7FU, 0x62U, 0x69U, 0xB0U, 0xBBU, 0xA6U, 0xADU, 0x9CU, 0x97U, 0x8AU, 0x81U, + 0xE8U, 0xE3U, 0xFEU, 0xF5U, 0xC4U, 0xCFU, 0xD2U, 0xD9U, 0x7BU, 0x70U, 0x6DU, 0x66U, + 0x57U, 0x5CU, 0x41U, 0x4AU, 0x23U, 0x28U, 0x35U, 0x3EU, 0x0FU, 0x04U, 0x19U, 0x12U, + 0xCBU, 0xC0U, 0xDDU, 0xD6U, 0xE7U, 0xECU, 0xF1U, 0xFAU, 0x93U, 0x98U, 0x85U, 0x8EU, + 0xBFU, 0xB4U, 0xA9U, 0xA2U, 0xF6U, 0xFDU, 0xE0U, 0xEBU, 0xDAU, 0xD1U, 0xCCU, 0xC7U, + 0xAEU, 0xA5U, 0xB8U, 0xB3U, 0x82U, 0x89U, 0x94U, 0x9FU, 0x46U, 0x4DU, 0x50U, 0x5BU, + 0x6AU, 0x61U, 0x7CU, 0x77U, 0x1EU, 0x15U, 0x08U, 0x03U, 0x32U, 0x39U, 0x24U, 0x2FU, + 0x8DU, 0x86U, 0x9BU, 0x90U, 0xA1U, 0xAAU, 0xB7U, 0xBCU, 0xD5U, 0xDEU, 0xC3U, 0xC8U, + 0xF9U, 0xF2U, 0xEFU, 0xE4U, 0x3DU, 0x36U, 0x2BU, 0x20U, 0x11U, 0x1AU, 0x07U, 0x0CU, + 0x65U, 0x6EU, 0x73U, 0x78U, 0x49U, 0x42U, 0x5FU, 0x54U, 0xF7U, 0xFCU, 0xE1U, 0xEAU, + 0xDBU, 0xD0U, 0xCDU, 0xC6U, 0xAFU, 0xA4U, 0xB9U, 0xB2U, 0x83U, 0x88U, 0x95U, 0x9EU, + 0x47U, 0x4CU, 0x51U, 0x5AU, 0x6BU, 0x60U, 0x7DU, 0x76U, 0x1FU, 0x14U, 0x09U, 0x02U, + 0x33U, 0x38U, 0x25U, 0x2EU, 0x8CU, 0x87U, 0x9AU, 0x91U, 0xA0U, 0xABU, 0xB6U, 0xBDU, + 0xD4U, 0xDFU, 0xC2U, 0xC9U, 0xF8U, 0xF3U, 0xEEU, 0xE5U, 0x3CU, 0x37U, 0x2AU, 0x21U, + 0x10U, 0x1BU, 0x06U, 0x0DU, 0x64U, 0x6FU, 0x72U, 0x79U, 0x48U, 0x43U, 0x5EU, 0x55U, + 0x01U, 0x0AU, 0x17U, 0x1CU, 0x2DU, 0x26U, 0x3BU, 0x30U, 0x59U, 0x52U, 0x4FU, 0x44U, + 0x75U, 0x7EU, 0x63U, 0x68U, 0xB1U, 0xBAU, 0xA7U, 0xACU, 0x9DU, 0x96U, 0x8BU, 0x80U, + 0xE9U, 0xE2U, 0xFFU, 0xF4U, 0xC5U, 0xCEU, 0xD3U, 0xD8U, 0x7AU, 0x71U, 0x6CU, 0x67U, + 0x56U, 0x5DU, 0x40U, 0x4BU, 0x22U, 0x29U, 0x34U, 0x3FU, 0x0EU, 0x05U, 0x18U, 0x13U, + 0xCAU, 0xC1U, 0xDCU, 0xD7U, 0xE6U, 0xEDU, 0xF0U, 0xFBU, 0x92U, 0x99U, 0x84U, 0x8FU, + 0xBEU, 0xB5U, 0xA8U, 0xA3U }, {}, // mul 13 { - 0x00U, 0x0dU, 0x1aU, 0x17U, 0x34U, 0x39U, 0x2eU, 0x23U, 0x68U, 0x65U, 0x72U, 0x7fU, - 0x5cU, 0x51U, 0x46U, 0x4bU, 0xd0U, 0xddU, 0xcaU, 0xc7U, 0xe4U, 0xe9U, 0xfeU, 0xf3U, - 0xb8U, 0xb5U, 0xa2U, 0xafU, 0x8cU, 0x81U, 0x96U, 0x9bU, 0xbbU, 0xb6U, 0xa1U, 0xacU, - 0x8fU, 0x82U, 0x95U, 0x98U, 0xd3U, 0xdeU, 0xc9U, 0xc4U, 0xe7U, 0xeaU, 0xfdU, 0xf0U, - 0x6bU, 0x66U, 0x71U, 0x7cU, 0x5fU, 0x52U, 0x45U, 0x48U, 0x03U, 0x0eU, 0x19U, 0x14U, - 0x37U, 0x3aU, 0x2dU, 0x20U, 0x6dU, 0x60U, 0x77U, 0x7aU, 0x59U, 0x54U, 0x43U, 0x4eU, - 0x05U, 0x08U, 0x1fU, 0x12U, 0x31U, 0x3cU, 0x2bU, 0x26U, 0xbdU, 0xb0U, 0xa7U, 0xaaU, - 0x89U, 0x84U, 0x93U, 0x9eU, 0xd5U, 0xd8U, 0xcfU, 0xc2U, 0xe1U, 0xecU, 0xfbU, 0xf6U, - 0xd6U, 0xdbU, 0xccU, 0xc1U, 0xe2U, 0xefU, 0xf8U, 0xf5U, 0xbeU, 0xb3U, 0xa4U, 0xa9U, - 0x8aU, 0x87U, 0x90U, 0x9dU, 0x06U, 0x0bU, 0x1cU, 0x11U, 0x32U, 0x3fU, 0x28U, 0x25U, - 0x6eU, 0x63U, 0x74U, 0x79U, 0x5aU, 0x57U, 0x40U, 0x4dU, 0xdaU, 0xd7U, 0xc0U, 0xcdU, - 0xeeU, 0xe3U, 0xf4U, 0xf9U, 0xb2U, 0xbfU, 0xa8U, 0xa5U, 0x86U, 0x8bU, 0x9cU, 0x91U, - 0x0aU, 0x07U, 0x10U, 0x1dU, 0x3eU, 0x33U, 0x24U, 0x29U, 0x62U, 0x6fU, 0x78U, 0x75U, - 0x56U, 0x5bU, 0x4cU, 0x41U, 0x61U, 0x6cU, 0x7bU, 0x76U, 0x55U, 0x58U, 0x4fU, 0x42U, - 0x09U, 0x04U, 0x13U, 0x1eU, 0x3dU, 0x30U, 0x27U, 0x2aU, 0xb1U, 0xbcU, 0xabU, 0xa6U, - 0x85U, 0x88U, 0x9fU, 0x92U, 0xd9U, 0xd4U, 0xc3U, 0xceU, 0xedU, 0xe0U, 0xf7U, 0xfaU, - 0xb7U, 0xbaU, 0xadU, 0xa0U, 0x83U, 0x8eU, 0x99U, 0x94U, 0xdfU, 0xd2U, 0xc5U, 0xc8U, - 0xebU, 0xe6U, 0xf1U, 0xfcU, 0x67U, 0x6aU, 0x7dU, 0x70U, 0x53U, 0x5eU, 0x49U, 0x44U, - 0x0fU, 0x02U, 0x15U, 0x18U, 0x3bU, 0x36U, 0x21U, 0x2cU, 0x0cU, 0x01U, 0x16U, 0x1bU, - 0x38U, 0x35U, 0x22U, 0x2fU, 0x64U, 0x69U, 0x7eU, 0x73U, 0x50U, 0x5dU, 0x4aU, 0x47U, - 0xdcU, 0xd1U, 0xc6U, 0xcbU, 0xe8U, 0xe5U, 0xf2U, 0xffU, 0xb4U, 0xb9U, 0xaeU, 0xa3U, - 0x80U, 0x8dU, 0x9aU, 0x97U + 0x00U, 0x0DU, 0x1AU, 0x17U, 0x34U, 0x39U, 0x2EU, 0x23U, 0x68U, 0x65U, 0x72U, 0x7FU, + 0x5CU, 0x51U, 0x46U, 0x4BU, 0xD0U, 0xDDU, 0xCAU, 0xC7U, 0xE4U, 0xE9U, 0xFEU, 0xF3U, + 0xB8U, 0xB5U, 0xA2U, 0xAFU, 0x8CU, 0x81U, 0x96U, 0x9BU, 0xBBU, 0xB6U, 0xA1U, 0xACU, + 0x8FU, 0x82U, 0x95U, 0x98U, 0xD3U, 0xDEU, 0xC9U, 0xC4U, 0xE7U, 0xEAU, 0xFDU, 0xF0U, + 0x6BU, 0x66U, 0x71U, 0x7CU, 0x5FU, 0x52U, 0x45U, 0x48U, 0x03U, 0x0EU, 0x19U, 0x14U, + 0x37U, 0x3AU, 0x2DU, 0x20U, 0x6DU, 0x60U, 0x77U, 0x7AU, 0x59U, 0x54U, 0x43U, 0x4EU, + 0x05U, 0x08U, 0x1FU, 0x12U, 0x31U, 0x3CU, 0x2BU, 0x26U, 0xBDU, 0xB0U, 0xA7U, 0xAAU, + 0x89U, 0x84U, 0x93U, 0x9EU, 0xD5U, 0xD8U, 0xCFU, 0xC2U, 0xE1U, 0xECU, 0xFBU, 0xF6U, + 0xD6U, 0xDBU, 0xCCU, 0xC1U, 0xE2U, 0xEFU, 0xF8U, 0xF5U, 0xBEU, 0xB3U, 0xA4U, 0xA9U, + 0x8AU, 0x87U, 0x90U, 0x9DU, 0x06U, 0x0BU, 0x1CU, 0x11U, 0x32U, 0x3FU, 0x28U, 0x25U, + 0x6EU, 0x63U, 0x74U, 0x79U, 0x5AU, 0x57U, 0x40U, 0x4DU, 0xDAU, 0xD7U, 0xC0U, 0xCDU, + 0xEEU, 0xE3U, 0xF4U, 0xF9U, 0xB2U, 0xBFU, 0xA8U, 0xA5U, 0x86U, 0x8BU, 0x9CU, 0x91U, + 0x0AU, 0x07U, 0x10U, 0x1DU, 0x3EU, 0x33U, 0x24U, 0x29U, 0x62U, 0x6FU, 0x78U, 0x75U, + 0x56U, 0x5BU, 0x4CU, 0x41U, 0x61U, 0x6CU, 0x7BU, 0x76U, 0x55U, 0x58U, 0x4FU, 0x42U, + 0x09U, 0x04U, 0x13U, 0x1EU, 0x3DU, 0x30U, 0x27U, 0x2AU, 0xB1U, 0xBCU, 0xABU, 0xA6U, + 0x85U, 0x88U, 0x9FU, 0x92U, 0xD9U, 0xD4U, 0xC3U, 0xCEU, 0xEDU, 0xE0U, 0xF7U, 0xFAU, + 0xB7U, 0xBAU, 0xADU, 0xA0U, 0x83U, 0x8EU, 0x99U, 0x94U, 0xDFU, 0xD2U, 0xC5U, 0xC8U, + 0xEBU, 0xE6U, 0xF1U, 0xFCU, 0x67U, 0x6AU, 0x7DU, 0x70U, 0x53U, 0x5EU, 0x49U, 0x44U, + 0x0FU, 0x02U, 0x15U, 0x18U, 0x3BU, 0x36U, 0x21U, 0x2CU, 0x0CU, 0x01U, 0x16U, 0x1BU, + 0x38U, 0x35U, 0x22U, 0x2FU, 0x64U, 0x69U, 0x7EU, 0x73U, 0x50U, 0x5DU, 0x4AU, 0x47U, + 0xDCU, 0xD1U, 0xC6U, 0xCBU, 0xE8U, 0xE5U, 0xF2U, 0xFFU, 0xB4U, 0xB9U, 0xAEU, 0xA3U, + 0x80U, 0x8DU, 0x9AU, 0x97U }, // mul 14 { - 0x00U, 0x0eU, 0x1cU, 0x12U, 0x38U, 0x36U, 0x24U, 0x2aU, 0x70U, 0x7eU, 0x6cU, 0x62U, - 0x48U, 0x46U, 0x54U, 0x5aU, 0xe0U, 0xeeU, 0xfcU, 0xf2U, 0xd8U, 0xd6U, 0xc4U, 0xcaU, - 0x90U, 0x9eU, 0x8cU, 0x82U, 0xa8U, 0xa6U, 0xb4U, 0xbaU, 0xdbU, 0xd5U, 0xc7U, 0xc9U, - 0xe3U, 0xedU, 0xffU, 0xf1U, 0xabU, 0xa5U, 0xb7U, 0xb9U, 0x93U, 0x9dU, 0x8fU, 0x81U, - 0x3bU, 0x35U, 0x27U, 0x29U, 0x03U, 0x0dU, 0x1fU, 0x11U, 0x4bU, 0x45U, 0x57U, 0x59U, - 0x73U, 0x7dU, 0x6fU, 0x61U, 0xadU, 0xa3U, 0xb1U, 0xbfU, 0x95U, 0x9bU, 0x89U, 0x87U, - 0xddU, 0xd3U, 0xc1U, 0xcfU, 0xe5U, 0xebU, 0xf9U, 0xf7U, 0x4dU, 0x43U, 0x51U, 0x5fU, - 0x75U, 0x7bU, 0x69U, 0x67U, 0x3dU, 0x33U, 0x21U, 0x2fU, 0x05U, 0x0bU, 0x19U, 0x17U, - 0x76U, 0x78U, 0x6aU, 0x64U, 0x4eU, 0x40U, 0x52U, 0x5cU, 0x06U, 0x08U, 0x1aU, 0x14U, - 0x3eU, 0x30U, 0x22U, 0x2cU, 0x96U, 0x98U, 0x8aU, 0x84U, 0xaeU, 0xa0U, 0xb2U, 0xbcU, - 0xe6U, 0xe8U, 0xfaU, 0xf4U, 0xdeU, 0xd0U, 0xc2U, 0xccU, 0x41U, 0x4fU, 0x5dU, 0x53U, - 0x79U, 0x77U, 0x65U, 0x6bU, 0x31U, 0x3fU, 0x2dU, 0x23U, 0x09U, 0x07U, 0x15U, 0x1bU, - 0xa1U, 0xafU, 0xbdU, 0xb3U, 0x99U, 0x97U, 0x85U, 0x8bU, 0xd1U, 0xdfU, 0xcdU, 0xc3U, - 0xe9U, 0xe7U, 0xf5U, 0xfbU, 0x9aU, 0x94U, 0x86U, 0x88U, 0xa2U, 0xacU, 0xbeU, 0xb0U, - 0xeaU, 0xe4U, 0xf6U, 0xf8U, 0xd2U, 0xdcU, 0xceU, 0xc0U, 0x7aU, 0x74U, 0x66U, 0x68U, - 0x42U, 0x4cU, 0x5eU, 0x50U, 0x0aU, 0x04U, 0x16U, 0x18U, 0x32U, 0x3cU, 0x2eU, 0x20U, - 0xecU, 0xe2U, 0xf0U, 0xfeU, 0xd4U, 0xdaU, 0xc8U, 0xc6U, 0x9cU, 0x92U, 0x80U, 0x8eU, - 0xa4U, 0xaaU, 0xb8U, 0xb6U, 0x0cU, 0x02U, 0x10U, 0x1eU, 0x34U, 0x3aU, 0x28U, 0x26U, - 0x7cU, 0x72U, 0x60U, 0x6eU, 0x44U, 0x4aU, 0x58U, 0x56U, 0x37U, 0x39U, 0x2bU, 0x25U, - 0x0fU, 0x01U, 0x13U, 0x1dU, 0x47U, 0x49U, 0x5bU, 0x55U, 0x7fU, 0x71U, 0x63U, 0x6dU, - 0xd7U, 0xd9U, 0xcbU, 0xc5U, 0xefU, 0xe1U, 0xf3U, 0xfdU, 0xa7U, 0xa9U, 0xbbU, 0xb5U, - 0x9fU, 0x91U, 0x83U, 0x8dU + 0x00U, 0x0EU, 0x1CU, 0x12U, 0x38U, 0x36U, 0x24U, 0x2AU, 0x70U, 0x7EU, 0x6CU, 0x62U, + 0x48U, 0x46U, 0x54U, 0x5AU, 0xE0U, 0xEEU, 0xFCU, 0xF2U, 0xD8U, 0xD6U, 0xC4U, 0xCAU, + 0x90U, 0x9EU, 0x8CU, 0x82U, 0xA8U, 0xA6U, 0xB4U, 0xBAU, 0xDBU, 0xD5U, 0xC7U, 0xC9U, + 0xE3U, 0xEDU, 0xFFU, 0xF1U, 0xABU, 0xA5U, 0xB7U, 0xB9U, 0x93U, 0x9DU, 0x8FU, 0x81U, + 0x3BU, 0x35U, 0x27U, 0x29U, 0x03U, 0x0DU, 0x1FU, 0x11U, 0x4BU, 0x45U, 0x57U, 0x59U, + 0x73U, 0x7DU, 0x6FU, 0x61U, 0xADU, 0xA3U, 0xB1U, 0xBFU, 0x95U, 0x9BU, 0x89U, 0x87U, + 0xDDU, 0xD3U, 0xC1U, 0xCFU, 0xE5U, 0xEBU, 0xF9U, 0xF7U, 0x4DU, 0x43U, 0x51U, 0x5FU, + 0x75U, 0x7BU, 0x69U, 0x67U, 0x3DU, 0x33U, 0x21U, 0x2FU, 0x05U, 0x0BU, 0x19U, 0x17U, + 0x76U, 0x78U, 0x6AU, 0x64U, 0x4EU, 0x40U, 0x52U, 0x5CU, 0x06U, 0x08U, 0x1AU, 0x14U, + 0x3EU, 0x30U, 0x22U, 0x2CU, 0x96U, 0x98U, 0x8AU, 0x84U, 0xAEU, 0xA0U, 0xB2U, 0xBCU, + 0xE6U, 0xE8U, 0xFAU, 0xF4U, 0xDEU, 0xD0U, 0xC2U, 0xCCU, 0x41U, 0x4FU, 0x5DU, 0x53U, + 0x79U, 0x77U, 0x65U, 0x6BU, 0x31U, 0x3FU, 0x2DU, 0x23U, 0x09U, 0x07U, 0x15U, 0x1BU, + 0xA1U, 0xAFU, 0xBDU, 0xB3U, 0x99U, 0x97U, 0x85U, 0x8BU, 0xD1U, 0xDFU, 0xCDU, 0xC3U, + 0xE9U, 0xE7U, 0xF5U, 0xFBU, 0x9AU, 0x94U, 0x86U, 0x88U, 0xA2U, 0xACU, 0xBEU, 0xB0U, + 0xEAU, 0xE4U, 0xF6U, 0xF8U, 0xD2U, 0xDCU, 0xCEU, 0xC0U, 0x7AU, 0x74U, 0x66U, 0x68U, + 0x42U, 0x4CU, 0x5EU, 0x50U, 0x0AU, 0x04U, 0x16U, 0x18U, 0x32U, 0x3CU, 0x2EU, 0x20U, + 0xECU, 0xE2U, 0xF0U, 0xFEU, 0xD4U, 0xDAU, 0xC8U, 0xC6U, 0x9CU, 0x92U, 0x80U, 0x8EU, + 0xA4U, 0xAAU, 0xB8U, 0xB6U, 0x0CU, 0x02U, 0x10U, 0x1EU, 0x34U, 0x3AU, 0x28U, 0x26U, + 0x7CU, 0x72U, 0x60U, 0x6EU, 0x44U, 0x4AU, 0x58U, 0x56U, 0x37U, 0x39U, 0x2BU, 0x25U, + 0x0FU, 0x01U, 0x13U, 0x1DU, 0x47U, 0x49U, 0x5BU, 0x55U, 0x7FU, 0x71U, 0x63U, 0x6DU, + 0xD7U, 0xD9U, 0xCBU, 0xC5U, 0xEFU, 0xE1U, 0xF3U, 0xFDU, 0xA7U, 0xA9U, 0xBBU, 0xB5U, + 0x9FU, 0x91U, 0x83U, 0x8DU } }; diff --git a/src/AESCrypto.h b/src/AESCrypto.h index 1ff21ee1..a7d9038f 100644 --- a/src/AESCrypto.h +++ b/src/AESCrypto.h @@ -80,7 +80,7 @@ namespace crypto void shiftRows(uint8_t state[4][AES_NB]); void invShiftRows(uint8_t state[4][AES_NB]); - uint8_t xtime(uint8_t b) { return (b << 1) ^ (((b >> 7) & 1) * 0x1bU); } + uint8_t xtime(uint8_t b) { return (b << 1) ^ (((b >> 7) & 1) * 0x1BU); } void mixColumns(uint8_t state[4][AES_NB]); void invMixColumns(uint8_t state[4][AES_NB]);