Add secp256k1_pubkey_sort
Co-authored-by: Tim Ruffing <crypto@timruffing.de> Co-authored-by: Russell O'Connor <roconnor@blockstream.io>
This commit is contained in:
@@ -36,6 +36,7 @@
|
||||
#include "int128_impl.h"
|
||||
#include "scratch_impl.h"
|
||||
#include "selftest.h"
|
||||
#include "hsort_impl.h"
|
||||
|
||||
#ifdef SECP256K1_NO_BUILD
|
||||
# error "secp256k1.h processed without SECP256K1_BUILD defined while building secp256k1.c"
|
||||
@@ -325,6 +326,34 @@ int secp256k1_ec_pubkey_cmp(const secp256k1_context* ctx, const secp256k1_pubkey
|
||||
return secp256k1_memcmp_var(out[0], out[1], sizeof(out[0]));
|
||||
}
|
||||
|
||||
static int secp256k1_ec_pubkey_sort_cmp(const void* pk1, const void* pk2, void *ctx) {
|
||||
return secp256k1_ec_pubkey_cmp((secp256k1_context *)ctx,
|
||||
*(secp256k1_pubkey **)pk1,
|
||||
*(secp256k1_pubkey **)pk2);
|
||||
}
|
||||
|
||||
int secp256k1_ec_pubkey_sort(const secp256k1_context* ctx, const secp256k1_pubkey **pubkeys, size_t n_pubkeys) {
|
||||
VERIFY_CHECK(ctx != NULL);
|
||||
ARG_CHECK(pubkeys != NULL);
|
||||
|
||||
/* Suppress wrong warning (fixed in MSVC 19.33) */
|
||||
#if defined(_MSC_VER) && (_MSC_VER < 1933)
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable: 4090)
|
||||
#endif
|
||||
|
||||
/* Casting away const is fine because neither secp256k1_hsort nor
|
||||
* secp256k1_ec_pubkey_sort_cmp modify the data pointed to by the cmp_data
|
||||
* argument. */
|
||||
secp256k1_hsort(pubkeys, n_pubkeys, sizeof(*pubkeys), secp256k1_ec_pubkey_sort_cmp, (void *)ctx);
|
||||
|
||||
#if defined(_MSC_VER) && (_MSC_VER < 1933)
|
||||
#pragma warning(pop)
|
||||
#endif
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void secp256k1_ecdsa_signature_load(const secp256k1_context* ctx, secp256k1_scalar* r, secp256k1_scalar* s, const secp256k1_ecdsa_signature* sig) {
|
||||
(void)ctx;
|
||||
if (sizeof(secp256k1_scalar) == 32) {
|
||||
|
||||
Reference in New Issue
Block a user