[ADD] Raw SHA inputs, hashtypes to ShaToHex

This commit is contained in:
LDA 2024-08-25 21:40:23 +02:00
parent f5ce4f5238
commit adb7322823
4 changed files with 61 additions and 14 deletions

View file

@ -28,21 +28,44 @@
#include <string.h>
char *
ShaToHex(unsigned char *bytes)
ShaToHex(unsigned char *bytes, HashType type)
{
size_t i = 0;
char *str = Malloc(((strlen((char *) bytes) * 2) + 1) * sizeof(char));
size_t i = 0, size;
char *str;
switch (type)
{
case HASH_SHA1:
size = 20;
break;
case HASH_SHA256:
size = 32;
break;
default:
return NULL;
}
str = Malloc(((size * 2) + 1) * sizeof(char));
if (!str)
{
return NULL;
}
while (bytes[i] != '\0')
for (i = 0; i < size; i++)
{
snprintf(str + (2 * i), 3, "%02x", bytes[i]);
i++;
}
return str;
}
unsigned char *
Sha256(char *str)
{
return Sha256Raw((unsigned char *) str, str ? strlen(str) : 0);
}
unsigned char *
Sha1(char *str)
{
return Sha1Raw((unsigned char *) str, str ? strlen(str) : 0);
}

View file

@ -34,7 +34,7 @@
#include <openssl/sha.h>
unsigned char *
Sha1(char *str)
Sha1Raw(unsigned char *str, size_t len)
{
unsigned char *digest;
if (!str)
@ -43,7 +43,7 @@ Sha1(char *str)
}
digest = Malloc(20 + 1);
SHA1((unsigned char *) str, strlen(str), digest);
SHA1(str, len, digest);
digest[20] = '\0';
return digest;
}
@ -261,7 +261,7 @@ Sha1Calculate(Sha1Context * ctx, unsigned char *out)
}
unsigned char *
Sha1(char *str)
Sha1Raw(unsigned char *str, size_t len)
{
Sha1Context ctx;
unsigned char *out;
@ -278,7 +278,7 @@ Sha1(char *str)
}
Sha1Init(&ctx);
Sha1Update(&ctx, str, strlen(str));
Sha1Update(&ctx, str, len);
Sha1Calculate(&ctx, out);
out[160 / 8] = '\0';

View file

@ -36,7 +36,7 @@
#include <openssl/sha.h>
unsigned char *
Sha256(char *str)
Sha256Raw(unsigned char *str, size_t len)
{
unsigned char *digest;
if (!str)
@ -45,7 +45,7 @@ Sha256(char *str)
}
digest = Malloc(32 + 1);
SHA256((unsigned char *) str, strlen(str), digest);
SHA256(str, len, digest);
digest[32] = '\0';
return digest;
}
@ -192,7 +192,7 @@ Sha256Process(Sha256Context * context, unsigned char *data, size_t length)
}
unsigned char *
Sha256(char *str)
Sha256Raw(unsigned char *str, size_t len)
{
Sha256Context context;
size_t i;
@ -228,7 +228,7 @@ Sha256(char *str)
context.length = 0;
memset(context.buffer, 0, 64);
Sha256Process(&context, (unsigned char *) str, strlen(str));
Sha256Process(&context, str, len);
memset(fill, 0, 64);
fill[0] = 0x80;