diff options
| author | Doug Rabson <dfr@FreeBSD.org> | 2008-05-07 13:39:42 +0000 |
|---|---|---|
| committer | Doug Rabson <dfr@FreeBSD.org> | 2008-05-07 13:39:42 +0000 |
| commit | 4fe54d7c6acb302aacc6ac18798804b26c882c13 (patch) | |
| tree | 07a0d6761d1b42410a27e4c7d583b766d6671f80 /crypto/heimdal/lib/krb5/generate_subkey.c | |
| parent | 86067c77149c346cf467f1db4307a68c3632aa23 (diff) | |
| parent | c19800e8cd5640693f36f2040db4ab5e8d738146 (diff) | |
Notes
Diffstat (limited to 'crypto/heimdal/lib/krb5/generate_subkey.c')
| -rw-r--r-- | crypto/heimdal/lib/krb5/generate_subkey.c | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/crypto/heimdal/lib/krb5/generate_subkey.c b/crypto/heimdal/lib/krb5/generate_subkey.c index 3fb22f970e0b..fb99cbbf3f74 100644 --- a/crypto/heimdal/lib/krb5/generate_subkey.c +++ b/crypto/heimdal/lib/krb5/generate_subkey.c @@ -33,13 +33,22 @@ #include <krb5_locl.h> -RCSID("$Id: generate_subkey.c,v 1.8 2001/05/14 06:14:46 assar Exp $"); +RCSID("$Id: generate_subkey.c 14455 2005-01-05 02:39:21Z lukeh $"); -krb5_error_code +krb5_error_code KRB5_LIB_FUNCTION krb5_generate_subkey(krb5_context context, const krb5_keyblock *key, krb5_keyblock **subkey) { + return krb5_generate_subkey_extended(context, key, key->keytype, subkey); +} + +krb5_error_code KRB5_LIB_FUNCTION +krb5_generate_subkey_extended(krb5_context context, + const krb5_keyblock *key, + krb5_enctype etype, + krb5_keyblock **subkey) +{ krb5_error_code ret; ALLOC(*subkey, 1); @@ -47,8 +56,17 @@ krb5_generate_subkey(krb5_context context, krb5_set_error_string(context, "malloc: out of memory"); return ENOMEM; } - ret = krb5_generate_random_keyblock(context, key->keytype, *subkey); - if(ret) + + if (etype == ETYPE_NULL) + etype = key->keytype; /* use session key etype */ + + /* XXX should we use the session key as input to the RF? */ + ret = krb5_generate_random_keyblock(context, etype, *subkey); + if (ret != 0) { free(*subkey); + *subkey = NULL; + } + return ret; } + |
