diff options
Diffstat (limited to 'src/2015/day4/md5.h')
-rw-r--r-- | src/2015/day4/md5.h | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/2015/day4/md5.h b/src/2015/day4/md5.h new file mode 100644 index 0000000..2726e41 --- /dev/null +++ b/src/2015/day4/md5.h @@ -0,0 +1,30 @@ +#pragma once + +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +extern "C" { +typedef struct { + uint64_t size; // Size of input in bytes + uint32_t buffer[4]; // Current accumulation of hash + uint8_t input[64]; // Input to be used in the next step + uint8_t digest[16]; // Result of algorithm +} MD5Context; + +void md5Init(MD5Context* ctx); +void md5Update(MD5Context* ctx, uint8_t* input, size_t input_len); +void md5Finalize(MD5Context* ctx); +void md5Step(uint32_t* buffer, uint32_t* input); + +uint8_t* md5String(char* input); +uint8_t* md5File(FILE* file); + +uint32_t F(uint32_t X, uint32_t Y, uint32_t Z); +uint32_t G(uint32_t X, uint32_t Y, uint32_t Z); +uint32_t H(uint32_t X, uint32_t Y, uint32_t Z); +uint32_t I(uint32_t X, uint32_t Y, uint32_t Z); + +uint32_t rotateLeft(uint32_t x, uint32_t n); +} |