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

Reply via email to