New
[libgcrypt.git] / src / g10lib.h
1 /* g10lib.h -  internal defintions for libgcrypt
2  *      Copyright (C) 1998,1999,2000 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 easily distinguish between internal and external
6  * usage of gcrypt.h
7  *
8  * This file is part of GnuPG.
9  *
10  * GnuPG is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation; either version 2 of the License, or
13  * (at your option) any later version.
14  *
15  * GnuPG 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 General Public License for more details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * 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 /* because libgcrypt is distributed along with GnuPG, we need some way
32  * to do a sanity check.  If this macro is defined, we are inside of
33  * libgcrypt */
34 #define _GCRYPT_IN_LIBGCRYPT 1
35
36 #include <gcrypt.h>
37 #include "types.h"
38 #include "../jnlib/mischelp.h"
39
40 #ifdef G10_I18N_H
41   #error i18n should not be included here
42 #endif
43
44 #define _(a)  g10_gettext(a)
45 #define N_(a) (a)
46
47 /*-- gcrypt/global.c --*/
48 int set_lasterr( int ec );
49
50 void *g10_malloc( size_t n );
51 void *g10_calloc( size_t n, size_t m );
52 void *g10_malloc_secure( size_t n );
53 void *g10_calloc_secure( size_t n, size_t m );
54 void *g10_realloc( void *a, size_t n );
55 char *g10_strdup( const char * a);
56 void *g10_xmalloc( size_t n );
57 void *g10_xcalloc( size_t n, size_t m );
58 void *g10_xmalloc_secure( size_t n );
59 void *g10_xcalloc_secure( size_t n, size_t m );
60 void *g10_xrealloc( void *a, size_t n );
61 char *g10_xstrdup( const char * a);
62 void  g10_free( void *p );
63 int   g10_is_secure( const void *a );
64 void  g10_check_heap( const void *a );
65
66 int g10_get_debug_flag( unsigned int mask );
67
68
69 /*-- gcrypt/misc.c --*/
70
71 #ifdef JNLIB_GCC_M_FUNCTION
72 void g10_bug( const char *file, int line, const char *func ) JNLIB_GCC_A_NR;
73 #else
74 void g10_bug( const char *file, int line );
75 #endif
76
77 const char *g10_gettext( const char *key );
78 void g10_fatal_error(int rc, const char *text ) JNLIB_GCC_A_NR;
79 void g10_log( int level, const char *fmt, ... ) JNLIB_GCC_A_PRINTF(2,3);
80 void g10_log_bug( const char *fmt, ... )   JNLIB_GCC_A_NR_PRINTF(1,2);
81 void g10_log_fatal( const char *fmt, ... ) JNLIB_GCC_A_NR_PRINTF(1,2);
82 void g10_log_error( const char *fmt, ... ) JNLIB_GCC_A_PRINTF(1,2);
83 void g10_log_info( const char *fmt, ... )  JNLIB_GCC_A_PRINTF(1,2);
84 void g10_log_debug( const char *fmt, ... ) JNLIB_GCC_A_PRINTF(1,2);
85
86 void g10_set_log_verbosity( int level );
87 int g10_log_verbosity( int level );
88
89 #ifdef JNLIB_GCC_M_FUNCTION
90   #define BUG() g10_bug( __FILE__ , __LINE__, __FUNCTION__ )
91 #else
92   #define BUG() g10_bug( __FILE__ , __LINE__ )
93 #endif
94
95 #define log_hexdump g10_log_hexdump
96 #define log_bug     g10_log_bug
97 #define log_fatal   g10_log_fatal
98 #define log_error   g10_log_error
99 #define log_info    g10_log_info
100 #define log_debug   g10_log_debug
101
102
103
104
105 /*-- cipher/pubkey.c --*/
106
107 #ifndef DID_MPI_TYPEDEF
108  typedef struct gcry_mpi * MPI;
109  #define DID_MPI_TYPEDEF
110 #endif
111
112 #ifndef mpi_powm
113    #define mpi_powm(w,b,e,m)   gcry_mpi_powm( (w), (b), (e), (m) )
114 #endif
115
116 int string_to_pubkey_algo( const char *string );
117 const char * pubkey_algo_to_string( int algo );
118 unsigned pubkey_nbits( int algo, MPI *pkey );
119
120
121
122 /*-- primegen.c --*/
123 MPI generate_secret_prime( unsigned nbits );
124 MPI generate_public_prime( unsigned nbits );
125 MPI generate_elg_prime( int mode, unsigned pbits, unsigned qbits,
126                                            MPI g, MPI **factors );
127
128
129
130
131 /* replacements of missing functions */
132 #ifndef HAVE_MEMICMP
133 int memicmp( const char *a, const char *b, size_t n );
134 #endif
135 #ifndef HAVE_STPCPY
136 char *stpcpy(char *a,const char *b);
137 #endif
138 #ifndef HAVE_STRLWR
139 char *strlwr(char *a);
140 #endif
141 #ifndef HAVE_STRTOUL
142   #define strtoul(a,b,c)  ((unsigned long)strtol((a),(b),(c)))
143 #endif
144 #ifndef HAVE_MEMMOVE
145   #define memmove(d, s, n) bcopy((s), (d), (n))
146 #endif
147 #ifndef HAVE_STRICMP
148   #define stricmp(a,b)   strcasecmp( (a), (b) )
149 #endif
150 #ifndef HAVE_ATEXIT
151   #define atexit(a)    (on_exit((a),0))
152 #endif
153 #ifndef HAVE_RAISE
154   #define raise(a) kill(getpid(), (a))
155 #endif
156
157 /* some handy macros */
158 #ifndef STR
159   #define STR(v) #v
160 #endif
161 #define STR2(v) STR(v)
162 #define DIM(v) (sizeof(v)/sizeof((v)[0]))
163 #define DIMof(type,member)   DIM(((type *)0)->member)
164
165
166 #endif /* G10LIB_H */