跳到主要内容

Crypto

Module: Core API

Defines API for calculating and checking hashes which require activating crypto protocol feature. More...

Functions

Name
int32_talt_bn128_add(const char op1, uint32_t op1_len, const char op2, uint32_t op2_len, char * result, uint32_t result_len)
int32_talt_bn128_mul(const char g1, uint32_t g1_len, const char scalar, uint32_t scalar_len, char * result, uint32_t result_len)
int32_talt_bn128_pair(const char * pairs, uint32_t pairs_len)
int32_tmod_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_tblake2_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::checksum256sha3(const char * data, uint32_t length)
voidassert_sha3(const char * data, uint32_t length, const eosio::checksum256 & hash)
eosio::checksum256keccak(const char * data, uint32_t length)
voidassert_keccak(const char * data, uint32_t length, const eosio::checksum256 & hash)
int32_tk1_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_tk1_recover(const char sig, uint32_t sig_len, const char dig, uint32_t dig_len, char * pub, uint32_t pub_len)

Attributes

Name
uint32_tlength
uint32_t const struct capi_checksum256 *hash
const char *sig
const char size_tsiglen
const char size_t char *pub
const char size_t char size_tpublen
uint32_tdata_len
uint32_t char *hash
uint32_t char uint32_thash_len
uint32_t char uint32_t int32_tkeccak
const char *state
const char uint32_tstate_len
const char uint32_t const char *msg
const char uint32_t const char uint32_tmsg_len
const char uint32_t const char uint32_t const char *t0_offset
const char uint32_t const char uint32_t const char uint32_tt0_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_tt1_len
const char uint32_t const char uint32_t const char uint32_t const char uint32_t int32_tfinal
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_tresult_len
uint32_top1_len
uint32_t const char *op2
uint32_t const char uint32_top2_len
uint32_tg1_len
uint32_t const char *scalar
uint32_t const char uint32_tscalar_len
uint32_tpairs_len
uint32_tbase_len
uint32_t const char *exp
uint32_t const char uint32_texp_len
uint32_t const char uint32_t const char *mod
uint32_t const char uint32_t const char uint32_tmod_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 provided hash parameter.
  • sha1 hash of data equals provided hash parameter.
  • assert512 hash of data equals provided hash parameter.
  • assert160 hash of data equals provided hash parameter.
  • assert recovery key of pub equals the key generated from the digest 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