From: Jeffrey Altman Date: Tue, 12 Apr 2011 15:48:27 +0000 (-0400) Subject: asetkey: permit des-cbc-md5 and des-cbc-md4 keys X-Git-Tag: upstream/1.6.0.pre5^2~34 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=0d1a063072575bd44378b09b01e9e2fffe5a032e;p=packages%2Fo%2Fopenafs.git asetkey: permit des-cbc-md5 and des-cbc-md4 keys A DES key is a DES key. Permit importing CRC, MD5 and MD4 when using non-MIT keytab support. Add a special error message that specifies what principal name, kvno, and enctype were being searched for when the error is KRB5_KT_NOTFOUND. Change-Id: Ie04e86fc5516064a67d7804cc47f2e27a30ea7ea Reviewed-on: http://gerrit.openafs.org/4459 Tested-by: BuildBot Reviewed-by: Derrick Brashear --- diff --git a/src/WINNT/aklog/asetkey.c b/src/WINNT/aklog/asetkey.c index 63449558a..617158c13 100644 --- a/src/WINNT/aklog/asetkey.c +++ b/src/WINNT/aklog/asetkey.c @@ -114,8 +114,24 @@ main(int argc, char **argv) } retval = krb5_kt_read_service_key(context, argv[3], principal, kvno, ENCTYPE_DES_CBC_CRC, &key); - if (retval != 0) { - afs_com_err(argv[0], retval, "while extracting AFS service key"); + if (retval == KRB5_KT_NOTFOUND) + retval = krb5_kt_read_service_key(context, argv[3], principal, kvno, + ENCTYPE_DES_CBC_MD5, &key); + if (retval == KRB5_KT_NOTFOUND) + retval = krb5_kt_read_service_key(context, argv[3], principal, kvno, + ENCTYPE_DES_CBC_MD4, &key); + if (retval == KRB5_KT_NOTFOUND) { + char * princname = NULL; + + krb5_unparse_name(context, principal, &princname); + + afs_com_err(argv[0], retval, + "for keytab entry with Principal %s, kvno %u, DES-CBC-CRC/MD5/MD4", + princname ? princname : argv[4], + kvno); + exit(1); + } else if (retval != 0) { + afs_com_err(argv[0], retval, "while extracting AFS service key"); exit(1); } diff --git a/src/aklog/asetkey.c b/src/aklog/asetkey.c index 416d1d6bb..180b6f9a3 100644 --- a/src/aklog/asetkey.c +++ b/src/aklog/asetkey.c @@ -121,7 +121,23 @@ main(int argc, char *argv[]) } retval = krb5_kt_read_service_key(context, argv[3], principal, kvno, ENCTYPE_DES_CBC_CRC, &key); - if (retval != 0) { + if (retval == KRB5_KT_NOTFOUND) + retval = krb5_kt_read_service_key(context, argv[3], principal, kvno, + ENCTYPE_DES_CBC_MD5, &key); + if (retval == KRB5_KT_NOTFOUND) + retval = krb5_kt_read_service_key(context, argv[3], principal, kvno, + ENCTYPE_DES_CBC_MD4, &key); + if (retval == KRB5_KT_NOTFOUND) { + char * princname = NULL; + + krb5_unparse_name(context, principal, &princname); + + afs_com_err(argv[0], retval, + "for keytab entry with Principal %s, kvno %u, DES-CBC-CRC/MD5/MD4", + princname ? princname : argv[4], + kvno); + exit(1); + } else if (retval != 0) { afs_com_err(argv[0], retval, "while extracting AFS service key"); exit(1); }