diff --git a/include/polarssl/ecdsa.h b/include/polarssl/ecdsa.h
index d61e82c..15b90e6 100644
--- a/include/polarssl/ecdsa.h
+++ b/include/polarssl/ecdsa.h
@@ -31,6 +31,8 @@
 
 /**
  * \brief           ECDSA context structure
+ *
+ * \note Purposefully begins with the same members as struct ecp_keypair.
  */
 typedef struct
 {
diff --git a/include/polarssl/pk.h b/include/polarssl/pk.h
index df3fc44..2f70085 100644
--- a/include/polarssl/pk.h
+++ b/include/polarssl/pk.h
@@ -33,6 +33,10 @@
 #include "rsa.h"
 #endif
 
+#if defined(POLARSSL_ECDSA_C)
+#include "ecdsa.h"
+#endif
+
 #define POLARSSL_ERR_PK_MALLOC_FAILED       -0x2F80  /**< Memory alloation failed. */
 #define POLARSSL_ERR_PK_TYPE_MISMATCH       -0x2F00  /**< Type mismatch, eg attempt to use a RSA key as EC, or to modify key type */
 
@@ -107,6 +111,33 @@
  */
 int pk_set_type( pk_context *ctx, pk_type_t type );
 
+#if defined(POLARSSL_ECDSA_C)
+/**
+ * \brief           Convert a generic EC key into an ECDSA context
+ *
+ * \param ctx       Context to convert
+ *
+ * \return          0 on success, or
+ *                  POLARSSL_ERR_PK_MALLOC_FAILED or
+ *                  POLARSSL_ERR_PK_TYPE_MISMATCH.
+ */
+int pk_ec_to_ecdsa( pk_context *ctx );
+
+/**
+ * \brief           Tell if a PK context can be used for ECDSA
+ *
+ * \param ctx       Context to check
+ *
+ * \return          0 if context cannot be used for ECDSA,
+ *                  1 otherwise
+ */
+static inline int pk_can_ecdsa( pk_context ctx )
+{
+    return( ctx.type == POLARSSL_PK_ECKEY ||
+            ctx.type == POLARSSL_PK_ECDSA );
+}
+#endif /* POLARSSL_ECDSA_C */
+
 #if defined(POLARSSL_RSA_C)
 /**
  * \brief           Wrap a RSA context in a PK context
diff --git a/library/pk.c b/library/pk.c
index 3755fbc..c5583c3 100644
--- a/library/pk.c
+++ b/library/pk.c
@@ -132,6 +132,42 @@
     return( 0 );
 }
 
+#if defined(POLARSSL_ECDSA_C)
+/*
+ * Convert generic EC context to ECDSA
+ */
+int pk_ec_to_ecdsa( pk_context *ctx )
+{
+    ecp_keypair *eckey;
+    ecdsa_context *ecdsa;
+
+    if( ctx->type == POLARSSL_PK_ECDSA )
+        return( 0 );
+
+    if( ctx->type != POLARSSL_PK_ECKEY )
+        return( POLARSSL_ERR_PK_TYPE_MISMATCH );
+
+    eckey = (ecp_keypair *) ctx->data;
+
+    if( ( ecdsa = polarssl_malloc( sizeof( ecdsa_context ) ) ) == NULL )
+        return( POLARSSL_ERR_PK_MALLOC_FAILED );
+
+    ecdsa_init( ecdsa );
+
+    /* struct ecdsa_context begins the same as struct ecp_keypair */
+    memcpy( ecdsa, eckey, sizeof( ecp_keypair ) );
+
+    if( ! ctx->dont_free )
+        polarssl_free( eckey );
+
+    ctx->dont_free = 0;
+    ctx->type = POLARSSL_PK_ECDSA;
+    ctx->data = ecdsa;
+
+    return( 0 );
+}
+#endif /* POLARSSL_ECDSA_C */
+
 #if defined(POLARSSL_RSA_C)
 /*
  * Wrap an RSA context in a PK context
