From 64625b5fcceafb434013c406f9358afdcf30eb7b Mon Sep 17 00:00:00 2001 From: Johan Danielsson Date: Tue, 9 Sep 1997 13:59:08 +0000 Subject: [PATCH] krb5_key_to_string git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@3455 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/krb5/encrypt.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/lib/krb5/encrypt.c b/lib/krb5/encrypt.c index 905cda5f1..d1ffebcd2 100644 --- a/lib/krb5/encrypt.c +++ b/lib/krb5/encrypt.c @@ -257,3 +257,38 @@ krb5_decrypt (krb5_context context, return krb5_do_decrypt(context, ptr, len, e, keyblock, result); return KRB5_PROG_ETYPE_NOSUPP; } + +krb5_error_code +krb5_key_to_string(krb5_context context, + krb5_keyblock key, + krb5_boolean include_keydata, + char **string) +{ + char *s; + char tmp[32]; /* enough to hold name of key type */ + switch(key.keytype){ + case KEYTYPE_DES: + snprintf(tmp, sizeof(tmp), "DES"); + break; + default: + if(include_keydata) + snprintf(tmp, sizeof(tmp), "", key.keytype); + else + snprintf(tmp, sizeof(tmp), "", + key.keytype, key.keyvalue.length); + break; + } + if(include_keydata){ + int i; + char *k = malloc(2 * key.keyvalue.length + 1); + *k = 0; + for(i = 0; i < key.keyvalue.length; i++){ + unsigned char c = ((unsigned char*)key.keyvalue.data)[i]; + sprintf(k + strlen(k), "%02x", c); + } + asprintf(string, "%s (key = %s)", tmp, k); + free(k); + }else + *string = strdup(tmp); + return 0; +}