From 104e72999c5993d241670887b91217aec13cbcf3 Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Thu, 2 Oct 2025 16:20:34 -0700 Subject: [PATCH] base layer hashing algorithms, fill out md5 --- src/base/base_hash.c | 36 ++++++++++++++++++++++++++++++++++++ src/base/base_hash.h | 44 ++++++++++++++++++++++++++++++++++++++++++++ src/base/base_inc.c | 1 + src/base/base_inc.h | 1 + 4 files changed, 82 insertions(+) create mode 100644 src/base/base_hash.c create mode 100644 src/base/base_hash.h diff --git a/src/base/base_hash.c b/src/base/base_hash.c new file mode 100644 index 00000000..664b4710 --- /dev/null +++ b/src/base/base_hash.c @@ -0,0 +1,36 @@ +// Copyright (c) Epic Games Tools +// Licensed under the MIT license (https://opensource.org/license/mit/) + +//////////////////////////////// +//~ rjf: Hash Functions + +#if !defined(MD5_API) +# define MD5_API static +# include "third_party/md5/md5.c" +# include "third_party/md5/md5.h" +#endif + +internal MD5 +md5_from_data(String8 data) +{ + MD5_CTX ctx = {0}; + MD5_Init(&ctx); + MD5_Update(&ctx, (void*)data.str, data.size); + MD5 result = {0}; + MD5_Final(result.u8, &ctx); + return result; +} + +internal SHA1 +sha1_from_data(String8 data) +{ + SHA1 result = {0}; + return result; +} + +internal SHA256 +sha256_from_data(String8 data) +{ + SHA256 result = {0}; + return result; +} diff --git a/src/base/base_hash.h b/src/base/base_hash.h new file mode 100644 index 00000000..55149541 --- /dev/null +++ b/src/base/base_hash.h @@ -0,0 +1,44 @@ +// Copyright (c) Epic Games Tools +// Licensed under the MIT license (https://opensource.org/license/mit/) + +#ifndef BASE_HASH_H +#define BASE_HASH_H + +//////////////////////////////// +//~ rjf: Hash Result Types + +typedef union MD5 MD5; +union MD5 +{ + U8 u8[16]; + U16 u16[8]; + U32 u32[4]; + U64 u64[2]; + U128 u128; +}; + +typedef union SHA1 SHA1; +union SHA1 +{ + U8 u8[20]; +}; + +typedef union SHA256 SHA256; +union SHA256 +{ + U8 u8[32]; + U16 u16[16]; + U32 u32[8]; + U64 u64[4]; + U128 u128[2]; + U256 u256; +}; + +//////////////////////////////// +//~ rjf: Hash Functions + +internal MD5 md5_from_data(String8 data); +internal SHA1 sha1_from_data(String8 data); +internal SHA256 sha256_from_data(String8 data); + +#endif // BASE_HASH_H diff --git a/src/base/base_inc.c b/src/base/base_inc.c index 7e9462f5..84444597 100644 --- a/src/base/base_inc.c +++ b/src/base/base_inc.c @@ -12,6 +12,7 @@ #include "base_arena.c" #include "base_math.c" #include "base_strings.c" +#include "base_hash.c" #include "base_threads.c" #include "base_thread_context.c" #include "base_command_line.c" diff --git a/src/base/base_inc.h b/src/base/base_inc.h index 4bf367da..1647d03a 100644 --- a/src/base/base_inc.h +++ b/src/base/base_inc.h @@ -14,6 +14,7 @@ #include "base_arena.h" #include "base_math.h" #include "base_strings.h" +#include "base_hash.h" #include "base_threads.h" #include "base_thread_context.h" #include "base_command_line.h"