summaryrefslogtreecommitdiffstats
path: root/crypto/heimdal/lib/gssapi/8003.c
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/heimdal/lib/gssapi/8003.c')
-rw-r--r--crypto/heimdal/lib/gssapi/8003.c47
1 files changed, 32 insertions, 15 deletions
diff --git a/crypto/heimdal/lib/gssapi/8003.c b/crypto/heimdal/lib/gssapi/8003.c
index 677a25a..3b48182 100644
--- a/crypto/heimdal/lib/gssapi/8003.c
+++ b/crypto/heimdal/lib/gssapi/8003.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997 - 2002 Kungliga Tekniska Högskolan
+ * Copyright (c) 1997 - 2003 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -33,10 +33,10 @@
#include "gssapi_locl.h"
-RCSID("$Id: 8003.c,v 1.12 2002/10/31 14:38:49 joda Exp $");
+RCSID("$Id: 8003.c,v 1.12.2.2 2003/09/18 21:30:57 lha Exp $");
-static krb5_error_code
-encode_om_uint32(OM_uint32 n, u_char *p)
+krb5_error_code
+gssapi_encode_om_uint32(OM_uint32 n, u_char *p)
{
p[0] = (n >> 0) & 0xFF;
p[1] = (n >> 8) & 0xFF;
@@ -45,13 +45,30 @@ encode_om_uint32(OM_uint32 n, u_char *p)
return 0;
}
-static krb5_error_code
-decode_om_uint32(u_char *p, OM_uint32 *n)
+krb5_error_code
+gssapi_encode_be_om_uint32(OM_uint32 n, u_char *p)
+{
+ p[0] = (n >> 24) & 0xFF;
+ p[1] = (n >> 16) & 0xFF;
+ p[2] = (n >> 8) & 0xFF;
+ p[3] = (n >> 0) & 0xFF;
+ return 0;
+}
+
+krb5_error_code
+gssapi_decode_om_uint32(u_char *p, OM_uint32 *n)
{
*n = (p[0] << 0) | (p[1] << 8) | (p[2] << 16) | (p[3] << 24);
return 0;
}
+krb5_error_code
+gssapi_decode_be_om_uint32(u_char *p, OM_uint32 *n)
+{
+ *n = (p[0] <<24) | (p[1] << 16) | (p[2] << 8) | (p[3] << 0);
+ return 0;
+}
+
static krb5_error_code
hash_input_chan_bindings (const gss_channel_bindings_t b,
u_char *p)
@@ -60,23 +77,23 @@ hash_input_chan_bindings (const gss_channel_bindings_t b,
MD5_CTX md5;
MD5_Init(&md5);
- encode_om_uint32 (b->initiator_addrtype, num);
+ gssapi_encode_om_uint32 (b->initiator_addrtype, num);
MD5_Update (&md5, num, sizeof(num));
- encode_om_uint32 (b->initiator_address.length, num);
+ gssapi_encode_om_uint32 (b->initiator_address.length, num);
MD5_Update (&md5, num, sizeof(num));
if (b->initiator_address.length)
MD5_Update (&md5,
b->initiator_address.value,
b->initiator_address.length);
- encode_om_uint32 (b->acceptor_addrtype, num);
+ gssapi_encode_om_uint32 (b->acceptor_addrtype, num);
MD5_Update (&md5, num, sizeof(num));
- encode_om_uint32 (b->acceptor_address.length, num);
+ gssapi_encode_om_uint32 (b->acceptor_address.length, num);
MD5_Update (&md5, num, sizeof(num));
if (b->acceptor_address.length)
MD5_Update (&md5,
b->acceptor_address.value,
b->acceptor_address.length);
- encode_om_uint32 (b->application_data.length, num);
+ gssapi_encode_om_uint32 (b->application_data.length, num);
MD5_Update (&md5, num, sizeof(num));
if (b->application_data.length)
MD5_Update (&md5,
@@ -117,7 +134,7 @@ gssapi_krb5_create_8003_checksum (
}
p = result->checksum.data;
- encode_om_uint32 (16, p);
+ gssapi_encode_om_uint32 (16, p);
p += 4;
if (input_chan_bindings == GSS_C_NO_CHANNEL_BINDINGS) {
memset (p, 0, 16);
@@ -125,7 +142,7 @@ gssapi_krb5_create_8003_checksum (
hash_input_chan_bindings (input_chan_bindings, p);
}
p += 16;
- encode_om_uint32 (flags, p);
+ gssapi_encode_om_uint32 (flags, p);
p += 4;
if (fwd_data->length > 0 && (flags & GSS_C_DELEG_FLAG)) {
@@ -178,7 +195,7 @@ gssapi_krb5_verify_8003_checksum(
}
p = cksum->checksum.data;
- decode_om_uint32(p, &length);
+ gssapi_decode_om_uint32(p, &length);
if(length != sizeof(hash)) {
*minor_status = 0;
return GSS_S_BAD_BINDINGS;
@@ -200,7 +217,7 @@ gssapi_krb5_verify_8003_checksum(
p += sizeof(hash);
- decode_om_uint32(p, flags);
+ gssapi_decode_om_uint32(p, flags);
p += 4;
if (cksum->checksum.length > 24 && (*flags & GSS_C_DELEG_FLAG)) {
OpenPOWER on IntegriCloud