/*
 * Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All
 * rights reserved.
 * 
 * License to copy and use this software is granted provided that it
 * is identified as the "RSA Data Security, Inc. MD5 Message-Digest
 * Algorithm" in all material mentioning or referencing this software
 * or this function.
 * 
 * License is also granted to make and use derivative works provided
 * that such works are identified as "derived from the RSA Data
 * Security, Inc. MD5 Message-Digest Algorithm" in all material
 * mentioning or referencing the derived work.
 * 
 * RSA Data Security, Inc. makes no representations concerning either
 * the merchantability of this software or the suitability of this
 * software for any particular purpose. It is provided "as is"
 * without express or implied warranty of any kind.
 * 
 * These notices must be retained in any copies of any part of this
 * documentation and/or software.
 */

/*!
 * \file
 * \brief Kamailio core :: md5 hash support
 * \ingroup core
 * Module: \ref core
 */

#include <stdio.h>
#include <time.h>
#include <string.h>
#include "md5.h"
#include "md5utils.h"
#include "dprint.h"
#include "ut.h"


/*!
  * \brief Calculate a MD5 digests over a string array
  * 
  * Calculate a MD5 digests over a string array and stores the result in the
  * destination char array. This function assumes 32 bytes in the destination
  * buffer.
  * \param dst destination
  * \param src string input array
  * \param size elements in the input array
  */
void MD5StringArray (char *dst, str src[], int size)
{
	MD5_CTX context;
	unsigned char digest[16];
 	int i;
	int len;
	char *s;

	MD5Init (&context);
	for (i=0; i<size; i++) {
		trim_len( len, s, src[i] );
		if (len > 0)
  			MD5Update (&context, s, len);
  }
  U_MD5Final (digest, &context);

  string2hex(digest, 16, dst );
  LM_DBG("MD5 calculated: %.*s\n", MD5_LEN, dst );

}