forked from dple/ecdsa
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ec_dup.c
41 lines (32 loc) · 921 Bytes
/
ec_dup.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/*
* ec_dup.c
*
* Created on: Nov 20, 2015
* Author: tslld
*/
#include "ecdsa.h"
#include "ec.h"
#include "ec_point.h"
/** Creates a new ec_point object and copies the content from src to it
* \param src pointer the an ec_group structure
* \return pointer the an ec_group structure
*/
ec_group ec_group_dup(ec_group src) {
if (src == NULL)
return NULL;
ec_group ret;
ret = malloc(sizeof(struct ec_group_st));
assert(ret != NULL);
int length = strlen(src->curve_name);
ret->curve_name = (char*)malloc(sizeof(char) * (length + 1));
assert(ret->curve_name != NULL);
ret->curve_name[length] = '\0';
strcpy(ret->curve_name, src->curve_name);
mpz_init_set(ret->field, src->field);
mpz_init_set(ret->A, src->A);
mpz_init_set(ret->B, src->B);
mpz_init_set(ret->order, src->order);
mpz_init_set(ret->cofactor, src->cofactor);
ret->generator = ec_point_dup(src->generator);
return ret;
}