summaryrefslogtreecommitdiffstats
path: root/src/lib/kadm/adm_kt_dec.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/kadm/adm_kt_dec.c')
-rw-r--r--src/lib/kadm/adm_kt_dec.c127
1 files changed, 0 insertions, 127 deletions
diff --git a/src/lib/kadm/adm_kt_dec.c b/src/lib/kadm/adm_kt_dec.c
deleted file mode 100644
index 7886a70da9..0000000000
--- a/src/lib/kadm/adm_kt_dec.c
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * lib/kadm/adm_kt_dec.c
- *
- * Copyright 1995 by the Massachusetts Institute of Technology.
- * All Rights Reserved.
- *
- * Export of this software from the United States of America may
- * require a specific license from the United States Government.
- * It is the responsibility of any person or organization contemplating
- * export to obtain such a license before exporting.
- *
- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
- * distribute this software and its documentation for any purpose and
- * without fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright notice and
- * this permission notice appear in supporting documentation, and that
- * the name of M.I.T. not be used in advertising or publicity pertaining
- * to distribution of the software without specific, written prior
- * permission. M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is" without express
- * or implied warranty.
- *
- */
-
-/*
- * adm_kt_dec.c - Decode keytab entry according to protocol.
- */
-#include "k5-int.h"
-#include "adm.h"
-#include "adm_proto.h"
-
-/*
- * krb5_adm_proto_to_ktent() - Convert a list of reply components to
- * a keytab entry according to procotol.
- *
- * Successful callers of this routine should free ktentp->principal
- * and ktentp->key.contents.
- */
-krb5_error_code
-krb5_adm_proto_to_ktent(kcontext, ncomp, complist, ktentp)
- krb5_context kcontext;
- krb5_int32 ncomp;
- krb5_data *complist;
- krb5_keytab_entry *ktentp;
-{
- krb5_error_code kret;
- char *v;
-
- /*
- * Clear out the keytab entry.
- */
- memset((char *) ktentp, 0, sizeof(krb5_keytab_entry));
-
- /*
- * Figure out how many components we have. We expect KRB5_ADM_KT_NCOMPS
- * components.
- */
- if (ncomp != KRB5_ADM_KT_NCOMPS)
- return(EINVAL);
-
- /* Parse the supplied principal name */
- if (kret = krb5_parse_name(kcontext,
- complist[KRB5_ADM_KT_PRINCIPAL].data,
- &ktentp->principal))
- goto done;
-
- /* Parse the supplied timestamp */
- if (complist[KRB5_ADM_KT_TIMESTAMP].length < sizeof(krb5_timestamp)) {
- kret = EINVAL;
- goto done;
- }
- v = complist[KRB5_ADM_KT_TIMESTAMP].data;
- ktentp->timestamp = (krb5_timestamp)
- (((krb5_int32) ((unsigned char) v[0]) << 24) +
- ((krb5_int32) ((unsigned char) v[1]) << 16) +
- ((krb5_int32) ((unsigned char) v[2]) << 8) +
- ((krb5_int32) ((unsigned char) v[3])));
-
- /* Parse the supplied vno */
- if (complist[KRB5_ADM_KT_VNO].length < sizeof(krb5_kvno)) {
- kret = EINVAL;
- goto done;
- }
- v = complist[KRB5_ADM_KT_VNO].data;
- ktentp->vno = (krb5_kvno)
- (((krb5_int32) ((unsigned char) v[0]) << 24) +
- ((krb5_int32) ((unsigned char) v[1]) << 16) +
- ((krb5_int32) ((unsigned char) v[2]) << 8) +
- ((krb5_int32) ((unsigned char) v[3])));
-
- /* Parse the supplied key_enctype */
- if (complist[KRB5_ADM_KT_KEY_ENCTYPE].length < sizeof(krb5_enctype)) {
- kret = EINVAL;
- goto done;
- }
- v = complist[KRB5_ADM_KT_KEY_ENCTYPE].data;
- ktentp->key.enctype = (krb5_enctype)
- (((krb5_int32) ((unsigned char) v[0]) << 24) +
- ((krb5_int32) ((unsigned char) v[1]) << 16) +
- ((krb5_int32) ((unsigned char) v[2]) << 8) +
- ((krb5_int32) ((unsigned char) v[3])));
-
- /* Finally, shuck the key contents */
- if (ktentp->key.contents = (krb5_octet *)
- malloc((size_t) complist[KRB5_ADM_KT_KEY_KEY].length)) {
- ktentp->key.length = complist[KRB5_ADM_KT_KEY_KEY].length;
- memcpy(ktentp->key.contents,
- complist[KRB5_ADM_KT_KEY_KEY].data,
- (size_t) ktentp->key.length);
- kret = 0;
- }
- else
- kret = ENOMEM;
-
- done:
- if (kret) {
- if (ktentp->principal)
- krb5_free_principal(kcontext, ktentp->principal);
- if (ktentp->key.contents) {
- memset((char *) ktentp->key.contents, 0,
- (size_t) ktentp->key.length);
- krb5_xfree(ktentp->key.contents);
- }
- memset((char *) ktentp, 0, sizeof(krb5_keytab_entry));
- }
- return(kret);
-}