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
 | ||
|  | 
 | ||
|  | /**@}*/ |