summaryrefslogtreecommitdiffstats
path: root/grub-core/lib/libgcrypt/src/visibility.h
blob: 3c1e8aa897ac626b888f25cc147c6cd2625f88d7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
/* visibility.h - Set visibility attribute
 * Copyright (C) 2007  Free Software Foundation, Inc.
 *
 * This file is part of Libgcrypt.
 *
 * Libgcrypt is free software; you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation; either version 2.1 of
 * the License, or (at your option) any later version.
 *
 * Libgcrypt is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this program; if not, see <http://www.gnu.org/licenses/>.
 */

#ifndef GCRY_VISIBILITY_H
#define GCRY_VISIBILITY_H

/* Redefine all public symbols with an underscore unless we already
   use the underscore prefixed version internally.  */
#define gcry_check_version          _gcry_check_version
#define gcry_control                _gcry_control

#define gcry_set_allocation_handler _gcry_set_allocation_handler
#define gcry_set_fatalerror_handler _gcry_set_fatalerror_handler
#define gcry_set_gettext_handler    _gcry_set_gettext_handler
#define gcry_set_log_handler        _gcry_set_log_handler
#define gcry_set_outofcore_handler  _gcry_set_outofcore_handler
#define gcry_set_progress_handler   _gcry_set_progress_handler
#define gcry_err_code_from_errno    _gcry_err_code_from_errno
#define gcry_err_code_to_errno      _gcry_err_code_to_errno
#define gcry_err_make_from_errno    _gcry_err_make_from_errno
#define gcry_error_from_errno       _gcry_error_from_errno
#define gcry_strerror               _gcry_strerror
#define gcry_strsource              _gcry_strsource

#define gcry_free                   _gcry_free
#define gcry_malloc                 _gcry_malloc
#define gcry_malloc_secure          _gcry_malloc_secure
#define gcry_calloc                 _gcry_calloc
#define gcry_calloc_secure          _gcry_calloc_secure
#define gcry_realloc                _gcry_realloc
#define gcry_strdup                 _gcry_strdup
#define gcry_is_secure              _gcry_is_secure
#define gcry_xcalloc                _gcry_xcalloc
#define gcry_xcalloc_secure         _gcry_xcalloc_secure
#define gcry_xmalloc                _gcry_xmalloc
#define gcry_xmalloc_secure         _gcry_xmalloc_secure
#define gcry_xrealloc               _gcry_xrealloc
#define gcry_xstrdup                _gcry_xstrdup

#define gcry_md_algo_info           _gcry_md_algo_info
#define gcry_md_algo_name           _gcry_md_algo_name
#define gcry_md_close               _gcry_md_close
#define gcry_md_copy                _gcry_md_copy
#define gcry_md_ctl                 _gcry_md_ctl
#define gcry_md_enable              _gcry_md_enable
#define gcry_md_get                 _gcry_md_get
#define gcry_md_get_algo            _gcry_md_get_algo
#define gcry_md_get_algo_dlen       _gcry_md_get_algo_dlen
#define gcry_md_hash_buffer         _gcry_md_hash_buffer
#define gcry_md_info                _gcry_md_info
#define gcry_md_is_enabled          _gcry_md_is_enabled
#define gcry_md_is_secure           _gcry_md_is_secure
#define gcry_md_list                _gcry_md_list
#define gcry_md_map_name            _gcry_md_map_name
#define gcry_md_open                _gcry_md_open
#define gcry_md_read                _gcry_md_read
/* gcry_md_register and _gcry_md_register differ.  */
#define gcry_md_unregister          _gcry_md_unregister
#define gcry_md_reset               _gcry_md_reset
#define gcry_md_setkey              _gcry_md_setkey
#define gcry_md_write               _gcry_md_write
#define gcry_md_debug               _gcry_md_debug

#define gcry_cipher_algo_info       _gcry_cipher_algo_info
#define gcry_cipher_algo_name       _gcry_cipher_algo_name
#define gcry_cipher_close           _gcry_cipher_close
#define gcry_cipher_setkey          _gcry_cipher_setkey
#define gcry_cipher_setiv           _gcry_cipher_setiv
#define gcry_cipher_setctr          _gcry_cipher_setctr
#define gcry_cipher_ctl             _gcry_cipher_ctl
#define gcry_cipher_decrypt         _gcry_cipher_decrypt
#define gcry_cipher_encrypt         _gcry_cipher_encrypt
#define gcry_cipher_get_algo_blklen _gcry_cipher_get_algo_blklen
#define gcry_cipher_get_algo_keylen _gcry_cipher_get_algo_keylen
#define gcry_cipher_info            _gcry_cipher_info
#define gcry_cipher_list            _gcry_cipher_list
#define gcry_cipher_map_name        _gcry_cipher_map_name
#define gcry_cipher_mode_from_oid   _gcry_cipher_mode_from_oid
#define gcry_cipher_open            _gcry_cipher_open
/* gcry_cipher_register and  _gcry_cipher_register differ.  */
#define gcry_cipher_unregister      _gcry_cipher_unregister

#define gcry_pk_algo_info           _gcry_pk_algo_info
#define gcry_pk_algo_name           _gcry_pk_algo_name
#define gcry_pk_ctl                 _gcry_pk_ctl
#define gcry_pk_decrypt             _gcry_pk_decrypt
#define gcry_pk_encrypt             _gcry_pk_encrypt
#define gcry_pk_genkey              _gcry_pk_genkey
#define gcry_pk_get_keygrip         _gcry_pk_get_keygrip
#define gcry_pk_get_curve           _gcry_pk_get_curve
#define gcry_pk_get_param           _gcry_pk_get_param
#define gcry_pk_get_nbits           _gcry_pk_get_nbits
#define gcry_pk_list                _gcry_pk_list
#define gcry_pk_map_name            _gcry_pk_map_name
/* gcry_pk_register and _gcry_pk_register differ.  */
#define gcry_pk_unregister          _gcry_pk_unregister
#define gcry_pk_sign                _gcry_pk_sign
#define gcry_pk_testkey             _gcry_pk_testkey
#define gcry_pk_verify              _gcry_pk_verify

#define gcry_ac_data_new            _gcry_ac_data_new
#define gcry_ac_data_destroy        _gcry_ac_data_destroy
#define gcry_ac_data_copy           _gcry_ac_data_copy
#define gcry_ac_data_length         _gcry_ac_data_length
#define gcry_ac_data_clear          _gcry_ac_data_clear
#define gcry_ac_data_set            _gcry_ac_data_set
#define gcry_ac_data_get_name       _gcry_ac_data_get_name
#define gcry_ac_data_get_index      _gcry_ac_data_get_index
#define gcry_ac_open                _gcry_ac_open
#define gcry_ac_close               _gcry_ac_close
#define gcry_ac_key_init            _gcry_ac_key_init
#define gcry_ac_key_pair_generate   _gcry_ac_key_pair_generate
#define gcry_ac_key_pair_extract    _gcry_ac_key_pair_extract
#define gcry_ac_key_data_get        _gcry_ac_key_data_get
#define gcry_ac_key_test            _gcry_ac_key_test
#define gcry_ac_key_get_nbits       _gcry_ac_key_get_nbits
#define gcry_ac_key_get_grip        _gcry_ac_key_get_grip
#define gcry_ac_key_destroy         _gcry_ac_key_destroy
#define gcry_ac_key_pair_destroy    _gcry_ac_key_pair_destroy
#define gcry_ac_data_encrypt        _gcry_ac_data_encrypt
#define gcry_ac_data_decrypt        _gcry_ac_data_decrypt
#define gcry_ac_data_sign           _gcry_ac_data_sign
#define gcry_ac_data_verify         _gcry_ac_data_verify
#define gcry_ac_id_to_name          _gcry_ac_id_to_name
#define gcry_ac_name_to_id          _gcry_ac_name_to_id
#define gcry_ac_data_encode         _gcry_ac_data_encode
#define gcry_ac_data_decode         _gcry_ac_data_decode
#define gcry_ac_mpi_to_os           _gcry_ac_mpi_to_os
#define gcry_ac_mpi_to_os_alloc     _gcry_ac_mpi_to_os_alloc
#define gcry_ac_os_to_mpi           _gcry_ac_os_to_mpi
#define gcry_ac_data_encrypt_scheme _gcry_ac_data_encrypt_scheme
#define gcry_ac_data_decrypt_scheme _gcry_ac_data_decrypt_scheme
#define gcry_ac_data_sign_scheme    _gcry_ac_data_sign_scheme
#define gcry_ac_data_verify_scheme  _gcry_ac_data_verify_scheme
#define gcry_ac_data_to_sexp        _gcry_ac_data_to_sexp
#define gcry_ac_data_from_sexp      _gcry_ac_data_from_sexp
#define gcry_ac_io_init             _gcry_ac_io_init
#define gcry_ac_io_init_va          _gcry_ac_io_init_va

#define gcry_kdf_derive             _gcry_kdf_derive

#define gcry_prime_check            _gcry_prime_check
#define gcry_prime_generate         _gcry_prime_generate
#define gcry_prime_group_generator  _gcry_prime_group_generator
#define gcry_prime_release_factors  _gcry_prime_release_factors

#define gcry_random_add_bytes       _gcry_random_add_bytes
#define gcry_random_bytes           _gcry_random_bytes
#define gcry_random_bytes_secure    _gcry_random_bytes_secure
#define gcry_randomize              _gcry_randomize
#define gcry_create_nonce           _gcry_create_nonce

#define gcry_sexp_alist             _gcry_sexp_alist
#define gcry_sexp_append            _gcry_sexp_append
#define gcry_sexp_build             _gcry_sexp_build
#define gcry_sexp_build_array       _gcry_sexp_build_array
#define gcry_sexp_cadr              _gcry_sexp_cadr
#define gcry_sexp_canon_len         _gcry_sexp_canon_len
#define gcry_sexp_car               _gcry_sexp_car
#define gcry_sexp_cdr               _gcry_sexp_cdr
#define gcry_sexp_cons              _gcry_sexp_cons
#define gcry_sexp_create            _gcry_sexp_create
#define gcry_sexp_dump              _gcry_sexp_dump
#define gcry_sexp_find_token        _gcry_sexp_find_token
#define gcry_sexp_length            _gcry_sexp_length
#define gcry_sexp_new               _gcry_sexp_new
#define gcry_sexp_nth               _gcry_sexp_nth
#define gcry_sexp_nth_data          _gcry_sexp_nth_data
#define gcry_sexp_nth_mpi           _gcry_sexp_nth_mpi
#define gcry_sexp_prepend           _gcry_sexp_prepend
#define gcry_sexp_release           _gcry_sexp_release
#define gcry_sexp_sprint            _gcry_sexp_sprint
#define gcry_sexp_sscan             _gcry_sexp_sscan
#define gcry_sexp_vlist             _gcry_sexp_vlist
#define gcry_sexp_nth_string        _gcry_sexp_nth_string

#define gcry_mpi_add                _gcry_mpi_add
#define gcry_mpi_add_ui             _gcry_mpi_add_ui
#define gcry_mpi_addm               _gcry_mpi_addm
#define gcry_mpi_aprint             _gcry_mpi_aprint
#define gcry_mpi_clear_bit          _gcry_mpi_clear_bit
#define gcry_mpi_clear_flag         _gcry_mpi_clear_flag
#define gcry_mpi_clear_highbit      _gcry_mpi_clear_highbit
#define gcry_mpi_cmp                _gcry_mpi_cmp
#define gcry_mpi_cmp_ui             _gcry_mpi_cmp_ui
#define gcry_mpi_copy               _gcry_mpi_copy
#define gcry_mpi_div                _gcry_mpi_div
#define gcry_mpi_dump               _gcry_mpi_dump
#define gcry_mpi_gcd                _gcry_mpi_gcd
#define gcry_mpi_get_flag           _gcry_mpi_get_flag
#define gcry_mpi_get_nbits          _gcry_mpi_get_nbits
#define gcry_mpi_get_opaque         _gcry_mpi_get_opaque
#define gcry_mpi_invm               _gcry_mpi_invm
#define gcry_mpi_mod                _gcry_mpi_mod
#define gcry_mpi_mul                _gcry_mpi_mul
#define gcry_mpi_mul_2exp           _gcry_mpi_mul_2exp
#define gcry_mpi_mul_ui             _gcry_mpi_mul_ui
#define gcry_mpi_mulm               _gcry_mpi_mulm
#define gcry_mpi_new                _gcry_mpi_new
#define gcry_mpi_powm               _gcry_mpi_powm
#define gcry_mpi_print              _gcry_mpi_print
#define gcry_mpi_randomize          _gcry_mpi_randomize
#define gcry_mpi_release            _gcry_mpi_release
#define gcry_mpi_rshift             _gcry_mpi_rshift
#define gcry_mpi_lshift             _gcry_mpi_lshift
#define gcry_mpi_scan               _gcry_mpi_scan
#define gcry_mpi_set                _gcry_mpi_set
#define gcry_mpi_set_bit            _gcry_mpi_set_bit
#define gcry_mpi_set_flag           _gcry_mpi_set_flag
#define gcry_mpi_set_highbit        _gcry_mpi_set_highbit
#define gcry_mpi_set_opaque         _gcry_mpi_set_opaque
#define gcry_mpi_set_ui             _gcry_mpi_set_ui
#define gcry_mpi_snew               _gcry_mpi_snew
#define gcry_mpi_sub                _gcry_mpi_sub
#define gcry_mpi_sub_ui             _gcry_mpi_sub_ui
#define gcry_mpi_subm               _gcry_mpi_subm
#define gcry_mpi_swap               _gcry_mpi_swap
#define gcry_mpi_test_bit           _gcry_mpi_test_bit


/* Include the main header here so that public symbols are mapped to
   the internal underscored ones.  */
#ifdef _GCRY_INCLUDED_BY_VISIBILITY_C
  /* We need to redeclare the deprecated functions without the
     deprecated attribute.  */
# define GCRYPT_NO_DEPRECATED
# include "gcrypt.h"
/* The algorithm IDs. */
  gcry_error_t gcry_ac_data_new (gcry_ac_data_t *data);
  void gcry_ac_data_destroy (gcry_ac_data_t data);
  gcry_error_t gcry_ac_data_copy (gcry_ac_data_t *data_cp,
                                  gcry_ac_data_t data);
  unsigned int gcry_ac_data_length (gcry_ac_data_t data);
  void gcry_ac_data_clear (gcry_ac_data_t data);
  gcry_error_t gcry_ac_data_set (gcry_ac_data_t data, unsigned int flags,
                                 const char *name, gcry_mpi_t mpi);
  gcry_error_t gcry_ac_data_get_name (gcry_ac_data_t data, unsigned int flags,
                                      const char *name, gcry_mpi_t *mpi);
  gcry_error_t gcry_ac_data_get_index (gcry_ac_data_t data, unsigned int flags,
                                       unsigned int idx,
                                       const char **name, gcry_mpi_t *mpi);
  gcry_error_t gcry_ac_data_to_sexp (gcry_ac_data_t data, gcry_sexp_t *sexp,
                                   const char **identifiers);
  gcry_error_t gcry_ac_data_from_sexp (gcry_ac_data_t *data, gcry_sexp_t sexp,
                                     const char **identifiers);
  void gcry_ac_io_init (gcry_ac_io_t *ac_io, gcry_ac_io_mode_t mode,
                      gcry_ac_io_type_t type, ...);
  void gcry_ac_io_init_va (gcry_ac_io_t *ac_io, gcry_ac_io_mode_t mode,
                         gcry_ac_io_type_t type, va_list ap);
  gcry_error_t gcry_ac_open (gcry_ac_handle_t *handle,
                             gcry_ac_id_t algorithm, unsigned int flags);
  void gcry_ac_close (gcry_ac_handle_t handle);
  gcry_error_t gcry_ac_key_init (gcry_ac_key_t *key, gcry_ac_handle_t handle,
                                 gcry_ac_key_type_t type, gcry_ac_data_t data);
  gcry_error_t gcry_ac_key_pair_generate (gcry_ac_handle_t handle,
                                          unsigned int nbits, void *spec,
                                          gcry_ac_key_pair_t *key_pair,
                                          gcry_mpi_t **misc_data);
  gcry_ac_key_t gcry_ac_key_pair_extract (gcry_ac_key_pair_t key_pair,
                                          gcry_ac_key_type_t which);
  gcry_ac_data_t gcry_ac_key_data_get (gcry_ac_key_t key);
  gcry_error_t gcry_ac_key_test (gcry_ac_handle_t handle, gcry_ac_key_t key);
  gcry_error_t gcry_ac_key_get_nbits (gcry_ac_handle_t handle,
                                      gcry_ac_key_t key, unsigned int *nbits);
  gcry_error_t gcry_ac_key_get_grip (gcry_ac_handle_t handle, gcry_ac_key_t key,
                                     unsigned char *key_grip);
  void gcry_ac_key_destroy (gcry_ac_key_t key);
  void gcry_ac_key_pair_destroy (gcry_ac_key_pair_t key_pair);
  gcry_error_t gcry_ac_data_encode (gcry_ac_em_t method,
                                  unsigned int flags, void *options,
                                  gcry_ac_io_t *io_read,
                                  gcry_ac_io_t *io_write);
  gcry_error_t gcry_ac_data_decode (gcry_ac_em_t method,
                                  unsigned int flags, void *options,
                                  gcry_ac_io_t *io_read,
                                  gcry_ac_io_t *io_write);
  gcry_error_t gcry_ac_data_encrypt (gcry_ac_handle_t handle,
                                     unsigned int flags,
                                     gcry_ac_key_t key,
                                     gcry_mpi_t data_plain,
                                     gcry_ac_data_t *data_encrypted);
  gcry_error_t gcry_ac_data_decrypt (gcry_ac_handle_t handle,
                                     unsigned int flags,
                                     gcry_ac_key_t key,
                                     gcry_mpi_t *data_plain,
                                     gcry_ac_data_t data_encrypted);
  gcry_error_t gcry_ac_data_sign (gcry_ac_handle_t handle,
                                  gcry_ac_key_t key,
                                  gcry_mpi_t data,
                                  gcry_ac_data_t *data_signature);
  gcry_error_t gcry_ac_data_verify (gcry_ac_handle_t handle,
                                    gcry_ac_key_t key,
                                    gcry_mpi_t data,
                                    gcry_ac_data_t data_signature);
  gcry_error_t gcry_ac_data_encrypt_scheme (gcry_ac_handle_t handle,
                                          gcry_ac_scheme_t scheme,
                                          unsigned int flags, void *opts,
                                          gcry_ac_key_t key,
                                          gcry_ac_io_t *io_message,
                                          gcry_ac_io_t *io_cipher);
  gcry_error_t gcry_ac_data_decrypt_scheme (gcry_ac_handle_t handle,
                                          gcry_ac_scheme_t scheme,
                                          unsigned int flags, void *opts,
                                          gcry_ac_key_t key,
                                          gcry_ac_io_t *io_cipher,
                                          gcry_ac_io_t *io_message);
  gcry_error_t gcry_ac_data_sign_scheme (gcry_ac_handle_t handle,
                                       gcry_ac_scheme_t scheme,
                                       unsigned int flags, void *opts,
                                       gcry_ac_key_t key,
                                       gcry_ac_io_t *io_message,
                                       gcry_ac_io_t *io_signature);
  gcry_error_t gcry_ac_data_verify_scheme (gcry_ac_handle_t handle,
                                         gcry_ac_scheme_t scheme,
                                         unsigned int flags, void *opts,
                                         gcry_ac_key_t key,
                                         gcry_ac_io_t *io_message,
                                         gcry_ac_io_t *io_signature);
  gcry_error_t gcry_ac_id_to_name (gcry_ac_id_t algorithm, const char **name);
  gcry_error_t gcry_ac_name_to_id (const char *name, gcry_ac_id_t *algorithm);
#else
# include "gcrypt.h"
#endif

/* Prototypes of functions exported but not ready for use.  */
gcry_err_code_t gcry_md_get (gcry_md_hd_t hd, int algo,
                             unsigned char *buffer, int buflen);
void gcry_ac_mpi_to_os (gcry_mpi_t mpi, unsigned char *os, size_t os_n);
gcry_error_t gcry_ac_mpi_to_os_alloc (gcry_mpi_t mpi, unsigned char **os,
                                       size_t *os_n);
void gcry_ac_os_to_mpi (gcry_mpi_t mpi, unsigned char *os, size_t os_n);



/* Our use of the ELF visibility feature works by passing
   -fvisibiliy=hidden on the command line and by explicitly marking
   all exported functions as visible.

   NOTE: When adding new functions, please make sure to add them to
         libgcrypt.vers and libgcrypt.def as well.  */

#ifdef _GCRY_INCLUDED_BY_VISIBILITY_C

/* A macro to flag a function as visible.  Note that we take the
   definition from the mapped name.  */
#ifdef GCRY_USE_VISIBILITY
# define MARK_VISIBLE(name) \
    extern __typeof__ (_##name) name __attribute__ ((visibility("default")));
# define MARK_VISIBLEX(name) \
    extern __typeof__ (name) name __attribute__ ((visibility("default")));
#else
# define MARK_VISIBLE(name) /* */
# define MARK_VISIBLEX(name) /* */
#endif


/* First undef all redefined symbols so that we set the attribute on
   the correct version name.  */
#undef gcry_check_version
#undef gcry_control

#undef gcry_set_allocation_handler
#undef gcry_set_fatalerror_handler
#undef gcry_set_gettext_handler
#undef gcry_set_log_handler
#undef gcry_set_outofcore_handler
#undef gcry_set_progress_handler
#undef gcry_err_code_from_errno
#undef gcry_err_code_to_errno
#undef gcry_err_make_from_errno
#undef gcry_error_from_errno
#undef gcry_strerror
#undef gcry_strsource

#undef gcry_free
#undef gcry_malloc
#undef gcry_malloc_secure
#undef gcry_calloc
#undef gcry_calloc_secure
#undef gcry_realloc
#undef gcry_strdup
#undef gcry_is_secure
#undef gcry_xcalloc
#undef gcry_xcalloc_secure
#undef gcry_xmalloc
#undef gcry_xmalloc_secure
#undef gcry_xrealloc
#undef gcry_xstrdup

#undef gcry_md_algo_info
#undef gcry_md_algo_name
#undef gcry_md_close
#undef gcry_md_copy
#undef gcry_md_ctl
#undef gcry_md_enable
#undef gcry_md_get
#undef gcry_md_get_algo
#undef gcry_md_get_algo_dlen
#undef gcry_md_hash_buffer
#undef gcry_md_info
#undef gcry_md_is_enabled
#undef gcry_md_is_secure
#undef gcry_md_list
#undef gcry_md_map_name
#undef gcry_md_open
#undef gcry_md_read
/* gcry_md_register is not anymore a macro.  */
#undef gcry_md_unregister
#undef gcry_md_reset
#undef gcry_md_setkey
#undef gcry_md_write
#undef gcry_md_debug

#undef gcry_cipher_algo_info
#undef gcry_cipher_algo_name
#undef gcry_cipher_close
#undef gcry_cipher_setkey
#undef gcry_cipher_setiv
#undef gcry_cipher_setctr
#undef gcry_cipher_ctl
#undef gcry_cipher_decrypt
#undef gcry_cipher_encrypt
#undef gcry_cipher_get_algo_blklen
#undef gcry_cipher_get_algo_keylen
#undef gcry_cipher_info
#undef gcry_cipher_list
#undef gcry_cipher_map_name
#undef gcry_cipher_mode_from_oid
#undef gcry_cipher_open
/* gcry_cipher_register is not anymore a macro.  */
#undef gcry_cipher_unregister

#undef gcry_pk_algo_info
#undef gcry_pk_algo_name
#undef gcry_pk_ctl
#undef gcry_pk_decrypt
#undef gcry_pk_encrypt
#undef gcry_pk_genkey
#undef gcry_pk_get_keygrip
#undef gcry_pk_get_curve
#undef gcry_pk_get_param
#undef gcry_pk_get_nbits
#undef gcry_pk_list
#undef gcry_pk_map_name
/* gcry_pk_register is not anymore a macro.  */
#undef gcry_pk_unregister
#undef gcry_pk_sign
#undef gcry_pk_testkey
#undef gcry_pk_verify

#undef gcry_ac_data_new
#undef gcry_ac_data_destroy
#undef gcry_ac_data_copy
#undef gcry_ac_data_length
#undef gcry_ac_data_clear
#undef gcry_ac_data_set
#undef gcry_ac_data_get_name
#undef gcry_ac_data_get_index
#undef gcry_ac_open
#undef gcry_ac_close
#undef gcry_ac_key_init
#undef gcry_ac_key_pair_generate
#undef gcry_ac_key_pair_extract
#undef gcry_ac_key_data_get
#undef gcry_ac_key_test
#undef gcry_ac_key_get_nbits
#undef gcry_ac_key_get_grip
#undef gcry_ac_key_destroy
#undef gcry_ac_key_pair_destroy
#undef gcry_ac_data_encrypt
#undef gcry_ac_data_decrypt
#undef gcry_ac_data_sign
#undef gcry_ac_data_verify
#undef gcry_ac_id_to_name
#undef gcry_ac_name_to_id
#undef gcry_ac_data_encode
#undef gcry_ac_data_decode
#undef gcry_ac_mpi_to_os
#undef gcry_ac_mpi_to_os_alloc
#undef gcry_ac_os_to_mpi
#undef gcry_ac_data_encrypt_scheme
#undef gcry_ac_data_decrypt_scheme
#undef gcry_ac_data_sign_scheme
#undef gcry_ac_data_verify_scheme
#undef gcry_ac_data_to_sexp
#undef gcry_ac_data_from_sexp
#undef gcry_ac_io_init
#undef gcry_ac_io_init_va

#undef gcry_kdf_derive

#undef gcry_prime_check
#undef gcry_prime_generate
#undef gcry_prime_group_generator
#undef gcry_prime_release_factors

#undef gcry_random_add_bytes
#undef gcry_random_bytes
#undef gcry_random_bytes_secure
#undef gcry_randomize
#undef gcry_create_nonce

#undef gcry_sexp_alist
#undef gcry_sexp_append
#undef gcry_sexp_build
#undef gcry_sexp_build_array
#undef gcry_sexp_cadr
#undef gcry_sexp_canon_len
#undef gcry_sexp_car
#undef gcry_sexp_cdr
#undef gcry_sexp_cons
#undef gcry_sexp_create
#undef gcry_sexp_dump
#undef gcry_sexp_find_token
#undef gcry_sexp_length
#undef gcry_sexp_new
#undef gcry_sexp_nth
#undef gcry_sexp_nth_data
#undef gcry_sexp_nth_mpi
#undef gcry_sexp_prepend
#undef gcry_sexp_release
#undef gcry_sexp_sprint
#undef gcry_sexp_sscan
#undef gcry_sexp_vlist
#undef gcry_sexp_nth_string

#undef gcry_mpi_add
#undef gcry_mpi_add_ui
#undef gcry_mpi_addm
#undef gcry_mpi_aprint
#undef gcry_mpi_clear_bit
#undef gcry_mpi_clear_flag
#undef gcry_mpi_clear_highbit
#undef gcry_mpi_cmp
#undef gcry_mpi_cmp_ui
#undef gcry_mpi_copy
#undef gcry_mpi_div
#undef gcry_mpi_dump
#undef gcry_mpi_gcd
#undef gcry_mpi_get_flag
#undef gcry_mpi_get_nbits
#undef gcry_mpi_get_opaque
#undef gcry_mpi_invm
#undef gcry_mpi_mod
#undef gcry_mpi_mul
#undef gcry_mpi_mul_2exp
#undef gcry_mpi_mul_ui
#undef gcry_mpi_mulm
#undef gcry_mpi_new
#undef gcry_mpi_powm
#undef gcry_mpi_print
#undef gcry_mpi_randomize
#undef gcry_mpi_release
#undef gcry_mpi_rshift
#undef gcry_mpi_lshift
#undef gcry_mpi_scan
#undef gcry_mpi_set
#undef gcry_mpi_set_bit
#undef gcry_mpi_set_flag
#undef gcry_mpi_set_highbit
#undef gcry_mpi_set_opaque
#undef gcry_mpi_set_ui
#undef gcry_mpi_snew
#undef gcry_mpi_sub
#undef gcry_mpi_sub_ui
#undef gcry_mpi_subm
#undef gcry_mpi_swap
#undef gcry_mpi_test_bit


/* Now mark all symbols.  */

MARK_VISIBLE (gcry_check_version)
MARK_VISIBLE (gcry_control)

MARK_VISIBLE (gcry_set_allocation_handler)
MARK_VISIBLE (gcry_set_fatalerror_handler)
MARK_VISIBLE (gcry_set_gettext_handler)
MARK_VISIBLE (gcry_set_log_handler)
MARK_VISIBLE (gcry_set_outofcore_handler)
MARK_VISIBLE (gcry_set_progress_handler)
MARK_VISIBLE (gcry_err_code_from_errno)
MARK_VISIBLE (gcry_err_code_to_errno)
MARK_VISIBLE (gcry_err_make_from_errno)
MARK_VISIBLE (gcry_error_from_errno)
MARK_VISIBLE (gcry_strerror)
MARK_VISIBLE (gcry_strsource)

MARK_VISIBLE (gcry_free)
MARK_VISIBLE (gcry_malloc)
MARK_VISIBLE (gcry_malloc_secure)
MARK_VISIBLE (gcry_calloc)
MARK_VISIBLE (gcry_calloc_secure)
MARK_VISIBLE (gcry_realloc)
MARK_VISIBLE (gcry_strdup)
MARK_VISIBLE (gcry_is_secure)
MARK_VISIBLE (gcry_xcalloc)
MARK_VISIBLE (gcry_xcalloc_secure)
MARK_VISIBLE (gcry_xmalloc)
MARK_VISIBLE (gcry_xmalloc_secure)
MARK_VISIBLE (gcry_xrealloc)
MARK_VISIBLE (gcry_xstrdup)

MARK_VISIBLE (gcry_md_algo_info)
MARK_VISIBLE (gcry_md_algo_name)
MARK_VISIBLE (gcry_md_close)
MARK_VISIBLE (gcry_md_copy)
MARK_VISIBLE (gcry_md_ctl)
MARK_VISIBLE (gcry_md_enable)
MARK_VISIBLE (gcry_md_get)
MARK_VISIBLE (gcry_md_get_algo)
MARK_VISIBLE (gcry_md_get_algo_dlen)
MARK_VISIBLE (gcry_md_hash_buffer)
MARK_VISIBLE (gcry_md_info)
MARK_VISIBLE (gcry_md_is_enabled)
MARK_VISIBLE (gcry_md_is_secure)
MARK_VISIBLE (gcry_md_list)
MARK_VISIBLE (gcry_md_map_name)
MARK_VISIBLE (gcry_md_open)
MARK_VISIBLE (gcry_md_read)
MARK_VISIBLEX(gcry_md_register)
MARK_VISIBLE (gcry_md_reset)
MARK_VISIBLE (gcry_md_setkey)
MARK_VISIBLE (gcry_md_unregister)
MARK_VISIBLE (gcry_md_write)
MARK_VISIBLE (gcry_md_debug)

MARK_VISIBLE (gcry_cipher_algo_info)
MARK_VISIBLE (gcry_cipher_algo_name)
MARK_VISIBLE (gcry_cipher_close)
MARK_VISIBLE (gcry_cipher_setkey)
MARK_VISIBLE (gcry_cipher_setiv)
MARK_VISIBLE (gcry_cipher_setctr)
MARK_VISIBLE (gcry_cipher_ctl)
MARK_VISIBLE (gcry_cipher_decrypt)
MARK_VISIBLE (gcry_cipher_encrypt)
MARK_VISIBLE (gcry_cipher_get_algo_blklen)
MARK_VISIBLE (gcry_cipher_get_algo_keylen)
MARK_VISIBLE (gcry_cipher_info)
MARK_VISIBLE (gcry_cipher_list)
MARK_VISIBLE (gcry_cipher_map_name)
MARK_VISIBLE (gcry_cipher_mode_from_oid)
MARK_VISIBLE (gcry_cipher_open)
MARK_VISIBLEX(gcry_cipher_register)
MARK_VISIBLE (gcry_cipher_unregister)

MARK_VISIBLE (gcry_pk_algo_info)
MARK_VISIBLE (gcry_pk_algo_name)
MARK_VISIBLE (gcry_pk_ctl)
MARK_VISIBLE (gcry_pk_decrypt)
MARK_VISIBLE (gcry_pk_encrypt)
MARK_VISIBLE (gcry_pk_genkey)
MARK_VISIBLE (gcry_pk_get_keygrip)
MARK_VISIBLE (gcry_pk_get_curve)
MARK_VISIBLE (gcry_pk_get_param)
MARK_VISIBLE (gcry_pk_get_nbits)
MARK_VISIBLE (gcry_pk_list)
MARK_VISIBLE (gcry_pk_map_name)
MARK_VISIBLEX(gcry_pk_register)
MARK_VISIBLE (gcry_pk_sign)
MARK_VISIBLE (gcry_pk_testkey)
MARK_VISIBLE (gcry_pk_unregister)
MARK_VISIBLE (gcry_pk_verify)

MARK_VISIBLE (gcry_ac_data_new)
MARK_VISIBLE (gcry_ac_data_destroy)
MARK_VISIBLE (gcry_ac_data_copy)
MARK_VISIBLE (gcry_ac_data_length)
MARK_VISIBLE (gcry_ac_data_clear)
MARK_VISIBLE (gcry_ac_data_set)
MARK_VISIBLE (gcry_ac_data_get_name)
MARK_VISIBLE (gcry_ac_data_get_index)
MARK_VISIBLE (gcry_ac_open)
MARK_VISIBLE (gcry_ac_close)
MARK_VISIBLE (gcry_ac_key_init)
MARK_VISIBLE (gcry_ac_key_pair_generate)
MARK_VISIBLE (gcry_ac_key_pair_extract)
MARK_VISIBLE (gcry_ac_key_data_get)
MARK_VISIBLE (gcry_ac_key_test)
MARK_VISIBLE (gcry_ac_key_get_nbits)
MARK_VISIBLE (gcry_ac_key_get_grip)
MARK_VISIBLE (gcry_ac_key_destroy)
MARK_VISIBLE (gcry_ac_key_pair_destroy)
MARK_VISIBLE (gcry_ac_data_encrypt)
MARK_VISIBLE (gcry_ac_data_decrypt)
MARK_VISIBLE (gcry_ac_data_sign)
MARK_VISIBLE (gcry_ac_data_verify)
MARK_VISIBLE (gcry_ac_id_to_name)
MARK_VISIBLE (gcry_ac_name_to_id)
/* MARK_VISIBLE (gcry_ac_list) Not defined although it is in
        libgcrypt.vers. */
MARK_VISIBLE (gcry_ac_data_encode)
MARK_VISIBLE (gcry_ac_data_decode)
MARK_VISIBLE (gcry_ac_mpi_to_os)
MARK_VISIBLE (gcry_ac_mpi_to_os_alloc)
MARK_VISIBLE (gcry_ac_os_to_mpi)
MARK_VISIBLE (gcry_ac_data_encrypt_scheme)
MARK_VISIBLE (gcry_ac_data_decrypt_scheme)
MARK_VISIBLE (gcry_ac_data_sign_scheme)
MARK_VISIBLE (gcry_ac_data_verify_scheme)
MARK_VISIBLE (gcry_ac_data_to_sexp)
MARK_VISIBLE (gcry_ac_data_from_sexp)
MARK_VISIBLE (gcry_ac_io_init)
MARK_VISIBLE (gcry_ac_io_init_va)

MARK_VISIBLE (gcry_kdf_derive)

MARK_VISIBLE (gcry_prime_check)
MARK_VISIBLE (gcry_prime_generate)
MARK_VISIBLE (gcry_prime_group_generator)
MARK_VISIBLE (gcry_prime_release_factors)

MARK_VISIBLE (gcry_random_add_bytes)
MARK_VISIBLE (gcry_random_bytes)
MARK_VISIBLE (gcry_random_bytes_secure)
MARK_VISIBLE (gcry_randomize)
MARK_VISIBLE (gcry_create_nonce)

MARK_VISIBLE (gcry_sexp_alist)
MARK_VISIBLE (gcry_sexp_append)
MARK_VISIBLE (gcry_sexp_build)
MARK_VISIBLE (gcry_sexp_build_array)
MARK_VISIBLE (gcry_sexp_cadr)
MARK_VISIBLE (gcry_sexp_canon_len)
MARK_VISIBLE (gcry_sexp_car)
MARK_VISIBLE (gcry_sexp_cdr)
MARK_VISIBLE (gcry_sexp_cons)
MARK_VISIBLE (gcry_sexp_create)
MARK_VISIBLE (gcry_sexp_dump)
MARK_VISIBLE (gcry_sexp_find_token)
MARK_VISIBLE (gcry_sexp_length)
MARK_VISIBLE (gcry_sexp_new)
MARK_VISIBLE (gcry_sexp_nth)
MARK_VISIBLE (gcry_sexp_nth_data)
MARK_VISIBLE (gcry_sexp_nth_mpi)
MARK_VISIBLE (gcry_sexp_prepend)
MARK_VISIBLE (gcry_sexp_release)
MARK_VISIBLE (gcry_sexp_sprint)
MARK_VISIBLE (gcry_sexp_sscan)
MARK_VISIBLE (gcry_sexp_vlist)
MARK_VISIBLE (gcry_sexp_nth_string)

MARK_VISIBLE (gcry_mpi_add)
MARK_VISIBLE (gcry_mpi_add_ui)
MARK_VISIBLE (gcry_mpi_addm)
MARK_VISIBLE (gcry_mpi_aprint)
MARK_VISIBLE (gcry_mpi_clear_bit)
MARK_VISIBLE (gcry_mpi_clear_flag)
MARK_VISIBLE (gcry_mpi_clear_highbit)
MARK_VISIBLE (gcry_mpi_cmp)
MARK_VISIBLE (gcry_mpi_cmp_ui)
MARK_VISIBLE (gcry_mpi_copy)
MARK_VISIBLE (gcry_mpi_div)
MARK_VISIBLE (gcry_mpi_dump)
MARK_VISIBLE (gcry_mpi_gcd)
MARK_VISIBLE (gcry_mpi_get_flag)
MARK_VISIBLE (gcry_mpi_get_nbits)
MARK_VISIBLE (gcry_mpi_get_opaque)
MARK_VISIBLE (gcry_mpi_invm)
MARK_VISIBLE (gcry_mpi_mod)
MARK_VISIBLE (gcry_mpi_mul)
MARK_VISIBLE (gcry_mpi_mul_2exp)
MARK_VISIBLE (gcry_mpi_mul_ui)
MARK_VISIBLE (gcry_mpi_mulm)
MARK_VISIBLE (gcry_mpi_new)
MARK_VISIBLE (gcry_mpi_powm)
MARK_VISIBLE (gcry_mpi_print)
MARK_VISIBLE (gcry_mpi_randomize)
MARK_VISIBLE (gcry_mpi_release)
MARK_VISIBLE (gcry_mpi_rshift)
MARK_VISIBLE (gcry_mpi_lshift)
MARK_VISIBLE (gcry_mpi_scan)
MARK_VISIBLE (gcry_mpi_set)
MARK_VISIBLE (gcry_mpi_set_bit)
MARK_VISIBLE (gcry_mpi_set_flag)
MARK_VISIBLE (gcry_mpi_set_highbit)
MARK_VISIBLE (gcry_mpi_set_opaque)
MARK_VISIBLE (gcry_mpi_set_ui)
MARK_VISIBLE (gcry_mpi_snew)
MARK_VISIBLE (gcry_mpi_sub)
MARK_VISIBLE (gcry_mpi_sub_ui)
MARK_VISIBLE (gcry_mpi_subm)
MARK_VISIBLE (gcry_mpi_swap)
MARK_VISIBLE (gcry_mpi_test_bit)



#undef MARK_VISIBLE
#endif /*_GCRY_INCLUDED_BY_VISIBILITY_C*/

#endif /*GCRY_VISIBILITY_H*/