On 7/27/23 00:03, Ard Biesheuvel wrote:
@@ -606,8 +606,7 @@ static const uint32_t AES_Te4[256] = {
      0x41414141U, 0x99999999U, 0x2d2d2d2dU, 0x0f0f0f0fU,
      0xb0b0b0b0U, 0x54545454U, 0xbbbbbbbbU, 0x16161616U,
  };
-
-static const uint32_t AES_Td0[256] = {
+const uint32_t AES_Td0[256] = {

Don't drop the blank line.

@@ -62,18 +39,21 @@ static inline target_ulong aes32_operation(target_ulong 
shamt,
      if (enc) {
          so = AES_sbox[si];
          if (mix) {
-            mixed = aes_mixcolumn_byte(so, true);
+            mixed = AES_Te0[si];
          } else {
              mixed = so;
          }
      } else {
          so = AES_isbox[si];
          if (mix) {
-            mixed = aes_mixcolumn_byte(so, false);
+            mixed = AES_Td0[si];
          } else {
              mixed = so;
          }
      }
+    if (!HOST_BIG_ENDIAN && mix) {
+        mixed = bswap32(mixed);
+    }
      mixed = rol32(mixed, shamt);

Better as

    if (enc) {
        if (mix) {
            mixed = be32_to_cpu(AES_Te0[si]);
        } else {
            mixed = AES_sbox[si];
        }
    } else {
        ...
    }
    mixed = rol32(mixed, shamt);

But thanks for the update -- I had ignored rv32 when doing the other AES bits.

r~


Reply via email to