Doesn’t this simple patch break all existing hashes for the existing type?

Perhaps this breakage is safe for 2.0, but perhaps it is better to just 
introduce a new less expensive hash format, while still allowing verifications 
against the old format.

For some of the hash usacases the fact that the code is very expensive is an 
advantage. (Expensive to crack)


Bert

Sent from Mail for Windows 10

From: n...@apache.org
Sent: maandag 5 december 2016 21:57
To: comm...@apr.apache.org
Subject: svn commit: r1772803 - in /apr/apr/trunk: 
CHANGEScrypto/crypt_blowfish.c

Author: niq
Date: Mon Dec  5 20:56:59 2016
New Revision: 1772803

URL: http://svn.apache.org/viewvc?rev=1772803&view=rev
Log:
apr_crypt: avoid excessive iteration in bcrypt hash.
Patch by Hanno Böck

Modified:
    apr/apr/trunk/CHANGES
    apr/apr/trunk/crypto/crypt_blowfish.c

Modified: apr/apr/trunk/CHANGES
URL: 
http://svn.apache.org/viewvc/apr/apr/trunk/CHANGES?rev=1772803&r1=1772802&r2=1772803&view=diff
==============================================================================
--- apr/apr/trunk/CHANGES [utf-8] (original)
+++ apr/apr/trunk/CHANGES [utf-8] Mon Dec  5 20:56:59 2016
@@ -1,6 +1,9 @@
                                                      -*- coding: utf-8 -*-
 Changes for APR 2.0.0
 
+  *) apr_crypto: avoid excessive iteration in bcrypt hash.
+     [Hanno Böck <hanno hboeck.de>]
+
   *) apr_siphash: Implement keyed hash function SipHash.  [Yann Ylavic]
 
   *) apr_atomic: change the API of apr_atomic_casptr() apr_atomic_xchgptr()

Modified: apr/apr/trunk/crypto/crypt_blowfish.c
URL: 
http://svn.apache.org/viewvc/apr/apr/trunk/crypto/crypt_blowfish.c?rev=1772803&r1=1772802&r2=1772803&view=diff
==============================================================================
--- apr/apr/trunk/crypto/crypt_blowfish.c (original)
+++ apr/apr/trunk/crypto/crypt_blowfish.c Mon Dec  5 20:56:59 2016
@@ -877,7 +877,7 @@ char *_crypt_gensalt_blowfish_rn(const c
        const char *input, int size, char *output, int output_size)
 {
        if (size < 16 || output_size < 7 + 22 + 1 ||
-           (count && (count < 4 || count > 31)) ||
+           (count && (count < 4 || count > 17)) ||
            prefix[0] != '$' || prefix[1] != '2' ||
            (prefix[2] != 'a' && prefix[2] != 'y')) {
                if (output_size > 0) output[0] = '\0';



Reply via email to