scottmac Thu Jun 26 22:33:16 2008 UTC
Added files: (Branch: PHP_5_3)
/php-src/ext/hash/tests mhash_001.phpt mhash_002.phpt
mhash_003.phpt skip_mhash.inc
Removed files:
/php-src/ext/mhash mhash.dsp
/php-src/ext/mhash/tests 001.phpt 002.phpt 003.phpt skip.inc
Modified files:
/php-src/ext/hash CREDITS config.m4 hash.c
/php-src/ext/mhash config.m4 mhash.c php_mhash.h
Log:
Make the old mhash API a wrapper around hash, this removes a dependency.
http://cvs.php.net/viewvc.cgi/php-src/ext/hash/CREDITS?r1=1.2.2.2&r2=1.2.2.2.4.1&diff_format=u
Index: php-src/ext/hash/CREDITS
diff -u php-src/ext/hash/CREDITS:1.2.2.2 php-src/ext/hash/CREDITS:1.2.2.2.4.1
--- php-src/ext/hash/CREDITS:1.2.2.2 Fri Dec 2 01:59:44 2005
+++ php-src/ext/hash/CREDITS Thu Jun 26 22:33:16 2008
@@ -1,2 +1,2 @@
PHP hash
-Sara Golemon, Rasmus Lerdorf, Stefan Esser, Michael Wallner
+Sara Golemon, Rasmus Lerdorf, Stefan Esser, Michael Wallner, Scott MacVicar
http://cvs.php.net/viewvc.cgi/php-src/ext/hash/config.m4?r1=1.10.2.4.2.1&r2=1.10.2.4.2.1.2.1&diff_format=u
Index: php-src/ext/hash/config.m4
diff -u php-src/ext/hash/config.m4:1.10.2.4.2.1
php-src/ext/hash/config.m4:1.10.2.4.2.1.2.1
--- php-src/ext/hash/config.m4:1.10.2.4.2.1 Tue Jul 3 17:25:33 2007
+++ php-src/ext/hash/config.m4 Thu Jun 26 22:33:16 2008
@@ -1,9 +1,17 @@
-dnl $Id: config.m4,v 1.10.2.4.2.1 2007/07/03 17:25:33 sniper Exp $
+dnl $Id: config.m4,v 1.10.2.4.2.1.2.1 2008/06/26 22:33:16 scottmac Exp $
dnl config.m4 for extension hash
PHP_ARG_ENABLE(hash, whether to enable hash support,
[ --disable-hash Disable hash support], yes)
+if test "$PHP_MHASH" != "no"; then
+ if test "$PHP_HASH" == "no"; then
+ PHP_HASH="yes"
+ fi
+
+ AC_DEFINE(PHP_MHASH_BC, 1, [ ])
+fi
+
if test "$PHP_HASH" != "no"; then
AC_DEFINE(HAVE_HASH_EXT,1,[Have HASH Extension])
http://cvs.php.net/viewvc.cgi/php-src/ext/hash/hash.c?r1=1.18.2.5.2.7.2.6&r2=1.18.2.5.2.7.2.7&diff_format=u
Index: php-src/ext/hash/hash.c
diff -u php-src/ext/hash/hash.c:1.18.2.5.2.7.2.6
php-src/ext/hash/hash.c:1.18.2.5.2.7.2.7
--- php-src/ext/hash/hash.c:1.18.2.5.2.7.2.6 Tue Jun 3 17:25:42 2008
+++ php-src/ext/hash/hash.c Thu Jun 26 22:33:16 2008
@@ -13,10 +13,11 @@
| [EMAIL PROTECTED] so we can mail you a copy immediately. |
+----------------------------------------------------------------------+
| Author: Sara Golemon <[EMAIL PROTECTED]> |
+ | Scott MacVicar <[EMAIL PROTECTED]> |
+----------------------------------------------------------------------+
*/
-/* $Id: hash.c,v 1.18.2.5.2.7.2.6 2008/06/03 17:25:42 scottmac Exp $ */
+/* $Id: hash.c,v 1.18.2.5.2.7.2.7 2008/06/26 22:33:16 scottmac Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -35,6 +36,48 @@
# define DEFAULT_CONTEXT NULL
#endif
+#ifdef PHP_MHASH_BC
+struct mhash_bc_entry {
+ char *mhash_name;
+ char *hash_name;
+ int value;
+};
+
+#define MHASH_NUM_ALGOS 29
+
+static struct mhash_bc_entry mhash_to_hash[MHASH_NUM_ALGOS] = {
+ {"CRC32", "crc32", 0},
+ {"MD5", "md5", 1},
+ {"SHA1", "sha1", 2},
+ {"HAVAL256", "haval256,3", 3},
+ {NULL, NULL, 4},
+ {"RIPEMD160", "ripemd160", 5},
+ {NULL, NULL, 6},
+ {"TIGER", "tiger192,3", 7},
+ {"GOST", "gost", 8},
+ {"CRC32B", "crc32b", 9},
+ {"HAVAL224", "haval224,3", 10},
+ {"HAVAL192", "haval192,3", 11},
+ {"HAVAL160", "haval160,3", 12},
+ {"HAVAL128", "haval128,3", 13},
+ {"TIGER128", "tiger128,3", 14},
+ {"TIGER160", "tiger160,3", 15},
+ {"MD4", "md4", 16},
+ {"SHA256", "sha256", 17},
+ {"ADLER32", "adler32", 18},
+ {"SHA224", "sha224", 19},
+ {"SHA512", "sha512", 20},
+ {"SHA384", "sha384", 21},
+ {"WHIRLPOOL", "whirlpool", 22},
+ {"RIPEMD128", "ripemd128", 23},
+ {"RIPEMD256", "ripemd256", 24},
+ {"RIPEMD320", "ripemd320", 25},
+ {NULL, NULL, 26}, /* support needs to be added for snefru 128 */
+ {"SNEFRU256", "snefru256", 27},
+ {"MD2", "md2", 28}
+};
+#endif
+
/* Hash Registry Access */
PHP_HASH_API const php_hash_ops *php_hash_fetch_ops(const char *algo, int
algo_len) /* {{{ */
@@ -74,11 +117,11 @@
/* Userspace */
-static void php_hash_do_hash(INTERNAL_FUNCTION_PARAMETERS, int isfilename) /*
{{{ */
+static void php_hash_do_hash(INTERNAL_FUNCTION_PARAMETERS, int isfilename,
zend_bool raw_output_default) /* {{{ */
{
char *algo, *data, *digest;
int algo_len, data_len;
- zend_bool raw_output = 0;
+ zend_bool raw_output = raw_output_default;
const php_hash_ops *ops;
void *context;
php_stream *stream = NULL;
@@ -138,7 +181,7 @@
Returns lowercase hexits by default */
PHP_FUNCTION(hash)
{
- php_hash_do_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0);
+ php_hash_do_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0, 0);
}
/* }}} */
@@ -147,15 +190,15 @@
Returns lowercase hexits by default */
PHP_FUNCTION(hash_file)
{
- php_hash_do_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1);
+ php_hash_do_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1, 0);
}
/* }}} */
-static void php_hash_do_hash_hmac(INTERNAL_FUNCTION_PARAMETERS, int
isfilename) /* {{{ */
+static void php_hash_do_hash_hmac(INTERNAL_FUNCTION_PARAMETERS, int
isfilename, zend_bool raw_output_default) /* {{{ */
{
char *algo, *data, *digest, *key, *K;
int algo_len, data_len, key_len, i;
- zend_bool raw_output = 0;
+ zend_bool raw_output = raw_output_default;
const php_hash_ops *ops;
void *context;
php_stream *stream = NULL;
@@ -250,7 +293,7 @@
Returns lowercase hexits by default */
PHP_FUNCTION(hash_hmac)
{
- php_hash_do_hash_hmac(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0);
+ php_hash_do_hash_hmac(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0, 0);
}
/* }}} */
@@ -259,7 +302,7 @@
Returns lowercase hexits by default */
PHP_FUNCTION(hash_hmac_file)
{
- php_hash_do_hash_hmac(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1);
+ php_hash_do_hash_hmac(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1, 0);
}
/* }}} */
@@ -562,6 +605,172 @@
#define PHP_HASH_HAVAL_REGISTER(p,b) php_hash_register_algo("haval" #b ","
#p , &php_hash_##p##haval##b##_ops);
+#ifdef PHP_MHASH_BC
+
+static void mhash_init(INIT_FUNC_ARGS)
+{
+ char buf[128];
+ int len;
+ int algo_number = 0;
+
+ for (algo_number = 0; algo_number < MHASH_NUM_ALGOS; algo_number++) {
+ struct mhash_bc_entry algorithm = mhash_to_hash[algo_number];
+ if (algorithm.mhash_name == NULL) {
+ continue;
+ }
+
+ len = slprintf(buf, 127, "MHASH_%s", algorithm.mhash_name,
strlen(algorithm.mhash_name));
+ {
+ char name[len+1];
+ memcpy(name, buf, len+1);
+ REGISTER_LONG_CONSTANT(name, algorithm.value, CONST_CS
| CONST_PERSISTENT);
+ }
+ }
+}
+
+PHP_FUNCTION(mhash)
+{
+ zval **z_algorithm;
+ int algorithm;
+
+ if (ZEND_NUM_ARGS() == 0 || zend_get_parameters_ex(1, &z_algorithm) ==
FAILURE) {
+ WRONG_PARAM_COUNT;
+ }
+
+ algorithm = Z_LVAL_PP(z_algorithm);
+
+ /* need to conver the first parameter from int to string */
+ if (algorithm >= 0 && algorithm < MHASH_NUM_ALGOS) {
+ struct mhash_bc_entry algorithm_lookup =
mhash_to_hash[algorithm];
+ if (algorithm_lookup.hash_name) {
+ ZVAL_STRING(*z_algorithm, algorithm_lookup.hash_name,
1);
+ }
+ }
+
+ if (ZEND_NUM_ARGS() == 3) {
+ php_hash_do_hash_hmac(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0, 1);
+ } else if (ZEND_NUM_ARGS() == 2) {
+ php_hash_do_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0, 1);
+ } else {
+ WRONG_PARAM_COUNT;
+ }
+}
+
+PHP_FUNCTION(mhash_get_hash_name)
+{
+ int algorithm;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &algorithm)
== FAILURE) {
+ return;
+ }
+
+ if (algorithm >= 0 && algorithm < MHASH_NUM_ALGOS) {
+ struct mhash_bc_entry algorithm_lookup =
mhash_to_hash[algorithm];
+ if (algorithm_lookup.mhash_name) {
+ RETURN_STRING(algorithm_lookup.mhash_name, 1);
+ }
+ }
+ RETURN_FALSE;
+}
+
+PHP_FUNCTION(mhash_count)
+{
+ if (zend_parse_parameters_none() == FAILURE) {
+ return;
+ }
+ RETURN_LONG(MHASH_NUM_ALGOS - 1);
+}
+
+PHP_FUNCTION(mhash_get_block_size)
+{
+ int algorithm;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &algorithm)
== FAILURE) {
+ return;
+ }
+ RETVAL_FALSE;
+
+ if (algorithm >= 0 && algorithm < MHASH_NUM_ALGOS) {
+ struct mhash_bc_entry algorithm_lookup =
mhash_to_hash[algorithm];
+ if (algorithm_lookup.mhash_name) {
+ const php_hash_ops *ops =
php_hash_fetch_ops(algorithm_lookup.hash_name,
strlen(algorithm_lookup.hash_name));
+ if (ops) {
+ RETVAL_LONG(ops->digest_size);
+ }
+ }
+ }
+}
+
+#define SALT_SIZE 8
+
+PHP_FUNCTION(mhash_keygen_s2k)
+{
+ int algorithm, bytes;
+ char *password, *salt;
+ int password_len, salt_len;
+ char padded_salt[SALT_SIZE];
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lssl",
&algorithm, &password, &password_len, &salt, &salt_len, &bytes) == FAILURE) {
+ return;
+ }
+
+ if (bytes <= 0){
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "the byte parameter
must be greater than 0");
+ RETURN_FALSE;
+ }
+
+ salt_len = MIN(salt_len, SALT_SIZE);
+
+ memcpy(padded_salt, salt, salt_len);
+ if (salt_len < SALT_SIZE) {
+ memset(padded_salt + salt_len, 0, SALT_SIZE - salt_len);
+ }
+ salt_len = SALT_SIZE;
+
+ RETVAL_FALSE;
+ if (algorithm >= 0 && algorithm < MHASH_NUM_ALGOS) {
+ struct mhash_bc_entry algorithm_lookup =
mhash_to_hash[algorithm];
+ if (algorithm_lookup.mhash_name) {
+ const php_hash_ops *ops =
php_hash_fetch_ops(algorithm_lookup.hash_name,
strlen(algorithm_lookup.hash_name));
+ if (ops) {
+ unsigned char null = '\0';
+ void *context;
+ char *key, *digest;
+ int i = 0, j = 0;
+ int block_size = ops->digest_size;
+ int times = bytes / block_size;
+ if (bytes % block_size != 0) times++;
+
+ context = emalloc(ops->context_size);
+ ops->hash_init(context);
+
+ key = ecalloc(1, times * block_size);
+ digest = emalloc(ops->digest_size + 1);
+
+ for (i = 0; i < times; i++) {
+ ops->hash_init(context);
+
+ for (j=0;j<i;j++) {
+ ops->hash_update(context,
&null, 1);
+ }
+ ops->hash_update(context, (unsigned
char *)padded_salt, salt_len);
+ ops->hash_update(context, password,
password_len);
+ ops->hash_final(digest, context);
+ memcpy( &key[i*block_size], digest,
block_size);
+ }
+
+ RETVAL_STRINGL(key, bytes, 1);
+ memset(key, 0, bytes);
+ efree(digest);
+ efree(context);
+ efree(key);
+ }
+ }
+ }
+}
+
+#endif
+
/* {{{ PHP_MINIT_FUNCTION
*/
PHP_MINIT_FUNCTION(hash)
@@ -616,6 +825,10 @@
REGISTER_LONG_CONSTANT("HASH_HMAC", PHP_HASH_HMAC,
CONST_CS | CONST_PERSISTENT);
+#ifdef PHP_MHASH_BC
+ mhash_init(INIT_FUNC_ARGS_PASSTHRU);
+#endif
+
return SUCCESS;
}
/* }}} */
@@ -755,6 +968,38 @@
ZEND_BEGIN_ARG_INFO(arginfo_hash_algos, 0)
ZEND_END_ARG_INFO()
+/* BC Land */
+#ifdef PHP_MHASH_BC
+static
+ZEND_BEGIN_ARG_INFO(arginfo_mhash_get_block_size, 0)
+ ZEND_ARG_INFO(0, hash)
+ZEND_END_ARG_INFO()
+
+static
+ZEND_BEGIN_ARG_INFO(arginfo_mhash_get_hash_name, 0)
+ ZEND_ARG_INFO(0, hash)
+ZEND_END_ARG_INFO()
+
+static
+ZEND_BEGIN_ARG_INFO(arginfo_mhash_keygen_s2k, 0)
+ ZEND_ARG_INFO(0, hash)
+ ZEND_ARG_INFO(0, input_password)
+ ZEND_ARG_INFO(0, salt)
+ ZEND_ARG_INFO(0, bytes)
+ZEND_END_ARG_INFO()
+
+static
+ZEND_BEGIN_ARG_INFO(arginfo_mhash_count, 0)
+ZEND_END_ARG_INFO()
+
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_mhash, 0, 0, 2)
+ ZEND_ARG_INFO(0, hash)
+ ZEND_ARG_INFO(0, data)
+ ZEND_ARG_INFO(0, key)
+ZEND_END_ARG_INFO()
+#endif
+
/* }}} */
/* {{{ hash_functions[]
@@ -786,6 +1031,14 @@
PHP_NAMED_FE(sha1_file, php_if_sha1_file,
arginfo_hash_sha1_file)
#endif /* PHP_HASH_SHA1_NOT_IN_CORE */
+#ifdef PHP_MHASH_BC
+ PHP_FE(mhash_keygen_s2k, arginfo_mhash_keygen_s2k)
+ PHP_FE(mhash_get_block_size, arginfo_mhash_get_block_size)
+ PHP_FE(mhash_get_hash_name, arginfo_mhash_get_hash_name)
+ PHP_FE(mhash_count, arginfo_mhash_count)
+ PHP_FE(mhash, arginfo_mhash)
+#endif
+
{NULL, NULL, NULL}
};
/* }}} */
http://cvs.php.net/viewvc.cgi/php-src/ext/mhash/config.m4?r1=1.15.4.1&r2=1.15.4.1.2.1&diff_format=u
Index: php-src/ext/mhash/config.m4
diff -u php-src/ext/mhash/config.m4:1.15.4.1
php-src/ext/mhash/config.m4:1.15.4.1.2.1
--- php-src/ext/mhash/config.m4:1.15.4.1 Sat Dec 23 17:58:47 2006
+++ php-src/ext/mhash/config.m4 Thu Jun 26 22:33:16 2008
@@ -1,23 +1,12 @@
dnl
-dnl $Id: config.m4,v 1.15.4.1 2006/12/23 17:58:47 derick Exp $
+dnl $Id: config.m4,v 1.15.4.1.2.1 2008/06/26 22:33:16 scottmac Exp $
dnl
PHP_ARG_WITH(mhash, for mhash support,
[ --with-mhash[=DIR] Include mhash support])
if test "$PHP_MHASH" != "no"; then
- for i in $PHP_MHASH /usr/local /usr /opt/mhash; do
- test -f $i/include/mhash.h && MHASH_DIR=$i && break
- done
-
- if test -z "$MHASH_DIR"; then
- AC_MSG_ERROR(Please reinstall libmhash - I cannot find mhash.h)
- fi
-
- PHP_ADD_INCLUDE($MHASH_DIR/include)
- PHP_ADD_LIBRARY_WITH_PATH(mhash, $MHASH_DIR/$PHP_LIBDIR, MHASH_SHARED_LIBADD)
-
PHP_NEW_EXTENSION(mhash, mhash.c, $ext_shared)
PHP_SUBST(MHASH_SHARED_LIBADD)
- AC_DEFINE(HAVE_LIBMHASH,1,[ ])
+ PHP_ADD_EXTENSION_DEP(mhash, hash, true)
fi
http://cvs.php.net/viewvc.cgi/php-src/ext/mhash/mhash.c?r1=1.48.2.3.2.5.2.3&r2=1.48.2.3.2.5.2.4&diff_format=u
Index: php-src/ext/mhash/mhash.c
diff -u php-src/ext/mhash/mhash.c:1.48.2.3.2.5.2.3
php-src/ext/mhash/mhash.c:1.48.2.3.2.5.2.4
--- php-src/ext/mhash/mhash.c:1.48.2.3.2.5.2.3 Mon Mar 10 22:12:34 2008
+++ php-src/ext/mhash/mhash.c Thu Jun 26 22:33:16 2008
@@ -16,29 +16,19 @@
| Nikos Mavroyanopoulos <[EMAIL PROTECTED]> (HMAC, KEYGEN) |
+----------------------------------------------------------------------+
*/
-/* $Id: mhash.c,v 1.48.2.3.2.5.2.3 2008/03/10 22:12:34 felipe Exp $ */
+/* $Id: mhash.c,v 1.48.2.3.2.5.2.4 2008/06/26 22:33:16 scottmac Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "php.h"
-
-#if HAVE_LIBMHASH
-
-#include "fcntl.h"
#include "php_mhash.h"
-#include "mhash.h"
#include "php_ini.h"
#include "php_globals.h"
#include "ext/standard/info.h"
const zend_function_entry mhash_functions[] = {
- PHP_FE(mhash_get_block_size, NULL)
- PHP_FE(mhash_get_hash_name, NULL)
- PHP_FE(mhash_keygen_s2k, NULL)
- PHP_FE(mhash_count, NULL)
- PHP_FE(mhash, NULL)
{NULL, NULL, NULL}
};
@@ -57,193 +47,19 @@
ZEND_GET_MODULE(mhash)
#endif
-/* SALTED S2K uses a fixed salt */
-#define SALT_SIZE 8
-
PHP_MINIT_FUNCTION(mhash)
{
- int i, n, l;
- char *name;
- char buf[128];
-
- n = mhash_count() + 1;
-
- for (i=0; i<n; i++) {
- if ((name = mhash_get_hash_name(i))) {
- l = slprintf(buf, 127, "MHASH_%s", name);
- zend_register_long_constant(buf, l + 1, i,
CONST_PERSISTENT, module_number TSRMLS_CC);
- free(name);
- }
- }
-
return SUCCESS;
}
PHP_MINFO_FUNCTION(mhash)
{
- char version[32];
-
- snprintf(version, sizeof(version), "%d", MHASH_API_VERSION);
-
php_info_print_table_start();
php_info_print_table_row(2, "MHASH support", "Enabled");
- php_info_print_table_row(2, "MHASH API Version", version);
+ php_info_print_table_row(2, "MHASH API Version", "Emulated Support");
php_info_print_table_end();
}
-/* {{{ proto int mhash_count(void)
- Gets the number of available hashes */
-PHP_FUNCTION(mhash_count)
-{
- if (zend_parse_parameters_none() == FAILURE) {
- return;
- }
-
- RETURN_LONG(mhash_count());
-}
-
-/* }}} */
-
-/* {{{ proto int mhash_get_block_size(int hash)
- Gets the block size of hash */
-PHP_FUNCTION(mhash_get_block_size)
-{
- long hash;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &hash) ==
FAILURE) {
- return;
- }
-
- RETURN_LONG(mhash_get_block_size(hash));
-}
-
-/* }}} */
-
-/* {{{ proto string mhash_get_hash_name(int hash)
- Gets the name of hash */
-PHP_FUNCTION(mhash_get_hash_name)
-{
- char *name;
- long hash;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &hash) ==
FAILURE) {
- return;
- }
-
- name = mhash_get_hash_name(hash);
- if (name) {
- RETVAL_STRING(name, 1);
- free(name);
- } else {
- RETVAL_FALSE;
- }
-}
-
-/* }}} */
-
-/* {{{ proto string mhash(int hash, string data [, string key])
- Hash data with hash */
-PHP_FUNCTION(mhash)
-{
- MHASH td;
- int bsize;
- unsigned char *hash_data;
- long hash;
- int data_len, key_len=0;
- char *data, *key=NULL;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ls|s", &hash,
&data, &data_len, &key, &key_len) == FAILURE) {
- return;
- }
-
- bsize = mhash_get_block_size(hash);
-
- if (key_len) {
- if (mhash_get_hash_pblock(hash) == 0) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "mhash
initialization failed");
- RETURN_FALSE;
- }
- td = mhash_hmac_init(hash, key, key_len,
mhash_get_hash_pblock(hash));
- } else {
- td = mhash_init(hash);
- }
-
- if (td == MHASH_FAILED) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "mhash
initialization failed");
- RETURN_FALSE;
- }
-
- mhash(td, data, data_len);
-
- if (key_len) {
- hash_data = (unsigned char *) mhash_hmac_end(td);
- } else {
- hash_data = (unsigned char *) mhash_end(td);
- }
-
- if (hash_data) {
- RETVAL_STRINGL(hash_data, bsize, 1);
- mhash_free(hash_data);
- } else {
- RETURN_FALSE;
- }
-}
-
-/* }}} */
-
-/* {{{ proto string mhash_keygen_s2k(int hash, string input_password, string
salt, int bytes)
- Generates a key using hash functions */
-PHP_FUNCTION(mhash_keygen_s2k)
-{
- KEYGEN keystruct;
- char salt[SALT_SIZE], *ret;
- long hash, bytes;
- char *password, *in_salt;
- int password_len, salt_len;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lssl", &hash,
&password, &password_len, &in_salt, &salt_len, &bytes) == FAILURE) {
- return;
- }
- if (bytes <= 0){
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "the byte parameter
must be greater than 0");
- RETURN_FALSE;
- }
-
- salt_len = MIN(salt_len, SALT_SIZE);
-
- if (salt_len > mhash_get_keygen_salt_size(KEYGEN_S2K_SALTED)) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING,
- "The specified salt [%d] is more bytes than the
required by the algorithm [%d]\n",
- salt_len,
mhash_get_keygen_salt_size(KEYGEN_S2K_SALTED));
- }
-
- memcpy(salt, in_salt, salt_len);
- if (salt_len < SALT_SIZE) {
- memset(salt + salt_len, 0, SALT_SIZE - salt_len);
- }
- salt_len = SALT_SIZE;
-
- keystruct.hash_algorithm[0] = hash;
- keystruct.hash_algorithm[1] = hash;
- keystruct.count = 0;
- keystruct.salt = salt;
- keystruct.salt_size = salt_len;
-
- ret = safe_emalloc(1, bytes, 1);
-
- if (mhash_keygen_ext(KEYGEN_S2K_SALTED, keystruct, ret, bytes,
password, password_len) >= 0) {
- ret[bytes] = '\0';
- RETVAL_STRINGL(ret, bytes, 0);
- } else {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "mhash key
generation failed");
- efree(ret);
- RETURN_FALSE;
- }
-}
-/* }}} */
-
-#endif
-
/*
* Local variables:
* tab-width: 4
http://cvs.php.net/viewvc.cgi/php-src/ext/mhash/php_mhash.h?r1=1.12.2.1.2.1.2.1&r2=1.12.2.1.2.1.2.2&diff_format=u
Index: php-src/ext/mhash/php_mhash.h
diff -u php-src/ext/mhash/php_mhash.h:1.12.2.1.2.1.2.1
php-src/ext/mhash/php_mhash.h:1.12.2.1.2.1.2.2
--- php-src/ext/mhash/php_mhash.h:1.12.2.1.2.1.2.1 Mon Dec 31 07:17:10 2007
+++ php-src/ext/mhash/php_mhash.h Thu Jun 26 22:33:16 2008
@@ -16,13 +16,11 @@
| Nikos Mavroyanopoulos <[EMAIL PROTECTED]> (HMAC, KEYGEN) |
+----------------------------------------------------------------------+
*/
-/* $Id: php_mhash.h,v 1.12.2.1.2.1.2.1 2007/12/31 07:17:10 sebastian Exp $ */
+/* $Id: php_mhash.h,v 1.12.2.1.2.1.2.2 2008/06/26 22:33:16 scottmac Exp $ */
#ifndef PHP_MHASH_H
#define PHP_MHASH_H
-#if HAVE_LIBMHASH
-
#if PHP_API_VERSION < 19990421
#define zend_module_entry zend_module_entry
#include "zend_modules.h"
@@ -34,15 +32,6 @@
PHP_MINIT_FUNCTION(mhash);
PHP_MINFO_FUNCTION(mhash);
-PHP_FUNCTION(mhash_get_block_size);
-PHP_FUNCTION(mhash_get_hash_name);
-PHP_FUNCTION(mhash_count);
-PHP_FUNCTION(mhash_keygen_s2k);
-PHP_FUNCTION(mhash);
-
-#else
-#define mhash_module_ptr NULL
-#endif
#define phpext_mhash_ptr mhash_module_ptr
http://cvs.php.net/viewvc.cgi/php-src/ext/hash/tests/mhash_001.phpt?view=markup&rev=1.1
Index: php-src/ext/hash/tests/mhash_001.phpt
+++ php-src/ext/hash/tests/mhash_001.phpt
http://cvs.php.net/viewvc.cgi/php-src/ext/hash/tests/mhash_002.phpt?view=markup&rev=1.1
Index: php-src/ext/hash/tests/mhash_002.phpt
+++ php-src/ext/hash/tests/mhash_002.phpt
http://cvs.php.net/viewvc.cgi/php-src/ext/hash/tests/mhash_003.phpt?view=markup&rev=1.1
Index: php-src/ext/hash/tests/mhash_003.phpt
+++ php-src/ext/hash/tests/mhash_003.phpt
http://cvs.php.net/viewvc.cgi/php-src/ext/hash/tests/skip_mhash.inc?view=markup&rev=1.1
Index: php-src/ext/hash/tests/skip_mhash.inc
+++ php-src/ext/hash/tests/skip_mhash.inc
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php