72#define UFSECP_ERR_GPU_UNAVAILABLE 100
73#define UFSECP_ERR_GPU_DEVICE 101
74#define UFSECP_ERR_GPU_LAUNCH 102
75#define UFSECP_ERR_GPU_MEMORY 103
76#define UFSECP_ERR_GPU_UNSUPPORTED 104
77#define UFSECP_ERR_GPU_BACKEND 105
78#define UFSECP_ERR_GPU_QUEUE 106
84#define UFSECP_GPU_BACKEND_NONE 0
85#define UFSECP_GPU_BACKEND_CUDA 1
86#define UFSECP_GPU_BACKEND_OPENCL 2
87#define UFSECP_GPU_BACKEND_METAL 3
126 uint32_t device_index,
141 uint32_t device_index);
170 const uint8_t* scalars32,
172 uint8_t* out_pubkeys33);
188 const uint8_t* msg_hashes32,
189 const uint8_t* pubkeys33,
190 const uint8_t* sigs64,
192 uint8_t* out_results);
207 const uint8_t* msg_hashes32,
208 const uint8_t* pubkeys_x32,
209 const uint8_t* sigs64,
211 uint8_t* out_results);
226 const uint8_t* privkeys32,
227 const uint8_t* peer_pubkeys33,
229 uint8_t* out_secrets32);
242 const uint8_t* pubkeys33,
244 uint8_t* out_hash160);
259 const uint8_t* scalars32,
260 const uint8_t* points33,
262 uint8_t* out_result33);
289 const uint8_t* z_i32,
290 const uint8_t* D_i33,
291 const uint8_t* E_i33,
292 const uint8_t* Y_i33,
293 const uint8_t* rho_i32,
294 const uint8_t* lambda_ie32,
295 const uint8_t* negate_R,
296 const uint8_t* negate_key,
298 uint8_t* out_results);
316 const uint8_t* msg_hashes32,
317 const uint8_t* sigs64,
320 uint8_t* out_pubkeys33,
349 const uint8_t* proofs64,
350 const uint8_t* pubkeys65,
351 const uint8_t* messages32,
353 uint8_t* out_results);
375 const uint8_t* proofs64,
376 const uint8_t* G_pts65,
377 const uint8_t* H_pts65,
378 const uint8_t* P_pts65,
379 const uint8_t* Q_pts65,
381 uint8_t* out_results);
401 const uint8_t* proofs324,
402 const uint8_t* commitments65,
403 const uint8_t* H_generator65,
405 uint8_t* out_results);
430 const uint8_t* keys32,
431 const uint8_t* nonces12,
432 const uint8_t* plaintexts,
433 const uint32_t* sizes,
434 uint32_t max_payload,
456 const uint8_t* keys32,
457 const uint8_t* nonces12,
458 const uint8_t* wire_in,
459 const uint32_t* sizes,
460 uint32_t max_payload,
462 uint8_t* plaintext_out,
uint32_t max_threads_per_block
uint64_t global_mem_bytes
UFSECP_API ufsecp_error_t ufsecp_gpu_last_error(const ufsecp_gpu_ctx *ctx)
UFSECP_API ufsecp_error_t ufsecp_gpu_ecdh_batch(ufsecp_gpu_ctx *ctx, const uint8_t *privkeys32, const uint8_t *peer_pubkeys33, size_t count, uint8_t *out_secrets32)
UFSECP_API int ufsecp_gpu_is_available(uint32_t backend_id)
UFSECP_API ufsecp_error_t ufsecp_gpu_zk_knowledge_verify_batch(ufsecp_gpu_ctx *ctx, const uint8_t *proofs64, const uint8_t *pubkeys65, const uint8_t *messages32, size_t count, uint8_t *out_results)
UFSECP_API ufsecp_error_t ufsecp_gpu_bip324_aead_encrypt_batch(ufsecp_gpu_ctx *ctx, const uint8_t *keys32, const uint8_t *nonces12, const uint8_t *plaintexts, const uint32_t *sizes, uint32_t max_payload, size_t count, uint8_t *wire_out)
UFSECP_API ufsecp_error_t ufsecp_gpu_frost_verify_partial_batch(ufsecp_gpu_ctx *ctx, const uint8_t *z_i32, const uint8_t *D_i33, const uint8_t *E_i33, const uint8_t *Y_i33, const uint8_t *rho_i32, const uint8_t *lambda_ie32, const uint8_t *negate_R, const uint8_t *negate_key, size_t count, uint8_t *out_results)
UFSECP_API ufsecp_error_t ufsecp_gpu_bip324_aead_decrypt_batch(ufsecp_gpu_ctx *ctx, const uint8_t *keys32, const uint8_t *nonces12, const uint8_t *wire_in, const uint32_t *sizes, uint32_t max_payload, size_t count, uint8_t *plaintext_out, uint8_t *out_valid)
UFSECP_API const char * ufsecp_gpu_last_error_msg(const ufsecp_gpu_ctx *ctx)
UFSECP_API ufsecp_error_t ufsecp_gpu_ecdsa_verify_batch(ufsecp_gpu_ctx *ctx, const uint8_t *msg_hashes32, const uint8_t *pubkeys33, const uint8_t *sigs64, size_t count, uint8_t *out_results)
UFSECP_API ufsecp_error_t ufsecp_gpu_generator_mul_batch(ufsecp_gpu_ctx *ctx, const uint8_t *scalars32, size_t count, uint8_t *out_pubkeys33)
UFSECP_API uint32_t ufsecp_gpu_backend_count(uint32_t *backend_ids, uint32_t max_ids)
UFSECP_API ufsecp_error_t ufsecp_gpu_ctx_create(ufsecp_gpu_ctx **ctx_out, uint32_t backend_id, uint32_t device_index)
UFSECP_API ufsecp_error_t ufsecp_gpu_ecrecover_batch(ufsecp_gpu_ctx *ctx, const uint8_t *msg_hashes32, const uint8_t *sigs64, const int *recids, size_t count, uint8_t *out_pubkeys33, uint8_t *out_valid)
UFSECP_API ufsecp_error_t ufsecp_gpu_zk_dleq_verify_batch(ufsecp_gpu_ctx *ctx, const uint8_t *proofs64, const uint8_t *G_pts65, const uint8_t *H_pts65, const uint8_t *P_pts65, const uint8_t *Q_pts65, size_t count, uint8_t *out_results)
UFSECP_API const char * ufsecp_gpu_backend_name(uint32_t backend_id)
UFSECP_API ufsecp_error_t ufsecp_gpu_schnorr_verify_batch(ufsecp_gpu_ctx *ctx, const uint8_t *msg_hashes32, const uint8_t *pubkeys_x32, const uint8_t *sigs64, size_t count, uint8_t *out_results)
UFSECP_API ufsecp_error_t ufsecp_gpu_hash160_pubkey_batch(ufsecp_gpu_ctx *ctx, const uint8_t *pubkeys33, size_t count, uint8_t *out_hash160)
UFSECP_API uint32_t ufsecp_gpu_device_count(uint32_t backend_id)
UFSECP_API const char * ufsecp_gpu_error_str(ufsecp_error_t err)
UFSECP_API ufsecp_error_t ufsecp_gpu_msm(ufsecp_gpu_ctx *ctx, const uint8_t *scalars32, const uint8_t *points33, size_t n, uint8_t *out_result33)
UFSECP_API ufsecp_error_t ufsecp_gpu_bulletproof_verify_batch(ufsecp_gpu_ctx *ctx, const uint8_t *proofs324, const uint8_t *commitments65, const uint8_t *H_generator65, size_t count, uint8_t *out_results)
UFSECP_API void ufsecp_gpu_ctx_destroy(ufsecp_gpu_ctx *ctx)
UFSECP_API ufsecp_error_t ufsecp_gpu_device_info(uint32_t backend_id, uint32_t device_index, ufsecp_gpu_device_info_t *info_out)