# libgcrypt.vers  - What symbols to export                  -*- std -*-
# Copyright (C) 2002, 2004, 2008 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, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA

# NOTE: When adding new functions, please make sure to add them to
# visibility.h and libgcrypt.def as well.

GCRYPT_1.2 {
  global:
    gcry_check_version; gcry_control;
    gcry_set_allocation_handler; gcry_set_fatalerror_handler;
    gcry_set_gettext_handler; gcry_set_log_handler;
    gcry_set_outofcore_handler; gcry_set_progress_handler;
    
    gcry_err_code_from_errno; gcry_err_code_to_errno;
    gcry_err_make_from_errno; gcry_error_from_errno;
    gcry_strerror; gcry_strsource;
    
    gcry_free; gcry_malloc; gcry_malloc_secure; gcry_calloc;
    gcry_calloc_secure; gcry_realloc; gcry_strdup; gcry_is_secure;
    gcry_xcalloc; gcry_xcalloc_secure; gcry_xmalloc;
    gcry_xmalloc_secure; gcry_xrealloc; gcry_xstrdup;
    
    gcry_md_algo_info; gcry_md_algo_name; gcry_md_close;
    gcry_md_copy; gcry_md_ctl; gcry_md_enable; gcry_md_get;
    gcry_md_get_algo; gcry_md_get_algo_dlen; gcry_md_hash_buffer;
    gcry_md_info; gcry_md_is_enabled; gcry_md_is_secure;
    gcry_md_list; gcry_md_map_name; gcry_md_open; gcry_md_read;
    gcry_md_register; gcry_md_reset; gcry_md_setkey; 
    gcry_md_unregister; gcry_md_write; gcry_md_debug;
    
    gcry_cipher_algo_info; gcry_cipher_algo_name; gcry_cipher_close;
    gcry_cipher_ctl; gcry_cipher_decrypt; gcry_cipher_encrypt;
    gcry_cipher_get_algo_blklen; gcry_cipher_get_algo_keylen;
    gcry_cipher_info; gcry_cipher_list; gcry_cipher_map_name;
    gcry_cipher_mode_from_oid; gcry_cipher_open;
    gcry_cipher_register; gcry_cipher_unregister;
    gcry_cipher_setkey; gcry_cipher_setiv; gcry_cipher_setctr;
    
    gcry_pk_algo_info; gcry_pk_algo_name; gcry_pk_ctl;
    gcry_pk_decrypt; gcry_pk_encrypt; gcry_pk_genkey;
    gcry_pk_get_keygrip; gcry_pk_get_nbits; gcry_pk_list;
    gcry_pk_map_name; gcry_pk_register; gcry_pk_sign;
    gcry_pk_testkey; gcry_pk_unregister; gcry_pk_verify;

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

    gcry_prime_check; gcry_prime_generate; 
    gcry_prime_group_generator; gcry_prime_release_factors;
    
    gcry_random_add_bytes; gcry_random_bytes; gcry_random_bytes_secure;
    gcry_randomize; gcry_create_nonce;
    
    gcry_sexp_alist; gcry_sexp_append; gcry_sexp_build;
    gcry_sexp_build_array; gcry_sexp_cadr; gcry_sexp_canon_len;
    gcry_sexp_car; gcry_sexp_cdr; gcry_sexp_cons; gcry_sexp_create;
    gcry_sexp_dump; gcry_sexp_find_token; gcry_sexp_length;
    gcry_sexp_new; gcry_sexp_nth; gcry_sexp_nth_data;
    gcry_sexp_nth_mpi; gcry_sexp_prepend; gcry_sexp_release;
    gcry_sexp_sprint; gcry_sexp_sscan; gcry_sexp_vlist;
    gcry_sexp_nth_string;
    
    gcry_mpi_add; gcry_mpi_add_ui; gcry_mpi_addm; gcry_mpi_aprint;
    gcry_mpi_clear_bit; gcry_mpi_clear_flag; gcry_mpi_clear_highbit;
    gcry_mpi_cmp; gcry_mpi_cmp_ui; gcry_mpi_copy; gcry_mpi_div;
    gcry_mpi_dump; gcry_mpi_gcd; gcry_mpi_get_flag; gcry_mpi_get_nbits;
    gcry_mpi_get_opaque; gcry_mpi_invm; gcry_mpi_mod; gcry_mpi_mul;
    gcry_mpi_mul_2exp; gcry_mpi_mul_ui; gcry_mpi_mulm; gcry_mpi_new;
    gcry_mpi_powm; gcry_mpi_print; gcry_mpi_randomize; gcry_mpi_release;
    gcry_mpi_rshift; gcry_mpi_scan; gcry_mpi_set; gcry_mpi_set_bit;
    gcry_mpi_set_flag; gcry_mpi_set_highbit; gcry_mpi_set_opaque;
    gcry_mpi_set_ui; gcry_mpi_snew; gcry_mpi_sub; gcry_mpi_sub_ui;
    gcry_mpi_subm; gcry_mpi_swap; gcry_mpi_test_bit;
    gcry_mpi_lshift;

  local:
    *;

};

