diff --git a/rijndael.c b/rijndael.c
index 3562471c4ee547eaa0f61c8478a237ae449f9760..2b24c43dd8b1524446e127e2dd223b6964b5c3f1 100644
--- a/rijndael.c
+++ b/rijndael.c
@@ -1,4 +1,5 @@
 /* rijndael - An implementation of the Rijndael cipher.
+ *
  * Copyright (C) 2000 Rafael R. Sevilla <dido@pacific.net.ph>
  *
  * This library is free software; you can redistribute it and/or
@@ -17,15 +18,17 @@
  */
 
 #include "rijndael.h"
+
+#include <assert.h>
+#include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <stdio.h>
 
 /* These tables combine both the S-boxes and the mixcolumn transformation, so
    that we can perform a round's encryption or by means of four table lookups
    and four XOR's per column of state.  They were generated by the
    makertbls.pl script. */
-UINT32 dtbl[] = {
+static const UINT32 dtbl[] = {
   0xa56363c6, 0x847c7cf8, 0x997777ee, 0x8d7b7bf6, 
   0x0df2f2ff, 0xbd6b6bd6, 0xb16f6fde, 0x54c5c591, 
   0x50303060, 0x03010102, 0xa96767ce, 0x7d2b2b56, 
@@ -92,7 +95,7 @@ UINT32 dtbl[] = {
   0xcbb0b07b, 0xfc5454a8, 0xd6bbbb6d, 0x3a16162c, 
 };
 
-UINT32 itbl[] = {
+static const UINT32 itbl[] = {
   0x50a7f451, 0x5365417e, 0xc3a4171a, 0x965e273a, 
   0xcb6bab3b, 0xf1459d1f, 0xab58faac, 0x9303e34b, 
   0x55fa3020, 0xf66d76ad, 0x9176cc88, 0x254c02f5, 
@@ -161,7 +164,7 @@ UINT32 itbl[] = {
 
 
 /* Needed only for the key schedule and for final rounds */
-UINT8 sbox[256] = {
+static const UINT8 sbox[256] = {
   99, 124, 119, 123, 242, 107, 111, 197,  48,   1, 103,  43, 254, 215, 171,
   118, 202, 130, 201, 125, 250,  89,  71, 240, 173, 212, 162, 175, 156, 164,
   114, 192, 183, 253, 147,  38,  54,  63, 247, 204,  52, 165, 229, 241, 113,
@@ -182,7 +185,7 @@ UINT8 sbox[256] = {
   22, 
 };
 
-UINT8 isbox[256] = {
+static const UINT8 isbox[256] = {
   82,   9, 106, 213,  48,  54, 165,  56, 191,  64, 163, 158, 129, 243, 215,
   251, 124, 227,  57, 130, 155,  47, 255, 135,  52, 142,  67,  68, 196, 222,
   233, 203, 84, 123, 148,  50, 166, 194,  35,  61, 238,  76, 149,  11,  66,
@@ -204,7 +207,7 @@ UINT8 isbox[256] = {
 };
 
 /* Used only by the key schedule */
-UINT8 Logtable[256] = {
+static const UINT8 Logtable[256] = {
   0,   0,  25,   1,  50,   2,  26, 198,  75, 199,  27, 104,  51, 238, 223,  3,
   100,   4, 224,  14,  52, 141, 129, 239,  76, 113,   8, 200, 248, 105,  28,
   193, 125, 194,  29, 181, 249, 185,  39, 106,  77, 228, 166, 114, 154, 201,
@@ -224,7 +227,7 @@ UINT8 Logtable[256] = {
   74, 237, 222, 197,  49, 254,  24,  13,  99, 140, 128, 192, 247, 112,   7, 
 };
 
-UINT8 Alogtable[256] = {
+static const UINT8 Alogtable[256] = {
   1,   3,   5,  15,  17,  51,  85, 255,  26,  46, 114, 150, 161, 248,  19, 
   53, 95, 225,  56,  72, 216, 115, 149, 164, 247,   2,   6,  10,  30,  34,
   102, 170, 229,  52,  92, 228,  55,  89, 235,  38, 106, 190, 217, 112, 144,
@@ -304,6 +307,7 @@ rijndael_setup(RIJNDAEL_context *ctx, size_t keysize, const UINT8 *key)
     nk = 6;
     nr = 12;
   } else {			/* must be 16 or more */
+    assert(keysize >= 16);
     nk = 4;
     nr = 10;
   }
@@ -376,7 +380,7 @@ key_addition32to8(const UINT32 *txt, UINT32 *keys, UINT8 *out)
   }
 }
 
-static int idx[4][4] = {
+static const int idx[4][4] = {
   { 0, 1, 2, 3 },
   { 1, 2, 3, 0 },
   { 2, 3, 0, 1 },
@@ -415,7 +419,7 @@ rijndael_encrypt(RIJNDAEL_context *ctx,
   key_addition32to8(t, &(ctx->keys[4*ctx->nrounds]), ciphertext);
 }
 
-static int iidx[4][4] = {
+static const int iidx[4][4] = {
   { 0, 1, 2, 3 },
   { 3, 0, 1, 2 },
   { 2, 3, 0, 1 },