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_cbcdec_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:1165
br_des_tab_cbcdec_keys c_tab
Definition: bearssl_block.h:2415
const br_block_ctrcbc_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:978
br_aes_ct_ctrcbc_keys c_ct
Definition: bearssl_block.h:2204
Class type for CBC encryption implementations.
Definition: bearssl_block.h:394
br_aes_ct64_ctrcbc_keys c_ct64
Definition: bearssl_block.h:2205
const br_block_ctrcbc_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:1931
br_aes_ct64_cbcenc_keys c_ct64
Definition: bearssl_block.h:2163
br_aes_big_ctr_keys c_big
Definition: bearssl_block.h:2188
unsigned log_block_size
Base-2 logarithm of the size of individual blocks, expressed in bytes.
Definition: bearssl_block.h:466
br_aes_ct_cbcdec_keys c_ct
Definition: bearssl_block.h:2176
br_aes_pwr8_cbcenc_keys c_pwr8
Definition: bearssl_block.h:2165
unsigned log_block_size
Base-2 logarithm of the size of individual blocks, expressed in bytes.
Definition: bearssl_block.h:410
const br_block_ctr_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:1622
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:1895
Context for AES subkeys (aes_ct64 implementation, CBC decryption).
Definition: bearssl_block.h:1384
const br_block_cbcenc_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:1371
br_aes_ct_cbcenc_keys c_ct
Definition: bearssl_block.h:2162
Context for AES subkeys (aes_pwr8 implementation, CBC decryption).
Definition: bearssl_block.h:1893
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
br_aes_pwr8_cbcdec_keys c_pwr8
Definition: bearssl_block.h:2179
const br_block_cbcenc_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:2226
Class type for combined CTR and CBC-MAC implementations.
Definition: bearssl_block.h:574
br_aes_small_ctrcbc_keys c_small
Definition: bearssl_block.h:2203
Context for AES subkeys (aes_ct implementation, CTR encryption and decryption + CBC-MAC).
Definition: bearssl_block.h:1195
const br_block_ctr_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:962
const br_block_ctrcbc_class * vtable
Definition: bearssl_block.h:2201
Context for AES subkeys (aes_x86ni implementation, CBC encryption).
Definition: bearssl_block.h:1585
Context for AES subkeys (aes_ct64 implementation, CTR encryption and decryption). ...
Definition: bearssl_block.h:1400
Context for AES subkeys (aes_big implementation, CBC decryption).
Definition: bearssl_block.h:724
Context for AES subkeys (aes_small implementation, CBC encryption).
Definition: bearssl_block.h:929
unsigned block_size
Size of individual blocks (in bytes).
Definition: bearssl_block.h:517
Context for AES subkeys (aes_big implementation, CBC encryption).
Definition: bearssl_block.h:709
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:404
const br_block_ctr_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:1181
br_aes_pwr8_ctrcbc_keys c_pwr8
Definition: bearssl_block.h:2207
const br_block_cbcdec_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:726
br_aes_pwr8_ctr_keys c_pwr8
Definition: bearssl_block.h:2193
Aggregate structure large enough to be used as context for subkeys (CTR encryption/decryption + CBC-M...
Definition: bearssl_block.h:2200
const br_block_cbcenc_class * vtable
Definition: bearssl_block.h:2159
Context for AES subkeys (aes_ct implementation, CBC encryption).
Definition: bearssl_block.h:1148
unsigned log_block_size
Base-2 logarithm of the size of individual blocks, expressed in bytes.
Definition: bearssl_block.h:523
size_t context_size
Size (in bytes) of the context structure appropriate for containing subkeys.
Definition: bearssl_block.h:579
const br_block_cbcenc_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:1878
Context for DES subkeys (des_ct implementation, CBC encryption).
Definition: bearssl_block.h:2316
const br_block_cbcdec_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:2241
const br_block_ctrcbc_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:1640
Class type for CTR encryption/decryption implementations.
Definition: bearssl_block.h:507
Context for AES subkeys (aes_ct implementation, CBC decryption).
Definition: bearssl_block.h:1163
br_aes_big_cbcdec_keys c_big
Definition: bearssl_block.h:2174
Context for DES subkeys (des_ct implementation, CBC decryption).
Definition: bearssl_block.h:2331
Context for AES subkeys (aes_pwr8 implementation, CTR encryption and decryption + CBC-MAC)...
Definition: bearssl_block.h:1929
br_aes_ct64_cbcdec_keys c_ct64
Definition: bearssl_block.h:2177
Context for AES subkeys (aes_small implementation, CTR encryption and decryption).
Definition: bearssl_block.h:960
br_aes_x86ni_cbcdec_keys c_x86ni
Definition: bearssl_block.h:2178
const br_block_cbcenc_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:711
const br_block_ctr_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:742
Aggregate structure large enough to be used as context for subkeys (CTR encryption and decryption) fo...
Definition: bearssl_block.h:2186
br_aes_x86ni_ctr_keys c_x86ni
Definition: bearssl_block.h:2192
Context for AES subkeys (aes_ct64 implementation, CTR encryption and decryption + CBC-MAC)...
Definition: bearssl_block.h:1416
size_t context_size
Size (in bytes) of the context structure appropriate for containing subkeys.
Definition: bearssl_block.h:455
const br_block_ctr_class * vtable
Definition: bearssl_block.h:2187
Context for AES subkeys (aes_big implementation, CTR encryption and decryption + CBC-MAC).
Definition: bearssl_block.h:756
Context for AES subkeys (aes_pwr8 implementation, CTR encryption and decryption). ...
Definition: bearssl_block.h:1911
br_des_ct_cbcenc_keys ct
Definition: bearssl_block.h:2406
br_aes_small_ctr_keys c_small
Definition: bearssl_block.h:2189
Context for AES subkeys (aes_big implementation, CTR encryption and decryption).
Definition: bearssl_block.h:740
const br_block_cbcdec_class * vtable
Definition: bearssl_block.h:2414
br_aes_big_cbcenc_keys c_big
Definition: bearssl_block.h:2160
br_aes_small_cbcdec_keys c_small
Definition: bearssl_block.h:2175
const br_block_cbcenc_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:2318
Context for AES subkeys (aes_x86ni implementation, CBC decryption).
Definition: bearssl_block.h:1602
const br_block_cbcdec_class * vtable
Definition: bearssl_block.h:2173
Context for AES subkeys (aes_small implementation, CBC decryption).
Definition: bearssl_block.h:944
const br_block_ctr_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:1402
Aggregate structure large enough to be used as context for subkeys (CBC encryption) for all AES imple...
Definition: bearssl_block.h:2158
Class type for CBC decryption implementations.
Definition: bearssl_block.h:450
Context for AES subkeys (aes_ct implementation, CTR encryption and decryption).
Definition: bearssl_block.h:1179
Aggregate structure large enough to be used as context for subkeys (CBC encryption) for all DES imple...
Definition: bearssl_block.h:2403
br_aes_ct64_ctr_keys c_ct64
Definition: bearssl_block.h:2191
const br_block_cbcdec_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:946
const br_block_ctrcbc_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:758
br_aes_ct_ctr_keys c_ct
Definition: bearssl_block.h:2190
const br_block_cbcdec_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:2333
void(* init)(const br_block_cbcenc_class **ctx, const void *key, size_t key_len)
Initialisation function.
Definition: bearssl_block.h:423
size_t context_size
Size (in bytes) of the context structure appropriate for containing subkeys.
Definition: bearssl_block.h:399
br_aes_big_ctrcbc_keys c_big
Definition: bearssl_block.h:2202
br_des_tab_cbcenc_keys tab
Definition: bearssl_block.h:2405
Context for DES subkeys (des_tab implementation, CBC decryption).
Definition: bearssl_block.h:2239
const br_block_cbcenc_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:931
unsigned block_size
Size of individual blocks (in bytes).
Definition: bearssl_block.h:460
br_des_ct_cbcdec_keys c_ct
Definition: bearssl_block.h:2416
Context for DES subkeys (des_tab implementation, CBC encryption).
Definition: bearssl_block.h:2224
const br_block_cbcenc_class * vtable
Definition: bearssl_block.h:2404
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:1913
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_cbcenc_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:1587
br_aes_small_cbcenc_keys c_small
Definition: bearssl_block.h:2161
const br_block_ctrcbc_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:1418
Aggregate structure large enough to be used as context for subkeys (CBC decryption) for all DES imple...
Definition: bearssl_block.h:2413
br_aes_x86ni_cbcenc_keys c_x86ni
Definition: bearssl_block.h:2164
br_aes_x86ni_ctrcbc_keys c_x86ni
Definition: bearssl_block.h:2206
const br_block_cbcenc_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:1150
Context for AES subkeys (aes_x86ni implementation, CTR encryption and decryption + CBC-MAC)...
Definition: bearssl_block.h:1638
const br_block_ctrcbc_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:1197
unsigned block_size
Size of individual blocks (in bytes).
Definition: bearssl_block.h:584
Context for AES subkeys (aes_x86ni implementation, CTR encryption and decryption).
Definition: bearssl_block.h:1620
Context for AES subkeys (aes_ct64 implementation, CBC encryption).
Definition: bearssl_block.h:1369
size_t context_size
Size (in bytes) of the context structure appropriate for containing subkeys.
Definition: bearssl_block.h:512
Context for AES subkeys (aes_pwr8 implementation, CBC encryption).
Definition: bearssl_block.h:1876
const br_block_cbcdec_class * vtable
Pointer to vtable for this context.
Definition: bearssl_block.h:1604