Add des3 string-to-key. Add ktype argument to krb5_string_to_key().
[heimdal.git] / admin / get.c
blobafb0d85395825f487ca05b2036b24d4972a97bdc
1 /*
2 * Copyright (c) 1997 Kungliga Tekniska Högskolan
3 * (Royal Institute of Technology, Stockholm, Sweden).
4 * All rights reserved.
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution.
17 * 3. All advertising materials mentioning features or use of this software
18 * must display the following acknowledgement:
19 * This product includes software developed by Kungliga Tekniska
20 * Högskolan and its contributors.
22 * 4. Neither the name of the Institute nor the names of its contributors
23 * may be used to endorse or promote products derived from this software
24 * without specific prior written permission.
26 * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
27 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
29 * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
30 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
31 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
32 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
35 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36 * SUCH DAMAGE.
39 #include "admin_locl.h"
41 RCSID("$Id$");
43 int
44 get_entry(int argc, char **argv)
46 HDB *db;
47 int ret;
48 hdb_entry ent;
49 int i;
50 krb5_principal principal;
52 if(argc != 2) {
53 krb5_warnx(context, "Usage: get_entry principal");
54 return 0;
57 if((ret = hdb_open(context, &db, database, O_RDONLY, 0600))) {
58 krb5_warn(context, ret, "hdb_open");
59 return 0;
62 krb5_parse_name(context, argv[1], &principal);
64 memset (&ent, 0, sizeof(ent));
66 ent.principal = principal;
68 ret = db->fetch(context, db, &ent);
70 switch(ret){
71 case HDB_ERR_NOENTRY:
72 krb5_warnx(context, "Entry not found in database\n");
73 break;
74 case 0: {
75 char buf[128];
76 char *name;
78 krb5_free_principal(context, principal);
80 krb5_unparse_name(context, ent.principal, &name);
81 printf("Principal: %s\n", name);
82 free(name);
83 if (ent.max_life)
84 putlife (*ent.max_life, buf, sizeof(buf));
85 else
86 strcpy (buf, "infinite");
87 printf("Max ticket life: %s\n", buf);
88 if (ent.max_renew)
89 putlife (*ent.max_renew, buf, sizeof(buf));
90 else
91 strcpy (buf, "infinite");
92 printf("Max renewable ticket life: %s\n", buf);
93 if (ent.created_by.principal)
94 krb5_unparse_name (context, ent.created_by.principal, &name);
95 else
96 name = NULL;
97 printf("Created by %s at %s\n",
98 name ? name : "<unknown>",
99 time2str(ent.created_by.time));
100 free (name);
101 if (ent.modified_by) {
102 if (ent.modified_by->principal)
103 krb5_unparse_name (context, ent.modified_by->principal, &name);
104 else
105 name = NULL;
106 printf("Last modified by %s at %s\n",
107 name ? name : "<unknown>",
108 time2str(ent.modified_by->time));
109 free (name);
111 if (ent.valid_start) {
112 printf("Valid from %s\n", time2str(*ent.valid_start));
114 if (ent.valid_end) {
115 printf("Valid till %s\n", time2str(*ent.valid_end));
117 if (ent.pw_end) {
118 printf("Password expires at %s\n", time2str(*ent.pw_end));
120 printf("Kvno: %d\n", ent.kvno);
121 printf("Keys: ");
122 for(i = 0; i < ent.keys.len; i++){
123 if(i) printf(", ");
124 printf("type = %d, len = %d", ent.keys.val[i].key.keytype,
125 ent.keys.val[i].key.keyvalue.length);
127 printf("\nFlags: ");
128 print_hdbflags (stdout, ent.flags);
129 printf("\n");
130 break;
132 default:
133 krb5_warn(context, ret, "db->fetch");
134 break;
136 hdb_free_entry (context, &ent);
137 db->close(context, db);
138 return 0;