diff --git a/include/polarssl/ecp.h b/include/polarssl/ecp.h
index a875d7e..cd4dd9b 100644
--- a/include/polarssl/ecp.h
+++ b/include/polarssl/ecp.h
@@ -115,6 +115,12 @@
  */
 #define POLARSSL_ECP_WINDOW_SIZE    7   /**< Maximum NAF width used. */
 
+/*
+ * Point formats
+ */
+#define POLARSSL_ECP_PF_UNCOMPRESSED    0   /**< Uncompressed point format */
+#define POLARSSL_ECP_PF_COMPRESSED      1   /**< Compressed point format */
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -210,17 +216,18 @@
                            const char *gx, const char *gy, const char *n);
 
 /**
- * \brief           Export a point into unsigned binary data, uncompressed
+ * \brief           Export a point into unsigned binary data
  *
  * \param grp       Group the point belongs to
  * \param P         Point to export
+ * \param format    Point format, should be a POLARSSL_ECP_PF_XXX macro
  * \param olen      Length of the actual ouput
  * \param buf       Output buffer
  * \param buflen    Length of the output buffer
  *
  * \return          0 if successful, or POLARSSL_ERR_ECP_GENERIC
  */
-int ecp_write_binary( const ecp_group *grp, const ecp_point *P,
+int ecp_write_binary( const ecp_group *grp, const ecp_point *P, int format,
                       size_t *olen, unsigned char *buf, size_t buflen );
 
 /**
diff --git a/library/ecp.c b/library/ecp.c
index 854da58..6501fbe 100644
--- a/library/ecp.c
+++ b/library/ecp.c
@@ -174,16 +174,20 @@
 }
 
 /*
- * Export a point into unsigned binary data, uncompressed format (SEC1 2.3.3)
+ * Export a point into unsigned binary data (SEC1 2.3.3)
  */
-int ecp_write_binary( const ecp_group *grp, const ecp_point *P,
+int ecp_write_binary( const ecp_group *grp, const ecp_point *P, int format,
                       size_t *olen, unsigned char *buf, size_t buflen )
 {
     int ret;
     size_t plen;
 
+    if( format != POLARSSL_ECP_PF_UNCOMPRESSED &&
+        format != POLARSSL_ECP_PF_COMPRESSED )
+        return( POLARSSL_ERR_ECP_GENERIC );
+
     /*
-     * Case P == 0
+     * Common case: P == 0
      */
     if( mpi_cmp_int( &P->Z, 0 ) == 0 )
     {
@@ -197,14 +201,28 @@
     }
 
     plen = mpi_size( &grp->P );
-    *olen = 2 * plen + 1;
 
-    if( buflen < *olen )
-        return( POLARSSL_ERR_ECP_GENERIC );
+    if( format == POLARSSL_ECP_PF_UNCOMPRESSED )
+    {
+        *olen = 2 * plen + 1;
 
-    buf[0] = 0x04;
-    MPI_CHK( mpi_write_binary( &P->X, buf + 1, plen ) );
-    MPI_CHK( mpi_write_binary( &P->Y, buf + 1 + plen, plen ) );
+        if( buflen < *olen )
+            return( POLARSSL_ERR_ECP_GENERIC );
+
+        buf[0] = 0x04;
+        MPI_CHK( mpi_write_binary( &P->X, buf + 1, plen ) );
+        MPI_CHK( mpi_write_binary( &P->Y, buf + 1 + plen, plen ) );
+    }
+    else if( format == POLARSSL_ECP_PF_COMPRESSED )
+    {
+        *olen = plen + 1;
+
+        if( buflen < *olen )
+            return( POLARSSL_ERR_ECP_GENERIC );
+
+        buf[0] = 0x02 + mpi_get_bit( &P->Y, 0 );
+        MPI_CHK( mpi_write_binary( &P->X, buf + 1, plen ) );
+    }
 
 cleanup:
     return( ret );
diff --git a/tests/suites/test_suite_ecp.data b/tests/suites/test_suite_ecp.data
index 20ae3cd..e84ac04 100644
--- a/tests/suites/test_suite_ecp.data
+++ b/tests/suites/test_suite_ecp.data
@@ -133,17 +133,35 @@
 ECP small check pubkey #10
 ecp_small_check_pub:10:25:1:POLARSSL_ERR_ECP_GENERIC
 
-ECP write binary #1 (zero, buffer just fits)
-ecp_write_binary:SECP192R1:"01":"01":"00":"00":1:0
+ECP write binary #0 (zero, bad format)
+ecp_write_binary:SECP192R1:"01":"01":"00":UNKNOWN:"00":1:POLARSSL_ERR_ECP_GENERIC
+
+ECP write binary #1 (zero, uncompressed, buffer just fits)
+ecp_write_binary:SECP192R1:"01":"01":"00":UNCOMPRESSED:"00":1:0
 
 ECP write binary #2 (zero, buffer too small)
-ecp_write_binary:SECP192R1:"01":"01":"00":"00":0:POLARSSL_ERR_ECP_GENERIC
+ecp_write_binary:SECP192R1:"01":"01":"00":UNCOMPRESSED:"00":0:POLARSSL_ERR_ECP_GENERIC
 
-ECP write binary #3 (non-zero, buffer just fits)
-ecp_write_binary:SECP192R1:"48d8082a3a1e3112bc03a8ef2f6d40d0a77a6f8e00cc9933":"6ceed4d7cba482e288669ee1b6415626d6f34d28501e060c":"01":"0448d8082a3a1e3112bc03a8ef2f6d40d0a77a6f8e00cc99336ceed4d7cba482e288669ee1b6415626d6f34d28501e060c":49:0
+ECP write binary #3 (non-zero, uncompressed, buffer just fits)
+ecp_write_binary:SECP192R1:"48d8082a3a1e3112bc03a8ef2f6d40d0a77a6f8e00cc9933":"6ceed4d7cba482e288669ee1b6415626d6f34d28501e060c":"01":UNCOMPRESSED:"0448d8082a3a1e3112bc03a8ef2f6d40d0a77a6f8e00cc99336ceed4d7cba482e288669ee1b6415626d6f34d28501e060c":49:0
 
-ECP write binary #4 (non-zero, buffer too small)
-ecp_write_binary:SECP192R1:"48d8082a3a1e3112bc03a8ef2f6d40d0a77a6f8e00cc9933":"6ceed4d7cba482e288669ee1b6415626d6f34d28501e060c":"01":"0448d8082a3a1e3112bc03a8ef2f6d40d0a77a6f8e00cc99336ceed4d7cba482e288669ee1b6415626d6f34d28501e060c":48:POLARSSL_ERR_ECP_GENERIC
+ECP write binary #4 (non-zero, uncompressed, buffer too small)
+ecp_write_binary:SECP192R1:"48d8082a3a1e3112bc03a8ef2f6d40d0a77a6f8e00cc9933":"6ceed4d7cba482e288669ee1b6415626d6f34d28501e060c":"01":UNCOMPRESSED:"0448d8082a3a1e3112bc03a8ef2f6d40d0a77a6f8e00cc99336ceed4d7cba482e288669ee1b6415626d6f34d28501e060c":48:POLARSSL_ERR_ECP_GENERIC
+
+ECP write binary #5 (zero, compressed, buffer just fits)
+ecp_write_binary:SECP192R1:"01":"01":"00":COMPRESSED:"00":1:0
+
+ECP write binary #6 (zero, buffer too small)
+ecp_write_binary:SECP192R1:"01":"01":"00":COMPRESSED:"00":0:POLARSSL_ERR_ECP_GENERIC
+
+ECP write binary #7 (even, compressed, buffer just fits)
+ecp_write_binary:SECP192R1:"48d8082a3a1e3112bc03a8ef2f6d40d0a77a6f8e00cc9933":"6ceed4d7cba482e288669ee1b6415626d6f34d28501e060c":"01":COMPRESSED:"0248d8082a3a1e3112bc03a8ef2f6d40d0a77a6f8e00cc9933":25:0
+
+ECP write binary #8 (even, compressed, buffer too small)
+ecp_write_binary:SECP192R1:"48d8082a3a1e3112bc03a8ef2f6d40d0a77a6f8e00cc9933":"6ceed4d7cba482e288669ee1b6415626d6f34d28501e060c":"01":COMPRESSED:"0248d8082a3a1e3112bc03a8ef2f6d40d0a77a6f8e00cc9933":24:POLARSSL_ERR_ECP_GENERIC
+
+ECP write binary #7 (odd, compressed, buffer just fits)
+ecp_write_binary:SECP192R1:"48d8082a3a1e3112bc03a8ef2f6d40d0a77a6f8e00cc9933":"93112b28345b7d1d7799611e49bea9d8290cb2d7afe1f9f3":"01":COMPRESSED:"0348d8082a3a1e3112bc03a8ef2f6d40d0a77a6f8e00cc9933":25:0
 
 ECP mod p192 readable
 ecp_fast_mod:SECP192R1:"000000000000010500000000000001040000000000000103000000000000010200000000000001010000000000000100"
diff --git a/tests/suites/test_suite_ecp.function b/tests/suites/test_suite_ecp.function
index 1e50499..b273a70 100644
--- a/tests/suites/test_suite_ecp.function
+++ b/tests/suites/test_suite_ecp.function
@@ -225,7 +225,7 @@
 END_CASE
 
 BEGIN_CASE
-ecp_write_binary:id:x:y:z:out:blen:ret
+ecp_write_binary:id:x:y:z:format:out:blen:ret
 {
     ecp_group grp;
     ecp_point P;
@@ -243,13 +243,13 @@
     TEST_ASSERT( mpi_read_string( &P.Y, 16, {y} ) == 0 );
     TEST_ASSERT( mpi_read_string( &P.Z, 16, {z} ) == 0 );
 
-    TEST_ASSERT( ecp_write_binary( &grp, &P, &olen, buf, {blen} ) == {ret} );
+#define POLARSSL_ECP_PF_UNKNOWN     -1
+    TEST_ASSERT( ecp_write_binary( &grp, &P, POLARSSL_ECP_PF_{format},
+                                   &olen, buf, {blen} ) == {ret} );
 
     if( {ret} == 0 )
     {
-        TEST_ASSERT( olen == strlen({out}) / 2 );
-
-        hexify( str, buf, {blen} );
+        hexify( str, buf, olen );
         TEST_ASSERT( strcasecmp( (char *) str, {out} ) == 0 );
     }
 
