- A error_strerror function() has been added to translate between error codes and their description.
 - The error codes have been remapped and combining error codes is now done with a PLUS instead of an OR as error codes used are negative.
 - Descriptions to all error codes have been added.
 - Generation script for error.c has been created to automatically generate error.c from the available error definitions in the headers.


diff --git a/library/dhm.c b/library/dhm.c
index 9c8daef..07d722e 100644
--- a/library/dhm.c
+++ b/library/dhm.c
@@ -53,7 +53,7 @@
         return( POLARSSL_ERR_DHM_BAD_INPUT_DATA );
 
     if( ( ret = mpi_read_binary( X, *p, n ) ) != 0 )
-        return( POLARSSL_ERR_DHM_READ_PARAMS_FAILED | ret );
+        return( POLARSSL_ERR_DHM_READ_PARAMS_FAILED + ret );
 
     (*p) += n;
 
@@ -176,7 +176,7 @@
 cleanup:
 
     if( ret != 0 )
-        return( ret | POLARSSL_ERR_DHM_MAKE_PARAMS_FAILED );
+        return( POLARSSL_ERR_DHM_MAKE_PARAMS_FAILED + ret );
 
     return( 0 );
 }
@@ -193,7 +193,7 @@
         return( POLARSSL_ERR_DHM_BAD_INPUT_DATA );
 
     if( ( ret = mpi_read_binary( &ctx->GY, input, ilen ) ) != 0 )
-        return( POLARSSL_ERR_DHM_READ_PUBLIC_FAILED | ret );
+        return( POLARSSL_ERR_DHM_READ_PUBLIC_FAILED + ret );
 
     return( 0 );
 }
@@ -231,7 +231,7 @@
 cleanup:
 
     if( ret != 0 )
-        return( POLARSSL_ERR_DHM_MAKE_PUBLIC_FAILED | ret );
+        return( POLARSSL_ERR_DHM_MAKE_PUBLIC_FAILED + ret );
 
     return( 0 );
 }
@@ -260,7 +260,7 @@
 cleanup:
 
     if( ret != 0 )
-        return( POLARSSL_ERR_DHM_CALC_SECRET_FAILED | ret );
+        return( POLARSSL_ERR_DHM_CALC_SECRET_FAILED + ret );
 
     return( 0 );
 }