$ cargo test -- --test-threads=1 [--show-output] [--include-ignored]The following functions and types are in scope for the audit of UPA v1.0.0:
batch_verifycommonchip.rsstruct BatchVerifierChip, lines 36-41fn assign_fq_reduced, lines 55-62fn assign_fq2_reduced, lines 64-73fn assign_g1_reduced, lines 75-84fn assign_g2_reduced, lines 86-95fn assign_verification_key, lines 97-114fn assign_public_inputs, lines 116-122fn assign_proof, lines 124-136fn check_points_on_curve, lines 145-166fn scalar_powers, lines 169-187fn scale_pairs, lines 190-211fn multi_pairing, lines 213-229fn check_pairing_result, lines 237-245
struct AssignedVerificationKey, lines 250-256fn hash, lines 296-303fn representation, lines 309-319fn num_elements, lines 321-326fn max_parts, lines 334-338fn partial_hash, lines 340-348fn parts_to_num_elements, lines 350-357
struct AssignedProof, lines 362-366struct AssignedPublicInputs, line 370
ecc.rstypes G1InputPoint, G2InputPoint, lines 46-51fn g1_input_point_to_inner, lines 54-58fn g2_input_point_to_inner, lines 61-81
types.rsstruct VerificationKey, lines 11-20fn default_with_length, lines 26-36fn gamma, lines 39-41fn pad, lines 44-49
struct Proof, lines 53-57struct PublicInputs, line 71fn default_with_length, lines 76-78fn pad, lines 81-85
universalchip.rsstruct UniversalBatchVerifierChip, lines 44-46fn check_padding, lines 105-156fn assign_batch_entry, lines 164-181fn assign_batch_entries, lines 184-196fn compute_vk_hash, lines 204-218fn compute_r, lines 226-245fn verify, lines 253-272fn verify_with_challenge, lines 280-302fn prepare_proofs, lines 310-341fn compute_pairs, lines 349-393fn public_input_pair, lines 401-469
struct AssignedBatchEntry, lines 274-283struct AssignedBatchEntries, lines 487-489fn instance, lines 518-525
struct AssignedPreparedProof, lines 530-539fn into_iter, lines 554-561
mod.rsfn universal_batch_verify_circuit, lines 73-98struct UniversalBatchVerifyCircuit, lines 105-113fn create_builder_and_instance, lines 125-144impl SafeCircuit(not all is security-critical)fn keygen, lines 178-200fn prover, lines 202-261
impl CircuitExt:fn num_instance, lines 370-372fn instances, lines 374-382
types.rsstruct UniversalBatchVerifierConfig, lines 20-38struct BatchEntry, lines 107-115fn from_ubv_input_and_config, lines 119-139fn dummy, lines 142-154
struct BatchEntries, line 175fn from_ubv_inputs_and_config, lines 179-197fn dummy, lines 200-207
struct UniversalBatchVerifierInput, lines 218-225fn dummy, lines 243-249
struct UniversalBatchVerifierInputs, lines 268-270fn dummy, lines 274-281
utils.rsfn dummy_ubv_snark, lines 40-97
keccakchip.rstype FixedLenCells, lines 54-55type VarLenCells, lines 64-67type KeccakRowData, lines 74-79struct KeccakFixedLenQuery, lines 83-96struct KeccakVarLenQuery, lines 107-132struct KeccakChip, lines 158-164fn total_keccak_perms, lines 194-205fn keccak_fixed_len, lines 215-243fn keccak_var_len, lines 261-330fn compute_intermediate_keccak_output_bytes_assigned, lines 341-362fn select_true_outputs, lines 371-405fn assert_var_len_keccak_correctness, lines 409-430fn produce_keccak_row_data, lines 435-473fn assign_keccak_cells, lines 484-620fn extract_var_output_byte_vecs, lines 623-639fn extract_var_input_words, lines 643-651fn extract_fixed_output_bytes, lines 655-663fn extract_fixed_input_words, lines 667-675fn constrain_var_queries, lines 684-709fn constrain_fixed_queries, lines 718-743
fn assigned_cell_from_assigned_value, lines 748-758fn assign_prover, lines 765-785fn get_assigned_bytes_values, lines 789-802fn rows_per_round, lines 805-811fn keccak_no_padding, lines 814-822
inputs.rsstruct KeccakFixedInput, lines 15-29struct KeccakVarLenInput, lines 55-66enum KeccakCircuitInputs, lines 98-104
mod.rsstruct KeccakConfig, lines 72-84struct KeccakPaddedCircuitInput, lines 154-175fn to_instance_values, lines 184-192fn assign, lines 198-208fn dummy, lines 221-233fn is_well_constructed, lines 270-278fn from_var_len_input, lines 281-304fn from, lines 311-318
struct KeccakPaddedCircuitInputs, lines 325-327fn from_var_len_inputs, lines 333-348fn from_fixed_or_var_len_inputs, lines 350-365fn dummy, lines 379-385fn is_well_constructed, lines 400-417
struct AssignedKeccakInput, lines 422-440fn flatten, lines 454-458fn flatten_with_len, lines 461-465
struct AssignedKeccakInputs, lines 476-478fn to_instance_values, lines 500-506
struct KeccakGateConfig, lines 512-516struct KeccakCircuit, lines 547-565fn var_input, lines 579-598fn fixed_input, lines 607-623fn new, lines 630-712fn keccak_output_bytes, lines 720-732fn config, lines 735-767fn extract_public_inputs, lines 861-872fn extract_public_output, lines 875-881fn synthesize, lines 901-987fn keygen, lines 1015-1024fn prover, lines 1026-1091fn compute_instance, lines 1093-1164fn configure, lines 1278-1284fn synthesize, lines 1286-1316fn num_instance, lines 1324-1326fn instances, lines 1328-1336
struct KeccakCircuitConfig, lines 1223-1233fn configure, lines 1236-1263fn configure, lines 1278-1284fn synthesize, lines 1286-1316fn num_instance, lines 1324-1326fn instances, lines 1328-1336
utils.rsfn byte_decomposition_powers, lines 44-57fn byte_decomposition, lines 61-92fn byte_decomposition_list, lines 101-113fn compute_proof_id, lines 117-137fn compute_final_digest, lines 142-154fn digest_as_field_elements, lines 165-178fn compose_into_field_elements, lines 187-212fn into_bits, lines 215-233fn padding, lines 236-248fn pack, lines 251-264fn bytes_to_keccak_padded_words, lines 272-290fn keccak_inputs_from_ubv_instances, lines 345-399fn compute_proof_ids_from_ubv_instance, lines 403-445fn gen_keccak_snark, lines 452-482fn gen_keccak_snark_with, lines 489-513
variable.rs- Constants: lines 21,24,27
fn first_i_bits_bitmask, lines 35-48fn upa_input_len_to_word_len, lines 65-76fn upa_input_len_to_byte_len, lines 85-95fn byte_len_to_word_len, lines 106-124fn byte_len_to_last_chunk_index, lines 132-141fn var_bytes_to_keccak_padded_words, lines 153-224fn bits_to_byte, lines 227-229fn bytes_from_words, lines 237-248fn constant_1_zeroes, lines 251-255fn constant_1_zeroes_1, lines 258-263fn constant_zeroes_1, lines 266-270fn remove_padded_bytes, lines 278-298
outermod.rstrait OuterCircuit, lines 51-145struct OuterInstanceInputs, lines 181-187fn new, lines 192-218
struct OuterCircuitInputs, lines 227-238fn new, lines 260-275fn keygen_default, lines 280-311
struct OuterKeygenInputs, lines 315-319fn new, lines 324-344
struct OuterCircuitWrapper, lines 368-382fn configure, lines 424-428fn synthesize, lines 430-436fn num_instance, lines 451-453fn instances, lines 464-466fn keygen, lines 505-522fn prover, lines 524-540
fn flex_gate_params_env_check, lines 601-616fn lookup_bits_env_check, lines 620-629
universal.rsstruct UniversalOuterCircuit, lines 21-24impl OuterCircuit for UniversalOuterCircuit, lines 26-120
utils.rsfn gen_outer_evm_verifier, lines 101-139
utilsbitmask.rsfn ith_bit_bitmask, lines 20-32fn first_i_bits_bitmask, lines 43-56
hashing.rs- Poseidon constants: lines 37,39,41,43
fn domain_tag_bytes, lines 46-51fn domain_tag, lines 55-57fn assigned_domain_tag, lines 60-65struct PoseidonHasher, lines 69-72- All functions, lines 75-143
fn var_len_poseidon, lines 169-189fn var_len_poseidon_no_len_check, lines 196-295fn select_with_bitmask, lines 302-324
The specs in universal_batch_verifier.md, universal_outer.md, and var_len_keccak.md are also in scope.
Any other files contain code that is out of scope, either because it pertains to the "fixed" (i.e. non-universal) versions of the circuits, is only for testing, or defines util functions for our prover tool.
Auditors may find the test code and the native functions in batch_verify/common/native.rs, batch_verify/universal/native.rs informative. However these are not in scope.