#ifdef HAVE_EVP_PKEY_EC
case EVP_PKEY_EC:
ktype = OPENSSL_KEYTYPE_EC;
- if (pkey->pkey.ec == NULL) {
- break;
- }
-
- zval ec;
- const EC_GROUP *ec_group;
- int nid;
- char *crv_sn;
- ASN1_OBJECT *obj;
- // openssl recommends a buffer length of 80
- char oir_buf[80];
+ if (pkey->pkey.ec != NULL) {
- zval *ec;
++ zval ec;
+ const EC_GROUP *ec_group;
+ int nid;
+ char *crv_sn;
+ ASN1_OBJECT *obj;
+ // openssl recommends a buffer length of 80
+ char oir_buf[80];
- ec_group = EC_KEY_get0_group(EVP_PKEY_get1_EC_KEY(pkey));
+ ec_group = EC_KEY_get0_group(EVP_PKEY_get1_EC_KEY(pkey));
- // Curve nid (numerical identifier) used for ASN1 mapping
- nid = EC_GROUP_get_curve_name(ec_group);
- if (nid == NID_undef) {
- break;
- }
+ // Curve nid (numerical identifier) used for ASN1 mapping
+ nid = EC_GROUP_get_curve_name(ec_group);
+ if (nid == NID_undef) {
+ break;
+ }
- ALLOC_INIT_ZVAL(ec);
- array_init(ec);
++ array_init(&ec);
- array_init(&ec);
+ // Short object name
+ crv_sn = (char*) OBJ_nid2sn(nid);
+ if (crv_sn != NULL) {
- add_assoc_string(ec, "curve_name", crv_sn, 1);
++ add_assoc_string(&ec, "curve_name", crv_sn);
+ }
- // Short object name
- crv_sn = (char*) OBJ_nid2sn(nid);
- if (crv_sn != NULL) {
- add_assoc_string(&ec, "curve_name", crv_sn);
- }
+ obj = OBJ_nid2obj(nid);
+ if (obj != NULL) {
+ int oir_len = OBJ_obj2txt(oir_buf, sizeof(oir_buf), obj, 1);
- add_assoc_stringl(ec, "curve_oid", (char*)oir_buf, oir_len, 1);
++ add_assoc_stringl(&ec, "curve_oid", (char*)oir_buf, oir_len);
+ ASN1_OBJECT_free(obj);
+ }
- obj = OBJ_nid2obj(nid);
- if (obj != NULL) {
- int oir_len = OBJ_obj2txt(oir_buf, sizeof(oir_buf), obj, 1);
- add_assoc_stringl(&ec, "curve_oid", (char*)oir_buf, oir_len);
- ASN1_OBJECT_free(obj);
- add_assoc_zval(return_value, "ec", ec);
++ add_assoc_zval(return_value, "ec", &ec);
}
-
- add_assoc_zval(return_value, "ec", &ec);
break;
#endif
default: