summaryrefslogtreecommitdiff
path: root/ext/openssl/openssl.c
diff options
context:
space:
mode:
authorStig Venaas <venaas@php.net>2000-11-17 19:49:13 +0000
committerStig Venaas <venaas@php.net>2000-11-17 19:49:13 +0000
commitb81828864f15f027387190ad092dc203af97f536 (patch)
tree9690652c9e0b1cbd265cd2d2003dab06900aad94 /ext/openssl/openssl.c
parent8b500cdcdfb111546c98fb62e61b8e1879857bdb (diff)
downloadphp-git-b81828864f15f027387190ad092dc203af97f536.tar.gz
Added optional passphrase argument to openssl_get_privatekey()
@- Added OpenSSL extension (Stig Venaas)
Diffstat (limited to 'ext/openssl/openssl.c')
-rw-r--r--ext/openssl/openssl.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c
index ece6c7481e..b22bf5c369 100644
--- a/ext/openssl/openssl.c
+++ b/ext/openssl/openssl.c
@@ -105,20 +105,25 @@ PHP_MSHUTDOWN_FUNCTION(openssl)
return SUCCESS;
}
-/* {{{ proto int openssl_get_privatekey(string key)
+/* {{{ proto int openssl_get_privatekey(string key [, string passphrase])
Get private key */
PHP_FUNCTION(openssl_get_privatekey)
{
- zval **key;
+ zval **key, **passphrase;
BIO *b;
EVP_PKEY *pkey;
+ int argc;
- if (ZEND_NUM_ARGS() != 1 ||
- zend_get_parameters_ex(1, &key) == FAILURE) {
+ argc = ZEND_NUM_ARGS();
+ if (argc < 1 || argc > 2 ||
+ zend_get_parameters_ex(argc, &key, &passphrase) == FAILURE) {
WRONG_PARAM_COUNT;
}
convert_to_string_ex(key);
-
+ if (argc == 2) {
+ convert_to_string_ex(passphrase);
+ }
+
b = BIO_new_mem_buf(Z_STRVAL_PP(key), Z_STRLEN_PP(key));
if (b == NULL) {
RETURN_FALSE;
@@ -126,7 +131,8 @@ PHP_FUNCTION(openssl_get_privatekey)
pkey = (EVP_PKEY *) PEM_ASN1_read_bio((char *(*)())d2i_PrivateKey,
PEM_STRING_EVP_PKEY, b,
- NULL, NULL, NULL);
+ NULL, NULL, argc == 2 ?
+ Z_STRVAL_PP(passphrase) : NULL);
BIO_free(b);
if (pkey == NULL) {