summaryrefslogtreecommitdiffstats
path: root/src/lib/crypto/krb/dk/derive.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/crypto/krb/dk/derive.c')
-rw-r--r--src/lib/crypto/krb/dk/derive.c119
1 files changed, 60 insertions, 59 deletions
diff --git a/src/lib/crypto/krb/dk/derive.c b/src/lib/crypto/krb/dk/derive.c
index 5019975f20..c963c3959b 100644
--- a/src/lib/crypto/krb/dk/derive.c
+++ b/src/lib/crypto/krb/dk/derive.c
@@ -1,3 +1,4 @@
+/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */
/*
* Copyright (C) 1998 by the FundsXpress, INC.
*
@@ -31,17 +32,17 @@ static krb5_key
find_cached_dkey(struct derived_key *list, const krb5_data *constant)
{
for (; list; list = list->next) {
- if (data_eq(list->constant, *constant)) {
- krb5_k_reference_key(NULL, list->dkey);
- return list->dkey;
- }
+ if (data_eq(list->constant, *constant)) {
+ krb5_k_reference_key(NULL, list->dkey);
+ return list->dkey;
+ }
}
return NULL;
}
static krb5_error_code
add_cached_dkey(krb5_key key, const krb5_data *constant,
- const krb5_keyblock *dkeyblock, krb5_key *cached_dkey)
+ const krb5_keyblock *dkeyblock, krb5_key *cached_dkey)
{
krb5_key dkey;
krb5_error_code ret;
@@ -51,13 +52,13 @@ add_cached_dkey(krb5_key key, const krb5_data *constant,
/* Allocate fields for the new entry. */
dkent = malloc(sizeof(*dkent));
if (dkent == NULL)
- goto cleanup;
+ goto cleanup;
data = malloc(constant->length);
if (data == NULL)
- goto cleanup;
+ goto cleanup;
ret = krb5_k_create_key(NULL, dkeyblock, &dkey);
if (ret != 0)
- goto cleanup;
+ goto cleanup;
/* Add the new entry to the list. */
memcpy(data, constant->data, constant->length);
@@ -86,8 +87,8 @@ cleanup:
*/
krb5_error_code
krb5int_derive_keyblock(const struct krb5_enc_provider *enc,
- krb5_key inkey, krb5_keyblock *outkey,
- const krb5_data *in_constant)
+ krb5_key inkey, krb5_keyblock *outkey,
+ const krb5_data *in_constant)
{
size_t blocksize, keybytes, n;
unsigned char *inblockdata = NULL, *outblockdata = NULL, *rawkey = NULL;
@@ -98,19 +99,19 @@ krb5int_derive_keyblock(const struct krb5_enc_provider *enc,
keybytes = enc->keybytes;
if (inkey->keyblock.length != enc->keylength ||
- outkey->length != enc->keylength)
- return KRB5_CRYPTO_INTERNAL;
+ outkey->length != enc->keylength)
+ return KRB5_CRYPTO_INTERNAL;
/* Allocate and set up buffers. */
inblockdata = k5alloc(blocksize, &ret);
if (ret)
- goto cleanup;
+ goto cleanup;
outblockdata = k5alloc(blocksize, &ret);
if (ret)
- goto cleanup;
+ goto cleanup;
rawkey = k5alloc(keybytes, &ret);
if (ret)
- goto cleanup;
+ goto cleanup;
inblock.data = (char *) inblockdata;
inblock.length = blocksize;
@@ -121,28 +122,28 @@ krb5int_derive_keyblock(const struct krb5_enc_provider *enc,
/* Initialize the input block. */
if (in_constant->length == inblock.length) {
- memcpy(inblock.data, in_constant->data, inblock.length);
+ memcpy(inblock.data, in_constant->data, inblock.length);
} else {
- krb5int_nfold(in_constant->length*8, (unsigned char *) in_constant->data,
- inblock.length*8, (unsigned char *) inblock.data);
+ krb5int_nfold(in_constant->length*8, (unsigned char *) in_constant->data,
+ inblock.length*8, (unsigned char *) inblock.data);
}
/* Loop encrypting the blocks until enough key bytes are generated */
n = 0;
while (n < keybytes) {
- ret = (*enc->encrypt)(inkey, 0, &inblock, &outblock);
- if (ret)
- goto cleanup;
-
- if ((keybytes - n) <= outblock.length) {
- memcpy(rawkey + n, outblock.data, (keybytes - n));
- break;
- }
-
- memcpy(rawkey+n, outblock.data, outblock.length);
- memcpy(inblock.data, outblock.data, outblock.length);
- n += outblock.length;
+ ret = (*enc->encrypt)(inkey, 0, &inblock, &outblock);
+ if (ret)
+ goto cleanup;
+
+ if ((keybytes - n) <= outblock.length) {
+ memcpy(rawkey + n, outblock.data, (keybytes - n));
+ break;
+ }
+
+ memcpy(rawkey+n, outblock.data, outblock.length);
+ memcpy(inblock.data, outblock.data, outblock.length);
+ n += outblock.length;
}
/* postprocess the key */
@@ -152,7 +153,7 @@ krb5int_derive_keyblock(const struct krb5_enc_provider *enc,
ret = (*enc->make_key)(&inblock, outkey);
if (ret)
- goto cleanup;
+ goto cleanup;
cleanup:
zapfree(inblockdata, blocksize);
@@ -163,8 +164,8 @@ cleanup:
krb5_error_code
krb5int_derive_key(const struct krb5_enc_provider *enc,
- krb5_key inkey, krb5_key *outkey,
- const krb5_data *in_constant)
+ krb5_key inkey, krb5_key *outkey,
+ const krb5_data *in_constant)
{
krb5_keyblock keyblock;
krb5_error_code ret;
@@ -175,23 +176,23 @@ krb5int_derive_key(const struct krb5_enc_provider *enc,
/* Check for a cached result. */
dkey = find_cached_dkey(inkey->derived, in_constant);
if (dkey != NULL) {
- *outkey = dkey;
- return 0;
+ *outkey = dkey;
+ return 0;
}
/* Derive into a temporary keyblock. */
keyblock.length = enc->keylength;
keyblock.contents = malloc(keyblock.length);
if (keyblock.contents == NULL)
- return ENOMEM;
+ return ENOMEM;
ret = krb5int_derive_keyblock(enc, inkey, &keyblock, in_constant);
if (ret)
- goto cleanup;
+ goto cleanup;
/* Cache the derived key. */
ret = add_cached_dkey(inkey, in_constant, &keyblock, &dkey);
if (ret != 0)
- goto cleanup;
+ goto cleanup;
*outkey = dkey;
@@ -202,8 +203,8 @@ cleanup:
krb5_error_code
krb5int_derive_random(const struct krb5_enc_provider *enc,
- krb5_key inkey, krb5_data *outrnd,
- const krb5_data *in_constant)
+ krb5_key inkey, krb5_data *outrnd,
+ const krb5_data *in_constant)
{
size_t blocksize, keybytes, n;
unsigned char *inblockdata = NULL, *outblockdata = NULL, *rawkey = NULL;
@@ -214,19 +215,19 @@ krb5int_derive_random(const struct krb5_enc_provider *enc,
keybytes = enc->keybytes;
if (inkey->keyblock.length != enc->keylength || outrnd->length != keybytes)
- return KRB5_CRYPTO_INTERNAL;
+ return KRB5_CRYPTO_INTERNAL;
/* Allocate and set up buffers. */
inblockdata = k5alloc(blocksize, &ret);
if (ret)
- goto cleanup;
+ goto cleanup;
outblockdata = k5alloc(blocksize, &ret);
if (ret)
- goto cleanup;
+ goto cleanup;
rawkey = k5alloc(keybytes, &ret);
if (ret)
- goto cleanup;
+ goto cleanup;
inblock.data = (char *) inblockdata;
inblock.length = blocksize;
@@ -236,27 +237,27 @@ krb5int_derive_random(const struct krb5_enc_provider *enc,
/* Initialize the input block. */
if (in_constant->length == inblock.length) {
- memcpy(inblock.data, in_constant->data, inblock.length);
+ memcpy(inblock.data, in_constant->data, inblock.length);
} else {
- krb5int_nfold(in_constant->length*8, (unsigned char *) in_constant->data,
- inblock.length*8, (unsigned char *) inblock.data);
+ krb5int_nfold(in_constant->length*8, (unsigned char *) in_constant->data,
+ inblock.length*8, (unsigned char *) inblock.data);
}
/* Loop encrypting the blocks until enough key bytes are generated. */
n = 0;
while (n < keybytes) {
- ret = (*enc->encrypt)(inkey, 0, &inblock, &outblock);
- if (ret)
- goto cleanup;
-
- if ((keybytes - n) <= outblock.length) {
- memcpy(rawkey + n, outblock.data, (keybytes - n));
- break;
- }
-
- memcpy(rawkey+n, outblock.data, outblock.length);
- memcpy(inblock.data, outblock.data, outblock.length);
- n += outblock.length;
+ ret = (*enc->encrypt)(inkey, 0, &inblock, &outblock);
+ if (ret)
+ goto cleanup;
+
+ if ((keybytes - n) <= outblock.length) {
+ memcpy(rawkey + n, outblock.data, (keybytes - n));
+ break;
+ }
+
+ memcpy(rawkey+n, outblock.data, outblock.length);
+ memcpy(inblock.data, outblock.data, outblock.length);
+ n += outblock.length;
}
/* Postprocess the key. */