int ec_GFp_nist_group_copy(EC_GROUP * dest, const EC_GROUP * src) { dest->field_mod_func = src->field_mod_func; return ec_GFp_simple_group_copy(dest, src); }
int ec_GFp_mont_group_copy(EC_GROUP * dest, const EC_GROUP * src) { BN_MONT_CTX_free(dest->field_data1); dest->field_data1 = NULL; BN_clear_free(dest->field_data2); dest->field_data2 = NULL; if (!ec_GFp_simple_group_copy(dest, src)) return 0; if (src->field_data1 != NULL) { dest->field_data1 = BN_MONT_CTX_new(); if (dest->field_data1 == NULL) return 0; if (!BN_MONT_CTX_copy(dest->field_data1, src->field_data1)) goto err; } if (src->field_data2 != NULL) { dest->field_data2 = BN_dup(src->field_data2); if (dest->field_data2 == NULL) goto err; } return 1; err: if (dest->field_data1 != NULL) { BN_MONT_CTX_free(dest->field_data1); dest->field_data1 = NULL; } return 0; }
int ec_GFp_mont_group_copy(EC_GROUP *dest, const EC_GROUP *src) { BN_MONT_CTX_free(dest->mont); dest->mont = NULL; BN_clear_free(dest->one); dest->one = NULL; if (!ec_GFp_simple_group_copy(dest, src)) { return 0; } if (src->mont != NULL) { dest->mont = BN_MONT_CTX_new(); if (dest->mont == NULL) { return 0; } if (!BN_MONT_CTX_copy(dest->mont, src->mont)) { goto err; } } if (src->one != NULL) { dest->one = BN_dup(src->one); if (dest->one == NULL) { goto err; } } return 1; err: BN_MONT_CTX_free(dest->mont); dest->mont = NULL; return 0; }