/* ************************************************************************** */
/*                                                                            */
/*                                                        :::      ::::::::   */
/*   sl_sha256.c                                        :+:      :+:    :+:   */
/*                                                    +:+ +:+         +:+     */
/*   By: bchanot <bchanot@student.42.fr>            +#+  +:+       +#+        */
/*                                                +#+#+#+#+#+   +#+           */
/*   Created: 2018/09/24 00:11:06 by bchanot           #+#    #+#             */
/*   Updated: 2018/10/08 21:23:37 by bchanot          ###   ########.fr       */
/*                                                                            */
/* ************************************************************************** */

#include "ft_ssl.h"
#include "sl_md5.h"
#include "sl_sha2.h"
#include "sl_sha3_5.h"

void	sl_md5(const char *str)
{
	t_uint8	hash[16];
	t_md5	ctx;
	size_t	i;

	sl_md5_init(&ctx);
	sl_md5_update(&ctx, (const t_uint8 *)str, ft_strlen(str));
	sl_md5_final(&ctx, hash);
	i = -1;
	while (++i < 16)
		ft_printf(1, "%02x", hash[i]);
}

void	sl_sha224(const char *str)
{
	t_uint8	hash[28];
	t_sha2	ctx;
	size_t	i;

	ft_bzero(&ctx, sizeof(t_sha2));
	sl_sha2_init(&ctx, SHA224);
	sl_sha2_update(&ctx, (const t_uint8 *)str, ft_strlen(str));
	sl_sha2_final(&ctx);
	sl_sha2_get_hash(&ctx, hash);
	i = -1;
	while (++i < 28)
		ft_printf(1, "%02x", hash[i]);
}

void	sl_sha256(const char *str)
{
	t_uint8	hash[32];
	t_sha2	ctx;
	size_t	i;

	ft_bzero(&ctx, sizeof(t_sha2));
	sl_sha2_init(&ctx, SHA256);
	sl_sha2_update(&ctx, (const t_uint8 *)str, ft_strlen(str));
	sl_sha2_final(&ctx);
	sl_sha2_get_hash(&ctx, hash);
	i = -1;
	while (++i < 32)
		ft_printf(1, "%02x", hash[i]);
}

void	sl_sha384(const char *str)
{
	t_uint8		hash[48];
	t_sha3_5	ctx;
	size_t		i;

	ft_bzero(&ctx, sizeof(t_sha3_5));
	sl_sha3_5_init(&ctx, SHA384);
	sl_sha3_5_update(&ctx, (const t_uint8 *)str, ft_strlen(str));
	sl_sha3_5_final(&ctx);
	sl_sha3_5_get_hash(&ctx, hash);
	i = -1;
	while (++i < 48)
		ft_printf(1, "%02x", hash[i]);
}

void	sl_sha512(const char *str)
{
	t_uint8		hash[64];
	t_sha3_5	ctx;
	size_t		i;

	ft_bzero(&ctx, sizeof(t_sha3_5));
	sl_sha3_5_init(&ctx, SHA512);
	sl_sha3_5_update(&ctx, (const t_uint8 *)str, ft_strlen(str));
	sl_sha3_5_final(&ctx);
	sl_sha3_5_get_hash(&ctx, hash);
	i = -1;
	while (++i < 64)
		ft_printf(1, "%02x", hash[i]);
}
