aboutsummaryrefslogtreecommitdiff
path: root/src/tests/verify/kdb5_verify.c
diff options
context:
space:
mode:
authorTheodore Tso <tytso@mit.edu>1994-10-07 03:55:49 +0000
committerTheodore Tso <tytso@mit.edu>1994-10-07 03:55:49 +0000
commita2cc4fcc1ca8c120198f69f0e9acd5c952f172fd (patch)
tree94cec3d84932d12563b87faab68e2fa0c30bd907 /src/tests/verify/kdb5_verify.c
parent5fe47f1e61a3e31759a6fbd62cfd84bbc441840c (diff)
downloadkrb5-a2cc4fcc1ca8c120198f69f0e9acd5c952f172fd.zip
krb5-a2cc4fcc1ca8c120198f69f0e9acd5c952f172fd.tar.gz
krb5-a2cc4fcc1ca8c120198f69f0e9acd5c952f172fd.tar.bz2
Allow master key to be passed in on the command line. Makes testing
scripts easier. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@4472 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/tests/verify/kdb5_verify.c')
-rw-r--r--src/tests/verify/kdb5_verify.c34
1 files changed, 29 insertions, 5 deletions
diff --git a/src/tests/verify/kdb5_verify.c b/src/tests/verify/kdb5_verify.c
index c2f0813..d5671e0 100644
--- a/src/tests/verify/kdb5_verify.c
+++ b/src/tests/verify/kdb5_verify.c
@@ -81,6 +81,7 @@ char *str_master_princ;
static char *progname;
static char *cur_realm = 0;
static char *mkey_name = 0;
+static char *mkey_password = 0;
static krb5_boolean manual_mkey = FALSE;
static krb5_boolean dbactive = FALSE;
@@ -128,11 +129,14 @@ char *argv[];
num_to_check = 0;
depth = 1;
- while ((optchar = getopt(argc, argv, "D:p:n:d:r:R:k:M:e:m")) != EOF) {
+ while ((optchar = getopt(argc, argv, "D:P:p:n:d:r:R:k:M:e:m")) != EOF) {
switch(optchar) {
case 'D':
depth = atoi(optarg); /* how deep to go */
break;
+ case 'P': /* Only used for testing!!! */
+ mkey_password = optarg;
+ break;
case 'p': /* prefix name to check */
strcpy(principal_string, optarg);
suffix = principal_string + strlen(principal_string);
@@ -376,6 +380,7 @@ char *dbname;
int nentries;
krb5_boolean more;
register krb5_cryptosystem_entry *csentry;
+ krb5_data pwd, scratch;
csentry = master_encblock.crypto_entry;
@@ -391,10 +396,29 @@ char *dbname;
com_err(pname, retval, "while setting up master key name");
return(1);
}
- if (retval = krb5_db_fetch_mkey(master_princ, &master_encblock,
- manual_mkey, FALSE, 0, &master_keyblock)) {
- com_err(pname, retval, "while reading master key");
- return(1);
+ if (mkey_password) {
+ pwd.data = mkey_password;
+ pwd.length = strlen(mkey_password);
+ retval = krb5_principal2salt(master_princ, &scratch);
+ if (retval) {
+ com_err(pname, retval, "while calculated master key salt");
+ return(1);
+ }
+ retval = krb5_string_to_key(&master_encblock, master_keyblock.keytype,
+ &master_keyblock, &pwd, &scratch);
+ if (retval) {
+ com_err(pname, retval,
+ "while transforming master key from password");
+ return(1);
+ }
+ free(scratch.data);
+ } else {
+ if (retval = krb5_db_fetch_mkey(master_princ, &master_encblock,
+ manual_mkey, FALSE, 0,
+ &master_keyblock)) {
+ com_err(pname, retval, "while reading master key");
+ return(1);
+ }
}
if (retval = krb5_db_init()) {
com_err(pname, retval, "while initializing database");