refactor: Add helper function secp256k1_context_is_proper()
This commit is contained in:
parent
5c789dcd73
commit
cf66f2357c
@ -75,6 +75,15 @@ static const secp256k1_context secp256k1_context_static_ = {
|
|||||||
const secp256k1_context *secp256k1_context_static = &secp256k1_context_static_;
|
const secp256k1_context *secp256k1_context_static = &secp256k1_context_static_;
|
||||||
const secp256k1_context *secp256k1_context_no_precomp = &secp256k1_context_static_;
|
const secp256k1_context *secp256k1_context_no_precomp = &secp256k1_context_static_;
|
||||||
|
|
||||||
|
/* Helper function that determines if a context is proper, i.e., is not the static context or a copy thereof.
|
||||||
|
*
|
||||||
|
* This is intended for "context" functions such as secp256k1_context_clone. Function which need specific
|
||||||
|
* features of a context should still check for these features directly. For example, a function that needs
|
||||||
|
* ecmult_gen should directly check for the existence of the ecmult_gen context. */
|
||||||
|
static int secp256k1_context_is_proper(const secp256k1_context* ctx) {
|
||||||
|
return secp256k1_ecmult_gen_context_is_built(&ctx->ecmult_gen_ctx);
|
||||||
|
}
|
||||||
|
|
||||||
void secp256k1_selftest(void) {
|
void secp256k1_selftest(void) {
|
||||||
if (!secp256k1_selftest_passes()) {
|
if (!secp256k1_selftest_passes()) {
|
||||||
secp256k1_callback_call(&default_error_callback, "self test failed");
|
secp256k1_callback_call(&default_error_callback, "self test failed");
|
||||||
@ -171,6 +180,9 @@ void secp256k1_context_destroy(secp256k1_context* ctx) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void secp256k1_context_set_illegal_callback(secp256k1_context* ctx, void (*fun)(const char* message, void* data), const void* data) {
|
void secp256k1_context_set_illegal_callback(secp256k1_context* ctx, void (*fun)(const char* message, void* data), const void* data) {
|
||||||
|
/* We compare pointers instead of checking secp256k1_context_is_proper() here
|
||||||
|
because setting callbacks is allowed on *copies* of the static context:
|
||||||
|
it's harmless and makes testing easier. */
|
||||||
ARG_CHECK_NO_RETURN(ctx != secp256k1_context_static);
|
ARG_CHECK_NO_RETURN(ctx != secp256k1_context_static);
|
||||||
if (fun == NULL) {
|
if (fun == NULL) {
|
||||||
fun = secp256k1_default_illegal_callback_fn;
|
fun = secp256k1_default_illegal_callback_fn;
|
||||||
@ -180,6 +192,9 @@ void secp256k1_context_set_illegal_callback(secp256k1_context* ctx, void (*fun)(
|
|||||||
}
|
}
|
||||||
|
|
||||||
void secp256k1_context_set_error_callback(secp256k1_context* ctx, void (*fun)(const char* message, void* data), const void* data) {
|
void secp256k1_context_set_error_callback(secp256k1_context* ctx, void (*fun)(const char* message, void* data), const void* data) {
|
||||||
|
/* We compare pointers instead of checking secp256k1_context_is_proper() here
|
||||||
|
because setting callbacks is allowed on *copies* of the static context:
|
||||||
|
it's harmless and makes testing easier. */
|
||||||
ARG_CHECK_NO_RETURN(ctx != secp256k1_context_static);
|
ARG_CHECK_NO_RETURN(ctx != secp256k1_context_static);
|
||||||
if (fun == NULL) {
|
if (fun == NULL) {
|
||||||
fun = secp256k1_default_error_callback_fn;
|
fun = secp256k1_default_error_callback_fn;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user