com php-src: Fix for bug66501 - "key type not supported in this PHP build": ext/openssl/openssl.c ext/openssl/tests/bug66501.phpt
| From: | rdlowrey@php.net | Date: | Sat, 15 Feb 2014 01:11:46 +0000 |
| Subject: | com php-src: Fix for bug66501 - "key type not supported in this PHP build": ext/openssl/openssl.c ext/openssl/tests/bug66501.phpt | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-75985@lists.php.net to get a copy of this message | ||
Commit: 19524fc6feb44050bbb70c19717c59864ae4955d
Author: mk-j <mark@zedwood.com> Wed, 22 Jan 2014 12:58:44 -0700
Committer: Daniel Lowrey <rdlowrey@php.net> Fri, 14 Feb 2014 18:11:46 -0700
Parents: 35101e9ef4669bb076f6687f2fd1aa13f63695d0
Branches: master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=19524fc6feb44050bbb70c19717c59864ae4955d
Log:
Fix for bug66501 - "key type not supported in this PHP build"
Bugs:
https://bugs.php.net/66501
Changed paths:
M ext/openssl/openssl.c
A ext/openssl/tests/bug66501.phpt
Diff:
diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c
index 2baf086..a6e4d03 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 0000000..5c57f21
--- /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)