summaryrefslogtreecommitdiffstats
path: root/src/lib/crypto/md4
diff options
context:
space:
mode:
authorKen Raeburn <raeburn@mit.edu>2008-08-02 06:36:49 +0000
committerKen Raeburn <raeburn@mit.edu>2008-08-02 06:36:49 +0000
commit4c3157497d4394cb6b09565a94091256aa3d5b54 (patch)
tree4bf8c84ccd9f18ee9b6e14a0b0cbd906516fbad7 /src/lib/crypto/md4
parentfef45697544a3855a989a321b621612aa4651f20 (diff)
downloadkrb5-4c3157497d4394cb6b09565a94091256aa3d5b54.tar.gz
krb5-4c3157497d4394cb6b09565a94091256aa3d5b54.tar.xz
krb5-4c3157497d4394cb6b09565a94091256aa3d5b54.zip
Make more uses of load/store_32_be/le, which on x86 at least expands
to a single unaligned load/store instruction, instead of open-coding the shifts and masks. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@20599 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/crypto/md4')
-rw-r--r--src/lib/crypto/md4/md4.c21
1 files changed, 5 insertions, 16 deletions
diff --git a/src/lib/crypto/md4/md4.c b/src/lib/crypto/md4/md4.c
index 5e95d359f2..d1da9ef0c8 100644
--- a/src/lib/crypto/md4/md4.c
+++ b/src/lib/crypto/md4/md4.c
@@ -110,11 +110,9 @@ krb5_MD4Update (krb5_MD4_CTX *mdContext, const unsigned char *inBuf, unsigned in
/* transform if necessary */
if (mdi == 0x40) {
- for (i = 0, ii = 0; i < 16; i++, ii += 4)
- in[i] = (((krb5_ui_4)mdContext->in[ii+3]) << 24) |
- (((krb5_ui_4)mdContext->in[ii+2]) << 16) |
- (((krb5_ui_4)mdContext->in[ii+1]) << 8) |
- ((krb5_ui_4)mdContext->in[ii]);
+ for (i = 0, ii = 0; i < 16; i++, ii += 4) {
+ in[i] = load_32_le(mdContext->in+ii);
+ }
Transform (mdContext->buf, in);
mdi = 0;
}
@@ -142,22 +140,13 @@ krb5_MD4Final (krb5_MD4_CTX *mdContext)
/* append length in bits and transform */
for (i = 0, ii = 0; i < 14; i++, ii += 4)
- in[i] = (((krb5_ui_4)mdContext->in[ii+3]) << 24) |
- (((krb5_ui_4)mdContext->in[ii+2]) << 16) |
- (((krb5_ui_4)mdContext->in[ii+1]) << 8) |
- ((krb5_ui_4)mdContext->in[ii]);
+ in[i] = load_32_le(mdContext->in+ii);
Transform (mdContext->buf, in);
/* store buffer in digest */
for (i = 0, ii = 0; i < 4; i++, ii += 4) {
- mdContext->digest[ii] = (unsigned char)(mdContext->buf[i] & 0xFF);
- mdContext->digest[ii+1] =
- (unsigned char)((mdContext->buf[i] >> 8) & 0xFF);
- mdContext->digest[ii+2] =
- (unsigned char)((mdContext->buf[i] >> 16) & 0xFF);
- mdContext->digest[ii+3] =
- (unsigned char)((mdContext->buf[i] >> 24) & 0xFF);
+ store_32_le(mdContext->buf[i], mdContext->digest+ii);
}
}