# Written by Simon Josefsson <simon@yubico.com>.
# Copyright (c) 2008-2014 Yubico AB
# All rights reserved.
# 
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
# 
#     * Redistributions of source code must retain the above copyright
#       notice, this list of conditions and the following disclaimer.
# 
#     * Redistributions in binary form must reproduce the above
#       copyright notice, this list of conditions and the following
#       disclaimer in the documentation and/or other materials provided
#       with the distribution.
# 
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

LIBYKPERS_1.0 {
  global:
# Functions:
    yk_check_firmware_version;
    yk_close_key;
    yk_endian_swap_16;
    yk_force_key_update;
    yk_get_status;
    yk_init;
    yk_open_first_key;
    yk_pbkdf2;
    yk_read_from_key;
    yk_release;
    yk_strerror;
    yk_usb_strerror;
    yk_write_config;
    yk_write_to_key;
    ykds_alloc;
    ykds_free;
    ykds_pgm_seq;
    ykds_static;
    ykds_touch_level;
    ykds_version_build;
    ykds_version_major;
    ykds_version_minor;
    ykp_AES_key_from_hex;
    ykp_AES_key_from_passphrase;
    ykp_config_num;
    ykp_configure_for;
    ykp_core_config;
    ykp_create_config;
    ykp_free_config;
    ykp_read_config;
    ykp_set_access_code;
    ykp_set_cfgflag_ALLOW_HIDTRIG;
    ykp_set_cfgflag_MAN_UPDATE;
    ykp_set_cfgflag_PACING_10MS;
    ykp_set_cfgflag_PACING_20MS;
    ykp_set_cfgflag_SEND_REF;
    ykp_set_cfgflag_SHORT_TICKET;
    ykp_set_cfgflag_STATIC_TICKET;
    ykp_set_cfgflag_STRONG_PW1;
    ykp_set_cfgflag_STRONG_PW2;
    ykp_set_cfgflag_TICKET_FIRST;
    ykp_set_cfgflag_OATH_HOTP8;
    ykp_set_cfgflag_OATH_FIXED_MODHEX1;
    ykp_set_cfgflag_OATH_FIXED_MODHEX2;
    ykp_set_cfgflag_OATH_FIXED_MODHEX;
    ykp_set_fixed;
    ykp_set_tktflag_APPEND_CR;
    ykp_set_tktflag_APPEND_DELAY1;
    ykp_set_tktflag_APPEND_DELAY2;
    ykp_set_tktflag_APPEND_TAB1;
    ykp_set_tktflag_APPEND_TAB2;
    ykp_set_tktflag_PROTECT_CFG2;
    ykp_set_tktflag_TAB_FIRST;
    ykp_set_tktflag_OATH_HOTP;
    ykp_set_uid;
    ykp_strerror;
    ykp_write_config;

# Variables:
   _yk_errno_location;
   _ykp_errno_location;

  local:
    *;
};

LIBYKPERS_1.4 {
  global:
# Functions:
    ykp_HMAC_key_from_hex;
    ykp_set_tktflag_CHAL_RESP;
    ykp_set_cfgflag_CHAL_YUBICO;
    ykp_set_cfgflag_CHAL_HMAC;
    ykp_set_cfgflag_HMAC_LT64;
    ykp_set_cfgflag_CHAL_BTN_TRIG;
    ykp_set_extflag_SERIAL_BTN_VISIBLE;
    ykp_set_extflag_SERIAL_USB_VISIBLE;
    ykp_set_extflag_SERIAL_API_VISIBLE;
# Variables:
} LIBYKPERS_1.0;

LIBYKPERS_1.5 {
  global:
# Functions:
  yk_wait_for_key_status;
  yk_read_response_from_key;
  yk_get_serial;
# Variables:
} LIBYKPERS_1.4;

LIBYKPERS_1.6 {
  global:
# Functions:
  ykp_set_oath_imf;
  ykp_get_oath_imf;
# Variables:
} LIBYKPERS_1.5;

LIBYKPERS_1.7 {
  global:
# Functions:
  ykp_alloc;
  ykp_configure_version;
  ykp_command;
  ykp_configure_command;
  yk_write_command;
  ykp_set_extflag_USE_NUMERIC_KEYPAD;
  ykp_set_extflag_FAST_TRIG;
  ykp_set_extflag_ALLOW_UPDATE;
  ykp_set_extflag_DORMANT;
  yk_write_ndef;
  ykp_construct_ndef_uri;
  ykp_construct_ndef_text;
# Variables:
} LIBYKPERS_1.6;

LIBYKPERS_1.8 {
  global:
# Functions:
  yk_challenge_response;
  ykp_set_ndef_access_code;
  ykp_alloc_ndef;
  ykp_free_ndef;
# Variables:
} LIBYKPERS_1.7;

LIBYKPERS_1.9 {
  global:
# Functions:
  yk_hmac_sha1;
# Variables:
} LIBYKPERS_1.8;

LIBYKPERS_1.10 {
  global:
# Functions:
  yk_write_ndef2;
  ykp_ndef_as_text;
  yk_check_firmware_version2;
  yk_write_device_config;
  ykp_alloc_device_config;
  ykp_free_device_config;
  ykp_set_device_mode;
  ykp_set_device_chalresp_timeout;
  ykp_set_device_autoeject_time;
  yk_write_scan_map;
# Variables:
} LIBYKPERS_1.9;

LIBYKPERS_1.11 {
  global:
  ykpers_check_version;
# Variables:
} LIBYKPERS_1.10;

LIBYKPERS_1.12 {
  global:
# Functions:
  ykp_set_extflag_LED_INV;
# Variables:
} LIBYKPERS_1.11;

LIBYKPERS_1.13 {
  global:
# Functions:
  ykp_export_config;
  ykp_import_config;
# Variables:
} LIBYKPERS_1.12;

LIBYKPERS_1.14 {
  global:
# Functions:
  ykp_get_cfgflag_ALLOW_HIDTRIG;
  ykp_get_cfgflag_MAN_UPDATE;
  ykp_get_cfgflag_PACING_10MS;
  ykp_get_cfgflag_PACING_20MS;
  ykp_get_cfgflag_SEND_REF;
  ykp_get_cfgflag_SHORT_TICKET;
  ykp_get_cfgflag_STATIC_TICKET;
  ykp_get_cfgflag_STRONG_PW1;
  ykp_get_cfgflag_STRONG_PW2;
  ykp_get_cfgflag_TICKET_FIRST;
  ykp_get_cfgflag_OATH_HOTP8;
  ykp_get_cfgflag_OATH_FIXED_MODHEX1;
  ykp_get_cfgflag_OATH_FIXED_MODHEX2;
  ykp_get_cfgflag_OATH_FIXED_MODHEX;
  ykp_get_tktflag_APPEND_CR;
  ykp_get_tktflag_APPEND_DELAY1;
  ykp_get_tktflag_APPEND_DELAY2;
  ykp_get_tktflag_APPEND_TAB1;
  ykp_get_tktflag_APPEND_TAB2;
  ykp_get_tktflag_PROTECT_CFG2;
  ykp_get_tktflag_TAB_FIRST;
  ykp_get_tktflag_OATH_HOTP;
  ykp_get_tktflag_CHAL_RESP;
  ykp_get_cfgflag_CHAL_YUBICO;
  ykp_get_cfgflag_CHAL_HMAC;
  ykp_get_cfgflag_HMAC_LT64;
  ykp_get_cfgflag_CHAL_BTN_TRIG;
  ykp_get_extflag_SERIAL_BTN_VISIBLE;
  ykp_get_extflag_SERIAL_USB_VISIBLE;
  ykp_get_extflag_SERIAL_API_VISIBLE;
  ykp_get_extflag_USE_NUMERIC_KEYPAD;
  ykp_get_extflag_FAST_TRIG;
  ykp_get_extflag_ALLOW_UPDATE;
  ykp_get_extflag_DORMANT;
  ykp_get_extflag_LED_INV;
  ykp_clear_config;
  ykp_set_acccode_type;
  ykp_get_acccode_type;
# Variables:
} LIBYKPERS_1.13;

LIBYKPERS_1.15 {
  global:
# Functions:
  ykp_get_supported_key_length;
  ykp_AES_key_from_raw;
  ykp_HMAC_key_from_raw;
# Variables:
} LIBYKPERS_1.14;

LIBYKPERS_1.16 {
  global:
# Functions:
  yk_get_key_vid_pid;
# Variables:
} LIBYKPERS_1.15;

LIBYKPERS_1.17 {
  global:
# Functions:
  yk_get_capabilities;
# Variables:
} LIBYKPERS_1.16;

LIBYKPERS_1.18 {
  global:
# Functions:
  yk_open_key;
# Variables:
} LIBYKPERS_1.17;

LIBYKPERS_1.19 {
  global:
# Functions:
  yk_write_device_info;
# Variables:
} LIBYKPERS_1.18;

LIBYKPERS_1.20 {
  global:
# Functions:
  yk_open_key_vid_pid;
# Variables:
} LIBYKPERS_1.19;
