- Fixed error codes. Negative when needed (SSL error codes). Non-negative if error-codes are OR'ed to other error codes (ASN1, Base64, MPI, DHM). The rest is negative by default. 

diff --git a/include/polarssl/x509.h b/include/polarssl/x509.h
index a218e8a..fbb1b67 100644
--- a/include/polarssl/x509.h
+++ b/include/polarssl/x509.h
@@ -40,31 +40,31 @@
 /*
  * X509 Error codes
  */
-#define POLARSSL_ERR_X509_FEATURE_UNAVAILABLE              0x0020
-#define POLARSSL_ERR_X509_CERT_INVALID_PEM                 0x0040
-#define POLARSSL_ERR_X509_CERT_INVALID_FORMAT              0x0060
-#define POLARSSL_ERR_X509_CERT_INVALID_VERSION             0x0080
-#define POLARSSL_ERR_X509_CERT_INVALID_SERIAL              0x00A0
-#define POLARSSL_ERR_X509_CERT_INVALID_ALG                 0x00C0
-#define POLARSSL_ERR_X509_CERT_INVALID_NAME                0x00E0
-#define POLARSSL_ERR_X509_CERT_INVALID_DATE                0x0100
-#define POLARSSL_ERR_X509_CERT_INVALID_PUBKEY              0x0120
-#define POLARSSL_ERR_X509_CERT_INVALID_SIGNATURE           0x0140
-#define POLARSSL_ERR_X509_CERT_INVALID_EXTENSIONS          0x0160
-#define POLARSSL_ERR_X509_CERT_UNKNOWN_VERSION             0x0180
-#define POLARSSL_ERR_X509_CERT_UNKNOWN_SIG_ALG             0x01A0
-#define POLARSSL_ERR_X509_CERT_UNKNOWN_PK_ALG              0x01C0
-#define POLARSSL_ERR_X509_CERT_SIG_MISMATCH                0x01E0
-#define POLARSSL_ERR_X509_CERT_VERIFY_FAILED               0x0200
-#define POLARSSL_ERR_X509_KEY_INVALID_PEM                  0x0220
-#define POLARSSL_ERR_X509_KEY_INVALID_VERSION              0x0240
-#define POLARSSL_ERR_X509_KEY_INVALID_FORMAT               0x0260
-#define POLARSSL_ERR_X509_KEY_INVALID_ENC_IV               0x0280
-#define POLARSSL_ERR_X509_KEY_UNKNOWN_ENC_ALG              0x02A0
-#define POLARSSL_ERR_X509_KEY_PASSWORD_REQUIRED            0x02C0
-#define POLARSSL_ERR_X509_KEY_PASSWORD_MISMATCH            0x02E0
-#define POLARSSL_ERR_X509_POINT_ERROR                      0x0300
-#define POLARSSL_ERR_X509_VALUE_TO_LENGTH                  0x0320
+#define POLARSSL_ERR_X509_FEATURE_UNAVAILABLE              -0x0020
+#define POLARSSL_ERR_X509_CERT_INVALID_PEM                 -0x0040
+#define POLARSSL_ERR_X509_CERT_INVALID_FORMAT              -0x0060
+#define POLARSSL_ERR_X509_CERT_INVALID_VERSION             -0x0080
+#define POLARSSL_ERR_X509_CERT_INVALID_SERIAL              -0x00A0
+#define POLARSSL_ERR_X509_CERT_INVALID_ALG                 -0x00C0
+#define POLARSSL_ERR_X509_CERT_INVALID_NAME                -0x00E0
+#define POLARSSL_ERR_X509_CERT_INVALID_DATE                -0x0100
+#define POLARSSL_ERR_X509_CERT_INVALID_PUBKEY              -0x0120
+#define POLARSSL_ERR_X509_CERT_INVALID_SIGNATURE           -0x0140
+#define POLARSSL_ERR_X509_CERT_INVALID_EXTENSIONS          -0x0160
+#define POLARSSL_ERR_X509_CERT_UNKNOWN_VERSION             -0x0180
+#define POLARSSL_ERR_X509_CERT_UNKNOWN_SIG_ALG             -0x01A0
+#define POLARSSL_ERR_X509_CERT_UNKNOWN_PK_ALG              -0x01C0
+#define POLARSSL_ERR_X509_CERT_SIG_MISMATCH                -0x01E0
+#define POLARSSL_ERR_X509_CERT_VERIFY_FAILED               -0x0200
+#define POLARSSL_ERR_X509_KEY_INVALID_PEM                  -0x0220
+#define POLARSSL_ERR_X509_KEY_INVALID_VERSION              -0x0240
+#define POLARSSL_ERR_X509_KEY_INVALID_FORMAT               -0x0260
+#define POLARSSL_ERR_X509_KEY_INVALID_ENC_IV               -0x0280
+#define POLARSSL_ERR_X509_KEY_UNKNOWN_ENC_ALG              -0x02A0
+#define POLARSSL_ERR_X509_KEY_PASSWORD_REQUIRED            -0x02C0
+#define POLARSSL_ERR_X509_KEY_PASSWORD_MISMATCH            -0x02E0
+#define POLARSSL_ERR_X509_POINT_ERROR                      -0x0300
+#define POLARSSL_ERR_X509_VALUE_TO_LENGTH                  -0x0320
 
 /*
  * X509 Verify codes