|
Message-ID: <4D765D75.6040106@bredband.net> Date: Tue, 08 Mar 2011 17:46:45 +0100 From: magnum <rawsmooth@...dband.net> To: john-dev@...ts.openwall.com Subject: Re: --utf8 option, proof of concept On 03/08/2011 12:31 AM, jfoug wrote: >> -----Original Message----- >> From: magnum Sent - Monday, March 07, 2011 4:03 PM >> * In a couple of formats (eg. NT) I have doubled the set_salt function >> and call it via a pointer, in order to mitigate the performance hit for >> non-utf8. I'm not sure how to do it better, but I'm not particularly >> satisfied. It's a hack. > > Here is an example for the changes in rawmd5. > > extern struct fmt_main fmt_rawMD5unicode > > static void rawmd5_init(void) > { > if (options.flags& FLG_UTF8) > rawMD5unicode.set_key = set_key_utf8; > else > rawMD5unicode.set_key = set_key_ansi; > } > > > Simply sets the function pointer to the proper set_key into the format's > function pointer for set_key. The only reason for the extern, is since the > declaration/definition of the actual object is at the end of the source > file. Thanks. I had tried something similar but it did not work. Now with some more courage I managed to do it: static void set_key_utf8(char *_key, int index); static void set_key_ansi(char *_key, int index); extern struct fmt_main fmt_rawMD5unicode; static void rawmd5_init(void) { if (options.flags & FLG_UTF8) fmt_rawMD5unicode.methods.set_key = &set_key_utf8; else fmt_rawMD5unicode.methods.set_key = &set_key_ansi; } ...and this last detail, which was what I missed before: @@ -403,7 +398,7 @@ struct fmt_main fmt_rawMD5unicode = rawmd5_set_salt, - set_key, + NULL, So, is this a sane way of doing this? Is init() always called, and only once? magnum
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.