#include <openssl/sha.h>
#include <stdio.h>
#include <string.h>
#include <memory.h>

char* doPasswordDigest(char*,char*,char*);
int main()
{
char* pr=NULL;
pr = doPasswordDigest("Nonces-WS-Security","Created-WS-Security","01234567890123456789");
return 0;
}

void hex_print(unsigned char *c, int n)
{
	int i;
	for (i = 0; i < n; i++)
		printf("%02x", c[i]);
	printf("\n");
}

char* doPasswordDigest(char *nonce,char *created,char *passwordin)
{
      char* passwordout=NULL;
	int para_size=0;
	char* para_cat=NULL;
	char* md_return=NULL;
	
	/*para_cat==nonce + created + password*/
 	
	para_size=strlen(nonce)+strlen(created)+strlen(passwordin);
	para_cat=(char*)malloc(para_size);
	strcpy(para_cat,nonce);
	strcat(para_cat,created);
	strcat(para_cat,passwordin);

/*SHA1(para_cat,para_size,passwordwout)==SHA-1 ( nonce + created + password ) */
	
	passwordout = (unsigned char*)malloc(20);
	SHA1((const unsigned char*)para_cat,para_size,(unsigned char*)passwordout);
	hex_print(passwordout, 20);
	
/* I want to encode passwordout to Base64*/ 
 	
	free(para_cat);
	free(passwordout);
        
	return nonce;/*this is a just a test , after encodeing we have return base64 encoded hash*/
}

