]> granicus.if.org Git - php/commitdiff
Fix for bug66501 - "key type not supported in this PHP build"
authormk-j <mark@zedwood.com>
Wed, 22 Jan 2014 19:58:44 +0000 (12:58 -0700)
committerDaniel Lowrey <rdlowrey@php.net>
Sat, 15 Feb 2014 01:11:46 +0000 (18:11 -0700)
ext/openssl/openssl.c
ext/openssl/tests/bug66501.phpt [new file with mode: 0644]

index 2baf086ca02a8b3ac219578968b8dadf8c157a4f..a6e4d03157dbbdf10ddc04dd7e9705b2879e93ae 100644 (file)
@@ -3013,6 +3013,15 @@ static int php_openssl_is_private_key(EVP_PKEY* pkey TSRMLS_DC)
                                return 0;
                        }
                        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!");
diff --git a/ext/openssl/tests/bug66501.phpt b/ext/openssl/tests/bug66501.phpt
new file mode 100644 (file)
index 0000000..5c57f21
--- /dev/null
@@ -0,0 +1,21 @@
+--TEST--\r
+Bug #66501: EC private key support in openssl_sign\r
+--SKIPIF--\r
+<?php \r
+if (!extension_loaded("openssl")) die("skip");\r
+--FILE--\r
+<?php\r
+$pkey = 'ASN1 OID: prime256v1\r
+-----BEGIN EC PARAMETERS-----\r
+BggqhkjOPQMBBw==\r
+-----END EC PARAMETERS-----\r
+-----BEGIN EC PRIVATE KEY-----\r
+MHcCAQEEILPkqoeyM7XgwYkuSj3077lrsrfWJK5LqMolv+m2oOjZoAoGCCqGSM49\r
+AwEHoUQDQgAEPq4hbIWHvB51rdWr8ejrjWo4qVNWVugYFtPg/xLQw0mHkIPZ4DvK\r
+sqOTOnMoezkbSmVVMuwz9flvnqHGmQvmug==\r
+-----END EC PRIVATE KEY-----';\r
+$key = openssl_pkey_get_private($pkey);\r
+$res = openssl_sign($data ='alpha', $sign, $key, 'ecdsa-with-SHA1');\r
+var_dump($res);\r
+--EXPECTF--\r
+bool(true)\r