• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

UnitTest++/H03-May-2022-7,9196,675

bin/H16-Apr-2018-1,115920

cmake/H16-Apr-2018-515479

doc/H16-Apr-2018-2,2661,723

examples/H03-May-2022-7,9046,224

lib/jar/optional/H03-May-2022-

m4/H03-May-2022-631566

scripts/ubuntu_12/H16-Apr-2018-11267

spec/H03-May-2022-45,60745,228

src/H03-May-2022-1,858,9611,624,495

test/H03-May-2022-13,71610,670

.gitignoreH A D16-Apr-2018696 6867

.travis.ymlH A D16-Apr-2018150 118

AUTHORSH A D16-Apr-201838 21

LICENSEH A D16-Apr-20182 KiB4636

Makefile.amH A D16-Apr-2018310 1710

NEWSH A D16-Apr-201855.1 KiB1,5401,018

READMEH A D16-Apr-2018979 3623

README.AIXH A D16-Apr-2018737 2515

README.SSLH A D16-Apr-20187.2 KiB253193

README.SunOSH A D16-Apr-2018319 137

bootstrapH A D16-Apr-2018308 1610

build_vs12.batH A D16-Apr-2018341 1310

build_vs14.batH A D16-Apr-2018341 1310

build_vs15.batH A D16-Apr-2018341 1310

configure.acH A D03-May-20229.5 KiB360319

quickfix.pc.inH A D16-Apr-2018215 1210

quickfix_vs12.slnH A D16-Apr-20189.7 KiB134133

quickfix_vs14.slnH A D16-Apr-20189.7 KiB134133

quickfix_vs15.slnH A D16-Apr-20189.7 KiB134133

README

1BUILDING AND INSTALLING
2
3    Full instructions:
4        See doc/html/building.html
5
6    Quick instructions:
7        ./bootstrap
8        ./configure
9        make
10        make check
11        sudo make install
12
13For SunOS and AIX have a look at README.SunOS and README.AIX.
14
15--------------------------------------------------------------------
16
17It is possible to build many components with a relatively newer version of cmake.
18
19
20For example on Windows,
21
22mkdir build
23cd build
24cmake  -DHAVE_SSL=ON -G "Visual Studio 15 2017 Win64" -DCMAKE_INSTALL_PREFIX:PATH="install-path" -DOPENSSL_ROOT_DIR="path to openssl" ..
25Then build in Visual Studio or on command prompt.
26
27On Linux (with system openssl),
28
29cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DHAVE_SSL=ON -DCMAKE_INSTALL_PREFIX:PATH="install-path" ..
30make -j 4 install
31
32If one has Ninja then (with system openssl),
33
34cmake -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DHAVE_SSL=ON -DCMAKE_INSTALL_PREFIX:PATH="install-path" ..
35ninja install
36

README.AIX

1I was able to get the 64 bit version of QuickFIX library to compile on AIX 6100-09-05-1524 with IBM XL C/C++ for AIX, V12.1.
2Unit tests do not compile so these were disabled.
3
4Also, for building please refer to
5https://www.ibm.com/support/knowledgecenter/SSGH3R_13.1.0/com.ibm.xlcpp131.aix.doc/proguide/threadsafe_streams.html
6as this may have an impact on your application (like examples).
7
8Example script:
9
10#!/bin/sh
11
12cflagx="-q64 -D_THREAD_SAFE -qthreaded"
13cxxflagx="-q64 -D_THREAD_SAFE -qthreaded -D__IBMCPP_TR1__=1"
14ldflagx="-q64 -D_THREAD_SAFE -qthreaded"
15
16OBJECT_MODE=64
17export OBJECT_MODE
18
19./bootstrap
20
21CC=xlc_r CXX=xlC_r CFLAGS=$cflagx CXXFLAGS=$cxxflagx LDFLAGS=$ldflagx configure --prefix="Your prefix"
22
23make && make install
24
25

README.SSL

1------------
2INTRODUCTION
3------------
4
5This document describes the rudimentary SSL functionality available in QuickFIX. OpenSSL (https://www.openssl.org/) has been used to provide the SSL functionality. The QuickFIX library can be built with OpenSSL or it can be built without OpenSSL support and the classes (files) related to the SSL functionality used directly in the user project.
6
7--------------------------------------
8BUILDING QUICKFIX WITH OPENSSL SUPPORT
9--------------------------------------
10
111. Unix
12
13$ ./configure --with-openssl="path to openssl install"
14
15"path to openssl install" dir should have include/openssl and lib directories with appropriate files. If no path is specified, then the default openssl installation is used.
16
17$ make
18
192. Windows
20
21The Visual Studio project will have to be configured to find the OpenSSL headers and libs.
22
23#define HAVE_SSL 1
24
25will be required in src/config_windows.h
26
27--------------------------------------------------------------
28USING SSL FILES WITHOUT BUILDING QUICKFIX WITH OPENSSL SUPPORT
29--------------------------------------------------------------
30
31The SSL functionality is contained in the files
32
33SSLSocketAcceptor.h
34SSLSocketAcceptor.cpp
35SSLSocketInitiator.h
36SSLSocketInitiator.cpp
37SSLSocketConnection.h
38SSLSocketConnection.cpp
39ThreadedSSLSocketAcceptor.h
40ThreadedSSLSocketAcceptor.cpp
41ThreadedSSLSocketInitiator.h
42ThreadedSSLSocketInitiator.cpp
43ThreadedSSLSocketConnection.h
44ThreadedSSLSocketConnection.cpp
45UtilitySSL.h
46UtilitySSL.cpp
47
48These files can be directly incorporated in the a project. HAVE_SSL will have to be defined in addition to other OpenSSL related configuration.
49
50--------------
51SSL PARAMETERS
52--------------
53
54Parameters have to be defined in the DEFAULT section of the ini file.
55
56SSL config for acceptor:
57
58[DEFAULT]
59
60#This directive points to the PEM-encoded Certificate file and
61#optionally also to the corresponding RSA or DSA Private Key file for it
62#(contained in the same file).
63
64ServerCertificateFile=
65
66#This directive points to the PEM-encoded Private Key file. If
67#the Private Key is not combined with the Certificate in the
68#server certificate file, use this additional directive to point to the file with
69#the stand-alone Private Key.
70
71ServerCertificateKeyFile=
72
73#This directive sets the Certificate verification level. It applies to the authentication process used in the
74#standard SSL handshake when a connection is established. 0 implies do not verify. 1 implies verify.
75
76VerifyLevel=
77
78#This directive sets the all-in-one file where you can assemble the
79#Certificate Revocation Lists (CRL) of Certification Authorities (CA) whose
80#clients you deal with.
81
82CertificateRevocationListFile=
83
84#This directive sets the directory where you keep the Certificate Revocation
85#Lists (CRL) of Certification Authorities (CAs) whose clients you deal with.
86
87CertificateRevocationListDirectory=
88
89SSL config for initiator:
90
91[DEFAULT]
92
93#This directive points to the PEM-encoded Certificate file and
94#optionally also to the corresponding RSA or DSA Private Key file for it
95#(contained in the same file).
96
97ClientCertificateFile=
98
99#This directive points to the PEM-encoded Private Key file. If
100#the Private Key is not combined with the Certificate in the
101#server certificate file, use this additional directive to point to the file with
102#the stand-alone Private Key.
103
104ClientCertificateKeyFile=
105
106Common options:
107
108# This directive can be used to control the SSL protocol flavors the application
109# should use when establishing its environment.
110#
111# The available (case-insensitive) protocols are:
112#
113# SSLv2
114#
115#  This is the Secure Sockets Layer (SSL) protocol, version 2.0. It is the
116#  original SSL protocol as designed by Netscape Corporation.
117#
118# SSLv3
119#
120#  This is the Secure Sockets Layer (SSL) protocol, version 3.0. It is the
121#  successor to SSLv2 and the currently (as of February 1999) de-facto
122#  standardized SSL protocol from Netscape Corporation. It's supported by
123#  almost all popular browsers.
124#
125# TLSv1
126#
127#  This is the Transport Layer Security (TLS) protocol, version 1.0.
128#
129# TLSv1_1
130#
131#  This is the Transport Layer Security (TLS) protocol, version 1.1.
132#
133# TLSv1_2
134#
135#  This is the Transport Layer Security (TLS) protocol, version 1.2.
136#
137# all
138#
139#  This is a shortcut for `+SSLv2 +SSLv3 +TLSv1 +TLSv1_1 +TLSv1_2' and a convenient way for
140#  enabling all protocols except one when used in combination with the minus
141#  sign on a protocol as the example above shows.
142#
143# Example:
144#
145#  enable all but not SSLv2
146#  SSLProtocol = all -SSLv2
147#
148# `all -SSLv2` is the default value when the parameter is not specified.
149
150SSLProtocol=
151
152# This complex directive uses a colon-separated cipher-spec string consisting
153# of OpenSSL cipher specifications to configure the Cipher Suite the client is
154# permitted to negotiate in the SSL handshake phase. Notice that this directive
155# can be used both in per-server and per-directory context. In per-server
156# context it applies to the standard SSL handshake when a connection is
157# established. In per-directory context it forces a SSL renegotation with the
158# reconfigured Cipher Suite after the HTTP request was read but before the HTTP
159# response is sent.
160#
161# An SSL cipher specification in cipher-spec is composed of 4 major attributes
162# plus a few extra minor ones:
163#
164# Key Exchange Algorithm:
165#  RSA or Diffie-Hellman variants.
166#
167# Authentication Algorithm:
168#  RSA, Diffie-Hellman, DSS or none.
169#
170# Cipher/Encryption Algorithm:
171#  DES, Triple-DES, RC4, RC2, IDEA or none.
172#
173# MAC Digest Algorithm:
174#  MD5, SHA or SHA1.
175#
176# For more details refer to mod_ssl documentation.
177#
178# Example: RC4+RSA:+HIGH:
179
180SSLCipherSuite=
181
182#This directive sets the all-in-one file where you can assemble the
183#Certificates of Certification Authorities (CA) whose clients you deal with.
184
185CertificationAuthoritiesFile=
186
187#This directive sets the directory where you keep the Certificates of
188#Certification Authorities (CAs) whose clients you deal with.
189
190CertificationAuthoritiesDirectory=
191
192-------------
193EXAMPLE USAGE
194-------------
195
196Acceptor:
197
198  try
199  {
200    FIX::SessionSettings settings( file );
201
202    Application application;
203    FIX::FileStoreFactory storeFactory( settings );
204    FIX::ScreenLogFactory logFactory( settings );
205    FIX::ThreadedSSLSocketAcceptor acceptor( application, storeFactory, settings, logFactory );
206
207    acceptor.start();
208    wait();
209    acceptor.stop();
210    return 0;
211  }
212  catch (const std::exception & e )
213  {
214    std::cout << e.what() << std::endl;
215    return 1;
216  }
217
218Initiator:
219
220  try
221  {
222    FIX::SessionSettings settings( file );
223
224    Application application;
225    FIX::FileStoreFactory storeFactory( settings );
226    FIX::ScreenLogFactory logFactory( settings );
227    FIX::ThreadedSSLSocketInitiator initiator( application, storeFactory, settings, logFactory );
228
229    initiator.start();
230    application.run();
231    initiator.stop();
232
233    return 0;
234  }
235  catch ( std::exception & e )
236  {
237    std::cout << e.what();
238    return 1;
239  }
240
241
242If the server or client certficate key is password protected, than the password can be set by the method
243
244  void setPassword(const std::string & pwd);
245
246There are sample SSL certificates in the sub-directory bin/cfg/certs/.
247
248----------
249CONCLUSION
250----------
251
252Since this is the first implementation of OpenSSL support the users are requested to let the developer know about bugs/problems and missing implementation.
253

README.SunOS

1I was able to get the 64 bit version of QuickFIX library to compile on Solaris 10 (sparc) with workshop 12.3 compiler.
2Unit tests do not compile so these were disabled.
3
4Example script:
5
6#!/bin/sh
7
8./bootstrap
9
10CC=cc CXX=CC CFLAGS=-m64 CXXFLAGS=-m64 LDFLAGS=-m64 configure --prefix="Your prefix"
11
12make && make install
13