Introducing Argon2 memory, time, and lanes constants

PASSWORD_ARGON2_MEMORY_COST
PASSWORD_ARGON2_TIME_COST
PASSWORD_ARGON2_LANES
This commit is contained in:
Charles R. Portwood II 2016-07-08 15:31:30 -05:00
parent de85c2e526
commit 3c7fb71a90
2 changed files with 13 additions and 9 deletions

View file

@ -44,6 +44,10 @@ PHP_MINIT_FUNCTION(password) /* {{{ */
REGISTER_LONG_CONSTANT("PASSWORD_BCRYPT_DEFAULT_COST", PHP_PASSWORD_BCRYPT_COST, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("PASSWORD_BCRYPT_DEFAULT_COST", PHP_PASSWORD_BCRYPT_COST, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("PASSWORD_ARGON2_MEMORY_COST", PHP_PASSWORD_ARGON2_MEMORY_COST, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("PASSWORD_ARGON2_TIME_COST", PHP_PASSWORD_ARGON2_TIME_COST, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("PASSWORD_ARGON2_LANES", PHP_PASSWORD_ARGON2_LANES, CONST_CS | CONST_PERSISTENT);
return SUCCESS; return SUCCESS;
} }
/* }}} */ /* }}} */
@ -180,9 +184,9 @@ PHP_FUNCTION(password_get_info)
case PHP_PASSWORD_ARGON2I: case PHP_PASSWORD_ARGON2I:
case PHP_PASSWORD_ARGON2D: case PHP_PASSWORD_ARGON2D:
{ {
zend_long m_cost = PHP_ARGON2_M_COST; zend_long m_cost = PHP_PASSWORD_ARGON2_MEMORY_COST;
zend_long t_cost = PHP_ARGON2_T_COST; zend_long t_cost = PHP_PASSWORD_ARGON2_TIME_COST;
zend_long lanes = PHP_ARGON2_LANES; zend_long lanes = PHP_PASSWORD_ARGON2_LANES;
sscanf(hash, "$%*[argon2id]$v=%*ld$m=" ZEND_LONG_FMT ",t=" ZEND_LONG_FMT ",p=" ZEND_LONG_FMT, &m_cost, &t_cost, &lanes); sscanf(hash, "$%*[argon2id]$v=%*ld$m=" ZEND_LONG_FMT ",t=" ZEND_LONG_FMT ",p=" ZEND_LONG_FMT, &m_cost, &t_cost, &lanes);
add_assoc_long(&options, "m_cost", m_cost); add_assoc_long(&options, "m_cost", m_cost);
@ -239,9 +243,9 @@ PHP_FUNCTION(password_needs_rehash)
case PHP_PASSWORD_ARGON2I: case PHP_PASSWORD_ARGON2I:
case PHP_PASSWORD_ARGON2D: case PHP_PASSWORD_ARGON2D:
{ {
zend_long new_m_cost = PHP_ARGON2_M_COST, m_cost = 0; zend_long new_m_cost = PHP_PASSWORD_ARGON2_MEMORY_COST, m_cost = 0;
zend_long new_t_cost = PHP_ARGON2_T_COST, t_cost = 0; zend_long new_t_cost = PHP_PASSWORD_ARGON2_TIME_COST, t_cost = 0;
zend_long new_lanes = PHP_ARGON2_LANES, lanes = 0; zend_long new_lanes = PHP_PASSWORD_ARGON2_LANES, lanes = 0;
if (options && (option_buffer = zend_hash_str_find(options, "m_cost", sizeof("m_cost")-1)) != NULL) { if (options && (option_buffer = zend_hash_str_find(options, "m_cost", sizeof("m_cost")-1)) != NULL) {
new_m_cost = zval_get_long(option_buffer); new_m_cost = zval_get_long(option_buffer);

View file

@ -31,9 +31,9 @@ PHP_MINIT_FUNCTION(password);
#define PHP_PASSWORD_DEFAULT PHP_PASSWORD_ARGON2I #define PHP_PASSWORD_DEFAULT PHP_PASSWORD_ARGON2I
#define PHP_PASSWORD_BCRYPT_COST 10 #define PHP_PASSWORD_BCRYPT_COST 10
#define PHP_ARGON2_M_COST 1<<16 #define PHP_PASSWORD_ARGON2_MEMORY_COST 1<<16
#define PHP_ARGON2_T_COST 3 #define PHP_PASSWORD_ARGON2_TIME_COST 3
#define PHP_ARGON2_LANES 1 #define PHP_PASSWORD_ARGON2_LANES 1
typedef enum { typedef enum {
PHP_PASSWORD_UNKNOWN, PHP_PASSWORD_UNKNOWN,