diff --git a/include/polarssl/pk.h b/include/polarssl/pk.h
index 169753d..16aac43 100644
--- a/include/polarssl/pk.h
+++ b/include/polarssl/pk.h
@@ -37,11 +37,40 @@
 typedef enum {
     POLARSSL_PK_NONE=0,
     POLARSSL_PK_RSA,
-    POLARSSL_PK_ECDSA,
     POLARSSL_PK_ECKEY,
     POLARSSL_PK_ECKEY_DH,
 } pk_type_t;
 
+/**
+ * \brief           Public key container
+ */
+typedef struct
+{
+    pk_type_t   type;   /**< Public key type */
+    void *      data;   /**< Public key data */
+} pk_context;
+
+/**
+ * \brief           Initialize a pk_context (as NONE)
+ */
+void pk_init( pk_context *ctx );
+
+/**
+ * \brief           Free a pk_context
+ */
+void pk_free( pk_context *ctx );
+
+/**
+ * \brief           Set a pk_context to a given type
+ *
+ * \param ctx       Context to initialize
+ * \param type      Type of key
+ *
+ * \return          O on success, -1 on memory allocation error
+ *                  TODO: use appropriate error constant
+ */
+int pk_set_type( pk_context *ctx, pk_type_t type );
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt
index 948737d..3fa76a9 100644
--- a/library/CMakeLists.txt
+++ b/library/CMakeLists.txt
@@ -39,6 +39,7 @@
      pkcs5.c
      pkcs11.c
      pkcs12.c
+     pk.c
      rsa.c
      sha1.c
      sha256.c
diff --git a/library/Makefile b/library/Makefile
index f670dcc..48c3bdc 100644
--- a/library/Makefile
+++ b/library/Makefile
@@ -49,6 +49,7 @@
 		oid.o									\
 		padlock.o	pbkdf2.o	pem.o			\
 		pkcs5.o		pkcs11.o	pkcs12.o		\
+		pk.o									\
 		rsa.o		sha1.o		sha256.o		\
 		sha512.o	ssl_cache.o	ssl_cli.o		\
 		ssl_srv.o   ssl_ciphersuites.o			\
diff --git a/library/pk.c b/library/pk.c
new file mode 100644
index 0000000..a5f8d6b
--- /dev/null
+++ b/library/pk.c
@@ -0,0 +1,93 @@
+/*
+ *  Public Key abstraction layer
+ *
+ *  Copyright (C) 2006-2013, Brainspark B.V.
+ *
+ *  This file is part of PolarSSL (http://www.polarssl.org)
+ *  Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
+ *
+ *  All rights reserved.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License along
+ *  with this program; if not, write to the Free Software Foundation, Inc.,
+ *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#include "polarssl/config.h"
+
+#include "polarssl/rsa.h"
+#include "polarssl/ecp.h"
+#include "polarssl/pk.h"
+
+#include <stdlib.h>
+
+/*
+ * Initialise a pk_context
+ */
+void pk_init( pk_context *ctx )
+{
+    if( ctx == NULL )
+        return;
+
+    ctx->type = POLARSSL_PK_NONE;
+    ctx->data = NULL;
+}
+
+/*
+ * Free (the components of) a pk_context
+ */
+void pk_free( pk_context *ctx )
+{
+    if( ctx == NULL )
+        return;
+
+    switch( ctx->type )
+    {
+        case POLARSSL_PK_NONE:
+            break;
+
+        case POLARSSL_PK_RSA:
+            rsa_free( ctx->data );
+            break;
+
+        case POLARSSL_PK_ECKEY:
+        case POLARSSL_PK_ECKEY_DH:
+            ecp_keypair_free( ctx->data );
+            break;
+    }
+
+    ctx->type = POLARSSL_PK_NONE;
+    ctx->data = NULL;
+}
+
+/*
+ * Set a pk_context to a given type
+ */
+int pk_set_type( pk_context *ctx, pk_type_t type )
+{
+    size_t size = type == POLARSSL_PK_RSA       ? sizeof( rsa_context )
+                : type == POLARSSL_PK_ECKEY     ? sizeof( ecp_keypair )
+                : type == POLARSSL_PK_ECKEY_DH  ? sizeof( ecp_keypair )
+                : 0;
+
+    if( size == 0 )
+        return( 0 );
+
+    if( ( ctx->data = malloc( size ) ) == NULL )
+        return( -1 );
+
+    memset( ctx->data, 0, size );
+    ctx->type = type;
+
+    return( 0 );
+}
