Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
aes128.cpp File Reference

Go to the source code of this file.

Namespaces

namespace  bb
 Entry point for Barretenberg command-line interface.
 
namespace  bb::stdlib
 
namespace  bb::stdlib::aes128
 

Macros

#define INSTANTIATE_AES128_TEMPLATES(Builder)
 

Typedefs

template<typename Builder >
using bb::stdlib::aes128::byte_pair = std::pair< field_t< Builder >, field_t< Builder > >
 
template<typename Builder >
using bb::stdlib::aes128::state_span = std::span< byte_pair< Builder >, BLOCK_SIZE >
 
template<typename Builder >
using bb::stdlib::aes128::column_span = std::span< byte_pair< Builder >, COLUMN_SIZE >
 
template<typename Builder >
using bb::stdlib::aes128::key_span = std::span< field_t< Builder >, EXTENDED_KEY_LENGTH >
 
template<typename Builder >
using bb::stdlib::aes128::block_span = std::span< field_t< Builder >, BLOCK_SIZE >
 

Functions

template<typename Builder >
field_t< Builderbb::stdlib::aes128::normalize_sparse_form (Builder *, field_t< Builder > &byte)
 
template<typename Builder >
byte_pair< Builderbb::stdlib::aes128::apply_aes_sbox_map (Builder *, field_t< Builder > &input)
 
template<typename Builder >
std::array< field_t< Builder >, 16 > bb::stdlib::aes128::convert_into_sparse_bytes (Builder *ctx, const field_t< Builder > &block_data)
 Converts a 128-bit block into 16 sparse-form bytes via AES_INPUT plookup table.
 
template<typename Builder >
field_t< Builderbb::stdlib::aes128::convert_from_sparse_bytes (Builder *ctx, block_span< Builder > sparse_bytes)
 
template<typename Builder >
std::array< field_t< Builder >, EXTENDED_KEY_LENGTHbb::stdlib::aes128::expand_key (Builder *ctx, const field_t< Builder > &key)
 Expands a 128-bit AES key into the full key schedule (EXTENDED_KEY_LENGTH bytes / 11 round keys).
 
template<typename Builder >
void bb::stdlib::aes128::shift_rows (state_span< Builder > state)
 The SHIFTROW() operation as in FIPS 197, Section 5.1.2.
 
template<typename Builder >
void bb::stdlib::aes128::mix_column_and_add_round_key (column_span< Builder > column_pairs, key_span< Builder > round_key, size_t round, size_t column)
 Performs MixColumns on a single column and adds the round key (FIPS 197, Sections 5.1.3 & 5.1.4).
 
template<typename Builder >
void bb::stdlib::aes128::mix_columns_and_add_round_key (state_span< Builder > state_pairs, key_span< Builder > round_key, size_t round)
 
template<typename Builder >
void bb::stdlib::aes128::sub_bytes (Builder *ctx, state_span< Builder > state_pairs)
 
template<typename Builder >
void bb::stdlib::aes128::add_round_key (state_span< Builder > sparse_state, key_span< Builder > sparse_round_key, size_t round)
 
template<typename Builder >
void bb::stdlib::aes128::xor_with_iv (state_span< Builder > state, block_span< Builder > iv)
 
template<typename Builder >
void bb::stdlib::aes128::aes128_cipher (Builder *ctx, state_span< Builder > state, key_span< Builder > sparse_round_key)
 
template<typename Builder >
std::vector< field_t< Builder > > bb::stdlib::aes128::encrypt_buffer_cbc (const std::vector< field_t< Builder > > &input, const field_t< Builder > &iv, const field_t< Builder > &key)
 Main public interface: AES-128 CBC encryption.
 
 bb::stdlib::aes128::INSTANTIATE_AES128_TEMPLATES (bb::UltraCircuitBuilder)
 
 bb::stdlib::aes128::INSTANTIATE_AES128_TEMPLATES (bb::MegaCircuitBuilder)
 

Macro Definition Documentation

◆ INSTANTIATE_AES128_TEMPLATES

#define INSTANTIATE_AES128_TEMPLATES (   Builder)
Value:
template std::vector<field_t<Builder>> encrypt_buffer_cbc<Builder>( \
const std::vector<field_t<Builder>>&, const field_t<Builder>&, const field_t<Builder>&); \
template std::array<field_t<Builder>, BLOCK_SIZE> convert_into_sparse_bytes<Builder>(Builder*, \
const field_t<Builder>&); \
template field_t<Builder> convert_from_sparse_bytes<Builder>(Builder*, std::span<field_t<Builder>, BLOCK_SIZE>)
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13

Definition at line 465 of file aes128.cpp.