Merge bitcoin-core/secp256k1#1620: Remove unused scratch space from API
8be3839fb2Remove unused scratch space from API (Jonas Nick) Pull request description: We had already merged this in #1305, but it was reverted before a release (#1311) because this change is not backwards compatible but at the time we only wanted to make a patch release in order to fix an actual issue. Due to the musig module, the next release will increment the version number from 0.5.x to 0.6.0, so it would be a good time to remove the scratch space from the API. ACKs for top commit: sipa: utACK8be3839fb2real-or-random: utACK8be3839fb2Tree-SHA512: ecd6bc1d925992f9df8e26820388fc436bbb6bc5f250950edf00406f006ca0df52ab8cd56a1b7541e57af0682ddadf6d34bd638b27557d301a5dff6c327a5ebc
This commit is contained in:
@@ -13,6 +13,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
- Document `doc/musig.md` for further notes on API usage.
|
- Document `doc/musig.md` for further notes on API usage.
|
||||||
- Usage example `examples/musig.c`.
|
- Usage example `examples/musig.c`.
|
||||||
|
|
||||||
|
#### Removed
|
||||||
|
- Removed the `secp256k1_scratch_space` struct and its associated functions `secp256k1_scratch_space_create` `secp256k1_scratch_space_destroy` because the scratch space was unused in the API.
|
||||||
|
|
||||||
## [0.5.1] - 2024-08-01
|
## [0.5.1] - 2024-08-01
|
||||||
|
|
||||||
#### Added
|
#### Added
|
||||||
|
|||||||
@@ -49,19 +49,6 @@ extern "C" {
|
|||||||
*/
|
*/
|
||||||
typedef struct secp256k1_context_struct secp256k1_context;
|
typedef struct secp256k1_context_struct secp256k1_context;
|
||||||
|
|
||||||
/** Opaque data structure that holds rewritable "scratch space"
|
|
||||||
*
|
|
||||||
* The purpose of this structure is to replace dynamic memory allocations,
|
|
||||||
* because we target architectures where this may not be available. It is
|
|
||||||
* essentially a resizable (within specified parameters) block of bytes,
|
|
||||||
* which is initially created either by memory allocation or TODO as a pointer
|
|
||||||
* into some fixed rewritable space.
|
|
||||||
*
|
|
||||||
* Unlike the context object, this cannot safely be shared between threads
|
|
||||||
* without additional synchronization logic.
|
|
||||||
*/
|
|
||||||
typedef struct secp256k1_scratch_space_struct secp256k1_scratch_space;
|
|
||||||
|
|
||||||
/** Opaque data structure that holds a parsed and valid public key.
|
/** Opaque data structure that holds a parsed and valid public key.
|
||||||
*
|
*
|
||||||
* The exact representation of data inside is implementation defined and not
|
* The exact representation of data inside is implementation defined and not
|
||||||
@@ -392,29 +379,6 @@ SECP256K1_API void secp256k1_context_set_error_callback(
|
|||||||
const void *data
|
const void *data
|
||||||
) SECP256K1_ARG_NONNULL(1);
|
) SECP256K1_ARG_NONNULL(1);
|
||||||
|
|
||||||
/** Create a secp256k1 scratch space object.
|
|
||||||
*
|
|
||||||
* Returns: a newly created scratch space.
|
|
||||||
* Args: ctx: pointer to a context object.
|
|
||||||
* In: size: amount of memory to be available as scratch space. Some extra
|
|
||||||
* (<100 bytes) will be allocated for extra accounting.
|
|
||||||
*/
|
|
||||||
SECP256K1_API SECP256K1_WARN_UNUSED_RESULT secp256k1_scratch_space *secp256k1_scratch_space_create(
|
|
||||||
const secp256k1_context *ctx,
|
|
||||||
size_t size
|
|
||||||
) SECP256K1_ARG_NONNULL(1);
|
|
||||||
|
|
||||||
/** Destroy a secp256k1 scratch space.
|
|
||||||
*
|
|
||||||
* The pointer may not be used afterwards.
|
|
||||||
* Args: ctx: pointer to a context object.
|
|
||||||
* scratch: space to destroy
|
|
||||||
*/
|
|
||||||
SECP256K1_API void secp256k1_scratch_space_destroy(
|
|
||||||
const secp256k1_context *ctx,
|
|
||||||
secp256k1_scratch_space *scratch
|
|
||||||
) SECP256K1_ARG_NONNULL(1);
|
|
||||||
|
|
||||||
/** Parse a variable-length public key into the pubkey object.
|
/** Parse a variable-length public key into the pubkey object.
|
||||||
*
|
*
|
||||||
* Returns: 1 if the public key was fully valid.
|
* Returns: 1 if the public key was fully valid.
|
||||||
|
|||||||
@@ -21,6 +21,8 @@ typedef struct secp256k1_scratch_space_struct {
|
|||||||
size_t max_size;
|
size_t max_size;
|
||||||
} secp256k1_scratch;
|
} secp256k1_scratch;
|
||||||
|
|
||||||
|
typedef struct secp256k1_scratch_space_struct secp256k1_scratch_space;
|
||||||
|
|
||||||
static secp256k1_scratch* secp256k1_scratch_create(const secp256k1_callback* error_callback, size_t max_size);
|
static secp256k1_scratch* secp256k1_scratch_create(const secp256k1_callback* error_callback, size_t max_size);
|
||||||
|
|
||||||
static void secp256k1_scratch_destroy(const secp256k1_callback* error_callback, secp256k1_scratch* scratch);
|
static void secp256k1_scratch_destroy(const secp256k1_callback* error_callback, secp256k1_scratch* scratch);
|
||||||
|
|||||||
@@ -220,12 +220,12 @@ void secp256k1_context_set_error_callback(secp256k1_context* ctx, void (*fun)(co
|
|||||||
ctx->error_callback.data = data;
|
ctx->error_callback.data = data;
|
||||||
}
|
}
|
||||||
|
|
||||||
secp256k1_scratch_space* secp256k1_scratch_space_create(const secp256k1_context* ctx, size_t max_size) {
|
static secp256k1_scratch_space* secp256k1_scratch_space_create(const secp256k1_context* ctx, size_t max_size) {
|
||||||
VERIFY_CHECK(ctx != NULL);
|
VERIFY_CHECK(ctx != NULL);
|
||||||
return secp256k1_scratch_create(&ctx->error_callback, max_size);
|
return secp256k1_scratch_create(&ctx->error_callback, max_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
void secp256k1_scratch_space_destroy(const secp256k1_context *ctx, secp256k1_scratch_space* scratch) {
|
static void secp256k1_scratch_space_destroy(const secp256k1_context *ctx, secp256k1_scratch_space* scratch) {
|
||||||
VERIFY_CHECK(ctx != NULL);
|
VERIFY_CHECK(ctx != NULL);
|
||||||
secp256k1_scratch_destroy(&ctx->error_callback, scratch);
|
secp256k1_scratch_destroy(&ctx->error_callback, scratch);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user