47 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #pragma once
 | |
| /**
 | |
|  * @brief Solana secp256k1 system call
 | |
|  */
 | |
| 
 | |
| #include <sol/types.h>
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| 
 | |
| /** Length of a secp256k1 recover input hash */
 | |
| #define SECP256K1_RECOVER_HASH_LENGTH 32
 | |
| /** Length of a secp256k1 input signature */
 | |
| #define SECP256K1_RECOVER_SIGNATURE_LENGTH 64
 | |
| /** Length of a secp256k1 recover result */
 | |
| #define SECP256K1_RECOVER_RESULT_LENGTH 64
 | |
| 
 | |
| /** The hash provided to a sol_secp256k1_recover is invalid */
 | |
| #define SECP256K1_RECOVER_ERROR_INVALID_HASH 1
 | |
| /** The recovery_id provided to a sol_secp256k1_recover is invalid */
 | |
| #define SECP256K1_RECOVER_ERROR_INVALID_RECOVERY_ID 2
 | |
| /** The signature provided to a sol_secp256k1_recover is invalid */
 | |
| #define SECP256K1_RECOVER_ERROR_INVALID_SIGNATURE 3
 | |
| 
 | |
| /**
 | |
|  * Recover public key from a signed message.
 | |
|  *
 | |
|  * @param hash Hashed message
 | |
|  * @param recovery_id Tag used for public key recovery from signatures. Can be 0 or 1
 | |
|  * @param signature An ECDSA signature
 | |
|  * @param result 64 byte array to hold the result. A recovered public key
 | |
|  * @return 0 if executed successfully
 | |
|  */
 | |
| uint64_t sol_secp256k1_recover(
 | |
|     const uint8_t *hash,
 | |
|     uint64_t recovery_id,
 | |
|     const uint8_t *signature,
 | |
|     uint8_t *result
 | |
| );
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif
 | |
| 
 | |
| /**@}*/
 |