Openwall GNU/*/Linux - a small security-enhanced Linux distro for servers
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Sun, 17 Jun 2012 10:50:52 +0200
From: magnum <john.magnum@...hmail.com>
To: john-dev@...ts.openwall.com
Subject: Re: Re: [patch] optional new raw sha1 implemetation

On 2012-06-17 10:43, magnum wrote:
> No, that was what I did first but memrchr is not portable. Not everyone
> runs GNU or Linux. I think allocating a 17 byte key and ensure the last
> is null is the simplest fix. In fact we only need to to this once as we
> never overwrite it:
>
> static uint32_t *result;
> if (!result)
> result = mem_calloc_tiny(SHA1_DIGEST_SIZE + 1, MEM_ALIGN_WORD);
>
> I'll commit the above for now but you are obviously free to change it to
> something else.

I confused the above with binary() but here's what I'll use for now:

@@ -270,7 +270,7 @@ static void sha1_fmt_set_key(char *key, int index)

  static char * sha1_fmt_get_key(int index)
  {
-    static uint32_t key[4];
+    static uint32_t key[5];

      // This function is not hot, we can do this slowly. First, restore
      // endianness.
@@ -279,6 +279,9 @@ static char * sha1_fmt_get_key(int index)
      key[2] = __builtin_bswap32(M[index][2]);
      key[3] = __builtin_bswap32(M[index][3]);

+    // We need a null byte for the strrchr
+    key[4] = 0;
+
      // Skip backwards until we hit the trailing bit, then remove it.
      memset(strrchr((char*)key, 0x80), 0x00, 1);


magnum

Powered by blists - more mailing lists

Your e-mail address:

Powered by Openwall GNU/*/Linux - Powered by OpenVZ