aboutsummaryrefslogtreecommitdiff
path: root/src/lib/gssapi
diff options
context:
space:
mode:
authorKen Raeburn <raeburn@mit.edu>2009-01-26 19:06:21 +0000
committerKen Raeburn <raeburn@mit.edu>2009-01-26 19:06:21 +0000
commitea9fc333289d70b9c9474770e276a23a693705d1 (patch)
tree8891e9612a2f544e6ef7e6bc48990faeee6eeb66 /src/lib/gssapi
parentc3c440d42b99d1370cf090c2e855955146eb4a7a (diff)
downloadkrb5-ea9fc333289d70b9c9474770e276a23a693705d1.zip
krb5-ea9fc333289d70b9c9474770e276a23a693705d1.tar.gz
krb5-ea9fc333289d70b9c9474770e276a23a693705d1.tar.bz2
Use 16/32-bit big/little-endian store functions in more places
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@21796 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/gssapi')
-rw-r--r--src/lib/gssapi/generic/gssapiP_generic.h20
-rw-r--r--src/lib/gssapi/krb5/k5seal.c11
-rw-r--r--src/lib/gssapi/krb5/k5sealiov.c13
-rw-r--r--src/lib/gssapi/krb5/k5unseal.c5
-rw-r--r--src/lib/gssapi/krb5/k5unsealiov.c7
-rw-r--r--src/lib/gssapi/krb5/util_crypt.c12
-rw-r--r--src/lib/gssapi/krb5/util_seqnum.c13
-rw-r--r--src/lib/gssapi/mechglue/g_glue.c10
8 files changed, 27 insertions, 64 deletions
diff --git a/src/lib/gssapi/generic/gssapiP_generic.h b/src/lib/gssapi/generic/gssapiP_generic.h
index b84f69e..b684055 100644
--- a/src/lib/gssapi/generic/gssapiP_generic.h
+++ b/src/lib/gssapi/generic/gssapiP_generic.h
@@ -59,27 +59,19 @@ typedef UINT64_TYPE gssint_uint64;
things */
#define TWRITE_INT(ptr, num, bigend) \
- (ptr)[0] = (char) ((bigend)?((num)>>24):((num)&0xff)); \
- (ptr)[1] = (char) ((bigend)?(((num)>>16)&0xff):(((num)>>8)&0xff)); \
- (ptr)[2] = (char) ((bigend)?(((num)>>8)&0xff):(((num)>>16)&0xff)); \
- (ptr)[3] = (char) ((bigend)?((num)&0xff):((num)>>24)); \
+ if (bigend) store_32_be(num, ptr); else store_32_le(num, ptr); \
(ptr) += 4;
#define TWRITE_INT16(ptr, num, bigend) \
- (ptr)[0] = (char) ((bigend)?((num)>>24):((num)&0xff)); \
- (ptr)[1] = (char) ((bigend)?(((num)>>16)&0xff):(((num)>>8)&0xff)); \
+ if (bigend) store_16_be((num)>>16, ptr); else store_16_le(num, ptr); \
(ptr) += 2;
-#define TREAD_INT(ptr, num, bigend) \
- (num) = (((ptr)[0]<<((bigend)?24: 0)) | \
- ((ptr)[1]<<((bigend)?16: 8)) | \
- ((ptr)[2]<<((bigend)? 8:16)) | \
- ((ptr)[3]<<((bigend)? 0:24))); \
+#define TREAD_INT(ptr, num, bigend) \
+ (num) = ((bigend) ? load_32_be(ptr) : load_32_le(ptr)); \
(ptr) += 4;
-#define TREAD_INT16(ptr, num, bigend) \
- (num) = (((ptr)[0]<<((bigend)?24: 0)) | \
- ((ptr)[1]<<((bigend)?16: 8))); \
+#define TREAD_INT16(ptr, num, bigend) \
+ (num) = ((bigend) ? (load_16_be(ptr) << 16) : load_16_le(ptr)); \
(ptr) += 2;
#define TWRITE_STR(ptr, str, len) \
diff --git a/src/lib/gssapi/krb5/k5seal.c b/src/lib/gssapi/krb5/k5seal.c
index aba8d81..bff1ab1 100644
--- a/src/lib/gssapi/krb5/k5seal.c
+++ b/src/lib/gssapi/krb5/k5seal.c
@@ -121,13 +121,11 @@ make_seal_token_v1 (krb5_context context,
g_make_token_header(oid, 14+cksum_size+tmsglen, &ptr, toktype);
/* 0..1 SIGN_ALG */
- ptr[0] = signalg & 0xff;
- ptr[1] = (signalg >> 8) & 0xff;
+ store_16_le(signalg, &ptr[0]);
/* 2..3 SEAL_ALG or Filler */
if ((toktype == KG_TOK_SEAL_MSG) && do_encrypt) {
- ptr[2] = sealalg & 0xff;
- ptr[3] = (sealalg >> 8) & 0xff;
+ store_16_le(sealalg, &ptr[2]);
} else {
/* No seal */
ptr[2] = 0xff;
@@ -260,10 +258,7 @@ make_seal_token_v1 (krb5_context context,
unsigned char bigend_seqnum[4];
krb5_keyblock *enc_key;
int i;
- bigend_seqnum[0] = (*seqnum>>24) & 0xff;
- bigend_seqnum[1] = (*seqnum>>16) & 0xff;
- bigend_seqnum[2] = (*seqnum>>8) & 0xff;
- bigend_seqnum[3] = *seqnum & 0xff;
+ store_32_be(seqnum, bigend_seqnum);
code = krb5_copy_keyblock (context, enc, &enc_key);
if (code)
{
diff --git a/src/lib/gssapi/krb5/k5sealiov.c b/src/lib/gssapi/krb5/k5sealiov.c
index 1d0c573..f4354a9 100644
--- a/src/lib/gssapi/krb5/k5sealiov.c
+++ b/src/lib/gssapi/krb5/k5sealiov.c
@@ -2,7 +2,7 @@
/*
* lib/gssapi/krb5/k5sealiov.c
*
- * Copyright 2008 by the Massachusetts Institute of Technology.
+ * Copyright 2008, 2009 by the Massachusetts Institute of Technology.
* All Rights Reserved.
*
* Export of this software from the United States of America may
@@ -133,13 +133,11 @@ make_seal_token_v1_iov(krb5_context context,
g_make_token_header(ctx->mech_used, 14 + ctx->cksum_size + tmsglen, &ptr, toktype);
/* 0..1 SIGN_ALG */
- ptr[0] = (ctx->signalg ) & 0xFF;
- ptr[1] = (ctx->signalg >> 8) & 0xFF;
+ store_16_le(ctx->signalg, &ptr[0]);
/* 2..3 SEAL_ALG or Filler */
if (toktype == KG_TOK_WRAP_MSG && conf_req_flag) {
- ptr[2] = (ctx->sealalg ) & 0xFF;
- ptr[3] = (ctx->sealalg >> 8) & 0xFF;
+ store_16_le(ctx->sealalg, &ptr[2]);
} else {
/* No seal */
ptr[2] = 0xFF;
@@ -226,10 +224,7 @@ make_seal_token_v1_iov(krb5_context context,
krb5_keyblock *enc_key;
size_t i;
- bigend_seqnum[0] = (ctx->seq_send >> 24) & 0xFF;
- bigend_seqnum[1] = (ctx->seq_send >> 16) & 0xFF;
- bigend_seqnum[2] = (ctx->seq_send >> 8 ) & 0xFF;
- bigend_seqnum[3] = (ctx->seq_send ) & 0xFF;
+ store_32_be(ctx->seq_send, bigend_seqnum);
code = krb5_copy_keyblock(context, ctx->enc, &enc_key);
if (code != 0)
diff --git a/src/lib/gssapi/krb5/k5unseal.c b/src/lib/gssapi/krb5/k5unseal.c
index 8020b15..f55180a 100644
--- a/src/lib/gssapi/krb5/k5unseal.c
+++ b/src/lib/gssapi/krb5/k5unseal.c
@@ -175,10 +175,7 @@ kg_unseal_v1(context, minor_status, ctx, ptr, bodysize, message_buffer,
unsigned char bigend_seqnum[4];
krb5_keyblock *enc_key;
int i;
- bigend_seqnum[0] = (seqnum>>24) & 0xff;
- bigend_seqnum[1] = (seqnum>>16) & 0xff;
- bigend_seqnum[2] = (seqnum>>8) & 0xff;
- bigend_seqnum[3] = seqnum & 0xff;
+ store_32_be(seqnum, bigend_seqnum);
code = krb5_copy_keyblock (context, ctx->enc, &enc_key);
if (code)
{
diff --git a/src/lib/gssapi/krb5/k5unsealiov.c b/src/lib/gssapi/krb5/k5unsealiov.c
index 87a4b20..5d2bd1a 100644
--- a/src/lib/gssapi/krb5/k5unsealiov.c
+++ b/src/lib/gssapi/krb5/k5unsealiov.c
@@ -2,7 +2,7 @@
/*
* lib/gssapi/krb5/k5unsealiov.c
*
- * Copyright 2008 by the Massachusetts Institute of Technology.
+ * Copyright 2008, 2009 by the Massachusetts Institute of Technology.
* All Rights Reserved.
*
* Export of this software from the United States of America may
@@ -151,10 +151,7 @@ kg_unseal_v1_iov(krb5_context context,
krb5_keyblock *enc_key;
size_t i;
- bigend_seqnum[0] = (seqnum >> 24) & 0xFF;
- bigend_seqnum[1] = (seqnum >> 16) & 0xFF;
- bigend_seqnum[2] = (seqnum >> 8 ) & 0xFF;
- bigend_seqnum[3] = (seqnum ) & 0xFF;
+ store_32_be(seqnum, bigend_seqnum);
code = krb5_copy_keyblock(context, ctx->enc, &enc_key);
if (code != 0) {
diff --git a/src/lib/gssapi/krb5/util_crypt.c b/src/lib/gssapi/krb5/util_crypt.c
index db38e9e..a8558a5 100644
--- a/src/lib/gssapi/krb5/util_crypt.c
+++ b/src/lib/gssapi/krb5/util_crypt.c
@@ -317,10 +317,8 @@ kg_arcfour_docrypt (const krb5_keyblock *longterm_key , int ms_usage,
memcpy(t, kg_arcfour_l40, sizeof(kg_arcfour_l40));
i += sizeof(kg_arcfour_l40);
}
- t[i++] = ms_usage &0xff;
- t[i++] = (ms_usage>>8) & 0xff;
- t[i++] = (ms_usage>>16) & 0xff;
- t[i++] = (ms_usage>>24) & 0xff;
+ store_32_le(ms_usage, &t[i]);
+ i += 4;
input.data = (void *) &t;
input.length = i;
output.data = (void *) usage_key.contents;
@@ -684,10 +682,8 @@ kg_arcfour_docrypt_iov (krb5_context context,
memcpy(t, kg_arcfour_l40, sizeof(kg_arcfour_l40));
i += sizeof(kg_arcfour_l40);
}
- t[i++] = ms_usage &0xff;
- t[i++] = (ms_usage>>8) & 0xff;
- t[i++] = (ms_usage>>16) & 0xff;
- t[i++] = (ms_usage>>24) & 0xff;
+ store_32_le(ms_usage, &t[i]);
+ i += 4;
input.data = (void *) &t;
input.length = i;
output.data = (void *) usage_key.contents;
diff --git a/src/lib/gssapi/krb5/util_seqnum.c b/src/lib/gssapi/krb5/util_seqnum.c
index 372cb62..b91dd65 100644
--- a/src/lib/gssapi/krb5/util_seqnum.c
+++ b/src/lib/gssapi/krb5/util_seqnum.c
@@ -1,6 +1,6 @@
/* -*- mode: c; indent-tabs-mode: nil -*- */
/*
- * Copyright2001 by the Massachusetts Institute of Technology.
+ * Copyright 2001, 2009 by the Massachusetts Institute of Technology.
* Copyright 1993 by OpenVision Technologies, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software
@@ -47,10 +47,7 @@ kg_make_seq_num(context, key, direction, seqnum, cksum, buf)
if (key->enctype == ENCTYPE_ARCFOUR_HMAC ||
key->enctype == ENCTYPE_ARCFOUR_HMAC_EXP) {
/* Yes, Microsoft used big-endian sequence number.*/
- plain[0] = (seqnum>>24) & 0xff;
- plain[1] = (seqnum>>16) & 0xff;
- plain[2] = (seqnum>>8) & 0xff;
- plain[3] = seqnum & 0xff;
+ store_32_be(seqnum, plain);
return kg_arcfour_docrypt (key, 0,
cksum, 8,
&plain[0], 8,
@@ -58,11 +55,7 @@ kg_make_seq_num(context, key, direction, seqnum, cksum, buf)
}
- plain[0] = (unsigned char) (seqnum&0xff);
- plain[1] = (unsigned char) ((seqnum>>8)&0xff);
- plain[2] = (unsigned char) ((seqnum>>16)&0xff);
- plain[3] = (unsigned char) ((seqnum>>24)&0xff);
-
+ store_32_le(seqnum, plain);
return(kg_encrypt(context, key, KG_USAGE_SEQ, cksum, plain, buf, 8));
}
diff --git a/src/lib/gssapi/mechglue/g_glue.c b/src/lib/gssapi/mechglue/g_glue.c
index 8b4070e..5a8ea54 100644
--- a/src/lib/gssapi/mechglue/g_glue.c
+++ b/src/lib/gssapi/mechglue/g_glue.c
@@ -407,8 +407,8 @@ OM_uint32 gssint_export_internal_name(minor_status, mech_type,
/* spec allows only 2 bytes for the mech oid length */
mechOidLen = mechOidDERLen + mechOidTagLen + mech_type->length;
- *buf++ = (mechOidLen & 0xFF00) >> 8;
- *buf++ = (mechOidLen & 0x00FF);
+ store_16_be(mechOidLen, buf);
+ buf += 2;
/*
* DER Encoding of mech OID contains OID Tag (0x06), length and
@@ -427,10 +427,8 @@ OM_uint32 gssint_export_internal_name(minor_status, mech_type,
buf += mech_type->length;
/* spec designates the next 4 bytes for the name length */
- *buf++ = (dispName.length & 0xFF000000) >> 24;
- *buf++ = (dispName.length & 0x00FF0000) >> 16;
- *buf++ = (dispName.length & 0x0000FF00) >> 8;
- *buf++ = (dispName.length & 0X000000FF);
+ store_32_be(dispName.length, buf);
+ buf += 4;
/* for the final ingredient - add the name from gss_display_name */
(void) memcpy(buf, dispName.value, dispName.length);