Enrico

> I like your idea to offer a wrapper of crypt() with a better API
> (actually I used this approach in the ZF2 project:
> https://github.com/zendframework/zf2/blob/master/library/Zend/Crypt/Password/Bcrypt.php).

Yeah, crypt() is really nice, and offers a lot of good things out of
the box. It's just the salt generation and error handling that are a
pita...

> I think we should also support the user's salt as option and generate
> a random salt if not provided.

Yeah, that could be good. The only part we'd need to be careful of is
error checking the salt (correct length, correct format, etc). But in
general I like the idea...

> For the random generation I suggest to use as first option the
> openssl_random_pseudo_bytes() that is considered more secure compared
> with mcrypt_create_iv($size, MCRYPT_DEV_URANDOM).

Well, the point wasn't to make a CS secure salt. We've already had
discussions on that (it's not needed, and can harm the system to try
to use CS salts). All salts need to be is unique (statistically unique
is usually good enough). If people really want to use a CS salt, they
should pass one in as the user-generated salt.  But I'd really like to
voice my opposition to having this function default to CS secure salt
generation...

> I just wrote that changes here: https://gist.github.com/2949592

Looks good to me otherwise.

I expanded my original gist a bit to add in the ability to register
your own algorithm:

https://gist.github.com/2949382

That way, existing projects that use things like PHPASS can register
their own handler, and move towards this (let the fallback happen in
password_validate instead of in user code).

If we're going to go with this option (the series of functions), what
do you think of putting them under spl:

\SPL\password_create()
\SPL\password_validate()
\SPL\password_register_algo()
\SPL\password_create_salt()

Instead of doing it class based as was originally suggested?

The reason for namespacing is that password_validate is used in the
wild (not by many:
http://www.koders.com/default.aspx?s=%22password_validate%28%22&search.x=0&search.y=0&la=PHP&li=*&scope=
)

Anthony

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to