-#ifndef SHA1_H
-#define SHA1_H
+#ifndef UTIL_LINUX_SHA1_H
+#define UTIL_LINUX_SHA1_H
/*
SHA-1 in C
#include "stdint.h"
-#define SHA1LENGTH 20
+#define UL_SHA1LENGTH 20
typedef struct
{
- uint32_t state[5];
- uint32_t count[2];
- unsigned char buffer[64];
-} SHA1_CTX;
-
-void SHA1Transform(
- uint32_t state[5],
- const unsigned char buffer[64]
- );
-
-void SHA1Init(
- SHA1_CTX * context
- );
-
-void SHA1Update(
- SHA1_CTX * context,
- const unsigned char *data,
- uint32_t len
- );
-
-void SHA1Final(
- unsigned char digest[SHA1LENGTH],
- SHA1_CTX * context
- );
-
-void SHA1(
- char *hash_out,
- const char *str,
- unsigned len);
-
-#endif /* SHA1_H */
+ uint32_t state[5];
+ uint32_t count[2];
+ unsigned char buffer[64];
+} UL_SHA1_CTX;
+
+void ul_SHA1Transform(uint32_t state[5], const unsigned char buffer[64]);
+void ul_SHA1Init(UL_SHA1_CTX *context);
+void ul_SHA1Update(UL_SHA1_CTX *context, const unsigned char *data, uint32_t len);
+void ul_SHA1Final(unsigned char digest[UL_SHA1LENGTH], UL_SHA1_CTX *context);
+void ul_SHA1(char *hash_out, const char *str, unsigned len);
+
+#endif /* UTIL_LINUX_SHA1_H */
/* Hash a single 512-bit block. This is the core of the algorithm. */
-void SHA1Transform(
+void ul_SHA1Transform(
uint32_t state[5],
const unsigned char buffer[64]
)
/* SHA1Init - Initialize new context */
-void SHA1Init(
- SHA1_CTX * context
+void ul_SHA1Init(
+ UL_SHA1_CTX * context
)
{
/* SHA1 initialization constants */
/* Run your data through this. */
-void SHA1Update(
- SHA1_CTX * context,
+void ul_SHA1Update(
+ UL_SHA1_CTX * context,
const unsigned char *data,
uint32_t len
)
if ((j + len) > 63)
{
memcpy(&context->buffer[j], data, (i = 64 - j));
- SHA1Transform(context->state, context->buffer);
+ ul_SHA1Transform(context->state, context->buffer);
for (; i + 63 < len; i += 64)
{
- SHA1Transform(context->state, &data[i]);
+ ul_SHA1Transform(context->state, &data[i]);
}
j = 0;
}
/* Add padding and return the message digest. */
-void SHA1Final(
+void ul_SHA1Final(
unsigned char digest[20],
- SHA1_CTX * context
+ UL_SHA1_CTX * context
)
{
unsigned i;
}
#endif
c = 0200;
- SHA1Update(context, &c, 1);
+ ul_SHA1Update(context, &c, 1);
while ((context->count[0] & 504) != 448)
{
c = 0000;
- SHA1Update(context, &c, 1);
+ ul_SHA1Update(context, &c, 1);
}
- SHA1Update(context, finalcount, 8); /* Should cause a SHA1Transform() */
+ ul_SHA1Update(context, finalcount, 8); /* Should cause a SHA1Transform() */
for (i = 0; i < 20; i++)
{
digest[i] = (unsigned char)
memset(&finalcount, '\0', sizeof(finalcount));
}
-void SHA1(
+void ul_SHA1(
char *hash_out,
const char *str,
unsigned len)
{
- SHA1_CTX ctx;
+ UL_SHA1_CTX ctx;
unsigned int ii;
- SHA1Init(&ctx);
+ ul_SHA1Init(&ctx);
for (ii=0; ii<len; ii+=1)
- SHA1Update(&ctx, (const unsigned char*)str + ii, 1);
- SHA1Final((unsigned char *)hash_out, &ctx);
+ ul_SHA1Update(&ctx, (const unsigned char*)str + ii, 1);
+ ul_SHA1Final((unsigned char *)hash_out, &ctx);
hash_out[20] = '\0';
}
*/
void uuid_generate_sha1(uuid_t out, const uuid_t ns, const char *name, size_t len)
{
- SHA1_CTX ctx;
- char hash[SHA1LENGTH];
+ UL_SHA1_CTX ctx;
+ char hash[UL_SHA1LENGTH];
- SHA1Init(&ctx);
+ ul_SHA1Init(&ctx);
/* hash concatenation of well-known UUID with name */
- SHA1Update(&ctx, ns, sizeof(uuid_t));
- SHA1Update(&ctx, (const unsigned char *)name, len);
+ ul_SHA1Update(&ctx, ns, sizeof(uuid_t));
+ ul_SHA1Update(&ctx, (const unsigned char *)name, len);
- SHA1Final((unsigned char *)hash, &ctx);
+ ul_SHA1Final((unsigned char *)hash, &ctx);
memcpy(out, hash, sizeof(uuid_t));