summaryrefslogtreecommitdiffstats
path: root/src/lib/gssapi/make_tok.c
diff options
context:
space:
mode:
authorTheodore Tso <tytso@mit.edu>1991-05-06 15:14:31 +0000
committerTheodore Tso <tytso@mit.edu>1991-05-06 15:14:31 +0000
commitde8c3b49f993fa7583c710451cac8f7407f8859c (patch)
treefed1419e5656ababa393248d50b69707dc210a61 /src/lib/gssapi/make_tok.c
parenteab25e18ca94480e73d70f57b5cbc5cc04b87d45 (diff)
downloadkrb5-de8c3b49f993fa7583c710451cac8f7407f8859c.tar.gz
krb5-de8c3b49f993fa7583c710451cac8f7407f8859c.tar.xz
krb5-de8c3b49f993fa7583c710451cac8f7407f8859c.zip
Initial Revision
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@2099 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/gssapi/make_tok.c')
-rw-r--r--src/lib/gssapi/make_tok.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/lib/gssapi/make_tok.c b/src/lib/gssapi/make_tok.c
new file mode 100644
index 000000000..97a46bebb
--- /dev/null
+++ b/src/lib/gssapi/make_tok.c
@@ -0,0 +1,49 @@
+/*
+ * make_tok.c --- Make a GSS API token
+ *
+ * $Source$
+ * $Author$
+ * $Header$
+ *
+ * Copyright 1991 by the Massachusetts Institute of Technology.
+ * All Rights Reserved.
+ *
+ * For copying and distribution information, please see the file
+ * <krb5/copyright.h>.
+ *
+ */
+
+#include <gssapi.h>
+
+OM_uint32 gss_make_token(minor_status, mechanism, type, length, data,
+ output_token)
+ OM_uint32 *minor_status;
+ unsigned char mechanism;
+ unsigned char type;
+ size_t length;
+ void *data;
+ gss_buffer_t output_token;
+{
+ char *buf;
+ int offset = 4;
+
+ *minor_status = 0;
+ /*
+ * The Kerberos initial request token needs an extra byte of
+ * flag information, so we reserve it here.
+ */
+ if ((mechanism == GSS_API_KRB5_TYPE) && (type == GSS_API_KRB5_REQ))
+ offset++;
+ if (!(buf = malloc(length+offset))) {
+ *minor_status = ENOMEM;
+ return(gss_make_re(GSS_RE_FAILURE));
+ }
+ output_token->value = buf;
+ output_token->length = length+4;
+ buf[0] = GSS_API_IMPL_VERSION;
+ buf[1] = mechanism; /* Authentication mechanism */
+ buf[2] = type; /* Token type */
+ buf[3] = 0; /* Reserved */
+ memcpy(buf+offset, data, length);
+ return(GSS_S_COMPLETE);
+}