Hi,
I've created a patch for the modification I've made to the OpenSSL
extension.
The patch modifies the openssl_sign() function to accept a fourth
parameter, which specifies the hashing algorithm to use.
I've added 4 new constants to represent the hashing algorithms:
OPENSSL_ALGO_SHA1
OPENSSL_ALGO_MD5
OPENSSL_ALGO_MD4
OPENSSL_ALGO_MD2
Thanks,
Scott
[EMAIL PROTECTED]
46a47,50
> #define OPENSSL_ALGO_SHA1 1
> #define OPENSSL_ALGO_MD5 2
> #define OPENSSL_ALGO_MD4 3
> #define OPENSSL_ALGO_MD2 4
555a560,565
> /* signature algotithm constants */
> REGISTER_LONG_CONSTANT("OPENSSL_ALGO_SHA1", OPENSSL_ALGO_SHA1,
> CONST_CS|CONST_PERSISTENT);
> REGISTER_LONG_CONSTANT("OPENSSL_ALGO_MD5", OPENSSL_ALGO_MD5,
> CONST_CS|CONST_PERSISTENT);
> REGISTER_LONG_CONSTANT("OPENSSL_ALGO_MD4", OPENSSL_ALGO_MD4,
> CONST_CS|CONST_PERSISTENT);
> REGISTER_LONG_CONSTANT("OPENSSL_ALGO_MD2", OPENSSL_ALGO_MD2,
> CONST_CS|CONST_PERSISTENT);
>
2715a2726,2727
> long signature_algo = OPENSSL_ALGO_SHA1;
> EVP_MD *mdtype;
2717c2729
< if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "szz", &data, &data_len,
&signature, &key) == FAILURE)
---
> if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "szz|l", &data,
> &data_len, &signature, &key, &signature_algo) == FAILURE)
2729c2741,2757
< EVP_SignInit(&md_ctx, EVP_sha1());
---
> switch(signature_algo)
> {
> case OPENSSL_ALGO_SHA1:
> mdtype = EVP_sha1();
> break;
> case OPENSSL_ALGO_MD5:
> mdtype = EVP_md5();
> break;
> case OPENSSL_ALGO_MD4:
> mdtype = EVP_md4();
> break;
> case OPENSSL_ALGO_MD2:
> mdtype = EVP_md2();
> break;
> }
>
> EVP_SignInit(&md_ctx, mdtype);
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php