ABY Framework  1.0
Arithmetic Bool Yao Framework
 All Classes Files Functions Variables Enumerations Enumerator Macros
Macros | Enumerations | Variables
constants.h File Reference

File containing all constants used throughout the source. More...

#include "typedefs.h"
Include dependency graph for constants.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define AES_KEY_BITS   128
 
#define AES_KEY_BYTES   16
 
#define AES_BITS   128
 
#define AES_BYTES   16
 
#define LOG2_AES_BITS   ceil_log2(AES_BITS)
 
#define GARBLED_TABLE_WINDOW   100000000
 Window size of Yao's garbled circuits in pipelined execution.
 

Enumerations

enum  field_type { P_FIELD, ECC_FIELD }
 
enum  e_circuit { C_BOOLEAN = 0, C_ARITHMETIC = 1, C_LAST = 2 }
 
enum  e_mt_gen_alg { MT_OT = 0, MT_PAILLIER = 1, MT_DGK = 2, MT_LAST = 3 }
 Enumeration which defines the method that is used for arithmetic multiplication triple generation. More...
 
enum  e_gatetype {
  G_LIN = 0x00, G_NON_LIN = 0x01, G_NON_LIN_VEC = 0x02, G_IN = 0x03,
  G_OUT = 0x04, G_INV = 0x05, G_CONSTANT = 0x06, G_CONV = 0x07,
  G_CALLBACK = 0x08, G_COMBINE = 0x80, G_SPLIT = 0x81, G_REPEAT = 0x82,
  G_PERM = 0x83, G_COMBINEPOS = 0x84, G_SUBSET = 0x85
}
 Enumeration which defines the type of the gate in the circuit. More...
 
enum  e_operation {
  OP_XOR = 0, OP_AND = 1, OP_ADD = 2, OP_MUL = 3,
  OP_CMP = 4, OP_EQ = 5, OP_MUX = 6, OP_SUB = 7,
  OP_AND_VEC = 8, OP_MUL_VEC = 9, OP_IN, OP_OUT,
  OP_INV, OP_CONSTANT, OP_CONV, OP_A2Y,
  OP_B2A, OP_B2Y, OP_Y2B, OP_IO,
  OP_COMBINE = 0x80, OP_SPLIT = 0x81, OP_REPEAT = 0x82, OP_PERM = 0x83,
  OP_COMBINEPOS = 0x84
}
 Enumeration which defines all the operations which are there in the framework. More...
 
enum  e_sharing {
  S_BOOL = 0, S_YAO = 1, S_ARITH = 2, S_LAST = 3,
  S_YAO_PIPE = 4
}
 Enumeration which defines the different sharing which are there in the framework. More...
 
enum  e_role { SERVER, CLIENT, ALL }
 Defines the role of the party or the source / target for certain operations (e.g., input/output)
 

Variables

const uint8_t g_TruthTable [4] = { 0, 0, 0, 1 }
 A truth-table for an AND gate.
 
const uint8_t m_vFixedKeyAESSeed [AES_KEY_BYTES] = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF }
 The seed from which the key is generated.
 
const uint8_t m_vSeed [AES_KEY_BYTES] = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF }
 Static seed for various testing functionalities.
 

Detailed Description

File containing all constants used throughout the source.

Author
micha.nosp@m.el.z.nosp@m.ohner.nosp@m.@ec-.nosp@m.sprid.nosp@m.e.de

Enumeration Type Documentation

enum e_circuit
Enumerator
C_BOOLEAN 

Enum for BOOLEAN circuit

C_ARITHMETIC 

Enum for ARITHMETIC circuit

C_LAST 

Dummy enum that is used to indicate the number of enums. DO NOT PUT ANOTHER ENUM AFTER THIS ONE!

enum e_gatetype

Enumeration which defines the type of the gate in the circuit.

Enumerator
G_LIN 

Enum for LINEAR gates (XOR in Boolean circuits, ADD in Arithmetic circuits)

G_NON_LIN 

Enum for NON-LINEAR gates (AND in Boolean circuits, MUL in Arithmetic circuits)

G_NON_LIN_VEC 

Enum for VECTOR-NON-LINEAR gates (AND-VEC in Boolsharing, MUL-VEC in Arithmeticsharing)

G_IN 

Enum for INPUT gates

G_OUT 

Enum for OUTPUT gates

G_INV 

Enum for INVERSION gates

G_CONSTANT 

Enum for CONSTANT gates

G_CONV 

Enum for CONVERSION gates (dst is used to specify the sharing to convert to)

G_CALLBACK 

Enum for Callback gates where the developer specifies a routine which is called upon gate evaluation

G_COMBINE 

Enum for COMBINER gates that combine multiple single-value gates to one multi-value gate

G_SPLIT 

Enum for SPLITTER gates that split a multi-value gate to multiple single-value gates

G_REPEAT 

Enum for REPEATER gates that repeat the value of a single-value gate to form a new multi-value gate

G_PERM 

Enum for PERMUTATION gates that permute the value of multi-value gates

G_COMBINEPOS 

Enum for COMBINE_AT_POSITION gates that form a new multi-value gate from specific positions of old multi-value gates

G_SUBSET 

Enum for SUBSET gates that form a new multi-value gate from multiple positions of one multi-value gate

Enumeration which defines the method that is used for arithmetic multiplication triple generation.

Enumerator
MT_OT 

Enum for using OT to generate arithmetic MTs

MT_PAILLIER 

Enum for using PAILLIER to generate arithmetic MTs

MT_DGK 

Enum for using DGK to generate arithmetic MTs

MT_LAST 

Dummy enum that is used to indicate the number of enums. DO NOT PUT ANOTHER ENUM AFTER THIS ONE!

Enumeration which defines all the operations which are there in the framework.

Enumerator
OP_XOR 

Enum for performing LOGICAL XOR

OP_AND 

Enum for performing LOGICAL AND

OP_ADD 

Enum for performing ADDITION

OP_MUL 

Enum for performing MULTIPLICATION

OP_CMP 

Enum for performing COMPARISON

OP_EQ 

Enum for performing EQUALITY

OP_MUX 

Enum for performing MULTIPLEXER

OP_SUB 

Enum for performing SUBTRACTION

OP_AND_VEC 

Enum for performing VECTORED AND

OP_MUL_VEC 

Enum for performing VECTORED MULTIPLICATION

OP_IN 

Enum for performing INPUT

OP_OUT 

Enum for performing OUTPUT

OP_INV 

Enum for performing INVERSION

OP_CONSTANT 

Enum for performing CONSTANT OPERATION

OP_CONV 

Enum for performing CONVERSION

OP_A2Y 

Enum for performing ARITHEMETIC TO YAO CONVERSION

OP_B2A 

Enum for performing BOOL TO ARITHEMETIC CONVERSION

OP_B2Y 

Enum for performing BOOL TO YAO CONVERSION

OP_Y2B 

Enum for performing YAO TO BOOL CONVERSION

OP_IO 

Enum for performing a SHARING followed by a RECONSTRUCT operation

OP_COMBINE 

Enum for COMBINING multiple single-value gates into one multi-gate

OP_SPLIT 

Enum for SPLITTING one multi-value gate into multiple single-value gates

OP_REPEAT 

Enum for REPEATING the value of a single-value gate to create a multi-value gate

OP_PERM 

Enum for PERMUTING the values in a multi-value gate to another multi-value gate

OP_COMBINEPOS 

Enum for COMBINING the values at specific positions in a multi-value gate

enum e_sharing

Enumeration which defines the different sharing which are there in the framework.

Enumerator
S_BOOL 

Enum for performing bool sharing

S_YAO 

Enum for performing yao sharing

S_ARITH 

Enum for performing arithemetic sharing

S_LAST 

Enum for indicating the last enum value. DO NOT PUT ANOTHER ENUM AFTER THIS ONE! !

S_YAO_PIPE 

TODO Enum for performing yao sharing in pipelined mode