ret->extra_data_dup_func = 0;
ret->extra_data_free_func = 0;
ret->extra_data_clear_free_func = 0;
-
+
+ ret->nid = 0;
+
+ ret->references = 1;
+
if (!meth->group_init(ret))
{
OPENSSL_free(ret);
void EC_GROUP_free(EC_GROUP *group)
{
+ int i;
+
+ i = CRYPTO_add(&group->references, -1, CRYPTO_LOCK_EC);
+ if (i > 0)
+ return;
+
if (group->meth->group_finish != 0)
group->meth->group_finish(group);
void EC_GROUP_clear_free(EC_GROUP *group)
{
+ int i;
+
+ i = CRYPTO_add(&group->references, -1, CRYPTO_LOCK_EC);
+ if (i > 0)
+ return;
+
if (group->meth->group_clear_finish != 0)
group->meth->group_clear_finish(group);
else if (group->meth != NULL && group->meth->group_finish != 0)
group->extra_data_clear_free_func = 0;
}
+void EC_GROUP_set_nid(EC_GROUP *group, int nid)
+{
+ group->nid = nid;
+}
+
+int EC_GROUP_get_nid(const EC_GROUP *group)
+{
+ return group->nid;
+}
+
/* functions for EC_POINT objects */