mirror of
https://github.com/sheumann/hush.git
synced 2024-12-21 23:29:34 +00:00
libbb/crypt: code shrink
function old new delta to64_msb_first - 63 +63 des_crypt 1509 1338 -171 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 0/1 up/down: 63/-171) Total: -108 bytes
This commit is contained in:
parent
9c6d12993f
commit
d324e1b808
@ -696,13 +696,22 @@ do_des(struct des_ctx *ctx, /*uint32_t l_in, uint32_t r_in,*/ uint32_t *l_out, u
|
||||
|
||||
#define DES_OUT_BUFSIZE 21
|
||||
|
||||
static void
|
||||
to64_msb_first(char *s, unsigned v)
|
||||
{
|
||||
*s++ = ascii64[(v >> 18) & 0x3f]; /* bits 23..18 */
|
||||
*s++ = ascii64[(v >> 12) & 0x3f]; /* bits 17..12 */
|
||||
*s++ = ascii64[(v >> 6) & 0x3f]; /* bits 11..6 */
|
||||
*s = ascii64[v & 0x3f]; /* bits 5..0 */
|
||||
}
|
||||
|
||||
static char *
|
||||
NOINLINE
|
||||
des_crypt(struct des_ctx *ctx, char output[DES_OUT_BUFSIZE],
|
||||
const unsigned char *key, const unsigned char *setting)
|
||||
{
|
||||
uint32_t salt, l, r0, r1, keybuf[2];
|
||||
uint8_t *p, *q;
|
||||
uint32_t salt, r0, r1, keybuf[2];
|
||||
uint8_t *q;
|
||||
|
||||
/*
|
||||
* Copy the key, shifting each character up by one bit
|
||||
@ -733,34 +742,39 @@ des_crypt(struct des_ctx *ctx, char output[DES_OUT_BUFSIZE],
|
||||
*/
|
||||
output[1] = setting[1] ? setting[1] : output[0];
|
||||
|
||||
p = (uint8_t *)output + 2;
|
||||
|
||||
setup_salt(ctx, salt);
|
||||
/*
|
||||
* Do it.
|
||||
*/
|
||||
/* Do it. */
|
||||
do_des(ctx, /*0, 0,*/ &r0, &r1, 25 /* count */);
|
||||
|
||||
/*
|
||||
* Now encode the result...
|
||||
*/
|
||||
l = (r0 >> 8);
|
||||
*p++ = ascii64[(l >> 18) & 0x3f];
|
||||
*p++ = ascii64[(l >> 12) & 0x3f];
|
||||
*p++ = ascii64[(l >> 6) & 0x3f];
|
||||
*p++ = ascii64[l & 0x3f];
|
||||
|
||||
/* Now encode the result. */
|
||||
#if 0
|
||||
{
|
||||
uint32_t l = (r0 >> 8);
|
||||
q = (uint8_t *)output + 2;
|
||||
*q++ = ascii64[(l >> 18) & 0x3f]; /* bits 31..26 of r0 */
|
||||
*q++ = ascii64[(l >> 12) & 0x3f]; /* bits 25..20 of r0 */
|
||||
*q++ = ascii64[(l >> 6) & 0x3f]; /* bits 19..14 of r0 */
|
||||
*q++ = ascii64[l & 0x3f]; /* bits 13..8 of r0 */
|
||||
l = ((r0 << 16) | (r1 >> 16));
|
||||
*p++ = ascii64[(l >> 18) & 0x3f];
|
||||
*p++ = ascii64[(l >> 12) & 0x3f];
|
||||
*p++ = ascii64[(l >> 6) & 0x3f];
|
||||
*p++ = ascii64[l & 0x3f];
|
||||
|
||||
*q++ = ascii64[(l >> 18) & 0x3f]; /* bits 7..2 of r0 */
|
||||
*q++ = ascii64[(l >> 12) & 0x3f]; /* bits 1..2 of r0 and 31..28 of r1 */
|
||||
*q++ = ascii64[(l >> 6) & 0x3f]; /* bits 27..22 of r1 */
|
||||
*q++ = ascii64[l & 0x3f]; /* bits 21..16 of r1 */
|
||||
l = r1 << 2;
|
||||
*p++ = ascii64[(l >> 12) & 0x3f];
|
||||
*p++ = ascii64[(l >> 6) & 0x3f];
|
||||
*p++ = ascii64[l & 0x3f];
|
||||
*p = 0;
|
||||
*q++ = ascii64[(l >> 12) & 0x3f]; /* bits 15..10 of r1 */
|
||||
*q++ = ascii64[(l >> 6) & 0x3f]; /* bits 9..4 of r1 */
|
||||
*q++ = ascii64[l & 0x3f]; /* bits 3..0 of r1 + 00 */
|
||||
*q = 0;
|
||||
}
|
||||
#else
|
||||
/* Each call takes low-order 24 bits and stores 4 chars */
|
||||
/* bits 31..8 of r0 */
|
||||
to64_msb_first(output + 2, (r0 >> 8));
|
||||
/* bits 7..0 of r0 and 31..16 of r1 */
|
||||
to64_msb_first(output + 6, (r0 << 16) | (r1 >> 16));
|
||||
/* (bits 15..0 of r1 + 00) and NUL byte */
|
||||
to64_msb_first(output + 10, (r1 << 8));
|
||||
#endif
|
||||
|
||||
return output;
|
||||
}
|
||||
|
@ -65,10 +65,6 @@
|
||||
* by Erik Andersen to remove reentrance stuff...
|
||||
*/
|
||||
|
||||
#define MD5_MAGIC_STR "$1$"
|
||||
#define MD5_MAGIC_LEN (sizeof(MD5_MAGIC_STR) - 1)
|
||||
static const unsigned char __md5__magic[] = MD5_MAGIC_STR;
|
||||
|
||||
/*
|
||||
* UNIX password
|
||||
*
|
||||
@ -163,5 +159,3 @@ md5_crypt(char result[MD5_OUT_BUFSIZE], const unsigned char *pw, const unsigned
|
||||
|
||||
return result;
|
||||
}
|
||||
#undef MD5_MAGIC_STR
|
||||
#undef MD5_MAGIC_LEN
|
||||
|
Loading…
Reference in New Issue
Block a user