Skip to content

Commit 92d8a6c

Browse files
committed
Fix issue #229
Static linking of _SQLite3MC_ and _libsodium_ in the same application causes name clashes for _libsodium 1.0.19+_. _SQLite3MC_ now adds name prefixes for the affected functions and structures.
1 parent 07a1a60 commit 92d8a6c

File tree

1 file changed

+58
-1
lines changed

1 file changed

+58
-1
lines changed

src/aegis/libaegis.c

Lines changed: 58 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/*
22
** Name: libaegis.c
33
** Purpose: Amalgamation of the AEGIS library
4-
** Copyright: (c) 2024-2025 Ulrich Telle
4+
** Copyright: (c) 2024-2026 Ulrich Telle
55
** SPDX-License-Identifier: MIT
66
*/
77

@@ -16,6 +16,63 @@
1616
#define AEGIS_PRIVATE static
1717
#endif
1818

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+
1976
#include "common/cpu.h"
2077

2178
/* AEGIS common functions */

0 commit comments

Comments
 (0)