From 4fd20960e0ed6712fa89e119bd8c639e303655e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20M=C3=B6ller?= <nisse@lysator.liu.se> Date: Sat, 12 Apr 2003 17:42:20 +0200 Subject: [PATCH] * New name mangling, to reduce the risk of link collisions. All functions (except memxor) now use a nettle_ or _nettle prefix when seen by the linker. For most functions, the header file that declares a function also use #define to provide a shorter more readable name without the prefix. Rev: src/nettle/aes-internal.h:1.9 Rev: src/nettle/aes.h:1.6 Rev: src/nettle/arcfour.h:1.4 Rev: src/nettle/base16.h:1.2 Rev: src/nettle/base64.h:1.12 Rev: src/nettle/blowfish.h:1.8 Rev: src/nettle/cast128.h:1.4 Rev: src/nettle/cbc.h:1.4 Rev: src/nettle/des.h:1.8 Rev: src/nettle/dsa.h:1.7 Rev: src/nettle/hmac.h:1.5 Rev: src/nettle/knuth-lfib.h:1.2 Rev: src/nettle/md5-compat.h:1.2 Rev: src/nettle/md5.h:1.6 Rev: src/nettle/pgp.h:1.2 Rev: src/nettle/pkcs1.h:1.2 Rev: src/nettle/rsa-compat.h:1.3 Rev: src/nettle/rsa.h:1.22 Rev: src/nettle/serpent.h:1.6 Rev: src/nettle/sexp.h:1.15 Rev: src/nettle/sha.h:1.3 Rev: src/nettle/twofish.h:1.5 Rev: src/nettle/yarrow.h:1.10 --- aes-internal.h | 20 +++++++++++++------- aes.h | 6 ++++++ arcfour.h | 5 +++++ base16.h | 7 +++++++ base64.h | 11 +++++++++++ blowfish.h | 5 +++++ cast128.h | 5 +++++ cbc.h | 4 ++++ des.h | 15 ++++++++------- dsa.h | 16 ++++++++++++++++ hmac.h | 14 +++++++++++++- knuth-lfib.h | 6 ++++++ md5-compat.h | 5 +++++ md5.h | 5 +++++ pgp.h | 15 +++++++++++++++ pkcs1.h | 7 +++++++ rsa-compat.h | 8 ++++++++ rsa.h | 25 +++++++++++++++++++++++++ serpent.h | 5 +++++ sexp.h | 17 +++++++++++++++++ sha.h | 8 ++++++++ twofish.h | 5 +++++ yarrow.h | 11 +++++++++++ 23 files changed, 210 insertions(+), 15 deletions(-) diff --git a/aes-internal.h b/aes-internal.h index e79c8b9b..2b7f06f7 100644 --- a/aes-internal.h +++ b/aes-internal.h @@ -39,6 +39,19 @@ # define AES_TABLE_SIZE 4 #endif +/* Name mangling */ +#define _aes_crypt _nettle_aes_crypt + +/* Assembler code using the table should get link errors if linked + * against a small table. */ +#if AES_SMALL +# define _aes_encrypt_table _nettle_aes_encrypt_table_small +# define _aes_decrypt_table _nettle_aes_decrypt_table_small +#else +# define _aes_encrypt_table _nettle_aes_encrypt_table +# define _aes_decrypt_table _nettle_aes_decrypt_table +#endif + struct aes_table { uint8_t sbox[0x100]; @@ -70,13 +83,6 @@ _aes_crypt(const struct aes_ctx *ctx, ((box)[(((x) >> 16) & 0xff)] << 16) | \ ((box)[(((x) >> 24) & 0xff)] << 24)) -/* Assembler code using the table should get link errors when compiled - * against a small table. */ -#if AES_SMALL -# define _aes_encrypt_table _aes_encrypt_table_small -# define _aes_decrypt_table _aes_decrypt_table_small -#endif - /* Internal tables */ extern const struct aes_table _aes_encrypt_table; extern const struct aes_table _aes_decrypt_table; diff --git a/aes.h b/aes.h index b505b0e7..87464cf4 100644 --- a/aes.h +++ b/aes.h @@ -28,6 +28,12 @@ #include <inttypes.h> +/* Name mangling */ +#define aes_set_encrypt_key nettle_aes_set_encrypt_key +#define aes_set_decrypt_key nettle_aes_set_decrypt_key +#define aes_encrypt nettle_aes_encrypt +#define aes_decrypt nettle_aes_decrypt + #define AES_BLOCK_SIZE 16 /* Variable key size between 128 and 256 bits. But the only valid diff --git a/arcfour.h b/arcfour.h index 54aee479..9499e981 100644 --- a/arcfour.h +++ b/arcfour.h @@ -28,6 +28,11 @@ #include <inttypes.h> +/* Name mangling */ +#define arcfour_set_key nettle_arcfour_set_key +#define arcfour_crypt nettle_arcfour_crypt +#define arcfour_stream nettle_arcfour_stream + /* Minimum and maximum keysizes, and a reasonable default. In * octets.*/ #define ARCFOUR_MIN_KEY_SIZE 1 diff --git a/base16.h b/base16.h index b00bc869..2701725b 100644 --- a/base16.h +++ b/base16.h @@ -29,6 +29,13 @@ #include <inttypes.h> +/* Name mangling */ +#define base16_encode_single nettle_base16_encode_single +#define base16_encode_update nettle_base16_encode_update +#define base16_decode_init nettle_base16_decode_init +#define base16_decode_single nettle_base16_decode_single +#define base16_decode_update nettle_base16_decode_update +#define base16_decode_final nettle_base16_decode_final /* Base16 encoding */ diff --git a/base64.h b/base64.h index 9532e54f..1e1c7ed5 100644 --- a/base64.h +++ b/base64.h @@ -28,6 +28,17 @@ #include <inttypes.h> +/* Name mangling */ +#define base64_encode_init nettle_base64_encode_init +#define base64_encode_single nettle_base64_encode_single +#define base64_encode_update nettle_base64_encode_update +#define base64_encode_final nettle_base64_encode_final +#define base64_encode_raw nettle_base64_encode_raw +#define base64_encode_group nettle_base64_encode_group +#define base64_decode_init nettle_base64_decode_init +#define base64_decode_single nettle_base64_decode_single +#define base64_decode_update nettle_base64_decode_update +#define base64_decode_final nettle_base64_decode_final #define BASE64_BINARY_BLOCK_SIZE 3 #define BASE64_TEXT_BLOCK_SIZE 4 diff --git a/blowfish.h b/blowfish.h index 72934da5..7f7ddcd6 100644 --- a/blowfish.h +++ b/blowfish.h @@ -28,6 +28,11 @@ #include <inttypes.h> +/* Name mangling */ +#define blowfish_set_key nettle_blowfish_set_key +#define blowfish_encrypt nettle_blowfish_encrypt +#define blowfish_decrypt nettle_blowfish_decrypt + #define BLOWFISH_BLOCK_SIZE 8 /* Variable key size between 64 and 448 bits. */ diff --git a/cast128.h b/cast128.h index 0d1e044e..39102cbc 100644 --- a/cast128.h +++ b/cast128.h @@ -34,6 +34,11 @@ #include <inttypes.h> +/* Name mangling */ +#define cast128_set_key nettle_cast128_set_key +#define cast128_encrypt nettle_cast128_encrypt +#define cast128_decrypt nettle_cast128_decrypt + #define CAST128_BLOCK_SIZE 8 /* Variable key size between 40 and 128. */ diff --git a/cbc.h b/cbc.h index dba52fdd..9428aa55 100644 --- a/cbc.h +++ b/cbc.h @@ -28,6 +28,10 @@ #include <inttypes.h> +/* Name mangling */ +#define cbc_encrypt nettle_cbc_encrypt +#define cbc_decrypt nettle_cbc_decrypt + /* Uses a void * for cipher contexts. */ void diff --git a/des.h b/des.h index 9f674736..25168d11 100644 --- a/des.h +++ b/des.h @@ -35,15 +35,16 @@ #ifndef NETTLE_DES_H_INCLUDED #define NETTLE_DES_H_INCLUDED -/* Namespace mangling. - * - * FIXME: In the long run, all nettle symbols should probably have the - * prefix nettle_, with the appropriate header file defining - * shorthands. */ +#include <inttypes.h> +/* Namespace mangling */ #define des_set_key nettle_des_set_key - -#include <inttypes.h> +#define des_encrypt nettle_des_encrypt +#define des_decrypt nettle_des_decrypt +#define des_fix_parity nettle_des_fix_parity +#define des3_set_key nettle_des3_set_key +#define des3_encrypt nettle_des3_encrypt +#define des3_decrypt nettle_des3_decrypt #define DES_KEY_SIZE 8 #define DES_BLOCK_SIZE 8 diff --git a/dsa.h b/dsa.h index 5214c36a..15de1e1a 100644 --- a/dsa.h +++ b/dsa.h @@ -34,6 +34,22 @@ /* For nettle_random_func */ #include "nettle-meta.h" +/* Name mangling */ +#define dsa_public_key_init nettle_dsa_public_key_init +#define dsa_public_key_clear nettle_dsa_public_key_clear +#define dsa_private_key_init nettle_dsa_private_key_init +#define dsa_private_key_clear nettle_dsa_private_key_clear +#define dsa_signature_init nettle_dsa_signature_init +#define dsa_signature_clear nettle_dsa_signature_clear +#define dsa_sign nettle_dsa_sign +#define dsa_verify nettle_dsa_verify +#define dsa_sign_digest nettle_dsa_sign_digest +#define dsa_verify_digest nettle_dsa_verify_digest +#define dsa_generate_keypair nettle_dsa_generate_keypair +#define dsa_signature_from_sexp nettle_dsa_signature_from_sexp +#define dsa_keypair_from_sexp_alist nettle_dsa_keypair_from_sexp_alist +#define dsa_keypair_from_sexp nettle_dsa_keypair_from_sexp + #define DSA_MIN_P_BITS 512 #define DSA_Q_OCTETS 20 #define DSA_Q_BITS 160 diff --git a/hmac.h b/hmac.h index cc425ae4..a89fb2ee 100644 --- a/hmac.h +++ b/hmac.h @@ -31,7 +31,19 @@ #include "md5.h" #include "sha.h" -#include <inttypes.h> +/* Namespace mangling */ +#define hmac_set_key nettle_hmac_set_key +#define hmac_update nettle_hmac_update +#define hmac_digest nettle_hmac_digest +#define hmac_md5_set_key nettle_hmac_md5_set_key +#define hmac_md5_update nettle_hmac_md5_update +#define hmac_md5_digest nettle_hmac_md5_digest +#define hmac_sha1_set_key nettle_hmac_sha1_set_key +#define hmac_sha1_update nettle_hmac_sha1_update +#define hmac_sha1_digest nettle_hmac_sha1_digest +#define hmac_sha256_set_key nettle_hmac_sha256_set_key +#define hmac_sha256_update nettle_hmac_sha256_update +#define hmac_sha256_digest nettle_hmac_sha256_digest void hmac_set_key(void *outer, void *inner, void *state, diff --git a/knuth-lfib.h b/knuth-lfib.h index 8ca45a71..c8a1f93a 100644 --- a/knuth-lfib.h +++ b/knuth-lfib.h @@ -33,6 +33,12 @@ #include <inttypes.h> +/* Namespace mangling */ +#define knuth_lfib_init nettle_knuth_lfib_init +#define knuth_lfib_get nettle_knuth_lfib_get +#define knuth_lfib_get_array nettle_knuth_lfib_get_array +#define knuth_lfib_random nettle_knuth_lfib_random + #define _KNUTH_LFIB_KK 100 struct knuth_lfib_ctx diff --git a/md5-compat.h b/md5-compat.h index bb2e768e..32925d09 100644 --- a/md5-compat.h +++ b/md5-compat.h @@ -28,6 +28,11 @@ #include "md5.h" +/* Name mangling */ +#define MD5Init nettle_MD5Init +#define MD5Update nettle_MD5Update +#define MD5Final nettle_MD5Final + typedef struct md5_ctx MD5_CTX; void MD5Init(MD5_CTX *ctx); diff --git a/md5.h b/md5.h index 0859cb3e..95e42c62 100644 --- a/md5.h +++ b/md5.h @@ -28,6 +28,11 @@ #include <inttypes.h> +/* Name mangling */ +#define md5_init nettle_md5_init +#define md5_update nettle_md5_update +#define md5_digest nettle_md5_digest + #define MD5_DIGEST_SIZE 16 #define MD5_DATA_SIZE 64 diff --git a/pgp.h b/pgp.h index b13bafe4..54a02406 100644 --- a/pgp.h +++ b/pgp.h @@ -28,6 +28,21 @@ #include "bignum.h" +/* Name mangling */ +#define pgp_put_uint32 nettle_pgp_put_uint32 +#define pgp_put_uint16 nettle_pgp_put_uint16 +#define pgp_put_mpi nettle_pgp_put_mpi +#define pgp_put_string nettle_pgp_put_string +#define pgp_put_length nettle_pgp_put_length +#define pgp_put_header nettle_pgp_put_header +#define pgp_put_header_length nettle_pgp_put_header_length +#define pgp_sub_packet_start nettle_pgp_sub_packet_start +#define pgp_put_sub_packet nettle_pgp_put_sub_packet +#define pgp_sub_packet_end nettle_pgp_sub_packet_end +#define pgp_put_userid nettle_pgp_put_userid +#define pgp_crc24 nettle_pgp_crc24 +#define pgp_armor nettle_pgp_armor + struct nettle_buffer; int diff --git a/pkcs1.h b/pkcs1.h index 3671f801..0db9121f 100644 --- a/pkcs1.h +++ b/pkcs1.h @@ -29,6 +29,13 @@ #include <inttypes.h> #include <gmp.h> +/* Name mangling */ +#define pkcs1_signature_prefix nettle_pkcs1_signature_prefix +#define pkcs1_rsa_md5_encode nettle_pkcs1_rsa_md5_encode +#define pkcs1_rsa_md5_encode_digest nettle_pkcs1_rsa_md5_encode_digest +#define pkcs1_rsa_sha1_encode nettle_pkcs1_rsa_sha1_encode +#define pkcs1_rsa_sha1_encode_digest nettle_pkcs1_rsa_sha1_encode_digest + struct md5_ctx; struct sha1_ctx; diff --git a/rsa-compat.h b/rsa-compat.h index ad5c2757..7b40f3cf 100644 --- a/rsa-compat.h +++ b/rsa-compat.h @@ -28,6 +28,14 @@ #include "rsa.h" +/* Name mangling */ +#define R_SignInit nettle_R_SignInit +#define R_SignUpdate nettle_R_SignUpdate +#define R_SignFinal nettle_R_SignFinal +#define R_VerifyInit nettle_R_VerifyInit +#define R_VerifyUpdate nettle_R_VerifyUpdate +#define R_VerifyFinal nettle_R_VerifyFinal + /* 256 octets or 2048 bits */ #define MAX_RSA_MODULUS_LEN 256 diff --git a/rsa.h b/rsa.h index dd500557..a924fb2b 100644 --- a/rsa.h +++ b/rsa.h @@ -35,6 +35,31 @@ /* For nettle_random_func */ #include "nettle-meta.h" +/* Name mangling */ +#define rsa_public_key_init nettle_rsa_public_key_init +#define rsa_public_key_clear nettle_rsa_public_key_clear +#define rsa_public_key_prepare nettle_rsa_public_key_prepare +#define rsa_private_key_init nettle_rsa_private_key_init +#define rsa_private_key_clear nettle_rsa_private_key_clear +#define rsa_private_key_prepare nettle_rsa_private_key_prepare +#define rsa_md5_sign nettle_rsa_md5_sign +#define rsa_md5_verify nettle_rsa_md5_verify +#define rsa_sha1_sign nettle_rsa_sha1_sign +#define rsa_sha1_verify nettle_rsa_sha1_verify +#define rsa_md5_sign_digest nettle_rsa_md5_sign_digest +#define rsa_md5_verify_digest nettle_rsa_md5_verify_digest +#define rsa_sha1_sign_digest nettle_rsa_sha1_sign_digest +#define rsa_sha1_verify_digest nettle_rsa_sha1_verify_digest +#define rsa_encrypt nettle_rsa_encrypt +#define rsa_decrypt nettle_rsa_decrypt +#define rsa_compute_root nettle_rsa_compute_root +#define rsa_generate_keypair nettle_rsa_generate_keypair +#define rsa_keypair_to_sexp nettle_rsa_keypair_to_sexp +#define rsa_keypair_from_sexp_alist nettle_rsa_keypair_from_sexp_alist +#define rsa_keypair_from_sexp nettle_rsa_keypair_from_sexp +#define rsa_keypair_to_openpgp nettle_rsa_keypair_to_openpgp +#define _rsa_verify _nettle_rsa_verify +#define _rsa_check_size _nettle_rsa_check_size /* For PKCS#1 to make sense, the size of the modulo, in octets, must * be at least 11 + the length of the DER-encoded Digest Info. diff --git a/serpent.h b/serpent.h index ae8afeb7..79cad0ef 100644 --- a/serpent.h +++ b/serpent.h @@ -33,6 +33,11 @@ #include <inttypes.h> +/* Name mangling */ +#define serpent_set_key nettle_serpent_set_key +#define serpent_encrypt nettle_serpent_encrypt +#define serpent_decrypt nettle_serpent_decrypt + #define SERPENT_BLOCK_SIZE 16 /* Other key lengths are possible, but the design of Serpent makes diff --git a/sexp.h b/sexp.h index 2b72a2be..181cc576 100644 --- a/sexp.h +++ b/sexp.h @@ -29,6 +29,23 @@ #include <inttypes.h> #include <stdarg.h> +/* Name mangling */ +#define sexp_iterator_first nettle_sexp_iterator_first +#define sexp_transport_iterator_first nettle_sexp_transport_iterator_first +#define sexp_iterator_next nettle_sexp_iterator_next +#define sexp_iterator_enter_list nettle_sexp_iterator_enter_list +#define sexp_iterator_exit_list nettle_sexp_iterator_exit_list +#define sexp_iterator_subexpr nettle_sexp_iterator_subexpr +#define sexp_iterator_get_uint32 nettle_sexp_iterator_get_uint32 +#define sexp_iterator_check_type nettle_sexp_iterator_check_type +#define sexp_iterator_check_types nettle_sexp_iterator_check_types +#define sexp_iterator_assoc nettle_sexp_iterator_assoc +#define sexp_format nettle_sexp_format +#define sexp_vformat nettle_sexp_vformat +#define sexp_transport_format nettle_sexp_transport_format +#define sexp_transport_vformat nettle_sexp_transport_vformat +#define sexp_token_chars nettle_sexp_token_chars + enum sexp_type { SEXP_ATOM, SEXP_LIST, SEXP_END }; diff --git a/sha.h b/sha.h index f9eb69bd..134de1d5 100644 --- a/sha.h +++ b/sha.h @@ -28,6 +28,14 @@ #include <inttypes.h> +/* Name mangling */ +#define sha1_init nettle_sha1_init +#define sha1_update nettle_sha1_update +#define sha1_digest nettle_sha1_digest +#define sha256_init nettle_sha256_init +#define sha256_update nettle_sha256_update +#define sha256_digest nettle_sha256_digest + /* SHA1 */ #define SHA1_DIGEST_SIZE 20 diff --git a/twofish.h b/twofish.h index a33554c5..3d007d7a 100644 --- a/twofish.h +++ b/twofish.h @@ -34,6 +34,11 @@ #include <inttypes.h> +/* Name mangling */ +#define twofish_set_key nettle_twofish_set_key +#define twofish_encrypt nettle_twofish_encrypt +#define twofish_decrypt nettle_twofish_decrypt + #define TWOFISH_BLOCK_SIZE 16 /* Variable key size between 128 and 256 bits. But the only valid diff --git a/yarrow.h b/yarrow.h index 802542db..a83e53d3 100644 --- a/yarrow.h +++ b/yarrow.h @@ -29,6 +29,17 @@ #include "aes.h" #include "sha.h" +/* Name mangling */ +#define yarrow256_init nettle_yarrow256_init +#define yarrow256_seed nettle_yarrow256_seed +#define yarrow256_update nettle_yarrow256_update +#define yarrow256_random nettle_yarrow256_random +#define yarrow256_is_seeded nettle_yarrow256_is_seeded +#define yarrow256_needed_sources nettle_yarrow256_needed_sources +#define yarrow256_force_reseed nettle_yarrow256_force_reseed +#define yarrow_key_event_init nettle_yarrow_key_event_init +#define yarrow_key_event_estimate nettle_yarrow_key_event_estimate + enum yarrow_pool_id { YARROW_FAST = 0, YARROW_SLOW = 1 }; struct yarrow_source -- GitLab