TrustedQSL Library API
tqsllib.h
Go to the documentation of this file.
1 /***************************************************************************
2  tqsllib.h - description
3  -------------------
4  begin : Mon May 20 2002
5  copyright : (C) 2002 by ARRL
6  author : Jon Bloom
7  email : jbloom@arrl.org
8  revision : $Id: tqsllib.h,v 1.14 2013/03/01 13:26:44 k1mu Exp $
9  ***************************************************************************/
10 
11 #ifndef TQSLLIB_H
12 #define TQSLLIB_H
13 
14 #if defined(_WIN32) && !defined(TQSL_NODLL)
15  #ifdef TQSLLIB_DEF
16  #define DLLEXPORT __declspec(dllexport)
17  #define DLLEXPORTDATA __declspec(dllexport)
18  #define CALLCONVENTION __stdcall
19  #else
20  #define DLLEXPORT __declspec(dllimport)
21  #define DLLEXPORTDATA __declspec(dllimport)
22  #define CALLCONVENTION __stdcall
23  #endif
24 #else
25  #define DLLEXPORT
26  #define DLLEXPORTDATA
27  #define CALLCONVENTION
28 #endif
29 
30 #include "adif.h"
31 #include "cabrillo.h"
32 
37 /* Sizes */
38 #define TQSL_MAX_PATH_LEN 256
39 #define TQSL_PASSWORD_MAX 80
40 #define TQSL_NAME_ELEMENT_MAX 256
41 #define TQSL_CALLSIGN_MAX 13
42 #define TQSL_CRQ_NAME_MAX 60
43 #define TQSL_CRQ_ADDR_MAX 80
44 #define TQSL_CRQ_CITY_MAX 80
45 #define TQSL_CRQ_STATE_MAX 80
46 #define TQSL_CRQ_POSTAL_MAX 20
47 #define TQSL_CRQ_COUNTRY_MAX 80
48 #define TQSL_CRQ_EMAIL_MAX 180
49 #define TQSL_BAND_MAX 6
50 #define TQSL_MODE_MAX 16
51 #define TQSL_FREQ_MAX 20
52 #define TQSL_SATNAME_MAX 20
53 #define TQSL_PROPMODE_MAX 20
54 
55 #define TQSL_CERT_CB_USER 0
56 #define TQSL_CERT_CB_CA 1
57 #define TQSL_CERT_CB_ROOT 2
58 #define TQSL_CERT_CB_PKEY 3
59 #define TQSL_CERT_CB_CONFIG 4
60 #define TQSL_CERT_CB_CERT_TYPE(x) ((x) & 0xf)
61 #define TQSL_CERT_CB_MILESTONE 0
62 #define TQSL_CERT_CB_RESULT 0x10
63 #define TQSL_CERT_CB_CALL_TYPE(x) ((x) & TQSL_CERT_CB_RESULT)
64 #define TQSL_CERT_CB_PROMPT 0
65 #define TQSL_CERT_CB_DUPLICATE 0x100
66 #define TQSL_CERT_CB_ERROR 0x200
67 #define TQSL_CERT_CB_LOADED 0x300
68 #define TQSL_CERT_CB_RESULT_TYPE(x) ((x) & 0x0f00)
69 
70 typedef void * tQSL_Cert;
71 typedef void * tQSL_Location;
72 typedef char * tQSL_StationDataEnc;
73 
75 typedef struct {
76  int year;
77  int month;
78  int day;
79 } tQSL_Date;
80 
82 typedef struct {
83  int hour;
84  int minute;
85  int second;
86 } tQSL_Time;
87 
89 typedef struct tqsl_provider_st {
95 
97 typedef struct tqsl_cert_req_st {
114  char renew;
115 } TQSL_CERT_REQ;
116 
118 typedef struct {
119  char callsign[TQSL_CALLSIGN_MAX+1];
120  char band[TQSL_BAND_MAX+1];
121  char mode[TQSL_MODE_MAX+1];
124  char freq[TQSL_FREQ_MAX+1];
125  char rxfreq[TQSL_FREQ_MAX+1];
126  char rxband[TQSL_BAND_MAX+1];
127  char propmode[TQSL_PROPMODE_MAX+1];
128  char satname[TQSL_SATNAME_MAX+1];
130 
132 DLLEXPORTDATA extern const char *tQSL_BaseDir;
133 
134 #ifdef __cplusplus
135 extern "C" {
136 #endif
137 
142 
143 
145 DLLEXPORTDATA extern int tQSL_Error;
151 DLLEXPORTDATA extern char tQSL_ErrorFile[256];
153 DLLEXPORTDATA extern char tQSL_CustomError[256];
155 DLLEXPORTDATA extern int tQSL_Errno;
157 DLLEXPORTDATA extern char tQSL_ImportCall[256];
158 
164 
174 DLLEXPORT int CALLCONVENTION tqsl_setDirectory(const char *dir);
175 
180 
185 DLLEXPORT const char* CALLCONVENTION tqsl_getErrorString_v(int err);
186 
194 DLLEXPORT int CALLCONVENTION tqsl_encodeBase64(const unsigned char *data, int datalen, char *output, int outputlen);
195 
204 DLLEXPORT int CALLCONVENTION tqsl_decodeBase64(const char *input, unsigned char *data, int *datalen);
205 
212 DLLEXPORT int CALLCONVENTION tqsl_initDate(tQSL_Date *date, const char *str);
213 
220 DLLEXPORT int CALLCONVENTION tqsl_initTime(tQSL_Time *time, const char *str);
221 
232 
238 DLLEXPORT int CALLCONVENTION tqsl_subtractDates(const tQSL_Date *a, const tQSL_Date *b, int *diff);
239 
244 DLLEXPORT char* CALLCONVENTION tqsl_convertDateToText(const tQSL_Date *date, char *buf, int bufsiz);
245 
251 
257 
263 
268 DLLEXPORT char* CALLCONVENTION tqsl_convertTimeToText(const tQSL_Time *time, char *buf, int bufsiz);
269 
272 DLLEXPORT int CALLCONVENTION tqsl_getVersion(int *major, int *minor);
273 
276 DLLEXPORT int CALLCONVENTION tqsl_getConfigVersion(int *major, int *minor);
277 
306 #define TQSL_SELECT_CERT_WITHKEYS 1
307 #define TQSL_SELECT_CERT_EXPIRED 2
308 #define TQSL_SELECT_CERT_SUPERCEDED 4
309 
310 
335 DLLEXPORT int CALLCONVENTION tqsl_selectCertificates(tQSL_Cert **certlist, int *ncerts,
336  const char *callsign, int dxcc, const tQSL_Date *date, const TQSL_PROVIDER *issuer, int flag);
337 
347 DLLEXPORT int CALLCONVENTION tqsl_selectCACertificates(tQSL_Cert **certlist, int *ncerts, const char *type);
348 
358  int idx);
359 
363 
367 
371 
374 DLLEXPORT int CALLCONVENTION tqsl_getCertificateEncoded(tQSL_Cert cert, char *buf, int bufsiz);
375 
378 DLLEXPORT int CALLCONVENTION tqsl_getKeyEncoded(tQSL_Cert cert, char *buf, int bufsiz);
379 
382 DLLEXPORT int CALLCONVENTION tqsl_importKeyPairEncoded(const char *callsign, const char *type, const char *keybuf, const char *certbuf);
383 
387 
391 DLLEXPORT int CALLCONVENTION tqsl_getCertificateSerialExt(tQSL_Cert cert, char *serial, int serialsiz);
392 
397 
407 DLLEXPORT int CALLCONVENTION tqsl_getCertificateIssuer(tQSL_Cert cert, char *buf, int bufsiz);
408 
438 DLLEXPORT int CALLCONVENTION tqsl_getCertificateCallSign(tQSL_Cert cert, char *buf, int bufsiz);
448 DLLEXPORT int CALLCONVENTION tqsl_getCertificateAROName(tQSL_Cert cert, char *buf, int bufsiz);
449 
459 DLLEXPORT int CALLCONVENTION tqsl_getCertificateEmailAddress(tQSL_Cert cert, char *buf, int bufsiz);
460 
470 
480 
490 
500 
510 
522 
534 
545 DLLEXPORT int CALLCONVENTION tqsl_getCertificateRequestCity(tQSL_Cert cert, char *str, int bufsiz);
546 
557 DLLEXPORT int CALLCONVENTION tqsl_getCertificateRequestState(tQSL_Cert cert, char *str, int bufsiz);
558 
570 
582 
583 #define TQSL_PK_TYPE_ERR 0
584 #define TQSL_PK_TYPE_NONE 1
585 #define TQSL_PK_TYPE_UNENC 2
586 #define TQSL_PK_TYPE_ENC 3
587 
588 
603 
604 
609 
610 #define TQSL_CERT_STATUS_UNK 0
611 #define TQSL_CERT_STATUS_SUP 1
612 #define TQSL_CERT_STATUS_EXP 2
613 #define TQSL_CERT_STATUS_OK 3
614 #define TQSL_CERT_STATUS_INV 4
615 
616 
631 
636 DLLEXPORT int CALLCONVENTION tqsl_setCertificateStatus(long serial, const char *status);
637 
638 /* int tqsl_checkCertificate(tQSL_Cert); */
639 
657 DLLEXPORT int CALLCONVENTION tqsl_importTQSLFile(const char *file, int(*cb)(int type, const char *message, void *userdata), void *user);
658 
667 DLLEXPORT int CALLCONVENTION tqsl_getSerialFromTQSLFile(const char *file, long *serial);
668 
672 
678 
691 DLLEXPORT int CALLCONVENTION tqsl_createCertRequest(const char *filename, TQSL_CERT_REQ *req,
692  int(*pwcb)(char *pwbuf, int pwsize, void *userdata), void *user);
693 
701 DLLEXPORT int CALLCONVENTION tqsl_exportPKCS12File(tQSL_Cert cert, const char *filename, const char *p12password);
702 
711 DLLEXPORT int CALLCONVENTION tqsl_exportPKCS12Base64(tQSL_Cert cert, char *base64, int b64len, const char *p12password);
712 
715 DLLEXPORT int CALLCONVENTION tqsl_importPKCS12File(const char *filename, const char *p12password, const char *password,
716  int (*pwcb)(char *buf, int bufsiz, void *userdata), int(*cb)(int type , const char *message, void *userdata), void *user);
717 
720 DLLEXPORT int CALLCONVENTION tqsl_importPKCS12Base64(const char *base64, const char *p12password, const char *password,
721  int (*pwcb)(char *buf, int bufsiz, void *userdata), int(*cb)(int type , const char *message, void *userdata), void *user);
722 
726 
749 DLLEXPORT int CALLCONVENTION tqsl_beginSigning(tQSL_Cert cert, char *password, int(*pwcb)(char *pwbuf, int pwsize, void *userdata), void *user);
750 
756 
762 
768 DLLEXPORT int CALLCONVENTION tqsl_signDataBlock(tQSL_Cert cert, const unsigned char *data, int datalen, unsigned char *sig, int *siglen);
769 
774 DLLEXPORT int CALLCONVENTION tqsl_verifyDataBlock(tQSL_Cert cert, const unsigned char *data, int datalen, unsigned char *sig, int siglen);
775 
783 DLLEXPORT int CALLCONVENTION tqsl_signQSORecord(tQSL_Cert cert, tQSL_Location loc, TQSL_QSO_RECORD *rec, unsigned char *sig, int *siglen);
784 
790 
895 /* Location field input types */
896 
897 #define TQSL_LOCATION_FIELD_TEXT 1
898 #define TQSL_LOCATION_FIELD_DDLIST 2
899 #define TQSL_LOCATION_FIELD_LIST 3
900 #define TQSL_LOCATION_FIELD_BADZONE 4
901 
902 /* Location field data types */
903 #define TQSL_LOCATION_FIELD_CHAR 1
904 #define TQSL_LOCATION_FIELD_INT 2
905 
906 
908 
914 
917 
921 
924 
930 
935 
938 
941 
944 
947 
955 
958 
961 
964 
966 DLLEXPORT int CALLCONVENTION tqsl_getStationLocationName(tQSL_Location loc, int idx, char *buf, int bufsiz);
967 
969 DLLEXPORT int CALLCONVENTION tqsl_getStationLocationCallSign(tQSL_Location loc, int idx, char *buf, int bufsiz);
970 
972 DLLEXPORT int CALLCONVENTION tqsl_getStationLocationField(tQSL_Location locp, const char *name, char *namebuf, int bufsize);
973 
979 
987 
992 
996 
998 DLLEXPORT int CALLCONVENTION tqsl_mergeStationLocations(const char *locdata);
999 
1002 
1005 
1008 
1010 DLLEXPORT int CALLCONVENTION tqsl_getLocationFieldDataLabel(tQSL_Location loc, int field_num, char *buf, int bufsiz);
1011 
1014 
1016 DLLEXPORT int CALLCONVENTION tqsl_getLocationFieldDataGABBI(tQSL_Location loc, int field_num, char *buf, int bufsiz);
1017 
1023 DLLEXPORT int CALLCONVENTION tqsl_getLocationFieldInputType(tQSL_Location loc, int field_num, int *type);
1024 
1029 DLLEXPORT int CALLCONVENTION tqsl_getLocationFieldDataType(tQSL_Location loc, int field_num, int *type);
1030 
1039 DLLEXPORT int CALLCONVENTION tqsl_getLocationFieldFlags(tQSL_Location loc, int field_num, int *flags);
1040 
1042 DLLEXPORT int CALLCONVENTION tqsl_getLocationFieldDataLength(tQSL_Location loc, int field_num, int *rval);
1043 
1050 DLLEXPORT int CALLCONVENTION tqsl_getLocationFieldCharData(tQSL_Location loc, int field_num, char *buf, int bufsiz);
1051 
1057 DLLEXPORT int CALLCONVENTION tqsl_getLocationFieldIntData(tQSL_Location loc, int field_num, int *dat);
1058 
1063 DLLEXPORT int CALLCONVENTION tqsl_getLocationFieldIndex(tQSL_Location loc, int field_num, int *dat);
1064 
1066 DLLEXPORT int CALLCONVENTION tqsl_getNumLocationFieldListItems(tQSL_Location loc, int field_num, int *rval);
1067 
1069 DLLEXPORT int CALLCONVENTION tqsl_getLocationFieldListItem(tQSL_Location loc, int field_num, int item_idx, char *buf, int bufsiz);
1070 
1072 DLLEXPORT int CALLCONVENTION tqsl_setLocationFieldCharData(tQSL_Location loc, int field_num, const char *buf);
1073 
1076 DLLEXPORT int CALLCONVENTION tqsl_setLocationFieldIntData(tQSL_Location loc, int field_num, int dat);
1077 
1082 DLLEXPORT int CALLCONVENTION tqsl_setLocationFieldIndex(tQSL_Location loc, int field_num, int dat);
1083 
1088 DLLEXPORT int CALLCONVENTION tqsl_getLocationFieldChanged(tQSL_Location loc, int field_num, int *changed);
1089 
1091 DLLEXPORT int CALLCONVENTION tqsl_getLocationCallSign(tQSL_Location loc, char *buf, int bufsiz);
1092 
1095 
1099 
1102 DLLEXPORT int CALLCONVENTION tqsl_getDXCCEntity(int index, int *number, const char **name);
1103 
1106 DLLEXPORT int CALLCONVENTION tqsl_getDXCCEntityName(int number, const char **name);
1107 
1110 DLLEXPORT int CALLCONVENTION tqsl_getDXCCZoneMap(int number, const char **zonemap);
1111 
1113 DLLEXPORT int CALLCONVENTION tqsl_getNumBand(int *number);
1114 
1124 DLLEXPORT int CALLCONVENTION tqsl_getBand(int index, const char **name, const char **spectrum, int *low, int *high);
1125 
1127 DLLEXPORT int CALLCONVENTION tqsl_getNumMode(int *number);
1128 
1136 DLLEXPORT int CALLCONVENTION tqsl_getMode(int index, const char **mode, const char **group);
1137 
1140 
1148 DLLEXPORT int CALLCONVENTION tqsl_getPropagationMode(int index, const char **name, const char **descrip);
1149 
1152 
1162 DLLEXPORT int CALLCONVENTION tqsl_getSatellite(int index, const char **name, const char **descrip,
1163  tQSL_Date *start, tQSL_Date *end);
1164 
1168 
1179 DLLEXPORT int CALLCONVENTION tqsl_setCabrilloMapEntry(const char *contest, int field, int contest_type);
1180 
1192 DLLEXPORT int CALLCONVENTION tqsl_getCabrilloMapEntry(const char *contest, int *fieldnum, int *contest_type);
1193 
1197 
1200 DLLEXPORT int CALLCONVENTION tqsl_setADIFMode(const char *adif_item, const char *mode);
1201 
1204 DLLEXPORT int CALLCONVENTION tqsl_getADIFMode(const char *adif_item, char *mode, int nmode);
1205 
1215 DLLEXPORT const char* CALLCONVENTION tqsl_getGABBItCERT(tQSL_Cert cert, int uid);
1216 
1227 DLLEXPORT const char* CALLCONVENTION tqsl_getGABBItSTATION(tQSL_Location loc, int uid, int certuid);
1228 
1242  int stationuid);
1243 
1258  int stationuid, char *signdata, int sdlen);
1259 
1262 #ifdef __cplusplus
1263 }
1264 #endif
1265 
1266 /* Useful defines */
1267 #define TQSL_MAX_PW_LENGTH 32
1268 
1269 #endif /* TQSLLIB_H */