diff --git a/include/polarssl/config.h b/include/polarssl/config.h
index 41013d8..119dc67 100644
--- a/include/polarssl/config.h
+++ b/include/polarssl/config.h
@@ -735,7 +735,7 @@
  * Enable the generic cipher layer.
  *
  * Module:  library/cipher.c
- * Caller:
+ * Caller:  library/ssl_tls.c
  *
  * Uncomment to enable generic cipher wrappers.
  */
@@ -1226,7 +1226,7 @@
  * Caller:  library/ssl_cli.c
  *          library/ssl_srv.c
  *
- * Requires: POLARSSL_MD5_C, POLARSSL_SHA1_C
+ * Requires: POLARSSL_MD5_C, POLARSSL_SHA1_C, POLARSSL_CIPHER_C
  *
  * This module is required for SSL/TLS.
  */
@@ -1443,7 +1443,7 @@
 #endif
 
 #if defined(POLARSSL_SSL_TLS_C) && ( !defined(POLARSSL_MD5_C) ||        \
-    !defined(POLARSSL_SHA1_C) )
+    !defined(POLARSSL_SHA1_C) || !defined(POLARSSL_CIPHER_C) )
 #error "POLARSSL_SSL_TLS_C defined, but not all prerequisites"
 #endif
 
@@ -1451,6 +1451,11 @@
 #error "POLARSSL_SSL_SRV_C defined, but not all prerequisites"
 #endif
 
+#if defined(POLARSSL_SSL_SESSION_TICKETS) && defined(POLARSSL_SSL_TLS_C) && \
+    ( !defined(POLARSSL_AES_C) || !defined(POLARSSL_SHA256_C) )
+#error "POLARSSL_SSL_SESSION_TICKETS_C defined, but not all prerequisites"
+#endif
+
 #if defined(POLARSSL_X509_PARSE_C) && ( !defined(POLARSSL_BIGNUM_C) ||  \
     !defined(POLARSSL_OID_C) || !defined(POLARSSL_ASN1_PARSE_C) ||      \
     !defined(POLARSSL_RSA_C) )
diff --git a/include/polarssl/ecdsa.h b/include/polarssl/ecdsa.h
index e709b40..bc1afbb 100644
--- a/include/polarssl/ecdsa.h
+++ b/include/polarssl/ecdsa.h
@@ -39,7 +39,6 @@
     ecp_point Q;        /*!<  public signature key          */
     mpi r;              /*!<  first integer from signature  */
     mpi s;              /*!<  second integer from signature */
-    int point_format;   /*!<  format for point export       */
 }
 ecdsa_context;
 
diff --git a/include/polarssl/oid.h b/include/polarssl/oid.h
index 0c3dab2..ebb5bad 100644
--- a/include/polarssl/oid.h
+++ b/include/polarssl/oid.h
@@ -315,6 +315,7 @@
  */
 typedef struct {
     const char *asn1;               /*!< OID ASN.1 representation       */
+    size_t asn1_len;                /*!< length of asn1                 */
     const char *name;               /*!< official name (e.g. from RFC)  */
     const char *description;        /*!< human friendly description     */
 } oid_descriptor_t;
diff --git a/include/polarssl/ssl.h b/include/polarssl/ssl.h
index 8f72710..7a468c4 100644
--- a/include/polarssl/ssl.h
+++ b/include/polarssl/ssl.h
@@ -428,9 +428,8 @@
 #if defined(POLARSSL_ECDH_C)
     ecdh_context ecdh_ctx;              /*!<  ECDH key exchange       */
 #endif
+#if defined(POLARSSL_ECDH_C) || defined(POLARSSL_ECDSA_C)
     int ec_curve;                       /*!<  Selected elliptic curve */
-#if defined(POLARSSL_ECP_C)
-    int ec_point_format;                /*!<  Client supported format */
 #endif
 
     /*
diff --git a/library/asn1parse.c b/library/asn1parse.c
index f6b79ef..ff566c9 100644
--- a/library/asn1parse.c
+++ b/library/asn1parse.c
@@ -220,7 +220,7 @@
     if( ( ret = asn1_get_tag( p, end, len, ASN1_BIT_STRING ) ) != 0 )
         return( ret );
 
-    if( --*len < 1 || *(*p)++ != 0 )
+    if( (*len)-- < 2 || *(*p)++ != 0 )
         return( POLARSSL_ERR_ASN1_INVALID_DATA );
 
     return( 0 );
@@ -292,8 +292,11 @@
             ASN1_CONSTRUCTED | ASN1_SEQUENCE ) ) != 0 )
         return( ret );
 
-    end = *p + len;
+    if( ( end - *p ) < 1 )
+        return( POLARSSL_ERR_ASN1_OUT_OF_DATA );
+
     alg->tag = **p;
+    end = *p + len;
 
     if( ( ret = asn1_get_tag( p, end, &alg->len, ASN1_OID ) ) != 0 )
         return( ret );
diff --git a/library/ecdh.c b/library/ecdh.c
index 301275a..d76596e 100644
--- a/library/ecdh.c
+++ b/library/ecdh.c
@@ -155,8 +155,6 @@
 {
     int ret;
 
-    ecdh_init( ctx );
-
     if( ( ret = ecp_tls_read_group( &ctx->grp, buf, end - *buf ) ) != 0 )
         return( ret );
 
diff --git a/library/ecdsa.c b/library/ecdsa.c
index 1074850..e87bc65 100644
--- a/library/ecdsa.c
+++ b/library/ecdsa.c
@@ -197,8 +197,6 @@
     ecp_point_init( &ctx->Q );
     mpi_init( &ctx->r );
     mpi_init( &ctx->s );
-    mpi_init( &ctx->d );
-    ctx->point_format = POLARSSL_ECP_PF_UNCOMPRESSED;
 }
 
 /*
@@ -211,8 +209,6 @@
     ecp_point_free( &ctx->Q );
     mpi_free( &ctx->r );
     mpi_free( &ctx->s );
-    mpi_free( &ctx->d );
-    ctx->point_format = POLARSSL_ECP_PF_UNCOMPRESSED;
 }
 
 #if defined(POLARSSL_SELF_TEST)
diff --git a/library/oid.c b/library/oid.c
index 750ece8..c5608c3 100644
--- a/library/oid.c
+++ b/library/oid.c
@@ -35,6 +35,11 @@
 #include <stdio.h>
 
 /*
+ * Macro to automatically add the size of #define'd OIDs
+ */
+#define ADD_LEN(s)      s, OID_SIZE(s)
+
+/*
  * Macro to generate an internal function for oid_XXX_from_asn1() (used by
  * the other functions)
  */
@@ -135,7 +140,7 @@
     cur = (const oid_descriptor_t *) p;
     while( cur->asn1 != NULL )
     {
-        if( strlen( cur->asn1 ) == len &&
+        if( cur->asn1_len == len &&
             memcmp( cur->asn1, oid, len ) == 0 )
         {
             return( cur );
@@ -159,35 +164,35 @@
 static const oid_x520_attr_t oid_x520_attr_type[] =
 {
     {
-        { OID_AT_CN,          "id-at-commonName",               "Common Name" },
+        { ADD_LEN( OID_AT_CN ),          "id-at-commonName",               "Common Name" },
         "CN",
     },
     {
-        { OID_AT_COUNTRY,     "id-at-countryName",              "Country" },
+        { ADD_LEN( OID_AT_COUNTRY ),     "id-at-countryName",              "Country" },
         "C",
     },
     {
-        { OID_AT_LOCALITY,    "id-at-locality",                 "Locality" },
+        { ADD_LEN( OID_AT_LOCALITY ),    "id-at-locality",                 "Locality" },
         "L",
     },
     {
-        { OID_AT_STATE,       "id-at-state",                    "State" },
+        { ADD_LEN( OID_AT_STATE ),       "id-at-state",                    "State" },
         "ST",
     },
     {
-        { OID_AT_ORGANIZATION,"id-at-organizationName",         "Organization" },
+        { ADD_LEN( OID_AT_ORGANIZATION ),"id-at-organizationName",         "Organization" },
         "O",
     },
     {
-        { OID_AT_ORG_UNIT,    "id-at-organizationalUnitName",   "Org Unit" },
+        { ADD_LEN( OID_AT_ORG_UNIT ),    "id-at-organizationalUnitName",   "Org Unit" },
         "OU",
     },
     {
-        { OID_PKCS9_EMAIL,    "emailAddress",                   "E-mail address" },
+        { ADD_LEN( OID_PKCS9_EMAIL ),    "emailAddress",                   "E-mail address" },
         "emailAddress",
     },
     {
-        { NULL, NULL, NULL },
+        { NULL, 0, NULL, NULL },
         NULL,
     }
 };
@@ -207,27 +212,27 @@
 static const oid_x509_ext_t oid_x509_ext[] =
 {
     {
-        { OID_BASIC_CONSTRAINTS,    "id-ce-basicConstraints",   "Basic Constraints" },
+        { ADD_LEN( OID_BASIC_CONSTRAINTS ),    "id-ce-basicConstraints",   "Basic Constraints" },
         EXT_BASIC_CONSTRAINTS,
     },
     {
-        { OID_KEY_USAGE,            "id-ce-keyUsage",           "Key Usage" },
+        { ADD_LEN( OID_KEY_USAGE ),            "id-ce-keyUsage",           "Key Usage" },
         EXT_KEY_USAGE,
     },
     {
-        { OID_EXTENDED_KEY_USAGE,   "id-ce-keyUsage",           "Extended Key Usage" },
+        { ADD_LEN( OID_EXTENDED_KEY_USAGE ),   "id-ce-keyUsage",           "Extended Key Usage" },
         EXT_EXTENDED_KEY_USAGE,
     },
     {
-        { OID_SUBJECT_ALT_NAME,     "id-ce-subjectAltName",     "Subject Alt Name" },
+        { ADD_LEN( OID_SUBJECT_ALT_NAME ),     "id-ce-subjectAltName",     "Subject Alt Name" },
         EXT_SUBJECT_ALT_NAME,
     },
     {
-        { OID_NS_CERT_TYPE,         "id-netscape-certtype",     "Netscape Certificate Type" },
+        { ADD_LEN( OID_NS_CERT_TYPE ),         "id-netscape-certtype",     "Netscape Certificate Type" },
         EXT_NS_CERT_TYPE,
     },
     {
-        { NULL, NULL, NULL },
+        { NULL, 0, NULL, NULL },
         0,
     },
 };
@@ -237,13 +242,13 @@
 
 static const oid_descriptor_t oid_ext_key_usage[] =
 {
-    { OID_SERVER_AUTH,      "id-kp-serverAuth",      "TLS Web Server Authentication" },
-    { OID_CLIENT_AUTH,      "id-kp-clientAuth",      "TLS Web Client Authentication" },
-    { OID_CODE_SIGNING,     "id-kp-codeSigning",     "Code Signing" },
-    { OID_EMAIL_PROTECTION, "id-kp-emailProtection", "E-mail Protection" },
-    { OID_TIME_STAMPING,    "id-kp-timeStamping",    "Time Stamping" },
-    { OID_OCSP_SIGNING,     "id-kp-OCSPSigning",     "OCSP Signing" },
-    { NULL, NULL, NULL },
+    { ADD_LEN( OID_SERVER_AUTH ),      "id-kp-serverAuth",      "TLS Web Server Authentication" },
+    { ADD_LEN( OID_CLIENT_AUTH ),      "id-kp-clientAuth",      "TLS Web Client Authentication" },
+    { ADD_LEN( OID_CODE_SIGNING ),     "id-kp-codeSigning",     "Code Signing" },
+    { ADD_LEN( OID_EMAIL_PROTECTION ), "id-kp-emailProtection", "E-mail Protection" },
+    { ADD_LEN( OID_TIME_STAMPING ),    "id-kp-timeStamping",    "Time Stamping" },
+    { ADD_LEN( OID_OCSP_SIGNING ),     "id-kp-OCSPSigning",     "OCSP Signing" },
+    { NULL, 0, NULL, NULL },
 };
 
 FN_OID_TYPED_FROM_ASN1(oid_descriptor_t, ext_key_usage, oid_ext_key_usage);
@@ -263,63 +268,63 @@
 static const oid_sig_alg_t oid_sig_alg[] =
 {
     {
-        { OID_PKCS1_MD2,        "md2WithRSAEncryption",     "RSA with MD2" },
+        { ADD_LEN( OID_PKCS1_MD2 ),        "md2WithRSAEncryption",     "RSA with MD2" },
         POLARSSL_MD_MD2,      POLARSSL_PK_RSA,
     },
     {
-        { OID_PKCS1_MD4,        "md4WithRSAEncryption",     "RSA with MD4" },
+        { ADD_LEN( OID_PKCS1_MD4 ),        "md4WithRSAEncryption",     "RSA with MD4" },
         POLARSSL_MD_MD4,      POLARSSL_PK_RSA,
     },
     {
-        { OID_PKCS1_MD5,        "md5WithRSAEncryption",     "RSA with MD5" },
+        { ADD_LEN( OID_PKCS1_MD5 ),        "md5WithRSAEncryption",     "RSA with MD5" },
         POLARSSL_MD_MD5,      POLARSSL_PK_RSA,
     },
     {
-        { OID_PKCS1_SHA1,       "sha-1WithRSAEncryption",   "RSA with SHA1" },
+        { ADD_LEN( OID_PKCS1_SHA1 ),       "sha-1WithRSAEncryption",   "RSA with SHA1" },
         POLARSSL_MD_SHA1,     POLARSSL_PK_RSA,
     },
     {
-        { OID_PKCS1_SHA224,     "sha224WithRSAEncryption",  "RSA with SHA-224" },
+        { ADD_LEN( OID_PKCS1_SHA224 ),     "sha224WithRSAEncryption",  "RSA with SHA-224" },
         POLARSSL_MD_SHA224,   POLARSSL_PK_RSA,
     },
     {
-        { OID_PKCS1_SHA256,     "sha256WithRSAEncryption",  "RSA with SHA-256" },
+        { ADD_LEN( OID_PKCS1_SHA256 ),     "sha256WithRSAEncryption",  "RSA with SHA-256" },
         POLARSSL_MD_SHA256,   POLARSSL_PK_RSA,
     },
     {
-        { OID_PKCS1_SHA384,     "sha384WithRSAEncryption",  "RSA with SHA-384" },
+        { ADD_LEN( OID_PKCS1_SHA384 ),     "sha384WithRSAEncryption",  "RSA with SHA-384" },
         POLARSSL_MD_SHA384,   POLARSSL_PK_RSA,
     },
     {
-        { OID_PKCS1_SHA512,     "sha512WithRSAEncryption",  "RSA with SHA-512" },
+        { ADD_LEN( OID_PKCS1_SHA512 ),     "sha512WithRSAEncryption",  "RSA with SHA-512" },
         POLARSSL_MD_SHA512,   POLARSSL_PK_RSA,
     },
     {
-        { OID_RSA_SHA_OBS,      "sha-1WithRSAEncryption",   "RSA with SHA1" },
+        { ADD_LEN( OID_RSA_SHA_OBS ),      "sha-1WithRSAEncryption",   "RSA with SHA1" },
         POLARSSL_MD_SHA1,     POLARSSL_PK_RSA,
     },
     {
-        { OID_ECDSA_SHA1,       "ecdsa-with-SHA1",      "ECDSA with SHA1" },
+        { ADD_LEN( OID_ECDSA_SHA1 ),       "ecdsa-with-SHA1",      "ECDSA with SHA1" },
         POLARSSL_MD_SHA1,     POLARSSL_PK_ECDSA,
     },
     {
-        { OID_ECDSA_SHA224,     "ecdsa-with-SHA224",    "ECDSA with SHA224" },
+        { ADD_LEN( OID_ECDSA_SHA224 ),     "ecdsa-with-SHA224",    "ECDSA with SHA224" },
         POLARSSL_MD_SHA224,   POLARSSL_PK_ECDSA,
     },
     {
-        { OID_ECDSA_SHA256,     "ecdsa-with-SHA256",    "ECDSA with SHA256" },
+        { ADD_LEN( OID_ECDSA_SHA256 ),     "ecdsa-with-SHA256",    "ECDSA with SHA256" },
         POLARSSL_MD_SHA256,   POLARSSL_PK_ECDSA,
     },
     {
-        { OID_ECDSA_SHA384,     "ecdsa-with-SHA384",    "ECDSA with SHA384" },
+        { ADD_LEN( OID_ECDSA_SHA384 ),     "ecdsa-with-SHA384",    "ECDSA with SHA384" },
         POLARSSL_MD_SHA384,   POLARSSL_PK_ECDSA,
     },
     {
-        { OID_ECDSA_SHA512,     "ecdsa-with-SHA512",    "ECDSA with SHA512" },
+        { ADD_LEN( OID_ECDSA_SHA512 ),     "ecdsa-with-SHA512",    "ECDSA with SHA512" },
         POLARSSL_MD_SHA512,   POLARSSL_PK_ECDSA,
     },
     {
-        { NULL, NULL, NULL },
+        { NULL, 0, NULL, NULL },
         0, 0,
     },
 };
@@ -341,19 +346,19 @@
 static const oid_pk_alg_t oid_pk_alg[] =
 {
     {
-        { OID_PKCS1_RSA,      "rsaEncryption",   "RSA" },
+        { ADD_LEN( OID_PKCS1_RSA ),      "rsaEncryption",   "RSA" },
         POLARSSL_PK_RSA,
     },
     {
-        { OID_EC_ALG_UNRESTRICTED,  "id-ecPublicKey",   "Generic EC key" },
+        { ADD_LEN( OID_EC_ALG_UNRESTRICTED ),  "id-ecPublicKey",   "Generic EC key" },
         POLARSSL_PK_ECKEY,
     },
     {
-        { OID_EC_ALG_ECDH,          "id-ecDH",          "EC key for ECDH" },
+        { ADD_LEN( OID_EC_ALG_ECDH ),          "id-ecDH",          "EC key for ECDH" },
         POLARSSL_PK_ECKEY_DH,
     },
     {
-        { NULL, NULL, NULL },
+        { NULL, 0, NULL, NULL },
         0,
     },
 };
@@ -372,27 +377,27 @@
 static const oid_ecp_grp_t oid_ecp_grp[] =
 {
     {
-        { OID_EC_GRP_SECP192R1, "secp192r1",    "secp192r1" },
+        { ADD_LEN( OID_EC_GRP_SECP192R1 ), "secp192r1",    "secp192r1" },
         POLARSSL_ECP_DP_SECP192R1,
     },
     {
-        { OID_EC_GRP_SECP224R1, "secp224r1",    "secp224r1" },
+        { ADD_LEN( OID_EC_GRP_SECP224R1 ), "secp224r1",    "secp224r1" },
         POLARSSL_ECP_DP_SECP224R1,
     },
     {
-        { OID_EC_GRP_SECP256R1, "secp256r1",    "secp256r1" },
+        { ADD_LEN( OID_EC_GRP_SECP256R1 ), "secp256r1",    "secp256r1" },
         POLARSSL_ECP_DP_SECP256R1,
     },
     {
-        { OID_EC_GRP_SECP384R1, "secp384r1",    "secp384r1" },
+        { ADD_LEN( OID_EC_GRP_SECP384R1 ), "secp384r1",    "secp384r1" },
         POLARSSL_ECP_DP_SECP384R1,
     },
     {
-        { OID_EC_GRP_SECP521R1, "secp521r1",    "secp521r1" },
+        { ADD_LEN( OID_EC_GRP_SECP521R1 ), "secp521r1",    "secp521r1" },
         POLARSSL_ECP_DP_SECP521R1,
     },
     {
-        { NULL, NULL, NULL },
+        { NULL, 0, NULL, NULL },
         0,
     },
 };
@@ -412,15 +417,15 @@
 static const oid_cipher_alg_t oid_cipher_alg[] =
 {
     {
-        { OID_DES_CBC,              "desCBC",       "DES-CBC" },
+        { ADD_LEN( OID_DES_CBC ),              "desCBC",       "DES-CBC" },
         POLARSSL_CIPHER_DES_CBC,
     },
     {
-        { OID_DES_EDE3_CBC,         "des-ede3-cbc", "DES-EDE3-CBC" },
+        { ADD_LEN( OID_DES_EDE3_CBC ),         "des-ede3-cbc", "DES-EDE3-CBC" },
         POLARSSL_CIPHER_DES_EDE3_CBC,
     },
     {
-        { NULL, NULL, NULL },
+        { NULL, 0, NULL, NULL },
         0,
     },
 };
@@ -441,43 +446,43 @@
 static const oid_md_alg_t oid_md_alg[] =
 {
     {
-        { OID_DIGEST_ALG_MD2,       "id-md2",       "MD2" },
+        { ADD_LEN( OID_DIGEST_ALG_MD2 ),       "id-md2",       "MD2" },
         POLARSSL_MD_MD2,
     },
     {
-        { OID_DIGEST_ALG_MD4,       "id-md4",       "MD4" },
+        { ADD_LEN( OID_DIGEST_ALG_MD4 ),       "id-md4",       "MD4" },
         POLARSSL_MD_MD4,
     },
     {
-        { OID_DIGEST_ALG_MD5,       "id-md5",       "MD5" },
+        { ADD_LEN( OID_DIGEST_ALG_MD5 ),       "id-md5",       "MD5" },
         POLARSSL_MD_MD5,
     },
     {
-        { OID_DIGEST_ALG_SHA1,      "id-sha1",      "SHA-1" },
+        { ADD_LEN( OID_DIGEST_ALG_SHA1 ),      "id-sha1",      "SHA-1" },
         POLARSSL_MD_SHA1,
     },
     {
-        { OID_DIGEST_ALG_SHA1,      "id-sha1",      "SHA-1" },
+        { ADD_LEN( OID_DIGEST_ALG_SHA1 ),      "id-sha1",      "SHA-1" },
         POLARSSL_MD_SHA1,
     },
     {
-        { OID_DIGEST_ALG_SHA224,    "id-sha224",    "SHA-224" },
+        { ADD_LEN( OID_DIGEST_ALG_SHA224 ),    "id-sha224",    "SHA-224" },
         POLARSSL_MD_SHA224,
     },
     {
-        { OID_DIGEST_ALG_SHA256,    "id-sha256",    "SHA-256" },
+        { ADD_LEN( OID_DIGEST_ALG_SHA256 ),    "id-sha256",    "SHA-256" },
         POLARSSL_MD_SHA256,
     },
     {
-        { OID_DIGEST_ALG_SHA384,    "id-sha384",    "SHA-384" },
+        { ADD_LEN( OID_DIGEST_ALG_SHA384 ),    "id-sha384",    "SHA-384" },
         POLARSSL_MD_SHA384,
     },
     {
-        { OID_DIGEST_ALG_SHA512,    "id-sha512",    "SHA-512" },
+        { ADD_LEN( OID_DIGEST_ALG_SHA512 ),    "id-sha512",    "SHA-512" },
         POLARSSL_MD_SHA512,
     },
     {
-        { NULL, NULL, NULL },
+        { NULL, 0, NULL, NULL },
         0,
     },
 };
@@ -500,15 +505,15 @@
 static const oid_pkcs12_pbe_alg_t oid_pkcs12_pbe_alg[] =
 {
     {
-        { OID_PKCS12_PBE_SHA1_DES3_EDE_CBC, "pbeWithSHAAnd3-KeyTripleDES-CBC", "PBE with SHA1 and 3-Key 3DES" },
+        { ADD_LEN( OID_PKCS12_PBE_SHA1_DES3_EDE_CBC ), "pbeWithSHAAnd3-KeyTripleDES-CBC", "PBE with SHA1 and 3-Key 3DES" },
         POLARSSL_MD_SHA1,      POLARSSL_CIPHER_DES_EDE3_CBC,
     },
     {
-        { OID_PKCS12_PBE_SHA1_DES2_EDE_CBC, "pbeWithSHAAnd2-KeyTripleDES-CBC", "PBE with SHA1 and 2-Key 3DES" },
+        { ADD_LEN( OID_PKCS12_PBE_SHA1_DES2_EDE_CBC ), "pbeWithSHAAnd2-KeyTripleDES-CBC", "PBE with SHA1 and 2-Key 3DES" },
         POLARSSL_MD_SHA1,      POLARSSL_CIPHER_DES_EDE_CBC,
     },
     {
-        { NULL, NULL, NULL },
+        { NULL, 0, NULL, NULL },
         0, 0,
     },
 };
diff --git a/library/ssl_cli.c b/library/ssl_cli.c
index a80a769..6674348 100644
--- a/library/ssl_cli.c
+++ b/library/ssl_cli.c
@@ -199,7 +199,7 @@
     *olen = 6 + sig_alg_len;
 }
 
-#if defined(POLARSSL_ECDH_C)
+#if defined(POLARSSL_ECDH_C) || defined(POLARSSL_ECDSA_C)
 static void ssl_write_supported_elliptic_curves_ext( ssl_context *ssl,
                                                      unsigned char *buf,
                                                      size_t *olen )
@@ -266,15 +266,14 @@
     *p++ = (unsigned char)( ( TLS_EXT_SUPPORTED_POINT_FORMATS      ) & 0xFF );
 
     *p++ = 0x00;
-    *p++ = 3;
-
     *p++ = 2;
-    *p++ = POLARSSL_ECP_PF_COMPRESSED;
+
+    *p++ = 1;
     *p++ = POLARSSL_ECP_PF_UNCOMPRESSED;
 
-    *olen = 7;
+    *olen = 6;
 }
-#endif
+#endif /* POLARSSL_ECDH_C || POLARSSL_ECDSA_C */
 
 #if defined(POLARSSL_SSL_MAX_FRAGMENT_LENGTH)
 static void ssl_write_max_fragment_length_ext( ssl_context *ssl,
@@ -542,7 +541,7 @@
     ssl_write_signature_algorithms_ext( ssl, p + 2 + ext_len, &olen );
     ext_len += olen;
 
-#if defined(POLARSSL_ECDH_C)
+#if defined(POLARSSL_ECDH_C) || defined(POLARSSL_ECDSA_C)
     ssl_write_supported_elliptic_curves_ext( ssl, p + 2 + ext_len, &olen );
     ext_len += olen;
 
@@ -687,6 +686,40 @@
 }
 #endif /* POLARSSL_SSL_SESSION_TICKETS */
 
+#if defined(POLARSSL_ECDH_C) || defined(POLARSSL_ECDSA_C)
+static int ssl_parse_supported_point_formats_ext( ssl_context *ssl,
+                                                  const unsigned char *buf,
+                                                  size_t len )
+{
+    size_t list_size;
+    const unsigned char *p;
+
+    list_size = buf[0];
+    if( list_size + 1 != len )
+    {
+        SSL_DEBUG_MSG( 1, ( "bad server hello message" ) );
+        return( POLARSSL_ERR_SSL_BAD_HS_SERVER_HELLO );
+    }
+
+    p = buf + 2;
+    while( list_size > 0 )
+    {
+        if( p[0] == POLARSSL_ECP_PF_UNCOMPRESSED ||
+            p[0] == POLARSSL_ECP_PF_COMPRESSED )
+        {
+            ssl->handshake->ecdh_ctx.point_format = p[0];
+            SSL_DEBUG_MSG( 4, ( "point format selected: %d", p[0] ) );
+            return( 0 );
+        }
+
+        list_size--;
+        p++;
+    }
+
+    return( 0 );
+}
+#endif /* POLARSSL_ECDH_C || POLARSSL_ECDSA_C */
+
 static int ssl_parse_server_hello( ssl_context *ssl )
 {
     uint32_t t;
@@ -942,6 +975,19 @@
             break;
 #endif /* POLARSSL_SSL_SESSION_TICKETS */
 
+#if defined(POLARSSL_ECDH_C) || defined(POLARSSL_ECDSA_C)
+        case TLS_EXT_SUPPORTED_POINT_FORMATS:
+            SSL_DEBUG_MSG( 3, ( "found supported_point_formats extension" ) );
+
+            if( ( ret = ssl_parse_supported_point_formats_ext( ssl,
+                            ext + 4, ext_size ) ) != 0 )
+            {
+                return( ret );
+            }
+
+            break;
+#endif /* POLARSSL_ECDH_C || POLARSSL_ECDSA_C */
+
         default:
             SSL_DEBUG_MSG( 3, ( "unknown extension found: %d (ignoring)",
                            ext_id ) );
@@ -1367,6 +1413,7 @@
             md_update( &ctx, ssl->handshake->randbytes, 64 );
             md_update( &ctx, ssl->in_msg + 4, n );
             md_finish( &ctx, hash );
+            md_free_ctx( &ctx );
         }
 
         SSL_DEBUG_BUF( 3, "parameters hash", hash, hashlen );
diff --git a/library/ssl_srv.c b/library/ssl_srv.c
index 2b6f06f..36c4f2f 100644
--- a/library/ssl_srv.c
+++ b/library/ssl_srv.c
@@ -470,7 +470,7 @@
     return( 0 );
 }
 
-#if defined(POLARSSL_ECP_C)
+#if defined(POLARSSL_ECDH_C) || defined(POLARSSL_ECDSA_C)
 static int ssl_parse_supported_elliptic_curves( ssl_context *ssl,
                                                 const unsigned char *buf,
                                                 size_t len )
@@ -552,7 +552,8 @@
         if( p[0] == POLARSSL_ECP_PF_UNCOMPRESSED ||
             p[0] == POLARSSL_ECP_PF_COMPRESSED )
         {
-            ssl->handshake->ec_point_format = p[0];
+            ssl->handshake->ecdh_ctx.point_format = p[0];
+            SSL_DEBUG_MSG( 4, ( "point format selected: %d", p[0] ) );
             return( 0 );
         }
 
@@ -562,7 +563,7 @@
 
     return( 0 );
 }
-#endif /* POLARSSL_ECP_C */
+#endif /* POLARSSL_ECDH_C || POLARSSL_ECDSA_C */
 
 #if defined(POLARSSL_SSL_MAX_FRAGMENT_LENGTH)
 static int ssl_parse_max_fragment_length_ext( ssl_context *ssl,
@@ -1160,7 +1161,7 @@
                 return( ret );
             break;
 
-#if defined(POLARSSL_ECP_C)
+#if defined(POLARSSL_ECDH_C) || defined(POLARSSL_ECDSA_C)
         case TLS_EXT_SUPPORTED_ELLIPTIC_CURVES:
             SSL_DEBUG_MSG( 3, ( "found supported elliptic curves extension" ) );
 
@@ -1176,7 +1177,7 @@
             if( ret != 0 )
                 return( ret );
             break;
-#endif /* POLARSSL_ECP_C */
+#endif /* POLARSSL_ECDH_C || POLARSSL_ECDSA_C */
 
 #if defined(POLARSSL_SSL_MAX_FRAGMENT_LENGTH)
         case TLS_EXT_MAX_FRAGMENT_LENGTH:
@@ -1288,9 +1289,11 @@
                     ciphersuite_info->max_minor_ver < ssl->minor_ver )
                     continue;
 
+#if defined(POLARSSL_ECDH_C) || defined(POLARSSL_ECDSA_C)
                 if( ( ciphersuite_info->flags & POLARSSL_CIPHERSUITE_EC ) &&
                     ssl->handshake->ec_curve == 0 )
                     continue;
+#endif
 
                 goto have_ciphersuite;
             }
@@ -1423,6 +1426,31 @@
 }
 #endif /* POLARSSL_SSL_MAX_FRAGMENT_LENGTH */
 
+#if defined(POLARSSL_ECDH_C) || defined(POLARSSL_ECDSA_C)
+static void ssl_write_supported_point_formats_ext( ssl_context *ssl,
+                                                   unsigned char *buf,
+                                                   size_t *olen )
+{
+    unsigned char *p = buf;
+    ((void) ssl);
+
+    *olen = 0;
+
+    SSL_DEBUG_MSG( 3, ( "server hello, supported_point_formats extension" ) );
+
+    *p++ = (unsigned char)( ( TLS_EXT_SUPPORTED_POINT_FORMATS >> 8 ) & 0xFF );
+    *p++ = (unsigned char)( ( TLS_EXT_SUPPORTED_POINT_FORMATS      ) & 0xFF );
+
+    *p++ = 0x00;
+    *p++ = 2;
+
+    *p++ = 1;
+    *p++ = POLARSSL_ECP_PF_UNCOMPRESSED;
+
+    *olen = 6;
+}
+#endif /* POLARSSL_ECDH_C || POLARSSL_ECDSA_C */
+
 static int ssl_write_server_hello( ssl_context *ssl )
 {
 #if defined(POLARSSL_HAVE_TIME)
@@ -1578,6 +1606,11 @@
     ext_len += olen;
 #endif
 
+#if defined(POLARSSL_ECDH_C) || defined(POLARSSL_ECDSA_C)
+    ssl_write_supported_point_formats_ext( ssl, p + 2 + ext_len, &olen );
+    ext_len += olen;
+#endif
+
     SSL_DEBUG_MSG( 3, ( "server hello, total extension length: %d", ext_len ) );
 
     *p++ = (unsigned char)( ( ext_len >> 8 ) & 0xFF );
diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index 039b536..9c1e53a 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -1011,6 +1011,7 @@
 
         switch( ssl->transform_out->ciphersuite_info->cipher )
         {
+#if defined(POLARSSL_DES_C)
             case POLARSSL_CIPHER_DES_CBC:
                 des_crypt_cbc( (des_context *) ssl->transform_out->ctx_enc,
                                DES_ENCRYPT, enc_msglen,
@@ -1022,20 +1023,25 @@
                                DES_ENCRYPT, enc_msglen,
                                ssl->transform_out->iv_enc, enc_msg, enc_msg );
                 break;
+#endif
 
+#if defined(POLARSSL_AES_C)
             case POLARSSL_CIPHER_AES_128_CBC:
             case POLARSSL_CIPHER_AES_256_CBC:
                 aes_crypt_cbc( (aes_context *) ssl->transform_out->ctx_enc,
                                AES_ENCRYPT, enc_msglen,
                                ssl->transform_out->iv_enc, enc_msg, enc_msg );
                 break;
+#endif
 
+#if defined(POLARSSL_CAMELLIA_C)
             case POLARSSL_CIPHER_CAMELLIA_128_CBC:
             case POLARSSL_CIPHER_CAMELLIA_256_CBC:
                 camellia_crypt_cbc( (camellia_context *) ssl->transform_out->ctx_enc,
                                     CAMELLIA_ENCRYPT, enc_msglen,
                                     ssl->transform_out->iv_enc, enc_msg, enc_msg );
                 break;
+#endif
 
             default:
                 return( POLARSSL_ERR_SSL_FEATURE_UNAVAILABLE );
@@ -1188,6 +1194,7 @@
 
         switch( ssl->transform_in->ciphersuite_info->cipher )
         {
+#if defined(POLARSSL_DES_C)
             case POLARSSL_CIPHER_DES_CBC:
                 des_crypt_cbc( (des_context *) ssl->transform_in->ctx_dec,
                                DES_DECRYPT, dec_msglen,
@@ -1199,20 +1206,25 @@
                                DES_DECRYPT, dec_msglen,
                                ssl->transform_in->iv_dec, dec_msg, dec_msg_result );
                 break;
+#endif
 
+#if defined(POLARSSL_AES_C)
             case POLARSSL_CIPHER_AES_128_CBC:
             case POLARSSL_CIPHER_AES_256_CBC:
                 aes_crypt_cbc( (aes_context *) ssl->transform_in->ctx_dec,
                                AES_DECRYPT, dec_msglen,
                                ssl->transform_in->iv_dec, dec_msg, dec_msg_result );
                 break;
+#endif
 
+#if defined(POLARSSL_CAMELLIA_C)
             case POLARSSL_CIPHER_CAMELLIA_128_CBC:
             case POLARSSL_CIPHER_CAMELLIA_256_CBC:
                 camellia_crypt_cbc( (camellia_context *) ssl->transform_in->ctx_dec,
                                     CAMELLIA_DECRYPT, dec_msglen,
                                     ssl->transform_in->iv_dec, dec_msg, dec_msg_result );
                 break;
+#endif
 
             default:
                 return( POLARSSL_ERR_SSL_FEATURE_UNAVAILABLE );
@@ -3208,6 +3220,10 @@
         return( POLARSSL_ERR_SSL_BAD_INPUT_DATA );
 
     ssl->hostname_len = strlen( hostname );
+
+    if( ssl->hostname_len + 1 == 0 )
+        return( POLARSSL_ERR_SSL_BAD_INPUT_DATA );
+
     ssl->hostname = (unsigned char *) polarssl_malloc( ssl->hostname_len + 1 );
 
     if( ssl->hostname == NULL )
diff --git a/library/x509parse.c b/library/x509parse.c
index ace7fe8..08dc4d0 100644
--- a/library/x509parse.c
+++ b/library/x509parse.c
@@ -287,6 +287,10 @@
             ASN1_CONSTRUCTED | ASN1_SEQUENCE ) ) != 0 )
         return( POLARSSL_ERR_X509_CERT_INVALID_NAME + ret );
 
+    if( ( end - *p ) < 1 )
+        return( POLARSSL_ERR_X509_CERT_INVALID_NAME +
+                POLARSSL_ERR_ASN1_OUT_OF_DATA );
+
     oid = &cur->oid;
     oid->tag = **p;
 
@@ -514,6 +518,10 @@
         ( ret = asn1_get_mpi( p, end, &rsa->E ) ) != 0 )
         return( POLARSSL_ERR_X509_CERT_INVALID_PUBKEY + ret );
 
+    if( *p != end )
+        return( POLARSSL_ERR_X509_CERT_INVALID_PUBKEY +
+                POLARSSL_ERR_ASN1_LENGTH_MISMATCH );
+
     if( ( ret = rsa_check_pubkey( rsa ) ) != 0 )
         return( ret );
 
@@ -1909,15 +1917,23 @@
 static int load_file( const char *path, unsigned char **buf, size_t *n )
 {
     FILE *f;
+    long size;
 
     if( ( f = fopen( path, "rb" ) ) == NULL )
         return( POLARSSL_ERR_X509_FILE_IO_ERROR );
 
     fseek( f, 0, SEEK_END );
-    *n = (size_t) ftell( f );
+    if( ( size = ftell( f ) ) == -1 )
+    {
+        fclose( f );
+        return( POLARSSL_ERR_X509_FILE_IO_ERROR );
+    }
     fseek( f, 0, SEEK_SET );
 
-    if( ( *buf = (unsigned char *) polarssl_malloc( *n + 1 ) ) == NULL )
+    *n = (size_t) size;
+
+    if( *n + 1 == 0 ||
+        ( *buf = (unsigned char *) polarssl_malloc( *n + 1 ) ) == NULL )
     {
         fclose( f );
         return( POLARSSL_ERR_X509_MALLOC_FAILED );
@@ -3445,6 +3461,7 @@
             /*
              * Cannot check 'unknown' hash
              */
+            trust_ca = trust_ca->next;
             continue;
         }
 
@@ -3903,7 +3920,6 @@
     ret = x509parse_verify( &clicert, &cacert, NULL, "PolarSSL Client 2", &flags, NULL, NULL );
     if( ret != 0 )
     {
-        printf("%02x", flags);
         if( verbose != 0 )
             printf( "failed\n" );
 
diff --git a/tests/data_files/ec_224_prv.pem b/tests/data_files/ec_224_prv.pem
new file mode 100644
index 0000000..ebb83a0
--- /dev/null
+++ b/tests/data_files/ec_224_prv.pem
@@ -0,0 +1,5 @@
+-----BEGIN EC PRIVATE KEY-----
+MGgCAQEEHGhJ+X0QZvaZd1ljfH44mUZM7j7HrJcGU6C+B0KgBwYFK4EEACGhPAM6
+AAQWk6KQ9/C1cf4rQdXYSwEydjH0qGD5lfozLAl/VBkrsQ8AET8q/7E8GiTORJFF
+calUQK4BSgDL9w==
+-----END EC PRIVATE KEY-----
diff --git a/tests/data_files/ec_224_pub.pem b/tests/data_files/ec_224_pub.pem
new file mode 100644
index 0000000..d2da54a
--- /dev/null
+++ b/tests/data_files/ec_224_pub.pem
@@ -0,0 +1,4 @@
+-----BEGIN PUBLIC KEY-----
+ME4wEAYHKoZIzj0CAQYFK4EEACEDOgAEFpOikPfwtXH+K0HV2EsBMnYx9Khg+ZX6
+MywJf1QZK7EPABE/Kv+xPBokzkSRRXGpVECuAUoAy/c=
+-----END PUBLIC KEY-----
diff --git a/tests/data_files/ec_256_prv.pem b/tests/data_files/ec_256_prv.pem
new file mode 100644
index 0000000..e42dd4a
--- /dev/null
+++ b/tests/data_files/ec_256_prv.pem
@@ -0,0 +1,5 @@
+-----BEGIN EC PRIVATE KEY-----
+MHcCAQEEIEnJqMGMS4hWOMQxzx3xyZQTFgm1gNT9Q6DKsX2y8T7uoAoGCCqGSM49
+AwEHoUQDQgAEd3Jlb4FLOZJ51eHxeB+sbwmaPFyhsONTUYNLCLZeC1clkM2vj3aT
+YbzzSs/BHl4HToQmvd4Evm5lOUVElhfeRQ==
+-----END EC PRIVATE KEY-----
diff --git a/tests/data_files/ec_256_pub.pem b/tests/data_files/ec_256_pub.pem
new file mode 100644
index 0000000..701da02
--- /dev/null
+++ b/tests/data_files/ec_256_pub.pem
@@ -0,0 +1,4 @@
+-----BEGIN PUBLIC KEY-----
+MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEd3Jlb4FLOZJ51eHxeB+sbwmaPFyh
+sONTUYNLCLZeC1clkM2vj3aTYbzzSs/BHl4HToQmvd4Evm5lOUVElhfeRQ==
+-----END PUBLIC KEY-----
diff --git a/tests/data_files/ec_384_prv.pem b/tests/data_files/ec_384_prv.pem
new file mode 100644
index 0000000..7890759
--- /dev/null
+++ b/tests/data_files/ec_384_prv.pem
@@ -0,0 +1,6 @@
+-----BEGIN EC PRIVATE KEY-----
+MIGkAgEBBDA/XY2b4oC1aWzFzJ+Uz4r35rYd1lkrKrKzpMYHRQQX7DJ9zcrtfBAF
+PXGaBXTwp2qgBwYFK4EEACKhZANiAATZxmK1C6KcpHmQRQ4EOur08MabFWdtES9i
+KnHJMFmvmZaRxWgNK0TREVedsS9KQTou1cRfz7Z7W2PgC5Hr5Z0JprGsLAxCgqoS
+MX7VkU+Zm8SIuxMug0LMNvLKXjN5x0c=
+-----END EC PRIVATE KEY-----
diff --git a/tests/data_files/ec_384_pub.pem b/tests/data_files/ec_384_pub.pem
new file mode 100644
index 0000000..de95382
--- /dev/null
+++ b/tests/data_files/ec_384_pub.pem
@@ -0,0 +1,5 @@
+-----BEGIN PUBLIC KEY-----
+MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE2cZitQuinKR5kEUOBDrq9PDGmxVnbREv
+YipxyTBZr5mWkcVoDStE0RFXnbEvSkE6LtXEX8+2e1tj4AuR6+WdCaaxrCwMQoKq
+EjF+1ZFPmZvEiLsTLoNCzDbyyl4zecdH
+-----END PUBLIC KEY-----
diff --git a/tests/data_files/ec_521_prv.pem b/tests/data_files/ec_521_prv.pem
new file mode 100644
index 0000000..144bb44
--- /dev/null
+++ b/tests/data_files/ec_521_prv.pem
@@ -0,0 +1,7 @@
+-----BEGIN EC PRIVATE KEY-----
+MIHcAgEBBEIBsbatB7t55zINpZhg6ijgVShPYFjyed5mbgbUNdKve9oo2Z+ke33Q
+lj4WsAcweO6LijjZZqWC9G0Z/5XfOtloWq6gBwYFK4EEACOhgYkDgYYABAAd4ULV
+T2nrA47kt6+dPKB3Nv2c9xnrNU1ph57n88E2+w+/nwj4a+X6Eo7BoFHT5sZD6Fra
+j/rPNmPCYL0shEtvVgDO6OSKnmXQnK3YnyNd7gXzuKZGvnFfH2fVtDTg/yOh/Afv
+d0AZPkDu/287zf12WqkVUDNST+TyBfVETiksTC9qwQ==
+-----END EC PRIVATE KEY-----
diff --git a/tests/data_files/ec_521_pub.pem b/tests/data_files/ec_521_pub.pem
new file mode 100644
index 0000000..26bc5c5
--- /dev/null
+++ b/tests/data_files/ec_521_pub.pem
@@ -0,0 +1,6 @@
+-----BEGIN PUBLIC KEY-----
+MIGbMBAGByqGSM49AgEGBSuBBAAjA4GGAAQAHeFC1U9p6wOO5LevnTygdzb9nPcZ
+6zVNaYee5/PBNvsPv58I+Gvl+hKOwaBR0+bGQ+ha2o/6zzZjwmC9LIRLb1YAzujk
+ip5l0Jyt2J8jXe4F87imRr5xXx9n1bQ04P8jofwH73dAGT5A7v9vO839dlqpFVAz
+Uk/k8gX1RE4pLEwvasE=
+-----END PUBLIC KEY-----
diff --git a/tests/suites/test_suite_x509parse.data b/tests/suites/test_suite_x509parse.data
index 49d3f22..2a3e1c8 100644
--- a/tests/suites/test_suite_x509parse.data
+++ b/tests/suites/test_suite_x509parse.data
@@ -194,6 +194,22 @@
 depends_on:POLARSSL_PEM_C:POLARSSL_ECP_C:POLARSSL_ECP_DP_SECP192R1_ENABLED:POLARSSL_FS_IO
 x509parse_public_keyfile_ec:"data_files/ec_pub.pem":0
 
+X509 Parse Public EC Key #3 (RFC 5480, secp224r1)
+depends_on:POLARSSL_PEM_C:POLARSSL_ECP_C:POLARSSL_ECP_DP_SECP224R1_ENABLED:POLARSSL_FS_IO
+x509parse_public_keyfile_ec:"data_files/ec_224_pub.pem":0
+
+X509 Parse Public EC Key #4 (RFC 5480, secp256r1)
+depends_on:POLARSSL_PEM_C:POLARSSL_ECP_C:POLARSSL_ECP_DP_SECP256R1_ENABLED:POLARSSL_FS_IO
+x509parse_public_keyfile_ec:"data_files/ec_256_pub.pem":0
+
+X509 Parse Public EC Key #5 (RFC 5480, secp384r1)
+depends_on:POLARSSL_PEM_C:POLARSSL_ECP_C:POLARSSL_ECP_DP_SECP384R1_ENABLED:POLARSSL_FS_IO
+x509parse_public_keyfile_ec:"data_files/ec_384_pub.pem":0
+
+X509 Parse Public EC Key #6 (RFC 5480, secp521r1)
+depends_on:POLARSSL_PEM_C:POLARSSL_ECP_C:POLARSSL_ECP_DP_SECP521R1_ENABLED:POLARSSL_FS_IO
+x509parse_public_keyfile_ec:"data_files/ec_521_pub.pem":0
+
 X509 Parse EC Key #1 (SEC1 DER)
 depends_on:POLARSSL_FS_IO:POLARSSL_ECP_C:POLARSSL_ECP_DP_SECP192R1_ENABLED
 x509parse_keyfile_ec:"data_files/ec_prv.sec1.der":"NULL":0
@@ -222,6 +238,22 @@
 depends_on:POLARSSL_DES_C:POLARSSL_SHA1_C:POLARSSL_PEM_C:POLARSSL_FS_IO:POLARSSL_ECP_C:POLARSSL_ECP_DP_SECP192R1_ENABLED
 x509parse_keyfile_ec:"data_files/ec_prv.pk8.pw.pem":"polar":0
 
+X509 Parse EC Key #8 (SEC1 PEM, secp224r1)
+depends_on:POLARSSL_PEM_C:POLARSSL_FS_IO:POLARSSL_ECP_C:POLARSSL_ECP_DP_SECP224R1_ENABLED
+x509parse_keyfile_ec:"data_files/ec_224_prv.pem":NULL:0
+
+X509 Parse EC Key #9 (SEC1 PEM, secp256r1)
+depends_on:POLARSSL_PEM_C:POLARSSL_FS_IO:POLARSSL_ECP_C:POLARSSL_ECP_DP_SECP256R1_ENABLED
+x509parse_keyfile_ec:"data_files/ec_256_prv.pem":NULL:0
+
+X509 Parse EC Key #10 (SEC1 PEM, secp384r1)
+depends_on:POLARSSL_PEM_C:POLARSSL_FS_IO:POLARSSL_ECP_C:POLARSSL_ECP_DP_SECP384R1_ENABLED
+x509parse_keyfile_ec:"data_files/ec_384_prv.pem":NULL:0
+
+X509 Parse EC Key #11 (SEC1 PEM, secp521r1)
+depends_on:POLARSSL_PEM_C:POLARSSL_FS_IO:POLARSSL_ECP_C:POLARSSL_ECP_DP_SECP521R1_ENABLED
+x509parse_keyfile_ec:"data_files/ec_521_prv.pem":NULL:0
+
 X509 Get Distinguished Name #1
 depends_on:POLARSSL_PEM_C:POLARSSL_FS_IO
 x509_dn_gets:"data_files/server1.crt":"subject":"C=NL, O=PolarSSL, CN=PolarSSL Server 1"
@@ -520,7 +552,7 @@
 x509parse_crt:"30673065a0030201028204deadbeef300d06092a864886f70d0101020500300c310a30080600130454657374301c170c303930313031303030303030170c303931323331323335393539300c310a30080600130454657374300f300d06092A864886F70D0101010500":"":POLARSSL_ERR_X509_CERT_INVALID_PUBKEY + POLARSSL_ERR_ASN1_OUT_OF_DATA
 
 X509 Certificate ASN1 (TBSCertificate, pubkey, no bitstring data)
-x509parse_crt:"30693067a0030201028204deadbeef300d06092a864886f70d0101020500300c310a30080600130454657374301c170c303930313031303030303030170c303931323331323335393539300c310a300806001304546573743011300d06092A864886F70D01010105000300":"":POLARSSL_ERR_X509_CERT_INVALID_PUBKEY + POLARSSL_ERR_ASN1_OUT_OF_DATA
+x509parse_crt:"30693067a0030201028204deadbeef300d06092a864886f70d0101020500300c310a30080600130454657374301c170c303930313031303030303030170c303931323331323335393539300c310a300806001304546573743011300d06092A864886F70D01010105000300":"":POLARSSL_ERR_X509_CERT_INVALID_PUBKEY + POLARSSL_ERR_ASN1_INVALID_DATA
 
 X509 Certificate ASN1 (TBSCertificate, pubkey, invalid bitstring start)
 x509parse_crt:"306a3068a0030201028204deadbeef300d06092a864886f70d0101020500300c310a30080600130454657374301c170c303930313031303030303030170c303931323331323335393539300c310a300806001304546573743012300d06092A864886F70D0101010500030101":"":POLARSSL_ERR_X509_CERT_INVALID_PUBKEY + POLARSSL_ERR_ASN1_INVALID_DATA
