summaryrefslogtreecommitdiff
path: root/sbin/isakmpd/hash.c
diff options
context:
space:
mode:
authorTheo de Raadt <deraadt@cvs.openbsd.org>2004-04-15 18:39:31 +0000
committerTheo de Raadt <deraadt@cvs.openbsd.org>2004-04-15 18:39:31 +0000
commitb1ac98abf9e700f03d5aa5f97c06dab605d6da06 (patch)
treec08a9624b4a539b85c5650bcf09528d13eb2d039 /sbin/isakmpd/hash.c
parentaeca45bc7d867b71e9600c7108674fae5db8ff9c (diff)
partial move to KNF. More to come. This has happened because there
are a raft of source code auditors who are willing to help improve this code only if this is done, and hey, isakmpd does need our standard auditing process. ok ho hshoexer
Diffstat (limited to 'sbin/isakmpd/hash.c')
-rw-r--r--sbin/isakmpd/hash.c112
1 files changed, 57 insertions, 55 deletions
diff --git a/sbin/isakmpd/hash.c b/sbin/isakmpd/hash.c
index 978857eaba9..bf77af07836 100644
--- a/sbin/isakmpd/hash.c
+++ b/sbin/isakmpd/hash.c
@@ -1,5 +1,5 @@
-/* $OpenBSD: hash.c,v 1.14 2004/03/31 10:54:46 ho Exp $ */
-/* $EOM: hash.c,v 1.10 1999/04/17 23:20:34 niklas Exp $ */
+/* $OpenBSD: hash.c,v 1.15 2004/04/15 18:39:25 deraadt Exp $ */
+/* $EOM: hash.c,v 1.10 1999/04/17 23:20:34 niklas Exp $ */
/*
* Copyright (c) 1998 Niels Provos. All rights reserved.
@@ -38,20 +38,20 @@
#else
#include <md5.h>
#include <sha1.h>
-#endif /* __APPLE__ */
+#endif /* __APPLE__ */
#include "sysdep.h"
#include "hash.h"
#include "log.h"
-void hmac_init (struct hash *, unsigned char *, unsigned int);
-void hmac_final (unsigned char *, struct hash *);
+void hmac_init(struct hash *, unsigned char *, unsigned int);
+void hmac_final(unsigned char *, struct hash *);
/* Temporary hash contexts. */
static union {
- MD5_CTX md5ctx;
- SHA1_CTX sha1ctx;
+ MD5_CTX md5ctx;
+ SHA1_CTX sha1ctx;
} Ctx, Ctx2;
/* Temporary hash digest. */
@@ -60,32 +60,37 @@ static unsigned char digest[HASH_MAX];
/* Encapsulation of hash functions. */
static struct hash hashes[] = {
- { HASH_MD5, 5, MD5_SIZE, (void *)&Ctx.md5ctx, digest,
- sizeof (MD5_CTX), (void *)&Ctx2.md5ctx,
- (void (*) (void *))MD5Init,
- (void (*) (void *, unsigned char *, unsigned int))MD5Update,
- (void (*) (unsigned char *, void *))MD5Final,
- hmac_init, hmac_final },
- { HASH_SHA1, 6, SHA1_SIZE, (void *)&Ctx.sha1ctx, digest,
- sizeof (SHA1_CTX), (void *)&Ctx2.sha1ctx,
- (void (*) (void *))SHA1Init,
- (void (*) (void *, unsigned char *, unsigned int))SHA1Update,
- (void (*) (unsigned char *, void *))SHA1Final,
- hmac_init, hmac_final },
+ {
+ HASH_MD5, 5, MD5_SIZE, (void *) &Ctx.md5ctx, digest,
+ sizeof(MD5_CTX), (void *) &Ctx2.md5ctx,
+ (void (*) (void *)) MD5Init,
+ (void (*) (void *, unsigned char *, unsigned int)) MD5Update,
+ (void (*) (unsigned char *, void *)) MD5Final,
+ hmac_init,
+ hmac_final
+ }, {
+ HASH_SHA1, 6, SHA1_SIZE, (void *) &Ctx.sha1ctx, digest,
+ sizeof(SHA1_CTX), (void *) &Ctx2.sha1ctx,
+ (void (*) (void *)) SHA1Init,
+ (void (*) (void *, unsigned char *, unsigned int)) SHA1Update,
+ (void (*) (unsigned char *, void *)) SHA1Final,
+ hmac_init,
+ hmac_final
+ },
};
struct hash *
-hash_get (enum hashes hashtype)
+hash_get(enum hashes hashtype)
{
- size_t i;
+ size_t i;
- LOG_DBG ((LOG_CRYPTO, 60, "hash_get: requested algorithm %d", hashtype));
+ LOG_DBG((LOG_CRYPTO, 60, "hash_get: requested algorithm %d", hashtype));
- for (i = 0; i < sizeof hashes / sizeof hashes[0]; i++)
- if (hashtype == hashes[i].type)
- return &hashes[i];
+ for (i = 0; i < sizeof hashes / sizeof hashes[0]; i++)
+ if (hashtype == hashes[i].type)
+ return &hashes[i];
- return 0;
+ return 0;
}
/*
@@ -95,38 +100,35 @@ hash_get (enum hashes hashtype)
*/
void
-hmac_init (struct hash *hash, unsigned char *okey, unsigned int len)
+hmac_init(struct hash *hash, unsigned char *okey, unsigned int len)
{
- unsigned int i, blocklen = HMAC_BLOCKLEN;
- unsigned char key[HMAC_BLOCKLEN];
+ unsigned int i, blocklen = HMAC_BLOCKLEN;
+ unsigned char key[HMAC_BLOCKLEN];
- memset (key, 0, blocklen);
- if (len > blocklen)
- {
- /* Truncate key down to blocklen */
- hash->Init (hash->ctx);
- hash->Update (hash->ctx, okey, len);
- hash->Final (key, hash->ctx);
- }
- else
- {
- memcpy (key, okey, len);
- }
+ memset(key, 0, blocklen);
+ if (len > blocklen) {
+ /* Truncate key down to blocklen */
+ hash->Init(hash->ctx);
+ hash->Update(hash->ctx, okey, len);
+ hash->Final(key, hash->ctx);
+ } else {
+ memcpy(key, okey, len);
+ }
- /* HMAC I and O pad computation */
- for (i = 0; i < blocklen; i++)
- key[i] ^= HMAC_IPAD_VAL;
+ /* HMAC I and O pad computation */
+ for (i = 0; i < blocklen; i++)
+ key[i] ^= HMAC_IPAD_VAL;
- hash->Init (hash->ctx);
- hash->Update (hash->ctx, key, blocklen);
+ hash->Init(hash->ctx);
+ hash->Update(hash->ctx, key, blocklen);
- for (i = 0; i < blocklen; i++)
- key[i] ^= (HMAC_IPAD_VAL ^ HMAC_OPAD_VAL);
+ for (i = 0; i < blocklen; i++)
+ key[i] ^= (HMAC_IPAD_VAL ^ HMAC_OPAD_VAL);
- hash->Init (hash->ctx2);
- hash->Update (hash->ctx2, key, blocklen);
+ hash->Init(hash->ctx2);
+ hash->Update(hash->ctx2, key, blocklen);
- memset (key, 0, blocklen);
+ memset(key, 0, blocklen);
}
/*
@@ -134,9 +136,9 @@ hmac_init (struct hash *hash, unsigned char *okey, unsigned int len)
*/
void
-hmac_final (unsigned char *dgst, struct hash *hash)
+hmac_final(unsigned char *dgst, struct hash *hash)
{
- hash->Final (dgst, hash->ctx);
- hash->Update (hash->ctx2, dgst, hash->hashsize);
- hash->Final (dgst, hash->ctx2);
+ hash->Final(dgst, hash->ctx);
+ hash->Update(hash->ctx2, dgst, hash->hashsize);
+ hash->Final(dgst, hash->ctx2);
}