Go to the documentation of this file.
25 #ifndef BR_BEARSSL_BLOCK_H__
26 #define BR_BEARSSL_BLOCK_H__
423 void (*
init)(
const br_block_cbcenc_class **ctx,
424 const void *key,
size_t key_len);
439 void (*
run)(
const br_block_cbcenc_class *
const *ctx,
440 void *iv,
void *data,
size_t len);
479 void (*
init)(
const br_block_cbcdec_class **ctx,
480 const void *key,
size_t key_len);
495 void (*
run)(
const br_block_cbcdec_class *
const *ctx,
496 void *iv,
void *data,
size_t len);
536 void (*
init)(
const br_block_ctr_class **ctx,
537 const void *key,
size_t key_len);
562 uint32_t (*
run)(
const br_block_ctr_class *
const *ctx,
563 const void *iv, uint32_t cc,
void *data,
size_t len);
603 void (*
init)(
const br_block_ctrcbc_class **ctx,
604 const void *key,
size_t key_len);
627 void (*
encrypt)(
const br_block_ctrcbc_class *
const *ctx,
628 void *
ctr,
void *cbcmac,
void *data,
size_t len);
651 void (*
decrypt)(
const br_block_ctrcbc_class *
const *ctx,
652 void *
ctr,
void *cbcmac,
void *data,
size_t len);
669 void (*
ctr)(
const br_block_ctrcbc_class *
const *ctx,
670 void *
ctr,
void *data,
size_t len);
688 void (*
mac)(
const br_block_ctrcbc_class *
const *ctx,
689 void *cbcmac,
const void *data,
size_t len);
701 #define br_aes_big_BLOCK_SIZE 16
712 #ifndef BR_DOXYGEN_IGNORE
727 #ifndef BR_DOXYGEN_IGNORE
743 #ifndef BR_DOXYGEN_IGNORE
759 #ifndef BR_DOXYGEN_IGNORE
796 const void *key,
size_t len);
807 const void *key,
size_t len);
818 const void *key,
size_t len);
829 const void *key,
size_t len);
840 void *data,
size_t len);
851 void *data,
size_t len);
864 const void *iv, uint32_t cc,
void *data,
size_t len);
876 void *ctr,
void *cbcmac,
void *data,
size_t len);
888 void *ctr,
void *cbcmac,
void *data,
size_t len);
899 void *ctr,
void *data,
size_t len);
910 void *cbcmac,
const void *data,
size_t len);
921 #define br_aes_small_BLOCK_SIZE 16
932 #ifndef BR_DOXYGEN_IGNORE
947 #ifndef BR_DOXYGEN_IGNORE
963 #ifndef BR_DOXYGEN_IGNORE
979 #ifndef BR_DOXYGEN_IGNORE
1016 const void *key,
size_t len);
1027 const void *key,
size_t len);
1038 const void *key,
size_t len);
1049 const void *key,
size_t len);
1060 void *data,
size_t len);
1071 void *data,
size_t len);
1084 const void *iv, uint32_t cc,
void *data,
size_t len);
1096 void *ctr,
void *cbcmac,
void *data,
size_t len);
1108 void *ctr,
void *cbcmac,
void *data,
size_t len);
1119 void *ctr,
void *data,
size_t len);
1130 void *cbcmac,
const void *data,
size_t len);
1140 #define br_aes_ct_BLOCK_SIZE 16
1151 #ifndef BR_DOXYGEN_IGNORE
1153 unsigned num_rounds;
1166 #ifndef BR_DOXYGEN_IGNORE
1168 unsigned num_rounds;
1182 #ifndef BR_DOXYGEN_IGNORE
1184 unsigned num_rounds;
1198 #ifndef BR_DOXYGEN_IGNORE
1200 unsigned num_rounds;
1235 const void *key,
size_t len);
1246 const void *key,
size_t len);
1257 const void *key,
size_t len);
1268 const void *key,
size_t len);
1279 void *data,
size_t len);
1290 void *data,
size_t len);
1303 const void *iv, uint32_t cc,
void *data,
size_t len);
1315 void *ctr,
void *cbcmac,
void *data,
size_t len);
1327 void *ctr,
void *cbcmac,
void *data,
size_t len);
1338 void *ctr,
void *data,
size_t len);
1349 void *cbcmac,
const void *data,
size_t len);
1361 #define br_aes_ct64_BLOCK_SIZE 16
1372 #ifndef BR_DOXYGEN_IGNORE
1374 unsigned num_rounds;
1387 #ifndef BR_DOXYGEN_IGNORE
1389 unsigned num_rounds;
1403 #ifndef BR_DOXYGEN_IGNORE
1405 unsigned num_rounds;
1419 #ifndef BR_DOXYGEN_IGNORE
1421 unsigned num_rounds;
1456 const void *key,
size_t len);
1467 const void *key,
size_t len);
1478 const void *key,
size_t len);
1489 const void *key,
size_t len);
1500 void *data,
size_t len);
1511 void *data,
size_t len);
1524 const void *iv, uint32_t cc,
void *data,
size_t len);
1536 void *ctr,
void *cbcmac,
void *data,
size_t len);
1548 void *ctr,
void *cbcmac,
void *data,
size_t len);
1559 void *ctr,
void *data,
size_t len);
1570 void *cbcmac,
const void *data,
size_t len);
1577 #define br_aes_x86ni_BLOCK_SIZE 16
1588 #ifndef BR_DOXYGEN_IGNORE
1590 unsigned char skni[16 * 15];
1592 unsigned num_rounds;
1605 #ifndef BR_DOXYGEN_IGNORE
1607 unsigned char skni[16 * 15];
1609 unsigned num_rounds;
1623 #ifndef BR_DOXYGEN_IGNORE
1625 unsigned char skni[16 * 15];
1627 unsigned num_rounds;
1641 #ifndef BR_DOXYGEN_IGNORE
1643 unsigned char skni[16 * 15];
1645 unsigned num_rounds;
1696 const void *key,
size_t len);
1707 const void *key,
size_t len);
1718 const void *key,
size_t len);
1729 const void *key,
size_t len);
1740 void *data,
size_t len);
1751 void *data,
size_t len);
1764 const void *iv, uint32_t cc,
void *data,
size_t len);
1776 void *ctr,
void *cbcmac,
void *data,
size_t len);
1788 void *ctr,
void *cbcmac,
void *data,
size_t len);
1799 void *ctr,
void *data,
size_t len);
1810 void *cbcmac,
const void *data,
size_t len);
1868 #define br_aes_pwr8_BLOCK_SIZE 16
1879 #ifndef BR_DOXYGEN_IGNORE
1881 unsigned char skni[16 * 15];
1883 unsigned num_rounds;
1896 #ifndef BR_DOXYGEN_IGNORE
1898 unsigned char skni[16 * 15];
1900 unsigned num_rounds;
1914 #ifndef BR_DOXYGEN_IGNORE
1916 unsigned char skni[16 * 15];
1918 unsigned num_rounds;
1932 #ifndef BR_DOXYGEN_IGNORE
1934 unsigned char skni[16 * 15];
1936 unsigned num_rounds;
1987 const void *key,
size_t len);
1998 const void *key,
size_t len);
2009 const void *key,
size_t len);
2020 const void *key,
size_t len);
2031 void *data,
size_t len);
2042 void *data,
size_t len);
2055 const void *iv, uint32_t cc,
void *data,
size_t len);
2067 void *ctr,
void *cbcmac,
void *data,
size_t len);
2079 void *ctr,
void *cbcmac,
void *data,
size_t len);
2090 void *ctr,
void *data,
size_t len);
2101 void *cbcmac,
const void *data,
size_t len);
2216 #define br_des_tab_BLOCK_SIZE 8
2227 #ifndef BR_DOXYGEN_IGNORE
2229 unsigned num_rounds;
2242 #ifndef BR_DOXYGEN_IGNORE
2244 unsigned num_rounds;
2267 const void *key,
size_t len);
2278 const void *key,
size_t len);
2289 void *data,
size_t len);
2300 void *data,
size_t len);
2308 #define br_des_ct_BLOCK_SIZE 8
2319 #ifndef BR_DOXYGEN_IGNORE
2321 unsigned num_rounds;
2334 #ifndef BR_DOXYGEN_IGNORE
2336 unsigned num_rounds;
2359 const void *key,
size_t len);
2370 const void *key,
size_t len);
2381 void *data,
size_t len);
2392 void *data,
size_t len);
2443 const void *iv, uint32_t cc,
void *data,
size_t len);
2457 const void *iv, uint32_t cc,
void *data,
size_t len);
2478 const void *iv, uint32_t cc,
void *data,
size_t len);
2514 void *data,
size_t len,
const void *aad,
size_t aad_len,
2533 void *data,
size_t len,
const void *aad,
size_t aad_len,
2552 void *data,
size_t len,
const void *aad,
size_t aad_len,
2577 void *data,
size_t len,
const void *aad,
size_t aad_len,
2601 void *data,
size_t len,
const void *aad,
size_t aad_len,
const br_block_ctr_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:1181
unsigned block_size
Size of individual blocks (in bytes).
Definition: bearssl_block.h:584
Context for AES subkeys (aes_small implementation, CTR encryption and decryption + CBC-MAC).
Definition: bearssl_block.h:976
const br_block_cbcdec_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:1604
const br_block_cbcdec_class * vtable
Definition: bearssl_block.h:2414
void(* init)(const br_block_ctr_class **ctx, const void *key, size_t key_len)
Initialisation function.
Definition: bearssl_block.h:536
size_t context_size
Size (in bytes) of the context structure appropriate for containing subkeys.
Definition: bearssl_block.h:455
unsigned log_block_size
Base-2 logarithm of the size of individual blocks, expressed in bytes.
Definition: bearssl_block.h:466
Context for AES subkeys (aes_ct64 implementation, CTR encryption and decryption + CBC-MAC).
Definition: bearssl_block.h:1416
br_aes_small_cbcdec_keys c_small
Definition: bearssl_block.h:2175
Context for AES subkeys (aes_ct implementation, CTR encryption and decryption + CBC-MAC).
Definition: bearssl_block.h:1195
Class type for combined CTR and CBC-MAC implementations.
Definition: bearssl_block.h:574
const br_block_ctrcbc_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:1197
br_aes_small_ctrcbc_keys c_small
Definition: bearssl_block.h:2203
Context for AES subkeys (aes_x86ni implementation, CBC decryption).
Definition: bearssl_block.h:1602
const br_block_ctrcbc_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:1640
const br_block_ctr_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:742
const br_block_cbcenc_class * vtable
Definition: bearssl_block.h:2404
Context for AES subkeys (aes_pwr8 implementation, CTR encryption and decryption + CBC-MAC).
Definition: bearssl_block.h:1929
Context for AES subkeys (aes_ct implementation, CBC decryption).
Definition: bearssl_block.h:1163
const br_block_cbcdec_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:2241
Context for DES subkeys (des_ct implementation, CBC decryption).
Definition: bearssl_block.h:2331
br_des_ct_cbcdec_keys c_ct
Definition: bearssl_block.h:2416
br_aes_pwr8_ctr_keys c_pwr8
Definition: bearssl_block.h:2193
const br_block_cbcenc_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:1371
Context for AES subkeys (aes_ct64 implementation, CBC encryption).
Definition: bearssl_block.h:1369
br_des_tab_cbcdec_keys c_tab
Definition: bearssl_block.h:2415
void(* init)(const br_block_ctrcbc_class **ctx, const void *key, size_t key_len)
Initialisation function.
Definition: bearssl_block.h:603
const br_block_cbcenc_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:711
br_des_tab_cbcenc_keys tab
Definition: bearssl_block.h:2405
Context for AES subkeys (aes_pwr8 implementation, CTR encryption and decryption).
Definition: bearssl_block.h:1911
const br_block_cbcenc_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:2318
br_aes_ct_cbcdec_keys c_ct
Definition: bearssl_block.h:2176
void(* mac)(const br_block_ctrcbc_class *const *ctx, void *cbcmac, const void *data, size_t len)
Run the CBC-MAC only.
Definition: bearssl_block.h:688
const br_block_cbcenc_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:1878
unsigned block_size
Size of individual blocks (in bytes).
Definition: bearssl_block.h:460
br_aes_x86ni_ctrcbc_keys c_x86ni
Definition: bearssl_block.h:2206
Context for AES subkeys (aes_small implementation, CTR encryption and decryption).
Definition: bearssl_block.h:960
size_t context_size
Size (in bytes) of the context structure appropriate for containing subkeys.
Definition: bearssl_block.h:512
void(* init)(const br_block_cbcdec_class **ctx, const void *key, size_t key_len)
Initialisation function.
Definition: bearssl_block.h:479
Context for AES subkeys (aes_big implementation, CBC decryption).
Definition: bearssl_block.h:724
br_aes_ct64_ctrcbc_keys c_ct64
Definition: bearssl_block.h:2205
const br_block_cbcenc_class * vtable
Definition: bearssl_block.h:2159
size_t context_size
Size (in bytes) of the context structure appropriate for containing subkeys.
Definition: bearssl_block.h:579
Context for AES subkeys (aes_big implementation, CBC encryption).
Definition: bearssl_block.h:709
Context for AES subkeys (aes_big implementation, CTR encryption and decryption).
Definition: bearssl_block.h:740
Context for AES subkeys (aes_ct implementation, CTR encryption and decryption).
Definition: bearssl_block.h:1179
uint32_t(* run)(const br_block_ctr_class *const *ctx, const void *iv, uint32_t cc, void *data, size_t len)
Run the CTR encryption or decryption.
Definition: bearssl_block.h:562
Context for AES subkeys (aes_ct implementation, CBC encryption).
Definition: bearssl_block.h:1148
Context for AES subkeys (aes_ct64 implementation, CBC decryption).
Definition: bearssl_block.h:1384
const br_block_ctr_class * vtable
Definition: bearssl_block.h:2187
Context for DES subkeys (des_ct implementation, CBC encryption).
Definition: bearssl_block.h:2316
br_aes_ct_ctrcbc_keys c_ct
Definition: bearssl_block.h:2204
br_aes_small_ctr_keys c_small
Definition: bearssl_block.h:2189
const br_block_cbcenc_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:2226
br_aes_x86ni_ctr_keys c_x86ni
Definition: bearssl_block.h:2192
Context for AES subkeys (aes_pwr8 implementation, CBC encryption).
Definition: bearssl_block.h:1876
Context for AES subkeys (aes_x86ni implementation, CTR encryption and decryption + CBC-MAC).
Definition: bearssl_block.h:1638
void(* ctr)(const br_block_ctrcbc_class *const *ctx, void *ctr, void *data, size_t len)
Run the CTR encryption/decryption only.
Definition: bearssl_block.h:669
const br_block_cbcdec_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:1386
const br_block_ctr_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:1402
br_aes_x86ni_cbcenc_keys c_x86ni
Definition: bearssl_block.h:2164
unsigned log_block_size
Base-2 logarithm of the size of individual blocks, expressed in bytes.
Definition: bearssl_block.h:410
Context for AES subkeys (aes_small implementation, CBC encryption).
Definition: bearssl_block.h:929
Class type for CBC decryption implementations.
Definition: bearssl_block.h:450
Aggregate structure large enough to be used as context for subkeys (CTR encryption/decryption + CBC-M...
Definition: bearssl_block.h:2200
Class type for CTR encryption/decryption implementations.
Definition: bearssl_block.h:507
const br_block_cbcdec_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:2333
const br_block_ctrcbc_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:1931
const br_block_cbcdec_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:946
Context for AES subkeys (aes_x86ni implementation, CTR encryption and decryption).
Definition: bearssl_block.h:1620
br_aes_ct_ctr_keys c_ct
Definition: bearssl_block.h:2190
unsigned log_block_size
Base-2 logarithm of the size of individual blocks, expressed in bytes.
Definition: bearssl_block.h:590
unsigned block_size
Size of individual blocks (in bytes).
Definition: bearssl_block.h:517
const br_block_ctr_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:962
Context for AES subkeys (aes_big implementation, CTR encryption and decryption + CBC-MAC).
Definition: bearssl_block.h:756
Aggregate structure large enough to be used as context for subkeys (CBC encryption) for all AES imple...
Definition: bearssl_block.h:2158
br_aes_pwr8_cbcdec_keys c_pwr8
Definition: bearssl_block.h:2179
void(* run)(const br_block_cbcenc_class *const *ctx, void *iv, void *data, size_t len)
Run the CBC encryption.
Definition: bearssl_block.h:439
Aggregate structure large enough to be used as context for subkeys (CBC encryption) for all DES imple...
Definition: bearssl_block.h:2403
unsigned block_size
Size of individual blocks (in bytes).
Definition: bearssl_block.h:404
Context for AES subkeys (aes_pwr8 implementation, CBC decryption).
Definition: bearssl_block.h:1893
void(* init)(const br_block_cbcenc_class **ctx, const void *key, size_t key_len)
Initialisation function.
Definition: bearssl_block.h:423
br_aes_x86ni_cbcdec_keys c_x86ni
Definition: bearssl_block.h:2178
Context for DES subkeys (des_tab implementation, CBC decryption).
Definition: bearssl_block.h:2239
void(* encrypt)(const br_block_ctrcbc_class *const *ctx, void *ctr, void *cbcmac, void *data, size_t len)
Run the CTR encryption + CBC-MAC.
Definition: bearssl_block.h:627
br_aes_pwr8_ctrcbc_keys c_pwr8
Definition: bearssl_block.h:2207
br_aes_ct64_ctr_keys c_ct64
Definition: bearssl_block.h:2191
size_t context_size
Size (in bytes) of the context structure appropriate for containing subkeys.
Definition: bearssl_block.h:399
Context for DES subkeys (des_tab implementation, CBC encryption).
Definition: bearssl_block.h:2224
br_aes_ct_cbcenc_keys c_ct
Definition: bearssl_block.h:2162
const br_block_cbcdec_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:1895
br_des_ct_cbcenc_keys ct
Definition: bearssl_block.h:2406
unsigned log_block_size
Base-2 logarithm of the size of individual blocks, expressed in bytes.
Definition: bearssl_block.h:523
Context for AES subkeys (aes_ct64 implementation, CTR encryption and decryption).
Definition: bearssl_block.h:1400
br_aes_ct64_cbcenc_keys c_ct64
Definition: bearssl_block.h:2163
const br_block_cbcdec_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:1165
const br_block_cbcenc_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:931
const br_block_ctrcbc_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:1418
const br_block_cbcenc_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:1587
const br_block_cbcenc_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:1150
Aggregate structure large enough to be used as context for subkeys (CBC decryption) for all AES imple...
Definition: bearssl_block.h:2172
const br_block_ctr_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:1913
const br_block_ctr_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:1622
Context for AES subkeys (aes_x86ni implementation, CBC encryption).
Definition: bearssl_block.h:1585
const br_block_cbcdec_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:726
Aggregate structure large enough to be used as context for subkeys (CBC decryption) for all DES imple...
Definition: bearssl_block.h:2413
const br_block_ctrcbc_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:978
br_aes_small_cbcenc_keys c_small
Definition: bearssl_block.h:2161
const br_block_cbcdec_class * vtable
Definition: bearssl_block.h:2173
Aggregate structure large enough to be used as context for subkeys (CTR encryption and decryption) fo...
Definition: bearssl_block.h:2186
const br_block_ctrcbc_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:758
br_aes_big_cbcenc_keys c_big
Definition: bearssl_block.h:2160
const br_block_ctrcbc_class * vtable
Definition: bearssl_block.h:2201
br_aes_pwr8_cbcenc_keys c_pwr8
Definition: bearssl_block.h:2165
void(* run)(const br_block_cbcdec_class *const *ctx, void *iv, void *data, size_t len)
Run the CBC decryption.
Definition: bearssl_block.h:495
Context for AES subkeys (aes_small implementation, CBC decryption).
Definition: bearssl_block.h:944
void(* decrypt)(const br_block_ctrcbc_class *const *ctx, void *ctr, void *cbcmac, void *data, size_t len)
Run the CTR decryption + CBC-MAC.
Definition: bearssl_block.h:651
Class type for CBC encryption implementations.
Definition: bearssl_block.h:394
br_aes_big_cbcdec_keys c_big
Definition: bearssl_block.h:2174
br_aes_big_ctr_keys c_big
Definition: bearssl_block.h:2188
br_aes_big_ctrcbc_keys c_big
Definition: bearssl_block.h:2202
br_aes_ct64_cbcdec_keys c_ct64
Definition: bearssl_block.h:2177