TQSLLIB changes
===============

2.5
---
Allow build for Linux/BSD systems running older versions of Berkeley
DB by defining a potentially missing symbol.

Fix defect that could cause saving of private keys to be suppressed.

Accept C7 and 4Y as valid prefixes.

Display the serial number of the Callsign Certificate being processed
along with the callsign for errors when installing Callsign Certificates.
This allows errors to be specific when attempts to restore older
Callsign Certificates fail.

When installing multiple Callsign Certificates from a .tq6 file (such
as that available on the LoTW website) don't quit if a certificate
can't be installed due to a lack of a private key, as later callsign
certificates may be able to installed.

When deleting Callsign Certificates, store a copy so that certificate
can be recovered. Add the ability to list callsign certificates available
for restoration and a function that allows undeletion.

When deleting Station Locations, store a copy so that location can
be recovered. Add the ability to list station locations available
for restoration and a function that allows undeletion.

Correct typo that would cause duplicates database removal to fail
on Windows systems.

When processing an ADIF QSO, check that mode, band, date, and time
are all provided. Reject QSOs which do not have the required data.

Improve duplicates database open error handling. More cases should
be automatically corrected when the database is improperly formatted
or corrupted.

Update tqsl_isCertificateExpired and tqsl_isCertificateSuperceded to
work properly with key-only certificates.

Add tqsllib tracing information to the diagnostic log, making that
information more detailed and more likely to be useful for debugging
TQSL errors.

Report to the user when an update to the TQSL configuration file is
blocked because the "new" file has a lower revision level.

Use the ADIF 3.0.4 "SUBMODE" field when signing a log.

Add API to allow the call sign for a station location to be temporarily
specified. This allows locations with callsign='[None]' to be used
by selecting a call when signing a log.

2.4
---
Fix defect that doesn't allow adding station locations if only a single
callsign certificate is installed.

If duplicates database recovery efforts fail, delete it and 
recreate it.

Use online certificate status checks to ensure that a superceded
certificate is not selected even if the replacement certificate is
not installed on the local system.

Return errors when writing the station location data file to the user.
Also return errors for the callsign certificate data file.

Use a hash table for the duplicates database rather than a btree. The
format of the dupe records causes btree to perform poorly.

If the certificate status file can't be parsed, discard it and create a
new file.

Fix export of "key only" certificates to correct "Invalid argument" error.

Don't stop loading private keys just due to a file permission error in
the keys directory.

Add new functions to add and look up certificate status.

Clean up database log files on exit. Shrink the default log file to avoid
large amounts of wasted disk space.

When scanning the working directory for bad files, close the directory to
avoid file descriptor leaks.

Add some new bad callsign patterns.

Fix atoi() calls throughout to use strtol() so that strings like 012 aren't
treated as Octal due to the leading zeroes.

Default Cabrillo field to 8, not 5.

Fix OpenSSL workaround needed for 1.0.0c of OpenSSL so that it only applies
to that release, not later releases with the fix already in place.

Add new tqsllib APIs:
    Retrieve a named field from a station location
    Merge a station location definition into the database
    Add the ability to export station locations
    APIs to export and import certificates Base-64 encoded
    APIs to export and import duplicates database records
    Added an API to calculate the difference between dates

Verify that the BAND and FREQ fields are consistent. Disallow freqencies
outside of valid ranges for ham bands. This catches "10110" used (KHz)
versus the ADIF required 10.110 (MHz).

Always convert frequency values in Cabrillo logs to Megahertz
independent of contest type (HF/VHF).

Remove strcpy/strcat/sprintf and replace with strn* variants where possble.

Allow FREQ=0 when BAND is set. 

Try to deduce worked call field for unknown Cabrillo file contest
names.

Update mode mapping in Cabrillo files to pass FM through as is and
convert PH to SSB.

When trying to deduce call-worked field, ensure that anything that
looks gridsquare-like is skipped. Don't accept a log if there are 
two fields that look like callsigns.

Relax lower limit for 30m, 17m, and 12m bands to allow 10MHz, 
18MHz, and 24MHz to be allowed

Recover from invalid files in the working directory (symlink loops)
by detecting and removing them. These would cause database opens to
fail while searching for recovery logs.

Correctly handle permission problems and other system errors that occur
when opening station data and certificate files.

Strip spaces from entirely space-filled station location fields when
creating signing data. Prior versions of tqsllib would not properly
trim strings containing only spaces.

Remove code that was trying to remove unnecessary transaction log files
as that was causing duplicate detection to fail.

2.3
---
Add a mechanism to the location definition process to allow enforcement
of proper zone number combinations. A status message is returned to allow
the caller to report illogical selections.

Duplicate checking database. No changes necessary for exising code. However
new or updated code is strongly encouraged to enable duplicate checking
and commit or discard a particular signing instance as appropriate

tqsllib now built with MSVC on Windows. ABI compatility with the previous
MinGW-built version is maintained.

tqsllib and the rest of TrustedQSL now built with the CMake build system

Fixed several bugs, crashes, and potential vulnerabilities

** Windows 98 support has been dropped. This will be one of the last releases
to support Windows 2000. 

** This will be one of the last releases to support OS X on PowerPC systems.

2.2
---
Fixed bug in handling of certificates with
long serial numbers (typically root certs).

Added workaround for OpenSSL 1.0a bug.

2.1
---
Prompt user to save their certificate after importing a .tq6 signed certificate.

Fix filtering of superceded certificates so they are not displayed by default.

Don't allow certificate import to overwrite a newer certificate.

Require selection of states for US, provinces for Canada (with ability to
override when not appropriate.)

Handle Alaskan administratitive areas by allowing them to be selected while
outputting the correct county name in the station data exported with a signed
log.

Added support for specifying zone numbers for entities, states, and provinces 
Force proper zones for entities, states when possible.

Update configuration file to correspond to ADIF specifications for county names.

Ignore expired certificates during import/export when an expired CA
certificate is signed by a valid root cert.

Support OpenSSL 0.9 through 1.0 beta.

Fix security bug in certificate validation.

2.0
---
The Windows DLL has changed to use __stdcall. This makes it
incompatible with previous versions of the DLL, necessitating
a change in major version number.

openssl 0.9.6 or 0.9.7 is now required; earlier versions are
not supported.

1.6
---
Fixed a bug in the .p12 file generation under openssl 0.9.7.
Thanks to Kenji 'Joe' Rikitake, JJ1BDX for the fix.

Fixed a bug in tqsl_get_cert_ext that under some circumstances
caused return of unterminated strings.

1.5
---
Added MacOS support.
Converted build scripts to make full use of autoconf/automake.
Fixed some GCC 3.x compiler warnings.

1.4
---
Fixed bug in ADIF converter where input file wasn't being opened in
binary mode.

Several error conditions in tqsl_getConverterGABBI caused the converter
to loop on the same erroneous record.

1.3
---
Fixed a bug in the comparison of configuration file version numbers.
Added tqsl_verifyDataBlock function.

1.2
---
Added tqsl_getSatellite and tqsl_getPropagationMode config
functions.

Added support for conversion of ADIF BAND_RX, FREQ_RX, PROP_MODE
and SAT_NAME fields.

1.1
---
ADIF converter was rejecting BAND field > 5 characters, but the
valid 1.25cm value is 6 characters long.
