fixed big endian bug in md5 hasher
[strongswan.git] / src / libstrongswan / crypto / hashers / md5_hasher.c
index 5cf4643..d4dde36 100644 (file)
@@ -30,8 +30,6 @@
 
 #include "md5_hasher.h"
 
 
 #include "md5_hasher.h"
 
-#include <definitions.h>
-
 
 /* Constants for MD5Transform routine. */
 #define S11 7
 
 /* Constants for MD5Transform routine. */
 #define S11 7
@@ -122,7 +120,7 @@ struct private_md5_hasher_t {
 /* Encodes input (u_int32_t) into output (u_int8_t). Assumes len is
  * a multiple of 4.
  */
 /* Encodes input (u_int32_t) into output (u_int8_t). Assumes len is
  * a multiple of 4.
  */
-static void Encode (u_int8_t *output, u_int32_t *input, size_t *len)
+static void Encode (u_int8_t *output, u_int32_t *input, size_t len)
 {
        size_t i, j;
 
 {
        size_t i, j;
 
@@ -366,6 +364,19 @@ static void reset(private_md5_hasher_t *this)
 }
 
 /**
 }
 
 /**
+ * Implementation of hasher_t.get_state
+ */
+static chunk_t get_state(private_md5_hasher_t *this)
+{
+       chunk_t chunk;
+       
+       chunk.ptr = (u_char*)&this->state[0];
+       chunk.len = sizeof(this->state);
+       
+       return chunk;
+}
+
+/**
  * Implementation of hasher_t.destroy.
  */
 static void destroy(private_md5_hasher_t *this)
  * Implementation of hasher_t.destroy.
  */
 static void destroy(private_md5_hasher_t *this)
@@ -384,6 +395,7 @@ md5_hasher_t *md5_hasher_create(void)
        this->public.hasher_interface.allocate_hash = (void (*) (hasher_t*, chunk_t, chunk_t*))allocate_hash;
        this->public.hasher_interface.get_hash_size = (size_t (*) (hasher_t*))get_hash_size;
        this->public.hasher_interface.reset = (void (*) (hasher_t*))reset;
        this->public.hasher_interface.allocate_hash = (void (*) (hasher_t*, chunk_t, chunk_t*))allocate_hash;
        this->public.hasher_interface.get_hash_size = (size_t (*) (hasher_t*))get_hash_size;
        this->public.hasher_interface.reset = (void (*) (hasher_t*))reset;
+       this->public.hasher_interface.get_state = (chunk_t (*) (hasher_t*))get_state;
        this->public.hasher_interface.destroy = (void (*) (hasher_t*))destroy;
        
        /* initialize */
        this->public.hasher_interface.destroy = (void (*) (hasher_t*))destroy;
        
        /* initialize */