|
1 | 1 | /* |
2 | 2 | ** Name: libaegis.c |
3 | 3 | ** Purpose: Amalgamation of the AEGIS library |
4 | | -** Copyright: (c) 2024-2025 Ulrich Telle |
| 4 | +** Copyright: (c) 2024-2026 Ulrich Telle |
5 | 5 | ** SPDX-License-Identifier: MIT |
6 | 6 | */ |
7 | 7 |
|
|
16 | 16 | #define AEGIS_PRIVATE static |
17 | 17 | #endif |
18 | 18 |
|
| 19 | +/* Namespacing to avoid conflicts with libsodium 1.0.21+ */ |
| 20 | + |
| 21 | +/* Base Implementation Structs */ |
| 22 | +#define aegis128l_implementation sqlite3mc_aegis128l_implementation |
| 23 | +#define aegis128lx2_implementation sqlite3mc_aegis128lx2_implementation |
| 24 | +#define aegis128lx4_implementation sqlite3mc_aegis128lx4_implementation |
| 25 | +#define aegis256_implementation sqlite3mc_aegis256_implementation |
| 26 | +#define aegis256x2_implementation sqlite3mc_aegis256x2_implementation |
| 27 | +#define aegis256x4_implementation sqlite3mc_aegis256x4_implementation |
| 28 | + |
| 29 | +/* Variants without hardware acceleration */ |
| 30 | +#define aegis128l_soft_implementation sqlite3mc_aegis128l_soft_implementation |
| 31 | +#define aegis128x2_soft_implementation sqlite3mc_aegis128x2_soft_implementation |
| 32 | +#define aegis128x4_soft_implementation sqlite3mc_aegis128x4_soft_implementation |
| 33 | +#define aegis256_soft_implementation sqlite3mc_aegis256_soft_implementation |
| 34 | +#define aegis256x2_soft_implementation sqlite3mc_aegis256x2_soft_implementation |
| 35 | +#define aegis256x4_soft_implementation sqlite3mc_aegis256x4_soft_implementation |
| 36 | + |
| 37 | +#define softaes_block_encrypt sqlite3mc_softaes_block_encrypt |
| 38 | + |
| 39 | +/* Variants with support for AES and AVX instruction sets */ |
| 40 | +#define aegis128l_aesni_implementation sqlite3mc_aegis128l_aesni_implementation |
| 41 | +#define aegis128x2_aesni_implementation sqlite3mc_aegis128x2_aesni_implementation |
| 42 | +#define aegis128x4_aesni_implementation sqlite3mc_aegis128x4_aesni_implementation |
| 43 | +#define aegis256_aesni_implementation sqlite3mc_aegis256_aesni_implementation |
| 44 | +#define aegis256x2_aesni_implementation sqlite3mc_aegis256x2_aesni_implementation |
| 45 | +#define aegis256x4_aesni_implementation sqlite3mc_aegis256x4_aesni_implementation |
| 46 | + |
| 47 | +/* Variants with support for VAES and AVX2 instruction sets */ |
| 48 | +#define aegis128x2_avx2_implementation sqlite3mc_aegis128x2_avx2_implementation |
| 49 | +#define aegis128x4_avx2_implementation sqlite3mc_aegis128x4_avx2_implementation |
| 50 | +#define aegis256x2_avx2_implementation sqlite3mc_aegis256x2_avx2_implementation |
| 51 | +#define aegis256x4_avx2_implementation sqlite3mc_aegis256x4_avx2_implementation |
| 52 | + |
| 53 | +/* Variants with support for AVX512F instruction sets */ |
| 54 | +#define aegis128x4_avx512_implementation sqlite3mc_aegis128x4_avx512_implementation |
| 55 | +#define aegis256x4_avx512_implementation sqlite3mc_aegis256x4_avx512_implementation |
| 56 | + |
| 57 | +/* Variants with support for AltiVec instruction sets */ |
| 58 | +#define aegis128l_altivec_implementation sqlite3mc_aegis128l_altivec_implementation |
| 59 | +#define aegis128x2_altivec_implementation sqlite3mc_aegis128x2_altivec_implementation |
| 60 | +#define aegis128x4_altivec_implementation sqlite3mc_aegis128x4_altivec_implementation |
| 61 | +#define aegis256_altivec_implementation sqlite3mc_aegis256_altivec_implementation |
| 62 | +#define aegis256x2_altivec_implementation sqlite3mc_aegis256x2_altivec_implementation |
| 63 | +#define aegis256x4_altivec_implementation sqlite3mc_aegis256x4_altivec_implementation |
| 64 | + |
| 65 | +/* Variants with support for ARM Neon instruction sets */ |
| 66 | +#define aegis128l_armcrypto_implementation sqlite3mc_aegis128l_armcrypto_implementation |
| 67 | +#define aegis128x2_armcrypto_implementation sqlite3mc_aegis128x2_armcrypto_implementation |
| 68 | +#define aegis128x4_armcrypto_implementation sqlite3mc_aegis128x4_armcrypto_implementation |
| 69 | +#define aegis256_armcrypto_implementation sqlite3mc_aegis256_armcrypto_implementation |
| 70 | +#define aegis256x2_armcrypto_implementation sqlite3mc_aegis256x2_armcrypto_implementation |
| 71 | +#define aegis256x4_armcrypto_implementation sqlite3mc_aegis256x4_armcrypto_implementation |
| 72 | + |
| 73 | +/* Internal Tables (can conflict under -flto) */ |
| 74 | +#define _aes_lut sqlite3mc_aegis_aes_lut |
| 75 | + |
19 | 76 | #include "common/cpu.h" |
20 | 77 |
|
21 | 78 | /* AEGIS common functions */ |
|
0 commit comments