summaryrefslogtreecommitdiffstats
path: root/src/lib/kdb/encrypt_key.c
diff options
context:
space:
mode:
authorJohn Kohl <jtkohl@mit.edu>1990-02-13 16:49:47 +0000
committerJohn Kohl <jtkohl@mit.edu>1990-02-13 16:49:47 +0000
commit1b1f1e94727849c1b07757a996a7fccbab19b97c (patch)
treeeed4bce4e3114a0d912ff15efc2cfb7d5c0b4d50 /src/lib/kdb/encrypt_key.c
parent247a699f0ea9c22c3c423afabb99c96d7d4131ef (diff)
downloadkrb5-1b1f1e94727849c1b07757a996a7fccbab19b97c.tar.gz
krb5-1b1f1e94727849c1b07757a996a7fccbab19b97c.tar.xz
krb5-1b1f1e94727849c1b07757a996a7fccbab19b97c.zip
store the input length as the length integer in the encoding
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@357 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/kdb/encrypt_key.c')
-rw-r--r--src/lib/kdb/encrypt_key.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/lib/kdb/encrypt_key.c b/src/lib/kdb/encrypt_key.c
index 98a11e910f..f3a5a5df47 100644
--- a/src/lib/kdb/encrypt_key.c
+++ b/src/lib/kdb/encrypt_key.c
@@ -33,14 +33,12 @@ krb5_encrypt_block *eblock;
krb5_keyblock *in;
krb5_keyblock *out;
{
- /* encrypted rep has a length encrypted along with the key,
- so that we win if the keysize != blocksize.
- However, this means an extra block (at least) if
- keysize == blocksize. */
+ /* encrypted rep has the real (unencrypted) key length stored
+ along with the encrypted key */
krb5_error_code retval;
- *out = *in;
+ out->keytype = in->keytype;
out->length = krb5_encrypt_size(in->length, eblock->crypto_entry);
out->length += sizeof(out->length);
out->contents = (krb5_octet *)malloc(out->length);
@@ -49,7 +47,9 @@ krb5_keyblock *out;
out->length = 0;
return ENOMEM;
}
- bcopy((char *)&out->length, (char *)out->contents, sizeof(out->length));
+ /* copy in real length */
+ bcopy((char *)&in->length, (char *)out->contents, sizeof(out->length));
+ /* and arrange for encrypted key */
if (retval = (*eblock->crypto_entry->
encrypt_func)((krb5_pointer) in->contents,
(krb5_pointer) (((char *) out->contents) +