diff options
| author | mk-j <mark@zedwood.com> | 2014-01-22 12:58:44 -0700 |
|---|---|---|
| committer | Daniel Lowrey <rdlowrey@php.net> | 2014-02-14 18:11:46 -0700 |
| commit | 19524fc6feb44050bbb70c19717c59864ae4955d (patch) | |
| tree | 8fb85c1ca77367aa409a8cdea74e986a098f0ec9 | |
| parent | 35101e9ef4669bb076f6687f2fd1aa13f63695d0 (diff) | |
| download | php-git-19524fc6feb44050bbb70c19717c59864ae4955d.tar.gz | |
Fix for bug66501 - "key type not supported in this PHP build"
| -rw-r--r-- | ext/openssl/openssl.c | 9 | ||||
| -rw-r--r-- | ext/openssl/tests/bug66501.phpt | 21 |
2 files changed, 30 insertions, 0 deletions
diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c index 2baf086ca0..a6e4d03157 100644 --- a/ext/openssl/openssl.c +++ b/ext/openssl/openssl.c @@ -3014,6 +3014,15 @@ static int php_openssl_is_private_key(EVP_PKEY* pkey TSRMLS_DC) } break; #endif +#ifdef EVP_PKEY_EC + case EVP_PKEY_EC: + assert(pkey->pkey.ec != NULL); + + if ( NULL == EC_KEY_get0_private_key(pkey->pkey.ec)) { + return 0; + } + break; +#endif default: php_error_docref(NULL TSRMLS_CC, E_WARNING, "key type not supported in this PHP build!"); break; diff --git a/ext/openssl/tests/bug66501.phpt b/ext/openssl/tests/bug66501.phpt new file mode 100644 index 0000000000..5c57f2117f --- /dev/null +++ b/ext/openssl/tests/bug66501.phpt @@ -0,0 +1,21 @@ +--TEST--
+Bug #66501: EC private key support in openssl_sign
+--SKIPIF--
+<?php
+if (!extension_loaded("openssl")) die("skip");
+--FILE--
+<?php
+$pkey = 'ASN1 OID: prime256v1
+-----BEGIN EC PARAMETERS-----
+BggqhkjOPQMBBw==
+-----END EC PARAMETERS-----
+-----BEGIN EC PRIVATE KEY-----
+MHcCAQEEILPkqoeyM7XgwYkuSj3077lrsrfWJK5LqMolv+m2oOjZoAoGCCqGSM49
+AwEHoUQDQgAEPq4hbIWHvB51rdWr8ejrjWo4qVNWVugYFtPg/xLQw0mHkIPZ4DvK
+sqOTOnMoezkbSmVVMuwz9flvnqHGmQvmug==
+-----END EC PRIVATE KEY-----';
+$key = openssl_pkey_get_private($pkey);
+$res = openssl_sign($data ='alpha', $sign, $key, 'ecdsa-with-SHA1');
+var_dump($res);
+--EXPECTF--
+bool(true)
|
