diff options
| author | Ken Raeburn <raeburn@mit.edu> | 2008-08-02 06:36:49 +0000 |
|---|---|---|
| committer | Ken Raeburn <raeburn@mit.edu> | 2008-08-02 06:36:49 +0000 |
| commit | 4c3157497d4394cb6b09565a94091256aa3d5b54 (patch) | |
| tree | 4bf8c84ccd9f18ee9b6e14a0b0cbd906516fbad7 /src/lib/crypto/md4 | |
| parent | fef45697544a3855a989a321b621612aa4651f20 (diff) | |
| download | krb5-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.c | 21 |
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); } } |
