aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile4
-rw-r--r--README.md5
-rw-r--r--author1
-rw-r--r--include/ft_ssl.h24
-rw-r--r--include/ft_ssl_md5.h4
-rw-r--r--include/ft_ssl_sha256.h4
m---------libft0
-rw-r--r--src/args.c91
-rw-r--r--src/main.c6
-rw-r--r--src/md5/main_md5.c4
-rw-r--r--src/sha256/main_sha256.c4
11 files changed, 133 insertions, 14 deletions
diff --git a/Makefile b/Makefile
index 6e449a7..5b61455 100644
--- a/Makefile
+++ b/Makefile
@@ -6,7 +6,7 @@
# By: cacharle <marvin@42.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2020/02/03 20:14:50 by cacharle #+# #+# #
-# Updated: 2020/02/22 07:27:54 by cacharle ### ########.fr #
+# Updated: 2020/02/22 10:44:15 by cacharle ### ########.fr #
# #
# **************************************************************************** #
@@ -33,7 +33,7 @@ NAME = ft_ssl
all: prebuild libft_all $(NAME)
prebuild:
- for subdir in $(OBJ_SUBDIR); do mkdir -p $$subdir; done
+ @for subdir in $(OBJ_SUBDIR); do mkdir -p $$subdir; done
$(NAME): $(OBJ)
@echo "Linking: $@"
diff --git a/README.md b/README.md
index 193b575..ef5f811 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,8 @@
# ft_ssl_md5
ft\_ssl\_md5 project of school 42
+
+## Message Digest Commands
+
+- md5
+- sha256
diff --git a/author b/author
new file mode 100644
index 0000000..718becd
--- /dev/null
+++ b/author
@@ -0,0 +1 @@
+cacharle
diff --git a/include/ft_ssl.h b/include/ft_ssl.h
index c5709d6..be9b4da 100644
--- a/include/ft_ssl.h
+++ b/include/ft_ssl.h
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/02/03 20:27:19 by cacharle #+# #+# */
-/* Updated: 2020/02/22 07:20:34 by cacharle ### ########.fr */
+/* Updated: 2020/02/22 10:10:30 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -25,10 +25,32 @@ typedef struct
t_func_main entry;
} t_command;
+enum
+{
+ FLAG_PIPE = 1 << 0,
+ FLAG_QUIET = 1 << 1,
+ FLAG_REVERSE = 1 << 2,
+ FLAG_STRING = 1 << 3
+};
+typedef unsigned char t_flags;
+
+typedef struct
+{
+ unsigned char *data;
+ int size;
+} t_digest;
+typedef void (*t_func_hash)(char *message, t_digest *digest);
+
/*
** error.c
*/
void fl_error_command(char *command);
+/*
+** args.c
+*/
+
+int fl_parse_args(char *name, int argc, char **argv, t_func_hash func_hash);
+
#endif
diff --git a/include/ft_ssl_md5.h b/include/ft_ssl_md5.h
index cc0f498..b012533 100644
--- a/include/ft_ssl_md5.h
+++ b/include/ft_ssl_md5.h
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/02/22 07:14:45 by cacharle #+# #+# */
-/* Updated: 2020/02/22 07:18:24 by cacharle ### ########.fr */
+/* Updated: 2020/02/22 08:57:06 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -17,6 +17,6 @@
** main_md5.c
*/
-int main_md5(int argc, char **argv);
+int fl_main_md5(int argc, char **argv);
#endif
diff --git a/include/ft_ssl_sha256.h b/include/ft_ssl_sha256.h
index 7bb05ff..9427f88 100644
--- a/include/ft_ssl_sha256.h
+++ b/include/ft_ssl_sha256.h
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/02/22 07:18:42 by cacharle #+# #+# */
-/* Updated: 2020/02/22 07:18:57 by cacharle ### ########.fr */
+/* Updated: 2020/02/22 08:57:14 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -17,6 +17,6 @@
** main_sha256.c
*/
-int main_sha256(int argc, char **argv);
+int fl_main_sha256(int argc, char **argv);
#endif
diff --git a/libft b/libft
-Subproject ac0559db82bfef3b7ca3d976b1d7700ed2c1c1f
+Subproject ca68aa1e6fca81213d19431439ad0b31863fe10
diff --git a/src/args.c b/src/args.c
new file mode 100644
index 0000000..6cfdb3f
--- /dev/null
+++ b/src/args.c
@@ -0,0 +1,91 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* args.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2020/02/22 09:43:42 by cacharle #+# #+# */
+/* Updated: 2020/02/22 10:44:04 by cacharle ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#include "ft_ssl.h"
+
+static void st_print_digest_id(t_flags flags, char *id)
+{
+ if (flags & FLAG_STRING)
+ ft_putchar('"');
+ ft_putstr(id);
+ if (flags & FLAG_STRING)
+ ft_putchar('"');
+}
+
+static void st_print_digest(t_digest *digest, t_flags flags, char *name, char *id)
+{
+ int i;
+
+ if (!(flags & FLAG_REVERSE) && !(flags & FLAG_QUIET))
+ {
+ ft_putstr(name);
+ ft_putchar('(');
+ st_print_digest_id(flags, id);
+ ft_putstr(") = ");
+ }
+ i = -1;
+ while (++i < digest->size)
+ ft_putnbr_base(digest->data[i], "0123456789abcdef");
+ if (flags & FLAG_QUIET)
+ return ;
+ ft_putchar(' ');
+ st_print_digest_id(flags, id);
+}
+
+int fl_parse_args(char *name, int argc, char **argv, t_func_hash func_hash)
+{
+ t_flags flags;
+ t_digest digest;
+ char *file;
+
+ flags = 0x0;
+ while (**argv == '-')
+ {
+ (*argv)++;
+ if (**argv == 's')
+ {
+ if ((*argv)[1] == '\0')
+ {
+ func_hash(*(++argv), &digest);
+ argc--;
+ }
+ else
+ func_hash(ft_strdup(*argv + 1), &digest);
+ st_print_digest(&digest, flags, name, "");
+ }
+ else if (**argv == 'p')
+ flags |= FLAG_PIPE;
+ else if (**argv == 'q')
+ flags |= FLAG_QUIET;
+ else if (**argv == 'r')
+ flags |= FLAG_REVERSE;
+ else
+ return (1);
+ if (ft_strchr("pqrs", (*argv)[1]) != NULL)
+ {
+ **argv = '-';
+ continue;
+ }
+ argv++;
+ argc--;
+ }
+ while (argc-- > 0)
+ {
+ if ((file = ft_read_file(*argv)) == NULL)
+ return (1);
+ func_hash(file, &digest);
+ free(file);
+ st_print_digest(&digest, flags, name, *argv);
+ argv++;
+ }
+ return (0);
+}
diff --git a/src/main.c b/src/main.c
index 1d4b928..5bfd97f 100644
--- a/src/main.c
+++ b/src/main.c
@@ -6,15 +6,15 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/02/03 20:29:33 by cacharle #+# #+# */
-/* Updated: 2020/02/22 07:22:09 by cacharle ### ########.fr */
+/* Updated: 2020/02/22 08:57:39 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
#include "ft_ssl.h"
static t_command g_commands[] = {
- {"md5", main_md5},
- {"sha256", main_sha256}
+ {"md5", fl_main_md5},
+ {"sha256", fl_main_sha256}
};
int fl_dispatch_command(char *command, int argc, char **argv)
diff --git a/src/md5/main_md5.c b/src/md5/main_md5.c
index 703f8ef..02dcaa0 100644
--- a/src/md5/main_md5.c
+++ b/src/md5/main_md5.c
@@ -6,13 +6,13 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/02/22 07:20:07 by cacharle #+# #+# */
-/* Updated: 2020/02/22 07:20:15 by cacharle ### ########.fr */
+/* Updated: 2020/02/22 08:57:32 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
#include "ft_ssl_md5.h"
-int main_md5(int argc, char **argv)
+int fl_main_md5(int argc, char **argv)
{
return (0);
}
diff --git a/src/sha256/main_sha256.c b/src/sha256/main_sha256.c
index e2b0955..7a83a61 100644
--- a/src/sha256/main_sha256.c
+++ b/src/sha256/main_sha256.c
@@ -6,13 +6,13 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/02/22 07:19:18 by cacharle #+# #+# */
-/* Updated: 2020/02/22 07:19:47 by cacharle ### ########.fr */
+/* Updated: 2020/02/22 08:57:22 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
#include "ft_ssl_sha256.h"
-int main_sha256(int argc, char **argv)
+int fl_main_sha256(int argc, char **argv)
{
return (0);
}