* basic.c (check_digests): Add CRC.
[libgcrypt.git] / src / g10lib.h
1 /* g10lib.h -  internal defintions for libgcrypt
2  * Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
3  *
4  * This header is to be used inside of libgcrypt in place of gcrypt.h.
5  * This way we can better distinguish between internal and external
6  * usage of gcrypt.h
7  *
8  * This file is part of Libgcrypt.
9  *
10  * Libgcrypt is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU Lesser general Public License as
12  * published by the Free Software Foundation; either version 2.1 of
13  * the License, or (at your option) any later version.
14  *
15  * Libgcrypt is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License for more details.
19  *
20  * You should have received a copy of the GNU Lesser General Public
21  * License along with this program; if not, write to the Free Software
22  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
23  */
24
25 #ifndef G10LIB_H
26 #define G10LIB_H 1
27
28 #ifdef _GCRYPT_H
29 #error  gcrypt.h already included
30 #endif
31
32 #ifndef _GCRYPT_IN_LIBGCRYPT 
33 #error something is wrong with config.h
34 #endif
35
36 #include <gcrypt.h>
37 #include "types.h"
38
39 #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 5 )
40 # define JNLIB_GCC_M_FUNCTION 1
41 # define JNLIB_GCC_A_NR              __attribute__ ((noreturn))
42 # define JNLIB_GCC_A_PRINTF( f, a )  __attribute__ ((format (printf,f,a)))
43 # define JNLIB_GCC_A_NR_PRINTF( f, a ) \
44                             __attribute__ ((noreturn, format (printf,f,a)))
45 # define GCC_ATTR_NORETURN  __attribute__ ((__noreturn__))
46 #else
47 # define JNLIB_GCC_A_NR
48 # define JNLIB_GCC_A_PRINTF( f, a )
49 # define JNLIB_GCC_A_NR_PRINTF( f, a )
50 # define GCC_ATTR_NORETURN 
51 #endif
52
53 #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96 )
54 # define GCC_ATTR_PURE  __attribute__ ((__pure__))
55 #else
56 # define GCC_ATTR_PURE
57 #endif
58
59 /* (The malloc attribute might be defined prior to 3.2 - I am just not sure) */
60 #if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2 )
61 # define GCC_ATTR_MALLOC    __attribute__ ((__malloc__))
62 #else
63 # define GCC_ATTR_MALLOC
64 #endif
65
66 #ifdef G10_I18N_H
67 #error i18n should not be included here
68 #endif
69
70 #define _(a)  _gcry_gettext(a)
71 #define N_(a) (a)
72
73 /*-- gcrypt/global.c --*/
74 #define set_lasterr(a) _gcry_set_lasterr ((a))
75 int _gcry_set_lasterr( int ec );
76
77 void  _gcry_check_heap( const void *a );
78
79 int _gcry_get_debug_flag( unsigned int mask );
80
81
82 /*-- gcrypt/misc.c --*/
83
84 #ifdef JNLIB_GCC_M_FUNCTION
85 void _gcry_bug (const char *file, int line,
86                 const char *func) GCC_ATTR_NORETURN;
87 #else
88 void _gcry_bug (const char *file, int line);
89 #endif
90
91 const char *_gcry_gettext (const char *key);
92 void _gcry_fatal_error(int rc, const char *text ) JNLIB_GCC_A_NR;
93 void _gcry_log( int level, const char *fmt, ... ) JNLIB_GCC_A_PRINTF(2,3);
94 void _gcry_log_bug( const char *fmt, ... )   JNLIB_GCC_A_NR_PRINTF(1,2);
95 void _gcry_log_fatal( const char *fmt, ... ) JNLIB_GCC_A_NR_PRINTF(1,2);
96 void _gcry_log_error( const char *fmt, ... ) JNLIB_GCC_A_PRINTF(1,2);
97 void _gcry_log_info( const char *fmt, ... )  JNLIB_GCC_A_PRINTF(1,2);
98 void _gcry_log_debug( const char *fmt, ... ) JNLIB_GCC_A_PRINTF(1,2);
99 void _gcry_log_printf ( const char *fmt, ... ) JNLIB_GCC_A_PRINTF(1,2);
100
101 void _gcry_set_log_verbosity( int level );
102 int _gcry_log_verbosity( int level );
103
104 #ifdef JNLIB_GCC_M_FUNCTION
105   #define BUG() _gcry_bug( __FILE__ , __LINE__, __FUNCTION__ )
106 #else
107   #define BUG() _gcry_bug( __FILE__ , __LINE__ )
108 #endif
109
110 #define log_hexdump _gcry_log_hexdump
111 #define log_bug     _gcry_log_bug
112 #define log_fatal   _gcry_log_fatal
113 #define log_error   _gcry_log_error
114 #define log_info    _gcry_log_info
115 #define log_debug   _gcry_log_debug
116 #define log_printf  _gcry_log_printf
117
118
119
120
121 /*-- cipher/pubkey.c --*/
122
123 #ifndef DID_MPI_TYPEDEF
124  typedef struct gcry_mpi * MPI;
125  #define DID_MPI_TYPEDEF
126 #endif
127
128 #ifndef mpi_powm
129    #define mpi_powm(w,b,e,m)   gcry_mpi_powm( (w), (b), (e), (m) )
130 #endif
131
132 int string_to_pubkey_algo( const char *string );
133 const char * pubkey_algo_to_string( int algo );
134 unsigned pubkey_nbits( int algo, MPI *pkey );
135
136
137
138 /*-- primegen.c --*/
139 MPI _gcry_generate_secret_prime( unsigned nbits );
140 MPI _gcry_generate_public_prime( unsigned nbits );
141 MPI _gcry_generate_elg_prime( int mode, unsigned pbits, unsigned qbits,
142                                            MPI g, MPI **factors );
143
144
145
146
147 /* replacements of missing functions (missing-string.c)*/
148 #ifndef HAVE_STPCPY
149 char *stpcpy (char *a, const char *b);
150 #endif
151 #ifndef HAVE_STRSEP
152 char *strsep (char **stringp, const char *delim);
153 #endif
154 #ifndef HAVE_STRLWR
155 char *strlwr (char *a);
156 #endif
157 #ifndef HAVE_STRCASECMP
158 int strcasecmp (const char *a, const char *b) GCC_ATTR_PURE;
159 #endif
160
161
162 /* macros used to rename missing functions */
163 #ifndef HAVE_STRTOUL
164   #define strtoul(a,b,c)  ((unsigned long)strtol((a),(b),(c)))
165 #endif
166 #ifndef HAVE_MEMMOVE
167   #define memmove(d, s, n) bcopy((s), (d), (n))
168 #endif
169 #ifndef HAVE_STRICMP
170   #define stricmp(a,b)   strcasecmp( (a), (b) )
171 #endif
172 #ifndef HAVE_ATEXIT
173   #define atexit(a)    (on_exit((a),0))
174 #endif
175 #ifndef HAVE_RAISE
176   #define raise(a) kill(getpid(), (a))
177 #endif
178
179
180 /* some handy macros */
181 #ifndef STR
182   #define STR(v) #v
183 #endif
184 #define STR2(v) STR(v)
185 #define DIM(v) (sizeof(v)/sizeof((v)[0]))
186 #define DIMof(type,member)   DIM(((type *)0)->member)
187
188
189 #endif /* G10LIB_H */