diff options
author | Nils Larsch <nils@openssl.org> | 2005-05-16 10:11:04 +0000 |
---|---|---|
committer | Nils Larsch <nils@openssl.org> | 2005-05-16 10:11:04 +0000 |
commit | 9dd84053419aa220b5e66a5f9fcf809dbd6d9369 (patch) | |
tree | 7818c598a88a5b457333fd9f5951836fe96834b6 /crypto/ec/ec_lib.c | |
parent | 46a643763de6d8e39ecf6f76fa79b4d04885aa59 (diff) | |
download | openssl-9dd84053419aa220b5e66a5f9fcf809dbd6d9369.tar.gz |
ecc api cleanup; summary:
- hide the EC_KEY structure definition in ec_lcl.c + add
some functions to use/access the EC_KEY fields
- change the way how method specific data (ecdsa/ecdh) is
attached to a EC_KEY
- add ECDSA_sign_ex and ECDSA_do_sign_ex functions with
additional parameters for pre-computed values
- rebuild libeay.num from 0.9.7
Diffstat (limited to 'crypto/ec/ec_lib.c')
-rw-r--r-- | crypto/ec/ec_lib.c | 57 |
1 files changed, 27 insertions, 30 deletions
diff --git a/crypto/ec/ec_lib.c b/crypto/ec/ec_lib.c index ae9ee08660..6d3a562690 100644 --- a/crypto/ec/ec_lib.c +++ b/crypto/ec/ec_lib.c @@ -127,7 +127,7 @@ void EC_GROUP_free(EC_GROUP *group) if (group->meth->group_finish != 0) group->meth->group_finish(group); - EC_GROUP_free_all_extra_data(group); + EC_EX_DATA_free_all_data(&group->extra_data); if (group->generator != NULL) EC_POINT_free(group->generator); @@ -150,7 +150,7 @@ void EC_GROUP_clear_free(EC_GROUP *group) else if (group->meth != NULL && group->meth->group_finish != 0) group->meth->group_finish(group); - EC_GROUP_clear_free_all_extra_data(group); + EC_EX_DATA_clear_free_all_data(&group->extra_data); if (group->generator != NULL) EC_POINT_clear_free(group->generator); @@ -185,7 +185,7 @@ int EC_GROUP_copy(EC_GROUP *dest, const EC_GROUP *src) if (dest == src) return 1; - EC_GROUP_free_all_extra_data(dest); + EC_EX_DATA_free_all_data(&dest->extra_data); for (d = src->extra_data; d != NULL; d = d->next) { @@ -193,7 +193,7 @@ int EC_GROUP_copy(EC_GROUP *dest, const EC_GROUP *src) if (t == NULL) return 0; - if (!EC_GROUP_set_extra_data(dest, t, d->dup_func, d->free_func, d->clear_free_func)) + if (!EC_EX_DATA_set_data(&dest->extra_data, t, d->dup_func, d->free_func, d->clear_free_func)) return 0; } @@ -310,7 +310,7 @@ int EC_GROUP_set_generator(EC_GROUP *group, const EC_POINT *generator, const BIG } -EC_POINT *EC_GROUP_get0_generator(const EC_GROUP *group) +const EC_POINT *EC_GROUP_get0_generator(const EC_GROUP *group) { return group->generator; } @@ -546,15 +546,15 @@ int EC_GROUP_cmp(const EC_GROUP *a, const EC_GROUP *b, BN_CTX *ctx) /* this has 'package' visibility */ -int EC_GROUP_set_extra_data(EC_GROUP *group, void *data, +int EC_EX_DATA_set_data(EC_EXTRA_DATA **ex_data, void *data, void *(*dup_func)(void *), void (*free_func)(void *), void (*clear_free_func)(void *)) { EC_EXTRA_DATA *d; - if (group == NULL) + if (ex_data == NULL) return 0; - for (d = group->extra_data; d != NULL; d = d->next) + for (d = *ex_data; d != NULL; d = d->next) { if (d->dup_func == dup_func && d->free_func == free_func && d->clear_free_func == clear_free_func) { @@ -576,22 +576,19 @@ int EC_GROUP_set_extra_data(EC_GROUP *group, void *data, d->free_func = free_func; d->clear_free_func = clear_free_func; - d->next = group->extra_data; - group->extra_data = d; + d->next = *ex_data; + *ex_data = d; return 1; } /* this has 'package' visibility */ -void *EC_GROUP_get_extra_data(const EC_GROUP *group, +void *EC_EX_DATA_get_data(const EC_EXTRA_DATA *ex_data, void *(*dup_func)(void *), void (*free_func)(void *), void (*clear_free_func)(void *)) { - EC_EXTRA_DATA *d; - - if (group == NULL) - return NULL; + const EC_EXTRA_DATA *d; - for (d = group->extra_data; d != NULL; d = d->next) + for (d = ex_data; d != NULL; d = d->next) { if (d->dup_func == dup_func && d->free_func == free_func && d->clear_free_func == clear_free_func) return d->data; @@ -601,15 +598,15 @@ void *EC_GROUP_get_extra_data(const EC_GROUP *group, } /* this has 'package' visibility */ -void EC_GROUP_free_extra_data(EC_GROUP *group, +void EC_EX_DATA_free_data(EC_EXTRA_DATA **ex_data, void *(*dup_func)(void *), void (*free_func)(void *), void (*clear_free_func)(void *)) { EC_EXTRA_DATA **p; - if (group == NULL) + if (ex_data == NULL) return; - for (p = &group->extra_data; *p != NULL; p = &((*p)->next)) + for (p = ex_data; *p != NULL; p = &((*p)->next)) { if ((*p)->dup_func == dup_func && (*p)->free_func == free_func && (*p)->clear_free_func == clear_free_func) { @@ -625,15 +622,15 @@ void EC_GROUP_free_extra_data(EC_GROUP *group, } /* this has 'package' visibility */ -void EC_GROUP_clear_free_extra_data(EC_GROUP *group, +void EC_EX_DATA_clear_free_extra_data(EC_EXTRA_DATA **ex_data, void *(*dup_func)(void *), void (*free_func)(void *), void (*clear_free_func)(void *)) { EC_EXTRA_DATA **p; - if (group == NULL) + if (ex_data == NULL) return; - for (p = &group->extra_data; *p != NULL; p = &((*p)->next)) + for (p = ex_data; *p != NULL; p = &((*p)->next)) { if ((*p)->dup_func == dup_func && (*p)->free_func == free_func && (*p)->clear_free_func == clear_free_func) { @@ -649,14 +646,14 @@ void EC_GROUP_clear_free_extra_data(EC_GROUP *group, } /* this has 'package' visibility */ -void EC_GROUP_free_all_extra_data(EC_GROUP *group) +void EC_EX_DATA_free_all_data(EC_EXTRA_DATA **ex_data) { EC_EXTRA_DATA *d; - if (group == NULL) + if (ex_data == NULL) return; - d = group->extra_data; + d = *ex_data; while (d) { EC_EXTRA_DATA *next = d->next; @@ -666,18 +663,18 @@ void EC_GROUP_free_all_extra_data(EC_GROUP *group) d = next; } - group->extra_data = NULL; + *ex_data = NULL; } /* this has 'package' visibility */ -void EC_GROUP_clear_free_all_extra_data(EC_GROUP *group) +void EC_EX_DATA_clear_free_all_data(EC_EXTRA_DATA **ex_data) { EC_EXTRA_DATA *d; - if (group == NULL) + if (ex_data == NULL) return; - d = group->extra_data; + d = *ex_data; while (d) { EC_EXTRA_DATA *next = d->next; @@ -687,7 +684,7 @@ void EC_GROUP_clear_free_all_extra_data(EC_GROUP *group) d = next; } - group->extra_data = NULL; + *ex_data = NULL; } |