Crypto
Module: Core API
Defines API for calculating and checking hashes which require activating crypto protocol feature. More...
Functions
Name | |
---|---|
int32_t | alt_bn128_add(const char op1, uint32_t op1_len, const char op2, uint32_t op2_len, char * result, uint32_t result_len) |
int32_t | alt_bn128_mul(const char g1, uint32_t g1_len, const char scalar, uint32_t scalar_len, char * result, uint32_t result_len) |
int32_t | alt_bn128_pair(const char * pairs, uint32_t pairs_len) |
int32_t | mod_exp(const char base, uint32_t base_len, const char exp, uint32_t exp_len, const char mod, uint32_t mod_len, char result, uint32_t result_len) |
int32_t | blake2_f(uint32_t rounds, const char state, uint32_t state_len, const char msg, uint32_t msg_len, const char t0_offset, uint32_t t0_len, const char t1_offset, uint32_t t1_len, int32_t final, char * result, uint32_t result_len) |
eosio::checksum256 | sha3(const char * data, uint32_t length) |
void | assert_sha3(const char * data, uint32_t length, const eosio::checksum256 & hash) |
eosio::checksum256 | keccak(const char * data, uint32_t length) |
void | assert_keccak(const char * data, uint32_t length, const eosio::checksum256 & hash) |
int32_t | k1_recover(const char sig, uint32_t sig_len, const char dig, uint32_t dig_len, char * pub, uint32_t pub_len) |
attribute((eosio_wasm_import) ) const | |
int32_t | k1_recover(const char sig, uint32_t sig_len, const char dig, uint32_t dig_len, char * pub, uint32_t pub_len) |
Attributes
Name | |
---|---|
uint32_t | length |
uint32_t const struct capi_checksum256 * | hash |
const char * | sig |
const char size_t | siglen |
const char size_t char * | pub |
const char size_t char size_t | publen |
uint32_t | data_len |
uint32_t char * | hash |
uint32_t char uint32_t | hash_len |
uint32_t char uint32_t int32_t | keccak |
const char * | state |
const char uint32_t | state_len |
const char uint32_t const char * | msg |
const char uint32_t const char uint32_t | msg_len |
const char uint32_t const char uint32_t const char * | t0_offset |
const char uint32_t const char uint32_t const char uint32_t | t0_len |
const char uint32_t const char uint32_t const char uint32_t const char * | t1_offset |
const char uint32_t const char uint32_t const char uint32_t const char uint32_t | t1_len |
const char uint32_t const char uint32_t const char uint32_t const char uint32_t int32_t | final |
const char uint32_t const char uint32_t const char uint32_t const char uint32_t int32_t char * | result |
const char uint32_t const char uint32_t const char uint32_t const char uint32_t int32_t char uint32_t | result_len |
uint32_t | op1_len |
uint32_t const char * | op2 |
uint32_t const char uint32_t | op2_len |
uint32_t | g1_len |
uint32_t const char * | scalar |
uint32_t const char uint32_t | scalar_len |
uint32_t | pairs_len |
uint32_t | base_len |
uint32_t const char * | exp |
uint32_t const char uint32_t | exp_len |
uint32_t const char uint32_t const char * | mod |
uint32_t const char uint32_t const char uint32_t | mod_len |
Detailed Description
Defines API for calculating and checking hashes which require activating crypto protocol feature.
Defines extension of C API for calculating and checking hash which require activating crypto protocol feature.
Defines C API for calculating and checking hash.
Functions Documentation
function alt_bn128_add
inline int32_t alt_bn128_add(
const char * op1,
uint32_t op1_len,
const char * op2,
uint32_t op2_len,
char * result,
uint32_t result_len
)
Parameters:
- op1 - operand 1
- op1_len - size of operand 1
- op2 - operand 2
- op2_len - size of operand 2
- result - result of the addition operation
- result_len - size of result
Return: -1 if there is an error otherwise 0
Addition operation on the elliptic curve alt_bn128
function alt_bn128_mul
inline int32_t alt_bn128_mul(
const char * g1,
uint32_t g1_len,
const char * scalar,
uint32_t scalar_len,
char * result,
uint32_t result_len
)
Parameters:
- g1 - G1 point
- g1_len - size of G1 point
- scalar - scalar factor
- scalar_len - size of scalar
- result - result of the scalar multiplication operation
- result_len - size of result
Return: -1 if there is an error otherwise 0
Scalar multiplication operation on the elliptic curve alt_bn128
function alt_bn128_pair
inline int32_t alt_bn128_pair(
const char * pairs,
uint32_t pairs_len
)
Parameters:
- pairs - g1 and g2 pairs
- pairs_len - size of pairs
- result - result of the addition operation
Return: -1 if there is an error, 1 if false and 0 if true and successful
Optimal-Ate pairing check elliptic curve alt_bn128
function mod_exp
inline int32_t mod_exp(
const char * base,
uint32_t base_len,
const char * exp,
uint32_t exp_len,
const char * mod,
uint32_t mod_len,
char * result,
uint32_t result_len
)
Parameters:
- base - base of the exponentiation (BASE)
- base_len - size of base
- exp - exponent to raise to that power (EXP)
- exp_len - size of exp
- mod - modulus (MOD)
- mod_len - size of mod
- result - result of the modular exponentiation
- result_len - size of result
Return: -1 if there is an error otherwise 0
Big integer modular exponentiation returns an output ( BASE^EXP ) % MOD
function blake2_f
int32_t blake2_f(
uint32_t rounds,
const char * state,
uint32_t state_len,
const char * msg,
uint32_t msg_len,
const char * t0_offset,
uint32_t t0_len,
const char * t1_offset,
uint32_t t1_len,
int32_t final,
char * result,
uint32_t result_len
)
Parameters:
- rounds - the number of rounds
- state - state vector
- state_len - size of state vector
- msg - message block vector
- msg_len - size of message block vector
- t0_offset - offset counters
- t0_len - size of t0_offset
- t1_offset - offset counters
- t1_len - size of t1_offset
- final - final block flag
- result - the result of the compression
- result_len - size of result
Return: -1 if there is an error otherwise 0
BLAKE2 compression function "F" https://eips.ethereum.org/EIPS/eip-152
function sha3
inline eosio::checksum256 sha3(
const char * data,
uint32_t length
)
Parameters:
- data - data you want to hash
- length - size of data
- keccak - whether to use
keccak
or NIST variant; keccak = 1 and NIST == 0 - data - Data you want to hash
- length - Data length
Return:
- eosio::checksum256 - Computed digest Hashes
data
using SHA3 NIST. - eosio::checksum256 - Computed digest
Hashes data
using sha3
function assert_sha3
inline void assert_sha3(
const char * data,
uint32_t length,
const eosio::checksum256 & hash
)
Parameters:
- data - Data you want to hash
- length - Data length
- hash - digest to compare to
Note: !This method is not optimized away during replay
Tests if the SHA3 hash generated from data matches the provided digest.
function keccak
inline eosio::checksum256 keccak(
const char * data,
uint32_t length
)
Parameters:
- data - Data you want to hash
- length - Data length
Return: eosio::checksum256 - Computed digest
Hashes data
using SHA3 Keccak.
function assert_keccak
inline void assert_keccak(
const char * data,
uint32_t length,
const eosio::checksum256 & hash
)
Parameters:
- data - Data you want to hash
- length - Data length
- hash - digest to compare to
Note: !This method is not optimized away during replay
Tests if the SHA3 keccak hash generated from data matches the provided digest.
function k1_recover
inline int32_t k1_recover(
const char * sig,
uint32_t sig_len,
const char * dig,
uint32_t dig_len,
char * pub,
uint32_t pub_len
)
Parameters:
- sig - signature.
- sig_len - size of signature
- dig - digest of the message that was signed.
- dig_len - size of digest
- pub - public key result
- pub_len - size of public key result
Return: -1 if there was an error 0 otherwise.
Calculates the uncompressed public key used for a given signature on a given digest.
function attribute
__attribute__(
(eosio_wasm_import)
) const
Parameters:
- data - Data you want to hash
- length - Data length
- hash -
capi_checksum256*
hash to compare to - data - Data you want to hash
- length - Data length
- hash -
capi_checksum160*
hash to compare to - data - Data you want to hash
- length - Data length
- hash -
capi_checksum512*
hash to compare to - data - Data you want to hash
- length - Data length
- hash -
capi_checksum160*
hash to compare to - data - Data you want to hash
- length - Data length
- hash - Hash pointer
- data - Data you want to hash
- length - Data length
- hash - Hash pointer
- data - Data you want to hash
- length - Data length
- hash - Hash pointer
- data - Data you want to hash
- data_len - Data length
- hash - Hash pointer
- digest - Hash used to create a message
- sig - Signature
- siglen - Signature length
- pub - Public key
- publen - Public key length
- digest - What the key will be generated from
- sig - Signature
- siglen - Signature length
- pub - Public key
- publen - Public key length
- data - data you want to hash
- data_len - size of data
- hash - hash result
- hash_len - size of hash result
- keccak - whether to use
keccak
or NIST variant; keccak = 1 and NIST == 0 - rounds - the number of rounds
- state - state vector
- state_len - size of state vector
- msg - message block vector
- msg_len - size of message block vector
- t0_offset - offset counters
- t0_len - size of t0_offset
- t1_offset - offset counters
- t1_len - size of t1_offset
- final - final block flag
- result - the result of the compression
- result_len - size of result
- op1 - operand 1
- op1_len - size of operand 1
- op2 - operand 2
- op2_len - size of operand 2
- result - result of the addition operation
- result_len - size of result
- g1 - G1 point
- g1_len - size of G1 point
- scalar - scalar factor
- scalar_len - size of scalar
- result - result of the scalar multiplication operation
- result_len - size of result
- pairs - g1 and g2 pairs
- pairs_len - size of pairs
- result - result of the addition operation
- base - base of the exponentiation (BASE)
- base_len - size of base
- exp - exponent to raise to that power (EXP)
- exp_len - size of exp
- mod - modulus (MOD)
- mod_len - size of mod
- result - result of the modular exponentiation
- result_len - size of result
Return:
- int - number of bytes written to pub
- -1 if there is an error otherwise 0
- -1 if there is an error otherwise 0
- -1 if there is an error otherwise 0
- -1 if there is an error, 1 if false and 0 if true and successful
- -1 if there is an error otherwise 0
Note:
- This method is optimized to a NO-OP when in fast evaluation mode.
- This method is optimized to a NO-OP when in fast evaluation mode.
- This method is optimized to a NO-OP when in fast evaluation mode.
Precondition:
- assert256 hash of
data
equals providedhash
parameter. - sha1 hash of
data
equals providedhash
parameter. - assert512 hash of
data
equals providedhash
parameter. - assert160 hash of
data
equals providedhash
parameter. - assert recovery key of
pub
equals the key generated from thedigest
parameter
Postcondition:
- Executes next statement. If was not
true
, hard return. - Executes next statement. If was not
true
, hard return. - Executes next statement. If was not
true
, hard return. - Executes next statement. If was not
true
, hard return. - Executes next statement. If was not
true
, hard return.
Tests if the sha256 hash generated from data matches the provided checksum.
Example:
checksum hash;
char data;
uint32_t length;
assert_sha256( data, length, hash )
//If the sha256 hash generated from data does not equal provided hash, anything below will never fire.
eosio::print("sha256 hash generated from data equals provided hash");
Tests if the sha1 hash generated from data matches the provided checksum.
Example:
checksum hash;
char data;
uint32_t length;
assert_sha1( data, length, hash )
//If the sha1 hash generated from data does not equal provided hash, anything below will never fire.
eosio::print("sha1 hash generated from data equals provided hash");
Tests if the sha512 hash generated from data matches the provided checksum.
Example:
checksum hash;
char data;
uint32_t length;
assert_sha512( data, length, hash )
//If the sha512 hash generated from data does not equal provided hash, anything below will never fire.
eosio::print("sha512 hash generated from data equals provided hash");
Tests if the ripemod160 hash generated from data matches the provided checksum.
Example:
checksum hash;
char data;
uint32_t length;
assert_ripemod160( data, length, hash )
//If the ripemod160 hash generated from data does not equal provided hash, anything below will never fire.
eosio::print("ripemod160 hash generated from data equals provided hash");
Hashes data
using sha256
and stores result in memory pointed to by hash.
Example:
checksum calc_hash;
sha256( data, length, &calc_hash );
eos_assert( calc_hash == hash, "invalid hash" );
Hashes data
using sha1
and stores result in memory pointed to by hash.
Example:
checksum calc_hash;
sha1( data, length, &calc_hash );
eos_assert( calc_hash == hash, "invalid hash" );
Hashes data
using sha512
and stores result in memory pointed to by hash.
Example:
checksum calc_hash;
sha512( data, length, &calc_hash );
eos_assert( calc_hash == hash, "invalid hash" );
Hashes data
using ripemod160
and stores result in memory pointed to by hash.
Example:
checksum calc_hash;
ripemod160( data, length, &calc_hash );
eos_assert( calc_hash == hash, "invalid hash" );
Calculates the public key used for a given signature and hash used to create a message.
Example:
Tests a given public key with the generated key from digest and the signature.
Example:
checksum digest;
char sig;
size_t siglen;
char pub;
size_t publen;
assert_recover_key( digest, sig, siglen, pub, publen )
// If the given public key does not match with the generated key from digest and the signature, anything below will never fire.
eosio::print("pub key matches the pub key generated from digest");
Hashes data
using sha3
and stores result in memory pointed to by hash.
BLAKE2 compression function "F" https://eips.ethereum.org/EIPS/eip-152
Addition operation on the elliptic curve alt_bn128
Scalar multiplication operation on the elliptic curve alt_bn128
Optimal-Ate pairing check elliptic curve alt_bn128
Big integer modular exponentiation returns an output ( BASE^EXP ) % MOD
function k1_recover
int32_t k1_recover(
const char * sig,
uint32_t sig_len,
const char * dig,
uint32_t dig_len,
char * pub,
uint32_t pub_len
)
Parameters:
- sig - signature.
- sig_len - size of signature
- dig - digest of the message that was signed.
- dig_len - size of digest
- pub - public key result
- pub_len - size of public key result
Return: -1 if there was an error 0 otherwise.
Calculates the uncompressed public key used for a given signature on a given digest.
Attributes Documentation
variable length
uint32_t length;
variable hash
uint32_t const struct capi_checksum256 * hash;
variable sig
const char * sig;
variable siglen
const char size_t siglen;
variable pub
const char size_t char * pub;
variable publen
const char size_t char size_t publen;
variable data_len
uint32_t data_len;
variable hash
uint32_t char * hash;
variable hash_len
uint32_t char uint32_t hash_len;
variable keccak
uint32_t char uint32_t int32_t keccak;
variable state
const char * state;
variable state_len
const char uint32_t state_len;
variable msg
const char uint32_t const char * msg;
variable msg_len
const char uint32_t const char uint32_t msg_len;
variable t0_offset
const char uint32_t const char uint32_t const char * t0_offset;
variable t0_len
const char uint32_t const char uint32_t const char uint32_t t0_len;
variable t1_offset
const char uint32_t const char uint32_t const char uint32_t const char * t1_offset;
variable t1_len
const char uint32_t const char uint32_t const char uint32_t const char uint32_t t1_len;
variable final
const char uint32_t const char uint32_t const char uint32_t const char uint32_t int32_t final;
variable result
const char uint32_t const char uint32_t const char uint32_t const char uint32_t int32_t char * result;
variable result_len
const char uint32_t const char uint32_t const char uint32_t const char uint32_t int32_t char uint32_t result_len;
variable op1_len
uint32_t op1_len;
variable op2
uint32_t const char * op2;
variable op2_len
uint32_t const char uint32_t op2_len;
variable g1_len
uint32_t g1_len;
variable scalar
uint32_t const char * scalar;
variable scalar_len
uint32_t const char uint32_t scalar_len;
variable pairs_len
uint32_t pairs_len;
variable base_len
uint32_t base_len;
variable exp
uint32_t const char * exp;
variable exp_len
uint32_t const char uint32_t exp_len;
variable mod
uint32_t const char uint32_t const char * mod;
variable mod_len
uint32_t const char uint32_t const char uint32_t mod_len;
Updated on 2022-12-05 at 15:38:08 +0000