extras/MD5: const fix; MD5Digest64 to return result in 2 uint64
authorJerome St-Louis <jerome@ecere.com>
Thu, 7 Aug 2014 01:53:39 +0000 (21:53 -0400)
committerJerome St-Louis <jerome@ecere.com>
Thu, 7 Aug 2014 01:53:39 +0000 (21:53 -0400)
extras/md5.ec

index 797a69a..baf1e90 100644 (file)
@@ -269,7 +269,7 @@ static void Decode(uint32 *output, byte *input, uint len)
       output[i] = ((uint32)input[j]) | (((uint32)input[j+1]) << 8) | (((uint32)input[j+2]) << 16) | (((uint32)input[j+3]) << 24);
 }
 
-void MD5Digest(char * string, int len, char * output)
+void MD5Digest(const char * string, int len, char * output)
 {
    byte bytes[16];
    int c;
@@ -284,3 +284,16 @@ void MD5Digest(char * string, int len, char * output)
       len += 2;
    }
 }
+
+void MD5Digest64(const char * string, int len, uint64 * output)
+{
+   byte bytes[16];
+   MD5_CTX ctx;
+   MD5Init(&ctx);
+   MD5Update(&ctx, (byte *)string, len);
+   MD5Final(bytes, &ctx);
+   output[0] = ((uint64)bytes[ 0] << 56) | ((uint64)bytes[ 1] << 48) | ((uint64)bytes[ 2] << 40) | ((uint64)bytes[ 3] << 32) |
+               ((uint64)bytes[ 4] << 24) | ((uint64)bytes[ 5] << 16) | ((uint64)bytes[ 6] <<  8) | ((uint64)bytes[ 7]      );
+   output[1] = ((uint64)bytes[ 8] << 56) | ((uint64)bytes[ 9] << 48) | ((uint64)bytes[10] << 40) | ((uint64)bytes[11] << 32) |
+               ((uint64)bytes[12] << 24) | ((uint64)bytes[13] << 16) | ((uint64)bytes[14] <<  8) | ((uint64)bytes[15]      );
+}