diff --git a/ChangeLog b/ChangeLog
index 82980eb196df13ecebbe84b9036b2bd9693c13e5..4c3416a8f6b977a5d8156fca823c6284f86b4ce1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2013-08-07  Niels Möller  <nisse@lysator.liu.se>
+
+	* umac.h (_UMAC_STATE): Use struct aes128_ctx, not aes_ctx.
+	* umac-set-key.c (umac_kdf, _umac_set_key): Use aes128 interface.
+	* umac32.c (umac32_digest): Likewise.
+	* umac64.c (umac64_digest): Likewise.
+	* umac96.c (umac96_digest): Likewise.
+	* umac128.c (umac128_digest): Likewise.
+
 2013-06-25  Niels Möller  <nisse@lysator.liu.se>
 
 	* aes-meta.c: Deleted file.
diff --git a/umac-set-key.c b/umac-set-key.c
index 03057a460f8d9e075fd6ad041e98723bb35a3571..63a1a7e3ffa034acf5226b967e35e36f403442dc 100644
--- a/umac-set-key.c
+++ b/umac-set-key.c
@@ -32,7 +32,7 @@
 #include "macros.h"
 
 static void
-umac_kdf (struct aes_ctx *aes, unsigned index, unsigned length, uint8_t *dst)
+umac_kdf (struct aes128_ctx *aes, unsigned index, unsigned length, uint8_t *dst)
 {
   uint8_t block[AES_BLOCK_SIZE];
   uint64_t count;
@@ -41,12 +41,12 @@ umac_kdf (struct aes_ctx *aes, unsigned index, unsigned length, uint8_t *dst)
        length -= AES_BLOCK_SIZE, dst += AES_BLOCK_SIZE, count++)
     {
       WRITE_UINT64 (block + 8, count);
-      aes_encrypt (aes, AES_BLOCK_SIZE, dst, block);
+      aes128_encrypt (aes, AES_BLOCK_SIZE, dst, block);
     }
   if (length > 0)
     {
       WRITE_UINT64 (block + 8, count);
-      aes_encrypt (aes, AES_BLOCK_SIZE, block, block);
+      aes128_encrypt (aes, AES_BLOCK_SIZE, block, block);
       memcpy (dst, block, length);
     }
 }
@@ -71,12 +71,12 @@ umac_kdf (struct aes_ctx *aes, unsigned index, unsigned length, uint8_t *dst)
 void
 _umac_set_key (uint32_t *l1_key, uint32_t *l2_key,
 	       uint64_t *l3_key1, uint32_t *l3_key2,
-	       struct aes_ctx *aes, const uint8_t *key, unsigned n)
+	       struct aes128_ctx *aes, const uint8_t *key, unsigned n)
 {
   unsigned size;
   uint8_t buffer[UMAC_KEY_SIZE];
 
-  aes_set_encrypt_key (aes, UMAC_KEY_SIZE, key);
+  aes128_set_encrypt_key (aes, key);
 
   size = UMAC_DATA_SIZE / 4 + 4*(n-1);
   umac_kdf (aes, 1, size * sizeof(uint32_t), (uint8_t *) l1_key);
@@ -94,5 +94,5 @@ _umac_set_key (uint32_t *l1_key, uint32_t *l2_key,
   umac_kdf (aes, 4, n * sizeof(uint32_t), (uint8_t *) l3_key2);
 
   umac_kdf (aes, 0, UMAC_KEY_SIZE, buffer);
-  aes_set_encrypt_key (aes, UMAC_KEY_SIZE, buffer);
+  aes128_set_encrypt_key (aes, buffer);
 }
diff --git a/umac.h b/umac.h
index b6cec8aa656f7997c1511311c12d7981c7c1428e..ab66d9a7300b98cfb9e5dd5ff0dd5d88c92843be 100644
--- a/umac.h
+++ b/umac.h
@@ -61,7 +61,7 @@ extern "C" {
 #include "nettle-types.h"
 #include "aes.h"
 
-#define UMAC_KEY_SIZE 16
+#define UMAC_KEY_SIZE AES128_KEY_SIZE
 #define UMAC32_DIGEST_SIZE 4
 #define UMAC64_DIGEST_SIZE 8
 #define UMAC96_DIGEST_SIZE 12
@@ -76,7 +76,7 @@ extern "C" {
   uint64_t l3_key1[8*(n)];				\
   uint32_t l3_key2[(n)];				\
   /* AES cipher for encrypting the nonce */		\
-  struct aes_ctx pdf_key;				\
+  struct aes128_ctx pdf_key;				\
   /* The l2_state consists of 2*n uint64_t, for poly64	\
      and poly128 hashing, followed by n additional	\
      uint64_t used as an input buffer. */		\
@@ -192,7 +192,7 @@ umac128_digest (struct umac128_ctx *ctx,
 void
 _umac_set_key (uint32_t *l1_key, uint32_t *l2_key,
 	       uint64_t *l3_key1, uint32_t *l3_key2,
-	       struct aes_ctx *pad, const uint8_t *key, unsigned n);
+	       struct aes128_ctx *pad, const uint8_t *key, unsigned n);
 
 uint64_t
 _umac_nh (const uint32_t *key, unsigned length, const uint8_t *msg);
diff --git a/umac128.c b/umac128.c
index 3ce0c05ed8fd6d58cb7375e11416e2fbddacf147..56d15d759e4a3f79e58b01ca77e841e1d7d9a549 100644
--- a/umac128.c
+++ b/umac128.c
@@ -103,8 +103,8 @@ umac128_digest (struct umac128_ctx *ctx,
     }
   assert (ctx->count > 0);
 
-  aes_encrypt (&ctx->pdf_key, AES_BLOCK_SIZE,
-	       (uint8_t *) tag, ctx->nonce);
+  aes128_encrypt (&ctx->pdf_key, AES_BLOCK_SIZE,
+		  (uint8_t *) tag, ctx->nonce);
 
   INCREMENT (ctx->nonce_length, ctx->nonce);
 
diff --git a/umac32.c b/umac32.c
index c266a4166dc6ac43aec9e1effed723f5cfa9d358..8d6eb7dccd320c321552f4d2c5406e88554f3b96 100644
--- a/umac32.c
+++ b/umac32.c
@@ -100,8 +100,8 @@ umac32_digest (struct umac32_ctx *ctx,
   assert (ctx->count > 0);
   if ( !(ctx->nonce_low & _UMAC_NONCE_CACHED))
     {
-      aes_encrypt (&ctx->pdf_key, AES_BLOCK_SIZE,
-		   (uint8_t *) ctx->pad_cache, ctx->nonce);
+      aes128_encrypt (&ctx->pdf_key, AES_BLOCK_SIZE,
+		      (uint8_t *) ctx->pad_cache, ctx->nonce);
       ctx->nonce_low |= _UMAC_NONCE_CACHED;
     }
 
diff --git a/umac64.c b/umac64.c
index 133f2783588ba84e3aa8deb16c7ea017522bf707..01b9dc81525935e94494304b15fc29fb59c64f7e 100644
--- a/umac64.c
+++ b/umac64.c
@@ -103,8 +103,8 @@ umac64_digest (struct umac64_ctx *ctx,
   assert (ctx->count > 0);
   if ( !(ctx->nonce_low & _UMAC_NONCE_CACHED))
     {
-      aes_encrypt (&ctx->pdf_key, AES_BLOCK_SIZE,
-		   (uint8_t *) ctx->pad_cache, ctx->nonce);
+      aes128_encrypt (&ctx->pdf_key, AES_BLOCK_SIZE,
+		      (uint8_t *) ctx->pad_cache, ctx->nonce);
       ctx->nonce_low |= _UMAC_NONCE_CACHED;
     }
   pad = ctx->pad_cache + 2*(ctx->nonce_low & 1);
diff --git a/umac96.c b/umac96.c
index 3c7905a9a4df9c52e95fac5e81632f43ac119f71..0dc51418db08e1c1316dbef818bc0069a8171936 100644
--- a/umac96.c
+++ b/umac96.c
@@ -101,8 +101,8 @@ umac96_digest (struct umac96_ctx *ctx,
     }
   assert (ctx->count > 0);
 
-  aes_encrypt (&ctx->pdf_key, AES_BLOCK_SIZE,
-	       (uint8_t *) tag, ctx->nonce);
+  aes128_encrypt (&ctx->pdf_key, AES_BLOCK_SIZE,
+		  (uint8_t *) tag, ctx->nonce);
 
   INCREMENT (ctx->nonce_length, ctx->nonce);